一种兼顾存储利用率与管理复杂度的队列管理系统的制作方法

专利2024-10-14  15


本发明属于以太网交换
技术领域
,特别涉及到一种兼顾存储利用率与管理复杂度的队列管理系统。
背景技术
:交换式网络是现有最常见的数据传输网络,其中交换设备的本质是对网络报文进行分组存储及转发。该过程又包含了报文解析缓存,端口查找,队列管理调度,报文分发等步骤。队列管理是网络交换设备不可或缺的功能,将对交换设备的性能优劣产生重要的影响队列管理包括入队,队列更新,出队三个基本操作,入队是指将报文进入指定的存储空间等待发出,队列管理维护是指排队队列状况更新变动,出队指将队列中的报文读出,分发至相应的端口进行转发。由于设备的硬件空间是有限的,队列如果没有可用空间分配给新接收报文,就会出现报文丢弃的现象。因此队列管理应尽量保持队列处于非饱和状态,来避免系统产生较大的时延甚至丢包。队列管理中各个队列存储空间的有两种常见的分配方式:固定分配和共享缓存。固定分配是指给每个队列都分配确定的存储空间,各个队列相互独立,互不影响。这种方式实现和维护管理都比较容易,但是当某个队列空间趋于饱和但其他队列有富余的情况下,设备依旧会出现丢包的情况,因此固定分配的存储利用率较低。共享缓存是指所有的队列共同使用一定的存储空间,当有报文入队时,入队队列被分配相应的存储,该报文完成转发后,将占用空间释放。这种方法避免了存储的浪费,因此共享缓存的方式在交换设备中更为常见。但是通常情况下交换设备接收到的报文长度是随机变化的,所需的存储空间不相同,相同队列被分配的存储空间也不连续。这将导致队列管理维护复杂度增加。技术实现要素:本发明解决的技术问题是:针对现有技术中存在的问题,提出一种兼顾存储利用率与管理复杂度的队列管理系统,既能够有效的提高存储空间利用率,又不增加维护队列的复杂度。本发明的技术实现方案如下:一种兼顾存储利用率与管理复杂度的队列管理系统,包括地址管理模块、入队分组模块、队列缓存模块、队列维护模块以及出队调度模块;地址管理模块用于管理设备中存储地址,负责为报文分配空白存储地址以及回收结束占用的地址,同时地址管理模块分配的地址发送给入队分组模块,队列维护模块;入队分组模块根据报文解析的情况,确定地址管理模块分发的地址将去往哪个队列进行排队;与此同时队列维护模块为报文创建信息表,用以记录分发的存储地址以及其他队列相关信息;队列缓存模块按照入队分组模块的划分,将地址按顺序组成队列,并在存储空间内进行存储;出队调度模块根据用户调度策略,确定出队队列,读取队列维护模块信息,将报文搬出存储。所述队列缓存模块的存储空间指用以存储报文的空间,存储地址与存储块一一对应。所述报文解析指交换前端对报文头读取并查表得到的基本信息,包括帧长、优先级、转发端口。所述地址管理模块包括地址计算模块,地址分发模块,地址回收模块和地址管理表;地址管理表将管理硬件中所有的存储地址;每当接收到新报文后,地址计算模块将根据该报文的长度计算所需存储数量,地址分发模块分发对应个数的存储地址,该报文则按照分配进行存储;地址管理表将已经被使用的地址标识为占用地址,防止该地址被再次分发;当存储中的报文被搬出转发的后,地址管理表将清空占用标识,地址回收模块释放该地址,等待再次被分发。所述队列缓存模块包括队列待发区,等待区以及排队链表;待发区缓存该队列下一个待发地址成员;待发区非空时,新接收的报文不能及时被转发,进入等待区;当待发区成员出队后,优先从等待区按次序补充成员;若等待区也为空,则新入队成员直接进入待发区;由于各端口有不同的队列,每个队列成员被分配的存储空间是不连续的,排队链表用来维护各队列成员的排队次序,使相同优先级的报文按照接收的先后顺序形成一个“队列”。所述队列维护模块包括信息获取模块,报文信息表。信息获取模块获取前端解析所得的报文长度,转发端口信息以及地址管理模块分配的所有地址;报文信息表记录信息获取模块所得信息,并及时更新。所述出队调度模块,包括两级调度模块;第一级根据策略对各端口的非空队列轮询调度,选择一个可以出队的队列;第二级对各端口进行询问,确定转发端口。最终确定出队成员。一种多业务融合的参考方法,步骤如下:1)交换设备接收报文并进行前端解析;2)地址管理模块为报文分配存储地址,将该报文搬运至相应存储空间中;3)队列维护模块根据报文信息为该报文建立对应的信息表;4)入队分组模块根据报文信息确定该报文应该进入的队伍,且分配给该报文的存储地址将作为排队成员;5)队列缓存模块为进入队列的成员排序,形成不同优先级“队列”;6)出队调度模块根据不同的策略询问每个队列,最终确定出队成员;7)交换出口模块读取出队成员的队列维护信息表,得到完整的报文存储信息,将报文搬出存储;8)队列维护表更新报文信息直至该报文在所有应转发端口完成转发;9)地址管理模块回收完成转发的报文的存储地址。本发明与现有技术相比具有如下优点:(1)本发明将硬件存储划分为相同大小的存储块并统一管理存储地址;根据报文长度分配存储块个数,有效提高了存储效率。(2)本发明采用链表式的排队结构,保证排队成员的出队次序,节省了管理开销。(3)本发明使用报文存储首地址作为索引建立对应的信息表以及队列链表,从而形成报文-存储地址-报文信息-排队成员一一对应的关系,降低了队列维护复杂度。附图说明图1为本发明系统框图;图2为地址分配/回收流程图;图3为端口队列示意图;图4为队列缓存流程图;图5为队列维护流程图;图6为队列管理流程图。具体实施方式下面结合附图对本发明做进一步介绍。参见图1,本发明提供的一种兼顾存储利用率与管理复杂度的队列管理实现方法。整个系统包括五个功能块。为了能够更详尽的描述该实现方法,以下实施均以具有1m报文存储空间的8端口百兆交换为前提进行描述。实际实施方法应根据具体的硬件条件以及应用需求进行相应变动。地址管理模块f1,包括地址计算,地址分发,地址回收和地址管理表。地址管理表将管理硬件中所有的存储地址。每当接收到新报文后,地址计算模块将根据该报文的长度计算所需存储数量,地址分发模块分发对应个数的存储地址,该报文则按照分配进行存储。地址管理表将已经被使用的地址标识为占用地址,防止该地址被再次分发。当存储中的报文被搬出转发的后,地址管理表将清空占用标识,地址回收模块释放该地址,等待再次被分发。具体的,为了兼具存储效率以及实现复杂度,系统将1m的报文存储划分为256个512byte的存储块,存储地址与存储块一一对应。则地址管理模块管理256个块地址。对于一个长度为1518byte的报文,地址计算器会算出该报文需要三个存储块,地址分发模块就会为该报文分配三个存储地址a1,a2,a3。小于512byte的报文则独占一个块地址。地址管理模块通过地址管理表来划分空白地址与占用地址,该表对256个地址进行编号,并通过1bit标志位来指示该地址是否已经被占用。地址管理表结构如下:该表初始化内容如表1所示。其中1bit的占用标识位是指该地址是否已经被占用,1表示被占用,0表示该地址为空。8bit的存储地址是指存储块地址。对该表项设置地址分配指针和地址回收指针,地址分配指针初始化为0x00,每次表项读取后进行自加操作,读取完最后一个表项后自动指向初值。地址回收指针则在每次搬运报文存储时指定赋值。地址分配与回收具体的操作流程如图2。入队分组模块f2将从帧解析部分获取该报文的转发端口以及优先级信息,并根据所获信息为该报文划分队列。具体的,入队分组模块首先根据查表结果得到转发端口,其次由报文优先级来确定端口的优先级队列。通常报文的优先级可由多个域来确定,且存在优先级的分级与端口的队列数量不匹配的情况。在这种情况下,入队分组模块需要查询优先级映射表来确定进入的优先级队列。以四优先级队列为例:报文中vlan_tag可以将报文分为8个优先级,ip域可划分64个优先级,该报文在进入队列前需要将8或者64个优先级映射到4个优先级队列中进行排队。具体映射关系应根据用户需求进行配置。队列缓存模块f3包括队列待发区,等待区以及排队链表。为了使队列成员能够快速出队,待发区缓存该队列下一个待发地址成员;待发区非空时,新接收的报文不能及时被转发,就需要进入等待区。当待发区成员出队后,优先从等待区按次序补充成员。若等待区也为空,则新入队成员直接进入待发区。由于各端口有不同的队列,每个队列成员被分配的存储空间是不连续的,因此排队链表用来维护各队列成员的排队次序,使相同优先级的报文按照接收的先后顺序形成一个“队列”。具体的,参见图3,每个端口都保持四个优先级队列,队列分为待发区与等待区,同一队列的不同报文采用链表结构形成队列。其中队列的排队成员则为报文存储首地址。例如对于具有a1,a2,a3三个存储地址的1518byte报文,取a1作为排队成员去往相应队列排队。以一个端口为例,该端口四个优先级队列分别为pri3,pri2,pri1,pri0。由该端口转发的报文将使用报文首地址入队排队。对队列pri1来说,第一个成员pri1_a1入队后直接进入待发区。此时第二个地址成员pri1_a2进入该队列,并发现待发区非空,则进入等待区。成员pri1_a1与pri1_a2之间依靠排队链表建立连接。其他三个队列也采用相同的实现方式,四个队列共用一张排队链接表。排队链接表格式如下。链表号012……255排队成员xxxxx排队链接表的建立过程如下。例,单端口排队成员按以下顺序到来:pri0-6,pri3-45,pri0-60,pri2-120,pri1-146,pri1-180,pri0-233…,如下:此时端口四个队列排队情况如下:该端口形成的地址链表如下:链表号…6…45…60…120…146…180…233…排队成员60288180即当新队员进入一个队列时,地址链表总是以该队列队尾成员作为链表号记录该新队员。队列缓存模块具体处理流程如图4。队列维护模块f4包括信息获取模块,报文信息表。信息获取模块获取前端解析所得的报文长度,转发端口信息以及地址管理模块分配的所有地址;报文信息表记录信息获取模块所得信息,并及时更新。具体的,每个报文根据长度不同,得到不同个数的存储地址。信息获取模块获取报文完整的存储地址以及该报文所在的队列数。同一报文可在不同端口排队,但是该报文在同一端口只能选择一个队列。报文信息表为每个报文记录以上信息,形成报文信息表,格式如下:表地址8bit存储地址8bit存储地址11bit帧长3bit排队数a1a2a3lengthx其中a1为该表的索引号,同时也是对应报文的存储首地址;a2,a3为该报文的剩余存储地址;length为报文长度。例如一个1518字节的多播报文将在3个端口进行转发,该报文对应三个块地址分别为31,32,33。报文信息表将以31作为索引号记录存储地址32,33,表长度1518以及排队数3。但以上报文所在的三个队列的排队情况并不相同,因此成员31的出队时间也不相同。三个队列中任意31成员出队,报文信息表将会更新排队数域,对其进行-1操作,直至该域变为0,表示该报文已经完全被转发,该报文所占用的地址可以被释放。队列维护模块的具体处理流程如图5。出队调度模块(f5),包括两级调度模块。第一级根据策略对各端口的非空队列轮询调度,选择一个可以出队的队列;第二级对各端口进行询问,确定转发端口。最终确定出队成员。具体的,第一级为端口调度:在交换设备端口速率均相同的情况下通常采用轮询的策略;在端口速率不相同或者设备业务固定且有端口选择倾向的状况下应根据实际状况制定适合的询问策略。第二级为队列调度:常见的队列调度分为两种,一是绝对优先级调度。绝对优先级调度是指优先让高优先级队列的成员出队,直到最高优先级队列为空,其次次高优先级队列成员出队以此类推;而是带有权重的队列调度,以4个优先级队列为例,可采用8421权重的调度方法,即出队顺序为l3->l2->l3->l1->l3->l2->l3->l0->l3->l2->l3->l1->l3->l2->l3->l0,15次一个循环。(ln为优先级为n的队列),这种调度策略既保证高优先级报文的带宽,又使低优先级的报文时延不至于太长。端口调度和队列调度方法均有多种常用的策略以供实际应用的选择,在此不进行赘述。本发明中,地址管理,入队分组,地址缓存,地址维护,出队调度五个模块独立完成各自功能,同时相互联系,更新队列信息,维持完整的队列管理。具体的,参见图6,一个完整的队列管理流程为:1)将硬件设备中的用于存储报文的ram划分为固定长度的存储块。地址管理模块建立地址管理表。2)等待报文接收,地址管理模块为该报文分配存储地址。3)队列维护模块为该报文建立报文信息表。4)分组入队模块确定该报文的排队队列。5)该报文存储首地址去往队列缓存模块排队等待出队。6)报文发生出队行为,队列维护模块则更新其信息表,直到该报文完成所有端口的转发。7)地址管理模块回收报文存储地址。本发明未详细说明部分属本领域技术人员公知常识。当前第1页1 2 3 
技术特征:

1.一种兼顾存储利用率与管理复杂度的队列管理系统,其特征在于:包括地址管理模块、入队分组模块、队列缓存模块、队列维护模块以及出队调度模块;

地址管理模块用于管理设备中存储地址,负责为报文分配空白存储地址以及回收结束占用的地址,同时地址管理模块分配的地址发送给入队分组模块,队列维护模块;

入队分组模块根据报文解析的情况,确定地址管理模块分发的地址将去往哪个队列进行排队;与此同时队列维护模块为报文创建信息表,用以记录分发的存储地址以及其他队列相关信息;

队列缓存模块按照入队分组模块的划分,将地址按顺序组成队列,并在存储空间内进行存储;

出队调度模块根据用户调度策略,确定出队队列,读取队列维护模块信息,将报文搬出存储。

2.根据权利要求1所述的一种兼顾存储利用率与管理复杂度的队列管理实现方法,其特征在于:所述队列缓存模块的存储空间指用以存储报文的空间,存储地址与存储块一一对应。

3.根据权利要求1所述的一种兼顾存储利用率与管理复杂度的队列管理实现方法,其特征在于:所述报文解析指交换前端对报文头读取并查表得到的基本信息,包括帧长、优先级、转发端口。

4.根据权利要求1所述的一种兼顾存储利用率与管理复杂度的队列管理实现方法,其特征在于:所述地址管理模块包括地址计算模块,地址分发模块,地址回收模块和地址管理表;地址管理表将管理硬件中所有的存储地址;每当接收到新报文后,地址计算模块将根据该报文的长度计算所需存储数量,地址分发模块分发对应个数的存储地址,该报文则按照分配进行存储;地址管理表将已经被使用的地址标识为占用地址,防止该地址被再次分发;当存储中的报文被搬出转发的后,地址管理表将清空占用标识,地址回收模块释放该地址,等待再次被分发。

5.根据权利要求1所述的一种兼顾存储利用率与管理复杂度的队列管理实现方法,其特征在于:所述队列缓存模块包括队列待发区,等待区以及排队链表;待发区缓存该队列下一个待发地址成员;待发区非空时,新接收的报文不能及时被转发,进入等待区;当待发区成员出队后,优先从等待区按次序补充成员;若等待区也为空,则新入队成员直接进入待发区;由于各端口有不同的队列,每个队列成员被分配的存储空间是不连续的,排队链表用来维护各队列成员的排队次序,使相同优先级的报文按照接收的先后顺序形成一个“队列”。

6.根据权利要求1所述的一种兼顾存储利用率与管理复杂度的队列管理实现方法,其特征在于:所述队列维护模块包括信息获取模块,报文信息表。信息获取模块获取前端解析所得的报文长度,转发端口信息以及地址管理模块分配的所有地址;报文信息表记录信息获取模块所得信息,并及时更新。

7.根据权利要求1所述的一种兼顾存储利用率与管理复杂度的队列管理实现方法,其特征在于:所述出队调度模块,包括两级调度模块;第一级根据策略对各端口的非空队列轮询调度,选择一个可以出队的队列;第二级对各端口进行询问,确定转发端口。最终确定出队成员。

8.一种多业务融合的参考方法,其特征在于步骤如下:

1)交换设备接收报文并进行前端解析;

2)地址管理模块为报文分配存储地址,将该报文搬运至相应存储空间中;

3)队列维护模块根据报文信息为该报文建立对应的信息表;

4)入队分组模块根据报文信息确定该报文应该进入的队伍,且分配给该报文的存储地址将作为排队成员;

5)队列缓存模块为进入队列的成员排序,形成不同优先级“队列”;

6)出队调度模块根据不同的策略询问每个队列,最终确定出队成员;

7)交换出口模块读取出队成员的队列维护信息表,得到完整的报文存储信息,将报文搬出存储;

8)队列维护表更新报文信息直至该报文在所有应转发端口完成转发;

9)地址管理模块回收完成转发的报文的存储地址。

技术总结
本发明公开了一种兼顾存储利用率与管理复杂度的队列管理系统。在交换网络架构中,队列管理的主要功能是,将经过查表后的数据帧,按照报文属性,进行有序存储排队,并根据发送轮询调度的结果将队列里的数据帧搬移至对应端口。本发明通过地址管理,入队分组,地址缓存,队列维护,出队调度五个模块的设计来实现有效的队列管理。从而提高硬件存储的利用率,对交换设备的吞吐率及QoS保证都具有重大的影响。

技术研发人员:毛雅欣;陈雷;陶淑婷;张永波;张奇荣
受保护的技术使用者:北京时代民芯科技有限公司;北京微电子技术研究所
技术研发日:2020.12.10
技术公布日:2021.04.06

转载请注明原文地址:https://xbbs.6miu.com/read-21780.html