本发明涉及通信技术领域,尤其涉及一种发送断言(assert)报文的方法和设备。
背景技术:
组播报文从组播源到达接收者(组播组成员),需要通过组播网络来实现组播报文的复制和转发。为了构建组播网络,需要配置组播协议,例如协议无关组播(protocolindependentmulticast,pim)协议是目前应用最为广泛的域内组播协议。通过pim协议构建的组播分发树,可以用来指导组播报文转发。pim协议可实现按需创建组播路由、动态响应网络拓扑变化、按照路由表项执行转发等功能。
如图1所示,在设备101-105运行pim协议。设备102将从设备101中获得的组播报文发送给下游设备104。设备103将从设备101中获得的同一组播报文发送给其下游设备105。而在上述转发组播报文的过程中,由于设备106是共享网路中的一个二层交换设备,例如处于共享局域网(localareanetwork,lan)中,设备106会将设备102发送给下游设备104的组播报文透传给与其相连的其他设备103-105,这样转发该组播报文的设备103还会从其出接口接收到该组播报文,使设备103发现同一lan中还有其他设备转发同一组播报文,这将触发设备103组播发送断言(assert)报文。设备102接收从设备103发送的assert消息后,通过assert选举规则选出获胜者来转发组播报文,保证同一lan中传输一份组播报文。
然而,随着组播业务的广泛部署,组播表项数量成倍增加,组播网络的设备很可能出现短时大量发送assert消息的情况,增大网络开销,这会对共享网络的设备造成较大的冲击,还可能因不能及时处理而导致assert消息被丢弃,影响组播报文的正常转发。
技术实现要素:
本申请实施例提供了一种发送和获取assert消息的方法和设备,用于以提升处理报文的效率,减轻网络设备开销。
第一方面,本申请提供了一种发送assert消息的方法,该方法包括网络节点基于一个组播源地址确定多个assert记录。该多个assert记录中的每个assert记录分别包括一个组播源地址和一个组播组地址,其中,该多个assert记录具备相同的组播源地址,该多个assert记录中不同assert记录包含的组播组地址互不相同。该网络节点根据该多个assert记录生成一个assert消息,其中该assert消息包括一个该组播源地址和该多个assert记录中的组播组地址。网络节点组播发送所述assert消息。
采用上述方法,网络节点根据多个assert记录生成一个assert消息,并将该assert消息组播发送给其他网络节点,可以提升发送assert消息的效率,尤其是在大量触发发送assert消息的场景下,上述方法可以减轻设备处理开销,以缩短组播流量重复发送的时间。
在一种可能的设计中,该网络节点基于一个组播源地址确定多个assert记录包括:该网络节点基于一个组播源地址确定第一assert记录集,所述第一assert记录集包括具备相同的组播源地址的第一assert记录和第二assert记录。
上述方法,基于同一组播源地址确定多个assert记录,并根据该多个assert记录生成一个assert消息,进一步提升了发送assert消息的效率。
在一种可能的设计中,该网络节点根据所述多个assert记录生成一个assert消息包括:所述网络节点提取一个该组播源地址,并组合第一assert记录和第二assert记录的组播组地址生成一个assert消息。
采用上述方法,网络节点可以提取出多个assert记录中相同的组播源地址,提高assert消息的利用率,以及提高发送assert消息的效率。
在一种可能的设计中,在该网络节点发送asser报文之前,该方法还包括该网络节点接收组播网中其他网络节点发送的hello报文,其中,该hello报文携带第一标识,该第一标识用于指示所述组播网中其他网络节点支持接收所述assert消息的功能。
采用上述方法,网络节点可以通过hello报文中携带的标识确定发送该hello报文的设备是否具备处理该assert消息的功能。
在一种可能的设计中,所述assert消息携带组播组地址的数目。
采用上述方法,网络节点可以将assert消息所包含的组播组地址的数目携带在该assert消息中。
第二方面,本申请提供了又一种发送assert报文的方法,该方法包括网络节点基于一个汇聚点rp地址确定第一assert记录集。该第一assert记录集包括多个assert记录,其中,每个assert记录分别包括一个组播源地址和一个组播组地址。多个assert记录中不同的assert记录分别包含第一组播组地址。该网络节点生成一个assert消息,其中,该assert消息包括一个所述rp地址、所述第一组播组地址和多组播源地址。网络节点组播发送该assert消息。
采用上述方法,网络节点根据rp地址将多个assert记录生成一个assert消息,并将该assert消息组播发送给其他网络节点,可以提升发送assert消息的效率,尤其是在大量触发发送assert消息的场景下,上述方法可以减轻设备处理开销,以缩短组播流量重复发送的时间。
在一种可能的设计中,该方法还包括:该网络节点基于所述rp地址确定第二assert记录集,其中,该第二assert记录集包括多个assert记录。第二assert记录集合中的每个assert记录分别包括一个组播源地址和一个组播组地址。第二assert记录集合中的多个assert记录中不同的assert记录分别包含第二组播组地址,该assert消息还包括所述第二组播组地址,第一组播组地址和第二组播组地址不同。
采用上述方法,使得assert消息包括不同的多个组播组地址,提高assert消息的利用率,提升发送assert消息的效率。
在一种可能的设计中,该网络节点生成一个assert消息包括:该网络节点提取所述rp地址、第一assert记录集和第二assert记录集的所述组播组地址,并组合第一assert记录集和第二assert记录集的组播源地址生成所述assert消息。
采用上述方法,网络节点可以提取出具备相同的rp地址,提高assert消息的利用率和发送assert消息的效率。
在一种可能的设计中,在所述网络节点发送asser报文之前,该方法还包括:该网络节点接收组播网中其他网络节点发送的hello报文,其中,hello报文携带第一标识,第一标识用于指示所述组播网中其他网络节点支持接收该assert消息的功能。
在一种可能的设计中,该assert消息携带组播组地址和组播源地址的数目。
第三方面,一种组播网络中获取assert消息的方法,该方法包括该网络节点接收assert消息,其中,该assert消息包括一个组播源地址和多个组播组地址。该网络节点通过解析所述assert消息获得多个assert记录,该多个assert记录中的每个assert记录分别包括所述组播源地址和所述多个组播组地址中的一个组播组地址,该多个assert记录中的组播组地址互不相同。
在一种可能的设计中,该网络节点解析所述assert消息获得多个assert记录包括:该网络节点将该assert消息携带的所述组播源地址和所述多个组播组地址进行组合,获取所述多个assert记录。
第四方面,一种组播网络中获取assert消息的方法,该方法包括:该网络节点接收assert消息,该assert消息包括汇聚点rp地址和第一assert记录集,所述第一assert记录集包括第一组播组地址和多个组播源地址。该网络节点通过解析第一assert记录集获取多个assert记录,所述多个assert记录中的每个assert记录分别包括一个组播源地址和一个组播组地址,所述多个assert记录中不同的assert记录分别包含第一组播组地址。
在一种可能的设计中,该assert消息还包括第二assert记录集。该方法还包括:该网络节点解析第二assert记录集获得多个assert记录,第二assert记录集中不同的assert记录分别包含第二组播组地址。第一组播组地址和第二组播组地址不同。
第五方面,本申请实施例提供了一种发送assert消息的网络节点,执行第一方面或第一方面任意一种可能的实现方式中的方法。具体的,该网络节点包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的单元。
第六方面,本申请实施例提供了又一种发送assert消息的网络节点,执行第二方面或第二方面任意一种可能的实现方式中的方法。具体的,该网络节点包括用于执行第二方面或第二方面的任意一种可能的实现方式中的方法的单元。
第七方面,本申请实施例提供了一种获取assert消息的网络节点,执行第三方面或第三方面任意一种可能的实现方式中的方法。具体的,该网络节点包括用于执行第三方面或第三方面的任意一种可能的实现方式中的方法的单元。
第八方面,本申请实施例提供了一种获取assert消息的网络节点,执行第四方面或第四方面任意一种可能的实现方式中的方法。具体的,该网络节点包括用于执行第四方面或第四方面的任意一种可能的实现方式中的方法的单元。
第九方面,提供一种发送或获取assert消息的网络设备,该设备包括处理器、收发器和存储器。上述第五方面、第六方面、第七方面以及第八方面的功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。例如,收发器,用于完成接收单元和发送单元的功能,处理器,用于完成确定、生成和获取单元的功能,存储器,用于处理器处理本申请实施例的方法的程序指令。处理器、收发器和存储器通过总线连接并完成相互间的通信。
第十方面,提供了一种发送和获取assert消息的系统,该系统包含前述第一方面和第二方面提供的网络设备,称为第一网络设备,以及第三方面、第四方面提供的网络设备,称为第二网络设备。第一网络设备用于基于一个组播源地址或者rp地址确定多条assert记录;生成一个assert消息;组播发送该assert消息。第二网络设备用于接收第一网络节点发送的assert消息和通过解析该assert消息获得多个assert记录。
第十一方面,本申请提供了一种计算机可读存储介质,用于储存为上述网络节点所用的计算机软件指令,其包括用于执行上述方面所设计的程序。
附图说明
图1为本申请实施例提供的一种发送组播报文的场景示意图。
图2为本申请实施例提供的一种发送assert消息的方法流程示意图。
图3为本申请实施例提供的一种assert消息的报文格式示意图。
图4为本申请实施例提供的又一种assert消息的报文格式示意图。
图5为本申请实施例提供的又一种assert消息的报文格式示意图。
图6为本申请实施例提供的pimhello报文的报文格式示意图。
图7为本申请实施例提供的转发assert消息的场景示意图。
图8为本申请实施例提供的一种发送assert消息第一网络设备结构示意图。
图9为本申请实施例提供的另一种发送assert消息第一网络设备结构示意图。
图10为本申请实施例提供的一种获取assert消息第二网络设备结构示意图。
图11为本申请实施例提供的另一种获取assert消息第二网络设备结构示意图。
图12为本申请实施例提供的一种发送和获取assert消息的系统结构示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
本发明实施例中的网络节点可以为路由器、交换机、或者为软件定义网络(software-definednetworking,sdn)中的转发器等网络设备。
如图1所示,提供了一种转发组播流量的应用场景示意图。该场景包括组播源、网络节点101-106和接收者(receiver)1-4。组播网络中的节点支持pim协议和网路群组管理协议(internetgroupmanagementprotocol,igmp),接收者1-4可以通过igmp加入组播组,网络节点101-106可以使用pim协议构建组播分发树。组播树中的叶子节点104和105可以通过转发节点102接收组播报文,也可以通过转发节点103接收组播报文。叶子节点105将接收到的组播报文转发给接收者1-2,叶子节点106将接收到的组播报文转发给接收者3-4。
在上述组播报文转发过程中,叶子节点104可以通过上游转发节点102加入组播组g1,叶子节点105可以通过转发节点103加入组播组g1。然而,在共享网络中,设备106可以为二层交换机,这样在转发节点102通过设备106向下游设备104发送的组播流量时,造成该组播流量通过设备106透传给转发节点103和叶子节点105,使得转发节点103出接口收到发下游发送的组播流量,导致组播流量转发。在这种情况下,转发节点102可以通过逆向路径转发(reversepathforwarding,rpf)检查将从下游接口收到的该组播流量丢弃,并触发转发节点102发送断言(assert)报文。该rpf检查用于实现组播报文转发的无环化,即rpf机制确保组播报文从正确的接口被收到,通过rpf检查的组播报文可以沿着组播树进行转发,如果数据包从错误的接口被收到,网络设备将丢弃该组播报文。
如上所述,转发节点可以通过断言机制来避免对相同组播报文的重复转发。如图1所示的场景中,转发节点102组播发送assert消息,使得其它转发节点在接收到该assert消息后,将接收到的assert消息中携带的参数与该设备的同类型参数做比较,通过竞选规则,例如比较优先级或者度量值(cost)等,选出胜利者(winner)的下游出接口,以确定一条转发路径。关于pimassert消息定义可以参见互联网工程任务小组(internetengineeringtaskforce,ietf)公开的征求意见稿(requirementforcomments,rfc)7761相关描述,本申请不再赘述。
然而,随着组播业务应用的广泛部署,组播网络中可能出现短时发送大量assert消息的场景,这对共享网络中的网络节点造成较大的冲击,增加网络节点处理了pimassert消息的数量,有可能造成assert消息被丢弃,导致延长网络中组播流量重复转发的时间。
为了解决上述技术问题,本申请提供了一种发送assert消息的方法、设备和系统。该方法可以通过扩展pimassert消息格式,将多个assert消息的内容根据相同的源地址或者rp地址进行分类,并将具有相同的源地址的assert消息或者具有相同的rp的多个assert消息聚合为一个assert消息,以提升报文处理的效率,尤其是在大量触发发送assert消息的场景下,上述方法可以减轻设备处理开销,缩短组播流量重复的时间。本发明实施例提供的发送和获取pimassert消息的方法、网络节点和系统解决问题的原理相似,因此,网络节点、方法和系统的实施例可以相互参见,相同或类似之处不再赘述。
结合图1所示的应用场景,参阅图2,本发明实施例提供了一种发送assert消息的方法,该方法包括:
s201,第一网络节点基于一个组播源地址或者汇聚点(rendezvouspoint,rp)地址确定多条assert记录。
在一个示例中,第一网络节点基于一个组播源地址确定多个assert记录,所述多个assert记录中的每个assert记录包括一个所述组播源地址和一个组播组地址,所述多个assert记录中不同assert记录包含的组播组地址互不相同。该assert记录可以是第一网络设备根据接收的assert消息内容确定的,也可以是第一网络设备生成的将要向外发送的assert消息的内容确定的。
在一个示例中,第一网络节点基于一个汇聚点rp地址确定第一assert记录集,所述第一assert记录集包括多个assert记录,所述多个assert记录中的每个assert记录分别包括一个组播源地址和一个组播组地址,所述多个assert记录中不同的assert记录分别包含第一组播组地址。
在一个示例中,第一网络节点接收组播流量,对于最短路径树(shortestpathtree,spt)使用组播源地址进行rpf检查,对于共享树(rptree,rpt)使用rp地址进行rpf检查。当第一网络节点发现同一lan中还存在其他节点转发同一个组播流量,则触发该第一网络节点组播发送assert消息,其中该assert消息的目的地址为永久组地址224.0.0.13。第一网络节点发送assert消息的触发条件还可以是接收到组播网络中其他网路设备发送的assert消息等,触发第一网络节点发送assert消息的触发条件有很多,本申请对此并不限制。
在一个示例中,每个assert记录包括第一网络节点的一条组播表项或路由,所述组播表项包括组播源地址和组播组地址,例如每个assert记录包括一个组播路由(s,g)或(*,g),其中*表示组播源地址为0。当该第一网络节点位于spt中,每个assert记录包括一个组播表项(s,g)。当该第一网络节点位于rpt,每个assert记录包括一个组播路由表(s,g)或(*,g),其中如果rpt中存在(s,g)表项,assert记录包括(s,g),如果没有(s,g)表项,存在(*,g)表项,则assert记录包括(*,g)表项。
在一个示例中,第一网络节点基于一个组播源地址确定多个assert记录包括:第一网络节点基于一个组播源地址确定第一assert记录集,所述第一assert记录集包括具备相同的组播源地址的第一assert记录和第二assert记录。
在一个示例中,第一网络节点基于所述rp地址确定第二assert记录集,所述第二assert记录集包括多个assert记录,所述第二assert记录集合中的每个assert记录分别包括一个组播源地址和一个组播组地址,所述第二assert记录集合中的多个assert记录中不同的assert记录分别包含第二组播组地址,所述assert消息还包括所述第二组播组地址,所述第一组播组地址和所述第二组播组地址不同。
s202,第一网络节点生成一个assert消息。
在一个示例中,第一网络节点根据所述多个assert记录生成一个assert消息,所述assert消息包括一个所述组播源地址和所述多个assert记录中的组播组地址。第一网络节点可以提取一个所述组播源地址,并组合所述第一assert记录和所述第二assert记录的组播组地址生成一个assert消息。
在一个示例中,第一网络节点提取所述rp地址、第一assert记录集和第二assert记录集的组播组地址,并组合所述第一assert记录集和所述第二assert记录集的组播源地址生成所述assert消息。
如图3所示,为本申请提供一种发送assert消息的格式,第一网络节点将第一assert记录和第二assert记录具备的同一组播源地址(sourceaddress)提取出来填写在图3所示的组播组地址(groupaddress)中。第一网络设备将第一assert记录的组地址填写在组播组地址1中,将第二assert记录的组地址填写在组播组地址2中。
举例来说,第一网络节点将位于spt中的组播表项(s,g)基于相同的组播源地址进行分类,并根据组播源地址将表项分为不同的assert记录集,每个assert记录集包括两个以上具备相同组播源地址的assert记录。例如第一assert记录集包括具备相同源地址s1的多个assert记录(s1,g1)和(s1,g2)。第一网络节点将s1填写在图3所示的“组播源地址”部分,将g1填写在“组播组地址1”部分,将g2填写在“组播组地址2”部分。
在一个示例中,第一网络节点根据同一rp地址确定第一assert记录集,第一assert记录集包括具备相同组播组地址的第一assert子记录集和第二assert子记录集,第一assert子记录集包括具备相同组播组地址的第三assert记录和第四assert记录,所述第二assert子记录集包括具备相同组播组地址的第五assert记录和第六assert记录。
举例来说,如图4所示,为本申请提供另一种发送assert消息的格式,第一网络节点将第一assert子记录集和第二assert子记录集具备的同一rp地址提取出来填写在图4所示的“rp地址”部分。第一网络设备将第一assert子记录集具备的相同的组播组组地址填写在组播组地址1部分,将第二assert子记录集具备的相同的组播组地址填写在组播组地址2部分。
如图5所示,为本申请提供一种图4中“组播组地址”部分的格式。“组播组地址”可以是从多个assert记录中提取的相同的组播组地址。例如,第一assert子记录集包括具备相同组播组地址的第三assert记录和第四assert记录。第二assert子记录集包括具备相同组播组地址的第五assert记录和第六assert记录。网络节点可以将第三assert记录和第四assert记录所具备的的相同的组播组地址提取出来填写在图5所示的“组播组地址”部分,将第三assert记录的组播源地址填写在“组播源地址1”部分,将和第四assert记录的组播源地址填写在“组播源地址2”部分。第三记录、第四记录、第五记录和第六记录可以是(s,g)或者(*,g)。
举例来说,第一网络节点将位于rpt中的路由表项基于相同的rp地址进行分类,并根据rp地址将表项分为不同的assert记录集,每个assert记录集包括两个以上具备相同rp地址的assert子记录集,每个assert子记录集包括多个assert记录,该多个assert记录具备相同的组播组地址。
在一个示例中,在第一网络点发送asser报文之前,所述方法还包括:第一网络节点接收组播网中其他网络节点发送的pimhello报文,该hello报文携带第一标识,所述第一标识用于协商支持将所述多条assert记录聚合在一个assert消息的报文格式。
在一个示例中,网络节点的每个使能了pim协议的接口上,都会对外发送hello报文。hello报文可以用于发现pim邻居、协调各项pim协议报文参数、维持邻居关系。hello报文的组播报文的目的地址是224.0.0.13(表示同一网段中所有pim网络节点)。
在一个示例中,hello报文包括用于协商支持聚合assert消息的标识,如图5所示,为本申请提供一种携带该标识的hello报文,其中,将“option类型”可以用于标记该assert消息是聚合多个assert记录的报文,可以将“打包-类型”用于标识具体的打包assert记录的方法,不同的打包方法,用不同的值标识。
在一个示例中,该assert消息还可以携带第二和第三标识。第二标识用于表示所述assert消息携带的组播组地址的数目,第三标识用于表示所述assert消息携带的组播源地址的数目。如图3所示,assert消息中的组播组地址数目(n)中的标识n表示assert消息携带的组播组地址的数目为n,还可以表示聚合的assert记录的数目。如图4所示,assert消息中的组播组地址数目(o)中的标识o表示assert消息携带的组播组地址的数目为o。如图5所示,assert消息中的组播源地址数目(p)中的标识p表示assert消息携带的组播组地址的数目为p。
在一个示例中,assert消息还包括参数信息,该参数信息可以包括到达组播源的单播路由的度量值(cost)和到达组播源的单播路由协议的优先级等。
s203,第一网络节点组播发送该assert消息。
在一个示例中,第一网络节点将经过聚合的assert消息组播发送给组播网络中的其他网络节点。该assert消息的格式可以是图3或者图4所示的格式。
在一个示例中,该assert消息可以携带两个以上不同的assert记录集,例如第一assert记录集和第二assert记录集。第一assert记录集可以具有相同的第一组播源地址,第二assert记录集可以具有相同的第二组播源地址,其中第一组播源地址和第二组播源地址不同。
在一个示例中,该assert消息携带了两个以上不同的assert记录集,例如第一assert记录集和第二assert记录集。第一assert记录集可以具有相同的第一rp地址,第二assert记录集可以具有相同的第二rp地址,其中第一rp地址和第二rp地址不同。
s204,第二网络节点接收第一网络节点发送的assert消息。
在一个示例中,第二网络节点接收assert消息,该assert消息可以是包括一个组播源地址和多个对应的组播组地址。assert消息还可以包括一个rp地址和第一assert记录集,所述第一assert记录集包括第一组播组地址和多个组播源地址。
s205,第二网络节点通过解析该assert消息获得多个assert记录。
在一个示例中,第一网络节点解析所述assert消息获得多个assert记录,所述多个assert记录中的每个assert记录分别包括所述组播源地址和所述多个组播组地址中的一个组播组地址,所述多个assert记录中的组播组地址互不相同。第一网络节点可以通过将所述assert消息携带的所述组播源地址和所述多个组播组地址进行组合,获取所述多个assert记录。
在一个示例中,第一网络节点解析第一assert记录集获取多个assert记录,所述多个assert记录中的每个assert记录分别包括一个组播源地址和一个组播组地址,所述多个assert记录中不同的assert记录分别包含第一组播组地址。
在一个示例中,第一网络节点解析第二assert记录集获得多个assert记录,所述第二assert记录集中不同的assert记录分别包含第二组播组地址,所述第一组播组地址和所述第二组播组地址不同。第一网络节点解析第二assert记录集获得多个assert记录,所述第二assert记录集中不同的assert记录分别包含第二组播组地址,所述第一组播组地址和所述第二组播组地址不同。
举例来说,第二网络节点接收到如图3所示的assert消息,第二网络节点将“组播源地址”部分分别和“组播组地址1”、“组播组地址2”,一直到“组播组地址n”进行组合,获得多个assert记录(组播源地址,组播组地址1)、(组播源地址,组播组地址2)等组播表项。
在一个示例中,第二网络节点确定assert消息携带第一assert记录集,该assert记录集包括一个rp地址和多个组播组地址。如图4所示,assert消息携带一个“rp地址”和多个“组播组地址”,每个“组播组地址”如图5所示对应多个源地址,例如“组播源地址1”和“组播源地址2”等。该第二网络节点将每个组播组地址,例如组播组地址1和与其对应的“组播源地址1”和“组播源地址2”等源地址进行组合获得(组播组地址1,组播源地址1)和(组播组地址1,组播源地址1)等多个assert记录。
在一个示例中,第二网络节点还可以从assert消息获得第一网络设备的参数信息,例如第一网络设到达组播源的单播路由的度量值(cost)和到达组播源的单播路由协议的优先级等参数。第二网络节点将获取的上述信息与自身携带的参数进行assert竞选,具体竞选规则例如可以是到达组播源的单播路由协议优先级较高者获胜。如果优先级相同,则到组播源的单播路由的开销较小者获胜。如果两个参数都相同,则接口ip地址开销最大者获胜。具体规则可以根据需要进行设置,此处对竞选规则不做限制。
上述方法还可以适用指定路由器(designatedrouter,dr)竞选场景中,例如图7所示,在上游网络节点701和702通过共享网络连接下游接收者5-6,接收者5-6发送因特网组播管理协议(internetgroupmanagementprotocol,igmp)或者组播监听者发现协议(multicastlistenerdiscovery,mld)report报文加入网络节点701和702,其中网络节点703为二层交换设备,该场景中网络节点703还可以是二层以太网络中二层交换设备等。根据rfc7761的4.3章节描述网络节点701和702之间发生dr竞选,只有成为dr才能在该网络中向接收者4-6转发组播流量,例如网络节点701当选dr。当网络节点701发生故障后由网络节点702转发组播流量,而在网络节点701的恢复的过程中,网络节点701开始转发组播流量,而网络节点702还未停止转发组播流量,此时网络节点701和网络节点702之间也可能发生assert竞选,触发网络节点701向网络节点702发送assert消息,网络节点702向网络节点701发送assert消息。当该场景中的组播转发节点超过2台时,网络节点需要发送和接收大量的assert消息,此时发送assert消息的网络节点可以采用上述图2所示的方法步骤发送经过聚合的assert消息,以提高报文的发送效率,减小网络开销。例如,网络节点701为图2中组播网络中的第一网络节点,网络节点702为图2中的第二网络节点;或者网络节点702为图2中组播网络中的第一网络节点,网络节点701为图2中的第二网络节点并执行相关操作。具体的发送assert消息和获取assert消息的方式可以参考图2所示实施例,此处不在赘述。
采用上述方法,通过扩展pimassert消息,使得多个assert消息根据源地址相同的组地址或者rp地址相同的组地址进行分类,并将同类型的assert消息聚合为一个assert消息,以提升报文处理的效率,尤其是在大量触发发送assert消息的场景下,上述方法可以减轻设备处理开销,提高报文处理效率。
图8示出了上述实施例中所涉及的发送assert消息的网络节点,例如第一网络节点的一种可能的结构示意图,该第一网络节点800可以实现图2实施例中的第一网络节点的功能。参阅图8,该第一网络节点800包括:确定单元801、生成单元802和发送单元803。这些单元可以执行上述方法实施例中第一网络节点的相应功能。确定单元801,用于支持第一网络节点800执行图2中的过程s201;生成单元802,用于支持第一网络节点800执行图2中的过程s202;发送单元803,用于支持第一网络节点800执行图2中的过程s203。例如,确定单元801,用于执行上述方法实施例中第一网络节点执行的各种信息的确定;生成单元802,用于执行上述方法实施例中第一网络节点执行的各种信息生成;发送单元803,用于执行上述方法实施例中第一网络节点执行的各种信息发送。举例来说,确定单元801,用于基于一个组播源地址或者汇聚点(rendezvouspoint,rp)地址确定多条assert记录;生成单元802,用于生成一个assert消息;发送单元803,用于组播发送该assert消息。具体执行过程请参考上述图2所示实施例中相应步骤的详细描述,这里不再一一赘述。
参阅图9所示,提供一种发送assert消息的网络节点的结构示意图,例如该第一网络设备900包括:处理器901和收发器902,还可以包括存储器903以及总线904。其中,处理器901、收发器902以及存储器903通过总线904相互连接;总线904可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。该第一网络设备900可以实现图2所示的实施例中的第一网络设备的功能。处理器901和收发器902可以执行上述方法示例中第一网络设备的相应功能。收发器902用于支持第一网络设备900执行图2中的过程s203,和/或本文所描述的技术中第一网络设备执行的其它过程。处理器901用于支持第一网络设备900执行图2中的过程s201和s202,和/或本文所描述的技术中第一网络设备执行的其它过程。存储器903,用于存储第一网络设备900的程序代码和数据。具体执行过程请参考上述图2所示实施例中相应步骤的详细描述,这里不再一一赘述。第一网络设备900可以为路由器或交换器或有转发功能的网络设备,网络设备900能够实现前述方法实施例中的第一网络设备的功能。
图10示出了上述实施例中所涉及的获取assert消息的网络节点的结构示意图,例如第二网络节点的一种可能的结构示意图,该第二网络节点1000可以实现图2实施例中的第二网络节点的功能。参阅图10,该第二网络节点1000包括:接收单元1001和获取单元1002。这些单元可以执行上述方法实施例中第二网络节点的相应功能。接收单元1001,用于支持第二网络节点1000执行图2中的过程s204;获取单元1002,用于支持第二网络节点1000执行图2中的过程s205。例如,接收单元1001,用于执行上述方法实施例中第一网络节点执行的各种信息的接收;获取单元1002,用于执行上述方法实施例中第二网络节点执行的各种信息获取。举例来说,接收单元1001,用于接收组播网络中其他网络节点发送的assert消息;获取单元1002,用于通过解析该assert消息获得多个assert记录。具体执行过程请参考上述图2所示实施例中相应步骤的详细描述,这里不再一一赘述。
参阅图11所示,提供一种获取assert消息的网络节点的结构示意图,例如该第二网络设备1100包括:处理器1101和收发器1102,还可以包括存储器1103以及总线1104。其中,处理器1101、收发器1102以及存储器1103通过总线1104相互连接;总线1104可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。该第二网络设备1100可以实现图2所示的实施例中的第二网络设备的功能。处理器1101和收发器1102可以执行上述方法示例中第二网络设备的相应功能。收发器1102用于支持第二网络设备1100执行图2中的过程s204,和/或本文所描述的技术中第一网络设备执行的其它过程。处理器1101用于支持第二网络设备1100执行图2中的过程s205,和/或本文所描述的技术中第二网络设备执行的其它过程。存储器1103,用于存储第二网络设备1100的程序代码和数据。具体执行过程请参考上述图2所示实施例中相应步骤的详细描述,这里不再一一赘述。第二网络设备1100可以为路由器或交换器或有转发功能的网络设备,网络设备1100能够实现前述方法实施例中的第一网络设备的功能。
参阅图12所示,提供一种发送和获取assert消息的系统1200的结构示意图,该系统1200用于实现前述方法实施例中的发送和获取assert报文的方法。该系统1200包括第一网络节点1201和第二网络节点1202。该第一网络节点1201和第二网络节点1202可以分别实现图2所示的实施例中的第一网络节点和第二网络节点的功能。例如,第一网络节点1201执行图2中的过程s201至s203,和/或用于本文所描述的技术中第一网络设备执行的其它过程。第二网络节点1202执行图2中的过程s204和s203,和/或用于本文所描述的技术中第一网络设备执行的其它过程。第一网络节点1201基于一个组播源地址或者rp地址确定多条assert记录,生成一个assert消息,并组播发送该assert消息。第二网络节点1202,用于接收第一网络节点1201发送的assert消息,通过解析该assert消息获得多个assert记录。
在一个示例中,该系统1200还包括第三网络节点。第一网络节点可以将生成的assert消息发送给第三网络节点。
本发明实施例还提供了一种存储介质,用于储存前述实施例中所用的软件指令,其包括用于执行前述实施例所示的方法的程序,当其在计算机或设备上执行时,使得所示计算机或设备执行前述方法实施例中的方法。
本发明实施例中提到的第一网络设备中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”和“第三”。
需说明的是,以上描述的任意装置实施例都仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的第一网络设备或控制器实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(readonlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、硬盘、移动硬盘、光盘或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。