组播报文负载分担的方法、设备和系统

文档序号:1941455 发布日期:2021-12-07 浏览:17次 >En<

阅读说明:本技术 组播报文负载分担的方法、设备和系统 (Method, equipment and system for sharing multicast message load ) 是由 谢经荣 丁成龙 段方红 于 2020-06-05 设计创作,主要内容包括:本申请提供了一种组播报文负载分担的方法,该方法包括:第一网络设备接收第一组播报文;根据组播转发表项确定与所述第一组播报文对应的第一链路组,所述第一链路组包括所述第一网络设备与第二网络设备之间的至少两条并行链路,所述第二网络设备为所述第一网络设备的邻居,所述至少两条并行链路不同;选择第一链路发送所述第一组播报文,所述第一链路为所述至少两条并行链路中的一条链路。本申请提供的技术方案在进行负载分担的多个并行链路中的一个或多个链路发生故障或恢复时,可以缩短组播业务的收敛时间。(The application provides a multicast message load sharing method, which comprises the following steps: the first network equipment receives a first multicast message; determining a first link group corresponding to the first multicast message according to a multicast forwarding table entry, where the first link group includes at least two parallel links between the first network device and a second network device, the second network device is a neighbor of the first network device, and the at least two parallel links are different; and selecting a first link to send the first multicast message, wherein the first link is one of the at least two parallel links. According to the technical scheme provided by the application, when one or more links in a plurality of parallel links for load sharing fail or recover, the convergence time of the multicast service can be shortened.)

组播报文负载分担的方法、设备和系统

技术领域

本申请涉及网络通信领域,并且更具体地,涉及组播报文负载分担的方法、第一网络设备、第二网络设备和系统。

背景技术

网络协议(internet protocol,IP)组播技术实现了IP网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载。

在对组播报文进行转发的两个节点之间存在有多个并行链路,且该多个并行链路没有被捆绑成聚合链路组(link aggregation group,LAG)的场景下,相关的技术方案中,通过将不同的组播源组(source group,S,G)往不同的链路上发送,从而实现多个并行链路下组播流量的负载分担。但是,如果进行负载分担的多个并行链路中的一个或多个发生故障或恢复时,上述相关的技术方案中组播业务的收敛时间较长。

因此,当进行负载分担的多个并行链路中的一个或多个链路发生故障或恢复时,如何在缩短组播业务的收敛时间成为当前亟需要解决的技术问题。

发明内容

本申请提供一种组播报文负载分担的方法以及第一网络设备,当进行负载分担的多个并行链路中的一个或多个发生故障或恢复时,可以缩短组播业务的收敛时间。

第一方面,提供了一种组播报文负载分担的方法,包括:第一网络设备接收第一组播报文;所述第一网络设备根据组播转发表项确定与所述第一组播报文对应的第一链路组,所述第一链路组中包括所述第一网络设备与第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同,所述第二网络设备为所述第一网络设备的邻居;所述第一网络设备选择第一链路发送所述第一组播报文,所述第一链路为所述至少两条并行链路中的一条链路。

需要说明的是,本申请中网络设备的链路为可用状态(up)可以理解为网络设备的链路正常,可以进行报文转发。网络设备的链路为不可用状态(down)可以理解为网络设备的链路故障,不能进行报文转发。

第一网络设备的第一链路和第二链路可以作为第一链路组中的两个成员,该第一链路组中的链路可以均为可用状态,也可以是部分不可用状态。第一链路组中的链路的数量可以是大于1的整数,本申请对此不做具体限定。

应理解,在本申请中,“成员”可以指进行第一链路组中的网络设备与负载分担链路连接的接口,所述接口包括以太口。

本申请中,第一链路组中包括的至少两条并行链路不同,可以理解为与在相连的节点之间的两条或两条以上的链路与聚合链路组(link aggregation group,LAG)不同。一种可能的实现方式中,第一链路组中的至少两条并行链路对应的物理接口不同。另一种可能的实现方式中,至少两条并行链路接口上的互联网协议(internet protocol,IP)地址不同。另一种可能的实现方式中,至少两条并行链路对应的物理接口不同和对应的IP地址都不同。另一种可能的实现方式中,第一链路组中的至少两条并行链路对应的链路类型不同。另一种可能的实现方式中,第一链路组中的至少两条并行链路对应的物理接口相同,但该物理接口上配置的虚拟局域网(virtual local area network,VLAN)不同,也就是说,节点之间并行的至少两条链路可以被当做不同的至少两条逻辑链路。

应理解,上述可以是每一个均不相同,或者还可以是只要有不相同的即可。以至少两条并行链路接口上的IP地址不同可以是至少两条并行链路接口上的IP地址均不相同,或者还可以是至少两条并行链路接口上的IP地址只要有不相同的即可。

上述技术方案中,在通过多个不同的并行链路对网络设备之间的发送的组播报文进行负载分担的场景中,如果进行负载分担的链路组中包括的至少一个链路发生故障或恢复时,只需要对链路组内的成员链路状态进行刷新,而不需要对传统的记录链路和组播流量之间的对应关系的组播转发表项进行刷新。由于少量的并行链路上可能存在大量的组播流量,重新刷新组播流量和链路之间的对应关系所需要刷新的条目也比较多。而刷新链路组内的成员链路状态所需要刷新的条目则比较少。因此,只对链路组内的成员链路状态进行刷新可以缩短组播业务的收敛时间。

在一种可能的实现方式中,所述组播转发表项中包括所述第一组播报文的第一标识和所述第一链路组的标识的对应关系;第一网络设备从所述第一组播报文中获取所述第一标识;所述第一网络设备根据所述组播转发表项和所述第一标识确定所述第一链路组。

应理解,第一组播报文的第一标识也可以称为第一组播报文的组播流标识。

第一链路组的标识可以是一个字符串的名字,或者也可以是一个链路组类型+整数值代表的链路组ID。

第一链路组的标识对应的成员表中可以包括该第一链路组的标识以及所述第一链路组中的至少两条并行链路分别对应的至少两个链路标识。

进一步的,所述组播转发表项中还包括所述第二链路组的标识和所述第二链路组中的至少两条并行链路的标识之间的对应关系。

在另一种可能的实现方式中,所述第一网络设备根据第一链路组的标识确定所述至少两条并行链路;所述第一网络设备根据所述第二链路组的标识和所述第二链路组中的至少两条并行链路的标识之间的对应关系,从所述至少两条并行链路中选择所述第一链路发送所述第一组播报文。

在另一种可能的实现方式中,所述方法还包括:在所述第一链路的状态为不可用时,所述第一网络设备从所述至少两条并行链路中选择除所述第一链路之外的第二链路,并通过所述第二链路发送所述第一组播报文。

在另一种可能的实现方式中,在所述第一网络设备根据组播转发表项确定所述第一组播报文对应的第一链路组之前,所述方法还包括:所述第一网络设备分别通过所述至少两条并行链路中每条链路接收所述第二网络设备发送的至少两个消息,所述每条链路发送的消息都包括所述第二网络设备的标识ID;所述第一网络设备确定所述至少两个消息中每个消息包括的所述第二网络设备的ID相同;所述第一网络设备基于所述第二网络设备的ID以及所述第一链路组和所述第二网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第一链路组。

在另一种可能的实现方式中,所述第一网络设备根据所述第一组播报文的特征信息,从所述至少两条并行链路中选择第一链路,并通过所述第一链路发送所述第一组播报文。

应理解,本申请对第一组播报文的特征信息不做具体限定,可以包括以下中的一种或多种:所述第一组播报文的源地址信息,所述第一组播报文的目的地址信息,所述第一组播报文的源地址和目的地址信息,所述第一组播报文的源地址对应的哈希结果信息,所述第一组播报文的目的地址信息对应的哈希结果信息,所述第一组播报文的源地址和目的地址信息对应的哈希结果信息。

在另一种可能的实现方式中,所述第一网络设备根据所述第一链路组中状态为可用的链路的数量对第一组播报文的特征信息取模,得到所述第一链路组中的第一链路,并通过第一链路发送所述第一组播报文。

第二方面,提供了另一种组播报文负载分担的方法,包括:第一网络设备通过第一链路接收第一组播加入消息,所述第一组播加入消息中包括第一组播报文的第一标识,所述第一链路为第一链路组中的一条链路;所述第一网络设备建立组播转发表项,所述组播转发表项中包括所述第一标识和第一链路组的标识的对应关系,所述第一链路组中包括所述第一网络设备和所述第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同。

在一种可能的实现方式中,所述方法还包括:第一网络设备通过第二链路接收第二组播加入消息,所述第二组播加入消息中包括第二组播报文的第二标识,所述第二链路为第二链路组中的一条链路;所述第一网络设备建立所述组播转发表项,所述组播转发表项中还包括第二标识和第二链路组的标识之间的对应关系。

在另一种可能的实现方式中,所述方法还包括:所述第一网络设备接收所述第一组播报文;所述第一网络设备根据所述组播转发表项确定所述第一组播报文对应的第一链路组;所述第一网络设备选择第二链路发送所述第一组播报文,所述第二链路为所述至少两条并行链路中的一条链路。

本申请中,第一链路组中包括的至少两条并行链路不同,可以理解为在相连的节点之间的两条或两条以上的链路没有被捆绑成聚合链路组(link aggregation group,LAG)。一种可能的实现方式中,第一链路组中的至少两条并行链路对应的物理接口不同,且该至少两条并行链路接口上的互联网协议(internet protocol,IP)地址不同。另一种可能的实现方式中,第一链路组中的至少两条并行链路对应的链路类型不同。另一种可能的实现方式中,第一链路组中的至少两条并行链路对应的物理接口相同,但该物理接口上配置的虚拟局域网(virtual local area network,VLAN)不同,也就是说,节点之间并行的至少两条链路可以被当做不同的至少两条逻辑链路。

应理解,上述可以是每一个均不相同,或者还可以是只要有不相同的即可。以至少两条并行链路接口上的IP地址不同可以是至少两条并行链路接口上的IP地址均不相同,或者还可以是至少两条并行链路接口上的IP地址只要有不相同的即可。

在另一种可能的实现方式中,所述网络设备从所述第一组播报文中获取所述第一标识;所述第一网络设备根据所述组播转发表项和所述第一标识确定所述第一链路组。

在另一种可能的实现方式中,所述第一网络设备根据所述第一链路组的标识确定所述至少两条并行链路;所述第一网络设备从所述至少两条并行链路中选择所述第一链路发送所述第一组播报文。

在另一种可能的实现方式中,所述方法还包括:在所述第一链路的状态为不可用时,所述第一网络设备从所述至少两条并行链路中选择除所述第一链路之外的第二链路,并通过所述第二链路发送所述第一组播报文。

在另一种可能的实现方式中,在所述第一网络设备根据所述组播转发表项确定所述第一组播报文对应的第一链路组之前,所述方法还包括:所述第一网络设备分别通过所述至少两条并行链路中每条链路接收所述第二网络设备发送的至少两个消息,所述每条链路发送的消息都包括所述第二网络设备的标识ID;所述第一网络设备基于所述第二网络设备的ID以及所述第一链路组和所述第二网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第一链路组。

具体的,上述两个消息可以是协议无关组播协议(protocol independentmulticast,PIM)hello消息。

在另一种可能的实现方式中,所述第一网络设备根据所述第一组播报文的特征信息,从所述至少两条并行链路中选择所述第二链路,并通过所述第二链路发送所述第一组播报文。

应理解,本申请对第一组播报文的特征信息不做具体限定,可以包括以下中的一种或多种:所述第一组播报文的源地址信息,所述第一组播报文的目的地址信息,所述第一组播报文的源地址和目的地址信息,所述第一组播报文的源地址对应的哈希结果信息,所述第一组播报文的目的地址信息对应的哈希结果信息,所述第一组播报文的源地址和目的地址信息对应的哈希结果信息。

在另一种可能的实现方式中,所述第一网络设备根据所述第一链路组中状态为可用的链路的数量对第一组播报文的特征信息取模,得到所述第一链路组中的第一链路,并通过第一链路发送所述第一组播报文。

第二方面和第二方面的任意一个可能的实现方式的有益效果和第一方面以及第一方面的任意一个可能的实现方式的有益效果是对应的,对此,不再赘述。

第三方面,提供了一种组播报文负载分担的方法,包括:第二网络设备通过第一链路接收第一网络设备发送的第一组播报文,其中,所述第一网络设备为所述第二网络设备的邻居,所述第一链路为第二链路组中的一条链路,所述第二链路组中包括所述第一网络设备与所述第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同;所述第二网络设备根据所述第一链路为所述第二链路组中的一条链路确定所述第一组播报文通过逆向路径转发RPF检查;所述第二网络设备对所述第一组播报文进行转发。

在一种可能的实现方式中,所述第二网络设备根据组播转发表项确定与所述第一组播报文对应的所述第二链路组;所述第二网络设备确定所述第一链路为第二链路组中的一条链路,并确定所述第一组播报文通过RPF检查。

在另一种可能的实现方式中,所述组播转发表项中包括所述第一组播报文的第一标识和所述第二链路组的标识的对应关系,所述第二网络设备从所述第一组播报文中获取第一标识;所述第二网络设备根据所述第一标识和所述组播转发表项,确定所述第二链路组。

在另一种可能的实现方式中,组播转发表项中还包括所述第二链路组的标识和所述第二链路组中的至少两条并行链路的标识之间的对应关系,所述第二网络设备根据所述第二链路组的标识和所述组播转发表项,确定所述第一链路为所述第二链路组中的一条链路。

在另一种可能的实现方式中,在所述第二网络设备根据所述第一链路为第二链路组中的一条链路确定所述第一组播报文通过逆向路径转发RPF检查之前,所述方法还包括:所述第二网络设备分别通过所述至少两条并行链路中每条链路接收所述第一网络设备发送的至少两个消息,所述每条链路发送的消息都包括所述第一网络设备的标识ID;所述第二网络设备确定所述至少两个消息中每个消息包括的所述第一网络设备的ID相同;所述第二网络设备基于所述第一网络设备的ID以及所述第二链路组和所述第一网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第二链路组。

具体的,上述两个消息可以是协议无关组播协议(protocol independentmulticast,PIM)hello消息。

第四方面,提供了一种第一网络设备,包括:接收模块、确定模块和选择模块。

接收模块用于接收第一组播报文;

确定模块用于根据组播转发表项确定与所述第一组播报文对应的第一链路组,所述第一链路组中包括所述第一网络设备与第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同,所述第二网络设备为所述第一网络设备的邻居;

选择模块用于选择第一链路发送所述第一组播报文,所述第一链路为所述至少两条并行链路中的一条链路。

在一种可能的实现方式中,所述组播转发表项中包括所述第一组播报文的第一标识和所述第一链路组的标识的对应关系;

所述确定模块具体用于通过获取模块从所述第一组播报文中获取所述第一标识;根据所述组播转发表项和所述第一标识确定所述第一链路组。

在另一种可能的实现方式中,所述选择模块具体用于根据第一链路组的标识确定所述至少两条并行链路;从所述至少两条并行链路中选择所述第一链路发送所述第一组播报文。

在另一种可能的实现方式中,所述选择模块还用于在所述第一链路的状态为不可用时,从所述至少两条并行链路中选择除所述第一链路之外的第二链路,并通过所述第二链路发送所述第一组播报文。

在另一种可能的实现方式中,所述接收模块还用于分别通过所述至少两条并行链路中每条链路接收所述第二网络设备发送的至少两个消息,所述每条链路发送的消息都包括所述第二网络设备的标识ID;所述确定模块还用于确定所述至少两个消息中每个消息包括的所述第二网络设备的ID相同;

第一网络设备还包括:

建立模块用于基于所述第二网络设备的ID以及所述第一链路组和所述第二网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第一链路组。

在另一种可能的实现方式中,所述选择模块具体用于:根据所述第一组播报文的特征信息,从所述至少两条并行链路中选择第一链路,并通过所述第一链路发送所述第一组播报文。

第五方面,提供了另一种第一网络设备,包括接收模块和建立模块。

接收模块用于通过第一链路接收第一组播加入消息,所述第一组播加入消息中包括第一组播报文的第一标识,所述第一链路为第一链路组中的一条链路;

建立模块用于建立所述组播转发表项,所述组播转发表项中包括所述第一标识和第一链路组的标识的对应关系,所述第一链路组中包括所述第一网络设备和所述第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同。

在一种可能的实现方式中,所述接收模块还用于:通过第二链路接收第二组播加入消息,所述第二组播加入消息中包括第二组播报文的第二标识,所述第二链路为第二链路组中的一条链路;

所述建立模块还用于建立所述组播转发表项,所述组播转发表项中还包括第二标识和第二链路组的标识之间的对应关系。

在另一种可能的实现方式中,所述接收模块还用于接收所述第一组播报文;

所述第一网络设备还包括确定模块,确定模块用于根据所述组播转发表项确定所述第一组播报文对应的第一链路组;

选择模块用于选择第二链路发送所述第一组播报文,所述第二链路为所述至少两条并行链路中的一条链路。

在另一种可能的实现方式中,所述确定模块具体用于通过获取模块从所述第一组播报文中获取所述第一标识;根据所述组播转发表项和所述第一标识确定所述第一链路组。

在另一种可能的实现方式中,所述确定模块具体用于根据所述第一链路组的标识确定所述至少两条并行链路;从所述至少两条并行链路中选择所述第一链路发送所述第一组播报文。

在另一种可能的实现方式中,所述选择模块还用于在所述第二链路的状态为不可用时,从所述至少两条并行链路中选择除所述第二链路之外的第三链路,并通过所述第三链路发送所述第一组播报文。

在另一种可能的实现方式中,所述接收模块还用于分别通过所述至少两条并行链路中每条链路接收所述第二网络设备发送的至少两个消息,所述每条链路发送的消息都包括所述第二网络设备的标识ID;

所述确定模块还用于确定所述至少两个消息中每个消息包括的所述第二网络设备的ID相同;

建立模块还用于基于所述第二网络设备的ID以及所述第一链路组和所述第二网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第一链路组。

在另一种可能的实现方式中,所述选择模块具体用于根据所述第一组播报文的特征信息,从所述至少两条并行链路中选择所述第二链路,并通过所述第二链路发送所述第一组播报文。

第六方面,提供了一种第二网络设备,包括接收模块、确定模块和发送模块。

接收模块用于通过第一链路接收第一网络设备发送的第一组播报文,其中,所述第一网络设备为所述第二网络设备的邻居,所述第一链路为第二链路组中的一条链路,所述第二链路组中包括所述第一网络设备和所述第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同;确定模块用于根据所述第一链路为第二链路组中的一条链路确定所述第一组播报文通过逆向路径转发RPF检查;发送模块用于对所述第一组播报文进行转发。

在一种可能的实现方式中,所述确定模块具体用于根据组播转发表项确定所述与所述第一组播报文对应的所述第二链路组;确定所述第一链路为第二链路组中的一条链路,并确定所述第一组播报文通过RPF检查。

在另一种可能的实现方式中,所述组播转发表项中包括所述第一组播报文的第一标识和所述第二链路组的标识的对应关系,

所述确定模块具体用于从所述第一组播报文中获取第一标识;根据所述第一标识和所述组播转发表项,确定所述第二链路组。

在另一种可能的实现方式中,所述组播转发表项中还包括所述第二链路组的标识和所述第二链路组中的至少两条并行链路的标识之间的对应关系,

所述确定模块具体用于根据所述第二链路组的标识和所述组播转发表项,确定所述第一链路为所述第二链路组中的一条链路。

在另一种可能的实现方式中,所述接收模块还用于分别通过所述至少两条并行链路中每条链路接收所述第一网络设备发送的至少两个消息,所述每条链路发送的消息都括所述第一网络设备的标识ID;所述确定模块,还用于确定所述至少两个消息中每个消息包括的所述第一网络设备的ID相同;

还包括建立模块,用于基于所述第一网络设备的ID以及所述第二链路组和所述第一网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第二链路组。

第七方面,提供了一种第一网络设备,所述第一网络设备具有实现上述第一方面或第一方面的任意可能的实现方式或第二方面或第二方面的任意可能的实现方式中第一网络设备行为的功能。所述功能可以基于硬件实现,也可以基于硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,第一网络设备的结构中包括处理器和接口,所述处理器被配置为支持第一网络设备执行上述方法中相应的功能。所述接口用于支持第一网络设备接收第一组播报文,或者用于支持发送所述第一组播报文。所述第一网络设备还可以包括存储器,所述存储器用于与处理器耦合,其保存第一网络设备必要的程序指令和数据。

在另一个可能的设计中,所述第一网络设备包括:处理器、发送器、接收器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、接收器、随机存取存储器以及只读存储器。其中,当需要运行第一网络设备时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导第一网络设备进入正常运行状态。在第一网络设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第一方面或第一方面的任意可能的实现方式或第二方面或第二方面的任意可能的实现方式中的方法。

第八方面,提供一种第一网络设备,所述第一网络设备包括:主控板和接口板,进一步,还可以包括交换网板。所述第一网络设备用于执行第一方面或第一方面的任意可能的实现方式或第二方面或第二方面的任意可能的实现方式中的方法。具体地,所述第一网络设备包括用于执行第一方面或第一方面的任意可能的实现方式或第二方面或第二方面的任意可能的实现方式中的方法的模块。

第九方面,提供一种第一网络设备,所述第一网络设备包括控制器和第一转发子设备。所述第一转发子设备包括:接口板,进一步,还可以包括交换网板。所述第一转发子设备用于执行第八方面中的接口板的功能,进一步,还可以执行第八方面中交换网板的功能。所述控制器包括接收器、处理器、发送器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接接收器、发送器、随机存取存储器以及只读存储器。其中,当需要运行控制器时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导控制器进入正常运行状态。在控制器进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第八方面中主控板的功能。

可以理解的是,在实际应用中,第一网络设备可以包含任意数量的接口,处理器或者存储器。

第十方面,提供了一种第二网络设备,所述第一网络设备具有实现上述第三方面或第三方面的任意可能的实现方式中第一网络设备行为的功能。所述功能可以基于硬件实现,也可以基于硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,第一网络设备的结构中包括处理器和接口,所述处理器被配置为支持第二网络设备执行上述方法中相应的功能。所述接口用于支持第二网络设备通过第一链路接收所述第一网络设备发送的组播报文。所述第二网络设备还可以包括存储器,所述存储器用于与处理器耦合,其保存第二网络设备必要的程序指令和数据。

在另一个可能的设计中,所述第二网络设备包括:处理器、发送器、接收器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、接收器、随机存取存储器以及只读存储器。其中,当需要运行第二网络设备时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导第二网络设备进入正常运行状态。在第二网络设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第三方面或第三方面的任意可能的实现方式中的方法。

第十一方面,提供一种第二网络设备,所述第二网络设备包括:主控板和接口板,进一步,还可以包括交换网板。所述第二网络设备用于执行第三方面或第三方面的任意可能的实现方式中的方法。具体地,所述第二网络设备包括用于执行第三方面或第三方面的任意可能的实现方式中的方法的模块。

第十二方面,提供一种第二网络设备,所述第二网络设备包括控制器和第一转发子设备。所述第一转发子设备包括:接口板,进一步,还可以包括交换网板。所述第一转发子设备用于执行第十一方面中的接口板的功能,进一步,还可以执行第十一方面中交换网板的功能。所述控制器包括接收器、处理器、发送器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接接收器、发送器、随机存取存储器以及只读存储器。其中,当需要运行控制器时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导控制器进入正常运行状态。在控制器进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第十一方面中主控板的功能。

可以理解的是,在实际应用中,第二网络设备可以包含任意数量的接口,处理器或者存储器。

第十三方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意可能的实现方式或上述第二方面或第二方面的任意可能的实现方式中的方法。

第十四方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第三方面或第三方面的任意可能的实现方式中的方法。

第十五方面,提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意可能的实现方式或上述第二方面或第二方面的任意可能的实现方式中的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasable PROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(hard drive)。

第十六方面,提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第三方面或第三方面的任意可能的实现方式中的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasable PROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(hard drive)。

第十七方面,提供一种芯片,该芯片包括处理器与数据接口,其中,处理器通过该数据接口读取存储器上存储的指令,以执行第一方面或第一方面任意一种可能的实现方式或第二方面或第二方面任意一种可能的实现方式中的方法。在具体实现过程中,该芯片可以以中央处理器(central processing unit,CPU)、微控制器(micro controller unit,MCU)、微处理器(micro processing unit,MPU)、数字信号处理器(digital signalprocessing,DSP)、片上系统(system on chip,SoC)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或可编辑逻辑器件(programmable logic device,PLD)的形式实现。

第十八方面,提供一种芯片,该芯片包括处理器与数据接口,其中,处理器通过该数据接口读取存储器上存储的指令,以执行第三方面或第三方面任意一种可能的实现方式中的方法。在具体实现过程中,该芯片可以以中央处理器(central processing unit,CPU)、微控制器(micro controller unit,MCU)、微处理器(micro processing unit,MPU)、数字信号处理器(digital signal processing,DSP)、片上系统(system on chip,SoC)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或可编辑逻辑器件(programmable logicdevice,PLD)的形式实现。

第十九方面,提供了一种系统,该系统包括上述第一网络设备和第二网络设备。

附图说明

图1是适用于本申请的一种可能的应用场景示意图。

图2是本申请实施例提供的一种组播报文负载分担的方法的示意性流程图。

图3是本申请实施例提供的另一种组播报文负载分担的方法的示意性流程图。

图4是本申请实施例提供的一种第一网络设备400的示意性结构图。

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

图6是本申请实施例的第一网络设备2000的硬件结构示意图。

图7为本申请实施例的另一种第一网络设备2100的硬件结构示意图。

图8是本申请实施例的另一种第二网络设备800的示意性结构图。

图9是本申请实施例的第一网络设备2200的硬件结构示意图。

图10是本申请实施例的另一种第一网络设备2400的硬件结构示意图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

组播(multicast)是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于传输控制协议(transmission control protocol,TCP)/互联网协议(internetprotocol,IP)网络上的多个接收者的数据传输方式。组播源经由网络中的链路向组播组中的组播组成员发送组播流,该组播组中的组播组成员均可以接收到该组播流。组播传输方式实现了组播源和组播组成员之间的点对多点的数据连接。由于组播流在每条网络链路上只需传递一次,且只有在链路出现支路时,该组播才会被复制。因此,组播传输方式提高了数据传输效率和减少了骨干网络出现拥塞的可能性。

网络协议(internet protocol,IP)组播技术实现了IP网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载。因此,在实时数据传送、多媒体会议、数据拷贝、交互式网络电视(internet protocol television,IPTV)、游戏和仿真等诸多方面都有广泛的应用。

下面先结合图1,对适用于本申请实施例的应用场景进行详细描述

图1是适用于本申请实施例的一种可能的组播场景的示意图。参见图1,该场景中可以包括组播接收者(receive,RCV)、路由器R1、路由器R2、路由器R3,组播源(source,SRC)。

应理解,本申请实施例中与组播接收者连接的路由器(router,R)可以有多个,为了便于描述,图1中以三个路由器,例如路由器R1/路由器R2/路由器R3作为示例进行说明。

组播接收者可以向与其连接的路由器R1发送组播加入消息,路由器R1再将组播加入消息发送给路由器R2,路由器R2再将组播加入消息发送给路由器R3。路由器R3从组播源接收组播数据流量后,沿着路由器R2和路由器R1发送给组播接收者。

应理解,本申请实施例对组播接收者发送的上述组播加入消息不做具体限定。可以是因特网组管理协议(internet group management protocol,IGMP)消息,或者也可以是组播发现监听协议(multicast listener discovery,MLD)消息,或者还可以是协议无关组播协议(protocol independent multicast,PIM)消息。

如图1所示,路由器R1和组播接收者之间可运行IGMP协议或MLD协议。路由器R1/路由器R2/路由器R3之间的网络可以是协议PIM,即路由器R1/路由器R2/路由器R3之间可运行PIM协议。路由器R3中连接组播源的接口上可运行PIM协议。

需要说明的是,组播源上连接路由器R3的接口上不需要运行PIM协议。

本申请实施例中,路由器R1/路由器R2/路由器R3之间可运行PIM协议,路由器R1/路由器R2/路由器R3上使能了PIM协议的接口会向外PIM hello报文。例如,路由器R1的链路接口使能PIM协议,该路由器R1的接口可以向路由器R2/路由器R3发送PIM hello报文。又如,路由器R2的链路接口使能PIM协议,该路由器R2的接口可以向路由器R1/路由器R3发送PIM hello报文。

需要说明的是,本申请实施例中设备的链路接口为可用状态(up)可以理解为该设备的链路正常,可以进行报文转发。如果设备的链路接口为不可用状态(down)可以理解为该设备的链路故障,不能进行报文转发。

参见图1,该网络中存在节点之间有多个并行链路的情况,例如,路由器R1和路由器R2之间有至少两条并行链路。为了便于描述,图1中以路由器R1和路由器R2之间有三条并行链路(链路1、链路2、链路3)为例进行说明。

应理解,本申请实施例中,并行链路可以是在相连的节点之间的两条或两条以上的链路,该两条或两条以上的链路不同。并且,该两条或两条以上的链路没有被捆绑成聚合链路组(link aggregation group,LAG)。

一种可能的实现方式中,第一链路组中的至少两条并行链路之间对应的物理接口不同,且该至少两条并行链路接口上的互联网协议(internet protocol,IP)地址不同。另一种可能的实现方式中,第一链路组中的至少两条并行链路对应的链路类型不同。另一种可能的实现方式中,第一链路组中的至少两条并行链路对应的物理接口相同,但该物理接口上配置的虚拟局域网(virtual local area network,VLAN)不同,也就是说,节点之间并行的至少两条链路可以被当做不同的至少两条逻辑链路。

还应理解,上述可以是每一个均不相同,或者还可以是只要有不相同的即可。以至少两条并行链路接口上的IP地址不同可以是至少两条并行链路接口上的IP地址均不相同,或者还可以是至少两条并行链路接口上的IP地址只要有不相同的即可。

相关的技术方案中,通过将不同的组播源组(source group,S,G)往不同的链路上发送,从而实现多个并行链路下组播流量的负载分担。具体的,以图1所示的场景为例,路由器R1和路由器R2之间有三条并行链路(链路1、链路2、链路3),假设路由器R1收到(S1,G1~G30)共30个组播组加入,路由器R1往路由器R2发送PIM组播加入消息时,根据SG组播转发表项,将G1~G10对应的组播加入消息通过链路1发送给路由器R2,将G11~G20对应的组播加入消息通过链路2发送给路由器R2,将G21~G30对应的组播加入消息通过链路3发送给路由器R2。相应的,路由器R2接收到组播流量后,根据SG组播转发表项,将G1~G10的组播流量沿着链路1发送给R1,将G11~G20的组播流量沿着链路2发送给路由器R1,将G21~G30的组播流量沿着链路3发送给路由器R1,从而实现组播业务的收敛。

应理解,组播业务的收敛可以是从链路上接收到组播源组对应的组播流量。

在上述相关的技术方案中,如果多个并行链路中的部分链路故障时,路由器R1需要更新SG组播转发表项并向新的链路发送组播加入消息。例如,当链路1故障时,路由器R1需要将G1~G10对应的组播加入消息重新沿着链路2发送给路由器R2,因此,路由器R1需要更新SG组播转发表项,并重新向链路2发送G1~G10对应的组播加入消息,得G1~G10以及G11~G20的组播加入消息均可以沿着链路2发送给路由器R2,从而实现G1~G10的组播流量可以沿着链路2从路由器R2发送给路由器R1。该相关技术方案中,对于多个并行链路中的部分链路故障或恢复的情况,由于需要更新SG组播转发表项并向新的链路发送组播加入消息,因此,在组播源组数量较多时,组播业务的收敛时间较长。

本申请实施例提供的组播报文负载分担的方法,可以在多个并行链路中的部分链路故障或恢复的情况下,缩短组播业务的收敛时间。

图2是本申请实施例提供的一种组播报文负载分担的方法的示意性流程图。如图2所示,该方法可以包括步骤210-230,下面分别对步骤210-230进行详细描述。

步骤210:第一网络设备接收第一组播报文。

举例来说,本申请实施例中的第一网络设备可以对应于图1中的路由器R2。路由器R2可以接收到组播源发送的第一组播报文。

步骤220:第一网络设备根据组播转发表项确定与第一组播报文对应的第一链路组。

本申请实施例中,第一链路组中包括第一网络设备和第一网络设备的邻居之间的至少两条并行链路,该至少两条并行链路不同。具体的有关并行链路的描述,请参见上文中的说明,此处不再赘述。

应理解,以图1所示的场景为例,该第一网络设备的邻居可以对应于图1中的路由器R1。第一链路组中可以包括路由器R1和路由器R2之间的至少两条并行链路,图1中是以路由器R1和路由器R2之间包括三条并行链路作为示例进行说明的。

可选的,在一些实施例中,组播转发表项中可以包括第一组播报文的第一标识和第一链路组的标识之间的对应关系。第一网络设备可以从第一组播报文中获取第一标识,并根据第一表示和组播转发表项确定所述第一链路组。

第一链路组的标识可以有多种,本申请实施例对此不做具体限定。一种可能的实现方式中,该第一链路组的标识可以是一个字符串的名字,该字符串的名字指示报文的出接口或入接口是一个链路组。另一种可能的实现方式中,该第一链路组的标识可以是一个链路组类型+整数值,其中,该整数值代表一个标识,该链路组类型指示所述标识为一个链路组的标识,也就是说,一个链路组类型+整数值可以指示报文的出接口或入接口是一个链路组。

可选的,在步骤220之前,第一网络设备可以建立第一链路组。具体的,第一网络设备可以分别通过所述至少两条并行链路接收第一网络设备的邻居发送的至少两个消息,所述至少两个消息中包括邻居的ID;第一网络设备确定至少两个消息中包括的邻居的ID相同,建立包括至少两条并行链路的第一链路组。作为示例,该消息例如可以是PIM hello消息。

可选的,在步骤220之前,第一网络设备还可以建立上述组播转发表项。具体的,第一网络设备可以接收第一网络设备的邻居发送的消息,该消息中包括第一组播报文的第一标识。该消息例如可以是PIM组播加入消息。第一网络设备可以确定接收第一网络设备的邻居发送的消息的链路为上述第一链路组中的一条链路,并建立上述组播转发表项。

步骤230:第一网络设备从第一链路组中的至少两条并行链路中选择第一链路发送第一组播报文。

其中,第一链路为第一链路组中至少两条并行链路中的一条。

作为示例,本申请实施例中第一网络设备可以根据第一链路组的标识确定至少两条并行链路,并从至少两条并行链路中选择第一链路发送第一组播报文。

上述技术方案中,在通过多个不同的并行链路对网络设备之间的发送的组播报文进行负载分担的场景中,如果进行负载分担的链路组中包括的至少一个链路发生故障或恢复时,只需要对链路组进行刷新,而不需要对传统的记录链路和组播流量之间的对应关系的组播转发表项进行刷新,从而可以缩短组播业务的收敛时间。

可选地,在一些实施例中,在所述第一链路的状态为不可用时,所述第一网络设备从所述至少两条并行链路中选择除所述第一链路之外的第二链路,并通过所述第二链路发送所述第一组播报文。

可选地,在一些实施例中,所述第一网络设备根据所述第一组播报文的特征信息,从所述至少两条并行链路中选择第一链路,并通过所述第一链路发送所述第一组播报文。

应理解,本申请对第一组播报文的特征信息不做具体限定,可以包括以下中的一种或多种:第一组播报文的源地址信息,第一组播报文的目的地址信息,第一组播报文的源地址和目的地址信息,第一组播报文的源地址对应的哈希结果信息,第一组播报文的目的地址信息对应的哈希结果信息,第一组播报文的源地址和目的地址信息对应的哈希结果信息。

可选地,在一些实施例中,第一网络设备可以根据所述第一链路组中状态为可用的链路的数量对第一组播报文的特征信息取模,得到第一链路组中的第一链路,并通过第一链路发送第一组播报文。

下面以图1所示的场景为例,结合图3中具体的例子,对本申请实施例提供的组播报文负载分担的方法的一种可能的实现过程进行详细描述。应理解,图3的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于图3的具体数值或具体场景。本领域技术人员根据所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。

图3是本申请实施例提供的另一种组播报文负载分担的方法的示意性流程图。如图3所示,该方法可以包括步骤310-350,下面分别对步骤310-350进行详细描述。

步骤310:路由器R1、路由器R1建立链路组表项。

本申请实施例中,可以通过配置将路由器R1和路由器R2之间并行的3条链路配置或自动判断或识别为一个“并行链路组”。

对于路由器R1上的配置,其中,“Pim-hello router-id 1.1.1.1”表示路由器R1在向外发送PIM Hello消息时携带的路由器R1的标识(router-identifier,router-id)为1.1.1.1。“Pim-hello Router-id enable”表示使能路由器R1的PIM接口在发送PIM Hello消息时可携带路由器R1的router-id值。“Pim load-balance link-group auto-generate”表示自动对并行链路生成链路组,在路由器R1的例子中,对路由器R1和路由器R2之间的3条并行链路的情况自动生成并行链路组及并行链路组的ID1。“Interface gi1/0/1”表示路由器R1上与组播接收者连接的接口,其IP地址为192.168.1.1。“Interface gi2/0/1”表示路由器R1上与连接R2的链路1的入接口,其IP地址为192.168.11.101。“Interface gi2/0/2”表示路由器R1上与连接R2的链路2的入接口,其IP地址为192.168.12.102。“Interfacegi2/0/3”表示路由器R1上与连接R2的链路3的入接口,其IP地址为192.168.13.103。

应理解,router-id可以标识一个路由器节点,即网络设备的标识ID。

应理解,对于路由器R1而言,路由器R1上向路由器R2发送组播加入消息的接口,是并行链路组的成员,那么,路由器R1上建立的组播入接口是一个并行链路组的入接口。

还应理解,在本申请实施方式中,“成员”可以指负载分担组中的网络设备与负载分担链路连接的接口。所述接口包括以太口,例如,图1中,路由器R1、路由器R2各有3个端口均作为负载分担组的成员。进一步,路由器R1可能包括另一个接口,这种情况下,路由器R1包括4个负载分担组成员。

对于路由器R2上的配置,其中,“Pim-hello router-id 2.2.2.2”表示路由器R1在向外发送PIM Hello消息时携带的路由器R2的router-id为2.2.2.2。“Pim-hello Router-id enable”表示使能了路由器R2的PIM接口在发送PIM Hello消息时可携带路由器R2的router-id值。“Pim load-balance link-group auto-generate”表示自动对并行链路生成链路组,在路由器R2的例子中,对路由器R2和路由器R1之间的3条并行链路的情况自动生成并行链路组及并行链路组的ID2。“Interface gi2/0/1”表示路由器R2上与连接R1的链路1的出接口,其IP地址为192.168.11.201。“Interface gi2/0/2”表示路由器R2上与连接R1的链路2的出接口,其IP地址为192.168.12.202。“Interface gi2/0/3”表示路由器R2上与连接R1的链路3的出接口,其IP地址为192.168.13.203。“Interface gi3/0/1”表示路由器R2上与路由器R3连接的接口,其IP地址为192.168.23.201。

对于路由器R3上的配置,其中,“Interface gi3/0/1”路由器R3上连接路由器R2的链路接口,其IP地址为192.168.23.231。

一种示例,对路由器R1建立链路组表项的具体实现过程进行详细描述。

路由器R2可以根据上述配置向路由器R1发送PIM Hello消息,该PIM Hello消息中携带路由器R2的router-id值2.2.2.2。路由器R1根据路由器R2发送的PIM Hello消息,建立如下的对应关系。

(Interface 2/0/1,邻居(neighbor,Nbr)=192.168.11.201,router-id=2.2.2.2)

(Interface 2/0/2,Nbr=192.168.12.202,router-id=2.2.2.2)

(Interface 2/0/3,Nbr=192.168.13.203,router-id=2.2.2.2)

路由器R1可以对于来自同一个节点(不同的节点可以通过router-id来区分)通过不同接口发来的消息,对每个router-id生成一个链路组。如下示出了路由器R1上建立的链路组中的链路表项。

链路组中的链路表项1:(链路组ID1,Interface gi2/0/1)

(链路组ID1,Interface gi2/0/2)

(链路组ID1,Interface gi2/0/3)

其中,链路组ID1可以和router-id具有一一对应的关系,例如ID1可以直接取自router-id值,也可以是一个不同于router-id值并和它建立如下的对应关系。该对应关系也可以称为链路组表项。

链路组表项1:(链路组ID1,router-id=2.2.2.2)

另一种示例,对路由器R2建立链路组表项的具体实现过程进行详细描述。

路由器R1可以根据上述配置向路由器R2发送PIM Hello消息,该PIM Hello消息中携带路由器R1的router-id值1.1.1.1。路由器R2根据路由器R1发送的PIM Hello消息,建立如下的对应关系。

(Interface 2/0/1,Nbr=192.168.11.101,router-id=1.1.1.1)

(Interface 2/0/2,Nbr=192.168.12.102,router-id=1.1.1.1)

(Interface 2/0/3,Nbr=192.168.13.103,router-id=1.1.1.1)

路由器R2可以对于来自同一个节点(不同的节点可以通过router-id来区分)通过不同接口发来的消息,对每个router-id生成一个链路组。如下示出了路由器R2上建立的链路组中的链路表项。

链路组中的链路表项2:(链路组ID2,Interface gi2/0/1)

(链路组ID2,Interface gi2/0/2)

(链路组ID2,Interface gi2/0/3)

其中,链路组ID2可以和router-id具有一一对应的关系,例如ID2可以直接取自router-id值,也可以是一个不同于router-id值并和它建立如下的对应关系。该对应关系也可以称为链路组表项。

链路组表项2:(链路组ID2,router-id=1.1.1.1)

另一种示例,对路由器R3而言,路由器R3可以通过接口gi3/0/1接收路由器R2发送的PIM Hello消息,该PIM Hello消息中携带路由器R2的router-id值2.2.2.2。由于路由器R3的配置中既没有配置router-id,也没有配置使能路由器R3的PIM接口在发送PIM Hello消息时可携带路由器R3的router-id值。因此,路由器R3可以选择忽略路由器R2的router-id值2.2.2.2,而按照普通的PIM Hello消息进行处理。

上述路由器R1发送PIM Hello消息时携带的router-id值,以及路由器R2发送PIMHello消息时携带的router-id值可以是一个32位值。例如,在互联网协议第4版(internetprotocol version 4,IPv4)网络下router-id值可能就是一个和回环(loopback)口IP地址相同的32位值。又如,在互联网协议第6版(internet protocol version 6,IPv6)网络下router-id值可能就是一个32位值,且其和loopback口的IPv6地址没有关系。

步骤315:路由器R1收到组播接收者发送的组播加入消息,并建立SG组播转发表项1。

组播接收者向路由器R1发送组播源组(S,G)加入消息,路由器R1收到组播源组(S,G)加入消息后,可以根据S查询单播路由的下一跳和出接口。当下一跳接口为gi2/0/1或gi2/0/2或gi2/0/3中的任何一个接口时,路由器R1可以通过下一跳接口向路由器R2发送组播源组(S,G)加入消息。

路由器R1还会建立如下的组播转发表项1:

((S,G),输入接口标记(input interface flag,IIFFlag)<链路组>,输入接口(input interface,IIF)=链路组ID1,输出接口标记(output interface flag,OIFFlag)<null>,输出接口列表(output interface list,OIFList)=gi1/0/1)

应理解,本申请实施例中,组播转发表项1用于路由器R1对从路由器R2上接收到的组播流量进行转发。在组播转发表项1中,IIFFlag指示路由器R1上建立的组播流量的入接口是一个并行链路组,IIF表示该并行链路组的标识为ID1。OIFFlag<null>为指示路由器R1中对接收到的组播流量进行转发的出接口不是一个链路组,OIFList表示路由器R1对接收到的组播流量进行转发的出接口为接口gi1/0/1。

本申请实施例中,路由器R1上建立的转发表项如下所示。

SG组播转发表项1:

((S,G),IIFFlag<链路组>,IIF=链路组ID1,OIFFlag<null>,OIFList=gi1/0/1)

链路组中的链路表项1:

(链路组ID1,Interface gi2/0/1)

(链路组ID1,Interface gi2/0/2)

(链路组ID1,Interface gi2/0/3)

链路组表项1:

(链路组ID1,router-id=2.2.2.2)

作为示例,上文中第一链路组的标识可以为SG组播转发表项1中的IIFFlag以及IIF,其中,IIFFlag用于指示路由器R1上建立的组播流量的入接口是一个并行链路组。IIF用于表示该并行链路组的标识为ID1,ID1可以标识所述第一链路组中包括所述三条并行链路。

可选地,在一些实施例中,当有多个组播表项,例如有30个组播表项,那么路由器R1上建立的转发表项如下所示。

步骤320:路由器R2收到路由器R1发送的组播加入消息,并建立SG组播转发表项2。

路由器R1向路由器R2发送组播源组(S,G)加入消息,路由器R2收到组播源组(S,G)加入消息后,如果,路由器R2确定接收到的组播源组(S,G)加入消息是来自于gi2/0/1或gi2/0/2或gi2/0/3中的任何一个接口时,路由器R2可以建立如下的SG组播转发表项2:

((S,G),IIFFlag<null>,IIF=Interface gi3/0/1,OIFFlag<链路组>,OIFList=链路组ID2)

应理解,本申请实施例中,SG组播转发表项2用于路由器R2对从路由器R3上接收到的组播流量进行转发。在SG组播转发表项2中,IFFlag表示路由器R2上建立的组播流量的入接口不是一个链路组,IIF表示路由器R2上接收组播流量的入接口是Interface gi3/0/1。OIFFlag表示路由器R2上建立的组播流量的出接口是一个并行链路组,OIFList表示该并行链路组的标识为ID2。

本申请实施例中,路由器R2上建立的转发表项如下所示。

组播转发表项2:

(S,G,IIFFlag<null>,IIF=Interface gi3/0/1,OIFFlag<链路组>,OIFList=链路组ID2)

链路组中的链路表项2:

(链路组ID2,Interface gi2/0/1)

(链路组ID2,Interface gi2/0/2)

(链路组ID2,Interface gi2/0/3)

链路组表项2:

(链路组ID2,router-id=1.1.1.1)

可选地,在一些实施例中,当有多个组播表项,例如有30个组播表项,那么路由器R2上建立的转发表项如下所示。

步骤325:路由器R3接收路由器R2发送的组播加入消息,并将该组播加入消息发送给组播源。

步骤330:组播源在接收到组播加入消息后,将组播流量发送给路由器R3。

步骤335:路由器R3通过连接路由器R2的链路接口Interface gi3/0/1,将组播流量发送给路由器R2。

步骤340:路由器R2在接收到路由器R3发送的组播流量后,根据建立的转发表项将组播流量发送给路由器R1。

路由器R2在接收到路由器R3发送的组播流量后,可以根据建立的转发表项对组播流量进行转发。

具体的,作为示例。路由器R2从链路接口Interface gi3/0/1接收到组播流量后,可以根据SG组播转发表项2中的OIFFlag确定组播流量的出接口是一个并行链路组。并根据OIFList查找链路组中的链路表项2,从链路组中的链路表项2中的多个出接口中选择一个接口向路由器R1发送组播流量。

应理解,本申请实施例中从链路组中的链路表项2中的多个出接口中选择一个接口向路由器R1发送组播流量的实现方式有多种。一种可能的实现方式中,路由器R2可以对组播源S、组播组G进行哈希计算,得到哈希计算结果,然后按照链路组ID2中状态为可用的链路接口的数量取模(也可称为取余)。链路组中的链路表项2中可用的链路接口有3个,分别是接口gi2/0/1、接口gi2/0/2、接口gi2/0/3。当取模的结果为0/1/2时,路由器R2可以分别通过接口gi2/0/1、接口gi2/0/2、接口gi2/0/3将组播流量转发给路由器R1。

本申请实施例中路由器R2确定链路组ID2中链路接口状态的具体实现方式有多种。为了便于描述,下面以确定链路组ID2中链路1的接口gi2/0/1对应的状态为例。

具体的,作为一种示例,路由器R2中连接路由器R1的链路1的接口使能PIM协议,并向路由器R1中连接路由器R2的链路1的接口发送报文,例如,PIM HELLO报文。同样的,路由器R1中连接路由器R2的链路1的接口使能PIM协议,并向路由器R2中连接路由器R1的链路1的接口发送报文,例如,PIM HELLO报文。如果路由器R1可以接收到路由器R2发送的消息,路由器R1可以理解为连接路由器R2的链路1的接口状态为可用状态。如果路由器R1接收不到路由器R2发送的消息,路由器R1可以理解为连接路由器R2的链路1的接口状态为不可用状态。

作为另一种示例,路由器R1和路由器R2之间还可以部署双向转发检测(bidirectional forwarding detection,BFD),路由器R1可以根据BFD检测结果确定路由器R1中连接路由器R2的链路1的接口状态,同样的,路由器R2也可以根据BFD检测结果确定路由器R2中连接路由器R1的链路1的接口状态。例如,路由器R1和路由器R2之间每隔一定的时间间隔发送BFD检测报文。如果路由器R1中链路1的接口在时间间隔可以接收到路由器R2中链路1的接口发送的BFD检测报文,路由器R1可以理解为路由器R2中连接路由器R1的链路1链路接口状态为可用状态。如果路由器R1中链路1的接口在时间间隔没有接收到路由器R2中链路1的接口发送的BFD检测报文,路由器R1可以理解为路由器R2中连接路由器R1的链路1链路接口状态为不可用状态。

步骤345:路由器R1收到路由器R2发送的组播流量后,根据建立的转发表项对该组播流量进行转发。

以路由器R1通过接口gi2/0/1接收到路由器R2发送的组播流量为例。路由器R1可以根据实际接收到组播流量的接口和SG组播转发表项中IIF字段代表的接口是否一致,从而确定组播流量是否能通过逆向路径转发(reverse path forwarding,RPF)检查。

组播路由协议通过已有的单播路由信息来确定上、下游邻居设备,创建组播路由表项。运用RPF检查机制,可以确保组播数据流能够沿组播分发树(路径)正确的传输,同时可以避免转发路径上环路的产生。

本申请实施例中,一方面,路由器R1通过接口gi2/0/1接收到路由器R2发送的组播流量,根据SG组播转发表项1中的IIFFlag确定组播流量的入接口为并行链路组ID1,并根据链路组中的链路表项1确定接口gi2/0/1属于链路组ID1中的一个链路接口。另一方面,路由器R1根据SG组播转发表项1中的IIF确定预期接收到路由器R2发送的组播流量的是链路组ID1。因此,路由器R1通过接口gi2/0/1接收到路由器R2发送的组播流量能通过RPF检查,从而可将组播流量转发给组播接收者,例如,路由器R1可以通过连接组播接收者的接口gi1/0/1,将组播流量转发给组播接收者。

对于路由器R1而言,无论是从链路1或链路2或链路3收到到路由器R2发送的组播流量,该组播流量都能通过RPF检查,并往路由器R1的下游出接口发送。

步骤350:当路由器R1和路由器R2之间包括至少两条链路的并行链路组中有链路故障或恢复时,路由器R1和路由器R2通过刷新链路组中的链路表项实现组播业务的收敛。

作为一个示例,以并行链路组中的链路1发生故障。当链路1发生故障的时候,路由器R1检查该链路1所属的并行链路组中是否还有其他链路是可用的状态。如果该链路1所属的并行链路组中还有其他链路是可用的状态,路由器R1节点不再向路由器R2发送组播加入消息或组播退出消息。

路由器R1和路由器R2可以刷链路组中的链路表项,路由器R1和路由器R2上刷新后的链路组中的链路表项如下所示。

对于路由器R2而言,路由器R2在接收到路由器R3发送的组播流量后,可以根据转发表项对组播流量进行转发。路由器R2可以对组播源S、组播组G进行哈希计算,得到哈希计算结果,然后按照链路组ID2中状态为可用的链路接口的数量取模(也可称为取余)。链路组中的链路表项2中可用的链路接口有2个,分别是接口gi2/0/2、接口gi2/0/3。当取模的结果为0/1时,路由器R2可以分别通过接口gi2/0/2、接口gi2/0/3将组播流量转发给路由器R1。

对于路由器R1而言,无论是从接口gi2/0/2还是从接口gi2/0/3接收到路由器R2发送的组播流量,由于接口gi2/0/2、接口gi2/0/3属于链路组ID1,路由器R1通过接口gi2/0/2或接口gi2/0/3接收到路由器R2发送的组播流量均能通过RPF检查,从而可将组播流量转发给组播接收者。

作为另一个示例,以并行链路组中的链路1和链路2发生故障。当链路1和链路2发生故障的时候,路由器R1检查该链路1和链路2所属的并行链路组中是否还有其他链路是可用的状态。如果该链路1和链路2所属的并行链路组中还有其他链路是可用的状态,那么,路由器R1节点可以不再向路由器R2发送组播加入消息或组播退出消息。

路由器R1和路由器R2可以刷链路组中的链路表项,路由器R1和路由器R2上刷新后的链路组中的链路表项如下所示。

对于路由器R2而言,路由器R2在接收到路由器R3发送的组播流量后,可以根据转发表项对组播流量进行转发。路由器R2可以对组播源S、组播组G进行哈希计算,得到哈希计算结果,然后按照链路组ID2中状态为可用的链路接口的数量取模(也可称为取余)。链路组中的链路表项2中可用的链路接口有1个,为接口gi2/0/3。当取模的结果为0时,路由器R2可以通过接口gi2/0/3将组播流量转发给路由器R1。

对于路由器R1而言,由于接口gi2/0/3属于链路组ID1,路由器R1通过或接口gi2/0/3接收到路由器R2发送的组播流量均能通过RPF检查,从而可将组播流量转发给组播接收者。

因此,在链路故障的情况下,路由器R1和路由器R2都不需要针对各个SG组播转发表项进行刷新,只需要对于链路组中的链路表项进行刷新。其收敛速度和SG组播转发表项的数量无关,因此可以缩短组播业务的收敛时间。

作为另一个示例,以并行链路组中的链路1和链路2从故障状态恢复到正常状态。当链路1和链路2发生故障的时候,路由器R1检查该链路1和链路2所属的并行链路组中是否还有其他链路是可用的状态。如果该链路1和链路2所属的并行链路组中还有其他链路是可用的状态,那么,路由器R1节点可以不再向路由器R2发送组播加入消息或组播退出消息。

路由器R1和路由器R2可以刷链路组中的链路表项,路由器R1和路由器R2上刷新后的链路组中的链路表项如下所示。

对于路由器R2而言,路由器R2在接收到路由器R3发送的组播流量后,可以根据转发表项对组播流量进行转发。路由器R2可以对组播源S、组播组G进行哈希计算,得到哈希计算结果,然后按照链路组ID2中状态为可用的链路接口的数量取模(也可称为取余)。链路组中的链路表项2中可用的链路接口有3个,分别是接口gi2/0/1、接口gi2/0/2、接口gi2/0/3。当取模的结果为0/1/2时,路由器R2可以分别通过接口gi2/0/1、接口gi2/0/2、接口gi2/0/3将组播流量转发给路由器R1。

对于路由器R1而言,无论是从接口gi2/0/1、接口gi2/0/2还是从接口gi2/0/3接收到路由器R2发送的组播流量,由于接口gi2/0/1、接口gi2/0/2、接口gi2/0/3属于链路组ID1,路由器R1通过接口gi2/0/1、接口gi2/0/2或接口gi2/0/3接收到路由器R2发送的组播流量均能通过RPF检查,从而可将组播流量转发给组播接收者。

因此,在链路从故障状态恢复到正常状态的情况下,路由器R1和路由器R2都不需要针对各个SG组播转发表项进行刷新,只需要对于链路组中的链路表项进行刷新。其收敛速度和SG组播转发表项的数量无关,因此可以缩短组播业务的收敛时间。

上文结合图1至图3,详细描述了本申请实施例提供的组播报文负载分担的方法,下面将结合图4至图10,详细描述本申请的装置的实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。

图4是本申请实施例提供的一种第一网络设备400的示意性结构图。图4所示的该第一网络设备400可以执行上述实施例的方法中第一网络设备执行的相应步骤。如图4所示,所述第一网络设备400包括:接收模块410,确定模块420,选择模块430。

应理解,第一网络设备400可以执行上述实施例的方法中第一网络设备执行的相应步骤,例如图2方法中的第一网络设备执行的相应步骤。具体的,接收模块410可以实现图2中步骤210的方法流程,用于接收第一组播报文;确定模块420可以实现图2中的步骤220的方法流程,用于根据组播转发表项确定与所述第一组播报文对应的第一链路组;选择模块430可以实现图2中的步骤230的方法流程,用于选择第一链路发送所述第一组播报文。

可选地,所述至少两条并行链路之间对应的物理接口的互联网协议IP地址不同。

可选地,所述组播转发表项中包括所述第一组播报文的第一标识和所述第一链路组的标识的对应关系;

所述确定模块420具体用于通过获取模块450从所述第一组播报文中获取所述第一标识;根据所述组播转发表项和所述第一标识确定所述第一链路组。

可选地,所述选择模块430具体用于根据第一链路组的标识确定所述至少两条并行链路;从所述至少两条并行链路中选择所述第一链路发送所述第一组播报文。

可选地,所述选择模块430还用于在所述第一链路的状态为不可用时,从所述至少两条并行链路中选择除所述第一链路之外的第二链路,并通过所述第二链路发送所述第一组播报文。

可选地,所述接收模块410还用于分别通过所述至少两条并行链路中每条链路接收所述第二网络设备发送的至少两个消息,所述每条链路发送的消息都包括所述第二网络设备的标识ID;

所述确定模块420,还用于确定所述至少两个消息中每个消息包括的所述第二网络设备的ID相同;

所述第一网络设备400还包括:

建立模块440,用于基于所述第二网络设备的ID,建立包括所述至少两条并行链路的所述第一链路组。进一步,所述第一网络设备基于所述第二网络设备的ID建立第一链路组、获取第一链路组ID、建立第一链路组和第二网络设备ID的对应关系、第一链路组和至少两条并行链路的对应关系。

可选地,所述选择模块430具体用于根据所述第一组播报文的特征信息,从所述至少两条并行链路中选择第一链路,并通过所述第一链路发送所述第一组播报文。

图5是本申请实施例提供的另一种第一网络设备500的示意性结构图。如图5所示,所述第一网络设备500包括:接收模块510和建立模块520。

应理解,第一网络设备500可以执行上述实施例的方法中第一网络设备执行的相应步骤。

具体的,作为示例,第一网络设备500中的接收模块510用于通过第一链路接收第一组播加入消息;建立模块520用于建立所述组播转发表项。

其中,所述第一组播加入消息中包括第一组播报文的第一标识,所述第一链路为第一链路组中的一条链路。所述组播转发表项中包括所述第一标识和第一链路组的标识的对应关系,所述第一链路组中包括所述第一网络设备和所述第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同。

可选地,所述接收模块510还用通过第二链路接收第二组播加入消息,所述第二组播加入消息中包括第二组播报文的第二标识,所述第二链路为第二链路组中的一条链路;

所述建立模块520还用于建立所述组播转发表项,所述组播转发表项中还包括第二标识和第二链路组的标识之间的对应关系。

可选地,所述接收模块510还用于接收所述第一组播报文;所述第一网络设备500还包括确定模块530,选择模块540。其中,确定模块530用于根据所述组播转发表项确定所述第一组播报文对应的第一链路组;选择模块540用于选择第二链路发送所述第一组播报文,所述第二链路为所述至少两条并行链路中的一条链路。

可选地,所述确定模块530具体用于通过获取模块550从所述第一组播报文中获取所述第一标识;根据所述组播转发表项和所述第一标识确定所述第一链路组。

可选地,所述确定模块530具体用于根据所述第一链路组的标识确定所述至少两条并行链路;从所述至少两条并行链路中选择所述第一链路发送所述第一组播报文。

可选地,所述选择模块540还用于在所述第二链路的接口状态为不可用时,从所述至少两条并行链路中选择除所述第二链路之外的第三链路,并通过所述第三链路发送所述第一组播报文。

可选地,所述接收模块510还用于分别通过所述至少两条并行链路中每条链路接收所述第二网络设备发送的至少两个消息,所述每条链路发送的消息都包括所述第二网络设备的标识ID;

所述确定模块530,还用于确定所述至少两个消息中每个消息包括的所述第二网络设备的ID相同;

所述建立模块520还用于基于所述第二网络设备的ID以及第一链路组和第二网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第一链路组。

可选地,所述选择模块540具体用于根据所述第一组播报文的特征信息,从所述至少两条并行链路中选择所述第二链路,并通过所述第二链路发送所述第一组播报文。

图6是本申请实施例的第一网络设备2000的硬件结构示意图。图6所示第一网络设备2000可以执行上述实施例的方法中第一网络设备执行的相应步骤。

如图6所示,所述第一网络设备2000包括处理器2001、存储器2002、接口2003和总线2004。其中接口2003可以通过无线或有线的方式实现,具体来讲可以是网卡。上述处理器2001、存储器2002和接口2003通过总线2004连接。

应理解,第一网络设备2000可以执行上述实施例的方法中第一网络设备执行的相应步骤,例如,图2方法中的第一网络设备执行的相应步骤。

作为示例,处理器2001用于:接收第一组播报文;根据组播转发表项确定与所述第一组播报文对应的第一链路组;并选择第一链路发送所述第一组播报文。

其中,所述第一链路组包括所述第一网络设备与第二网络设备之间的至少两条并行链路,所述第二网络设备为所述第一网络设备的邻居,所述至少两条并行链路不同。所述第一链路为所述至少两条并行链路中的一条链路。

具体的,第一网络设备2000中的接口2003可以实现图2中步骤210的方法流程,用于接收第一组播报文;第一网络设备2000中的处理器2001可以实现图2中的步骤220的方法流程,用于根据组播转发表项确定与所述第一组播报文对应的第一链路组;第一网络设备2000中的处理器2001还可以实现图2中的步骤230的方法流程,用于选择第一链路发送所述第一组播报文。

所述接口2003具体可以包括发送器和接收器,用于第一网络设备实现上述收发。例如,所述接口2003用于接收第一组播报文。又例如,所述接口2003用于发送所述第一组播报文。又例如,所述接口2003用于接收所述第一网络设备的邻居发送的消息。

所述处理器2001用于执行上述实施例中由第一网络设备进行的处理。例如,根据组播转发表项确定与所述第一组播报文对应的第一链路组。又如,建立组播转发表项;和/或用于本文所描述的技术的其他过程。作为举例,所述处理器2001用于支持图2中的步骤220、步骤230。存储器2002包括操作系统20021和应用程序20022,用于存储程序、代码或指令,当处理器或硬件设备执行这些程序、代码或指令时可以完成方法实施例中涉及第一网络设备的处理过程。可选的,所述存储器2002可以包括只读存储器(read-only memory,ROM)和随机存取存储器(random access memory,RAM)。其中,所述ROM包括基本输入/输出系统(basic input/output system,BIOS)或嵌入式系统;所述RAM包括应用程序和操作系统。当需要运行第一网络设备2000时,通过固化在ROM中的BIOS或者嵌入式系统中的bootloader引导系统进行启动,引导第一网络设备2000进入正常运行状态。在第一网络设备2000进入正常运行状态后,运行在RAM中的应用程序和操作系统,从而,完成方法实施例中涉及第一网络设备2000的处理过程。

可以理解的是,图6仅仅示出了第一网络设备2000的简化设计。在实际应用中,第一网络设备可以包含任意数量的接口,处理器或者存储器。

图7为本申请实施例的另一种第一网络设备2100的硬件结构示意图。图7所示的第一网络设备2100可以执行上述实施例的方法中第一网络设备执行的相应步骤。

如图7所述,第一网络设备2100包括:主控板2110、接口板2130、交换网板2120和接口板2140。主控板2110、接口板2130和2140,以及交换网板2120之间通过系统总线与系统背板相连实现互通。其中,主控板2110用于完成系统管理、设备维护、协议处理等功能。交换网板2120用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。接口板2130和2140用于提供各种业务接口(例如,POS接口、GE接口、ATM接口等),并实现数据包的转发。

应理解,第一网络设备2100可以执行上述实施例的方法中第一网络设备执行的相应步骤,例如,图2方法中的第一网络设备执行的相应步骤。

具体的,接口板2130可以实现图2中步骤210的方法流程,用于接收第一组播报文;主控板2110可以实现图2中的步骤220的方法流程,用于根据组播转发表项确定与所述第一组播报文对应的第一链路组;主控板2110可以实现图2中的步骤230的方法流程,用于选择第一链路发送所述第一组播报文。

接口板2130可以包括中央处理器2131、转发表项存储器2134、物理接口卡2133和网络处理器2132。其中,中央处理器2131用于对接口板进行控制管理并与主控板上的中央处理器进行通信。转发表项存储器2134用于保存表项,例如,上文中的组播转发表项。物理接口卡2133用于完成流量的接收和发送。

具体的,物理接口卡2133用于接收第一组播报文,物理接口卡2133接收到所述第一组播报文后,将所述第一组播报文由经由中央处理器2131发送到中央处理器2111,中央处理器2111处理所述第一组播报文。

应理解,本申请实施例中接口板2140上的操作与所述接口板2130的操作一致,为了简洁,不再赘述。应理解,本实施例的第一网络设备2100可对应于上述方法实施例所具有的功能和/或所实施的各种步骤,在此不再赘述。

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

图8是本申请实施例提供的一种第二网络设备800的示意性结构图。图8所示的该第二网络设备800可以执行上述实施例的方法中第二网络设备执行的相应步骤。如图8所示,所述第二网络设备800包括:接收模块810,确定模块820,发送模块830。

应理解,第二网络设备800可以执行上述实施例的方法中第二网络设备执行的相应步骤,例如图3中的路由器R1执行的相应步骤。

具体的,作为示例,第二网络设备800中的接收模块810用于通过第一链路接收第一网络设备发送的第一组播报文;确定模块820用于根据所述第一链路为第二链路组中的一条链路确定所述第一组播报文通过逆向路径转发RPF检查;发送模块830用于对所述第一组播报文进行转发。

其中,所述第一网络设备为所述第二网络设备的邻居,所述第一链路为第二链路组中的一条链路,所述第二链路组中包括所述第一网络设备和所述第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同。

可选地,所述确定模块820具体用于:根据组播转发表项确定所述与所述第一组播报文对应的所述第二链路组;确定所述第一链路为第二链路组中的一条链路,并确定所述第一组播报文通过RPF检查。

可选地,所述组播转发表项中包括所述第一组播报文的第一标识和所述第二链路组的标识的对应关系,所述确定模块820具体用于:从所述第一组播报文中获取第一标识;根据所述第一标识和所述组播转发表项,确定所述第二链路组。

可选地,所述组播转发表项中还包括所述第二链路组的标识和所述第二链路组中的至少两条并行链路的标识之间的对应关系,所述确定模块820具体用于:根据所述第二链路组的标识和所述组播转发表项,确定所述第一链路为所述第二链路组中的一条链路。

可选地,所述接收模块810还用于分别通过所述至少两条并行链路中每条链路接收所述第一网络设备发送的至少两个消息,所述每条链路发送的消息都括所述第一网络设备的标识ID;所述确定模块820还用于确定所述至少两个消息中每个消息包括的所述第一网络设备的ID相同;

所述第二网络设备800还包括:建立模块840,用于基于所述第一网络设备的ID以及第二链路组和第一网络设备的ID之间的对应关系,建立包括所述至少两条并行链路的所述第二链路组。

图9是本申请实施例的第二网络设备2200的硬件结构示意图。图9所示第二网络设备2200可以执行上述实施例的方法中第二网络设备执行的相应步骤。

如图9所示,所述第二网络设备2200包括处理器2201、存储器2202、接口2203和总线2204。其中接口2203可以通过无线或有线的方式实现,具体来讲可以是网卡。上述处理器2201、存储器2202和接口2203通过总线2204连接。

应理解,第二网络设备2200可以执行上述实施例的方法中第二网络设备执行的相应步骤,例如图3中的路由器R1。

作为示例,第二网络设备2200中的处理器2201具体用于:通过第一链路接收第一网络设备发送的第一组播报文;根据所述第一链路为第二链路组中的一条链路确定所述第一组播报文通过逆向路径转发RPF检查;并对所述第一组播报文进行转发。

所述接口2203具体可以包括发送器和接收器,用于第二网络设备实现上述收发。例如,该接口用于支持通过第一链路接收第一网络设备发送的第一组播报文。又例如,该接口2203用于对所述第一组播报文进行转。

所述处理器2201用于执行上述实施例中由第二网络设备进行的处理。例如,用于根据所述第一链路为第二链路组中的一条链路确定所述第一组播报文通过逆向路径转发RPF检查;和/或用于本文所描述的技术的其他过程。存储器2202包括操作系统22021和应用程序22022,用于存储程序、代码或指令,当处理器或硬件设备执行这些程序、代码或指令时可以完成方法实施例中涉及第二网络设备的处理过程。可选的,所述存储器2202可以包括只读存储器(read-only memory,ROM)和随机存取存储器(random access memory,RAM)。其中,所述ROM包括基本输入/输出系统(basic input/output system,BIOS)或嵌入式系统;所述RAM包括应用程序和操作系统。当需要运行第二网络设备2200时,通过固化在ROM中的BIOS或者嵌入式系统中的bootloader引导系统进行启动,引导第二网络设备2200进入正常运行状态。在第二网络设备2200进入正常运行状态后,运行在RAM中的应用程序和操作系统,从而,完成方法实施例中涉及第二网络设备2200的处理过程。

可以理解的是,图9仅仅示出了第二网络设备2200的简化设计。在实际应用中,第二网络设备可以包含任意数量的接口,处理器或者存储器。

图10为本申请实施例的另一种第二网络设备2400的硬件结构示意图。图10所示的第二网络设备2400可以执行上述实施例的方法中第二网络设备执行的相应步骤。

如图10所述,第二网络设备2400包括:主控板2410、接口板2430、交换网板2420和接口板2440。主控板2410、接口板2430和2440,以及交换网板2420之间通过系统总线与系统背板相连实现互通。其中,主控板2410用于完成系统管理、设备维护、协议处理等功能。交换网板2420用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。接口板2430和2440用于提供各种业务接口(例如,POS接口、GE接口、ATM接口等),并实现数据包的转发。

应理解,第二网络设备2400可以执行上述实施例的方法中第二网络设备执行的相应步骤,例如图3中的路由器R1执行的相应步骤。

接口板2430可以包括中央处理器2431、转发表项存储器2434、物理接口卡2433和网络处理器2432。其中,中央处理器2431用于对接口板进行控制管理并与主控板上的中央处理器进行通信。转发表项存储器2434用于保存表项,例如,上文中的组播转发表项。物理接口卡2433用于完成流量的接收和发送。

应理解,本申请实施例中接口板2440上的操作与所述接口板2430的操作一致,为了简洁,不再赘述。应理解,本实施例的第二网络设备2400可对应于上述方法实施例所具有的功能和/或所实施的各种步骤,在此不再赘述。

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

本申请实施例还提供了一种组播报文负载分担的系统,包括第一网络设备和第二网络设备。其中,第一网络设备可以执行上述实施例的方法中第一网络设备执行的相应步骤,例如图2方法中的第一网络设备或图3中的路由器R2。第二网络设备可以执行上述实施例的方法中第二网络设备执行的相应步骤,例如图3中的路由器R1。

作为示例,第一网络设备用于:接收第一组播报文;根据组播转发表项确定与所述第一组播报文对应的第一链路组,所述第一链路组中包括所述第一网络设备与第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同,所述第二网络设备为所述第一网络设备的邻居;选择第一链路发送所述第一组播报文,所述第一链路为所述至少两条并行链路中的一条链路。

所述第二网络设备用于:通过第一链路接收第一网络设备发送的第一组播报文,其中,所述第一网络设备为所述第二网络设备的邻居,所述第一链路为第二链路组中的一条链路,所述第二链路组中包括所述第一网络设备与所述第二网络设备之间的至少两条并行链路,所述至少两条并行链路不同;根据所述第一链路为所述第二链路组中的一条链路确定所述第一组播报文通过逆向路径转发RPF检查;对所述第一组播报文进行转发。

本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,ROM)、可编程ROM(programmable ROM,PROM)、可擦除的PROM(erasable PROM,EPROM)、Flash存储器、电EPROM(electrically EPROM,EEPROM)以及硬盘驱动器(hard drive)。

本申请实施例还提供了一种计算机程序产品,应用于第一网络设备中,该计算机程序产品包括:计算机程序代码,当该计算机程序代码被计算机运行时,使得该计算机执行上述任一方面的任意可能的实现方式中的方法。

本申请实施例还提供了一种芯片系统,应用于第一网络设备中,该芯片系统包括:至少一个处理器、至少一个存储器和接口电路,所述接口电路负责所述芯片系统与外界的信息交互,所述至少一个存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述至少一个处理器执行,以进行上述各个方面的所述的方法中所述第一网络设备的操作。

在具体实现过程中,该芯片可以以中央处理器(central processing unit,CPU)、微控制器(micro controller unit,MCU)、微处理器(micro processing unit,MPU)、数字信号处理器(digital signal processing,DSP)、片上系统(system on chip,SoC)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或可编辑逻辑器件(programmable logic device,PLD)的形式实现。

本申请实施例还提供了一种计算机程序产品,应用于第一网络设备中,所述计算机程序产品包括一系列指令,当所述指令被运行时,以进行上述各个方面的所述的方法中所述第一网络设备的操作。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

39页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于服务网格的流量控制方法、系统、设备及介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!