转发报文的方法及相关设备

文档序号:195698 发布日期:2021-11-02 浏览:24次 >En<

阅读说明:本技术 转发报文的方法及相关设备 (Method for forwarding message and related equipment ) 是由 刘芳 于 2020-04-30 设计创作,主要内容包括:本申请公开了一种转发报文的方法及相关设备,属于路由技术领域。在该方法中,第一转发节点可以根据接收到的报文携带的目的地址确定多条路由中各条路由的负载分担权重;然后根据各条路由的负载分担权重从多条路由中选择一条路由转发该报文。由于任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率,因此,在本申请中,转发节点不是盲目地进行等价负载分担,而是基于预先配置的负载分担权重来转发报文。如此便可基于等价负载分担过程转发报文中出现的问题来定制各条路由上的负载分担权重,从而避免等价负载分担转发报文时出现的问题再次发生。(The application discloses a method for forwarding a message and related equipment, and belongs to the technical field of routing. In the method, a first forwarding node can determine the load sharing weight of each route in a plurality of routes according to a destination address carried by a received message; and then selecting one route from a plurality of routes according to the load sharing weight of each route to forward the message. Since the load sharing weight of any one route is used to indicate the probability of forwarding the packet by the corresponding route selected from the multiple routes, in this application, the forwarding node does not blindly perform equivalent load sharing, but forwards the packet based on the pre-configured load sharing weight. Therefore, the load sharing weight on each route can be customized based on the problems in the forwarding message in the equivalent load sharing process, so that the problems in the forwarding message in the equivalent load sharing process are avoided.)

转发报文的方法及相关设备

技术领域

本申请涉及路由技术领域,特别涉及一种转发报文的方法及相关设备。

背景技术

随着路由技术的发展,通信网络中的任一节点可以基于配置的路由转发报文。并且随着网络拓扑的复杂化,任一节点与目的节点之间可能存在不至一条路由,这种场景下,如何对报文进行转发是目前亟需解决的问题。比如,在以太网虚拟私有网络(ethernetvirtual private network,EVPN)中,各个转发节点可以基于边界网关协议(BorderGateway Protocol,BGP)获取到到达各个主机的路由。后续对于任一转发节点,如果该转发节点接收到目的地址为某个主机的媒体接入控制地址(media access control,MAC)地址的报文,则基于预先获取的到达该主机的路由,对该报文进行转发。

相关技术中,在转发节点接收到目的地址为某个主机的MAC地址的报文后,如果预先获取的路由中达到该主机的路由有多个,则按照等价负载分担的方式从这多个路由中选择一个作为目的路由。然后基于目的路由转发该报文。其中,等价负载分担方式是指这多个路由被选择的概率相同。这种发送报文的方式只能实现等价负载分担,容易降低网络中带宽资源的利用率。

发明内容

本申请提供了一种转发报文的方法及相关设备,可以避免等价负载分担方式中出现的问题。技术方案如下:

第一方面,提供了一种转发报文的方法,该方法应用于通信网络中的第一转发节点,该通信网络中包括多个转发节点,第一转发节点为多个转发节点中的任一个。

在该方法中,第一转发节点接收报文,该报文携带目的地址,第一转发节点根据该目的地址确定多条路由,这多条路路由是指从第一转发节点到达目的地址所指示的目的节点的路由,第一转发节点获取这多条路由中各条路由的负载分担权重,第一转发节点根据各条路由的负载分担权重从多条路由中选择一条路由转发该报文。其中,任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率。

由此可知,在本申请中,如果从第一转发节点到达报文携带的目的地址所指示的目的节点的路由有多条,预先针对这多条路由分别配置有负载分担权重,以便于后续基于各条路由的负载分担权重选择一条路由来转发报文。由于任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率,因此,在本申请实施例中,不是盲目地进行等价负载分担,而是基于预先配置的负载分担权重来转发报文。如此便可基于等价负载分担过程转发报文中出现的问题来定制各条路由上的负载分担权重,从而避免等价负载分担转发报文时出现的问题再次发生。

基于第一方面提供的方法,在一种可能的实现方式中,这各条路由的负载分担权重与这各条路由的带宽关联。

在从第一转发节点达到同一目的节点的各条路由的带宽不一致的情况下,第一转发节点在接收到待转发的目标报文时,如果直接采用等价负载分担的方式传输该目标报文,这样最终各条路由分担的流量将一致。如此对于带宽较大的路由,通过等价负载分担的方式将无法充分利于这种类型的路由的带宽,进而导致网络的带宽利用率下降。对于带宽较小的路由,通过等价负载分担的方式将很容易这种类型的路由上的流量发生拥堵,这样在传输报文的过程中很容易发生丢包重传的现象,从而导致报文传输的效率较低。

基于上述等价负载分担方式出现的技术问题,在本申请中,如果从第一转发节点到达目标目的地址所指示的目的节点的路由有多条,预先针对这多条路由分别配置有负载分担权重,各条路由的负载分担权重和各条路由的带宽关联,以实现基于各条路由的带宽进行负载分担,而不是盲目地进行等价负载分担,以提高各条路由中带宽较宽的路由的带宽利用率,也避免了各条路由中带宽较小的路由在传输报文时出现拥堵现象。

基于第一方面提供的方法,在一种可能的实现方式中,各条路由中的任意两条路由之间的负载分担权重的比例与任意两条路由之间的带宽的比例一致。

上述可以直接基于各条路由之间的带宽的比例来配置各条路由之间的负载分担权重之间的比例,如此,可以充分利用通信网络中各条路由上的带宽资源。

基于第一方面提供的方法,在一种可能的实现方式中,任一条路由的带宽为该任一条路由包括的各条链路的带宽的最小值或平均值。

根据各条路由上的最小带宽来进行负载分担,以进一步避免各条路由在传输报文时由于最小带宽的限制而导致出现流量拥堵现象。或者,也可以基于平均带宽来配置负载分担权重,提高了配置负载分担权重的灵活性。

基于第一方面提供的方法,在一种可能的实现方式中,这各条链路的带宽为链路预留带宽或链路剩余带宽,提高了配置负载分担权重的灵活性。

基于第一方面提供的方法,在一种可能的实现方式中,第一转发节点获取这多条路由中各条路由的负载分担权重的实现过程可以为:第一转发节点从本地存储的权重数据中获取各条路由的负载分担权重。

为了提高传输报文的效率,可以预先确定出各条路由的负载分担权重,并将各条路由的负载分担权重存储在本地,以便于在转发报文中可以快速获取到各条路由的负载分担权重。

基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,第一转发节点还可以获取各条路由的带宽,根据各条路由的带宽确定各条路由的负载分担权重,将这各条路由的负载分担权重添加在上述权重数据中。

在一种可能的实现方式中,可以由转发节点自身来基于各条路由的带宽对各条路由的负载分担权重进行配置,预先配置负载分担权重的过程无需控制节点的参与,提高了本申请提供的配置负载分担权重的方式的灵活性。

基于第一方面提供的方法,在一种可能的实现方式中,上述第一转发节点获取各条路由的带宽的实现过程可以为:第一转发节点接收第二转发节点发送的第一路由通告报文。其中,第二转发节点为这各条路由中第一路由上第一转发节点的下一跳转发节点,第一路由为各条路由中的任一条,第一路由通告报文携带目标目的地址、以及第一路由中从第二转发节点至目的节点之间链路的带宽,第一路由通告报文用于指示第二转发节点能够转发报文至目的节点。然后第一转发节点获取第一转发节点至第二转发节点之间的链路的带宽,并基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽。

由此可知,可以对传统技术中的路由通告报文进行扩展,以使路由通告报文不仅可以携带待学习的目的地址(在EVPN中,该目的地址为MAC地址),还可以携带链路的带宽,以使第一转发节点能够获取到各条路由上的带宽。从而使得本申请提供的由转发节点配置负载分担权重的方式更加可行,有利于本申请提供的转发报文的方法的推广。

基于第一方面提供的方法,在一种可能的实现方式中,如果第一路由通告报文携带的链路的带宽为第一路由中从第二转发节点至目的节点之间链路上的最小带宽,此时上述第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和第一路由通告报文中携带的链路的带宽,确定第一路由的带宽的实现过程可以为:第一转发节点确定第一转发节点至第二转发节点之间的链路的带宽和第一路由通告报文中携带的链路的带宽中的较小带宽,将较小带宽作为第一路由的带宽。

通过上述实现方式,各个转发节点在传递链路带宽时,可以将自身与下一跳节点之间的链路的带宽与接收到的路由通告报文中的带宽进行比对,将较小值作为自身至目的节点之间的链路的带宽。如此,各个转发节点向上一跳传递路由通告报文时,仅需携带一个最小的带宽值即可,从而可以减小路由通告报文的字节数,避免了传递路由通告报文过程中占用过多网络资源。

基于第一方面提供的方法,在一种可能的实现方式中,第一路由通告报文中携带的链路的带宽为链路上的剩余带宽。这种场景下,第一转发节点获取第一转发节点至第二转发节点之间的链路的带宽是指:获取第一转发节点至第二转发节点之间的链路的剩余带宽。上述第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽的实现过程可以为:第一转发节点基于第一转发节点至第二转发节点之间的链路的剩余带宽和路由通告报文中携带的剩余带宽,确定第一路由的带宽。

在链路带宽是指链路剩余带宽的场景中,可以通过上述方式来确定第一路由的带宽。

基于第一方面提供的方法,在一种可能的实现方式中,在上述链路带宽为剩余带宽的场景中,第一转发节点根据各条路由的带宽确定各条路由的负载分担权重的实现过程可以为:在第一路由的带宽满足触发条件的情况下,根据各条路由的带宽确定各条路由的负载分担权重。其中,触发条件为第一路由的当前带宽与第一路由历史带宽之间的变化值大于参考幅度,第一路由的历史带宽为当前之前最近一次确定第一路由的负载分担权重时所使用的带宽。

由此可知,当链路的带宽为链路剩余带宽时,由于链路上的流量可能在实时发生变化,所以链路的链路剩余带宽也可能剧烈变动,这种情况下,各条路由上的带宽也是动态变化的,如此在本申请中可以对各条路由的负载分担权重进行相应动态调整,以使调整后负载分担权重更加符合网络的需求。

需要说明的是,第一路由的带宽满足触发条件的判断过程可以由第二转发节点来实现,此时,当第二转发节点确定自身到达目标节点之间的链路的带宽相对于历史带宽之间的变化值大于参考幅度时,表明第一路由的带宽满足触发条件,此时可以触发向第一转发节点发布路由通告报文,第一转发节点在接收到路由通告报文时,直接基于接收到的路由通告报文调整负载分担权重。

上述第一路由的带宽满足触发条件的判断过程也可以由第一转发节点来实现。这种场景下,各个转发节点周期性地发布路由通告报文,此时第一转发节点在每次接收到路由通告报文之后,先确定第一路由的带宽,只有在多条路由中第一路由的带宽满足触发条件时,才会对各条路由的负载分担权重进行调整。

基于第一方面提供的方法,在一种可能的实现方式中,第一路由通告报文携带子类型长度值TLV,子TLV用于携带第一路由中从第二转发节点至目的节点之间链路的带宽。

也即是,可以直接在传统技术中的路由通告报文中扩展一个子TLV来携带链路带宽,从即可实现本申请提供的转发报文的方法,有利于在传统技术中平滑演进出本申请提供的转发报文的方法。

基于第一方面提供的方法,在一种可能的实现方式中,在该方法中,第一转发节点可以接收控制节点下发的各条路由的负载分担权重,各条路路由的负载分担权重是控制节点基于各条路由的带宽确定的,然后将各条路由的负载分担权重添加在上述权重数据中。

在一种可能的实现方式中,可以由控制节点来基于各条路由的带宽对各条路由的负载分担权重进行配置,无需各个转发节点自身来配置,从而提高了本申请提供的配置负载分担权重的方式的灵活性。

基于第一方面提供的方法,在一种可能的实现方式中,上述第一转发节点接收控制节点下发的各条路由的负载分担权重之前第一转发节点还可以向控制节点上报链路状态报文,链路状态报文携带目标目的地址、以及第一路由上第一转发节点与下一跳节点之间的链路带宽,第一路由为多条路由中任一条。

如果由控制节点来基于各条路由的带宽对各条路由的负载分担权重进行配置,那么各个转发节点预先需要将自身的所在的链路的带宽上报给控制节点,以使控制节点能够对各个转发节点上的负载分担权重进行配置。在本申请中,可以直接使用传统技术中的链路状态报文即可实现将自身的所在的链路的带宽上报给控制节点,无需扩展其他的报文,提高了本申请提供的转发报文的方法的灵活性。

基于第一方面提供的方法,在一种可能的实现方式中,第一转发节点还可以接收控制节点下发的所述各条路由的带宽,然后第一转发节点根据各条路由的带宽确定各条路由的负载分担权重,并将各条路由的负载分担权重添加在上述权重数据中。

在另一种可能的实现方式中,可以由控制节点来将确定的各条路由的带宽对下发至转发节点,由转发节点基于各条路由的带宽确定各条路由的负载分担权重,以减缓控制节点的数据处理压力,也提高了本申请提供的配置负载分担权重的方式的灵活性。

第二方面,提供了一种转发报文的方法,该方法应用于通信网络中的第一转发节点,该通信网络中包括多个转发节点,第一转发节点为多个转发节点中的任一个。在该方法中,第一转发节点获取多条路由的带宽,这多条路路由是指从第一转发节点到达目的节点的路由;第一转发节点根据这多条路由的带宽确定多条路由的负载分担权重,任一条路由的负载分担权重用于指示从多条路由中选中相应路由转发报文的概率。

上述提供了一种由第一转发节点自身预先针对这多条路由分别配置有负载分担权重的技术方案,以便于后续基于各条路由的负载分担权重选择一条路由来转发报文。由于任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率,因此,在本申请实施例中,不是盲目地进行等价负载分担,而是基于预先配置的负载分担权重来转发报文。如此便可基于等价负载分担过程转发报文中出现的问题来定制各条路由上的负载分担权重,从而避免等价负载分担转发报文时出现的问题再次发生。

基于第二方面提供的方法,在一种可能的实现方式中,上述第一转发节点获取多条路由的带宽的实现过程可以为:第一转发节点接收第二转发节点发送的第一路由通告报文,第二转发节点为多条路由中第一路由上第一转发节点的下一跳转发节点,第一路由为多条路由中的任一条,第一路由通告报文携带目的地址、以及第一路由中从第二转发节点至目的节点之间链路的带宽;第一转发节点获取第一转发节点至第二转发节点之间的链路的带宽;第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽。

由此可知,可以对传统技术中的路由通告报文进行扩展,以使路由通告报文不仅可以携带待学习的目的地址(在EVPN中,该目的地址为MAC地址),还可以携带链路的带宽,以使第一转发节点能够获取到各条路由上的带宽。从而使得本申请提供的由转发节点配置负载分担权重的方式更加可行,有利于本申请提供的转发报文的方法的推广。

基于第二方面提供的方法,在一种可能的实现方式中,任一条路由的带宽为任一条路由包括的各条链路的带宽的最小值。这种场景下,上述第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽的实现过程可以为:第一转发节点确定第一转发节点至第二转发节点之间的链路的带宽和第一路由通告报文中携带的链路的带宽中的较小带宽,将较小带宽作为第一路由的带宽。

通过上述实现方式,各个转发节点在传递链路带宽时,可以将自身与下一跳节点之间的链路的带宽与接收到的路由通告报文中的带宽进行比对,将较小值作为自身至目的节点之间的链路的带宽。如此,各个转发节点向上一跳传递路由通告报文时,仅需携带一个最小的带宽值即可,从而可以减小路由通告报文的字节数,避免了传递路由通告报文过程中占用过多网络资源。

基于第一方面提供的方法,在一种可能的实现方式中,第一路由通告报文中携带的链路的带宽为链路上的剩余带宽。这种场景下,第一转发节点获取第一转发节点至第二转发节点之间的链路的带宽是指:获取第一转发节点至第二转发节点之间的链路的剩余带宽。上述第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽的实现过程可以为:第一转发节点基于第一转发节点至第二转发节点之间的链路的剩余带宽和路由通告报文中携带的剩余带宽,确定第一路由的带宽。

在链路带宽是指链路剩余带宽的场景中,可以通过上述方式来确定第一路由的带宽。

基于第一方面提供的方法,在一种可能的实现方式中,在上述链路带宽为剩余带宽的场景中,第一转发节点根据各条路由的带宽确定各条路由的负载分担权重的实现过程可以为:在第一路由的带宽满足触发条件的情况下,根据各条路由的带宽确定各条路由的负载分担权重。其中,触发条件为第一路由的当前带宽与第一路由历史带宽之间的变化值大于参考幅度,第一路由的历史带宽为当前之前最近一次确定第一路由的负载分担权重时所使用的带宽。

由此可知,当链路的带宽为链路剩余带宽时,由于链路上的流量可能在实时发生变化,所以链路的链路剩余带宽也可能剧烈变动,这种情况下,各条路由上的带宽也是动态变化的,如此在本申请中可以对各条路由的负载分担权重进行相应动态调整,以使调整后负载分担权重更加符合网络的需求。

基于第一方面提供的方法,在一种可能的实现方式中,第一路由通告报文携带子类型长度值TLV,子TLV用于携带第一路由中从第二转发节点至目的节点之间链路的带宽。

也即是,可以直接在传统技术中的路由通告报文中扩展一个子TLV来携带链路带宽,从即可实现本申请提供的转发报文的方法,有利于在传统技术中平滑演进出本申请提供的转发报文的方法。

第三方面、提供了一种报文发送方法,该方法应用于通信网络中的控制节点,该通信网络中还包括多个转发节点。在该方法中,控制节点可以确定从第一转发节点到达目标目的地址所指示的目的节点之间的多条路由,以及多条路由中各条路由的带宽,第一转发节点为多个转发节点中的任一个;控制节点基于各条路由的带宽,确定各条路由的负载分担权重;控制节点向第一转发节点下发各条路由的负载分担权重,任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率。

在本申请中,可以由控制节点来配置各条路由的负载分担权重,以实现上面第一方面提供的转发报文的方法。从而实现基于各条路由的带宽进行负载分担,而不是盲目地进行等价负载分担,以提高各条路由中带宽较宽的路由的带宽利用率,也避免了各条路由中带宽较小的路由在传输报文时出现拥堵现象。

基于第三方面提供的方法,在一种可能的实现方式中,上述控制节点确定从第一转发节点到达目标地址所指示的目的节点之间的多条路由,以及多条路由中各条路由的带宽的实现过程可以为:控制节点获取各个转发节点中的一个或多个转发节点上报的链路状态报文,链路状态报文携带该目的节点对应的目的地址、以及在到达目的节点的路由上,上报链路状态报文的节点与下一跳节点之间的链路的带宽;控制节点根据上报的各个链路状态报文,确定从第一转发节点到达目的节点之间的多条路由,以及多条路由中各条路由的带宽。

控制节点可以基于传统技术中的链路状态报文来确定路由的带宽,提高了本申请提供转发报文的方法与传统技术的兼容性。

基于第三方面提供的方法,在一种可能的实现方式中,任一路由的带宽是基于相应路由包括的各条链路的链路剩余带宽确定的。这种场景下,上述控制节点基于各条路由的带宽,确定各条路由的负载分担权重的实现过程可以为:在第一路由的带宽满足触发条件的情况下,根据各条路由的带宽确定各条路由的负载分担权重。其中,触发条件为第一路由的当前带宽与第一路由历史带宽之间的变化值大于参考幅度,第一路由的历史带宽为当前之前最近一次确定第一路由的负载分担权重时所使用的带宽。

由此可知,当链路的带宽为链路剩余带宽时,由于链路上的流量可能在实时发生变化,所以链路的链路剩余带宽也可能剧烈变动,这种情况下,各条路由上的带宽也是动态变化的,如此在本申请中可以对各条路由的负载分担权重进行相应动态调整,以使调整后负载分担权重更加符合网络的需求。

基于第三方面提供的方法,在一种可能的实现方式中,这各个转发节点包括接入业务网关ASG和基站侧网关CSG,该CSG与该ASG连接。这种场景下,前述一个或多个转发节点上报的链路状态报文包括ASG上报的链路状态报文,ASG上报的链路状态报文还携带有CSG与下一跳节点之间链路的带宽。

在EVPN技术中,考虑到通信网络中的CSG的数量通常较多,为了避免控制节点处的网络拥堵,CSG可以基于IGP向ASG传递链路状态报文,以通过ASG链路状态报文上报至控制节点,提高了本申请提供的转发报文的高效性。

上述第三方面提供的转发报文的方法的详细技术效果还可以参考第一方面中由控制节点配置负载分担权重的相关方案的技术效果,在此不再详细展开说明。

第四方面,提供了一种通信网络中的第一转发节点,通信网络中包括多个转发节点,第一转发节点为多个转发节点中的任一个。第一转发节点具有实现上述第一方面或第二方面中转发报文的方法行为的功能。第一转发节点包括至少一个模块,该至少一个模块用于实现上述第一方面或第二方面所提供的转发报文的方法。

第五方面,提供了一种通信网络中的控制节点,该通信网络中还包括多个转发节点。其中,该控制节点具有实现上述第三方面中转发报文的方法行为的功能。该控制节点包括至少一个模块,该至少一个模块用于实现上述第三方面所提供的转发报文的方法。

第六方面,提供了一种通信网络中的第一转发节点,该通信网络中包括多个转发节点,第一转发节点为多个转发节点中的任一个;

其中,第一转发节点包括存储器和处理器;

存储器用于存储计算机程序;

处理器用于执行存储器中存储的计算机程序以执行上述第一方面或第二方面中任一项的方法。

第七方面,提供了一种通信网络中的控制节点,该控制节点包括存储器和处理器;

存储器用于存储计算机程序;

处理器用于执行存储器中存储的计算机程序以执行上述第三方面中任一项的方法。

第八方面,提供了一种芯片,芯片设置在通信网络中的第一转发节点中,通信网络中包括多个转发节点,第一转发节点为多个转发节点中的任一个。

其中,该芯片包括处理器和接口电路;

接口电路用于接收指令并传输至处理器;

处理器用于执行上述第一方面或第二方面中任意一项的方法。

第九方面,提供了一种芯片,芯片设置在通信网络中的控制节点中。

其中,该芯片包括处理器和接口电路;

接口电路用于接收指令并传输至处理器;

处理器用于执行上述第三方面中任意一项的方法。

第十方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面或第三方面的转发报文的任一方法。

第十一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面或第三方面的转发报文的任一方法。

第十二方面,提供了一种转发报文的系统,该系统包括多个转发节点;

其中,任一转发节点用于实现上述第一方面或第二方面的转发报文的任一方法。

基于第十二方面提供的系统,在一种可能的实现方式中,该系统还可以包括控制节点,该控制节点用于实现上述第三方面的转发报文的任一方法。

上述第四方面至第十二方面所获得的技术效果与第一方面至第三方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

附图说明

图1是本申请实施例提供的一种通信网络的系统架构示意图;

图2是本申请实施例提供的另一种通信网络的系统架构示意图;

图3是本申请实施例提供的一种转发报文的方法流程图;

图4是本申请实施例提供的一种获取负载分担权重的方法流程图;

图5是本申请实施例提供的一种通告带宽的流程示意图;

图6是本申请实施例提供的一种路由通告报文的格式示意图;

图7是本申请实施例提供的另一种路由通告报文的格式示意图;

图8是本申请实施例提供的另一种获取负载分担权重的方法流程图;

图9是本申请实施例提供的一种各个转发节点上报链路状态报文的示意图;

图10是本申请实施例提供的一种网络设备的结构示意图;

图11是本申请实施例提供的一种网络设备的结构示意图;

图12是本申请实施例提供的一种通信网络中的第一转发节点的结构示意图;

图13是本申请实施例提供的另一种通信网络中的第一转发节点的结构示意图;

图14是本申请实施例提供的一种通信网络中的控制节点的结构示意图;

图15是本申请实施例提供的另一种网络设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在对本申请实施例进行详细解释说明之前,先对本申请实施例的应用场景进行解释说明。

负载分担是指在去往目的地址所指示的目的节点有多链路的情况下,将流量分担到多条链路。负载分担一方面可以充分利用网络资源。另一方面,当负载分担链路中的一条链路出现故障后,流量可以从其它链路继续转发,从而提高网络通信的可靠性。

目前运营商网络中传统移动、家庭宽带业务已趋于饱和,而基于企业互联(business-to-business,B2B)的企业专线成为运营商重要的业务增长点。因此,大多运营商逐渐为企业提供带宽服务,开通企业专线,以提供专网业务。

而在开通企业专线的过程中,通常面临以下两个现状。一方面,为了节约成本,不同运营商网络间存在相互租赁、且中间穿越经过其它的运营商网络以构建企业专线,并且,企业专线的主备平面链路带宽规划不一致,进而导致主备链路的利用率不同。

另一方面,目前大多运营商网络均使用虚拟租用链路(virtual leased line,VLL)、虚拟专用局域网服务(virtual private LAN service,VPLS)技术来承载企业专线,但该类技术存在不支持在多归网络中流量传输负载分担。因此这些技术虽然保障了企业专线可靠性,但是造成了网络资源的浪费。

随着技术的演进,目前已有EVPN技术可以解决VLL\VPLS技术无法实现负载分担的问题。在EVPN中通过扩展的BGP协议使得二层网络间的MAC地址的路由发布过程从数据平面转移到控制平面。这样可以使网络中的各个转发节点可以在控制平面学习到到达同一MAC地址的各个下一跳节点的相关信息,也即是,学习到到达同一MAC地址的不同路由,从而使得转发节点在数据平面接收到目的地址为该同一MAC地址的报文时,可以基于预先学习到的不同路由实现负载分担。

本申请实施例提供的报文转发方法就可以应用于上述EVPN中对流量进行负载分担的场景中。可选地,本申请实施例提供的报文转发方法也可以应用于其他需要通过负载分担方式转发报文的场景中,在此就不再一一举例说明。

图1是本申请实施例提供的一种通信网络的系统架构示意图。如图1所示,该通信网络100包括多个转发节点,图1中分别以6个转发节点为例进行说明。图1中分别将这六个转发节点标记为R1、R2、R3、R4、R5、R6。

如图1所示,转发节点R1分别与转发节点R2、转发节点R4以及转发节点R5连接。转发节点R2与转发节点R3连接。转发节点R3、转发节点R4以及转发节点R5分别连接。当流量从转发节点R1传输至转发节点R6时,转发节点R1在接收到该流量内的任一报文时,可以有三条路由能够将报文传输至转发节点R6。这三条路由分别为:R1→R2→R3→R6;R1→R4→R6;R1→R5→R6。

因此,在转发节点R1接收到报文的情况下,如果该报文的目的节点为转发节点R6、或者为转发节点R6能够到达的其他节点,此时,转发节点R1则基于图1所示的网络架构确定出当前有三条路由可以转发该报文,转发节点R1便可通过本申请实施例提供的转发报文的方法从这三条路由中选择一条目标路由来转发该报文。

下面可以以EVPN网络对本申请实施例所应用的通信网络进一步展开说明。

图2是本申请实施例提供的另一种通信网络的系统架构示意图。如图2所示,该通信网络200包括多个用户边缘设备(customer edge,CE),图2中以CE1和CE2为例进行说明,以及多个运营商边缘设备(provider edge,PE),图1中以PE1、PE2、PE3为例进行说明。其中,用户边缘设备或运营商边缘设备均可以为路由器或交换机等转发节点。

如图2所示,CE1分别与PE1和PE2连接,PE1和PE2分别与PE3连接,PE3与CE2连接。数据流的传输方向为CE2→CE1。当转发节点PE3接收到CE2发送的报文时,便可基于本申请实施例提供的方法从PE1或PE2中选择一个下一跳节点来转发报文,从而实现对数据流的负载分担。

需要说明的是,图2仅仅是EVPN网络的一种举例说明,并不构成对EVPN网络的具体结构的限定。

此外,图2仅仅用于说明本申请实施例提供的通信网络的一种可能的应用场景,本申请实施例提供的报文转发方法也可以应用于其他类型的通信网络中,在此就不再一一举例说明。

下面对本申请实施例提供的报文转发方法进行详细解释说明。

图3是本申请实施例提供的一种转发报文的方法流程图。该方法可以应用于图1或图2所示的通信网络中。下述实施例以通信网络中第一转发节点为例进行说明通信网络中的转发节点如何转发报文,该第一转发节点为通信网络包括的多个转发节点中的任一个。如图3所示,该方法包括如下几个步骤:

步骤301:第一转发节点接收报文,该报文携带目的地址。

在本申请实施例中,第一转发节点在接收到任一报文时,由于该报文均携带有与目的节点对应的目的地址,用于指示需要该将报文转发至该目的节点。因此第一转发节点便可基于该目的地址通过下述步骤302至步骤304转发该报文。

上述第一转发节点可以为通信网络中的头节点,也可以为传输该报文的一个中间节点。

另外,对于EVPN技术,步骤301中的目标目的地址可以为目的节点的MAC地址。

步骤302:第一转发节点根据该目的地址确定多条路由,这多条路路由是指从第一转发节点到达该目的地址所指示的目的节点的路由。

对于第一转发节点,在第一转发节点中预先配置有转发表项,该转发表项中包括到达目的节点的多个下一跳节点的标识,这多个下一跳节点的标识分别用于指示一条到达目的节点的路由。因此,第一转发节点在接收到携带目标目的地址的目标报文时,可以通过该转发表项确定到达目的节点的各条路由。

步骤303:第一转发节点获取这多条路由中各条路由的负载分担权重,任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发报文的概率。

在本申请实施例中,在从第一转发节点达到同一目的节点的各条路由的带宽不一致的情况下,第一转发节点在接收到待转发的目标报文时,如果直接采用等价负载分担的方式传输该目标报文,这样最终各条路由分担的流量将一致。如此对于带宽较大的路由,通过等价负载分担的方式将无法充分利于这种类型的路由的带宽,进而导致网络的带宽利用率下降。对于带宽较小的路由,通过等价负载分担的方式将很容易这种类型的路由上的流量发生拥堵,这样在传输报文的过程中很容易发生丢包重传的现象,从而导致报文传输的效率较低。

基于上述等价负载分担方式出现的技术问题,在一种可能的实现方式中,如果从第一转发节点到达目标目的地址所指示的目的节点的路由有多条,可以预先针对这多条路由分别配置有负载分担权重,任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该目标报文的概率,以便于后续在步骤304中基于各条路由的负载分担权重选择一条路由作为目标路由来转发报文。其中,各条路由的负载分担权重和各条路由的带宽关联,以实现基于各条路由的带宽进行负载分担,而不是盲目地进行等价负载分担,以提高各条路由中带宽较宽的路由的带宽利用率,也避免了各条路由中带宽较小的路由在传输报文时出现拥堵现象。

为了提高转发报文的效率,在本申请实施例中,第一转发节点可以预先将各条路由的负载分担权重存储在本地的权重数据中。如此,上述步骤303的实现方式可以为:第一转发节点从本地存储的权重数据中获取这各条路由的负载分担权重。其中,权重数据中包括与各个目的地址对应的路由的负载分担权重。该权重数据可以存储在转发表项中。

此外,对于多条路由中任一条路由,该路由的带宽可以是指该路由包括的各条链路的带宽的最小值。也即是,根据各条路由上的最小带宽来进行负载分担,以进一步避免各条路由在传输报文时由于最小带宽的限制而导致出现流量拥堵现象。其中。路由是多个相邻的转发节点组成的传输路径,因此,路由上的最小带宽是指路由上任意相邻两个转发节点之间的链路的带宽中的最小带宽。比如,对于图1所示的路由R1→R2→R3→R6,如果R1与R2之间的链路的带宽为10千兆以太网(gigabit ethernet,GE),R2与R3之间的链路的带宽为50GE,R3与R6之间的链路的带宽为20GE,则将R1与R2之间的链路的带宽10GE作为该条路由的带宽。

可选地,对于多条路由中任一条路由,该路由的带宽也可以是指该路由包括的各条链路的带宽的平均值。也即是,路由的带宽可以是指该路由上的平均带宽。比如,对于上述图1所示的路由R1→R2→R3→R6,可以将R1与R2之间的链路的带宽10GE、R2与R3之间的链路的带宽50GE、R3与R6之间的链路的带宽20GE,这三个带宽的平均值27GE作为该路由的带宽。

上述各条路由上任意相邻两个转发节点之间的链路的带宽的获取方式将在下述实施例中详细进行解释说明,在此就先不展开说明。

另外,各条路由的负载分担权重与这各条路由的带宽关联可以是指:各条路由的负载分担权重之间的比例与这各条路由的带宽之间的比例一致。因此,在一种可能的实现方式中,这各条路由中的任意两条路由之间的负载分担权重的比例与该任意两条路由之间的带宽的比例一致。

比如,对于图1的通信网络,假设路由R1→R2→R3→R6的带宽为10GE,路由R1→R4→R6的带宽为20GE;路由R1→R5→R6的带宽为10GE。那么这三条路由的负载分担权重之间的比例可以为1:2:1。这种场景下,可以将路由R1→R2→R3→R6的负载分担权重设置为1、将路由R1→R4→R6的负载分担权重设置为2、将路由R1→R5→R6的负载分担权重设置为1。如上,这里的各路由的带宽可以是各路由的最小带宽,或者平均带宽。

在本申请实施例中,路由的负载分担权重用于指示在每次选择路由该路由被选中的概率,以实现按照各条路由的负载分担权重进行分流。比如,对于图1所示的通信网络,假设路由R1→R2→R3→R6的负载分担权重设置为1、将路由R1→R4→R6的负载分担权重设置为2、将路由R1→R5→R6的负载分担权重设置为1。那么在R1处传输了80G的流量后,这80G的流量中有20G的流量是通过路由R1→R2→R3→R6传输的,有40G的流量是通过路由R1→R4→R6传输的。有20G的流量是通过路由R1→R5→R6传输的。

此外,对于任一路由,该路由包括的各条链路的带宽可以为链路预留带宽、也可以为链路剩余带宽。本申请实施例对此不作限定。其中,链路预留带宽是指链路空载时的带宽,链路预留带宽还可以称为链路接口带宽等。链路剩余带宽是指链路上传输流量之后剩下的带宽。比如,某条链路的链路预留带宽为10GE,如果当前已使用2GE,则该链路的链路剩余带宽为8GE。

当链路的带宽为链路预留带宽时,上述各条路由的带宽在网络拓扑不发生变化的情况下,也基本不发生变化,这种场景下,各条路由上的负载分担权重是固定不变的。当链路的带宽为链路剩余带宽时,由于链路上的流量可能在实时发生变化,所以链路的链路剩余带宽也可能剧烈变动,这种情况下,各条路由上的带宽也是动态变化的,从而导致各条路由的负载分担权重也许相应动态调整,以使调整后负载分担权重更加符合网络的需求。关于动态调整负载分担权重的具体实现方式将在后续实施例中详细说明,在此就先不展开论述。

此外,基于各条路由的带宽来设置各条路由的负载分担权重可以是第一转发节点来实现,也可以由控制节点来实现,这部分内容也在下述实施例中详细说明,在此先不展开说明。

上述是以路由带宽为例来解释说明如何配置负载分担权重,在本申请实施例中,也可以基于路由上的其他信息来配置负载分担权重,以使第一转发节点基于配置的负载分担权重分流后可以充分利用网络资源。比如,各条路由的负载分担权重还可以与各条路由上的传输时延关联,如此,按照基于配置的负载分担权重分流后可以减缓网络中的拥堵现象,从而提高报文转发的效率。

步骤304:第一转发节点根据这各条路由的负载分担权重从这多条路由中选择一条路由转发该报文。

由于路由的负载分担权重用于指示在每次选择路由该路由被选中的概率,因此,可以基于各条路由的负载分担权重按照随机选择的方式从这多条路由中选择一条路由作为目标路由。

比如,对于图1所示的通信网络,假设路由R1→R2→R3→R6的负载分担权重设置为1、将路由R1→R4→R6的负载分担权重设置为2、将路由R1→R5→R6的负载分担权重设置为1。那么节点R1在转发报文时,从这三条路由中随机选择一条路由。其中,路由R1→R2→R3→R6被选中的概率为25%,路由R1→R4→R6被选中的概率为50%,路由R1→R5→R6被选中的概率为25%。

在确定了目标路由之后,可以根据该目标路由转发该报文即可。比如,对于图1所示的通信网络,假设目标路由为R1→R2→R3→R6,此时第一转发节点将该报文转发至转发节点R2即可。

综上,如果从第一转发节点到达报文携带的目的地址所指示的目的节点的路由有多条,预先针对这多条路由分别配置有负载分担权重,以便于后续基于各条路由的负载分担权重选择一条路由来转发报文。由于任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率,因此,在本申请实施例中,不是盲目地进行等价负载分担,而是基于预先配置的负载分担权重来转发报文。如此便可基于等价负载分担过程转发报文中出现的问题来定制各条路由上的负载分担权重,从而避免等价负载分担转发报文时出现的问题再次发生。

上述图3所示的实施例用于对第一转发节点如何实现根据基于负载分担权重分担流量进行解释说明。基于实现图3所示的实施例步骤303可知,对于第一转发节点,可以预先获取这各条路由的负载分担权重,然后将这多条路由的负载分担权重存储在本地的权重数据中。下述实施例将对如何获取各条路由的负载分担权重进行详细解释说明。此外,由于该配置负载分担权重的过程可以由第一转发节点自身实现,也可以由通信网络中的控制节点来实现。因此,下面将通过两个实施例分别对预先在第一转发节点中获取这各条路由的负载分担权重的实现方式进行详细解释说明。

图4是本申请实施例提供的一种获取负载分担权重的方法流程图。该方法应用于第一转发节点,也即是由转发节点自身基于各条路由的带宽配置各条路由的负载分担权重。如图4所示,该方法包括如下几个步骤:

步骤401:第一转发节点获取多条路由的带宽,这多条路路由是指从第一转发节点到达目的节点的路由。

在EVPN技术中,通信网络中的各个转发节点具有BGP累加内部网关协议度量值(accumulated interior gateway protocol metric,AIGP)功能。在该功能中,对于到达某个目的地节点的一条路由上的各个转发节点,从最后一跳转发节点开始逐渐向前一跳转发节点通告目的节点的MAC地址,以使该路由上各个转发节点均能学习到该目的节点的MAC地址以及通过哪些下一跳节点可以将报文转发至目的节点,并将学习到的MAC地址和这些下一跳节点添加到转发表项中。

上述在BGP AIGP功能中通告目的节点的MAC地址可以通过路由通告报文来实现。因此,在本申请实施例中,为了能够实现由各个转发节点自身来配置到达同一目的节点的各条路由的负载分担权重,可以对BGP AIGP功能进行扩展,以使各个转发节点在通告目的节点的MAC地址时时还可以通告自身达到目的节点的链路的带宽。

所以,在一种可能的实现方式中,步骤401的实现过程可以为:第一转发节点接收第二转发节点发送的第一路由通告报文,第二转发节点为第一路由上第一转发节点的下一跳转发节点,第一路由为各条路由中的任一条,第一路由通告报文携带目标目的地址、以及第一路由中从第二转发节点至目的节点之间链路的带宽,第一路由通告报文用于指示第二转发节点能够转发报文至目的节点;第一转发节点获取第一转发节点至第二转发节点之间的链路的带宽;第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽。

基于图3所示实施例可知,链路带宽可以是链路剩余带宽、也可以是链路预留带宽。下面以链路带宽为链路剩余带宽为例解释说明上述实现方式。此时,第一路由通告报文中携带的链路的带宽为链路上的剩余带宽。这种场景下,第一转发节点获取第一转发节点至第二转发节点之间的链路的带宽是指:获取第一转发节点至第二转发节点之间的链路的剩余带宽。上述第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽的实现过程可以为:第一转发节点基于第一转发节点至第二转发节点之间的链路的剩余带宽和路由通告报文中携带的剩余带宽,确定第一路由的带宽。

此外,由于第一转发节点可以为头节点,也可以为通信网络中的中间节点。如果第一转发节点为中间节点,表明第一转发节点的上游还存在其他转发节点。此时,第一转发节点在接收到第二转发节点的路由通告报文之后,如果第一转发节点的上游还有其他转发节点,则第一转发节点还可以继续向上游的转发节点发送路由通告报文,以使上游的转发节点也可以学习到目的节点的目标目的地址。因此,在一种可能的实现方式中,第一转发节点在确定第一路由的带宽之后,还可以向第三转发节点发送第二路由通告报文,第二路由通告报文携带目标目的地址、以及第一路由的带宽。其中,第三转发节点为向第一转发节点发送该目标报文的转发节点,也即是,第三转发节点为第一转发节点的上游节点,以便于上游节点可以参考第一转发节点的方式配置自身到达目的节点的各条路由上的负载分担权重。

也即是,在本申请中,对传统技术中的路由通告报文进行了扩展,以使路由通告报文不仅可以携带待学习的目的地址(在EVPN中,该目的地址为MAC地址),还可以携带链路的带宽。同上述图3中的步骤303中的解释,该链路的带宽可以为链路预留带宽、也可以为链路剩余带宽。在此就不再详细解释说明

同样地,基于图3中的步骤303中的解释,路由上的带宽可以是最小带宽也可以为平均带宽。在路由上的带宽为最小带宽的情况下,上述第一路由通告报文中携带的第一路由中从第二转发节点至目的节点之间链路的带宽可以是指第二转发节点至目的节点之间链路上的最小带宽。此时,第一路由上从最后一跳节点的上一跳转发节点开始,每个转发节点在接收到下一跳转发节点发送的带宽时,均先确定自身与下一跳节点之间的链路的带宽,然后在接收到的带宽和确定的带宽中确定一个较小值携带在自身向上一跳转发节点发送的路由通告报文中。如此,每个转发节点接收到的路由通告报文中携带的带宽均是该转发节点的下一跳节点到目的节点的链路上的最小带宽。

在第一路由通告报文携带的链路的带宽为第一路由中从第二转发节点至目的节点之间链路上的最小带宽的场景下,上述第一转发节点基于第一转发节点至第二转发节点之间的链路的带宽和第一路由通告报文中携带的链路的带宽,确定第一路由的带宽的实现方式可以为:第一转发节点确定第一转发节点至第二转发节点之间的链路的带宽和第一路由通告报文中携带的链路的带宽中的较小带宽,将较小带宽作为第一路由的带宽。

图5是本申请实施例提供的一种通告带宽的流程示意图。如图5所示,在数据层面,数据流由基站侧网关(cell site gate,CSG)1传输至用户前置设备(customer premiseequipment,CPE),其中,CPE还可以称为客户终端设备或用户驻地设备等。在控制层面,接入业务网关(Access service Gateway,ASG)1传递目的节点的MAC地址时,携带ASG1出接口至CPE的链路带宽信息20GE,并将该信息记录至路由通告报文中,传递至无线业务网关(Radioservice Gateway,RSG)1。RSG1计算自身至下一跳(ASG1)之间的链路的带宽值(50GE)与接收的带宽(20GE)的最小值20GE,并重新生成路由通告报文传递至ASG3。ASG3计算自身至下一跳(RSG1)之间的链路的带宽值(40GE)与接收的带宽(20GE)的最小值20GE,并重新生成路由通告报文传递至CSG1。CSG1计算自身至下一跳(ASG3)之间的链路的带宽值(10GE)与接收的带宽(20GE)的最小值10GE,CSG1得到该条路由CSG1→ASG3→RSG1→ASG1→CPE上的最小带宽为10GE。

同样地,ASG2传递目的节点的MAC地址时,时,携带ASG2的出接口至CPE的链路带宽信息20GE,并将该信息记录至路由通告报文中,传递至RSG2。RSG2上计算自身至下一跳(ASG2)之间的链路的带宽值(40GE)与接收路由带宽(20GE)的最小值20GE,并重新生成路由通告报文传递至ASG4。ASG4计算自身至下一跳(RSG2)之间的链路的带宽值(30GE)与接收的带宽(20GE)的最小值20GE,并重新生成路由通告报文传递至CSG1。CSG1计算自身至下一跳(ASG4)之间的链路的带宽值(25GE)与接收的带宽(20GE)的最小值20GE,CSG1得到该条路由CSG1→ASG4→RSG2→ASG2→CPE上的最小带宽值20GE。

基于上述两个过程,CSG1可以得到两条路由中每条路由的最小带宽。从而可以将这两条路由的负载分担权重之间的比例设置为1:2,达到基于路由带宽进行非等价负载分担的目的。

此外,对于图5所示的通信网络,所有路由器实现路由互通。其中,RSG1/2与ASG1/2、ASG3/4之间建立BGP邻居关系,ASG3/4与CSG建立BGP邻居关系。在EVPN中,通过BGP传递路由通告报文,并在路由器上扩展BGP AIGP功能,使得路由器可以通过路由通告报文逐跳携带带宽信息。如图5所示,EVPN的远端路由器ASG1/2设备通过BGP逐跳基于路由通报报文通告CPE所连接的目的节点的MAC地址时,路由通告报文中扩展增加携带逐跳的链路带宽信息,即每经过一个设备,就把迭代到的下一跳设备的带宽信息扩展至路由通告报文中。传递路由通报报文给下一台设备时,下一台设备取自身与下一跳之间的链路的带宽和路由通告报文中携带的带宽两者之间相对小的带宽作为即将通告给下一台设备的带宽信息。如图5所示,总部到分支方向(也即是CPE到CSG1的方向),ASG1传递路由通报报文时,携带ASG1->CPE之间的链路带宽至RSG1,RSG1计算min(RSG1->ASG1,ASG1->CPE)带宽传递至ASG3,ASG3同样计算较小带宽值传递至CSG1。ASG2的传递过程和ASG1类似,在此就不再重复说明。CSG1最终计算两条路由的带宽比例,作为非等价负载分担的权重。

可选地,上述第一路由通告报文中携带的第一路由中从第二转发节点至目的节点之间链路的带宽也可以是指第二转发节点至目的节点之间链路上各个相邻两个转发节点之间的链路上的带宽。这种场景下,每个转发节点无需对路由通告报文中携带的带宽和自身与下一跳节点之间的带宽进行比对,只需在路由通告报文中继续添加自身与下一跳节点之间链路的带宽即可,最终由第一转发节点自身来统一计算自身到目的节点的各段链路上的最小带宽,以得到第一路由上的最小带宽。这种实现方式可以减少各个转发节点的运算时间,但是容易导致路由通告报文比较大,从而引起网络资源的浪费。

上述是以路由的带宽为路由包括的各条链路的带宽的最小值为例解释说明路由通告报文的。如果路由的带宽为路由包括的各条链路的带宽的平均值,各个节点同样可以参考上述方式发布路由通告报文,在此就不再详细说明。

图6是在请求意见稿(request for comments,RFC)7311提供的路由通告报文的格式示意图。该文档与本文相关部分的内容好像整体复制一般以引入的方式并入(incorporated by reference)本文本中,对于其中与本文矛盾或冲突的描述,以本文的描述为准。如图6所示,该路由通告报文为AIGP TLV,该AIGP TLV中的类型定义为1、长度定义为11,值用于携带通告的MAC地址以及自身到达目的节点的累加链路开销值。其中,类型定义为1的含义、以及长度定义为11的定义可以参考RFC7311中的解释,在此就不再详细说明。

因此,在一种可能的实现方式中,如图7所示,可以在RFC7311的路由通告报文中新增一个子TLV(sub-TLV),对于上述第二转发节点发送至第一转发节点的第一路由通告报文,该第一路由通告报文中新增的子TLV用于携带上述第一路由中从第二转发节点至目的节点之间链路的带宽。新增的子TLV的类型可以设置为2,长度可以设置为11,值可以复用IGP子TLV中的最大链路宽(maximum link bandwidth)值。需要说明的是,新增的子TLV的值虽然可以复用IGP子TLV中的最大链路宽值,但是该新增的子TLV携带的链路的带宽可以为链路上的最小带宽、也可以为链路上的平均带宽、或者也可以为该链路包括的各个相邻转发节点之间的带宽。

需要说明的是,图7仅仅是添加了新增的子TLV的路由通告报文的一种可能的格式示意图,并不构成对申请实施例提供的路由通告报文的格式的限制。

此外,目前在ISIS协议中的RFC5305中对于链路带宽已有相关子TLV定义,所以第一转发节点可以通过该针对链路带宽的子TLV来收集自身到下一跳节点之间的链路上的带宽。在通过RFC5305收集自身到下一跳节点之间的链路上的带宽之后,便可基于RFC7311发布路由通告报文。在此就不再可以详细说明。

上述内容是以第一转发节点自身来确定各条路由的带宽为例进行解释说明。在另一种可能的实现方式中,各条路由的带宽也可以由控制节点来确定,然后控制节点将各条路由的带宽下发至第一转发节点,之后由第一转发节点基于各条路由的带宽确定各条路由的负载分担权重。关于控制节点确定各条路由的带宽的实现方式将在下述图8所示的实施例中详细说明,在此就先不展开说明。

步骤402:第一转发节点根据多条路由的带宽确定各条路由的负载分担权重。

步骤402的实现方式在图3所示的实施例中已经进行了详细说明,在此就不再重复说明。

此外,基于上述图3中的步骤303中的解释可知,该链路的带宽可以为链路预留带宽、也可以为链路剩余带宽。并且,当链路的带宽为链路剩余带宽时,由于链路上的流量可能在实时发生变化,所以链路的链路剩余带宽也可能剧烈变动,这种情况下,各条路由上的带宽也是动态变化的,从而导致各条路由的负载分担权重也许相应动态调整,以使调整后负载分担权重更加符合网络的需求。

在一种可能的实现方式中,动态调整负载分担权重的实现过程可以为:对于各条路由中的第一路由,可以将第二转发节点配置为周期性地发布路由通告报文,如此第一转发节点便可周期性确定第一路由的带宽。这种场景下,第一转发节点在每次确定出第一路由的带宽后,可以判断当前确定的第一路由的带宽与历史剩余带宽之间的变化值是否需大于参考幅度。如果大于,则重新调整各个路由的负载分担权重,如果不大于,则无需调整各条路由的负载分担权重。也即是,第一转发节点在第一路由的带宽满足触发条件的情况下,才会根据各条路由的带宽确定各条路由的负载分担权重。其中,该触发条件为第一路由的当前带宽与第一路由历史带宽之间的变化值大于参考幅,第一路由的历史带宽为当前之前最近一次确定第一路由的负载分担权重时所使用的带宽。

在另一种可能的实现方式中,上述动态调整负载分担权重的实现过程可以为:当第二转发节点确定自身到达目标节点之间的链路的带宽相对于历史带宽之间的变化值大于参考幅度时,可以触发向第一转发节点发布路由通告报文,第一转发节点在接收到路由通告报文时,表明当前第一路由的带宽满足触发条件,因此可以直接基于接收到的路由通告报文调整负载分担权重。

比如,对于任一路由上的尾节点,如果自身到目的节点之间的链路剩余带宽发生了剧烈变化,将触发新一轮的路由通报报文的发布。以通知第一转发节点及时调整各条路由上的负载分担权重。

也即是,在本申请实施例中,可以由其他转发节点来触发调整负载分担权重,也可以由第一转发节点来触发调整负载分担权重。

综上,在本申请实施例中,对传统技术中的路由通告报文进行了扩展,以使路由通告报文不仅可以携带待学习的目的地址,还可以携带链路的带宽,从而实现本申请实施例中根据带宽比例分担流量,以提高链路带宽利用率的技术方案。

图8是本申请实施例提供的另一种获取负载分担权重的方法流程图。该方法应用于通信网络中的控制节点。如图8所示,该方法包括如下几个步骤:

步骤801:控制节点确定多条路由中各条路由的带宽,这多条路路由是指从第一转发节点到达目的节点的路由,第一转发节点为多个转发节点中的任一个。

在本申请实施例中,为了能够实现由控制节点来配置各条路由的负载分担权重,在一种可能的实现方式中,通信网络中的各个转发节点可以向控制节点上报链路状态报文,该链路状态报文中携带在到达某个目的地址所指示的目标节点的路由上,上报者到邻居节点之间的链路的标识以及该链路的带宽,如此控制节点便可基于各个转发节点上报的链路状态报文还原出第一转发节点到达某个目的节点的各条路由以及各条路由的带宽,从而基于各条路由的带宽配置各条路由的负载分担权重。

因此,步骤801的实现方式可以为:控制节点接收各个转发节点中的一个或多个转发节点上报的链路状态报文,链路状态报文携带目标目的地址、以及在到达目标目的地址所指示的目的节点的路由上该上报链路状态报文的节点到下一跳节点之间的链路带宽,控制节点根据上报的各个链路状态报文,确定从第一转发节点到达目标地址所指示的目的节点之间的多条路由,以及多条路由中各条路由的带宽。

上述各条路由的带宽同样可以为路由上的最小带宽,如此控制节点在确定出任一条路由时,便可以根据组成该路由的各个转发节点中任意相邻的两个转发节点之间的链路的带宽确定出一个最小带宽,将该最小带宽作为该条路由的带宽。

上述各条路由的带宽同样可以为路由上的平均带宽,如此控制节点在确定出任一条路由时,便可以根据组成该路由的各个转发节点中任意相邻的两个转发节点之间的链路的带宽确定出一个平均带宽,将该平均带宽作为该条路由的带宽。

此外,上述任意相邻的两个转发节点之间的链路的带宽可以为链路预留带宽,也可以为链路剩余带宽,在此就不再详细说明。

在一种可能的实现方式中,各个转发节点可以通过已有BGP链路状态(link-state,LS)协议,向控制节点上报链路状态报文。此时,该链路状态报文中包括子TLV,该子TLV用于该上报链路状态报文的节点到下一跳节点之间的链路带宽的带宽。关于该链路状态报文的具体格式将在下述实施例中详细说明,在此就先不展开说明。此外,控制节点可以为网络控制引擎(network control engineering NCE)或其他网络中的控制器。

此外,如图5所示,在EVPN技术中,通信网络中的各个转发节点包括ASG和CSG。这种场景下,各个转发节点可以分别向控制节点上报链路状态报文。可选地,考虑到通信网络中的CSG的数量通常较多,为了避免控制节点处的网络拥堵,CSG可以基于IGP向ASG传递链路状态报文,以通过ASG链路状态报文上报至控制节点。此时,上述一个或多个转发节点上报的链路状态报文包括ASG上报的链路状态报文,且ASG上报的链路状态报文不仅包括自身与下一跳节点之间的链路的带宽,还携带有CSG与下一跳节点之间链路的带宽。

图9是本申请实施例提供的一种各个转发节点上报链路状态报文的示意图。如图9所示,所有转发节点(CSG、ASG、RSG)通过IGP(ISIS/OSPF)实现路由互通。ASG、RSG与控制节点建立BGP-LS的互通。CSG可以基于IGP通过链路状态报文向ASG传递本设备可以转发的报文的目的地址、到达该目的地址所指示的目的节点的路由上本设备至ASG之间的链路的标识以及该链路的带宽信息,以通过ASG将目的地址、本设备至ASG之间的链路的标识以及该链路的带宽信息上报至控制节点。ASG、RSG还基于BGP-LS通过链路状态报文向控制节点上送本设备可以转发的报文的目的地址、以及到达该目的地址所指示的目的节点的路由上本设备至下一跳转发节点之间的链路的带宽信息。也即是,对于ASG3而言,ASG3在上传本设备至下一跳转发节点之间的链路的带宽信息时,还将CSG1至ASG3之间的链路的带宽信息也一起上报。同样,ASG4的相关转发流程可以参考ASG3,在此就不再详细说明。

控制节点在接收到各个转发节点上报的链路状态报文之后,由于转发节点可能上报针对多个目的目的地址的链路状态报文,因此,控制节点可以先选中具体的目的地址(也即是选中具体的EVPN实例),也即是目标目的地址,然后通过携带有该目标目的地址的各个链路状态报文进行路由还原。如图9所示,控制节点基于携带有CPE的MAC地址或CPE所连接的节点的MAC地址,可以还原出EVPN业务CSG至CPE的两条路由的详细逐跳信息。控制节点在还原出这两条路由后,便可基于上报的链路状态报文中关于这两条路由上各段链路的带宽信息,确定这两条路由中每条路由上的带宽,从而得到CSG1→ASG3→RSG1→ASG1→CPE上的最小带宽为10GE,路由CSG1→ASG4→RSG2→ASG2→CPE上的最小带宽值20GE。因此控制节点可以确定这两条路由的负载分担比例为1:2,并将分担比例下发至CSG1,从而通过CSG1达到非等价分担比例的目的。

由此可知,对于图5所示的EVPN,所有设备基于BGP-LS的链路带宽上报功能向控制节点传递链路的带宽信息,控制节点通过还原EVPN业务链路信息可以查看到所在链路的带宽情况。控制节点开启EVPN非等价路由负载分担权重计算功能,以确定各条路由的负载分担权重,并将计算结果动态的下发至转发节点,整体上提升了控制节点对网络中对网络带宽利用的全面控制,优化了网络利用率,有效解决了传统技术中等价负载分担的缺点。

此外,上述链路状态报文可以为RFC7752协议中定义的链路状态报文,由于RFC7752协议中定义的链路状态报文中已经定义了可以携带链路带宽的子TLV,因此本申请实施例可以直接使用RFC7752协议中定义的链路状态报文中的子TLV来向控制节点上报链路带宽信息。关于RFC7752协议中定义的链路状态报文以及可以携带链路带宽的子TLV的具体格式,本申请实施例在此就不再详细说明。

步骤802:控制节点基于这各条路由的带宽,确定这各条路由的负载分担权重。

步骤802的实现方式在图3所示的实施例中已经进行了详细说明,在此就不再重复说明。

需要注意的是,如果任一路由的带宽是基于相应路由包括的各条链路的链路剩余带宽确定的,这种场景下,步骤802中控制节点基于各条路由的带宽,确定各条路由的负载分担权重的实现过程可以为:在第一路由的带宽满足触发条件的情况下,根据各条路由的带宽确定各条路由的负载分担权重。其中,触发条件为第一路由的当前带宽与第一路由历史带宽之间的变化值大于参考幅度,第一路由的历史带宽为当前之前最近一次确定第一路由的负载分担权重时所使用的带宽。

通过上述实现方式可以实现基于剩余带宽的变化对各条路由的负载分担权重进行动态调整。具体内容可以参考图3实施例中第一转发节点基于剩余带宽的变化对各条路由的负载分担权重的详细解释说明,在此就不再赘述。

步骤803:控制节点向第一转发节点下发这各条路由的负载分担权重。

通过图8所示的实施例,可以实现由控制节点统一下发各条路由的负载分担权重,从而实现对网络中各条路由的带宽利用率的控制。

在另一种可能的实现方式中,控制节点在针对第一转发节点确定出各条路由的带宽之后,还可以将各条路由带宽下发至第一转发节点,由第一转发节点基于各条路由的带宽确定各条路由负载分担权重,在此就不再详细展开说明。

接下来对本申请实施例提供的通信网络中的各个节点的结构进行解释说明。

图10是本申请实施例提供的一种网络设备的结构示意图,该网络设备可以为上述任一实施例中通信网络中包括的多个转发节点中的任一转发节点,可以为头节点,可以为到达目的节点存在多条路由的中间节点。该网络设备1000可以为交换机,路由器或者其他转发报文的网络设备。在该实施例中,该网络设备1000包括:主控板1010、接口板1030和接口板1040。多个接口板的情况下可以包括交换网板(图中未示出),该交换网板用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。

主控板1010用于完成系统管理、设备维护、协议处理等功能。接口板1030和1040用于提供各种业务接口(例如,POS接口、GE接口、ATM接口等),并实现报文的转发。主控板1010上主要有3类功能单元:系统管理控制单元、系统时钟单元和系统维护单元。主控板1010、接口板1030以及接口板1040之间通过系统总线与系统背板相连实现互通。接口板1030上包括一个或多个处理器1031。处理器1031用于对接口板进行控制管理并与主控板上的中央处理器进行通信,以及用于报文的转发处理。接口板1030上的存储器1032用于存储转发表项,处理器1031通过查找存储器1032中存储的转发表项进行报文的转发。

接口板1030包括一个或多个网络接口1033用于接收上一跳节点发送的报文,并根据处理器1031的指示向下一跳节点发送处理后的报文。在本申请实施例中,转发节点转发的报文可以包括三大类,第一类为数据报文,第二类为路由通告报文,第三类为链路状态报文。在转发的报文为数据报文时,网络接口1033具体实现过程可以参考图3实施例中的步骤301,用于接收待转发的数据报文。在转发的报文为路由通告报文时,网络接口1033具体实现过程可以参考图4实施例中的步骤401,用于接收下一跳节点发送的路由通报报文。进一步地,在该转发节点为中间节点的场景下,这一个或多个网络接口1033还用于向上一跳的转发节点发送上述步骤401中涉及的路由通告报文,以使各个转发节点能够实现自身来配置负载分担权重。此外,在转发的报文为链路状态报文时,这一个或多个网络接口1033还用于向控制节点发送步骤801中涉及的链路状态报文,以使得控制节点能够通过图8中的步骤801至步骤803下发为转发节点配置的负载分担权重。处理器1031可以用于参考步骤401值步骤402确定各条路由上的负载分担权重、以及步骤801中涉及的链路状态报文,处理器1031的具体功能这里就不再逐一赘述。

可以理解,如图10所示,本实施例中包括多个接口板,采用分布式的转发机制,这种机制下,接口板1040上的操作与接口板1030的操作基本相似,为了简洁,不再赘述。此外,可以理解的是,图10中的接口板中的处理器1031和/或1041可以是专用硬件或芯片,如网络处理器或者专用集成电路(application specific integrated circuit)来实现上述功能,这种实现方式即为通常所说的转发面采用专用硬件或芯片处理的方式。采用网络处理器这一专用硬件或芯片的具体实现方式可以参考下面图11所示的实施例。在另外的实施方式中,处理器1031和/或1041也可以采用通用的处理器,如通用的CPU来实现以上描述的功能,具体可以参考下面图15所示的实施例。

此外,需要说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,该设备的数据处理能力越强,提供的接口板越多。多块接口板的情况下,该多块接口板之间可以通过一块或多块交换网板通信,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,该设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,该设备包括多块接口板,可以通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。

具体的实施例中,存储器1032可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1032可以是独立存在,通过通信总线与处理器1031相连接。存储器1032也可以和处理器1031集成在一起。

其中,存储器1032用于存储程序代码,并由处理器1031来控制执行,以执行上述实施例所提供的转发报文的方法。处理器1031用于执行存储器1032中存储的程序代码。程序代码中可以包括一个或多个软件模块。这一个或多个软件模块可以为下面图12或图13实施例中提供的软件模块。

具体实施例中,网络接口1033,可以是使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local area networks,WLAN)等。

图11是本申请实施例提供的另一种网络设备的结构示意图,该网络设备可以为上述图任一实施例提供的通信网络中的多个转发节点中的第一转发节点,第一转发节点可以为头节点,可以为到达目的节点存在多条路由的中间节点。该网络设备1100可以为交换机,路由器或者其他转发报文的网络设备。在该实施例中,该网络设备1100包括:主控板1110、接口板1130、交换网板1120和接口板1140。主控板1110用于完成系统管理、设备维护、协议处理等功能。交换网板1120用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。接口板1130和1140用于提供各种业务接口(例如,POS接口、GE接口、ATM接口等),并实现数据包的转发。控制平面由主控板1110的各管控单元及接口板1130和1140上的管控单元等构成。主控板1110上主要有3类功能单元:系统管理控制单元、系统时钟单元和系统维护单元。主控板1110、接口板1130和1140,以及交换网板1120之间通过系统总线与系统背板相连实现互通。接口板1130上的中央处理器1131用于对接口板进行控制管理并与主控板上的中央处理器进行通信。在转发报文为数据报文的场景中,接口板1130上的转发表项存储器1134用于存储转发表项,网络处理器1132通过查找转发表项存储器1134中存储的转发表项进行报文的转发,具体实现方式可以参考图3实施例中的步骤302。

此外,在转发报文为路由通告报文的场景中,所述接口板1130的物理接口卡1133用于接收上述图4中的步骤401中涉及的路由通告报文。具体实现过程这里不再逐一赘述。

所述网络处理器1132用于确定步骤401中涉及的路由通告报文,该路由通告报文可以为上述实施例中任一路由通告报文,网络处理器1132的具体功能这里不再逐一赘述。

然后,处理之后的路由通告报文还可以通过所述物理接口卡1133向其他邻接转发节点发送。

此外,在转发报文链路通告报文的场景中,所述物理接口卡1133还用于向控制节点发送步骤801中涉及的链路状态报文,以使得控制节点能够通过图8中的步骤801至步骤803下发各个转发节点上配置的负载分担权重,具体实现过程这里不再逐一赘述。

可以理解,如图11所示,本实施例中包括多个接口板,采用分布式的转发机制,这种机制下,接口板1140上的操作与所述接口板1130的操作基本相似,为了简洁,不再赘述。此外,如上所述,图11中的网络处理器1132以及1142的功能可以用专用集成电路(application specific integrated circuit)替换来实现。

此外,需要说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,该设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,该设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,该设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。

图12是本申请实施例提供的一种通信网络中的第一转发节点的结构示意图。该通信网络中包括多个转发节点,第一转发节点为多个转发节点中的任一个。如图12所示,第一转发节点1200包括:

接收模块1201,用于接收报文,该报文携带目的地址。具体实现方式可以参考图3实施例中的步骤301。

确定模块1202,用于根据该目的地址确定多条路由,多条路路由是指从第一转发节点到达目的地址所指示的目的节点的路由。具体实现方式可以参考图3实施例中的步骤302。

获取模块1203,用于获取多条路由中各条路由的负载分担权重,任一条路由的负载分担权重用于指示从多条路由中选中相应路由转发该报文的概率。具体实现方式可以参考图3实施例中的步骤303。

发送模块1204,用于根据各条路由的负载分担权重从多条路由中选择一条路由转发该报文。具体实现方式可以参考图3实施例中的步骤304。

可选地,各条路由的负载分担权重与各条路由的带宽关联。

可选地,各条路由中的任意两条路由之间的负载分担权重的比例与任意两条路由之间的带宽的比例一致。

可选地,任一条路由的带宽为任一条路由包括的各条链路的带宽的最小值或平均值。

可选地,各条链路的带宽为链路预留带宽或链路剩余带宽。

可选地,获取模块,用于:

从本地存储的权重数据中获取各条路由的负载分担权重。

可选地,获取模块,还用于获取各条路由的带宽;

确定模块,还用于根据各条路由的带宽确定各条路由的负载分担权重;

第一转发节点还包括存储模块,用于将各条路由的负载分担权重添加在权重数据中。

可选地,获取模块用于:

接收第二转发节点发送的第一路由通告报文,第二转发节点为各条路由中第一路由上第一转发节点的下一跳转发节点,第一路由为各条路由中的任一条,第一路由通告报文携带目的地址、以及第一路由中从第二转发节点至目的节点之间链路的带宽;

获取第一转发节点至第二转发节点之间的链路的带宽;

基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽。

可选地,第一路由通告报文携带的链路的带宽为第一路由中从第二转发节点至目的节点之间链路上的最小带宽;

获取模块用于:

确定第一转发节点至第二转发节点之间的链路的带宽和第一路由通告报文中携带的链路的带宽中的较小带宽,将较小带宽作为第一路由的带宽。

可选地,第一路由通告报文携带子类型长度值TLV,子TLV用于携带第一路由中从第二转发节点至目的节点之间链路的带宽。

可选地,第一路由通告报文中携带的链路的带宽为链路上的剩余带宽;

获取模块用于:

获取第一转发节点至第二转发节点之间的链路的剩余带宽;

基于第一转发节点至第二转发节点之间的链路的剩余带宽和路由通告报文中携带的剩余带宽,确定第一路由的带宽。

可选地,确定模块用于:

在第一路由的带宽满足触发条件的情况下,根据各条路由的带宽确定各条路由的负载分担权重;

其中,触发条件为第一路由的当前带宽与第一路由历史带宽之间的变化值大于参考幅度,第一路由的历史带宽为当前之前最近一次确定第一路由的负载分担权重时所使用的带宽。

可选地,第一路由通告报文携带子TLV,子TLV用于携带第一路由中从第二转发节点至目的节点之间链路的带宽。

可选地,接收模块还用于:

接收控制节点下发的各条路由的负载分担权重,各条路路由的负载分担权重是控制节点基于各条路由的带宽确定的;

第一转发节点还包括存储模块,用于将各条路由的负载分担权重添加在权重数据中。

可选地,发送模块还用于:

向控制节点上报链路状态报文,链路状态报文携带目的地址、以及第一路由上第一转发节点与下一跳节点之间的链路带宽,第一路由为多条路由中任一条。

可选地,

接收模块,还用于接收控制节点下发的各条路由的带宽;

确定模块,还用于根据各条路由的带宽确定各条路由的负载分担权重;

第一转发节点还包括存储模块,用于将各条路由的负载分担权重添加在权重数据中。

综上,如果从第一转发节点到达报文携带的目的地址所指示的目的节点的路由有多条,预先针对这多条路由分别配置有负载分担权重,以便于后续基于各条路由的负载分担权重选择一条路由来转发报文。由于任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率,因此,在本申请实施例中,不是盲目地进行等价负载分担,而是基于预先配置的负载分担权重来转发报文。如此便可基于等价负载分担过程转发报文中出现的问题来定制各条路由上的负载分担权重,从而避免等价负载分担转发报文时出现的问题再次发生。

需要说明的是:上述实施例提供的第一转发节点在转发报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的第一转发节点与转发报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图13是本申请实施例提供的另一种通信网络中的第一转发节点的结构示意图。该通信网络中包括多个转发节点,第一转发节点为多个转发节点中的任一个。如图13所示,第一转发节点1300包括:

获取模块1301,用于获取多条路由的带宽,多条路路由是指从第一转发节点到达目的节点的路由。具体实现方式可以参考图4实施例中的步骤401。

确定模块1302,还用于根据多条路由的带宽确定多条路由的负载分担权重,任一条路由的负载分担权重用于指示从多条路由中选中相应路由转发报文的概率。具体实现方式可以参考图4实施例中的步骤402。

可选地,获取模块用于:

接收第二转发节点发送的第一路由通告报文,第二转发节点为多条路由中第一路由上第一转发节点的下一跳转发节点,第一路由为多条路由中的任一条,第一路由通告报文携带目的地址、以及第一路由中从第二转发节点至目的节点之间链路的带宽;

获取第一转发节点至第二转发节点之间的链路的带宽;

基于第一转发节点至第二转发节点之间的链路的带宽和路由通告报文中携带的链路的带宽,确定第一路由的带宽。

可选地,任一条路由的带宽为任一条路由包括的各条链路的带宽的最小值;

获取模块用于:

确定第一转发节点至第二转发节点之间的链路的带宽和第一路由通告报文中携带的链路的带宽中的较小带宽,将较小带宽作为第一路由的带宽。

可选地,第一路由通告报文中携带的链路的带宽为链路上的剩余带宽;

获取模块用于:

获取第一转发节点至第二转发节点之间的链路的剩余带宽;

基于第一转发节点至第二转发节点之间的链路的剩余带宽和路由通告报文中携带的剩余带宽,确定第一路由的带宽。

可选地,确定模块用于:

在第一路由的带宽满足触发条件的情况下,根据各条路由的带宽确定各条路由的负载分担权重;

其中,触发条件为第一路由的当前带宽与第一路由历史带宽之间的变化值大于参考幅度,第一路由的历史带宽为当前之前最近一次确定第一路由的负载分担权重时所使用的带宽。

可选地,第一路由通告报文携带子类型长度值TLV,子TLV用于携带第一路由中从第二转发节点至目的节点之间链路的带宽。

综上,如果从第一转发节点到达报文携带的目的地址所指示的目的节点的路由有多条,预先针对这多条路由分别配置有负载分担权重,以便于后续基于各条路由的负载分担权重选择一条路由来转发报文。由于任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率,因此,在本申请实施例中,不是盲目地进行等价负载分担,而是基于预先配置的负载分担权重来转发报文。如此便可基于等价负载分担过程转发报文中出现的问题来定制各条路由上的负载分担权重,从而避免等价负载分担转发报文时出现的问题再次发生。

需要说明的是:上述实施例提供的第一转发节点在转发报文时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的第一转发节点与转发报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图14是本申请实施例提供的一种通信网络中的控制节点的结构示意图,该通信网络中还包括多个转发节点。如图14所示,该控制节点1400包括:

确定模块1401,用于确定从第一转发节点到达目的节点之间的多条路由,以及多条路由中各条路由的带宽,第一转发节点为多个转发节点中的任一个。具体实现方式可以参考图8实施例中的步骤801。

确定模块1401,还用于基于各条路由的带宽,确定各条路由的负载分担权重,任一条路由的负载分担权重用于指示从多条路由中选中相应路由转发报文的概率。具体实现方式可以参考图8实施例中的步骤802。

发送模块1402,用于向第一转发节点下发各条路由的负载分担权重。具体实现方式可以参考图8实施例中的步骤803。

可选地,确定模块用于:

获取各个转发节点中的一个或多个转发节点上报的链路状态报文,链路状态报文携带目的节点的目的地址、以及在到达目的节点的路由上,上报链路状态报文的节点与下一跳节点之间的链路的带宽;

根据上报的各个链路状态报文,确定从第一转发节点到达目的节点之间的多条路由,以及多条路由中各条路由的带宽。

可选地,任一路由的带宽是基于相应路由包括的各条链路的链路剩余带宽确定的;

确定模块用于:

确定各条路由中的第一路由的当前带宽与第一路由的历史带宽之间的变化值,第一路由为各条路由中任一条,第一路由的历史带宽是指当前时间之前最近一次确定各条路由的负载分担权重时所使用的第一路由的带宽;

在变化值大于参考幅度的情况下,执行基于各条路由的带宽,确定各条路由的负载分担权重的步骤。

可选地,各个转发节点包括接入业务网关ASG和基站侧网关CSG,CSG与ASG连接;

一个或多个转发节点上报的链路状态报文包括ASG上报的链路状态报文,ASG上报的链路状态报文还携带有CSG与下一跳节点之间链路的带宽。

综上,如果从第一转发节点到达报文携带的目的地址所指示的目的节点的路由有多条,预先针对这多条路由分别配置有负载分担权重,以便于后续基于各条路由的负载分担权重选择一条路由来转发报文。由于任一条路由的负载分担权重用于指示从这多条路由中选中相应路由转发该报文的概率,因此,在本申请实施例中,不是盲目地进行等价负载分担,而是基于预先配置的负载分担权重来转发报文。如此便可基于等价负载分担过程转发报文中出现的问题来定制各条路由上的负载分担权重,从而避免等价负载分担转发报文时出现的问题再次发生。

需要说明的是:上述实施例提供的控制节点在下发负载分担权重时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的控制节点与转发报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图15是本发明实施例提供的一种网络设备的结构示意图。该网络设备可以为上述实施例中任一转发节点,也可以为可控制节点。当网络设备为转发节点时,此时,该网络设备1500可以为交换机,路由器或者其他转发报文的网络设备,此时该网络设备1500的具体功能可以参考前述图3以及图4实施例中的第一转发节点的具体实现方式,在此不再赘述。当网络设备为控制节点时,此时该网络设备1500的具体功能可以参考前述图8实施例中的控制节点的具体实现方式,在此不再赘述。参见图15,该网络设备包括至少一个处理器1501,通信总线1502、存储器1503以及至少一个通信接口1504。

处理器1501可以是一个通用中央处理器(central processing unit,CPU)、特定应用集成电路(application-specific integrated circuit,ASIC)或一个或多个用于控制本申请方案程序执行的集成电路。当该网络设备作为通信网络多个的转发节点中的任一转发节点时,处理器1501用于确定图3以及图4实施例各条路由的负载分担权重。当该网络设备作为通信网络中的控制节点时,处理器1501用于确定图8实施例中各条路由的负载分担权重。具体功能在此不再赘述。

通信总线1502可包括一通路,在上述组件之间传送信息。

存储器1503可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1503可以是独立存在,通过通信总线1502与处理器1501相连接。存储器1503也可以和处理器1501集成在一起。

其中,存储器1503用于存储执行本申请方案的程序代码,并由处理器1501来控制执行。处理器1501用于执行存储器1503中存储的程序代码。程序代码中可以包括一个或多个软件模块。上述实施例中的控制节点或多个转发节点中任一转发节点均可以通过处理器1501以及存储器1503中的程序代码中的一个或多个软件模块,来确定用于开发应用的数据。这一个或多个软件模块可以为图13或图14任一实施例中提供的软件模块。

通信接口1504,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。当该网络设备作为通信网络多个的转发节点中的任一转发节点时,通信接口1504用于接收某个邻接转发节点发送的第一路由通告报文,并向其他邻接转发节点发送第二路由通告报文,具体实现方式可以参考图4实施例中的步骤401。或者,通信接口1504用于向控制节点上报链路状态报文,具体实现方式可以参考图8实施例中的步骤801。或者,通信接口1504用于接收数据报文,对基于转发表项转发该数据报文。此外,当该网络设备作为通信网络中的控制节点时,通信接口1504用于接收转发节点上报的链路状态报文,具体实现方式可以参考图8实施例中的步骤801。

在具体实现中,作为一种实施例,网络设备可以包括多个处理器,例如图15中所示的处理器1501和处理器1505。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

上述的网络设备可以是一个通用网络设备或者是一个专用网络设备。在具体实现中,网络设备可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digitalassistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本申请实施例不限定网络设备的类型。

可以理解的是,在图15所示网络设备为上述方法实施例中的任一的第一转发节点时,本实施例也可以基于通用的物理服务器结合网络功能虚拟化NFV技术实现的虚拟第一转发节点,所述虚拟第一转发节点为虚拟路由器,而且可以虚拟出第二,三,N个转发节点(根据实际需要)。所述虚拟第一转发节点可以是运行有用于提供发送消息功能的程序的虚拟机(英文:Virtual Machine,VM),所述虚拟机部署在硬件设备上(例如,物理服务器)。虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出具有上述功能的多个第一节点。此处不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如:固态硬盘(solid state disk,SSD))等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

44页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:位于路由器或交换机内的电路以及应用于路由器或交换机的帧处理方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!