一种报文转发方法和装置转让专利

申请号 : CN202111416005.9

文献号 : CN114338523B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汤成

申请人 : 华为技术有限公司

摘要 :

本发明实施例公开了一种报文转发方法和装置,包括:第一调度器接收目标报文,向所述出端口信息对应的目的物理出端口发送所述目标报文,并根据所述队列标识,将所述队列标识对应的虚拟队列的队列长度增加所述报文长度,向第二调度器发送更新信息,所述更新信息包括所述虚拟队列的队列长度增加所述报文长度;根据所述第二调度器对应所述更新信息发送的带宽调度结果,将所述虚拟队列的队列长度减少所述报文长度。可见,当报文到达所述第一调度器时,所述第一调度器可以不用等待带宽调度结果就可以将报文发送到对应的物理出端口。这样即使目标报文所对应的目的物理出端口出现反压,也不会影响所述第一调度器向所述目的物理出端口发送所述目标报文。

权利要求 :

1.一种报文转发方法,其特征在于,包括:

第一调度器接收目标报文;

所述第一调度器根据所述目标报文的出端口信息,向所述出端口信息对应的目的物理出端口发送所述目标报文,并根据所述目标报文所在队列的队列标识,将所述队列标识对应的虚拟队列的队列长度增加所述报文长度,所述队列长度用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量;

所述第一调度器根据带宽调度结果,将所述虚拟队列的队列长度减少所述报文长度。

2.根据权利要求1所述的方法,其特征在于,所述第一调度器在收到所述带宽调度结果前发送所述目标报文。

3.根据权利要求1或2所述的方法,其特征在于,在所述第一调度器向所述出端口信息对应的物理出端口发送所述目标报文之前,还包括:所述第一调度器通过丢弃计算判断是否丢弃所述目标报文;

当判断结果为不丢弃所述目标报文,所述第一调度器向所述出端口信息对应的物理出端口发送所述目标报文。

4.根据权利要求1或2所述的方法,其特征在于,所述第一调度器在trunk连接模式下,所述第一调度器的输出端与多条子链路或子端口连接。

5.根据权利要求3所述的方法,其特征在于,所述第一调度器在trunk连接模式下,所述第一调度器的输出端与多条子链路或子端口连接。

6.根据权利要求1或2所述的方法,其特征在于,所述目标报文所在队列中的报文对应不同的物理出端口。

7.根据权利要求1或2所述的方法,其特征在于,所述带宽调度结果来自第二调度器,所述第一调度器在trunk连接模式下,所述第二调度器为多级调度器。

8.根据权利要求1或2所述的方法,其特征在于,所述第一调度器在trunk连接模式下,逻辑端口与包括所述目的物理出端口的多个物理出端口分别对应。

9.根据权利要求3所述的方法,其特征在于,所述第一调度器在trunk连接模式下,逻辑端口与包括所述目的物理出端口的多个物理出端口分别对应。

10.一种计算机可读存储介质,其特征在于,包括程序指令,该程序指令被计算机执行时,引起所述计算机执行权利要求1‑9中任一所述的方法。

11.一种第一调度器,其特征在于,包括处理器,其中处理器用于执行计算机程序,以执行权利要求1‑9中任一所述的方法。

说明书 :

一种报文转发方法和装置

技术领域

[0001] 本发明涉及计算机领域,特别是涉及一种报文转发方法和装置。

背景技术

[0002] 为了有效进行数据传输,处于传输链路上的调度器需要为传输链路或者子链路/子通道合理的调度带宽。
[0003] 数据传输过程中,调度器将接收到报文按照一定的规则组成报文队列,然后依次处理该报文队列中的报文。根据处理到的报文长度、该报文所在报文队列的队列标识以及获取到的相应带宽调度结果确定出报文合理的出队时间。所述调度器根据被调度的带宽,从该报文队列中提取报文,向报文所对应的出端口发送报文。
[0004] 然而在端口汇聚trunk连接模式下,调度器的输出端会连接多条子链路或子端口,调度器接收的各个报文会根据一定规则,可以从不同的子链路或子端口的物理出端口输出。也就是说,所述调度器组成的报文队列中报文对应的物理出端口可以是不同的。如果在调度器的调度过程中,处在队列头的报文所对应的物理出端口出现反压,或者说出现无法输出报文的情况时,根据带宽调度规则,将不会为出现反压情况的物理出端口调度带宽,由此所述调度器将无法获得针对该处在队列头的报文的带宽调度结果,而且在所述调度器获取所述带宽调度结果之前,所述调度器也无法将该处在队列头的报文从该报文队列中输出。那么处于该报文队列的队列头后的其他报文即使对应的物理出端口没有反压,也不能从所述调度器输出。这种由于队列头报文无法出队列,导致所述调度器停止发送报文的现象一般叫做反压头阻现象。这种反压头阻现象会大大影响系统的带宽利用率。

发明内容

[0005] 为了解决上述技术问题,本发明实施例提供了一种报文转发方法和装置,使得第一调度器可以不用等待带宽调度结果就将报文发向对应的物理出端口,这样所述第一调度器所连接的多个物理出端口中即使有物理出端口出现反压,也不会让所述第一调度器产生头阻反压的现象。
[0006] 第一方面,本发明实施例提供了一种报文转发方法,包括:
[0007] 第一调度器接收目标报文,所述目标报文包括报文长度、队列标识和出端口信息;
[0008] 所述第一调度器向所述出端口信息对应的目的物理出端口发送所述目标报文,并根据所述队列标识,将所述队列标识对应的虚拟队列的队列长度增加所述报文长度,所述队列长度用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量;
[0009] 所述第一调度器向第二调度器发送更新信息,所述更新信息包括所述虚拟队列的队列长度增加所述报文长度;
[0010] 所述第一调度器根据所述第二调度器对应所述更新信息发送的带宽调度结果,将所述虚拟队列的队列长度减少所述报文长度。
[0011] 在第一方面的第一种可能的实现方式中,还包括:
[0012] 端口控制器预先建立所述目的物理出端口的出端口信息和时隙之间的关联关系,所述端口控制器与所述物理出端口相连。
[0013] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
[0014] 所述端口控制器获取所述第一调度器发送的所述目标报文;
[0015] 所述端口控制器根据所述目标报文的队列标识和报文长度,确定输出所述目标报文的目的时隙,将所述目标报文加入与所述目的时隙对应报文队列。
[0016] 结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
[0017] 所述端口控制器获取针对所述更新信息为所述目的物理出端口调度的带宽,所述为所述目的物理出端口调度的带宽为逻辑端口根据所述带宽调度结果为所述目的物理出端口调度的带宽;
[0018] 所述端口控制器根据所述关联关系以及所述目的物理出端口的可用带宽,在所述目的时隙从所述报文队列中提取所述目标报文,通过所述目的时隙对应的所述目的物理出端口输出。
[0019] 结合第一方面或者第一方面的第一种或第二种或第三种可能的实现方式,在第四种可能的实现方式中,在所述第一调度器向所述出端口信息对应的物理出端口发送所述目标报文之前,还包括:
[0020] 所述第一调度器通过丢弃计算判断是否丢弃所述目标报文;
[0021] 当判断结果为不丢弃所述目标报文,所述第一调度器执行所述向所述出端口信息对应的物理出端口发送所述目标报文。
[0022] 第二方面,本发明实施例提供了一种报文转发装置,包括:
[0023] 接收单元,用于接收目标报文,所述目标报文包括报文长度、队列标识和出端口信息;
[0024] 第一发送单元,用于向所述出端口信息对应的目的物理出端口发送所述目标报文,并根据所述队列标识,将所述队列标识对应的虚拟队列的队列长度增加所述报文长度,所述队列长度用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量;
[0025] 第二发送单元,用于向第二调度器发送更新信息,所述更新信息包括所述虚拟队列的队列长度增加所述报文长度;
[0026] 处理单元,用于根据所述第二调度器对应所述更新信息发送的带宽调度结果,将所述虚拟队列的队列长度减少所述报文长度。
[0027] 在第二方面的第一种可能的实现方式中,还包括:
[0028] 建立单元,用于预先建立所述目的物理出端口的出端口信息和时隙之间的关联关系,所述端口控制器与所述物理出端口相连。
[0029] 结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
[0030] 第一获取单元,用于获取所述第一调度器发送的所述目标报文;
[0031] 入队单元,用于根据所述目标报文的队列标识和报文长度,确定输出所述目标报文的目的时隙,将所述目标报文加入与所述目的时隙对应报文队列。
[0032] 结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
[0033] 第二获取单元,用于获取针对所述更新信息为所述目的物理出端口调度的带宽,所述为所述目的物理出端口调度的带宽为逻辑端口根据所述带宽调度结果为所述目的物理出端口调度的带宽;
[0034] 输出单元,用于根据所述关联关系以及所述目的物理出端口的可用带宽,在所述目的时隙从所述报文队列中提取所述目标报文,通过所述目的时隙对应的所述目的物理出端口输出。
[0035] 结合第二方面或者第二方面的第一种或第二种或第三种可能的实现方式,在第四种可能的实现方式中,在触发所述第一发送单元之前,还包括:
[0036] 丢弃判断单元,用于通过丢弃计算判断是否丢弃所述目标报文;
[0037] 当判断结果为不丢弃所述目标报文,触发所述第一发送单元。
[0038] 由上述技术方案可以看出,所述第一调度器可以根据目标报文的出端口信息,先向对应所述出端口信息的物理出端口发送所述目标报文,并相应增加用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量的所述虚拟队列队列长度,并当收到所述带宽调度结果时,将所述队列长度减少相应的长度,以为所述虚拟队列维护合理的可用带宽。当报文到达所述第一调度器时,所述第一调度器可以不用等待带宽调度结果就可以将报文发送到对应的物理出端口,由与所述物理出端口对应的端口控制器判断所述目标报文的输出时机。这样即使目标报文所对应的目的物理出端口出现反压,也不会影响所述第一调度器向所述目的物理出端口发送所述目标报文,也不会影响其他报文从所述第一调度器的输出。

附图说明

[0039] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0040] 图1为本发明实施例提供的一种报文转发方法的方法流程图;
[0041] 图2为本发明实施例提供的一种端口控制器的时隙链表结构示意图;
[0042] 图3为本发明实施例提供的一种报文入队方法的方法流程图;
[0043] 图4为本发明实施例提供的一种报文输出方法的方法流程图;
[0044] 图5为本发明实施例提供的一种物理出端口反压示意图;
[0045] 图6为本发明实施例提供的一种报文转发装置的装置结构图;
[0046] 图7为本发明实施例提供的一种报文转发装置的装置结构图;
[0047] 图8为本发明实施例提供的一种端口控制器的装置结构图;
[0048] 图9为本发明实施例提供的一种端口控制器的装置结构图;
[0049] 图10为本发明实施例提供的一种第一调度器的硬件结构示意图。

具体实施方式

[0050] 为了有效进行数据传输,处于传输链路上的调度器需要为传输链路或者子链路/子通道合理的调度带宽。现有技术中,调度器接收到报文,将接收到报文按照一定的规则组成报文队列,然后依次处理该报文队列中的报文,其中包括确定报文合理的出队时间。所述调度器在没有获取对应该报文的带宽调度结果之前,无法确定出该报文的合理出队时间,所以无法将该报文向对应的物理出端口发出。也就是说,在完成带宽调度之前,该报文一直无法从所在报文队列中出队。当所述调度器处于trunk连接模式下时,调度器的输出端会连接多条子链路或子端口,所述调度器组成的报文队列中报文对应的物理出端口可以是不同的。在所述调度器所组成的报文队列中,当处于队列头的报文所对应的物理出端口出现反压,那么处于队列头的该报文将无法通过调度器输出。而且,由于所述调度器是依次处理报文队列中的报文,在队列头的报文无法输出的情况下,处于该报文队列的其他报文,即使对应的物理出端口没有反压,也不能从所述调度器输出,造成反压头阻现象。反压头阻现象会大大影响整个报文队列的带宽调度效率。
[0051] 为此,在本发明实施例中,所述第一调度器可以根据目标报文的出端口信息,先向对应所述出端口信息的物理出端口发送所述目标报文,并相应增加用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量的所述虚拟队列队列长度,并当收到所述带宽调度结果时,将所述队列长度减少相应的长度,以为所述虚拟队列维护合理的可用带宽。当报文到达所述第一调度器时,所述第一调度器可以不用等待带宽调度结果就可以将报文发送到对应的物理出端口,由与所述物理出端口对应的端口控制器判断所述目标报文的输出时机。这样即使目标报文所对应的目的物理出端口出现反压,也不会影响所述第一调度器向所述目的物理出端口发送所述目标报文,也不会影响其他报文从所述第一调度器的输出,不会出现反压头阻现象。
[0052] 尤其在trunk连接模式下,由于所述第一调度器并不需要判断接收到的报文从物理出端口输出的时机,而由与所述物理出端口一一对应的端口控制器负责确定报文的输出时隙,故不用等待带宽调度结果就可以将报文发向对应的物理出端口。所述第一调度器建立的报文队列只是虚拟队列,主要用于统计队列长度的变化。端口控制器建立的报文队列中,组成所述报文队列的报文均为通过该端口控制器对应的物理出端口输出的报文。当一个物理出端口出现反压现象,只会影响到对应的端口控制器建立的报文队列的输出,而不会影响到所述第一调度器的报文转发以及与所述第一调度器所连接的其他子链路或子通道报文转发,因此所述第一调度器不会出现反压头阻现象。
[0053] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0054] 实施例一
[0055] 图1为本发明实施例提供的一种报文转发方法的方法流程图,包括:
[0056] S101:第一调度器接收目标报文,所述目标报文包括报文长度、队列标识和出端口信息。
[0057] 举例说明,在trunk连接模式下,所述第一调度器的输出端口可以连接多条子链路或子端口。一条子链路或子端口可以具有一个物理出端口,所述物理出端口具有一一对应的端口控制器。
[0058] S102:所述第一调度器向所述出端口信息对应的目的物理出端口发送所述目标报文,并根据所述队列标识,将所述队列标识对应的虚拟队列的队列长度增加所述报文长度,所述队列长度用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量。
[0059] 举例说明,所述虚拟队列并不是一个由所述第一调度器通过一个规则建立的报文队列,所述虚拟队列仅仅统计所述第一调度器接收具有所述队列标识报文的总报文长度和所述第一调度器发送具有所述队列标识报文的总报文长度之差。所述第一调度器可以通过虚拟队列长度(virtual queue length,VQL)计数器来统计所述虚拟队列的队列长度变化。
[0060] S103:所述第一调度器向第二调度器发送更新信息,所述更新信息包括所述虚拟队列的队列长度增加所述报文长度。
[0061] S104:所述第一调度器根据所述第二调度器对应所述更新信息发送的带宽调度结果,将所述虚拟队列的队列长度减少所述报文长度。
[0062] 举例说明,所述第二调度器根据更新信息中的所述虚拟队列的队列信息、所述虚拟队列所增加的队列长度或者说所述报文长度输出带宽调度结果,分别向所述第一调度器和逻辑端口发送所述带宽调度结果,所述逻辑端口与所述目的物理出端口对应。在trunk连接模式下,所述第二调度器可以为多级调度器(trunk scheduler)。在trunk连接模式下,所述逻辑端口可以与包括所述目的物理出端口的多个物理出端口分别对应。
[0063] 由于所述目标报文已经从所述第一调度器发出,故所述第一调度器根据所述带宽调度结果,将所述虚拟队列的队列长度减少相应的报文长度,表示所述第一调度器在发出所述目标报文后,发送具有所述队列标识的报文所需的带宽总量。
[0064] 由此可见,所述第一调度器可以根据目标报文的出端口信息,先向对应所述出端口信息的物理出端口发送所述目标报文,并相应增加用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量的所述虚拟队列队列长度,并当收到所述带宽调度结果时,将所述队列长度减少相应的长度,以为所述虚拟队列维护合理的可用带宽。当报文到达所述第一调度器时,所述第一调度器可以不用等待带宽调度结果就可以将报文发送到对应的物理出端口,由与所述物理出端口对应的端口控制器判断所述目标报文的输出时机。这样即使目标报文所对应的目的物理出端口出现反压,也不会影响所述第一调度器向所述目的物理出端口发送所述目标报文,也不会影响其他报文从所述第一调度器的输出。
[0065] 可选的,在所述第一调度器在接收目标报文,并向所述出端口信息对应的物理出端口发送所述目标报文之前,还可以根据所述目标报文的报文长度,以及所述目标报文的队列标识所对应的虚拟队列的队列长度等数据,判断是否需要丢弃所述目标报文,比如可以采用尾丢弃或者随机早期丢弃(weighted random early drop,WRED)等方式避免在所述第一调度器出现报文队列过长、过于拥塞的情况。
[0066] 在本发明实施例中,所述第一调度器向所述目的物理出端口发送所述目标报文,所述目标报文会先到达所述目的物理出端口唯一对应的端口控制器,所述端口控制器和所述目的物理出端口相连。由所述端口控制器判断所述目标报文从所述目的物理出端口输出的时机。接下来将对这一特征进行详细描述。
[0067] 所述端口控制器包括预先建立的关联关系,所述关联关系是所述目的物理出端口的出端口信息和时隙之间的对应关系,每一个时隙均对应所述出端口信息。所述端口控制器可以按照一定规则建立与时隙一一对应的报文队列,报文队列中的报文可以在所述报文队列对应的时隙从所述目的物理出端口输出。所述时隙的个数可以根据最大输出带宽确定。例如所述目的物理出端口划分时隙的粒度为1ms,所述最大输出带宽为200ms的情况下,所述目的物理出端口可以建立200个时隙。
[0068] 通过附图说明一种以时隙链表形式建立所述关联关系的方式,如图2所示,图2为本发明实施例提供的一种端口控制器的时隙链表结构示意图。21为所述端口控制器对应的目的物理出端口。22为时隙链表,所述时隙链表22具有如图2中所示时隙增长方向。221为所述时隙链表22中多个时隙中的一个时隙。23为与所述时隙221一一对应的报文队列。所述时隙链表22中的多个时隙均与所述目的物理出端口21的出端口信息具有对应关系。当所述时隙221按照所述时隙增长方向移动到所示出队指针的位置,所述端口控制器可以依照所述关联关系,控制与所述时隙221对应的所述报文队列23中报文通过所述目的物理出端口输出。通过所述链表的形式建立所述关联关系是本发明实施例提供的一种优选的方式,本发明中的所述关联关系也可以通过其他方式建立。
[0069] 由于所述关联关系为出端口信息和时隙之间的对应关系,其中的时隙数量与系统支持的报文队列的数量无关。或者说,所述端口控制器不需要单独为每一个报文队列建立一个对应的对应关系用于转发。而且,由于所述关联关系是基于所述目的物理出端口建立,与所述关联关系中时隙一一对应的报文队列中报文只会从所述目的物理出端口输出。
[0070] 接下来对所述端口控制器在接收到所述第一调度器发送的所述目标报文时,将所述目标报文加入对应的报文队列进行描述。
[0071] 图3为本发明实施例提供的一种报文入队方法的方法流程图,如图3所示:
[0072] S301:所述端口控制器获取所述第一调度器发送的所述目标报文。
[0073] S302:所述端口控制器根据所述目标报文的队列标识和报文长度,确定输出所述目标报文的目的时隙,将所述目标报文加入与所述目的时隙对应报文队列。
[0074] 举例说明,由于所述端口控制器包括多条与时隙具有对应关系的报文队列,故所述端口控制器在接收到报文后,需要先算出所述目标报文可以输出的目的时隙,然后将所述目标报文加入到所述目的时隙对应的报文队列中,一般情况加入到所述报文队列的尾部。所述目的时隙一般可以根据所述目标报文的队列标识和报文长度,以及带宽配置信息,出队信息等计算得出。以图2为例,当所述端口控制器通过计算,比如确定所述目标报文可以输出的目的时隙为所述时隙链表22中的所述时隙221时,可以将所述目标报文添加到所述时隙221对应的所述报文队列23中,比如加入到所述报文队列23的队尾。
[0075] 所述端口控制器可以按照时隙之间的排列顺序,依次输出时隙对应的报文队列中的报文。
[0076] 接下来,根据附图说明所述端口控制器如何根据所述关联关系输出所述目标报文。图4为本发明实施例提供的一种报文输出方法的方法流程图,如图4所示:
[0077] S401:所述端口控制器获取针对所述更新信息为所述目的物理出端口调度的带宽,所述为所述目的物理出端口调度的带宽为逻辑端口根据所述带宽调度结果为所述目的物理出端口调度的带宽。
[0078] 举例说明,所述第二调度器根据所述更新信息确定出带宽调度结果,并向所述目的物理出端口对应的逻辑端口发送所述带宽调度结果,由所述逻辑端口根据所述带宽调度结果判断分配多少带宽给所述目的物理出端口。本发明不限定S401和图3所对应实施例中S302执行的先后顺序。
[0079] 在trunk连接模式下,所述逻辑端口可以与包括所述目的物理出端口的多个物理出端口分别对应,所述逻辑端口可以将由所述第二调度器调度的带宽均分配给与自身对应的N个物理出端口,也可以仅分配给其中M个物理出端口,其中N为大于等于2的整数,M为小于N大于等于1的整数。本发明并不限定所述逻辑端口为物理出端口分配带宽的方式。需要注意的是,基于节约系统资源,如果所述目的物理出端口出现反压,那所述目的物理出端口将不会从所述逻辑端口获取分配的带宽。
[0080] S402:所述端口控制器根据所述关联关系以及所述目的物理出端口的可用带宽,在所述目的时隙从所述报文队列中提取所述目标报文,通过所述目的时隙对应的所述目的物理出端口输出。
[0081] 接下来将针对物理出端口出现反压这一情况,结合第一调度器和所述端口控制器进行描述。图5为本发明实施例提供的一种物理出端口反压示意图。如图5所示,51为所述第一调度器,所述第一调度器51的右侧为接收端,用于接收报文,所述第一调度器51的左侧为输出端,在图5中连接有四条子链路,通过该四条子链路分别连接四个物理出端口531至534,该四个物理出端口531至534分别具有对应的端口控制器521至524。若所述物理出端口
531出现反压现象,当所述第一调度器51接收到出端口信息为所述物理出端口531的报文a,所述第一调度器51也可以将所述报文a发向所述物理出端口531。这时虽然所述第一调度器
51到所述物理出端口531之间的子链路无法使用,但是不会影响所述第一调度器51通过该子链路发出报文,也不会影响所述第一调度器51通过其他子链路发出报文。即使所述四个物理出端口531至534中任意两个或任意三个出现反压现象,也不会影响到所述第一调度器
51发出报文。只有当所述第一调度器51所连接的所有四个物理出端口均出现反压情况,如图5中虚线所示,与门54只有在四个输入均为反压时,才会输出反压,影响所述第一调度器
51出现反压头阻问题。需要注意的是,所述与门54可以理解为是为了更加容易通过图示展示所述第一调度器51和所述物理出端口531至534之间能够达到的功能,并不是限定所述第一调度器51和所述物理出端口531至534之间确实存在这样的物理连接和与门54这一设备。
[0082] 由此可见,在当所述第一调度器的输出端连接多个物理出端口时,其中一个物理出端口发生反压不会造成所述第一调度器发生反压头阻现象,也不会影响与所述第一调度器连接的其他物理出端口的报文转发。有效解决了现有技术中在trunk连接模式下的反压头阻问题。
[0083] 实施例二
[0084] 图6为本发明实施例提供的一种报文转发装置的装置结构图,所述报文转发装置600包括:
[0085] 接收单元601,用于接收目标报文,所述目标报文包括报文长度、队列标识和出端口信息。
[0086] 举例说明,所述接收单元601可以执行实施例一中S101的方法。这里不再赘述。
[0087] 第一发送单元602,用于向所述出端口信息对应的目的物理出端口发送所述目标报文,并根据所述队列标识,将所述队列标识对应的虚拟队列的队列长度增加所述报文长度,所述队列长度用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量。
[0088] 举例说明,所述虚拟队列并不是一个通过一个规则建立的报文队列,所述虚拟队列仅仅统计所述第一调度器接收具有所述队列标识报文的总报文长度和所述第一调度器发送具有所述队列标识报文的总报文长度之差。所述第一调度器可以通过VQL计数器来统计所述虚拟队列的队列长度变化。
[0089] 第二发送单元603,用于向第二调度器发送更新信息,所述更新信息包括所述虚拟队列的队列长度增加所述报文长度。
[0090] 举例说明,所述第二发送单元603可以执行实施例一中S103的方法。这里不再赘述。
[0091] 处理单元604,用于根据所述第二调度器对应所述更新信息发送的带宽调度结果,将所述虚拟队列的队列长度减少所述报文长度。
[0092] 举例说明,所述第二调度器根据更新信息中的所述虚拟队列的队列信息、所述虚拟队列所增加的队列长度或者说所述报文长度输出带宽调度结果,分别向所述处理单元604和逻辑端口发送所述带宽调度结果,所述逻辑端口与所述目的物理出端口对应。在trunk连接模式下,所述第二调度器可以为trunk scheduler。在trunk连接模式下,所述逻辑端口可以与包括所述目的物理出端口的多个物理出端口分别对应。
[0093] 由于所述目标报文已经从所述第一发送单元602发出,故所述处理单元604根据所述带宽调度结果,将所述虚拟队列的队列长度减少相应的报文长度,表示所述第一发送单元602在发出所述目标报文后,发送具有所述队列标识的报文所需的带宽总量。
[0094] 由此可见,所述第一调度器可以根据目标报文的出端口信息,先向对应所述出端口信息的物理出端口发送所述目标报文,并相应增加用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量的所述虚拟队列队列长度,并当收到所述带宽调度结果时,将所述队列长度减少相应的长度,以为所述虚拟队列维护合理的可用带宽。当报文到达所述第一调度器时,所述第一调度器可以不用等待带宽调度结果就可以将报文发送到对应的物理出端口,由与所述物理出端口对应的端口控制器判断所述目标报文的输出时机。这样即使目标报文所对应的目的物理出端口出现反压,也不会影响所述第一调度器向所述目的物理出端口发送所述目标报文,也不会影响其他报文从所述第一调度器的输出。
[0095] 可选的,在所述接收单元601在接收目标报文,并所述第一发送单元602向所述出端口信息对应的物理出端口发送所述目标报文之前,还可以根据所述目标报文的报文长度,以及所述目标报文的队列标识所对应的虚拟队列的队列长度等数据,判断是否需要丢弃所述目标报文,比如可以采用尾丢弃或者WRED等方式避免在所述第一调度器出现报文队列过长、过于拥塞的情况。在图6的基础上,图7为本发明实施例提供的一种报文转发装置的装置结构图,如图7所示,在触发所述第一发送单元602之前,所述报文转发装置600还可以包括丢弃判断单元701:
[0096] 所述丢弃判断单元701,用于通过丢弃计算判断是否丢弃所述目标报文;
[0097] 当判断结果为不丢弃所述目标报文,触发所述第一发送单元602。
[0098] 在本发明实施例中,所述第一发送单元602向所述目的物理出端口发送所述目标报文,所述目标报文会先到达所述目的物理出端口唯一对应的端口控制器,所述端口控制器和所述目的物理出端口相连。由所述端口控制器判断所述目标报文从所述目的物理出端口输出的时机。接下来将对这一特征进行详细描述。在图6所对应实施例的基础上,图8为本发明实施例提供的一种端口控制器的装置结构图,所述端口控制器800包括:
[0099] 建立单元801,用于预先建立所述目的物理出端口的出端口信息和时隙之间的关联关系,所述端口控制器与所述物理出端口相连。
[0100] 举例说明,所述关联关系是所述目的物理出端口的出端口信息和时隙之间的对应关系,每一个时隙均对应所述出端口信息。所述建立单元801可以按照一定规则建立与时隙一一对应的报文队列,报文队列中的报文可以在所述报文队列对应的时隙从所述目的物理出端口输出。所述时隙的个数可以根据最大输出带宽确定。例如所述目的物理出端口划分时隙的粒度为1ms,所述最大输出带宽为200ms的情况下,所述目的物理出端口可以建立200个时隙。
[0101] 第一获取单元802,用于获取所述第一调度器发送的所述目标报文。
[0102] 入队单元803,用于根据所述目标报文的队列标识和报文长度,确定输出所述目标报文的目的时隙,将所述目标报文加入与所述目的时隙对应报文队列。
[0103] 举例说明,由于所述端口控制器800包括多条与时隙具有对应关系的报文队列,故所述第一获取单元802在接收到报文后,所述入队单元803需要先算出所述目标报文可以输出的目的时隙,然后将所述目标报文加入到所述目的时隙对应的报文队列中,一般情况加入到所述报文队列的尾部。所述目的时隙一般可以根据所述目标报文的队列标识和报文长度,以及带宽配置信息,出队信息等计算得出。
[0104] 接下来,根据附图说明所述端口控制器800如何根据所述关联关系输出所述目标报文。在图8的基础上,图9为本发明实施例提供的一种端口控制器的装置结构图,所述端口控制器800还包括:
[0105] 第二获取单元901,用于获取针对所述更新信息为所述目的物理出端口调度的带宽,所述为所述目的物理出端口调度的带宽为逻辑端口根据所述带宽调度结果为所述目的物理出端口调度的带宽。
[0106] 举例说明,所述第二调度器根据所述更新信息确定出带宽调度结果,并向所述目的物理出端口对应的逻辑端口发送所述带宽调度结果,由所述逻辑端口根据所述带宽调度结果判断分配多少带宽给所述目的物理出端口。本发明不限定所述第二获取单元901和图8所对应实施例中所述第一获取单元802触发的先后顺序。
[0107] 在trunk连接模式下,所述逻辑端口可以与包括所述目的物理出端口的多个物理出端口分别对应,所述逻辑端口可以将由所述第二调度器调度的带宽均分配给与自身对应的N个物理出端口,也可以仅分配给其中M个物理出端口,其中N为大于等于2的整数,M为小于N大于等于1的整数。本发明并不限定所述逻辑端口为物理出端口分配带宽的方式。需要注意的是,基于节约系统资源,如果所述目的物理出端口出现反压,那所述目的物理出端口将不会从所述逻辑端口获取分配的带宽。
[0108] 输出单元902,用于根据所述关联关系以及所述目的物理出端口的可用带宽,在所述目的时隙从所述报文队列中提取所述目标报文,通过所述目的时隙对应的所述目的物理出端口输出。
[0109] 所述输出单元902可以按照时隙之间的排列顺序,依次输出时隙对应的报文队列中的报文。
[0110] 实施例三
[0111] 参阅图10,图10为本发明实施例提供的一种第一调度器的硬件结构示意图,所述第一调度器1000包括存储器1001、接收器1002和发送器1003,以及分别与所述存储器1001、所述接收器1002和所述发送器1003连接的处理器1004,所述存储器1001用于存储一组程序指令,所述处理器1004用于调用所述存储器1001存储的程序指令执行如下操作:
[0112] 触发所述接收器1002接收目标报文,所述目标报文包括报文长度、队列标识和出端口信息;
[0113] 触发所述发送器1003向所述出端口信息对应的目的物理出端口发送所述目标报文,并根据所述队列标识,将所述队列标识对应的虚拟队列的队列长度增加所述报文长度,所述队列长度用于表示所述第一调度器发送具有所述队列标识的报文所需的带宽总量;
[0114] 触发所述发送器1003向第二调度器发送更新信息,所述更新信息包括所述虚拟队列的队列长度增加所述报文长度;
[0115] 根据所述第二调度器对应所述更新信息发送的带宽调度结果,将所述虚拟队列的队列长度减少所述报文长度。
[0116] 可选地,所述处理器1004可以为中央处理器(Central Processing Unit,CPU),所述存储器1001可以为随机存取存储器(Random Access Memory,RAM)类型的内部存储器,所述接收器1002和所述发送器1003可以包含普通物理接口,所述物理接口可以为以太(Ethernet)接口或异步传输模式(Asynchronous Transfer Mode,ATM)接口。所述处理器1004、发送器1003、接收器1002和存储器1001可以集成为一个或多个独立的电路或硬件,如:专用集成电路(Application Specific Integrated Circuit,ASIC)。
[0117] 本发明实施例中提到的第一路由器的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”。
[0118] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(Read‑Only Memory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0119] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0120] 以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。