专利名称:一种报文处理方法和装置的制作方法
技术领域:
本发明实施例涉及通信技术,尤其涉及一种报文处理方法和装置。
背景技术:
由于IP技术的设计思想简洁实用和应用丰富多彩,所以全IP(ALL IP)的组网方 式成为目前网络的演进趋势。但是,在现行网络环境下,为了充分利用已有的接入线路资 源,提出了将已有接入网络与IP网络兼容互联的需求。基于时分复用和时分复用器(TimeDivision Multiplex and Multiplexer ;以下 简称TDM)技术、微波技术等传输模式的网络需要通过网元设备来与IP网络互联。以基 于TDM技术的网络为例,TDM网络主要采用基于TDM的IP (IP over TDM)方式与IP网络互 联,可以在互联处设置分类器和缓存装置,对从一个网络传输而来的报文进行分类,而后将 分类的报文进行缓存,再通过预设的调度策略将缓存装置中的报文发送到另一个网络的链 路上。以TDM网络与IP网络互联为例来进行说明,IP Over TDM技术主要包括基于点对点 协议的 IP(IP Over Point to Point Protocol ;以下简称IP Over PPP)技术、基于异步 传输模式的 IP (IP Over Asynchronous Transfer Mode;以下简称IP Over ATM)技术和 基于El/Tl的IP (IP Over El/Tl)低速线路技术。以IP Over El/Tl低速线路的TDM网络 与IP网络互联为例,图1为IP网络与TDM网络互联的网络架构示意图。如图1所示,互联 设备100通过以太链路与IP网络200相连,通过E1/T1链路与TDM网络300相连。该互联 设备100中至少包括分类器101、缓存装置102和调度装置103。从IP网络接收到的报文 首先进入分类器101进行分类,分类器101是一个报文处理引擎,根据报文的不同属性,例 如目的IP地址、优先级等参数,进行查表处理和分发。分类后的报文送入缓存装置102进 行缓存,而后由调度装置103根据报文的类别进行调度,从缓存装置102中提取报文,通过 E1/T1链路发送至TDM网络。从TDM网络向IP网络发送报文是上述过程的逆过程,同样要 经过分类、缓存和调度发送。现有缓存装置对报文进行缓存是采用固定缓存队列的技术。每个链路都有固定的 几个缓存队列,一般为八个。每个队列都有自己固定大小的循环缓存空间,如图2所示。队 列之间可以根据需要分配不同的调度优先级。每个链路可以使用一个或者多个队列进行报 文缓存,因此每个队列都需要按照链路的总带宽对报文进行缓存。报文入队列时,如果当前 队列已满,即入队列索引等于出队列索引,则报文直接丢弃,否则移动入队列索引,报文入 队列;报文出队列时,如果队列不为空,则修改报文出队列指针,报文出队。在进行本发明的研究过程中,发明人发现现有技术中至少存在如下缺陷报文在IP网络和另一网络之间转发的过程中需要进行缓存,缓存装置的缓存容 量由固定队列进行索引,是针对链路的带宽预先设定且固定不变的。但是,TDM网络逻辑 通道的宽带会因为绑定的时隙数量的变化而变化,宽带网络(如ADSL(非对称数字用户 环路,Asymetric Digital Subscriber Loop)/ADSL2+/G. SHDSL (单对线高速数字用户线, Single-pair High-speed Digital Subscriber Line) /微波链路等网络)中链路的带宽会
5因诸如天气状况、干扰信号和距离等环境因素的改变而发生变化,在预设缓存容量相对于 链路带宽过大的情况下,若链路的负载较重,即带宽变大时,会引起链路的传输时延增加; 在预设缓存容量相对于链路带宽过小的情况下,若链路可能无法适应IP网络的报文抖动, 容易引起丢包。传输时延增加和丢包现象均导致传输质量的下降。
发明内容
本发明实施例提供一种报文处理方法和装置,以改善网络间报文传输的质量。本发明实施例提供了一种报文处理方法,包括接收报文,将所述报文存储到缓存单元;确定所述报文对应的缓存队列;判断所述报文的长度与所述缓存队列的队列实际长度之和是否小于等于所述缓 存队列中队列配置长度,如果是,通过更新所述缓存队列缓存表中的缓存项报文指针内容 为所述报文在所述缓存单元的起始存储地址,将所述报文加入到所述缓存队列;更新所述 缓存表中缓存项索引和队列入队索引为所述报文建立新索引,更新所述队列实际长度为存 储所述报文后的实际长度。本发明实施例还提供了一种报文处理装置,包括报文接收模块、队列确定模块、 缓存控制模块、报文缓存模块;所述报文接收模块,用于接收报文;所述报文缓存模块,用于将所述报文存储到缓存单元;所述队列确定模块,用于确定所述报文对应的缓存队列;所述缓存控制模块,用于判断所述报文的长度与所述缓存队列的队列实际长度之 和是否小于等于所述缓存队列中队列配置长度,如果是,通过更新所述缓存队列缓存表中 的缓存项报文指针内容为所述报文在所述缓存单元的起始存储地址,将所述报文加入到所 述缓存队列;更新所述缓存表中缓存项索引和队列入队索引为所述报文建立新索引,更新 所述队列实际长度为存储所述报文后的实际长度。本发明实施例中提供了一种动态调整队列缓存带宽的方法,通过判断报文的长度 与缓队列实际长度之和与缓存队列中队列配置长度来将报文存储到缓存队列,可以使得队 列缓存根据链路带宽的变化而变化,从而改善因队列缓存空间过大而导致传输延迟,和缓 存空间过小而导致抖动丢包的问题,提高了通信质量。
图1为IP网络与TDM网络互联的网络架构示意图;图2为现有技术中固定队列缓存装置的结构示意图;图3为本发明实施例一提供的报文处理方法的流程图;图4为本发明实施例二提供的报文处理方法的流程图;图5为本发明实施例二所基于的装置存储状态示意图;图6为本发明实施例二所基于的装置存储状态示意图;图7为本发明实施例二所基于的装置存储状态示意图;图8为本发明实施例二提供的报文处理方法中报文出队列的流程图9为本发明实施例二所基于的装置存储状态示意图;图10为本发明实施例一提供的报文处理方法中在TDM网络内调整队列配置长度 的流程图;图11为本发明实施例一提供的报文处理方法中宽带网络内调整队列配置长度的 流程图;图12为本发明实施例三提供的报文处理装置的结构示意图;图13为本发明实施例三提供的报文处理装置的结构示意图;图14为本发明实施例三提供的报文处理装置中队列长度配置模块的结构示意 图;图15为本发明另一实施例提供的报文处理装置中队列长度配置模块的结构示意 图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。实施例一图3为本发明实施例一提供的报文处理方法的流程图,包括如下步骤步骤201、接收报文,将所述报文存储到缓存单元,确定所述报文对应的缓存队 列;具体的,可以是通过分类器从通信链路接收报文并对报文作分类处理;接收报文 之后,可以根据该报文的类别或优先级等参数确定该报文应入队的队列;步骤202、判断所述报文的长度与所述缓存队列的队列实际长度之和是否小于等 于所述缓存队列中队列配置长度;步骤203、如果是,通过更新所述缓存队列缓存表中的缓存项报文指针内容为所述 报文在所述缓存单元的起始存储地址,将所述报文加入到所述缓存队列;更新所述缓存表 中缓存项索引和队列入队索引为所述报文建立新索引,更新所述队列实际长度为存储所述 报文后的实际长度。本发明实施例当步骤202判断所述报文的长度与所述缓存队列的队列实际长度 之和大于所述缓存队列中设定的队列配置长度时,则丢弃所述报文。其中,所述队列配置长度是可以通过监测链路带宽变化,根据变化的带宽进行调 整的,具体的,所述队列配置长度通过监测链路带宽变化,根据变化的带宽进行调整的步骤 包括监测时分复用网络(如E1/T1线路)中对应带宽的链路的时隙数量;当监测到时隙数量变化时,根据变化的时隙数量和第一设定系数计算队列配置长 度;采用计算获得的队列配置长度更新所述队列配置长度。或者,
监测宽带网络中对应带宽的链路信号强度;当监测到信号强度变化时,根据链路的总带宽、当前的所述信号强度和第二设定 系数计算队列配置长度;采用计算获得的队列配置长度更新所述队列配置长度。本发明实施例中,当存储所述报文时,还包括如下步骤通过查找使用状态确定可用的缓存项为待缓存项;所述使用状态位于所述缓存队 列的缓存表缓存项中;将所述待缓存项的使用状态更新为已使用状态;将所述待存缓存项的顺序索引号记录至所述缓存队列的入队列索引所指引的缓 存项的动态索引中;将所述待存缓存项的顺序索引号记录至所述缓存队列的入队列索引中;将所述报文的长度累加至所述缓存队列的队列实际长度。当识别到所述缓存队列的出队列索引为空时,则将当前的所述入队列索引记录至 所述出队列索引。本发明实施例当报文从缓存队列出队时,包括如下步骤根据队列的出队列索引识别对应的缓存项作为待取缓存项;从所述待取缓存项内查询报文指针,根据查询得到的报文指针在对应的缓存单元 中提取报文;将所述待取缓存项的动态索引号记录至所述出队列索引;将所述待取缓存项的动态索引和报文指针清零,且将所述待取缓存项的使用状态 更新为可用状态,将队列实际长度更新为原来队列的实际长度减去提取出的报文的长度。本发明实施例的优点在于,通过判断报文的长度与缓队列实际长度之和与缓存队 列中队列配置长度来将报文存储到缓存队列,可以使得队列缓存根据链路带宽的变化而变 化,从而改善因队列缓存空间过大而导致传输延迟,和缓存空间过小而导致抖动丢包的问 题,提高了通信质量。实施例二本发明实施例二提供了一种报文处理方法,用于通过根据链接带宽改变队列配置 长度来减少传输过程中的丢包和传输时延现象,提高链路传输质量。参见图4,为本发明实施例二提供的报文处理方法的流程图,该方法流程可以通过 图5所示的以下几个单元实现,包括控制单元401、队列索引单元402、缓存表单元403和 缓存单元404。一个链路可以对应一个或多个队列,每个队列可以通过队列索引单元402、 缓存表单元403和缓存单元404来实现。队列索引单元402用于存储队列的相关信息,如 入队列索引、出队列索引、队列实际长度和队列配置长度。入队列索引用于指示进入该队列 的报文的缓存位置;出队列索引用于指示从该队列提出的报文的缓存位置;队列实际长度 是该队列实际缓存报文的长度,单位可以是字节数;队列配置长度是用户可配置、系统可调 整的该队列最长能够缓存的长度,与队列实际长度的单位一致。存储介质构成的存储空间预先被划分为多个缓存单元404,用来存储报文数据,每 个缓存单元有预设的大小,以各自的起始地址Dl Dn来标识,η为自然数。缓存表单元403用于存储缓存表,缓存表由多个缓存项构成,每个缓存项至少包括如下几项数据顺序索引、动态索引、使用状态(use)和报文指针。顺序索引中存储有顺
序索引号,是缓存项的顺序编号,例如1、2........使用状态用于标识该缓存项的使用状
态,例如,使用状态设为“0”代表“可用”,设为“1”代表“已用”。动态索引中存储有动态索 引号,指示当前缓存项所缓存的报文在其所在队列中的下一个报文的顺序索引号。报文指 针中存储当前缓存项的报文对应的缓存单元的起始地址。多个队列索引单元402通过缓存 表单元403共享缓存单元404提供的缓存空间。为清楚介绍本实施例的工作过程,假设经分类器分类后需要传输目的IP地址相 同的六个报文P 1、P2、P3、P4、P5和P6,六个报文的长度分别为Ll、L2、L3、L4、L5和L6。假 设各队列的队列索引单元中设定队列配置长度为CL,当队列索引单元和缓存表索引模块中 的各个参数没有具体的索引位置时可设定为“0”。参见图4,对上述报文处理方法具体可以包括如下步骤步骤301、接收报文,将报文存储至缓存单元接收来自链接经分类器分类后的报文,如这里接收报文P1,并将报文存储到缓存 单元;步骤302、确定报文对应的缓存队列;控制单元根据接收到的报文确定需要报文对应的缓存队列,即报文在哪个缓存队 列进行操作,包括将报文在哪个缓存队列进行入队操作等。例如,接收到报文Pl后,确定该 报文在第一队列进行入队操作,由于第一队列目前没有存储报文,队列实际长度、入队列索 引和出队列索引均为“0”;步骤303、判断报文的长度与缓存队列的队列实际长度之和是否大于缓存队列中 设定的队列配置长度,如果结果为是,则丢弃报文,否则,执行下述步骤;例如,当接收到报文Pl后,判断Pl的长度Ll与队列实际长度(初始化为0)之和 (L1+0)是否大于队列配置长度CL,如果是,则丢弃报文Pl ;如果否,执行步骤304 ;步骤304、通过查找使用状态(use)确定可用的缓存项为待缓存项;上述使用状态(use)位于缓存项当中,用于指示该缓存项为可用或已用,如0表示 可用,1表示已用;可以通过查找使用状态来确定可用的缓存项为待缓存项。如图5所示, 目前可能已经有其他队列的报文占用了缓存项,顺序索引号为“1”、“2”和“5”的缓存项为 已用状态,对应的报文指针中记录了相应的缓存单元起始地址Dx、Dy和Dz,则此时可以按 照顺序选择第一个可用的缓存项,例如选择顺序索引号为“3”的缓存项作为待存缓存项,在 另外一个实施例当中,也可以使用其他的可用缓存项(如顺序索引号为“4”的缓存项)来 作为待缓存项;步骤305、更新所述待存缓存项中的报文指针内容为报文在缓存单元的起始地址, 将所述待缓存项的使用状态(use)更新为已使用状态;如图6所示,控制单元可以将接收到的报文Pl存储至缓存单元D1,同时,将Dl的 地址记录到待缓存项中(顺序索引为3的缓存项),且将待存缓存项的状态设为已用,在 选择缓存单元时有多种方式,例如可以顺序选择空闲的缓存单元,或者按照预设策略选择 等;步骤306、将所述待存缓存项的顺序索引号记录至所述缓存队列的入队列索引所 指引的缓存项的动态索引中;
例如,当前第一队列的入队列索引为“0”,即该队列中没有该报文的前一项,所以 该步骤的操作为空,找不到对应的缓存项;步骤307、将所述待存缓存项的顺序索引号记录至所述缓存队列的入队列索引 中;由于使用了索引顺序为3的缓存项,因此,将第一队列的入队列索引更新为“3”;步骤308、将所述报文的长度累加至所述缓存队列的队列实际长度;例如,Pl报文长度为Li,当前第一队列的实际长度为0,则加上Ll后,第一队列的 实际长度更新为Li,如图6所示。在上述流程中,在将待存缓存项的顺序索引号记录至缓存队列的入队列索引之 后,还包括当识别到缓存队列的出队列索引为空时(具体可以“0”代表空索引),将当前 的入队列索引记录至出队列索引。该情况通常发生在缓存队列未缓存任何报文之时。重复执行上述步骤301 308,将报文P2、P3、P4和P5依次存储进缓存单元中,则 队列索引单元和缓存表索引模块中的记录状态如图7所示。假设队列配置长度CL = L1+L2+L3+L4+L5,则当存储报文P6时,由于报文P6的长 度L6与队列实际长度之和为L1+L2+L3+L4+L5+L6,大于C L,所以将报文P6丢弃。本发明实施例中,报文出队列的流程如图8所示,包括如下步骤步骤701、根据队列的出队列索引识别对应的缓存项作为待取缓存项;当需要从缓存队列中提取报文时,控制单元按照队列的出队列索引识别对应的缓 存项作为待取缓存项,基于图7所示的实例,此时将顺序索引号为“3”的缓存项作为待取缓 存项;步骤702、从所述待取缓存项内查询报文指针,根据查询得到的报文指针在对应的 缓存单元中提取报文;控制单元从待取缓存项内查询报文指针“D1”,根据报文指针在对应的缓存单元中 提取报文Pl,而后通过链路进行发送;步骤703、将所述待取缓存项的动态索引号记录至所述出队列索引;控制单元将待取缓存项的动态索引号“4”记录至出队列索引,用以索引下一个出 队的报文;步骤704、将所述待取缓存项的动态索引和报文指针清零,且将所述待取缓存项的 使用状态更新为可用状态,将队列实际长度更新为原来队列的实际长度减去提取出的报文 的长度;控制单元将待取缓存项的动态索引和报文指针清零,且将待取缓存项的状态设 定为可用,即设定为“0”,将队列实际长度减去提取出的报文的长度,即队列实际长度为 L1+L2+L3+L4+L5-L1 = L2+L3+L4+L5,如图 9 所示。重复执行上述步骤,将报文P2、P3、P4和P5顺序取出,缓存表恢复至图5的状态。采用本实施例的技术方案,链路的多个队列所对应的缓存表是一个数组,对应某 一个队列的每个缓存项通过动态缓存项连接成一个从入队列索引到出队列索引的单向链 表,如图7中箭头所示。本实施例的技术方案使多个队列可以共享缓存空间,并且可以通过 缓存表来逐一索引各个队列的报文。本发明实施例当中,队列的配置长度CL并非固定,而是通过监测链路的带宽变化,根据变化的带宽设定缓存队列的队列配置长度,如可以通过每隔一定时间实时监测链 路带宽变化来实时更新队列配置长度,或者根据监测得到的链路带宽变化规律更新队列配 置长度,或者根据预定的规则监测得到链路带宽变化来更新队列配置长度。根据带宽变化来动态调整队列配置长度的方案可以适用于TDM网络(如E1/T1网 络)或宽带网络(如ADSL/ADSL2+/G. SHDSL/微波网络等)。在TDM网络中,可以监测TDM 网络中对应带宽的链路的时隙数量SLOT,根据时隙数量的变化按照设定公式计算获得队列 配置长度,进而对队列配置长度进行更新。在宽带网络中,可以监测宽带网络中对应带宽的 链路信号强度,即信号百分比m%,根据信号百分比的变化按照设定公式计算获得队列配置 长度,进而对队列配置长度进行更新。图10为本发明实施例二提供的报文处理方法中在TDM网络内调整队列配置长度 的流程图,在TDM网络中,根据变化的带宽设定缓存队列中的队列配置长度的步骤具体包 括步骤1001、监测TDM网络中对应带宽的链路的时隙数量SLOT ;在E1/T1等低速链路中,系统可以根据具体情况的需要为链路分配不同数量的时 隙,所分配的时隙数量的多少对应带宽的大小;步骤1002、当监测到时隙数量变化时,根据变化的时隙数量和第一设定系数计算 队列配置长度;第一设定系数可以为经验值,记为S,可以按照如下公式(1)计算队列配置长度, 单位为比特CL = SLOTX 单位时隙带宽 Xs (1)其中,单位时隙带宽可以为64K;步骤1003、采用计算获得的队列配置长度更新缓存队列中的队列配置长度。每个链路可以对应设置有一个或多个队列,在调整队列配置长度时可以是根据当 前带宽统一调整所有队列的队列配置长度,也可以是预先设定配置策略,例如,根据当前带 宽以及各个队列的优先级,在设定配置策略中查询不同优先级的队列应配置的队列配置长 度,进而进行更新。具体的配置策略还可以根据系统的其他要求进行预先设定。上述技术方案可以根据TDM网络的带宽来动态调整队列的队列配置长度,即能够 根据带宽来调整实际使用的缓存空间,能够提高报文的传输质量。TDM的链路可以由用户动 态匹配,上述技术方案能够有效适应TDM网络的动态带宽。图11为本发明实施例二提供的报文处理方法中宽带网络内调整队列配置长度的 流程图。在宽带网络中,根据变化的带宽设定缓存队列中的队列配置长度的步骤具体包 括步骤1101、监测宽带网络中对应带宽的链路信号百分比;信号百分比表示链路的信号质量,对于ADSL(非对称数字用户环路, Asymetric Digital Subscriber Loop)/ADSL2+/G. SHDSL (单对线高速数字用户线, Single-pair High-speed Digital Subscriber Line)/ 微波链路等宽带链路,信号百分比 可以对应带宽的大小,现有网络互联设备中能够识别信号百分比的变化;步骤1102、当监测到信号百分比变化时,根据链路的总带宽、当前信号百分比和第 二设定系统计算队列配置长度;
当信号百分比变化时,根据链路的总带宽M、当前的信号百分比和第二设定系数计 算队列配置长度CL,第二设定系数可以为经验参数k,具体可以按照公式(2)来计算队列配 置长度CL,单位为比特CL = MXm% Xk ;步骤1103、采用计算获得的队列配置长度更新缓存队列中的队列配置长度。上述技术方案可以根据宽带网络(如ADSL/ADSL2+/G. SHDSL/微波等网络)的带 宽来动态调整队列的队列配置长度,即能够根据带宽来调整实际使用的缓存空间,提高报 文的传输质量。宽带网络的链路由于受到外部环境和地理位置的影响,会导致实际带宽上 下波动,上述技术方案能够有效适应宽带网络的动态带宽变化。采用本实施例的技术方案,队列配置长度可以根据链路的带宽变化而动态调整, 该技术方案可以改善现有技术中因缓存队列采用固定存储容量而引发的问题,例如,由于 缓存队列的存储容量不能根据链路带宽的变化而变化,存储容量和链路的带宽均较大时会 导致传输时延增长,存储容量和链路的带宽均较小时会导致抖动丢包。本发明实施例相比于现有的固定队列缓存,其优点在于可以提供动态队列缓存, 各个队列的队列配置长度可以根据链路带宽的变化而进行调整从而可以改善因缓存空间 过大而导致传输延迟,和缓存空间过小而导致抖动丢包的问题,提高了通信质量。实施例三图12为本发明实施例三提供的报文处理装置的结构示意图,该装置具体包括报 文接收模块10、队列确定模块20、缓存控制模块30、报文缓存模块40和队列长度配置模块 50。其中,所述报文接收模块10,用于接收报文;所述报文缓存模块,用于将所述报文缓存到缓存单元;所述队列确定模块,用于确定所述报文对应的缓存队列;所述缓存控制模块,用于判断所述报文的长度与所述缓存队列的队列实际长度之 和是否小于等于所述缓存队列中队列配置长度,如果是,通过更新所述缓存队列缓存表中 的缓存项报文指针内容为所述报文在所述缓存单元的起始存储地址,将所述报文加入到所 述缓存队列;更新所述缓存表中缓存项索引和队列入队索引为所述报文建立新索引,更新 所述队列实际长度为存储所述报文后的实际长度。当所述缓存控制模块判断所述报文的长度与所述缓存队列的队列实际长度大于 所述缓存队列中队列配置长度时,丢弃所述报文。所述队列长度配置模块,用于通过监测链 路带宽变化,根据变化的带宽对所述队列配置长度进行调整;具体的,可以根据链路的时隙数以及信号质量等对队列配置长度进行动态调整。本发明实施例通过根据监控到的带宽动态改变队列配置长度,从而动态调整缓存 大小,可以改善现有技术中因采用固定缓存容量而引发诸如传输时延增长,抖动丢包等问 题,提高了通信质量。本发明实施例中,所述报文处理装置的报文缓存模块40进一步包括至少一个队 列索引单元41、缓存表单元42和多个缓存单元43。其中,每个队列索引单元41分别对应 于一个队列,每个队列索引单元41用于存储该队列的入队列索弓丨、出队列索弓丨、队列实际 长度和队列配置长度;缓存表单元42用于存储包括多个缓存项的缓存表,每个缓存项至少
12包括顺序索引、动态索引、使用状态和报文指针;多个缓存单元43,用于存储报文。缓存控制模块30具体包括计算单元31、查找单元32、入队列单元33、第一索引 更新单元34、第二索引更新单元35和长度累加单元36。其中,计算单元31用于计算该报 文的长度与该缓存队列的队列实际长度之和,并判断是否大于缓存队列中设定的队列配置 长度,若判断结果为是则丢弃该报文,否则触发查找单元32动作;查找单元32用于在缓存 表单元42中查找使用状态为可用的缓存项作为待存缓存项;入队列单元33用于通过更新 缓存项报文指针的内容为报文在缓存单元的起始存储地址将报文加入到缓存队列,且将待 存缓存项的使用状态设为已用;第一索引更新单元34用于将待存缓存项的顺序索引号记 录至缓存队列的入队列索引所指引的缓存项的动态索引中;第二索引更新单元35用于将 待存缓存项的顺序索引号记录至缓存队列的入队列索引中;长度累加单元36用于将报文 的长度累加至缓存队列的队列实际长度。该缓存控制模块30还包括出队列初始单元37,用于在第二索引更新单元35动 作之后,且识别到缓存队列的出队列索引为空时,将当前的入队列索引记录至出队列索引。基于上述报文缓存模块40还能够进一步实现出队列操作,即缓存控制模块30还 包括出队列识别单元38、报文提取单元39、第三索引更新单元310和第四索引更新单元 311。其中,出队列识别单元38用于当根据调度策略从缓存单元43中提取报文时,按照队 列的出队列索引识别对应的缓存项作为待取缓存项;报文提取单元39用于从待取缓存项 内查询报文指针,根据报文指针在对应的缓存单元43中提取报文;第三索引更新单元310 用于将待取缓存项的动态索引号记录至出队列索引;第四索引更新单元311用于将待取缓 存项的动态索引和报文指针清零,且将待取缓存项的使用状态设定为可用,将队列实际长 度减去提取出的报文的长度。参见图14,为本发明实施例报文处理装置中队列长度配置模块的结构示意图,队 列长度配置模块具体可以包括第一带宽监测单元51、第一长度计算单元52和第一长度更新单元53。其中,第一 带宽监测单元51用于监测TDM网络中对应带宽的链路的时隙数量;第一长度计算单元52 用于当监测到时隙数量变化时,根据变化的时隙数量和第一设定系数计算队列配置长度; 第一长度更新单元53用于采用计算获得的队列配置长度更新报文缓存模块的队列中的队 列配置长度。采用本实施例的技术方案可以根据TDM网络的带宽来动态调整队列的队列配置 长度,即能够根据带宽来调整实际使用的缓存空间,能够提高报文的传输质量。TDM的链路 可以由用户动态匹配,本实施例的技术方案能够有效适应TDM网络的动态带宽。参见图15,为本发明另一实施例中队列长度配置模块的结构示意图,队列长度配 置模块具体可以包括第二带宽监测单元54、第二长度计算单元55和第二长度更新单元 56。其中,第二带宽监测单元54用于监测宽带网络(如ADSL/ADSL2+/G. SHDSL/微波等链 路网络)中对应带宽的链路信号强度;第二长度计算单元55用于当监测到信号强度变化 时,根据链路的总带宽、当前的信号强度和第二设定系数计算队列配置长度;第二长度更新 单元56用于采用计算获得的队列配置长度更新报文缓存模块的队列中的队列配置长度。这里需要说明的是,上述各单元可以由一个或多个通用处理器来完成,也可以使 用一个或多个专用的处理器或其他硬件处理单元来完成。同时,上述各单元可以集成在一个装置中,也可以分别集成在互联设备的各个装置中,例如,报文接收模块10和队列确定 模块20可以集成在分类器中,由分类器执行接收报文并确定缓存队列的操作,或者,将上 述所有单元都集成在一个装置中,在此并不限定。同时,本发明实施例可以应用到网关,基站,路由器等等通信设备上。本实施例可以执行本发明实施例提供的报文处理方法,相比于现有的固定队列缓 存,本发明实施例的优点在于可以通过监测链路带宽,根据带宽改变队列配置长度,提供动 态队列缓存,可以使得队列缓存根据链路带宽的变化而变化,从而改善因缓存空间过大而 导致传输延迟,和缓存空间过小而导致抖动丢包的问题。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者 光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
1.一种报文处理方法,其特征在于,包括 接收报文,将所述报文存储到缓存单元; 确定所述报文对应的缓存队列;判断所述报文的长度与所述缓存队列的队列实际长度之和是否小于等于所述缓存队 列中队列配置长度,如果是,通过更新所述缓存队列缓存表中的缓存项报文指针内容为所 述报文在所述缓存单元的起始存储地址,将所述报文加入到所述缓存队列;更新所述缓存 表中缓存项索引和队列入队索引为所述报文建立新索引,更新所述队列实际长度为存储所 述报文后的实际长度。
2.如权利要求1所述的报文处理方法,其特征在于,还包括当判断所述报文的长度与所述缓存队列的队列实际长度之和大于所述缓存队列中的 所述队列配置长度时,丢弃所述报文。
3.根据权利要求1所述的报文处理方法,其特征在于,所述队列配置长度通过监测链 路带宽变化,根据变化的带宽进行调整,包括监测时分复用网络中对应带宽的链路的时隙数量;当监测到时隙数量变化时,根据变化的时隙数量和第一设定系数计算队列配置长度;采用计算获得的队列配置长度更新所述队列配置长度;或者,监测宽带网络中对应带宽的链路信号强度;当监测到信号强度变化时,根据链路的总带宽、当前的所述信号强度和第二设定系数 计算队列配置长度;采用计算获得的队列配置长度更新所述队列配置长度。
4.根据权利要求1所述的报文处理方法,其特征在于,所述更新所述缓存表中缓存项 索引和队列入队索引为所述报文建立新索引,更新所述队列实际长度为存储所述报文后的 实际长度的步骤包括通过查找使用状态确定可用的缓存项为待缓存项;所述使用状态位于所述缓存队列的 缓存表缓存项中;将所述待缓存项的使用状态更新为已使用状态;将所述待存缓存项的顺序索引号记录至所述缓存队列的入队列索引所指引的缓存项 的动态索引中;将所述待存缓存项的顺序索引号记录至所述缓存队列的入队列索引中; 将所述报文的长度累加至所述缓存队列的队列实际长度。
5.根据权利要求4所述的报文处理方法,其特征在于,在将所述待存缓存项的顺序索 引号记录至所述缓存队列的入队列索引之后,还包括当识别到所述缓存队列的出队列索引为空时,则将当前的所述入队列索引记录至所述 出队列索引。
6.根据权利要求4所述的报文处理方法,其特征在于,还包括 当所述报文从所述缓存队列出队时,包括如下步骤根据队列的出队列索引识别对应的缓存项作为待取缓存项;从所述待取缓存项内查询报文指针,根据查询得到的报文指针在对应的缓存单元中提取报文;将所述待取缓存项的动态索引号记录至所述出队列索引;将所述待取缓存项的动态索引和报文指针清零,且将所述待取缓存项的使用状态更新 为可用状态,将队列实际长度更新为原来队列的实际长度减去提取出的报文的长度。
7.一种报文处理装置,其特征在于,包括报文接收模块、队列确定模块、缓存控制模 块、报文缓存模块;所述报文接收模块,用于接收报文;所述报文缓存模块,用于将所述报文存储到缓存单元;所述队列确定模块,用于确定所述报文对应的缓存队列;所述缓存控制模块,用于判断所述报文的长度与所述缓存队列的队列实际长度之和是 否小于等于所述缓存队列中队列配置长度,如果是,通过更新所述缓存队列缓存表中的缓 存项报文指针内容为所述报文在所述缓存单元的起始存储地址,将所述报文加入到所述缓 存队列;更新所述缓存表中缓存项索引和队列入队索引为所述报文建立新索引,更新所述 队列实际长度为存储所述报文后的实际长度。
8.如权利要求7所述的报文处理装置,其特征在于,所述缓存控制模块还用于 当判断所述报文的长度与所述缓存队列的队列实际长度之和大于所述缓存队列中设定的队列配置长度时,丢弃所述报文。
9.如权利要求7所述的报文处理装置,其特征在于,还包括队列长度配置模块,用于通过监测链路带宽变化,根据变化的带宽对所述队列配置长 度进行调整;所述队列长度配置模块包括第一带宽监测单元,用于监测时分复用网络中对应带宽的链路的时隙数量; 第一长度计算单元,用于当监测到时隙数量变化时,根据变化的时隙数量和第一设定 系数计算队列配置长度;第一长度更新单元,用于采用计算获得的队列配置长度更新所述缓存队列中的队列配 置长度;或者,所述队列长度配置模块包括第二带宽监测单元,用于监测宽带网络中对应带宽的链路信号强度; 第二长度计算单元,用于当监测到信号强度变化时,根据链路的总带宽、当前的所述信 号强度和第二设定系数计算队列配置长度;第二长度更新单元,用于采用计算获得的队列配置长度更新所述报文缓存模块的队列 中的队列配置长度。
10.根据权利要求7所述的报文处理装置,其特征在于 所述报文缓存模块还包括至少一个队列索引单元,每个所述队列索引单元分别对应于一个所述缓存队列,每个 队列索引单元用于存储所述缓存队列的入队列索弓丨、出队列索弓丨、队列实际长度和队列配置长度;缓存表单元,用于存储包括多个缓存项的缓存表,每个缓存项至少包括顺序索引、动态 索引、使用状态和报文指针;至少一个缓存单元,用于存储所述报文。
11.如权利要求10所述的报文处理装置,其特征在于,所述缓存控制模块包括计算单元,用于计算所述报文的长度与所述缓存队列的队列实际长度之和,并判断是 否大于所述缓存队列中设定的队列配置长度,若判断结果为是则丢弃所述报文,否则触发 查找单元动作;查找单元,用于在所述缓存表单元中查找使用状态为可用的缓存项作为待存缓存项; 入队列单元,用于将接收到的所述报文加入到所述缓存队列; 所述入队列单元还用于,通过更新所述缓存队列缓存表中的缓存项报文指针内容为所 述报文在所述缓存单元的起始存储地址,将所述报文加入到所述缓存队列;且将所述待存 缓存项的使用状态设为已用;第一索引更新单元,用于将所述待存缓存项的顺序索引号记录至所述缓存队列的入队 列索引所指引的缓存项的动态索引中;第二索引更新单元,用于将所述待存缓存项的顺序索引号记录至所述缓存队列的入队 列索引中;长度累加单元,用于将所述报文的长度累加至所述缓存队列的队列实际长度。
12.根据权利要求11所述的报文处理装置,其特征在于,所述缓存控制模块还包括 出队列初始单元,用于在所述第二索引更新单元动作之后,且识别到所述缓存队列的出队列索引为空时,将当前的所述入队列索引记录至所述出队列索引。
13.根据权利要求12所述的报文处理装置,其特征在于,所述缓存控制模块还包括 出队列识别单元,用于当根据调度策略从所述缓存单元中提取报文时,按照队列的出队列索引识别对应的缓存项作为待取缓存项;报文提取单元,用于从所述待取缓存项内查询报文指针,根据报文指针在对应的缓存 单元中提取报文;第三索引更新单元,用于将所述待取缓存项的动态索引号记录至所述出队列索引; 第四索引更新单元,用于将所述待取缓存项的动态索引和报文指针清零,且将所述待 取缓存项的使用状态设定为可用,将队列实际长度减去提取出的报文的长度。
全文摘要
本发明实施例涉及一种报文处理方法和装置,其中,所述方法包括接收报文,将所述报文存储到缓存单元;确定所述报文对应的缓存队列;判断所述报文的长度与所述缓存队列的队列实际长度之和是否小于等于所述缓存队列中队列配置长度,如果是,通过更新所述缓存队列缓存表中的缓存项报文指针内容为所述报文在所述缓存单元的起始存储地址,将所述报文加入到所述缓存队列;更新所述缓存表中缓存项索引和队列入队索引为所述报文建立新索引,更新所述队列实际长度为存储所述报文后的实际长度。本发明实施例中提供了一种动态调整队列缓存带宽的方法,通过判断报文的长度与缓队列实际长度之和与缓存队列中队列配置长度来将报文存储到缓存队列,可以使得队列缓存根据链路带宽的变化而变化,从而改善因队列缓存空间过大而导致传输延迟,和缓存空间过小而导致抖动丢包的问题,提高了通信质量。
文档编号H04L12/26GK102035719SQ20091011072
公开日2011年4月27日 申请日期2009年9月29日 优先权日2009年9月29日
发明者苏德现 申请人:华为技术有限公司