数据报文的处理方法、装置及设备的制作方法

文档序号:7888730阅读:111来源:国知局
专利名称:数据报文的处理方法、装置及设备的制作方法
技术领域
本发明涉及数据转发技术,尤其涉及一种数据报文的处理方法、装置及设备。
背景技术
为了满足数据中心网络融合的需求,美国电气和电子工程师协会(Institute of Electrical and Electronics Engineers,简称为IEEE)数据中心桥(Data Center Bridge,简称为DCB)工作组对传统以太网协议进行了增强,使得以太网除了承载传统的 IP流量之外,还能够承载存储和高性能集群计算业务。基于优先级的流量控制(Priority Flow Control,简称为PFC)和增强传输选择(Enhanced Transmission Selection,简称为ETS)是该工作组制定的两个标准。传统的以太网是一种尽力传输(Best-effort)的网络,当网络拥塞时,是允许丢包的。但存储业务对于丢包时分敏感,需要以太网提供不丢包的服务。PFC就是为了构建一个无损的以太网而提出的。当前以太网提供的不丢包服务802. 3x流量控制,当检测到系统拥塞时,会暂停整条链路的流量,这样,某个业务的拥塞就会导致整体链路的流量停止。相比802. 3x流量控制,PFC将实际的物理链路虚拟成基于802. Ip优先级的8条逻辑链路,为每个逻辑链路单独提供不丢包的服务,使其能够与同一端口上的其他流量共存,某个业务的拥塞不会影响到其他业务。而ETS支持对802. Ip类别中的流量进行分类,分成多个传输类(Traffic Class),对每个传输类进行带宽分配。当其中一个传输类没有使用完分配给他的带宽时,其他传输类可以使用剩下的带宽。上述两种标准的具体实现上,均需要网络设备对缓存(buffer)资源进行合理的分配,才能同时满足PFC不丢包和ETS调度准确的要求。然而,这两种标准对于缓存资源分配的要求具有矛盾之处。下面结合具体实例进行说明。通常,由于需要对报文进行查表、修改、过滤等操作,网络设备使用的转发芯片都是采用存储转发(Store-Forward)的方式来处理报文。对于每个进入转发芯片的报文,需要为其分配一个或多个缓存,报文在转发芯片内部会在出口队列进行排队,并根据优先级或调度关系选择输出。由于实际网络中经常出现拥塞的情况,例如当出现入口流量与出口转发速率不匹配或者高优先的流量消耗了所有带宽导致低优先级的流量得不到调度等时, 需要网络设备对报文进行缓存,但网络设备的缓存数量是有限的,这时就需要对缓存资源进行合理的分配和管理,才能达到PFC不丢包或者ETS根据优先级选择哪种流量输出的目的。现有技术中,在PFC和ETS共用的情况下,对于缓存资源的分配和管理一般采用如下方式入口和出口队列均进行限制,且出口队列比入口队列长,能容纳多个入口队列的报文。 但是,由于PFC会在入口队列设置XOFF和XON的水线,当入口队列内的报文超过XOFF水线时,入口队列所在的端口会发出一个XOFF帧,通知对端停止向本端口发包;当入口队列内的报文下降至低于XON水线时,入口队列所在的端口会发出一个XON帧,通知对端可以继续发包,通过这种方式达到不丢包的目的。因此,只要出口队列配置得足够大,就可以有效保证报文不会因为出口队列满而丢包。但是,ETS并没有这样的一种保障机制,这就导致了即便开启PFC的端口在入口队列处给予了限制,出口队列仍然可能被未开启PFC的端口的数据包占满。而一旦出口队列满,就会导致PFC端口出现丢包,造成不必要的损失。

发明内容
为了在同时具有开启和未开启流量控制端口的设备上有效保障开启流量控制的端口不丢包问题,本发明提供一种数据报文的处理方法,包括网络设备中的第一端口接收第二端口发送的数据报文,所述数据报文的丢弃优先级根据所述第二端口是否开启流量控制配置;如果第一端口的出口队列中堆积的数据报文达到预设的第一水线值,且所述数据报文的丢弃优先级低于预设的第一丢弃优先级,则将所述数据报文放入所述出口队列,所述出口队列中第一水线值限定的缓存小于所述网络设备的所有端口的入口队列的缓存之和。本发明还提供一种数据报文的处理装置,包括接收模块,位于网络设备的第一端口,用于接收网络设备的第二端口发送的数据报文,所述数据报文的丢弃优先级根据所述第二端口是否开启流量控制配置;执行模块,用于如果所述第一端口的出口队列中堆积的数据报文是否达到预设的第一水线值,且所述数据报文的丢弃优先级低于预设的第一丢弃优先级,则将所述数据报文放入所述出口队列,所述出口队列中第一水线值限定的缓存小于所述网络设备的全部端口的入口队列的缓存之和。本发明还提供了一种网络设备,包括如上所述的数据报文的处理装置。本发明的技术效果是丢弃优先级高于或等于第一丢弃优先级的报文(即未开启流量控制端口的报文)仅能占用出口队列中第一水线值以下的缓存,而将第一水线值以上的缓存留给丢弃优先级低于第一丢弃优先级的报文(即开启流量控制端口的报文),有效保证了丢弃优先级低于第一丢弃优先级的报文不丢包。


图I为本发明实施例一提供的数据报文的处理方法流程图;图2为本发明实施例二提供的数据报文的处理方法流程图;图3为本发明实施例二提供的网络设备内部端口的结构示意图;图4为本发明实施例三提供的数据报文的处理方法流程图;图5为本发明实施例四提供的数据报文的处理装置结构示意图;图6为本发明实施例五提供的网络设备结构示意图。
具体实施例方式图I为本发明实施例一提供的数据报文的处理方法流程图,如图I所示,该方法包括步骤101、网络设备中的第一端口接收第二端口发送的数据报文,该数据报文的丢弃优先级(Drop Precedence,简称为DP)是根据第二端口是否开启流量控制来配置的。可以理解的是,网络设备中的第一端口和第二端口都是一种代指,即均可以指网络设备中的任一端口,这里也不排除第一端口和第二端口是同一端口的情况。
步骤102、如果第一端口的出口队列中堆积的数据报文达到预设的第一水线值,且数据报文的丢弃优先级低于预设的第一丢弃优先级,则将该数据报文放入出口队列中,该出口队列中第一水线值所限定的缓存小于网络设备的所有端口的入口队列的缓存之和。其中,第一水线值可以是小于网络设备的全部端口的入口队列的缓存之和的任意值。第一丢弃优先级可以根据经验或者实际情况而具体设定。丢弃优先级低于第一丢弃优先级的数据报文说明该数据报文是不允许丢弃或者通常不予丢弃的数据报文,也即是开启了流量控制的端口发送的数据报文。当网络设备端口的出口队列中堆积的数据报文尚未达到预设的第一水线值时,可以接收任意丢弃优先级的数据报文,然而一旦网络设备端口的出口队列中堆积的数据报文达到预设的第一水线值时,为了有效保证上述丢弃优先级较低不应丢弃或者不予丢弃的数据报文能够进入该出口队列,而不被丢弃,可以拒绝接收丢弃优先级较高的报文,而只接收上述丢弃优先级较低的报文。本发明实施例提供的数据报文的处理方法,丢弃优先级高于或等于第一丢弃优先级的报文(即未开启流量控制端口的报文)仅能占用出口队列中第一水线值以下的缓存, 而将第一水线值以上的缓存留给丢弃优先级低于第一丢弃优先级的报文(即开启了流量控制端口的报文),有效保证了丢弃优先级低于第一丢弃优先级的报文不丢包。图2为本发明实施例二提供的数据报文的处理方法流程图,如图2所示,该方法还可以包括步骤100a、判断第二端口是否启用了流量控制;如果是,配置数据报文的丢弃优先级低于第一丢弃优先级;如果否,配置数据报文的丢弃优先级高于或等于第一丢弃优先级。需要说明的是,本实施例中所说的流量控制可以为基于优先级的流量控制PFC,也可以是802. 3x流量控制,或现有技术中的其他流量控制,此处不做赘述。而当第二端口启用的是PFC时,第一端口的出口队列为优先级与数据报文的优先级相匹配的出口队列。而本发明实施例仅以端口中某一个优先级的入口队列和出口队列为例进行了说明,并通过这样的说明来泛指端网络设备端口中的各个优先级队列的数据报文的处理方法,因此上述描述不是对本发明保护范围的一种限制。需要说明的是,当数据报文进入网络设备,网络设备的交换芯片会为接收到的数据报文指定出口队列并配置丢弃优先级,从而对报文进行服务质量(Quality of Service, 简称为QoS)管理和调度。事实上该步骤既可以发生在步骤101之前,也可以发生在步骤 101之后,虽然此处步骤编号为100a,但并不用以限制本步骤的发生顺序,不用以限制本发明的保护范围。 需要说明是,启用了 PFC或者802. 3x流量控制等流量控制的各个端口接收到的数据报文之间,可以配置相同的丢弃优先级,也可以配置不同的丢弃优先级。例如,根据接收到该数据报文的速率区分不同的丢弃优先级,但全部低于第一优先级。丢弃优先级越低,说明该数据报文越重要,越不能丢包。在上述实施方式的基础上,该方法还可以包括设置第一水线值,以使出口队列中超出第一水线值的缓存大于或等于网络设备中启用了流量控制的端口的入口队列的缓存之和。如图3所示的网络设备内部端口的结构示意图,假设网络设备的两个端口 A和B,端口 A启用了(PFC或者802. 3x等)流量控制,端口 B未启用(PFC或者802. 3x等)流量控制,则将启用了(PFC或者802. 3x等)流量控制的端口 A接收到的数据报文的丢弃优先级配置为DP0,将未启用(PFC或者802. 3x等)流量控制的端口 B接收到的数据报文的丢弃优先级配置为DPI。那么当网络设备端口的出口队列中堆积的数据报文未达到预设的第一水线值(如DPI)时,丢弃优先级为DPl和DPO的数据报文都可以进入该端口的出口队列, 而当网络设备端口的出口队列中堆积的数据报文达到预设的第一水线值(如DPI)时,则该出口队列仅接收丢弃优先级低于DPl的数据报文,从而有效保证DPO的数据报文能够入队而不被丢弃,如图3所示。也即,将超过第一水线值部分的出口队列的缓存预留给启用PFC 或者802. 3x等流量控制的端口,从而有效保证PFC或者802. 3x等流量控制功能的正常运行。还需要进一步强调的是,第一水线值实际是一个泛指,也就是说,对于一个出口队列,可以有多个不同的第一水线值,对应多个不同的第一丢弃优先级。多个不同的第一水线值之间是可以共存的。而且,上述方法可以理解为将每个出口队列虚拟为多个队列,其中的一个或多个队列不管数据报文的丢弃优先级是多少都可以接收,而其他队列仅能接收丢弃优先级小于自己相应水线值对应的丢弃优先级的数据报文。在上述实施方式的基础上,可以通过如下方式判断第一端口的出口队列中堆积的数据报文是否到达预设的第一水线值如果第一水线值为数据报文的总数,判断第一端口的出口队列中堆积的数据报文个数和是否超过第一水线值,如果超过,则判断第一端口的出口队列中堆积的数据报文达到预设的第一水线值;如果第一水线值为数据报文的大小之和,判断第一端口的出口队列中堆积的数据报文的大小之和是否超过第一水线值,如果超过,则判断第一端口的出口队列中堆积的数据报文达到预设的第一水线值;如果第一水线值为出口队列的缓存占用比例,判断第一端口的出口队列中堆积的数据报文的大小之和与出口队列的缓存之和之间的比例是否超过第一水线值,如果超过, 则判断第一端口的出口队列中堆积的数据报文达到预设的第一水线值。进一步的,图4为本发明实施例三提供的数据处理方法的流程图,如图4所示,在图I所示的方法实施方式的基础上,该方法还可以包括步骤103、如果数据报文的丢弃优先级高于预设的第一丢弃优先级,且第一端口的出口队列中堆积的丢弃优先级高于预设的第一丢弃优先级的数据报文未达到预设的第二水线值,则将数据报文放入出口队列中,出口队列中超出第二水线值限定的缓存大于或等于网络设备中启用了流量控制的端口的入口队列的缓存之和。第二水线值实际是一个泛指,也就是说,对于一个出口队列,可以有多个不同的第二水线值。多个不同的第二水线值之间是可以共存的。这里可以理解为将实体的出口队列分为两个甚至更多个虚拟的出口队列,其中的一个至多个虚拟队列可以仅接收丢弃优先级低于预设的第一丢弃优先级的数据报文,其中的一个至多个虚拟队列可以仅接收丢弃优先级高于预设的第一丢弃优先级的数据报文,当然,这一部分仅接收丢弃优先级高于预设的第一丢弃优先级的数据报文需要满足小于网络设备的所有端口的入口队列的缓存之和与第一水线值所限定的缓存之差,以有效保证丢弃优先级低于预设的第一丢弃优先级的数据报文不产生丢包。本领域普通技术人员可以理解实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。本发明实施例提供的数据报文的处理方法,丢弃优先级高于或等于第一丢弃优先级的报文仅能占用出口队列中第一水线值以下的缓存,而将第一水线值以上的缓存留给丢弃优先级低于第一丢弃优先级的报文,有效保证了丢弃优先级低于第一丢弃优先级的报文不丢包。图5为本发明实施例四提供的数据报文的处理装置结构示意图,如图5所示,该装置包括接收模块501和执行模块502。其中,接收模块501位于网络设备的第一端口,用于接收网络设备的第二端口发送的数据报文,数据报文的丢弃优先级根据第二端口是否开启流量控制配置;执行模块502用于如果第一端口的出口队列中堆积的数据报文是否达到预设的第一水线值,且数据报文的丢弃优先级低于预设的第一丢弃优先级,则将数据报文放入出口队列,出口队列中第一水线值限定的缓存小于网络设备的全部端口的入口队列的缓存之和。在上述实施方式的基础上,该装置还可以包括配置模块,用于判断第二端口是否启用了优先级的流量控制或802. 3x流量控制;如果是,则配置数据报文的丢弃优先级低于第一丢弃优先级;如果否,则配置数据报文的丢弃优先级高于或等于第一丢弃优先级。在上述实施方式的基础上,该装置可以包括设置模块,用于设置第一水线值,以使出口队列中超出第一水线值的缓存大于或等于网络设备中启用了基于优先级的流量控制和/或802. 3x流量控制的端口的入口队列的缓存之和。进一步的,如果上述第二端口启用了基于优先级的流量控制,则第一端口的出口队列为优先级与数据报文的优先级相匹配的出口队列。在上述实施方式的基础上,执行模块502可以通过如下单元中的人一个单元判断第一端口的出口队列中堆积的数据报文是否达到预设的第一水线值第一单元或者第二单元或者第三单元。其中,第一单元用于如果第一水线值为数据报文的总数,判断网络设备的出口队列中堆积的数据报文个数和是否超过总数,如果超过,则网络设备的出口队列中堆积的数据报文达到预设的第一水线值;第二单元用于如果第一水线值为数据报文的大小之和,判断网络设备的出口队列中堆积的数据报文的大小之和是否超过大小之和,如果超过,则网络设备的出口队列中堆积的数据报文达到预设的第一水线值;第三单元用于如果第一水线值为出口队列的缓存占用比例,判断网络设备的出口队列中堆积的数据报文的大小之和与出口队列的缓存之和之间的比例是否超过占用比例,如果超过,则网络设备的出口队列中堆积的数据报文达到预设的第一水线值。在上述实施方式的基础上,该执行模块502还可以用于如果所述数据报文的丢弃优先级高于预设的第一丢弃优先级,且所述第一端口的出口队列中堆积的丢弃优先级高于预设的第一丢弃优先级的数据报文未达到预设的第二水线值,则将所述数据报文放入所述出口队列中,所述出口队列中超出第二水线值限定的缓存大于或等于网络设备中启用了流量控制的端口的入口队列的缓存之和。图6为本发明实施例五提供的网络设备结构示意图,如图6所示,该网络设备中包括如上述装置实施例所述的数据流的处理装置601。需要说明的是,该数据流的处理装置 601可以作为网络设备的硬件组成存在于该设备中,如交换芯片等,也可以作为运行在该网络设备的软件功能模块存在于该网络设备中。最后应说明的是以上各实施例仅用以说明本发明的技术方案,而非对其限制; 尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种数据报文的处理方法,其特征在于,包括网络设备中的第一端口接收第二端口发送的数据报文,所述数据报文的丢弃优先级根据所述第二端口是否开启流量控制配置;如果第一端口的出口队列中堆积的数据报文达到预设的第一水线值,且所述数据报文的丢弃优先级低于预设的第一丢弃优先级,则将所述数据报文放入所述出口队列,所述出口队列中第一水线值限定的缓存小于所述网络设备的所有端口的入口队列的缓存之和。
2.根据权利要求I所述的方法,其特征在于,所述方法还包括判断所述第二端口是否启用了流量控制;如果是,配置所述数据报文的丢弃优先级低于第一丢弃优先级;如果否,配置所述数据报文的丢弃优先级高于或等于第一丢弃优先级。
3.根据权利要求2所述的方法,其特征在于,所述流量控制为基于优先级的流量控制或802. 3x流量控制。
4.根据权利要求3所述的方法,其特征在于,如果所述第二端口启用了基于优先级的流量控制,则所述第一端口的出口队列为优先级与所述数据报文的优先级相匹配的出口队列。
5.根据权利要求I所述的方法,其特征在于,还包括设置所述第一水线值,以使所述出口队列中超出所述第一水线值的缓存大于或等于所述网络设备中启用了流量控制的端口的入口队列的缓存之和。
6.根据权利要求1-4中任一项所述的方法,其特征在于,通过如下方式判断所述第一端口的出口队列中堆积的数据报文是否达到预设的第一水线值如果所述第一水线值为数据报文的总数,判断所述第一端口的出口队列中堆积的数据报文个数和是否超过所述第一水线值,如果超过,则判断所述第一端口的出口队列中堆积的数据报文达到预设的第一水线值;如果所述第一水线值为数据报文的大小之和,判断所述第一端口的出口队列中堆积的数据报文的大小之和是否超过所述第一水线值,如果超过,则判断所述第一端口的出口队列中堆积的数据报文达到预设的第一水线值;如果所述第一水线值为出口队列的缓存占用比例,判断所述第一端口的出口队列中堆积的数据报文的大小之和与所述出口队列的缓存之和之间的比例是否超过所述第一水线值,如果超过,则判断所述第一端口的出口队列中堆积的数据报文达到预设的第一水线值。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述网络设备中的第一端口接收第二端口发送的数据报文之后,所述方法还包括如果所述数据报文的丢弃优先级高于预设的第一丢弃优先级,且所述第一端口的出口队列中堆积的丢弃优先级高于预设的第一丢弃优先级的数据报文未达到预设的第二水线值,则将所述数据报文放入所述出口队列中,所述出口队列中超出第二水线值限定的缓存大于或等于所述网络设备中启用了流量控制的端口的入口队列的缓存之和。
8.一种数据报文的处理装置,其特征在于,包括接收模块,位于网络设备的第一端口,用于接收网络设备的第二端口发送的数据报文, 所述数据报文的丢弃优先级根据所述第二端口是否开启流量控制配置;执行模块,用于如果所述第一端口的出口队列中堆积的数据报文是否达到预设的第一水线值,且所述数据报文的丢弃优先级低于预设的第一丢弃优先级,则将所述数据报文放入所述出口队列,所述出口队列中第一水线值限定的缓存小于所述网络设备的全部端口的入口队列的缓存之和。
9.根据权利要求8所述的装置,其特征在于,还包括配置模块,用于判断所述第二端口是否启用了基于优先级的流量控制或802. 3x流量控制;如果是,则配置所述数据报文的丢弃优先级低于第一丢弃优先级;如果否,则配置所述数据报文的丢弃优先级高于或等于第一丢弃优先级。
10.根据权利要求9所述的装置,其特征在于,还包括设置模块,用于设置所述第一水线值,以使所述出口队列中超出所述第一水线值的缓存大于或等于所述网络设备中启用了基于优先级的流量控制和/或802. 3x流量控制的端口的入口队列的缓存之和。
11.根据权利要求9所述的装置,其特征在于,所述第二端口启用了基于优先级的流量控制,则所述第一端口的出口队列为优先级与所述数据报文的优先级相匹配的出口队列。
12.根据权利要求8-11中任一项所述的装置,其特征在于,所述执行模块通过如下单元中的任一个单元判断所述第一端口的出口队列中堆积的数据报文是否达到预设的第一水线值第一单元,用于如果所述第一水线值为数据报文的总数,判断所述第一端口的出口队列中堆积的数据报文个数和是否超过所述第一水线值,如果超过,则判断所述第一端口的出口队列中堆积的数据报文达到预设的第一水线值;或者,第二单元,用于如果所述第一水线值为数据报文的大小之和,判断所述第一端口的出口队列中堆积的数据报文的大小之和是否超过所述第一水线值,如果超过,则判断所述第一端口的出口队列中堆积的数据报文达到预设的第一水线值;或者,第三单元,用于如果所述第一水线值为出口队列的缓存占用比例,判断所述第一端口的出口队列中堆积的数据报文的大小之和与所述出口队列的缓存之和之间的比例是否超过所述第一水线值,如果超过,则判断所述第一端口的出口队列中堆积的数据报文达到预设的第一水线值。
13.根据权利要求8-11任一项所述的装置,其特征在于,所述执行模块还用于如果所述数据报文的丢弃优先级高于预设的第一丢弃优先级,且所述第一端口的出口队列中堆积的丢弃优先级高于预设的第一丢弃优先级的数据报文未达到预设的第二水线值,则将所述数据报文放入所述出口队列中,所述出口队列中超出第二水线值限定的缓存大于或等于所述网络设备中启用了流量控制的端口的入口队列的缓存之和。
14.一种网络设备,其特征在于,包括如权利要求8-13中任一项所述的数据报文的处理装置。
全文摘要
本发明提供一种数据报文的处理方法、装置及网络设备。方法包括网络设备中的第一端口接收第二端口发送的数据报文,所述数据报文的丢弃优先级根据所述第二端口是否开启流量控制配置;如果第一端口的出口队列中堆积的数据报文达到预设的第一水线值,且所述数据报文的丢弃优先级低于预设的第一丢弃优先级,则将所述数据报文放入所述出口队列,所述出口队列中第一水线值限定的缓存小于所述网络设备的所有端口的入口队列的缓存之和。装置包括接收模块和执行模块。网络设备包括上述装置。本发明提供的方案有效保障了在同时具有开启和未开启流量控制端口的设备上有效保障开启流量控制的端口不丢包。
文档编号H04L12/56GK102594669SQ20121002527
公开日2012年7月18日 申请日期2012年2月6日 优先权日2012年2月6日
发明者黄志彬 申请人:福建星网锐捷网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1