一种IP报文的转发方法、设备和系统与流程

文档序号:14305104阅读:294来源:国知局
一种IP报文的转发方法、设备和系统与流程

本发明涉及计算机技术领域,尤其涉及一种ip报文的转发方法、设备和系统。



背景技术:

数据中心桥接(datacenterbridge,dcb)技术是保证以太网络不丢包的一种增强技术,现有数据中心普遍依赖dcb技术实现不丢包,dcb技术存在规模受限、头端阻塞的问题

如图1所示,在传统的dcb技术中,如果交换机a和交换机b开启了dcb功能,则交换机a检测自身和交换机b之间的链路端口的接收队列是否存在可用空间,这里的链路端口指的是本地交换机的入端口,即图1中交换机a的η端口,如果交换机a和交换机b之间的链路端口的接收队列存在可用空间,交换机a就发送带外信令告知交换机b可以发送报文或者准确地告知交换机b可以发送的报文配额。

如果交换机a上γ端口的发送队列已满但是δ端口的发送队列空闲,交换机a连接交换机b的本地端口即η端口存在既有指向γ端口的报文也有指向δ端口的报文,其中指向γ端口的报文因为γ端口发送队列已满没法转发导致后面指向γ或指向δ端口的报文都被阻塞,出现头端阻塞问题。此时,交换机a就会按照dcb的规范触发一个停止(pause)帧给上游的交换机b的α端口,导致交换机b的α端口无论是经由下游交换机a的γ端口转发还是经由下一交换机的δ端口转发的报文都无法从交换机b转发出去,出现事实上的连带阻塞问题,而此时交换机a的δ端口的发送队列空闲,从效果上来看就是交换机a的γ端口发送队列满使得δ端口也因为阻塞而没有报文,看起来δ端口也像被阻塞一样。

由此可知,现有的基于dcb技术的报文转发存在头端阻塞和连带阻塞的问题,从而影响报文的转发速率。



技术实现要素:

本发明实施例提供一种ip报文的转发方法、设备和系统,以解决现有的基于dcb技术的报文转发存在头端阻塞和连带阻塞的问题。

本发明实施例提供的具体技术方案如下:

第一方面,本发明实施例提供一种ip报文的转发方法,包括:

第一网络设备接收第二网络设备发送的指示信息,所述指示信息中包括所述第二网络设备的出端口针对所述第一网络设备的队列额度;

所述第一网络设备针对接收到的ip报文,确定所述队列额度满足预设条件时,向所述第二网络设备转发接收到的ip报文;

其中,所述第二网络设备为所述第一网络设备的下游设备。

这样,既能实现ip报文的无丢包转发,解决传统dcb技术依赖以太帧格式的报文转发导致无法穿越ip网络转发报文,难以支持大规模数据中心组网环境,还能解决报文转发的头端阻塞和连带阻塞的问题,提升报文转发速率。

结合第一方面,一种可能的设计中,所述方法还包括:

所述第一网络设备接收第二网络设备发送的指示信息之前,向所述第二网络设备发送用于竞争所述第二网络设备的出端口的可用队列资源的资源竞争请求,所述资源竞争请求中包括针对所述第二网络设备的出端口的队列资源请求量。

这种设计中,第二网络设备基于接收到的资源竞争请求为上游网络设备分配出端口的队列额度,从而满足上游网络设备的不同业务要求,提升报文转发的速率,提升链路利用率。

结合第一方面,一种可能的设计中,所述第一网络设备针对接收到的ip报文,确定所述队列额度满足预设条件时,向所述第二网络设备转发接收到的ip报文,包括:

所述第一网络设备针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量;

所述第一网络设备在所述ip报文在第一出端口的队列资源请求量不大于所述第一端口的队列额度时,将所述ip报文通过所述第一端口转发至所述第二网络设备的下游设备;

其中,所述第一出端口为所述第二网络设备的任意一个出端口。

这种设计中,在第二网络设备的出端口的队列额度小于针对第一网络设备该出端口的资源请求量时,在第一网络设备本地缓存待转发的ip报文,避免出现待转发的报文数量过多,造成报文阻塞的问题。

结合第一方面,一种可能的设计中,所述方法还包括:

所述第一网络设备在所述ip报文在第一出端口的队列资源请求量大于所述第一端口的队列额度时,将所述ip报文缓存在所述第一网络设备;

所述第一网络设备周期性检测所述第一端口的队列额度,在检测到所述第一出端口的队列额度大于所述ip报文在第一出端口的队列资源请求量时,将缓存的所述ip报文通过所述第一出端口转发至所述第二网络设备的下游设备。

这种设计中,在第一网络设备接收到ip报文时,在第一网络设备本地缓存待转发的ip报文,确定第二网络设备的出端口的队列额度大于针对第一网络设备该出端口的资源请求量时,通过该出端口转发ip报文,避免出现待转发的报文数量过多,造成报文阻塞的问题。

结合第一方面,一种可能的设计中,所述方法还包括:

所述第一网络设备针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量之后,将所述ip报文缓存在所述第二网络设备本地。

第二方面,本发明实施例提供一种ip报文的转发方法,包括:

第二网络设备基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度;

所述第二网络设备向每个第一网络设备发送指示信息,所述指示信息中包括所述第二网络设备的出端口的队列额度;

其中,所述第一网络设备为所述第二网络设备的上游设备。

由于在下游网络设备的每个出端口都有队列,且针对没给出端口的队列都有队列额度,在下游网络设备的入端口无需维护队列和资源配额控制,从而使得第二网络设备的上游网络设备在报文转发时,避免出现头端阻塞和连带阻塞的问题,提升报文转发速率,提升链路利用率。

结合第二方面,一种可能的设计中,所述第二网络设备基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度之前,所述方法还包括:

所述第二网络设备接收第一网络设备发送的用于竞争所述第二网络设备的出端口的可用队列资源的资源竞争请求,所述资源竞争请求中包括针对所述第二网络设备的出端口的队列资源请求量。

结合第二方面,一种可能的设计中,所述第二网络设备基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度,包括:

所述第二网路设备针对任意一个第一网络设备,计算所述第一网络设备在第一出端口的队列资源请求量与第一出端口的队列资源请求总量的比例值;

将所述第一出端口的可用队列资源总量乘以所述比例值,得到所述第一网络设备在所述第一出端口的队列额度;

其中,所述第一出端口为所述第二网络设备的任意一个出端口。

第三方面,本发明实施例提供一种第一网络设备,包括:

接收单元,用于接收第二网络设备发送的指示信息,所述指示信息中包括所述第二网络设备的出端口针对所述第一网络设备的队列额度;

处理单元,用于针对接收到的ip报文,确定所述队列额度满足预设条件;

发送单元,用于在所述队列额度满足预设条件时,向所述第二网络设备转发接收到的ip报文;

其中,所述第二网络设备为所述第一网络设备的下游设备。

结合第三方面,一种可能的设计中,所述发送单元还用于:

在所述接收单元接收第二网络设备发送的指示信息之前,向所述第二网络设备发送用于竞争所述第二网络设备的出端口的可用队列资源的资源竞争请求,所述资源竞争请求中包括针对所述第二网络设备的出端口的队列资源请求量。

结合第三方面,一种可能的设计中,所述第一网络设备针对接收到的ip报文,确定所述队列额度满足预设条件时,向所述第二网络设备转发接收到的ip报文,包括:

所述第一网络设备针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量;

所述第一网络设备在所述ip报文在第一出端口的队列资源请求量不大于所述第一端口的队列额度时,将所述ip报文通过所述第一端口转发至所述第二网络设备的下游设备;

其中,所述第一出端口为所述第二网络设备的任意一个出端口。

结合第三方面,一种可能的设计中,所述处理单元还用于,在所述ip报文在第一出端口的队列资源请求量大于所述第一端口的队列额度时,将所述ip报文缓存在所述第一网络设备;

周期性检测所述第一端口的队列额度,在检测到所述第一出端口的队列额度大于所述ip报文在第一出端口的队列资源请求量时,将缓存的所述ip报文通过所述第一出端口转发至所述第二网络设备的下游设备;

结合第三方面,一种可能的设计中,所述处理单元还用于:

针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量之后,将所述ip报文缓存在所述第二网络设备本地。

第四方面,本发明实施例提供一种第二网络设备,包括:

处理单元,用于基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度;

发送单元,用于向每个第一网络设备发送指示信息,所述指示信息中包括所述第二网络设备的出端口的队列额度;

其中,所述第一网络设备为所述第二网络设备的上游设备。

结合第四方面,一种可能的设计中,所述设备还包括:

接收单元,用于接收第一网络设备发送的用于竞争所述第二网络设备的出端口的可用队列资源的资源竞争请求,所述资源竞争请求中包括针对所述第二网络设备的出端口的队列资源请求量。

结合第四方面,一种可能的设计中,所述处理单元在基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度时,具体用于:

针对任意一个第一网络设备,计算所述第一网络设备在第一出端口的队列资源请求量与第一出端口的队列资源请求总量的比例值;

将所述第一出端口的可用队列资源总量乘以所述比例值,得到所述第一网络设备在所述第一出端口的队列额度;

其中,所述第一出端口为所述第二网络设备的任意一个出端口。

第五方面,本发明实施例提供一种设备,该设备包括处理器、存储器、发射器和接收器,其中,所述存储器中存有计算机可读程序,所述处理器通过运行所述存储器中的程序,控制所述发射器和接收器,实现第一方面涉及的ip报文的转发方法。

第六方面,本发明实施例提供一种设备,该设备包括处理器、存储器、收发器,其中,所述存储器中存有计算机可读程序,所述处理器通过运行所述存储器中的程序,控制所述收发器,实现第二方面涉及的ip报文的转发方法。

第七方面,本发明实施例提供一种计算机存储介质,用于储存为上述第一方面、第二方面所述的第一网络设备所用的计算机软件指令,其包含用于执行上述由控制实现的方法所设计的程序。

第九方面,本发明实施例提供一种计算机存储介质,用于储存为上述第一方面、第二方面所述的第二网络设备所用的计算机软件指令,其包含用于执行上述由sff实现的方法所设计的程序。

第十方面,提供一种ip报文的转发系统,该系统包括第一设备和第二设备,其中,所述第一设备为第三方面涉及的装置或第五方面涉及的设备,所述第二设备为第四方面涉及的装置或第六方面涉及的设备。

附图说明

图1为基于dcb技术的报文转发示意图;

图2为本发明实施例的应用场景示意图;

图3为本发明实施例提供的ip报文的转发方法流程图;

图4a、图4b为本发明实施例一中的报文转发示意图;

图5为本发明实施例二中的报文转发示意图;

图6为采用源路由模式下一跳的出端口队列标记方法示例图;

图7为出端口队列结构示例图;

图8a为一种确定本地出端口和下一跳出端口示例图;

图8b为另一种确定本地出端口和下一跳出端口示例图;

图9a为配额信息通过带外专用信令进行报文携带的格式示例图;

图9b为配额信息通过带内数据报文携带的报文格式示意图;

图9c为配额信息通过带内数据报文携带的过程示意图;

图9d和图9e为配额信息通过带内数据报文携带的报文示意图;

图10为本发明实施例提供的一种ip报文的转发装置结构图;

图11为本发明实施例提供的一种ip报文的转发设备结构图;

图12为本发明实施例提供的一种ip报文的转发装置结构图;

图13为本发明实施例提供的一种ip报文的转发设备结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

由于现有的基于dcb技术的报文转发依赖以太帧格式,导致无法穿越ip网络转发ip报文,从而难以支持大规模的数据中心组网环境,而且基于dcb技术的报文转发存在头端阻塞和连带阻塞的问题,从而影响报文的转发速率和链路资源利用率。因此,本发明实施例提供一种ip报文的转发方法、设备和系统,以解决现有的基于dcb技术的报文转发存在头端阻塞和连带阻塞的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

图2所示,为本发明实施例的应用场景示意图。如图1所示,第二网络设备为第一网络设备的下游设备,其中:

第二网络设备,用于基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度;向每个第一网络设备发送指示信息,所述指示信息中包括所述第二网络设备的出端口的队列额度;其中,所述第一网络设备为所述第二网络设备的上游设备。

第一网络设备,用于接收第二网络设备发送的指示信息,所述指示信息中包括所述第一网络设备针对所述第二网络设备的出端口的队列额度;基于所述指示信息对接收到的ip报文进行转发。

本发明实施例中的第一网络设备与第二网络设备之间通信时通过第一网络设备的出端口接收或发送信息。

基于图2所示的应用场景示意图,如图3所示,本发明实施例提供一种ip报文的转发方法,具体流程包括如下步骤:

步骤31:第二网络设备基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度。

步骤32:第二网络设备向每个第一网络设备发送指示信息,所述指示信息中包括所述第二网络设备的出端口针对所述第一网络设备的队列额度;

可选的,在步骤32执行之前,可选的,所述第一网络设备向所述第二网络设备发送用于竞争所述第二网络设备的出端口的可用队列资源的资源竞争请求,所述资源竞争请求中包括针对所述第二网络设备的出端口的队列资源请求量。

这样,第二网络设备基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度时,可以通过以下方式实现:

所述第二网路设备针对任意一个第一网络设备,计算所述第一网络设备在第一出端口的队列资源请求量与第一出端口的队列资源请求总量的比例值;将所述第一出端口的可用队列资源总量乘以所述比例值,得到所述第一网络设备在所述第一出端口的队列额度;其中,所述第一出端口为所述第二网络设备的任意一个出端口。

可选的,第二网络设备基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度时,也可以基于公平的分配原则,针对任意一个出端口为每个第一网络设备分配相同的队列额度,即将第二网络设备的任意一个出端口的可用队列资源总量除以第一网络设备的数量,得到该任意一个出端口的的队列额度。也可以基于其他的资源分配规则,比如按照请求进行先来先服务、最大匹配或最小匹配的规则等。

步骤33:第一网络设备接收到第二网络设备发送的指示信息后,基于所述指示信息对接收到的ip报文进行转发。

具体的,所述第一网络设备基于所述指示信息对接收到的ip报文进行转发,包括以下两种可能的实施方式:

一种可能的实施方式中,所述第一网络设备针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量;在所述ip报文在第一出端口的队列资源请求量不大于所述第一端口的队列额度时,将所述第一端口对应的ip报文通过所述第一端口转发至所述第二网络设备的下游设备;在所述ip报文在第一出端口的队列资源请求量大于所述第一端口的队列额度时,将所述第一端口对应的ip报文缓存在所述第一网络设备;并周期性检测所述第一端口的队列额度,在检测到所述第一出端口的队列额度大于所述ip报文在第一出端口的队列资源请求量时,将所述第一出端口对应的ip报文通过所述第一出端口转发至所述第二网络设备的下游设备;其中,所述第一出端口为所述第二网络设备的任意一个出端口。

另一种可能的实施方式中,所述第一网络设备针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量,将所述ip报文缓存在所述第二网络设备本地;在所述ip报文在第一出端口的队列资源请求量不大于所述第一端口的队列额度时,将所述第一端口对应的ip报文通过所述第一端口转发至所述第二网络设备的下游设备;否则,继续缓存在所述第二网络设备本地。

下面通过两个具体的例子来详细说明图2所示的ip报文的转发方法,

实施例一

如图4a所示,上游网络设备为交换机b和交换机c,交换机b和交换机c的下游网络设备为交换机a,如图4a中的交换机b和交换机c,先在各自的出端口α和β向下游的交换机a发送资源竞争请求,请求交换机a的出端口队列资源。在图4a的示例中,交换机b的出端口α向下游交换机a请求下游交换机a的出端口资源请求量,包括从α到γ的300k字节的数据量和从α到δ的100k字节的数据量,与此同时,交换机c从自己与交换机a连接的出端口β向下游交换机a请求下游交换机a的出端口资源请求量,包括从β到γ的100k字节的数据量。

此时交换机a上的各个出端口出端口的队列资源情况如下:端口γ的出方向队列可用队列资源总量是320k字节,就是说端口γ还可以在现在的基础上再容纳320k字节的数据量到端口γ的出队列中去;端口δ的出方向队列可用队列资源总量200k字节,就是说端口δ还可以在现在的基础上再容纳200,000字节的数据量到端口δ的出队列中去。

如图4b所示,这种模式下,交换机a在收到上游交换机的资源竞争请求后,通过带外信令或带内指令给上游交换机b和c分配本地出端口的队列额度或配额(称为credit或称为quota),也可以用许可(permission)额度或配额来表征。如图4b中示例,交换机a给上游交换机b分配的交换机a上的出端口的队列额度指示包括:从交换机b的α端口到交换机a上的γ端口且位于γ端口的240k字节队列资源配额、从交换机b的α端口到交换机a上的δ端口且位于δ端口的100k字节队列资源配额,交换机b得到这个交换机a上的出端口的队列额度后,就在给定的端口往给定的方向发送不超过给定的配额指定的字节数目,在这个示例中,交换机b得到交换机a给定的配额指示后,就从α往γ发送不多于240k字节的数据、从α往δ发送不多于100k字节的数据,直至交换机b从交换机a得到更新的配额分配信息。

在上面的例子中,如果报文到达交换机b,在交换机b上通过查表发现出端口是交换机b上的α端口且对应下一跳交换机a上的γ端口,此时交换机b会对比待转发的报文字节数与经交换机a给予的自交换机b的α端口到下游网络设备交换机a的γ端口的队列额度,如果待发送的报文字节数少于或等于该配额,就发送该报文;如果待发送的报文字节数多于该配额就在本地交换机上b缓存该报文,直至发现自本地交换机b的α端口到交换机a的γ端口有足够的发送配额时,发送该报文。

可选的,如果待发送的报文字节数多于交换机b的α端口到交换机a的γ端口的队列额度时,还有另外一个实现方法,就是在报文到达交换机b时,交换机b上通过查表发现出端口是交换机b上的α端口且对应下一跳交换机a上的γ端口,此时交换机b先不检查下游交换机a给予的该方向(自本地α端口到下游设备γ端口)的发送配额,而是先把该报文缓存到交换机b上的α端口的出队列中,准确地说是交换机b上α端口队列中α端口指向γ端口的方向的队列中,然后,交换机b查询α端口指向γ端口的方向的队列,如果该队列对应的发送配额足以发送该队列头的第一个报文,就发送该报文然后更新队列的发送配额,比如队列头中第一个报文是1000字节,发送之前的配额是3000字节,那么发送之后的配额就是2000字节,就是说要把发送之前的配额减去发送出去的报文长度。

对于上游网络设备而言,实施例一描述的是一种主动的资源分配请求和应答控制机制,对于上游网络设备而言,下游网络设备的配额分配还有一种被动的方式,具体可参阅实施例二所示。

实施例二

在被动模式下,下游网络设备主动向上游网络设备指定各个出端口的队列额度的分配,如图5所示,下游交换机a无需上游交换机b和交换机c的资源竞争请求,自己主动向上游交换机指定各个出端口的队列额度的分配。在这个示例中,交换机a给交换机b分配的交换机a上的各出端口的队列资源包括:从交换机b的α端口到交换机a上的γ端口且位于γ端口的240k字节队列资源配额、从交换机b的α端口到交换机a上的δ端口且位于δ端口的100k字节队列资源配额,交换机b得到这个出端口的队列额度后,就在给定的端口往给定的方向发送不超过给定的配额指定的字节数目,在这个示例中,交换机b得到交换机a给定的配额指示后,就从α往γ发送不多于240,000字节的数据、从α往δ发送不多于100,000字节的数据,直至交换机b从交换机a得到更新的配额分配信息。

在上面的示例中,交换机a给上游交换机c分配的交换机a上的端口队列资源:从交换机c的β端口到交换机a上的γ端口且位于γ端口的80k字节队列资源,交换机c得到这个分配的配额(称为credit或称为quota),就在给定的端口往给定的方向发送不超过给定的配额指定的字节数目,在这个示例中,交换机c得到交换机a给定的配额指示后,就从β往γ发送不多于80k字节的数据,直至交换机b从交换机a得到更新的配额分配信息。

实施例二与实施例一的区别只是在于下游交换机a不必等待上游交换机b和交换机c的资源竞争请求,自己主动给上游交换机分配自己的出端口队列额度。这对于上游交换机而言就相当于是被动模式。

上游交换机得到下游交换机主动给予的出端口队列额度后,其他的出端口队列额度的应用处理跟实施例一相同,在此不再赘述。

传统的网络设备只能看到自己下一跳,这个专利的核心特征就是上一跳能看到下一跳的转发出口,这意味着网络设备自己能看到一个报文在下一跳设备的下一跳或至少是朝向下一跳方向的出端口。

为了让当前网络设备能看到下一跳路由决策结果,可以采用如下方法:

第一种方法是采用源路由的方法,就是源端预先完成整个或部分路径的路由决策,并把路由决策结果通过带外信令告知沿途网络设备或者数据报文自身带内携带,这样沿途的网络设备在收到对应的报文的时候不仅知道该报文的下一跳信息、还能知道针对该报文下一跳的下一跳信息。这种情况下,可以用下一跳标识来标记队列,更精确一点,是利用本地的下一跳的下一跳来标识本地的下一跳的出端口。

现有技术中存在成熟的源路由技术,如ip-in-ip或mpls标签栈技术,在此不再赘述

图6为采用源路由模式下一跳的出端口队列标记方法示例图。如图6所示,一个报文采用源路由的方法从交换机c进入网络、经过交换机a到达交换机b然后出网络到达目的端。无论是采用ip-in-ip还是mpls标签栈技术,报文在自身都携带了路径沿途节点信息,以ip-in-ip为例,该报文在报文头携带了沿途节点的标识并且以序列的形式携带,在这个例子中就是”c、a、b”,这样交换机c就知道这个报文的下一跳是a、下一跳的下一跳是b,于是交换机c就可以用报文自身携带的下一跳的下一跳信息即b来标记下一跳的出端口,也用该信息来标识这个报文在本地的队列信息。

因此,如果能标记下一跳的出端口队列,那么在本地设备进行转发决策该报文的出端口后或同时,就可以决策该报文的下一跳出端口对应的队列。网络设备本地队列除了按照不同出端口分别组织外,对于任意出端口队列,其实都是由一系列对应的下一跳出端口标记的子队列组成。图7为出端口队列结构示例图,图7中交换机出端口β对应一个出端口队列β,该队列其实对应下一跳网络设备的多个出端口如γ和δ等,这里可以包括下一跳的入端口。在上面图6的例子中,报文自身携带源路由路径标识“c、a、b”,交换机c收到该报文后,经过转发决策,知道下一跳是a、再下一跳是b,那么对应的本地出端口是β,自己本地对应的下一跳(即a)的出端口就是下一跳(即a)的下一跳(即b)对应在自己的下一跳(即a)的本地端口γ,这样就知道该报文对应的是本地出端口β下的子队列γ,因为不是真实的γ端口和队列,所以称为虚拟的γ队列,然后这个报文就会被放到这个队列中,等待转发。如果采用源路由方法,就采用c来标记虚拟的γ队列。

第二种方法是采用改进的路由方法来实现,这种方法假设任意网络设备都知道本网络内其他网络设备的地址和端口的连接关系,这个假设是可以通过现有的开放式最短路径优先(openshortestpathfirst,ospf)技术实现。

具体的,可以通过以下两种途径实现:

一种途径就是网络设备计算路由表的时候不再仅仅计算本地出端口,同时还多计算议程下一跳的出端口,然后把对应的路由条目信息,包括地址前缀、下一跳和出端口,以及下一跳的出端口信息一起形成转发表条目从计算路由的主控处理器安装到转发芯片的表项中去。这个方法与传统的路由系统不同的是多了一个下一跳出端口信息。这样当报文在本地路由查表的时候,不光可以找到该报文目的地址最长匹配的下一跳信息和本地出端口信息,还能找到下一跳出端口信息,从而可以把该报文放到对应的出端口的子队列里面去。

图8a所示为,一次路由确定本地出端口和下一跳出端口示例图。图8a中,每个转发表的表项条目除了包括传统的前缀(prefix)、下一跳(next-hop)和本地出端口(localoutputport)信息,还包括下一跳的出端口信息(next-hop’soutputport)。这样一个报文只需要查一次转发表就可以确定下一跳、本地出端口和下一跳出端口信息。在上面这个例子中,如果报文的目的地址与200.10.0.0/16的前缀是最长匹配的,则这个报文的下一跳就是a、本地出端口是β、下一跳的出端口是γ,那边就可以把这个报文放到本地出端口β下指向下一跳出端口γ的子队列中去。需要说明的是,这种途径需要修改转发表结构。

另一种途径是不修改转发表结构,但是需要进行两次路由查表,就是网络设备计算路由表的时候不再仅仅计算和安装本地路由表,还计算和安装下一跳的路由表。

图8b所示为,另一种一次路由确定本地出端口和下一跳出端口示例图。从图8b中,可以看到交换机c不仅有自己的转发表,还有自己的下一跳a的转发表,其中自己的下一跳(即交换机a)的转发表跟交换机a上的转发表一致。其实交换机a或其他的交换机也有其他下一跳设备的转发表,这里不再赘述。这样,一个目的ip地址对应前缀为200.10.0.0/16的报文到达交换机c后,先进行本地路由转发决策,确定下一跳是a、出端口是β,然后在本地查询下一跳a的转发表进行二次路由决策,确定下一跳的出端口是γ,然后就把这个报文放到交换机c的端口β下虚拟γ的出队列中去,等待得到足够的配额后把该报文发给下一跳设备a。

具体的,下游设备向上游设备发送携带队列额度的指示信息时,可以通过如下两种方法:

第一种方法:采用专门的信令进行通告,这与现有的ieeedcb技术相同,就是带外模式,可以直接参考ieeedcb规范,不同的是ieeedcb采用不同优先级对应不同额度的方式,而本发明实施例中采用不同出端口对应不同额度的方式,同时为了兼容ieeedcb技术,可以在不同的出端口下区分不同的优先级。

下面的例子就是采用类似ieeedcb信令的带外格式,如图9a所示为配额信息通过带外专用信令进行报文携带的格式示例图。

从图9a的示例可以看到,最左边是一个mac控制(maccontrol)信令的典型结构,第一个字段是目的媒介访问控制(mediaaccesscontrol,mac)地址,第二个字段是源mac地址,第三个字段是以太帧类型,第四个字段是maccontrol信令的操作分类信息,后面是信令的参数和填充(填充是为了满足以太帧最小长度的要求而填充0,最后就是这个以太帧的循环冗余校验(cyclicredundancycheck,crc)校验字段。

从图9a的示例可以看到,第二个是ieee802.3x规范定义的暂停(pause)帧,这个帧的含义是告诉接收端停止在接收这个帧的端口上发送数据。第一个字段是针对带外控制信令的特定目的mac地址,就是01:80:c2:00:00:01,这个地址说明这个帧是用于带外控制信令的;第二个字段是发送方源mac地址;第三个字段是帧类型,这里是0x8808,说明它是ieee定义的慢速协议(slowprotocol);操作分类字段数值是0x0001,说明它是一个pause帧。参数区只有一个字段,就是time,用以指定pause持续时间,后面就是填充和crc字段。

从图9a的示例可以看到,第三个就是ieeedcb下的基于优先级的流控(priority-basedflowcontrol,pfc)规范的报文格式,pfc规范可以参考ieee802.1qbb,这个帧的含义是告诉接收端停止在接收这个帧的端口上发送特定类型的数据。第一个字段是针对带外控制信令的特定目的mac地址,就是01:80:c2:00:00:01,这个地址说明这个帧是用于带外控制信令的;第二个字段是发送方源mac地址;第三个字段是帧类型,这里是0x8808,说明它是ieee定义的slowprotocol;操作分类字段数值是0x0101,说明它是一个pfc帧。参数域的第一个字段是一个分类流控使能控制矢量,一共8个比特,每个比特说明对应的分类(class)所在的流控信息(pause),如果该比特数值为1就说明要对该类型进行流控且流控持续时间在随后的字段中标识,如果该比特的数值为0就说明无需对该类型流量进行流控。这里的分类,通常对应业务类型如ieee802.1p所规范的cos(classofservice)字段所描述的分类。后面的8个字段按照矢量描述的类别顺序分别对应分类的流控信息,其中时间是说明pause的持续时间,如果时间值为0则意味着对该类型流量不流控即unpause或者说resume。再后面就是填充和crc字段了。典型的pfc实现中,下游就是数据的接收方法也是pause(pfc)帧的发起方,并不给出非常明确的数值说明上游应该停止多久发送特定类型的数据,而是监控端口接收队列,如果端口的接收队列超过阈值,就产生一个pfc帧给上游直接pause对应业务分类的流量发送,直至端口的接收队列低于设定的阈值,就产生一个resume帧给上游继续对应业务的流量发送。

与pfc策略不同,本发明中不是用类型来标记和区分不同的收发配额的,而是用下游设备的端口来标记和区分不同的收发配额的。在上面的例子中,第四个就是重用ieee的帧格式以携带本专利要求传递的配额信息的示例。这个帧的含义是告诉接收端停止在接收这个帧的端口上发送通向下游特定出端口的数据。第一个字段是针对带外控制信令的特定目的mac地址,就是01:80:c2:00:00:01,这个地址说明这个帧是用于带外控制信令的;第二个字段是发送方源mac地址;第三个字段是帧类型,这里是0x8808,说明它是ieee定义的slowprotocol;操作分类字段数值是0x0102,说明它承载这个专利所描述的基于下游出端口的收发配额信息。参数域的第一个字段是端口矢量(portvector)字段,说明该信令帧发送方即下游设备的出端口信息列表,包括出端口标识、出端口是否参与配额使能等信息。这里所谓的“使能”就是该出端口是否对上游开启流控功能。后面的字段按照矢量描述的端口顺序分别对应端口的流控信息,其中配额是说明pause的持续时间,配额为0说明resume。再后面就是填充和crc字段了。当然,也可以在每个端口的配额下再进一步细分不同的类型以对应不同的业务类型,从而在本发明的基础上实现不同业务类型的差分处理的支持。

第二种方法就是通过数据报文携带,就是带内模式,也称为piggyback模式,如图9b所示为队列配额信息通过带内数据报文携带的报文格式示意图,图9b中,左边是传统的数据报文格式,右边是在数据报文中队列配额信息的后的报文格式,其中solicited是指实施例一中主动模式下包括配额请求信息和分配的配额信息,其中unsolicited是指实施例二中被动模式下包括指定的配额信息。

网络设备可以在任何一个待发送的报文上插入配额信息,向所在链路接收报文的反方向(即上游方向),实际上就是所在链路发送报文的下游方向,发送本地的接收分配的配额信息或者接收指定的配额信息;或者向所在链路发送报文的下游方向,发送请求报文被接收配额的信息。所有这些下游设备报文接收配额的请求或者分配、指定信息就是局限在相邻设备之间的,下游设备对自己的下游会覆盖来自上游的报文上的这些信息。

图9c所示为配额信息通过带内数据报文携带的过程示意图,从图9c中,可以看到每个网络设备自己在出方向报文上插入或写入自己的、针对下游设备接收报文的相关配额信息,也会在本地处理上游的配额请求信息之后、擦除或忽略或覆盖来自上游报文上的这些配额请求的相关信息。

下面的例子就是采用特定报文头在带内携带配额信息,如图9d所示为配额信息通过带内数据报文piggyback携带的报文格式示例。

图9d是用ipv6为例,说明如何在ipv6头中携带配额信息。ipv6有自己对应的报文格式和规范rfc2460(https://tools.ietf.org/html/rfc2460)。在上面图9d的例子中,配额信息是通过新定义的报文头来携带的,具体的位置是放在ipv6的扩展头中。

进一步的,配额信息是通过如图9e的示例格式承载。在图9e的示例中,配额条目包括端口标识和对应的配额信息,这里的配额信息可以是像pause帧和pfc帧那样采用pause持续时间来定义,也可以是允许报文发送的字节数目或发送时间来定义,就像技术方案中的实施例中所说明的那样。配额信息可以是包括一个或多个这样的配额条目,每个可以是独立对应于一个端口;配额信息的组织还可以是跟pause帧或pfc帧那样,采用一个端口矢量说明端口的顺序,然后在后续按照端口出现在矢量中的位置,依次说明各自的配额而不必在紧邻配额的地方再说对应的端口标识。

这里是采用ipv6为例来说明,实际上在其他的协议应用场景,可以通过扩展其他的协议来携带该信息,只要携带出端口及对应的配额信息就可以,这里不再赘述。

基于上述实施例,如图10所示,基于上述实施例提供的ip报文的转发方法,本发明实施例提供一种第一网络设备1000,所述第一网络设备1000用于执行上述方法实施例中的第一网络设备或上游网络设备的执行过程,如图10所示,该第一网络设备1000包括接收单元1001、处理单元1002、发送单元1003,其中:

接收单元1001,用于接收第二网络设备发送的指示信息,所述指示信息中包括所述第二网络设备的出端口针对所述第一网络设备的队列额度;

处理单元1002,用于针对接收到的ip报文,确定所述队列额度满足预设条件;

发送单元1003,用于在所述队列额度满足预设条件时,向所述第二网络设备转发接收到的ip报文;

其中,所述第二网络设备为所述第一网络设备的下游设备。

可选的,所述发送单元1003还用于:

在所述接收单元1001接收第二网络设备发送的指示信息之前,向所述第二网络设备发送用于竞争所述第二网络设备的出端口的可用队列资源的资源竞争请求,所述资源竞争请求中包括针对所述第二网络设备的出端口的队列资源请求量。

可选的,所述第一网络设备针对接收到的ip报文,确定所述队列额度满足预设条件时,向所述第二网络设备转发接收到的ip报文,包括:

所述第一网络设备针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量;

所述第一网络设备在所述ip报文在第一出端口的队列资源请求量不大于所述第一端口的队列额度时,将所述ip报文通过所述第一端口转发至所述第二网络设备的下游设备;

其中,所述第一出端口为所述第二网络设备的任意一个出端口。

可选的,所述处理单元1002还用于,在所述ip报文在第一出端口的队列资源请求量大于所述第一端口的队列额度时,将所述ip报文缓存在所述第一网络设备;

周期性检测所述第一端口的队列额度,在检测到所述第一出端口的队列额度大于所述ip报文在第一出端口的队列资源请求量时,将缓存的所述ip报文通过所述第一出端口转发至所述第二网络设备的下游设备;

可选的,所述处理单元1002还用于:

针对接收到的ip报文,获取所述ip报文在所述第二网络设备的出端口的队列资源请求量之后,将所述ip报文缓存在所述第二网络设备本地。

需要说明的是,本发明实施例中的第一网络设备1000的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

基于同一发明构思,本发明实施例还提供一种交换机设备1100,所述交换机设备1100用于执行上述方法实施例中的第一网络设备或上游网络设备的执行过程,如图11所示,该交换机设备1100包括处理器1101、存储器1102、发射器1103和接收器1104,执行本发明方案的程序代码保存在存储器1102中,用于指令处理器1101与发射器1103或接收器1104配合执行图3所示的ip报文的转发方法中第一网络设备的执行过程。

本发明还可以通过对处理器进行设计编程,将图3所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图3所示的方法。

基于上述实施例,如图12所示,基于上述实施例提供的ip报文的转发方法,本发明实施例提供一种第二网络设备1200,所述第二网络设备1200用于执行上述方法实施例中的第二网络设备或下游网络设备的执行过程,如图12所示,该第二网络设备1200包括处理单元1201和发送单元1202,其中:

处理单元1201,用于基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度;

发送单元1202,用于向每个第一网络设备发送指示信息,所述指示信息中包括所述第二网络设备的出端口的队列额度;

其中,所述第一网络设备为所述第二网络设备的上游设备。

可选的,所述第二网络设备1200还包括:

接收单元1203,用于接收第一网络设备发送的用于竞争所述第二网络设备的出端口的可用队列资源的资源竞争请求,所述资源竞争请求中包括针对所述第二网络设备的出端口的队列资源请求量。

可选的,所述处理单元1201在基于第二网络设备的出端口的可用队列资源总量,为每个第一网络设备分配所述出端口的队列额度时,具体用于:

针对任意一个第一网络设备,计算所述第一网络设备在第一出端口的队列资源请求量与第一出端口的队列资源请求总量的比例值;

将所述第一出端口的可用队列资源总量乘以所述比例值,得到所述第一网络设备在所述第一出端口的队列额度;

其中,所述第一出端口为所述第二网络设备的任意一个出端口。

需要说明的是,本发明实施例中的第二网络设备1200的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

应理解以上第一网络设备1000和第二网络设备1200中的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。例如,以上各个单元可以为单独设立的处理元件,也可以集成在控制器的某一个芯片中实现,此外,也可以以程序代码的形式存储于控制器的存储元件中,由控制器的某一个处理元件调用并执行以上各个单元的功能。此外各个单元可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。该处理元件可以是通用处理器,例如中央处理器(英文:centralprocessingunit,简称:cpu),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(英文:application-specificintegratedcircuit,简称:asic),或,一个或多个微处理器(英文:digitalsignalprocessor,简称:dsp),或,一个或者多个现场可编程门阵列(英文:field-programmablegatearray,简称:fpga)等。

基于同一发明构思,本发明实施例还提供一种交换机设备1300,所述交换机设备1300用于执行上述方法实施例中的第二网络设备或下游网络设备的执行过程,如图13所示,该交换机设备1300包括处理器1301、存储器1302、接收器1303和发射器1304,执行本发明方案的程序代码保存在存储器1302中,用于指令处理器1301与所述接收器1303和发射器1304配合执行图3所示的ip报文的转发方法中第二网络设备的执行过程。

本发明还可以通过对处理器进行设计编程,将图3所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图3所示的方法。可以理解的是,本实施例的交换机设备1300可用于实现上述方法实施例中涉及sff的所有功能,其具体实现过程可以参照上述方法实施例第二网络设备或下游网络设备执行方法的相关描述,此处不再赘述。

可以理解的是,本发明实施例上述交换机设备1100和交换机设备1300中涉及的处理器可以是一个cpu,dsp,asic,或一个或多个用于控制本发明方案程序执行的集成电路。计算机系统中包括的一个或多个存储器,可以是只读存储器(英文:read-onlymemory,简称rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(英文:randomaccessmemory,简称:ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器通过总线与处理器相连接;上述接收器和发射器可以通过收发器实现其功能,所述收发器可以是能够实现收发功能的实体模块,以便与其他设备通信。上述存储器可以是ram,保存有执行本发明方案的程序。

这些存储器、发射器和接收器可以通过总线与处理器相连接,或者也可以通过专门的连接线分别与处理器连接。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1