改善多播业务HOL阻塞的队列管理方法转让专利

申请号 : CN201911348930.5

文献号 : CN111131089B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邱智亮杨彩丽潘伟涛曾磊高志凯李熙华

申请人 : 西安电子科技大学

摘要 :

本发明公开了一种改善多播业务HOL阻塞的队列管理方法,其实现方案是:接收多播数据帧并获取帧信息;通过入队申请后为其分配存储空间并搬移到缓存区,写调度信息到第一级多播发送调度队列;优先读取第二级多播发送调度队列,若第二次转发调度信息中目的端口都空闲,则转发该数据帧,否则,读取第一次转发调度信息:若第一次转发调度信息中目的端口都空闲,则转发数据帧并释放缓存区;若第一次转发调度信息中目的端口部分空闲,则转发数据帧,并记录未转发的目的端口以及其余调度信息到第二级多播发送调度队列。本发明能有效改善多播业务HOL阻塞,提高多播数据帧的转发效率,同时保证多播数据帧的转发不会乱序,可以用于交换网络中。

权利要求 :

1.一种改善多播业务HOL阻塞的队列管理方法,其特征在于:包括如下:(1)交换机接收多播数据帧,获取多播帧的帧信息,并发起入队申请;该多播帧的帧信息包括单/多播标志位、帧长、目的端口比特码表;

(2)多播数据帧入队成功后,为数据帧分配缓存空间,即将多播数据帧保存到缓存区中,将多播数据帧的调度信息写入第一级多播发送调度先进先出队列FIFO1;

(3)检测第二级多播发送调度先进先出队列FIFO2:如果FIFO2非空,则读取FIFO2中的数据,获得第二次转发的多播数据帧调度信息a,执行(5),否则,执行(4);

(4)检测第一级多播发送调度先进先出队列FIFO1:如果FIFO1非空,则读取FIFO1中的数据,获得第一次转发的多播数据帧的调度信息b,执行(6),否则,返回(3);

(5)根据第二次转发的多播数据帧的调度信息a中的目的端口比特码表以及当前输出端口的空闲比特码表的匹配情况,判断该多播数据帧能否发送:如果第二次转发的多播数据帧的调度信息a中的目的端口比特码表和当前输出端口的空闲比特码表完全不匹配或者部分匹配,则返回(4);

如果第二次转发的多播数据帧的调度信息a中的目的端口比特码表和当前输出端口的空闲比特码表完全匹配,则执行(8);

(6)根据第一次转发的多播数据帧的调度信息b中的目的端口比特码表以及当前输出端口的空闲比特码表,判断该多播数据帧能否发送:如果第一次转发的多播数据帧的调度信息b中的目的端口比特码表和当前输出端口的空闲比特码表完全不匹配,则返回(3);

如果第一次转发的多播数据帧的调度信息b中的目的端口比特码表和当前输出端口的空闲比特码表部分匹配,则执行(7);

如果第一次转发的多播数据帧的调度信息b中的目的端口比特码表和当前输出端口的空闲比特码表完全匹配,则执行(8);

(7)更新第一次转发的多播数据帧的调度信息b中的目的端口比特码表,将更新后的目的端口比特码表以及多播数据帧的其余调度信息存储到第二级多播发送调度先进先出队列FIFO2;再根据第一次转发的多播数据帧的调度信息b中的帧存储地址,将多播数据帧从对应的缓存区搬移出来,并同时发送到多播数据帧的各个空闲的目的端口中;

(8)根据第一次转发的多播数据帧的调度信息b或者第二次转发的多播数据帧的调度信息a中的帧存储地址,将多播数据帧从对应的缓存区搬移出来,并且同时发送到多播数据帧的各个目的端口中,等待搬移完成后,将该多播数据帧所占用的缓存区释放,供后到来的数据帧使用。

2.根据权利要求1所述的方法,其特征在于,1)中获取多播数据帧的帧信息,其获取方式如下:

对于单/多播标志位,其由数据帧帧头中的帧类型字段获取:若帧类型字段为单播,则该单/多播标志位为1;若帧类型字段为多播,则该单/多播标志位为0;

对于帧长,其通过计算数据帧的长度获取;

对于目的端口比特码表,其由目的端口号获取:若目的端口号有1,将目的端口比特码表的第一个比特置1;

若目的端口号有2,将目的端口比特码表的第二个比特置1;

若目的端口号有3,将目的端口比特码表的第三个比特置1;

若目的端口号有4,将目的端口比特码表的第四个比特置1。

3.根据权利要求1所述的方法,其特征在于,2)中的入队成功,通过已使用缓存区大小、多播数据帧帧长以及缓存区的大小来判断:若已使用缓存区大小与多播数据帧帧长之和不大于缓存区的大小,则入队成功,否则,入队失败。

4.根据权利要求1所述的方法,其特征在于,3)中的第二次转发的多播数据帧调度信息a,包含数据帧存储位置、数据帧长度、更新后的目的端口比特码表。

5.根据权利要求1所述的方法,其特征在于,4)中的第一次转发的多播数据帧的调度信息b包含数据帧存储位置、数据帧长度、目的端口比特码表。

6.根据权利要求1所述的方法,其特征在于,5)中的输出端口空闲比特码表,是通过各个输出端口的空闲情况设置:

若第一个输出端口1空闲,则将该比特码表的第一个比特置1;

若第二个输出端口2空闲,则将该比特码表的第二个比特置1;

若第三个输出端口3空闲,则将该比特码表的第三个比特置1;

若第四个输出端口4空闲,则将该比特码表的第四个比特置1。

7.根据权利要求1所述的方法,其特征在于,5)中的完全不匹配,是指第二次转发的多播数据帧调度信息a中目的端口比特码表与输出端口空闲比特码表按位相与得到的结果为零。

8.根据权利要求1所述的方法,其特征在于,5)中的部分匹配,是指第二次转发的多播数据帧调度信息a中目的端口比特码表与输出端口的空闲比特码表按位相与得到的结果不为零并且不等于目的端口比特码表。

9.根据权利要求1所述的方法,其特征在于,5)中的完全匹配,是指第二次转发的多播数据帧调度信息a中目的端口比特码表与输出端口的空闲比特码表按位相与得到的结果等于目的端口比特码表。

10.根据权利要求1所述的方法,其特征在于,7)中更新第一次转发的多播数据帧的调度信息b中的目的端口比特码表,是将多播数据帧匹配成功的目的端口号在目的端口比特码表对应的比特置为0。

说明书 :

改善多播业务HOL阻塞的队列管理方法

技术领域

[0001] 本发明属于通信技术领域,特别涉及一种改善多播业务HOL阻塞的队列管理方法,可用于数字交换网络。

背景技术

[0002] 随着数字化浪潮的席卷,人们对数据传输质量的要求越来越高。作为数据传输过程中的重要一环,以太网技术也在不断地发展,特别是将以太网技术应用于工业领域,实现
全球互联的同时更好地操控远端设备。
[0003] 多播技术是指源一次发送的数据被发送到多个目的地,即多播业务必须等到所有的目的端口都允许其输出时,才能向它的目的端口输出。所谓多播业务HOL阻塞是指,在输
入缓存中,所有到达的多播数据帧进入到同一队列,如果此时的队头多播数据帧的所有目
的端口并未完全准备好,则必须等待,然而该队列中去往其它输出端口的数据帧也无法转
发,从而造成带宽的浪费和时延抖动的增加。
[0004] 在存储转发的交换结构中,通常避免多播HOL阻塞的方法有两种:一种是将数据帧复制成多个,然后存放到相应的输出队列中,按照单播的方式处理。这种方法的特点是控制
简单,但是增加了存储器的开销;另一种是多播帧只占用一个存储空间,在控制下读出多次
发往各个输出端口。这种方法的特点是不增加存储器开销,但是队列管理复杂度高。同时,
这两种方法,同一多播数据帧都要多次在总线上传输,使总线有效利用率下降。
[0005] 中兴通讯股份有限公司申请的专利文献“多播报文复制方法及装置”(申请号CN201210274379.6,申请公开号CN102821045A,公开日为2012.12.12)中提出了一种多播报
文复制方法及装置,此装置通过将多播数据帧只存储在一个缓存空间,进行多次读取输出,
该方法可实现多播业务的大数据量的复制,也可以避免多播HOL阻塞。但是该方法的缺点在
于,它的队列管理比较复杂,并且同一多播数据帧要在总线上多次输出,降低了总线的利用
率。

发明内容

[0006] 本发明的目的在于克服上述现有技术的不足,提出一种改善多播业务HOL阻塞的队列管理方法,以缓解在通信过程中的排头阻塞,提高多播数据帧的转发效率,同时保证多
播数据帧的转发不会乱序。
[0007] 为实现上述目的,本发明的技术方案包括如下步骤:
[0008] (1)交换机接收多播数据帧,获取多播帧的帧信息,并发起入队申请;该多播帧的帧信息包括单/多播标志位、帧长、目的端口比特码表;
[0009] (2)多播数据帧入队成功后,为数据帧分配缓存空间,即将多播数据帧保存到缓存区中,将多播数据帧的调度信息写入第一级多播发送调度先进先出队列FIFO1;
[0010] (3)检测第二级多播发送调度先进先出队列FIFO2:如果FIFO2非空,则读取FIFO2中的数据,获得第二次转发的多播数据帧调度信息a,执行(5),否则,执行(4);
[0011] (4)检测第一级多播发送调度先进先出队列FIFO1:如果FIFO1非空,则读取FIFO1中的数据,获得第一次转发的多播数据帧的调度信息b,执行(6),否则,返回3);
[0012] (5)根据第二次转发的多播数据帧的调度信息a中的目的端口比特码表以及当前输出端口的空闲比特码表的匹配情况,判断该多播数据帧能否发送:
[0013] 如果第二次转发的多播数据帧的调度信息a中的目的端口比特码表和当前输出端口的空闲比特码表完全不匹配或者部分匹配,则返回(4);
[0014] 如果第二次转发的多播数据帧的调度信息a中的目的端口比特码表和当前输出端口的空闲比特码表完全匹配,则执行(8);
[0015] (6)根据第一次转发的多播数据帧的调度信息b中的目的端口比特码表以及当前输出端口的空闲比特码表,判断该多播数据帧能否发送:
[0016] 如果第一次转发的多播数据帧的调度信息b中的目的端口比特码表和当前输出端口的空闲比特码表完全不匹配,则返回(3);
[0017] 如果第一次转发的多播数据帧的调度信息b中的目的端口比特码表和当前输出端口的空闲比特码表部分匹配,则执行(7);
[0018] 如果第一次转发的多播数据帧的调度信息b中的目的端口比特码表和当前输出端口的空闲比特码表完全匹配,则执行(8);
[0019] (7)更新第一次转发的多播数据帧的调度信息b中的目的端口比特码表,将更新后的目的端口比特码表以及多播数据帧的其余调度信息存储到第二级多播发送调度先进先
出队列FIFO2;再根据第一次转发的多播数据帧的调度信息b中的帧存储地址,将多播数据
帧从对应的缓存区搬移出来,并同时发送到多播数据帧的各个空闲的目的端口中;
[0020] (8)根据第一次转发的多播数据帧的调度信息b或者第二次转发的多播数据帧的调度信息a中的帧存储地址,将多播数据帧从对应的缓存区搬移出来,并且同时发送到多播
数据帧的各个目的端口中,等待搬移完成后,将该多播数据帧所占用的缓存区释放,供后到
来的数据帧使用。
[0021] 本发明与现有技术相比具有如下优点:
[0022] 1.本发明中多播数据帧要发往的目的端口只要有一个允许其输出时,就可向允许其输出的目的端口输出,不需要等待多播数据帧所有的目的端口均允许其输出时才能输
出,从而减少了带宽的浪费和抖动时延。
[0023] 2.本发明中采用了两级多播发送调度队列,通过第一级多播发送调度队列存储未转发的数据帧,通过第二级多播发送调度队列存储未完全转发的数据帧,且在转发时优先
选择未完全转发的数据帧,保证了多播数据帧的转发不会乱序;并在第二级多播调度队列
队首数据帧要发往的目的端口出现忙碌状态时,即可转发第一级多播发送调度队列中的数
据帧,从而缓解了HOL阻塞,提高了多播数据帧的转发效率。
[0024] 3.由于本发明中每一个多播数据帧只占用一个存储空间,不会增加存储器开销,因而可沿用传统的链式队列管理技术,不会增加队列管理的复杂度。

附图说明

[0025] 图1为本发明多播数据帧接收流程图;
[0026] 图2为本发明多播数据帧发送流程图。

具体实施方式

[0027] 下面结合附图对本发明的实施例做详细描述。
[0028] 本实例使用4端口的共享缓存式分组交换机。
[0029] 参照图1,本实施例的实现步骤如下:
[0030] 步骤1:获取数据帧的帧信息,发起入队申请。
[0031] 1.1)交换机从4个输入端口接收数据帧,该数据帧的帧信息包括:单/多播标志位、帧长、目的端口比特码表,其获取方式如下:
[0032] 对于单/多播标志位参数,其由数据帧帧头中的帧类型字段获取:若帧类型字段为单播,则该参数为1;若帧类型字段为多播,则该参数值为0;
[0033] 对于帧长参数,其通过计算数据帧的长度获取;
[0034] 对于目的端口比特码表,其由目的端口号获取:
[0035] 若目的端口号有1,将该参数的第一个比特置1;
[0036] 若目的端口号有2,将该参数的第二个比特置1;
[0037] 若目的端口号有3,将该参数的第三个比特置1;
[0038] 若目的端口号有4,将该参数的第四个比特置1。
[0039] 1.2)交换机获取数据帧的帧信息后,发起入队申请。
[0040] 步骤2:数据帧入队成功后,为数据帧分配缓存空间,将调度信息写入第一级多播发送调度先进先出队列FIFO1,并将数据帧搬移到缓存区。
[0041] 2.1)判断数据帧是否入队成功:
[0042] 若多播队列的长度与要入队多播帧的帧长之和小于等于缓存区大小,则入队成功,执行2.2),否则,入队失败,返回步骤1。
[0043] 2.2)根据分配方式为数据帧分配缓存空间:
[0044] 对采用分片存储,则可能需要多个存储块,因此需要存储多个第一次转发多播数据帧的调度信息b,例如分片大小为m字节,数据帧帧长L表示为L=n*m+x,x<=m,其中n和x
为整数,则该数据帧对应需要存储n+1个第一次转发多播数据帧的调度信息b;
[0045] 对于采用连续存储,则只需要一个存储块,因此需要存储一个第一次转发多播数据帧的调度信息b;
[0046] 2.3)将n+1个第一次转发多播数据帧的调度信息b依次写入第一级多播发送调度先进先出队列FIFO1,该第一次转发多播数据帧的调度信息b包括帧存储地址、数据帧长度、
目的端口比特码表;
[0047] 2.4)根据分配的帧存储地址,将数据帧搬移到缓存区对应的存储位置。
[0048] 步骤3:检测第二级多播发送调度先进先出队列FIFO2。
[0049] 对第二级多播发送调度先进先出队列FIFO2的空满信息进行检测:
[0050] 如果FIFO2为非空,则读取FIFO2中的数据,获得第二次转发多播数据帧的调度信息a,执行步骤5,否则,执行步骤4。
[0051] 步骤4:检测第一级多播发送调度先进先出队列FIFO1。
[0052] 对第一级多播发送调度先进先出队列FIFO1的空满信息进行检测:
[0053] 如果FIFO1为非空,则读取FIFO1中的数据,获得第一次转发多播数据帧的调度信息b,执行步骤6,否则,返回步骤3。
[0054] 步骤5:根据第二次转发多播数据帧的调度信息a中的目的端口比特码表和输出端口的空闲比特码表,对多播数据帧能否发送进行判断。
[0055] 5.1)读取当前输出端口的空闲比特码表,确定输出端口的空闲情况:
[0056] 若比特码表的第一个比特为1,表示第一个输出端口1空闲;
[0057] 若比特码表的第二个比特为1,表示第二个输出端口2空闲;
[0058] 若比特码表的第三个比特为1,表示第三个输出端口3空闲;
[0059] 若比特码表的第四个比特为1,表示第四个输出端口4空闲;
[0060] 5.2)根据第二次转发多播数据帧的调度信息a中的目的端口比特码表和输出端口的空闲比特码表的匹配情况,对多播数据帧能否发送进行判断:
[0061] 若第二次转发多播数据帧的调度信息a中的目的端口比特码表和输出端口的空闲比特码表按位相与得到的结果不等于目的端口比特码表,则表示不完全匹配或者部分匹
配,返回步骤4;
[0062] 若第二次转发多播数据帧的调度信息a中的目的端口比特码表和输出端口的空闲比特码表按位相与得到的结果等于目的端口比特码表,则表示完全匹配,执行步骤8。
[0063] 步骤6:根据第一次转发多播数据帧的调度信息b中的目的端口比特码表和输出端口的空闲比特码表,对多播数据帧能否发送进行判断。
[0064] 6.1)读取当前输出端口的空闲比特码表;
[0065] 6.2)根据第一次转发多播数据帧的调度信息b中的目的端口比特码表和输出端口的空闲比特码表的匹配情况,对多播数据帧能否发送进行判断:
[0066] 若第一次转发多播数据帧的调度信息b中的目的端口比特码表和输出端口的空闲比特码表按位相与得到的结果为0,则表示完全不匹配,返回步骤3;
[0067] 若第一次转发多播数据帧的调度信息b中的目的端口比特码表和输出端口的空闲比特码表按位相与得到的结果不为0且不等于目的端口比特码表,则表示部分匹配,执行步
骤7;
[0068] 若第一次转发多播数据帧的调度信息b中的目的端口比特码表和输出端口的空闲比特码表按位相与得到的结果等于目的端口比特码表,则表示完全匹配,执行步骤8。
[0069] 步骤7:更新目的端口比特码表,并将更新后的目的端口比特码表和其余调度信息写入第二级多播发送调度先进先出队列FIFO2,将多播数据帧从缓存区搬移到多播帧的各
个空闲目的端口中。
[0070] 7.1)更新第一次转发多播数据帧的调度信息b中的目的端口比特码表:
[0071] 若目的端口比特码表第一个比特为1以及输出端口的空闲比特码表第一个比特为0,则将目的端口比特码表第一个比特置1,否则,将目的端口比特码表第一个比特置0;
[0072] 若目的端口比特码表第二个比特为1以及输出端口的空闲比特码表第一个比特为0,则将目的端口比特码表第二个比特置1,否则,将目的端口比特码表第一个比特置0;
[0073] 若目的端口比特码表第三个比特为1以及输出端口的空闲比特码表第一个比特为0,则将目的端口比特码表第三个比特置1,否则,将目的端口比特码表第一个比特置0;
[0074] 若目的端口比特码表第四个比特为1以及输出端口的空闲比特码表第一个比特为0,则将目的端口比特码表第四个比特置1,否则,将目的端口比特码表第一个比特置0;
[0075] 7.2)将更新后的目的端口比特码表、数据帧长度和帧存储地址合并成新的第二次转发多播数据帧的调度信息a’,并将该第二次转发多播数据帧的调度信息a’写入第二级多
播发送调度先进先出队列FIFO2。
[0076] 7.3)根据第一次转发多播数据帧的调度信息b中的帧存储地址,将多播数据帧从对应的缓存区搬移出来,并且同时发送到多播数据帧的各个空闲目的端口中。
[0077] 步骤8:释放多播数据帧所占用的缓存区。
[0078] 8.1)根据第一次转发的多播数据帧的调度信息b或者第二次转发的多播数据帧的调度信息a中的帧存储地址,将多播数据帧从对应的缓存区搬移出来,并且同时发送到多播
数据帧的各个目的端口中;
[0079] 8.2)等待搬移完成后,将该多播数据帧所占用的缓存区释放,供后到来的数据帧使用。
[0080] 以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构
的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变
仍在本发明的权利要求保护范围之内。