CN115134289A - 组播报文发送方法及装置 - Google Patents
组播报文发送方法及装置 Download PDFInfo
- Publication number
- CN115134289A CN115134289A CN202110304363.4A CN202110304363A CN115134289A CN 115134289 A CN115134289 A CN 115134289A CN 202110304363 A CN202110304363 A CN 202110304363A CN 115134289 A CN115134289 A CN 115134289A
- Authority
- CN
- China
- Prior art keywords
- node
- multicast
- entity
- multicast routing
- routing information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 126
- 238000004891 communication Methods 0.000 claims abstract description 73
- 238000005538 encapsulation Methods 0.000 claims description 73
- 238000012545 processing Methods 0.000 claims description 47
- 238000010586 diagram Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 32
- 230000009471 action Effects 0.000 description 20
- 239000000284 extract Substances 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101150055297 SET1 gene Proteins 0.000 description 1
- 101150117538 Set2 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
- H04L45/566—Routing instructions carried by the data packet, e.g. active networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/48—Routing tree calculation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/15—Flow control; Congestion control in relation to multipoint traffic
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种组播报文发送方法及装置,涉及通信技术领域。该方法中,第一节点获取包括第二节点的组播路由信息的第一组播报文,并向第二节点发送第一组播报文。其中,第二节点为组播树中第一节点的非叶子子节点,一个节点的组播路由信息包括该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点确定在组播树中的子节点,通过将组播路由信息嵌入到组播报文中,组播报文中包括的树形递归结构的组播路由信息可以描述某个组播树或组播树的子树的报文转发信息,可扩展性好,并且根据需要可以方便的进行转发路径的规划和指定。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种组播报文发送方法及装置。
背景技术
组播是指一个发送端把携带相同数据的报文发送给多个特定的接收端,最初的实现是发送端把一个报文中的数据按照接收端的数量拷贝成多份,分别进行封装发送给各个接收端,这种做法导致了报文在某些链路上重复传输,降低了网络资源的利用率,增加了网络拥塞的可能。
为了解决上述问题,业界提出了一系列组播技术,最典型的有稀疏模式协议无关组播(protocol independent multicast-sparse mode,PIM-SM)。其中,PIM-SM需要在网络中为每条组播流维护多播转发信息库(multicast forwarding information base,MFIB)表,有严重的可扩展性问题。
发明内容
本申请实施例提供了一种组播报文发送方法及装置,用于提高组播报文的可扩展性。
第一方面,提供了一种组播报文发送方法,包括:第一节点获取包括第二节点的组播信息的第一组播报文,并向第二节点发送第一组播报文。其中,第二节点为组播树中第一节点的非叶子子节点,第二节点的组播信息中包括第二节点的组播路由信息,一个节点的组播路由信息包括该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点确定在组播树中的子节点。第一方面提供的方法,将组播路由信息嵌入到组播报文中,组播报文中包括的树形递归结构的组播路由信息可以描述某个组播树或组播树的子树的报文转发信息,可扩展性好,并且根据需要可以方便的进行转发路径的规划和指定。
在一种可能的实现方式中,一个节点的组播路由标识用于该节点在该节点对应的第一节点集合内确定该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。
在一种可能的实现方式中,一个节点的组播路由标识包括该节点的子节点的个数信息和该节点的每个子节点的标识。
在一种可能的实现方式中,一个节点的组播路由标识包括第三字段和X个第四字段;所述第三字段用于指示该节点的子节点的个数X,一个所述第四字段用于指示该节点的一个子节点的标识。该种可能的实现方式,在组播树中的节点极低密度的组播场景下,可以提供最高效率的组播封装。
在一种可能的实现方式中,一个节点的组播路由标识包括N个第三字段,N为该节点对应的第一节点集合中的节点个数,一个所述第三字段用于指示所述第一节点集合中的一个节点是否为该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。该种可能的实现方式,在组播树中的节点较高密度的组播场景下,可以提供最高效率的组播封装。
在一种可能的实现方式中,一个节点的组播路由标识包括第三字段,所述第三字段中包括第一组标识,所述第一组标识用于指示该节点对应的第一节点组,一个节点对应的第一节点组中的节点均为该节点的子节点。该种可能的实现方式,在组播树中的节点最高密度的组播场景下,可以提供最高效率的组播封装。
在一种可能的实现方式中,一个节点的组播路由信息还包括该节点的寻址字段;其中,一个节点的寻址字段用于该节点确定该节点的非叶子子节点的组播路由信息的位置。
在一种可能的实现方式中,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的长度。该种可能的实现方式,可以节约寻址字段的bit开销,提高资源利用率。
在一种可能的实现方式中,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的起始位置或结束位置。该种可能的实现方式,可以使得节点快速的确定组播路由信息的位置,提高组播效率。
在一种可能的实现方式中,一个节点的寻址字段包括多个定界字段,该节点的非叶子子节点的组播路由信息由所述多个定界字段分隔开。
在一种可能的实现方式中,所述第二节点的组播信息中还包括:第二节点的第一字段;所述第一字段用于指示所述第二节点的组播路由信息的长度或者所述第二节点的组播信息的长度。
在一种可能的实现方式中,所述第二节点的组播信息中还包括:第二字段,所述第二字段用于对齐所述第二节点的组播信息的字节。
在一种可能的实现方式中,所述第一组播报文为IP报文,所述第一组播报文中的目的地址为所述第二节点的地址,所述第一组播报文还包括数据,所述第一组播报文中的所述第二节点的组播信息位于所述第一组播报文的IP头部和所述数据之间。
在一种可能的实现方式中,所述第一节点获取第一组播报文,包括:所述第一节点接收第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;所述第一节点确定所述第二节点为所述第一节点的非叶子子节点;所述第一节点根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;所述第一节点根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
在一种可能的实现方式中,所述第一节点根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息,包括:所述第一节点根据所述第一节点的组播路由信息中的寻址字段确定所述第二节点的组播路由信息的位置;所述第一节点根据所述第二节点的组播路由信息的位置获取所述第二节点的组播路由信息。
在一种可能的实现方式中,所述第一节点为所述组播树的源节点,所述第一节点获取第一组播报文,包括:所述第一节点生成所述第一组播报文。
在一种可能的实现方式中,所述第一节点为所述组播树的源节点,所述第一节点获取第一组播报文,包括:所述第一节点生成第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;所述第一节点确定所述第二节点为所述第一节点的非叶子子节点;所述第一节点根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;所述第一节点根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
在一种可能的实现方式中,所述第一节点包括至少一个实体,所述第二节点包括至少一个实体,所述第一组播报文为所述第一节点中的一个实体向所述第二节点中的一个实体发送的组播报文。
在一种可能的实现方式中,一个节点的组播路由标识具体用于该节点中的实体确定该节点在所述组播树中的子节点。
第二方面,提供了一种组播报文发送方法,应用于第一实体,所述第一实体属于第一节点,所述方法包括:所述第一实体接收第三组播报文,所述第三组播报文包括所述第一节点的第一组播路由信息;其中,所述第一节点的第一组播路由信息包括所述第一节点的第一组播路由标识和所述第一节点的第一组播路由标识对应的非叶子子节点的组播路由信息;一个节点的组播路由信息包括该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点中的实体确定该节点在所述组播树中的子节点;所述第一节点的第一组播路由标识与所述第一节点的组播路由标识相同或通过对所述第一节点的组播路由标识进行更新得到;所述第一实体根据所述第一节点的第一组播路由标识确定第二实体,所述第二实体为所述第一节点中的实体;所述第一实体向所述第二实体发送第四组播报文,所述第四组播报文中包括所述第一节点的第二组播路由信息,所述第一节点的第二组播路由信息包括所述第一节点的第二组播路由标识和所述第一节点的第三组播路由标识对应的部分或全部非叶子子节点的组播路由信息;所述第一节点的第三组播路由标识与所述第一节点的第一组播路由标识相同或通过对所述第一节点的第一组播路由标识进行更新得到,所述第一节点的第二组播路由标识与所述第一节点的第三组播路由标识相同或通过对所述第一节点的第三组播路由标识进行更新得到。第二方面提供的方法,在一个节点包括多个实体的情况下,可以实现节点中的各个实体之间的组播报文的转发。
在一种可能的实现方式中,所述第一实体根据所述第一节点的第一组播路由标识确定第二实体,包括:所述第一实体根据所述第一节点的第一组播路由标识查找组播转发表得到所述第二实体。
在一种可能的实现方式中,所述方法还包括:所述第一实体根据所述第一节点的第一组播路由标识确定第一子节点,所述第一子节点为所述第一节点在所述组播树中的子节点中所述第一实体对应的子节点;所述第一实体向所述第一子节点发送第五组播报文,所述第五组播报文包括所述第一子节点的组播路由信息。
在一种可能的实现方式中,所述第一实体不属于所述第一子节点,所述第一实体向所述第一子节点发送第五组播报文,包括:所述第一实体向所述第一子节点中的第三实体发送所述第五组播报文。
在一种可能的实现方式中,所述第一实体属于所述第一子节点,所述方法还包括:所述第一实体根据所述第一子节点的组播路由标识确定第二子节点,所述第二子节点为所述第一子节点在所述组播树中的子节点中所述第一实体对应的子节点。
在一种可能的实现方式中,所述第一实体属于所述第一子节点,所述第一子节点还包括第四实体,所述方法还包括:所述第一实体向所述第四实体发送第六组播报文,所述第六组播报文中包括所述第一子节点的第一组播路由信息,所述第一子节点的第一组播路由信息包括所述第一子节点的第一组播路由标识和所述第一子节点的第二组播路由标识对应的部分或全部非叶子子节点的组播路由信息;所述第一子节点的第二组播路由标识与所述第一子节点的组播路由标识相同或通过对所述第一子节点的组播路由标识进行更新得到,所述第一子节点的第一组播路由标识与所述第一子节点的第二组播路由标识相同或通过对所述第一子节点的第二组播路由标识进行更新得到。
第三方面,提供了一种第一节点,包括:处理单元和通信单元;所述处理单元,用于获取第一组播报文,所述第一组播报文包括第二节点的组播信息,所述第二节点为组播树中所述第一节点的非叶子子节点,所述第二节点的组播信息中包括所述第二节点的组播路由信息;其中,一个节点的组播路由信息包括该节点的组播路由标识和该节点在所述组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点确定在所述组播树中的子节点;所述通信单元,用于向所述第二节点发送所述第一组播报文。
在一种可能的实现方式中,一个节点的组播路由标识用于该节点在该节点对应的第一节点集合内确定该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。
在一种可能的实现方式中,一个节点的组播路由标识包括该节点的子节点的个数信息和该节点的每个子节点的标识。
在一种可能的实现方式中,一个节点的组播路由标识包括第三字段和X个第四字段;所述第三字段用于指示该节点的子节点的个数X,一个所述第四字段用于指示该节点的一个子节点的标识。
在一种可能的实现方式中,一个节点的组播路由标识包括N个第三字段,N为该节点对应的第一节点集合中的节点个数,一个所述第三字段用于指示所述第一节点集合中的一个节点是否为该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。
在一种可能的实现方式中,一个节点的组播路由标识包括第三字段,所述第三字段中包括第一组标识,所述第一组标识用于指示该节点对应的第一节点组,一个节点对应的第一节点组中的节点均为该节点的子节点。
在一种可能的实现方式中,一个节点的组播路由信息还包括该节点的寻址字段;其中,一个节点的寻址字段用于该节点确定该节点的非叶子子节点的组播路由信息的位置。
在一种可能的实现方式中,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的长度。
在一种可能的实现方式中,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的起始位置或结束位置。
在一种可能的实现方式中,一个节点的寻址字段包括多个定界字段,该节点的非叶子子节点的组播路由信息由所述多个定界字段分隔开。
在一种可能的实现方式中,所述第二节点的组播信息中还包括:第二节点的第一字段;所述第一字段用于指示所述第二节点的组播路由信息的长度或者所述第二节点的组播信息的长度。
在一种可能的实现方式中,所述第二节点的组播信息中还包括:第二字段,所述第二字段用于对齐所述第二节点的组播信息的字节。
在一种可能的实现方式中,所述第一组播报文为IP报文,所述第一组播报文中的目的地址为所述第二节点的地址,所述第一组播报文还包括数据,所述第一组播报文中的所述第二节点的组播信息位于所述第一组播报文的IP头部和所述数据之间。
在一种可能的实现方式中,所述处理单元,具体用于:通过所述通信单元接收第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;确定所述第二节点为所述第一节点的非叶子子节点;根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
在一种可能的实现方式中,所述处理单元,具体用于:根据所述第一节点的组播路由信息中的寻址字段确定所述第二节点的组播路由信息的位置;根据所述第二节点的组播路由信息的位置获取所述第二节点的组播路由信息。
在一种可能的实现方式中,所述第一节点为所述组播树的源节点,所述处理单元,具体用于:生成所述第一组播报文。
在一种可能的实现方式中,所述第一节点为所述组播树的源节点,所述处理单元,具体用于:生成第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;确定所述第二节点为所述第一节点的非叶子子节点;根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
在一种可能的实现方式中,所述第一节点包括至少一个实体,所述第二节点包括至少一个实体,所述第一组播报文为所述第一节点中的一个实体向所述第二节点中的一个实体发送的组播报文。
在一种可能的实现方式中,一个节点的组播路由标识具体用于该节点中的实体确定该节点在所述组播树中的子节点。
第四方面,提供了一种第一实体,所述第一实体属于第一节点,所述第一实体包括:通信单元和处理单元;所述通信单元,用于接收第三组播报文,所述第三组播报文包括所述第一节点的第一组播路由信息;其中,所述第一节点的第一组播路由信息包括所述第一节点的第一组播路由标识和所述第一节点的第一组播路由标识对应的非叶子子节点的组播路由信息;一个节点的组播路由信息包括该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点中的实体确定该节点在所述组播树中的子节点;所述第一节点的第一组播路由标识与所述第一节点的组播路由标识相同或通过对所述第一节点的组播路由标识进行更新得到;所述处理单元,用于根据所述第一节点的第一组播路由标识确定第二实体,所述第二实体为所述第一节点中的实体;所述通信单元,还用于向所述第二实体发送第四组播报文,所述第四组播报文中包括所述第一节点的第二组播路由信息,所述第一节点的第二组播路由信息包括所述第一节点的第二组播路由标识和所述第一节点的第三组播路由标识对应的部分或全部非叶子子节点的组播路由信息;所述第一节点的第三组播路由标识与所述第一节点的第一组播路由标识相同或通过对所述第一节点的第一组播路由标识进行更新得到,所述第一节点的第二组播路由标识与所述第一节点的第三组播路由标识相同或通过对所述第一节点的第三组播路由标识进行更新得到。
在一种可能的实现方式中,所述处理单元,具体用于:根据所述第一节点的第一组播路由标识查找组播转发表得到所述第二实体。
在一种可能的实现方式中,所述处理单元,还用于根据所述第一节点的第一组播路由标识确定第一子节点,所述第一子节点为所述第一节点在所述组播树中的子节点中所述第一实体对应的子节点;所述通信单元,还用于向所述第一子节点发送第五组播报文,所述第五组播报文包括所述第一子节点的组播路由信息。
在一种可能的实现方式中,所述第一实体不属于所述第一子节点,所述通信单元,具体用于:向所述第一子节点中的第三实体发送所述第五组播报文。
在一种可能的实现方式中,所述第一实体属于所述第一子节点,所述处理单元,还用于根据所述第一子节点的组播路由标识确定第二子节点,所述第二子节点为所述第一子节点在所述组播树中的子节点中所述第一实体对应的子节点。
在一种可能的实现方式中,所述第一实体属于所述第一子节点,所述第一子节点还包括第四实体;所述通信单元,还用于向所述第四实体发送第六组播报文,所述第六组播报文中包括所述第一子节点的第一组播路由信息,所述第一子节点的第一组播路由信息包括所述第一子节点的第一组播路由标识和所述第一子节点的第二组播路由标识对应的部分或全部非叶子子节点的组播路由信息;所述第一子节点的第二组播路由标识与所述第一子节点的组播路由标识相同或通过对所述第一子节点的组播路由标识进行更新得到,所述第一子节点的第一组播路由标识与所述第一子节点的第二组播路由标识相同或通过对所述第一子节点的第二组播路由标识进行更新得到。
第五方面,提供了一种通信装置,包括:处理器。处理器与存储器连接,存储器用于存储计算机执行指令,处理器执行存储器存储的计算机执行指令,从而实现第一方面或第二方面提供的任意一种方法。示例性的,存储器和处理器可以集成在一起,也可以为独立的器件。若为后者,存储器可以位于通信装置内,也可以位于通信装置外。
在一种可能的实现方式中,处理器包括逻辑电路,还包括输入接口和/或输出接口。示例性的,输出接口用于执行相应方法中的发送的动作,输入接口用于执行相应方法中的接收的动作。
在一种可能的实现方式中,通信装置还包括通信接口和通信总线,处理器、存储器和通信接口通过通信总线连接。通信接口用于执行相应方法中的收发的动作。通信接口也可以称为收发器。可选的,通信接口包括发送器和接收器中的至少一种,该情况下,发送器用于执行相应方法中的发送的动作,接收器用于执行相应方法中的接收的动作。
在一种可能的实现方式中,通信装置以芯片的产品形态存在。
第六方面,提供了一种芯片,包括:处理器和接口,处理器通过接口与存储器耦合,当处理器执行存储器中的计算机程序或指令时,使得第一方面或第二方面提供的任意一种方法被执行。
第七方面,提供了一种计算机可读存储介质,包括指令,当该指令在计算机上运行时,使得计算机执行第一方面或第二方面提供的任意一种方法。
第八方面,提供了一种计算机程序产品,包括指令,当该指令在计算机上运行时,使得计算机执行第一方面或第二方面提供的任意一种方法。
第三方面至第八方面中的任一种实现方式所带来的技术效果可参见第一方面或第二方面中对应实现方式所带来的技术效果,此处不再赘述。
需要说明的是,在方案不矛盾的前提下,上述各个方面中的方案均可以结合。
附图说明
图1A为本申请实施例提供的一种报文组播的示意图;
图1B为本申请实施例提供的一种实体的拓扑连接和组播树的示意图;
图2为本申请实施例提供的又一种实体的拓扑连接和组播树的示意图;
图3A为本申请实施例提供的又一种实体的拓扑连接示意图;
图3B为本申请实施例提供的一种路由器之间的组播报文传输示意图;
图4为一种SPT和SPT中的路由器中存储的MFIB表示意图;
图5为一种BIER中BFER的集合划分示意图;
图6为本申请实施例提供的一种组播报文发送方法的流程图;
图7为本申请实施例提供的一种组播报文的结构示意图;
图8为本申请实施例提供的又一种组播报文的结构示意图;
图9为本申请实施例提供的又一种组播报文的结构示意图;
图10为本申请实施例提供的又一种组播报文的结构示意图;
图11为本申请实施例提供的一种组播路由标识的结构示意图;
图12为本申请实施例提供的一种bit序列中的bit与下一跳的地址的对应关系的示意图;
图13为本申请实施例提供的一种组播报文中的bit序列中的bit与下一跳的地址的对应关系的示意图;
图14为本申请实施例提供的又一种组播报文的结构示意图;
图15为本申请实施例提供的一种组播路由标识的结构示意图;
图16为本申请实施例提供的一种寻址字段的示意图;
图17为本申请实施例提供的又一种寻址字段的示意图;
图18为本申请实施例提供的又一种寻址字段的示意图;
图19为本申请实施例提供的又一种组播报文发送方法的流程图;
图20为本申请实施例提供的再一种组播报文发送方法的流程图;
图21为本申请实施例提供的一种实体之间的拓扑连接示意图;
图22为本申请实施例提供的一种组播树以及组播报文的结构示意图;
图23为本申请实施例提供的又一种组播树以及组播报文的结构示意图;
图24A为本申请实施例提供的又一种组播树以及组播报文的结构示意图;
图24B为本申请实施例提供的又一种组播报文的结构示意图;
图24C为本申请实施例提供的又一种组播报文的结构示意图;
图25为本申请实施例提供的又一种实体之间的拓扑连接示意图;
图26为本申请实施例提供的又一种组播报文的结构示意图;
图27为本申请实施例提供的又一种组播报文的结构示意图;
图28为本申请实施例提供的又一种组播树的示意图;
图29为本申请实施例提供的又一种组播报文的结构示意图;
图30为本申请实施例提供的一种通信装置的组成示意图;
图31为本申请实施例提供的一种通信装置的硬件结构示意图。
具体实施方式
在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B。本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。在本申请的描述中,除非另有说明,“至少一个”是指一个或多个,“多个”是指两个或多于两个。
另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请可以应用于一个发送端需要将相同的数据携带在报文中发送给多个接收端的场景。参见图1A,该报文可以从发送端发出,经过多个组播节点(以下简称为节点)到达多个接收端。该报文可以称为组播报文,不同节点之间传输的组播报文中的数据相同。其中,发送端例如可以为服务器,接收端例如可以为客户端。节点具备组播报文发送和转发能力,可以把接收到的组播报文进行组播转发或生成的组播报文进行组播发送。一个节点可以包括一个实体或多个实体。一个实体可以仅属于一个节点,也可以属于多个节点。示例性的,图1B中的(a)和图1B中的(b)中,左侧为实体的网络拓扑图,右侧为组播树。参见图1B中的(a),节点Z包括多个实体,这多个实体为实体A、实体B、实体C、实体D和实体E,节点E包括一个实体,即实体E。可以看出,实体E既属于节点Z,也属于节点E。参见图1B中的(b),节点X包括多个实体,这多个实体为实体A和实体B。可以看出,实体A和实体B既属于节点Z,也属于节点X。
需要说明的是,为了方便描述,在本申请实施例中,若一个实体仅属于一个节点,则该节点和该实体采用相同的标识,此时,该实体的地址也可以描述为该节点的地址,该节点执行的动作也就是该实体执行的动作。因此,下文中提到节点的地址时,均是指该节点中的实体的地址。例如,仅包括实体A的节点称为节点A,此时,节点A的地址等同于实体A的地址,仅包括实体B的节点称为节点B,此时,节点B的地址等同于节点实体B的地址。
本申请中,实体也可以称为功能实体。实体可以为物理实体或虚拟实体。物理实体例如可以为路由器、交换机、服务器、主机、网卡、线卡、芯片、芯片的裸片(DIE)、终端(例如,移动终端)、设备内部模块等,虚拟实体例如可以为虚拟机、容器、进程、线程等。当实体为物理实体时,节点也可以称为组播设备。
为了使得本申请提供的方法更加的清楚,首先对本申请涉及到的部分概念作简单介绍。
1、组播树
组播树是通过路由协议(例如,协议无关组播(protocol independentmulticast,PIM)、内部网关协议(interior gateway protocol,IGP)等)或其他方法(例如,手工配置、控制器计算等)基于特定的网络拓扑,为特定的源节点和目的节点的组合,生成的从源节点到所有目的节点的路径,该路径是一个以源节点为根节点,以目的节点为叶子节点的树形结构,称为组播树。组播树也可以称为组播分发树(multicast distributiontree,MDT)。例如,参见图2,左侧是一个实体的网络拓扑图,若源节点为节点B,目的节点为节点C、节点D和节点E,为源节点和目的节点的组合生成的组播树的一种示例可以参见图2中的右侧。
需要说明的是,发送端和/或接收端可以是组播树中的节点,也可以不是组播树中的节点。若为前者,则源节点可以为发送端,目的节点可以为接收端。为了方便描述,在没有特别说明的情况下,本申请实施例中均以发送端和接收端是组播树中的节点为例,对本申请实施例提供的方法作示例性说明。若接收端不是组播树中的节点,则数据到达叶子节点之后,叶子节点将接收到的数据发送给与其连接的接收端即可。
另外,一个服务器中的除网卡之外的模块可以认为是一个节点(假设为节点a),服务器中的网卡可以认为是另一个节点(假设为节点b),则节点b可以认为是节点a的子节点。一个路由器中的除线卡之外的模块可以认为是一个节点(假设为节点c),路由器中的线卡可以认为是另一个节点(假设为节点d),则节点d可以认为是节点c的子节点。示例性的,参见图3A,A为一个路由器,图3A中的节点A0为该路由器中的除线卡之外的模块,节点A1、节点A2和节点A3为该路由器中的3个线卡。A可以通过3个线卡上的接口分别向节点B、节点C、节点D、节点E、节点F和节点G发送组播报文。此时,节点A1、节点A2和节点A3可以为节点A0的子节点。A也可以为服务器,此时,节点A1、节点A2和节点A3为该服务器中的3个网卡,A可以通过3个网卡上的网口分别向节点B、节点C、节点D、节点E、节点F和节点G发送组播报文。
2、子节点
一个节点的子节点是指组播树中的该节点的报文可以通过一跳组播(即只经过一次组播转发)到达的节点。其中,一跳组播是指查找一次组播转发表。例如,图2中的节点R为节点B的子节点,节点S为节点R的子节点,节点E为节点R的子节点。需要说明的是,若组播树中一个支持组播的节点发送的组播报文经过一个或多个不支持组播的节点后到达了组播树中的另一个支持组播的节点,则后一个支持组播的节点为前一个支持组播的节点的子节点,也就是说,前一个支持组播的节点是经过了一跳组播到达了后一个支持组播的节点。例如,参见图3B,路由器A和路由器C是支持组播的路由器,路由器B为不支持组播的路由器,此时,路由器A经过路由器B将组播报文发送给了路由器C,并且路由器A和路由器C均为组播树中的节点,则路由器C为路由器A的子节点。
当一个节点的子节点是组播树的叶子节点时,该子节点可以称为该节点的叶子子节点,当一个节点的子节点不是组播树的叶子节点时,该子节点可以称为该节点的非叶子子节点。
在本申请的描述中,若无特别说明,本申请下文中提到的一个节点的子节点均是指该节点在组播树中的子节点。子节点也可以有其他名称,例如,组播子节点等,本申请不作限制。
需要说明的是,一个实体所属的一个节点可以为该实体所属的另一个节点的子节点。示例性的,参见图1B中的(b),实体A(或实体B)所属的节点X为实体A(或实体B)所属的节点Z的子节点。当然,一个实体所属的一个节点也可以不是该节点所属的另一个节点的子节点。
3、潜在子节点
一个节点的潜在子节点是指该节点的报文可以通过一跳组播到达的节点。例如,图2中的节点R和节点A均为节点B的潜在子节点,节点F、节点R、节点C和节点D均为节点S的潜在子节点。可以理解的是,一个节点的潜在子节点包括该节点在组播树中的子节点。当一个节点的潜在子节点位于组播树中时,该潜在子节点也就是该节点在组播树中的子节点。潜在子节点也可以有其他名称,例如,组播对象、预备子节点等,本申请不作限制。
4、组播路由信息、第一组播路由信息、第二组播路由信息
在本申请实施例中,一个节点的组播路由信息携带在节点之间转发的组播报文中。一个节点的第一组播路由信息和第二组播路由信息均是由该节点的组播路由信息衍生得到的,携带在该节点中的各个实体之间转发的组播报文中。
5、组播路由标识、第一组播路由标识、第二组播路由标识、第三组播路由标识
在本申请实施例中,一个节点的组播路由标识携带在节点之间转发的组播报文中。一个节点的第一组播路由标识、第二组播路由标识和第三组播路由标识均是由该节点的组播路由标识衍生得到的,携带在该节点中的各个实体之间转发的组播报文中。
6、单播报文、组播报文
单播报文和组播报文的第一种定义:
根据实体对报文处理的行为对报文进行分类,此时,单播报文和组播报文都是对于本申请中的实体而言的,一个报文是单播报文还是组播报文是相对的,具体的:
对于一个实体,若接收到的报文中不含任何该实体需要处理的组播路由信息或者不含任何组播路由信息,则该实体不需要对该报文进行组播转发(或者说不需要查找组播转发表),而只需要根据该报文中的单播封装进行单播转发(或者说采用单播封装的目的地址查找单播转发表转发)或者消费报文(即自己处理该报文不需要再转发),此时,该报文对于该实体而言为单播报文。
对于一个实体,若接收到的报文中包含组播路由信息,并且该实体需要处理该组播路由信息,即需要根据该组播路由信息进行组播转发(或者说需要查找组播转发表),则该报文对于该实体而言为组播报文。
例如,实体A和实体B具有拓扑连接,实体B和实体C具有拓扑连接,实体A向实体C发送的报文需要经过实体B才可以到达实体C,若该报文中包括组播路由信息和单播封装,单播封装的目的地址为实体C的地址,则该报文对于实体B而言是单播报文,对于实体C而言是组播报文。
再例如,实体A和实体B具有拓扑连接,实体A发送报文给实体B,该报文中不包括组播路由信息,但是包括单播封装,单播封装的目的地址为实体B的地址,则该报文对于实体B而言是单播报文。
单播报文和组播报文的第二种定义:
根据报文的结构对报文进行分类,具体的,最外层头部是单播头部的报文是单播报文,最外层头部是组播头部的报文是组播报文。其中,目的IP地址是单播地址的IP头部是一种单播头部,目的介质访问控制(media access control,MAC)地址是单播地址的mac头部也是一种单播头部。目的IP地址是组播地址的IP头部是一种组播头部,目的mac地址是组播地址的mac头部也是一种组播头部。本申请中的组播信息也是一种组播头部。
基于上述针对单播报文和组播报文的两种定义,为了使得本申请实施例提供的方法更加的清楚,本申请中采用第一种定义对本申请实施例提供的方法进行描述。当本申请中采用第二种定义时,可以根据报文的具体结构确定报文是单播报文还是组播报文,例如,下文中第一节点向第二节点发送第一组播报文,若第一组播报文的最外层头部是单播头部,采用第二种定义描述时第一组播报文则可以描述为单播报文。
本申请中的报文中的单播封装可以是互联网协议(internet protocol,IP)的第四版(简称为IPv4)单播封装、IP的第六版(简称为IPv6)单播封装或其他任何可能的封装形式。本申请中,可以在含有组播路由信息的报文上进行任何可能形式的单播封装,也可以不进行单播封装,报文的单播封装使报文可以以单播的形式穿越2个实体之间的网络(或者说在2个实体之间传输)。关于单播报文和组播报文解释中所提到的组播路由信息均是指本申请下文中定义的组播路由信息。
需要说明的是,在本申请实施例中,当组播报文为IP报文,并且该组播报文的IP头部中的目的IP地址为单播地址时,该组播报文的IP头部即该组播报文的单播封装。需要说明的是,若本申请中的组播报文为IP报文,则本申请的描述中,目的地址均是指目的IP地址。
在本申请下文中,若一个实体接收到一个组播报文、且该组播报文为IP报文,该实体首先判断该组播报文的IP头部中的目的地址是否为自身的地址,若是,则解析该组播报文的IP头部之后的组播信息,并根据组播信息转发组播报文。该实体向其他实体发送组播报文的过程中,首先确定需要向其他实体发送的组播信息和数据,再确定下一跳的地址(即其他实体的地址),将其他实体的地址填入IP头部中的目的地址字段,并将向其他实体发送的组播信息和数据封装在IP头部之后,得到向其他实体发送的组播报文,之后向其他实体发送组播报文。本申请下文中为了简洁,并未在每个步骤中展开描述这一过程,在此处统一描述,下文中不再赘述。
需要说明的是,关于组播报文中的数据,针对组播报文中的不同的部分,数据也是不同的。具体的,针对组播报文中的某个部分,数据是指组播报文中该部分之后的部分。例如,参见图9,针对外层封装,数据为外层封装之后的部分(即“第二节点的组播信息+内层封装+载荷(payload)”),针对第二节点的组播信息,数据为第二节点的组播信息之后的部分(即“内层封装+载荷”),针对内层封装,数据为内层封装之后的部分(即“载荷”)。本申请实施例中所提到的数据均是针对组播报文中的组播信息而言的,例如,图9所示的第一组播报文中的数据即“内层封装+载荷”。
以上是对本申请涉及到的部分概念所作的简单介绍。
目前,在进行组播报文转发时,可以通过PIM-SM(记为方案1)或显式比特索引复制(bit index explicit replication,BIER)(记为方案2)实现。以下对方案1和方案2的实现过程以及存在的问题进行介绍。
方案1、通过PIM-SM实现组播报文转发。
PIM-SM是一种多播路由协议,PIM-SM用于从接收端向组播源(发送端或汇集点(rendezvous point,RP))方向逐跳建立MFIB表,最终构造出一棵以组播源为根节点,以接收端为叶子节点的树状结构,即组播树。组播报文从组播树中的根节点开始朝着叶子节点方向,在每个路由器(也可以称为组播路由器)上进行复制,直到接收端。所有的接收端可以组成一个组播组,一个接收端为组播组中的一个成员。其中,以RP为根节点、组播组中的成员为叶子节点的组播树称为汇集点树(RP Tree,RPT),以发送端为根节点、组播组中的成员为叶子节点的组播树称为最短路径树(shortest path tree,SPT)。RPT和SPT的转发流程基本一致。以SPT为例,在SPT构造完成之后,每个路由器中会存储一个MFIB表,MFIB表中存储有一个组地址(group address)和端口列表(port list),当路由器接收到目的地址为该组地址的组播报文时,通过该端口列表中的端口发送该组播报文。示例性的,一种SPT和SPT中的路由器中存储的MFIB表可参见图4,图4中的R表示普通路由器,DR表示指定路由器(向组播组中的成员发送组播报文的路由器)。
方案1存在的问题有:
1、PIM-SM需要为每条组播流在网络中维护MFIB表,而每个路由器上维护的MFIB表的表项数是有限制的,如果组播树或者说组播流太多,那么就需要在路由器中扩展更多的表空间来支持组播报文的转发,可扩展性很差。
2、组播树是从接收端向组播源方向逐跳建立MFIB表构造出的,因此,组播树是完全固定的,无法基于规划主动控制转发路径。
3、由于组播树是从接收端向组播源方向逐跳建立MFIB表构造出的,因此,叶子节点加入或离开组播树只有其上一跳节点知道,组播源不知道,也就是说,组播源感知不到用户的存在,可管理性较差。
4、由于组播树是从接收端向组播源方向逐跳建立MFIB表构造出的,因此,为了保持逐跳的组播状态,子节点需要定期的发送加入信令,在组播流较多时路由器要处理大量的周期性信令,增加了路由器的计算负载、功耗以及处理资源。
方案2、通过BIER实现组播报文转发。
针对PIM-SM存在的问题,业界提出了一种无状态的组播路由协议BIER。支持BIER的路由器称为BFR(Bit-Forwarding Router),支持BIER的域入口路由器称为BFIR(Bit-Forwarding Ingress Router),支持BIER的域出口路由器称为比特转发出口路由器(bit-forwarding egress router,BFER)。BIER为每个BFER分配一个唯一标识(ID),称为BFRID,典型取值范围是1~65536。参见图5,把所有BFER划分成若干集合(set),每个set有一个集合标识(set identifier,SI),典型取值范围0~255。每个set中最多有256个BFER,每个set固定占用SI*256+1~(SI+1)*256的BFRID,“*”表示“乘以”。
BIER协议规定,组播报文通过头部携带的SI和位串(bitstring)指示向哪些BFER组播。bitstring是长度为256比特(bit)的位图(bitmap),每个bit对应于一个BFER。例如,一个BFER对应的bit的值为1时,表示需要向该BFER组播。一个组播报文只能携带一个SI和一个bitstring,因此只能向某一个set组播。示例性的,参见图5,set1中ID为2的BFER通过节点P(即运营商网络内部的节点)向set2中的ID为258和510的BFER发送组播报文,该组播报文中包括一个SI和一个bitstring,SI为2,bitstring中ID为258和510的BFER对应的bit为1,其他bit为0。另外,每个BFER中会维护位索引转发表(bit index forwarding table,BIFT),BIFT是BIER定义的组播路由表。BFER可以基于组播报文头部携带的SI和bitstring以及维护的BIFT进行组播报文转发。
方案2存在的问题有:
1、由于一个组播报文只能携带一个SI和一个bitstring,因此只能向某一个set组播,这也就意味着,如果总共有50个set,并且需要向50个set中的BFER发送组播报文,那么需要发送50份组播报文,报文份数过多导致组播效率较差。
2、BIER中的BIFT是固定的,也就是说,每个节点有固定的下一跳,因此,无法规划或指定路径路由。
为了解决上述方案1和方案2中存在的问题,本申请提供了一种组播报文发送方法,参见图6,该方法包括:
601、第一节点获取第一组播报文,第一组播报文包括第二节点的组播信息,第二节点为组播树中第一节点的非叶子子节点,第二节点的组播信息中包括第二节点的组播路由信息;其中,一个节点的组播路由信息包括该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点确定在组播树中的子节点。
其中,第一节点可以为组播树中的任何一个具有非叶子子节点的节点。第一节点可以包括至少一个实体。第二节点可以包括至少一个实体。
一个节点的组播路由标识用于指导该节点进行组播路由转发。可选的,一个节点的组播路由标识用于该节点在该节点对应的第一节点集合内确定该节点在组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。其中,一个节点可以对应多个节点集合。节点集合可以由特定的协议、算法或配置生成。第一节点集合可以为多个节点集合中的一个。一个节点对应的第一节点集合可以通过该节点的组播路由标识指示,例如,该节点的组播路由标识中可以携带集合标识,通过该集合标识指示第一节点集合。一个节点对应的第一节点集合也可以预先配置在该节点中。
可选的,一个节点的组播路由标识具体用于该节点中的实体确定该节点在组播树中的子节点。
一个节点的组播路由信息中的非叶子子节点的组播路由信息可以是一个组播路由信息列表,该列表可以是顺序排列、链式排列或其他可能的方式排列,本申请不作限制。可以理解的是,若一个节点没有非叶子子节点,则该节点的组播路由信息中不包括非叶子子节点的组播路由信息,仅仅包括该节点的组播路由标识。
基于对第一组播报文的描述可知,第一组播报文中包括树形递归结构的组播路由信息,第一组播报文中第二节点的一个非叶子子节点的组播路由信息可以认为是递归结构中的一个递归单元。为了方便描述,本申请下文中的部分描述中,将一个节点的一个非叶子子节点的组播路由信息记为一个递归单元,假设一个节点的非叶子子节点的个数为M,该节点的第m+1个非叶子子节点的组播路由信息记为该节点的递归单元m,m为大于等于0小于M的整数。可以理解的是,第二节点的每个非叶子子节点的组播路由信息又包括多个递归单元(每个递归单元为该非叶子子节点的一个非叶子子节点的组播路由信息),依次类推。第一组播报文中包括的组播路由信息可以描述某个组播树或组播树的子树的报文转发信息。
示例性的,参见图7,假设第二节点的非叶子子节点有M1个,分别记为节点20、节点21、节点22、…、节点2M1-1,则第一组播报文的报文头中包括第二节点的组播信息,第二节点的组播信息中包括第二节点的组播路由标识,以及节点20、节点21、节点22、…、节点2M1-1的组播路由信息。进一步的,节点20、节点21、节点22、…、节点2M1-1中的每个节点的组播路由信息又包括各自的非叶子子节点的组播路由信息。例如,假设节点20的非叶子子节点有M2个,则节点20的组播路由信息中包括节点20的组播路由标识,以及节点20的第1个非叶子子节点、第2个非叶子子节点、…、第M2个非叶子子节点的组播路由信息。节点20的每个非叶子子节点进一步的包括自身的非叶子子节点的组播路由信息,依次类推。节点21、节点22、…、节点2M1-1类似。
示例性的,基于图2所示的组播树,参见图8,节点B向节点R发送的组播报文的报文头中包括节点R的组播信息,节点R的组播信息中包括节点R的组播路由标识和节点R的非叶子子节点(即节点S)的组播路由信息。
可选的,一个节点的组播路由信息还包括该节点的寻址字段。其中,一个节点的寻址字段用于该节点确定该节点的非叶子子节点的组播路由信息的位置。该位置可以为该节点的非叶子子节点的组播路由信息在该节点的组播路由信息或组播信息中的位置,也可以是指在组播报文中的位置。示例性的,参见图9,第二节点的组播路由信息包括第二节点的寻址字段,节点20的组播路由信息包括节点20的寻址字段,其他节点类似。示例性的,参见图10,节点R的组播路由信息包括节点R的寻址字段。需要说明的是,节点的非叶子子节点的组播路由信息的位置除了通过寻址字段指示之外,还可以静态配置在节点中。例如,若一个节点的子节点个数固定,并且这些子节点的子节点都是叶子节点,那么这些子节点的组播路由信息中仅仅包括这些子节点的组播路由标识,并且组播路由标识的长度是固定的,此时,该节点中可以静态维护这些子节点的组播路由信息的长度,此时,该节点的组播路由信息中可以不包括该节点的寻址字段。
可选的,第二节点的组播信息中还包括:第一字段;第一字段用于指示第二节点的第一字段的长度、第二节点的寻址字段的长度、第二节点的组播路由标识的长度、第二节点的非叶子子节点的组播路由信息的总长度中的一个或多个长度之和,这一个或多个中包括第二节点的非叶子子节点的组播路由信息的总长度。例如,第一字段用于指示第二节点的组播路由信息的长度,或者,第二节点的组播信息的长度,或者,第二节点的组播路由信息中的非叶子子节点的组播路由信息的总长度。这些长度可以通过bit、字节等表征。第一字段中还可以包括预留字段,用于后续功能扩展。第一字段可以是一个固定长度的字段,例如,1个字节(即8个bit)。示例性的,参见图9,第二节点的组播信息还包括第一字段。示例性的,参见图10,若第二节点为节点R,则节点R的组播信息还包括第一字段。
可选的,第二节点的组播信息中还包括:第二字段,第二字段用于对齐第二节点的组播信息的字节。第二字段也可以称为填充(padding)字段。示例性的,参见图9,第二节点的组播信息还包括第二字段。示例性的,参见图10,若第二节点为节点R,节点R的组播信息包括第二字段。需要说明的是,在进行字节对齐时,可能是单字节对齐,此时,第二字段的存在是为了使得整个组播信息的bit数可以整除8,也可以是4字节对齐,此时,第二字段的存在是为了使得整个组播信息的bit数可以整数32,也可以是8字节对齐,此时,第二字段的存在是为了使得整个组播信息的bit数可以整数64。第二字段的具体长度可以根据需要对齐的字节数确定。可以理解的是,若没有第二字段,第二节点的组播路由信息本身已经是字节对齐的,则不需要第二字段。为了方便描述,本申请下文中均以字节对齐为单字节对齐为例对本申请实施例提供的方法作示例性说明。
其中,第一字段和第二字段可以由第一节点添加到第一组播报文中。例如,在下文中的步骤14)的过程中添加到第一组播报文中。
第二节点的组播信息可以携带在第一组播报文的报文头中。节点的组播信息可以认为是组播报文的报文头中的组播封装。参见图9或图10,本申请中的组播报文的报文头中,除了可以包含组播封装之外,还可以包含外层封装(Outer-header)和/或内层封装(Inner-header),以及载荷。外层封装是指相比于组播封装的外层的封装,可以是单播封装。内层封装是指相比于组播封装的内层的封装,可以是传输层(传输控制协议(transmission control protocol,TCP)、用户数据报协议(user datagram protocol,UDP)等)封装或其他任何可能的封装形式。
组播报文中的针对组播信息而言的数据也就是实际需要发送到叶子节点的信息。
步骤601在具体实现时,可以通过以下方式11或方式12或方式13实现。
方式11、第一节点接收第二组播报文,根据接收到的第二组播报文获取第一组播报文。
方式11在具体实现时可以包括:
11)第一节点接收第二组播报文,第二组播报文包括第一节点的组播路由信息,第一节点的组播路由信息包括第一节点的组播路由标识和第一节点的非叶子子节点的组播路由信息。
12)第一节点确定第二节点为第一节点的非叶子子节点。
13)第一节点根据第一节点的组播路由信息获取第二节点的组播路由信息。
14)第一节点根据第二节点的组播路由信息进行报文封装得到第一组播报文。
在步骤11)中,若第一节点不为组播树的源节点,第一节点可以接收组播树中的其他节点发送的第二组播报文。
步骤12)在具体实现时,在一种可能的实现方式中,一个节点的非叶子子节点可以配置在节点中,该情况下,第一节点根据该配置即可确定第二节点是否为第一节点的非叶子子节点。在另一种实现方式中,一个节点的非叶子子节点和/或叶子子节点可以配置在节点中,第一节点根据第一节点的组播路由标识确定第二节点是否为第一节点的子节点,若是,再根据配置的第二节点是否为叶子节点的信息确定第二节点是否为第一节点的非叶子子节点。
步骤13)在具体实现时可以包括:
13-1)第一节点根据第一节点的组播路由信息中的寻址字段确定第二节点的组播路由信息的位置。步骤13-1)的具体实现可参见下文中关于寻址字段的相关描述,此处不再赘述。
13-2)第一节点根据第二节点的组播路由信息的位置获取第二节点的组播路由信息。
方式12、第一节点生成第一组播报文,第一节点为组播树的源节点。
方式13、第一节点生成第二组播报文,根据第二组播报文获取第一组播报文。其中,第二组播报文包括第一节点的组播路由信息。
方式13在具体实现时可以包括:第一节点生成第二组播报文;第一节点确定第二节点为第一节点的非叶子子节点;第一节点根据第一节点的组播路由信息获取第二节点的组播路由信息;第一节点根据第二节点的组播路由信息进行报文封装得到第一组播报文。方式13具体实现时与方式11相同的步骤的实现过程可参见方式11,不再赘述。
602、第一节点向第二节点发送第一组播报文。相应的,第二节点从第一节点接收第一组播报文。
其中,第一组播报文为第一节点中的一个实体向第二节点中的一个实体发送的组播报文。一个节点包括的实体之间的组播报文的处理可参见图20所示的实施例。
可选的,第一组播报文中的单播封装中的目的地址为第二节点的地址。具体的,第一组播报文可以为IP报文,此时,第一组播报文中的目的地址为第二节点的地址,第一组播报文还包括数据,第一组播报文中的第二节点的组播信息位于第一组播报文的IP头部和数据之间。其中,单播封装中可以包括指示字段,该指示字段用于指示组播报文中的单播封装后的信息中是否包含组播信息,节点或实体在接收到组播报文之后,可以根据该指示字段确定组播报文中的单播封装后的信息中是否包含组播信息。示例性的,若单播封装为IPv4封装,则IPv4头部中的“协议(protocol)”字段可以指示组播报文中的单播封装后的信息中是否包含组播信息,若单播封装为IPv6封装,则IPv6头部中的“下一包头(Next Header)”字段可以指示组播报文中的单播封装后的信息中是否包含组播信息。
需要说明的是,在本申请实施例中,一个节点(例如,节点a)向另一个节点(例如,节点b)发送的组播报文中的单播封装中的源地址可以为节点a的地址,也可以为组播树中的源节点的地址。示例性的,基于图2所示的示例,节点R向节点S发送的组播报文中的单播封装中的源地址可以为节点R的地址,也可以为节点B的地址。节点S向节点D发送的组播报文中的单播封装中的源地址可以为节点S的地址,也可以为节点B的地址。
需要说明的是,在本申请中的组播报文中不包括单播封装的情况下,节点可以通过组播报文中的组播路由标识确定组播报文的下一跳节点。例如,一个节点接收到组播报文,在该节点的组播路由标识为下文中的bit序列的情况下,该组播路由标识中值为1的bit对应的节点为该组播报文的下一跳节点,即该节点的子节点为该组播报文的下一跳节点。
本申请实施例提供的方法,将组播路由信息嵌入到组播报文中,组播报文中包括的树形递归结构的组播路由信息可以描述某个组播树或组播树的子树的报文转发信息,可扩展性好,并且根据需要可以方便的进行转发路径的规划和指定。
上述实施例提到的节点的组播路由标识可以通过以下方式21、方式22或方式23实现。
方式21、一个节点的组播路由标识包括该节点的子节点的个数信息和该节点的每个子节点的标识。
在方式21中,可选的,一个节点的组播路由标识包括第三字段和X个第四字段,第三字段用于指示该节点的子节点的个数X,一个第四字段用于指示该节点的一个子节点的标识。节点的标识(ID)例如可以为节点的索引、节点的IP地址或节点的其他标识。以节点的标识为节点的索引为例,参见图11中的(a),第三字段记为Cnt(即Count的缩写),表示用于指示个数,第四字段记为Idx(即Index的缩写),表示用于指示索引。Idxi为节点的第i个子节点的索引,Idx1至Idxx组成一个Idx序列,i为大于0小于等于X的整数。
在方式21中,一个节点对应的第一节点集合中的节点可以具有连续的编号,例如,0、1、2、…。一个节点的索引可以是该节点的编号,一个节点可以通过接收到的组播报文中的该节点的组播路由标识中携带的节点的索引确定需要向哪些节点发送组播报文(也就是确定哪些节点为自身的子节点)。实际实现时,一个节点对应的第一节点集合中的节点的编号也可以是从其他数值(例如,1)开始的连续的取值(即该节点对应的第一节点集合中的节点的索引为1、2、3、…),或者,也可以为离散的取值,本申请不作限制。当一个节点对应的第一节点集合中的节点从0开始编号时,第四字段的位宽N为该节点对应的第一节点集合中的节点个数。第四字段的位宽也可以是固定位宽,例如,1字节。
在方式21中,当第三字段的值为自然数时,第三字段的位宽可以为当第三字段的值为N-1(即第三字段的值为0表示N为1,第三字段的值为1表示N为2,依次类推)时,第三字段的位宽可以为第三字段也可以为固定位宽,例如,1字节,此时,第四字段的最大长度也就固定了。
在方式21中,第三字段也可以称为Cnt字段或Count字段。第四字段也可以称为Idx字段或Index字段。下文中将方式21中的第三字段称为Cnt字段,第四字段称为Idx字段。
示例性的,基于图2所示的示例,假设节点R对应的第一节点集合包含节点B、节点A、节点S和节点E,这4个节点的编号分别为0,1,2,3。在图2中的右侧所示的组播树中,节点S和节点E为节点R的子节点。若第三字段的值为N-1,则第三字段和第四字段均可以为2个bit。由于节点R有2个子节点,则第四字段有2个,即节点R的组播路由标识有6个bit。由于第一节点集合中共有4个节点(即N=4),则第三字段的值可以为11。2个第四字段中第1个第四字段的值为10,表示编号为2的节点(即节点S)为节点R的子节点,第2个第四字段的值为11,表示编号为3的节点(即节点E)为节点R的子节点,那么节点R的组播路由标识可以为111011。
在方式21中,每个节点上可以存储有组播转发表(也可以称为组播路由表或路由转发表或其他名称),组播转发表中包括该节点对应的第一节点集合中的节点索引与下一跳(nexthop)的信息(例如,去往下一跳的出接口、下一跳的地址)之间的对应关系,一个节点可以根据组播路由标识中的Idx字段确定节点索引,再查找组播转发表得到下一跳的信息,进而向该下一跳转发组播报文。例如,基于图2所示的示例,节点R的一种组播转发表可以参见表1。
表1:节点R的组播转发表
节点索引 | 下一跳的地址 |
0 | 节点B的地址 |
1 | 节点A的地址 |
2 | 节点S的地址 |
3 | 节点E的地址 |
方式22、一个节点的组播路由标识包括N个第三字段,N为该节点对应的第一节点集合中的节点个数,一个第三字段用于指示第一节点集合中的一个节点是否为该节点在组播树中的子节点。
在方式22中,一个第三字段可以为一个bit,也就是说,一个节点(假设为节点1)的组播路由标识包括N个bit,参见图11中(b),N个bit组成一个bit序列(bit squence),N个bit与节点1对应的第一节点集合中的节点一一对应,一个bit用于指示该第一节点集合中的与该bit对应的节点是否为节点1的子节点。具体的,一个bit的值为1(也可以为0)时,该bit用于指示该第一节点集合中的与该bit对应的节点为节点1的子节点。为了方便描述,下文中均以一个bit的值为1时,表示该bit对应的节点为其他节点的子节点为例对本申请提供的方法做示例性说明。方式22中的组播路由标识在下文中称为bit序列。
在方式22中,每个节点上可以存储有组播转发表,组播转发表中包括bit序列中的bit与下一跳的信息(例如,去往下一跳的出接口、下一跳的地址)之间的对应关系,一个节点可以根据组播转发表中的bit序列中的bit的位置确定下一跳的信息,进而向该下一跳转发组播报文。其中,bit序列中的bit与下一跳的信息的对应关系可以有4种情况。在第一种情况下,bit序列中最左边(leftmost)的bit为第1个bit,从左往右依次为第1个bit、第2个bit、第3个bit…,bit序列中的第j个bit对应索引为j-1的表项。在第二种情况下,bit序列中最右边的bit为第1个bit,从右往左依次为第1个bit、第2个bit、第3个bit…,bit序列中的第j个bit对应索引为j-1的表项。在第三种情况下,bit序列中最左边的bit为第1个bit,从左往右依次为第1个bit、第2个bit、第3个bit…,bit序列中的第j个bit对应索引为j的表项。在第四种情况下,bit序列中最右边的bit为第1个bit,从右往左依次为第1个bit、第2个bit、第3个bit…,bit序列中的第j个bit对应索引为j的表项。j为大于0的整数。示例性的,以bit序列为010011为例,6个bit分别对应节点A至节点F,bit序列中的bit与下一跳的地址的对应关系可参见图12。在本申请下文中的描述中,若无特别说明,均认为bit序列中最左边的bit为第1个bit,从左往右依次为第1个bit、第2个bit、第3个bit…。需要说明的是,除了上述4种情况之外,组播转发表中的表项的索引还可以为从其他数值(例如,2、3、4)开始的连续的数值或离散的数值,本申请不作限制。
需要说明的是,不同节点的bit序列与下一跳的信息之间的对应关系可以为同一个表格中的不同表项,此时,有些节点的bit序列对应的表项的索引不从0或1开始,例如,图13中的(a)中的节点A1的bit序列对应的表项为索引为3和4的表项。不同节点的bit序列与下一跳的信息之间的对应关系也可以在不同的表格中。
示例性的(记为示例1),基于图2所示的实体的网络拓扑图,假设节点R对应的第一节点集合包含节点B、节点A、节点S和节点E,这4个节点分别对应4个bit中的第1、2、3、4个bit。在图2中右侧所示的组播树中,节点S和节点E为节点R的子节点。假设第一节点集合中的对应的bit的值为1的节点为节点R的子节点,则节点R的组播路由标识可以为0011。
示例性的,基于图3A所示的示例,节点A0需要向节点B、节点C和节点D发送组播报文。节点A0对应的节点集合包括{节点A1、节点A2、节点A3}和{节点B、节点C、节点D、节点E、节点F、节点G}。节点A0的组播路由标识中可以通过一个bit指示节点A0对应的第一节点集合,若该bit的值为0,表示节点A0对应的第一节点集合为{节点B、节点C、节点D、节点E、节点F、节点G},若该bit的值为1,表示节点A0对应的第一节点集合为{节点A1、节点A2、节点A3}。节点A1对应的第一节点集合为{节点B、节点C},节点A2对应的第一节点集合为{节点D、节点E},节点A3对应的第一节点集合为{节点F、节点G}。节点A0的组播路由标识中的bit与节点A0对应的第一节点集合中的节点一一对应,当节点A0对应的第一节点集合中的一个节点对应的bit为1时,表示该节点为节点A0的子节点,其他节点类似。节点A0静态维护节点A1和节点A2的组播路由信息的长度,此时,寻址字段为空。
若节点A0接收到的组播报文(记为组播报文A)中的节点A0的组播路由信息,以及bit序列中的bit与下一跳的地址之间的对应关系为图13中的(a),则节点A0的组播路由标识表示节点A0对应的第一节点集合为{节点A1、节点A2、节点A3},且节点A0需要向节点A1和节点A2发送组播报文。节点A1的组播路由信息表示节点A1需要向节点B和节点C发送组播报文。节点A2的组播路由信息表示节点A2需要向节点D发送组播报文。该情况下,图3A中各个节点发送组播报文的过程为:
21)节点A0解析接收到的组播报文A,获取节点A0的组播路由信息,解析节点A0的组播路由标识中的集合标识(即第一个bit),解析结果为1,表明节点A0对应的第一节点集合为{节点A1、节点A2、节点A3},则节点A0的组播路由标识中后续还包括3个bit,继续解析这3个bit,获取bit序列110。
22)节点A0遍历bit序列110,找到第一个不为0的bit,根据该bit的位置查找组播转发表,得知需要向节点A1发送组播报文B,向节点A1发送的组播报文B的结构可参见图14中的(a)。
23)节点A0继续遍历bit序列110,找到第二个不为0的bit,根据该bit的位置查找组播转发表,得知需要向节点A2发送组播报文C,向节点A2发送的组播报文C的结构可参见图14中的(b)。
24)节点A0继续遍历bit序列110,发现再没有不为0的bit,则不再进行组播报文发送。
25)节点A1接收组播报文B,解析节点A1的组播路由标识11,向节点B和节点C发送单播报文D,由于节点B和节点C为组播树中的叶子节点,因此,向节点B和节点C发送的报文为单播报文而不是组播报文。
26)节点A2接收组播报文C,解析节点A2的组播路由标识10,向节点D发送单播报文E,由于节点D为组播树中的叶子节点,因此,向节点D发送的报文为单播报文而不是组播报文。
若节点A0接收到的组播报文(记为组播报文A)中的A0的组播路由信息,以及bit序列中的bit与下一跳的地址之间的对应关系为图13中的(b),则节点A0的组播路由标识表示节点A0对应的第一节点集合为{节点B、节点C、节点D、节点E、节点F、节点G},且节点A0需要向节点B、节点C和节点D发送组播报文。该情况下,图3A中各个节点发送组播报文的过程为:
31)节点A0解析接收到的组播报文A,获取节点A0的组播路由信息,解析节点A0的组播路由标识中的集合标识(即第一个bit),解析结果为0,表明节点A0对应的第一节点集合为{节点B、节点C、节点D、节点E、节点F、节点G},则节点A0的组播路由标识中后续还包括6个bit,继续解析这6个bit,获取bit序列111000。
32)节点A0遍历bit序列111000,找到不为0的bit,根据这些bit的位置查找组播转发表,得知需要向节点B、节点C和节点D发送报文,由于节点B、节点C和节点D为叶子节点,因此,节点A0向节点B、节点C和节点D发送单播报文。其中,向节点B发送的单播报文中的单播封装中的源地址为节点A0的地址,目的地址为节点B的地址,向节点C发送的单播报文中的单播封装中的源地址为节点A0的地址,目的地址为节点C的地址,向节点D发送的单播报文中的单播封装中的源地址为节点A0的地址,目的地址为节点D的地址。
方式23、一个节点的组播路由标识包括第三字段,第三字段中包括第一组标识,第一组标识用于指示该节点对应的第一节点组,一个节点对应的第一节点组中的节点均为该节点的子节点。
其中,一个节点对应的第一节点组为该节点对应的第一节点集合的子集。一个节点对应的第一节点集合中的节点可以组成至少一个节点组,第一节点集合中的一个节点可以位于一个节点组,也可以位于多个节点组,哪些节点组成一个节点组可以是预先配置的,一个节点组对应一个组标识(Group ID,简称GID)。该情况下,参见图11中的(c),组播路由标识为GID,一个节点可以通过接收到的组播报文中的该节点的组播路由标识中的GID确定该GID对应的节点组中的节点,并向这些节点发送组播报文。
示例性的(记为示例2),基于图2所示的示例,假设节点R对应的第一节点集合包含节点B、节点A、节点S和节点E,这4个节点可以组成3个节点组,第1个节点组包括节点A和节点B,第2个节点组包括节点S和节点E,第3个节点组包括节点B、节点A、节点S和节点E。第1个节点组的标识为标识1,第2个节点组的标识为标识2,第3个节点组的标识为标识3。在图2中的右侧所示的组播树中,节点S和节点E为节点R的子节点。则节点R的组播路由标识可以为标识2。
与方式21和方式22类似的,在方式23中,每个节点上也可以存储有组播转发表,组播转发表中包括节点组的组标识与下一跳的信息(例如,去往下一跳的出接口、下一跳的地址)的对应关系。此处的下一跳即组标识对应的节点组中的节点。该情况下,一个节点可以根据组播路由标识以及组播转发表中的该对应关系确定向哪些节点转发组播报文。基于示例1,节点R的组播转发表的一种示例可参见表2。
表2:节点R的组播转发表
可以理解的是,上述方式21、方式22和方式23中的组播路由标识之间是可以进行相互转换的,例如,方式23中的GID可以转换为方式22中的bit序列或方式21中的组播路由标识。例如,上述示例2中的节点R的组播路由标识(即标识2)可以转换为上述示例1中的节点R的组播路由标识(即0011)。
上述方式21、方式22和方式23中的组播路由标识分别可以称为第一类型组播路由标识、第二类型组播路由标识和第三类型组播路由标识。上述方式21、方式22和方式23中的一个节点的组播路由标识的长度可以在该节点中静态维护。生成组播树中的第一个组播报文的节点(例如,源节点)或控制器可以维护组播树中的所有节点的组播路由标识的长度。
上述方式21,在组播树中的节点极低密度的组播场景下,组播报文的封装效率最优。上述方式22,在组播树中的节点较高密度的组播场景下,封装效率最优。上述方式23,在组播树中的节点最高密度的组播场景下,封装效率最优。
可选的,一个节点的组播路由标识中还包括类型字段,类型字段用于指示该节点的组播路由标识的类型。组播路由标识的类型包括上述第一类型组播路由标识、第二类型组播路由标识和第三类型组播路由标识。该情况下,接收组播报文的节点可以根据组播路由标识的类型确定如何识别组播路由标识。示例性的,当组播路由标识还包括类型字段时,方式21、方式22和方式23中的组播路由标识可以参见图15中的(a)、图15中的(b)和图15中的(c),类型字段在图15中的(a)、图15中的(b)和图15中的(c)中记为Type。
在实际实现时,可以唯一使用一种类型的组播路由标识(此时,不需要类型字段),也可以通过类型字段指示使用哪种类型的组播路由标识。另外,需要说明的是,类型字段可以认为是组播路由标识的一部分,也可以认为是独立于组播路由标识的一个字段,本申请不作限制。在一个组播报文中,不同节点的组播路由标识的类型可以相同,也可以不同,本申请不作限制。
可选的,一个节点的组播路由标识中还包括组播路由标识长度字段和/或节点类型字段,组播路由标识长度字段用于指示组播路由标识的长度,节点类型字段用于指示节点类型,节点类型包括单实体节点和多实体节点,单实体节点是指该节点包括一个实体,多实体节点是指该节点包括多个实体。与类型字段类似的,组播路由标识长度字段和/或节点类型字段可以认为是组播路由标识的一部分,也可以认为是独立于组播路由标识的一个字段,本申请不作限制。
上述类型字段、组播路由标识长度字段和节点类型字段可以统称为描述字段或dscr字段。这些字段还可以有其他名称,本申请不作限制。
上述实施例提到的寻址字段可以通过以下方式31、方式32或方式33实现。
方式31、一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的长度。
假设该节点为节点1,节点1的非叶子子节点有M个。节点1的寻址字段中可以包括M-1或M个字段(该字段记为第五字段),一个第五字段用于指示节点1的一个非叶子子节点的组播路由信息的长度(该长度记为Y),该第五字段的位宽可以为(此时,该第五字段指示的长度为该第五字段的值与1之和),或,(此时,该第五字段指示的长度为该第五字段的值),或,固定位宽(例如,1字节、2字节)。节点1的组播信息可参见图16。其中,递归单元m表示节点1的第m+1个递归单元(即节点1的第m+1个非叶子子节点的组播路由信息)。递归单元m的长度(即节点1的第m+1个非叶子子节点的组播路由信息的长度)可以记为Lm。m为大于等于0小于M的整数。
在第一种情况下,节点1的寻址字段可以指示节点1的M-1个递归单元的长度。M-1个递归单元可以为M个递归单元中的任意M-1个递归单元。该情况下,M个递归单元中的另一个递归单元可以根据第一字段指示的长度计算得到。例如,参见图16,M-1个递归单元为递归单元0至递归单元M-2,即节点1的寻址字段指示L0、L1、…、LM-2。该情况下,若第一字段指示节点1的组播路由信息的长度(记为总长度1),递归单元M-1的长度=总长度1-(L0+L1+…+LM-2)-组播路由标识的长度-寻址字段的长度。若第一字段指示M个递归单元的总长度(记为总长度2),递归单元M-1的长度=总长度2-(L0+L1+…+LM-2)。
在第二种情况下,参见图16,节点1的寻址字段可以指示节点1的M个递归单元的长度,即节点1的寻址字段指示L0、L1、…、LM-1。
在方式31下,节点1可以根据第一字段、组播路由标识和寻址字段的长度确定递归单元0的起始位置,再根据各个递归单元的长度确定每个递归单元的起始位置和/或结束位置。本申请提到的位置可以是相对于组播信息的起始位置的偏移,也可以是相对于组播报文中的其他某个位置的偏移。示例性的,基于图16所示的示例,以节点1的寻址字段指示节点1的M个递归单元的长度、第一字段指示总长度1、且递归单元的起始位置为相对于组播信息的起始位置的偏移为例,递归单元m的起始位置记为offsetm,各个递归单元的起始位置可参见表3。
表3
递归单元 | 递归单元的起始位置 |
递归单元0 | offset<sub>0</sub>=第一字段的长度+组播路由标识的长度+M*第五字段的长度 |
递归单元1 | offset<sub>1</sub>=offset<sub>0</sub>+L<sub>0</sub> |
… | … |
递归单元M-1 | offset<sub>M-1</sub>=offset<sub>M-2</sub>+L<sub>M-2</sub> |
方式32、一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的起始位置或结束位置。
假设该节点为节点1,节点1的非叶子子节点有M个。节点1的寻址字段中可以包括M-1或M个字段(该字段记为第五字段),一个第五字段用于指示节点1的一个非叶子子节点的组播路由信息的起始位置或结束位置。第五字段可以为固定几个bit(例如,4bit)或固定几个字节(例如,1字节)。为了方便描述,下文中以第五字段用于指示起始位置为例对方式32进行示例性说明,第五字段用于指示结束位置时原理类似,可参考进行理解。节点1的组播信息可参见图17中的(a)或图17中的(b)或图17中的(c)。其中,递归单元m的起始位置(即节点1的第m+1个非叶子子节点的组播路由信息的起始位置)可以记为Om。在方式32中,递归单元M-1的长度可以通过第一字段指示的长度计算得到,计算的方法与方式31中类似,可参考进行理解,不再赘述。或者,递归单元M-1的长度也可以由一个字段(记为第六字段)显示指示,此时,第一字段可以有也可以没有。若第一字段没有,第六字段可以位于第一字段的位置,也可以位于其他位置,本申请不作限定。为了方便描述,下文中以存在第六字段时没有第一字段、且第六字段位于第一字段的位置为例进行说明。
方式32可以通过以下方式a或方式b实现。
方式a、节点1的寻址字段指示节点1的M-1个递归单元的起始位置。
在方式a中,M-1个递归单元可以为递归单元1至递归单元M-1,即节点1的寻址字段指示O1、O2、…、OM-1。方式a的第一种可能的实现方式,参见图17中的(a),节点1的寻址字段指示O1、O2、…、OM-1。方式a的第二种可能的实现方式,参见图17中的(b),每个递归单元之前、且与该递归单元相邻的位置均有一个第五字段,该第五字段用于指示下一个递归单元的起始位置。
在方式a下,节点1可以根据第一字段(或第六字段)、组播路由标识和寻址字段的长度确定递归单元0的起始位置,根据寻址字段确定递归单元1至递归单元M-1的起始位置,以及递归单元0至递归单元M-2的长度,再根据第一字段(或第六字段)确定递归单元M-1的长度。本申请提到的位置与方式31中类似,可参考进行理解,不再赘述。示例性的,基于图17中的(b)所示的示例,以递归单元M-1的长度根据第六字段确定为例,各个递归单元的起始位置以及长度可参见表4。
表4
方式b、节点1的寻址字段指示节点1的M个递归单元的起始位置。
方式b中,节点1的寻址字段指示O0、O1、…、OM-1。该情况下,节点1可以根据寻址字段确定递归单元0至递归单元M-1的起始位置,以及递归单元0至递归单元M-2的长度,再根据第一字段或第六字段确定递归单元M-1的长度。本申请提到的位置与方式31中类似,可参考进行理解,不再赘述。示例性的,基于图17中的(c)所示的示例,以递归单元M-1的长度根据第六字段确定为例,各个递归单元的起始位置以及长度可参见表5。
表5
递归单元 | 递归单元的起始位置 | 递归单元的长度 |
递归单元0 | O<sub>0</sub> | O<sub>1</sub>-O<sub>0</sub> |
递归单元1 | O<sub>1</sub> | O<sub>2</sub>-O<sub>1</sub> |
… | … | … |
递归单元M-1 | O<sub>M-1</sub> | 第六字段指示 |
方式33、一个节点的寻址字段包括多个定界字段,该节点的非叶子子节点的组播路由信息由多个定界字段分隔开。
假设该节点为节点1,节点1的非叶子子节点有M个。节点1的寻址字段中可以包括M-1个定界字段,定界字段的长度可以为预先配置的。节点1的组播信息可参见图18。每两个递归单元之间可以存在一个定界字段。该情况下,递归单元M-1的长度可以通过第一字段指示的长度计算得到,计算的方法与方式31中类似,可参考进行理解,不再赘述。或者,递归单元M-1的长度也可以由一个字段(记为第六字段)显示指示,此时,第一字段可以有也可以没有。若第一字段没有,第六字段可以位于第一字段的位置,也可以位于其他位置,本申请不作限定。为了方便描述,下文中以存在第六字段时没有第一字段、且第六字段位于第一字段的位置为例进行说明。
在方式33下,节点1可以根据第一字段(或第六字段)和组播路由标识的长度确定递归单元0的起始位置,根据定界字段确定递归单元1至递归单元M-1的起始位置,以及递归单元0至递归单元M-2的长度,再根据第一字段(或第六字段)确定递归单元M-1的长度。本申请提到的位置与方式31中类似,可参考进行理解,不再赘述。示例性的,基于图18所示的示例,以递归单元的起始位置为相对于组播信息的起始位置的偏移、递归单元M-1的长度根据第六字段确定为例,递归单元m的起始位置记为offsetm,各个递归单元的起始位置以及长度可参见表6。
表6
上述实施例以第二节点为组播树中第一节点的非叶子子节点为例对本申请提供的方法作示例性说明。第二节点也可能为第一节点的叶子子节点,该情况下,本申请提供了的组播报文发送方法可以通过图19所示的方法实现,具体可以包括:
1901、第一节点接收第七组播报文,第七组播报文包括第一节点的组播信息和数据。
关于第一节点的组播信息的描述可参见上文,不再赘述。若第一节点不为组播树的源节点,第一节点可以接收组播树中的其他节点发送的第七组播报文。
1902、若第一节点确定第二节点为第一节点的叶子子节点,第一节点提取出第七组播报文中的数据。
其中,第一节点确定一个节点是否为自身的叶子子节点的过程可参见上述步骤12)的相关描述,不再赘述。可以理解的是,若第二节点为第一节点的叶子节点,则第二节点不需要再对该组播报文进行组播转发,因此,第一节点可以将数据发送给第二节点。也就是说,第一节点发送给第二节点的报文为单播报文。
1903、第一节点根据数据组装第一单播报文。
1904、第一节点向第二节点发送第一单播报文。相应的,第二节点从第一节点接收第一单播报文。
上述实施例提供的方法,均站在节点的角度对本申请提供的方法作示例性说明。一个节点有可能包括多个实体。该情况下,一个节点内的实体接收到组播报文后可以通过图20所示的方法进行处理,该方法应用于第一实体,第一实体属于第一节点,该方法具体包括:
2001、第一实体接收第三组播报文,第三组播报文包括第一节点的第一组播路由信息。
其中,第一节点的第一组播路由信息包括第一节点的第一组播路由标识和第一节点的第一组播路由标识对应的非叶子子节点的组播路由信息,第一节点的第一组播路由标识与第一节点的组播路由标识相同或通过对第一节点的组播路由标识进行更新得到。关于节点的组播路由信息的相关描述可参见上文,不再赘述。
根据上文中关于组播路由标识的作用以及描述可知,若组播路由标识为bit序列,或,Cnt字段+Idx字段,则一个节点的组播路由标识中会有与每个子节点(包括非叶子子节点和叶子子节点)对应的bit或Idx字段。由于第一组播路由标识是根据组播路由标识衍生得到的,因此,第一节点的第一组播路由标识对应的非叶子子节点是指该第一组播路由标识中的bit或Idx字段对应的子节点中的非叶子子节点。
其中,第一实体为第一节点中的一个实体,第一实体可以从第一节点之外的其他节点接收第三组播报文,也可以从第一节点中的其他实体接收第三组播报文,本申请不作限制。若第一实体从第一节点之外的其他节点接收第三组播报文,则第一节点的第一组播路由信息与第一节点的组播路由信息相同。若第一实体从第一节点中的其他实体接收第三组播报文,则第一节点的第一组播路由标识可能与第一节点的组播路由标识相同,也可能通过对第一节点的组播路由标识进行更新得到。第一组播路由信息具体是如何的可根据第一实体和第二实体之间处理组播报文的方法推算得到,具体示例可参见下文,不再赘述。
2002、第一实体根据第一节点的第一组播路由标识确定第二实体,第二实体为第一节点中的实体。
步骤2002在具体实现时可以包括:第一实体根据第一节点的第一组播路由标识查找组播转发表得到第二实体。需要说明的是,第一实体根据第一节点的第一组播路由标识可能可以得到多个第二实体,此处的第二实体可以为其中的任意一个第二实体,本申请中以第一实体向一个第二实体转发组播报文为例进行描述,第一节点在实际处理组播报文时,可以向每个第二实体转发组播报文。
示例性的,若第一组播路由标识为bit序列,则组播转发表中第一组播路由标识中的值为1的bit对应的下一跳为第二实体,若第一组播路由标识为Cnt字段+Idx字段,则组播转发表中Idx字段的值对应的下一跳为第二实体。
2003、第一实体向第二实体发送第四组播报文,第四组播报文中包括第一节点的第二组播路由信息。
其中,第一节点的第二组播路由信息包括第一节点的第二组播路由标识和第一节点的第三组播路由标识对应的部分或全部非叶子子节点的组播路由信息。第一节点的第三组播路由标识与所述第一节点的第一组播路由标识相同或通过对所述第一节点的第一组播路由标识进行更新得到,所述第一节点的第二组播路由标识与所述第一节点的第三组播路由标识相同或通过对所述第一节点的第三组播路由标识进行更新得到。
其中,第一实体具体在以下情况1和情况2下,需要对第一节点的第一组播路由标识进行更新得到第一节点的第三组播路由标识,在其他情况下,第一节点的第三组播路由标识与第一节点的第一组播路由标识相同,以下对情况1和情况2以及更新方法进行示例性说明。
情况1、第一实体属于第一节点的某个子节点(假设为子节点1)。
在情况1下,若第一组播路由标识为bit序列,则第一实体将子节点1对应的bit置0得到第三组播路由标识。若第一组播路由标识为Cnt字段+Idx字段,则第一实体将子节点1对应的Idx字段删除,并将Cnt字段的值减1得到第三组播路由标识。
示例性的,参见图22中的(a),实体A属于节点A,实体A接收到的组播报文A中的节点D1的组播路由标识为110101,该组播路由标识中的第2个bit与节点A对应,因此,参见下文中的步骤53),实体A向实体B发送组播报文C之前,可以将节点D1的组播路由标识(即110101)中的第2个bit置0得到节点D1的组播路由标识1(即100101)。具体可参见下文中的示例1中的第一种情况,此处不再赘述。
情况2、第一实体不属于第一节点的任意一个子节点,但是组播报文只需要经过第一实体的组播转发就可以到达的第一节点的一个或多个子节点(假设为Q个子节点)。
在情况2下,若第一组播路由标识为bit序列,则第一实体将Q个子节点对应的bit置0得到第三组播路由标识。若第一组播路由标识为Cnt字段+Idx字段,则第一实体将Q个子节点对应的Idx字段删除,并将Cnt字段的值减Q得到第三组播路由标识。
示例性的,参见图23中的(a),实体A不属于节点D1的任意一个子节点,节点D1对应的第一节点集合为{节点O、节点P、节点Q、节点R、节点S、节点T、节点U、节点V、节点W}。其中,节点O、节点Q、节点S、节点T、节点U和节点V为节点D1的子节点。实体A接收到的组播报文A中的节点D1的组播路由标识为101011110,其中,节点D1的子节点中节点O和节点Q的组播报文只需要经过实体A的组播转发就可以到达,由于节点O和节点Q对应101011110中的第1个和第3个bit,因此,实体A向实体B发送组播报文C之前,可以将节点D1的组播路由标识(即101011110)中的第1个和第3个bit置0得到节点D1的组播路由标识1(即000011110)。具体可参见下文中的示例1中的第二种情况,此处不再赘述。
其中,第一实体具体在以下情况3下,需要对第一节点的第三组播路由标识进行更新得到第一节点的第二组播路由标识,在其他情况下,第一节点的第二组播路由标识与第一节点的第三组播路由标识相同,以下对情况3以及更新方法进行示例性说明。
情况3、第一实体需要向多个第二实体转发组播报文。
在情况3下,针对任意一个第二实体,若第三组播路由标识为bit序列,则第一实体需要将第一节点的第三组播路由标识中的与除P个子节点之外的其他子节点对应的bit置0得到第二组播路由标识。若第三组播路由标识为Cnt字段+Idx字段,则第一实体将除P个子节点之外的其他子节点对应的Idx字段删除,并将Cnt字段的值减P得到第二组播路由标识。其中,P个子节点为第一节点的一个或多个子节点,这些子节点需要经过该第二实体的组播转发才可以接收到组播报文。
示例性的,参见图1B中的(b),实体A、实体B、实体C、实体D和实体E组成节点Z。节点Z对应的第一节点集合为{节点X、节点Q、节点R、节点E、节点V}。其中,节点X、节点R、节点E、节点V为节点Z的子节点。节点R和节点E的组播报文需要经过实体C转发,节点V的组播报文经过实体B转发。实体A接收到的组播报文A中的节点Z的组播路由标识为110111。其中,节点R和节点E对应110111中的第4个和第5个bit,节点V对应110111中的第6个bit。因此,参见下文中的步骤93),实体A向实体B发送组播报文B之前,可以将节点Z的组播路由标识(即110111)中的第4个和第5个bit置0得到节点Z的组播路由标识1(即100001),向实体C发送组播报文C之前,可以将节点Z的组播路由标识(即110111)中的第6个bit置0得到节点Z的组播路由标识2(即100110)。具体可参见下文中的示例3,此处不再赘述。
需要说明的是,第一节点的第二组播路由信息包括第一节点的第三组播路由标识对应的部分还是全部的非叶子子节点的组播路由信息,取决于第一实体需要向几个第二实体发送组播报文,若第一实体需要向一个第二实体发送组播报文,则第一节点的第二组播路由信息包括第一节点的第三组播路由标识对应的全部的非叶子子节点的组播路由信息,若第一实体需要向2个或2个以上第二实体发送组播报文,则第一节点的第二组播路由信息包括第一节点的第三组播路由标识对应的部分非叶子子节点的组播路由信息。
可选的,该方法还包括:
41)第一实体根据第一节点的第一组播路由标识确定第一子节点,第一子节点为所述第一节点在所述组播树中的子节点中所述第一实体对应的子节点。
42)所述第一实体向所述第一子节点发送第五组播报文,所述第五组播报文包括所述第一子节点的组播路由信息。
需要说明的是,此处以第一子节点为第一节点的非叶子子节点为例进行描述的。若第一子节点为第一节点的叶子子节点,则第一实体向第一子节点中的第三实体发送单播报文。
其中,第一实体对应的子节点也就是第一实体能够处理的子节点。在第一实体属于第一节点的某个子节点的情况下,第一子节点为该某个子节点。在第一实体不属于第一节点的任意一个子节点的情况下,第一子节点为上述Q个子节点中的任意一个,本申请中以第一实体向一个第一子节点发送组播报文为例进行描述,在实际实现时,第一实体可以向每个第一子节点发送组播报文。
可选的,在第一实体不属于第一子节点的情况下,步骤42)在具体实现时可以包括:第一实体向第一子节点中的第三实体发送第五组播报文。
可选的,在第一实体属于第一子节点的情况下,该方法还包括:第一实体根据第一子节点的组播路由标识确定第二子节点,第二子节点为第一子节点在组播树中的子节点中第一实体对应的子节点。后续过程中,第一实体向第二子节点发送报文。若第二子节点为第一子节点的叶子子节点,则该报文为单播报文,该报文中包括第三组播报文中的数据,若第二子节点为第一子节点的非叶子子节点,则该报文为组播报文(可以记为第八组播报文),第八组播报文中包括第二子节点的组播路由信息和数据。示例性的,参见图1B中的(b),第一实体为实体A,第一子节点为节点X,实体A属于节点X,则第二子节点为节点O。
可选的,在第一实体属于第一子节点,且第一子节点还包括第四实体的情况下,该方法还包括:第一实体向第四实体发送第六组播报文,第六组播报文中包括第一子节点的第一组播路由信息,第一子节点的第一组播路由信息包括第一子节点的第一组播路由标识和第一子节点的第二组播路由标识对应的部分或全部非叶子子节点的组播路由信息;第一子节点的第二组播路由标识与第一子节点的组播路由标识相同或通过对第一子节点的组播路由标识进行更新得到,第一子节点的第一组播路由标识与第一子节点的第二组播路由标识相同或通过对第一子节点的第二组播路由标识进行更新得到。
需要说明的是,在图20所示的实施例中,若一个实体属于多个节点,则该实体中可以存储多个组播转发表,一个节点对应一个或多个组播转发表。一个节点对应的组播转发表中包括该节点的组播路由标识(例如,该节点的子节点的节点索引或bit序列或组标识)与下一跳的信息之间的对应关系,用于该实体根据该节点的组播路由标识确定需要向哪些子节点发送组播报文。该情况下,节点的组播路由标识中还可以包括组播转发表标识字段,用于指示实体查找哪个组播转发表。示例性的,若实体中存储有2个组播转发表,分别为组播转发表1和组播转发表2,组播转发表标识字段为1个bit,该bit的值为1时,表示查找组播转发表1,该bit的值为0时,表示查找组播转发表2,反之亦可。组播转发表标识字段也可以不属于组播路由标识,而单独为组播信息中的一个字段。
为了使得图20所示的实施例更加的清楚,以下通过三个示例对图20所示的实施例作示例性说明。在这三个示例中,组播转发表中的索引对应的bit均是指组播路由标识中的除组播转发表标识字段之外的bit,由此也可以理解,在查找组播转发表时,采用的bit均为组播路由标识中的除组播转发表标识字段之外的bit。
示例1
参见图21,图21示出了部分实体的拓扑连接。其中,实体A、实体B、实体C、实体D和实体E组成节点D1。下文中的第一种情况至第三种情况中,均以组播路由标识为bit序列为例对图20所示的实施例进行示例性说明,其中,bit序列中的bit与第一节点集合中的节点一一对应,bit序列中的一个bit的值为1时,表示该bit对应的节点为节点D1的子节点。每个节点中可以静态维护节点D1的组播路由标识的长度。
在第一种情况下,参见图22中的(a),节点D1对应的第一节点集合为{节点A、节点B、节点C、节点D、节点E}。其中,节点A、节点C和节点E为节点D1的子节点。由于节点5和实体A具有拓扑连接,因此,节点5向节点D1发送的组播报文A(组播报文A中的节点D1的组播路由信息可参见图22中的(b)),由节点D1中的实体A接收。组播报文A中的节点D1的组播路由信息中包括3个非叶子子节点(即节点A、节点C和节点E)的组播路由信息,节点A的组播路由信息的长度配置在实体A中,节点D1的寻址字段用于指示节点C的组播路由信息的长度。实体B和实体D中存储有组播转发表1,组播转发表1为节点D1对应的组播转发表。实体A、实体C、实体E中存储有两个组播转发表。实体A、实体C和实体E中存储的组播转发表1均为节点D1对应的组播转发表,实体A中存储的组播转发表2为节点A对应的组播转发表,实体C中存储的组播转发表2为节点C对应的组播转发表,实体E中存储的组播转发表2为节点E对应的组播转发表。节点D1的组播路由标识以及由其衍生的组播路由标识、节点A的组播路由标识、节点C的组播路由标识、节点E的组播路由标识中均包括组播转发表标识字段,该字段为这些组播路由标识中的第1个bit,该bit值为1表示查找组播转发表1,该bit值为0表示查找组播转发表2。
在第一种情况下,节点D1中的各个实体发送组播报文的流程如下:
51)实体A接收组播报文A,确定组播报文A中的节点D1的组播路由标识(即110101)中的第1个bit的值为1,则根据节点D1的组播路由标识中的后5个bit查找组播转发表1(参见表7),确定这5个bit中第1个值为1的bit(即第1个bit)对应自身(即实体A),其余值为1的bit对应实体B。
表7
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体A的地址 |
1(对应第2个bit) | 实体B的地址 |
2(对应第3个bit) | 实体B的地址 |
3(对应第4个bit) | 实体B的地址 |
4(对应第5个bit) | 实体B的地址 |
52)实体A查找到自身(即实体A)之后,获取这5个bit中第1个值为1的bit(即第1个bit)对应的节点(即节点A)的组播路由信息,确定节点A的组播路由标识(即0101)中的第1个bit的值为0,则根据节点A的组播路由标识中的后3个bit查找组播转发表2(参见表8),确定3个bit中值为1的bit对应实体O和实体Q,则向实体O和实体Q发送单播报文B,单播报文B中包括组播报文A中的数据。
表8
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体O的地址 |
1(对应第2个bit) | 实体P的地址 |
2(对应第3个bit) | 实体Q的地址 |
53)实体A查找到实体B之后,向实体B发送组播报文C,组播报文C中包括节点D1的组播路由标识1(即100101)、节点D1的寻址字段、节点C的组播路由信息、节点E的组播路由信息和数据。组播报文C中节点D1的组播路由信息1可参见图22中的(c)。
需要说明的是,由于节点A的组播路由信息被实体A处理了,因此,在发送组播报文C之前,实体A将节点D1的组播路由标识更新为节点D1的组播路由标识1。
54)实体B接收组播报文C,确定组播报文C中的节点D1的组播路由标识1(即100101)中的第1个bit的值为1,则根据节点D1的组播路由标识1中的后5个bit查找组播转发表1(参见表9),确定5个bit中值为1的bit均对应实体C,则向实体C发送组播报文C。
表9
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体A的地址 |
1(对应第2个bit) | 实体B的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体C的地址 |
4(对应第5个bit) | 实体C的地址 |
55)实体C接收组播报文C,确定组播报文C中的节点D1的组播路由标识1(即100101)中的第1个bit的值为1,则根据节点D1的组播路由标识1中的后5个bit查找组播转发表1(参见表10),确定这5个bit中第1个值为1的bit(即第3个bit)对应自身(即实体C),其余值为1的bit对应实体D。
表10
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体B的地址 |
1(对应第2个bit) | 实体B的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体D的地址 |
4(对应第5个bit) | 实体D的地址 |
56)实体C查找到自身(即实体C)之后,获取5个bit中第1个值为1的bit(即第3个bit)对应的节点(即节点C)的组播路由信息,确定节点C的组播路由标识(即0011)中的第1个bit的值为0,则根据节点C的组播路由标识中的后3个bit查找组播转发表2(参见表11),确定3个bit中值为1的bit对应实体S和实体T,向实体S和实体T发送报文。其中,向实体S发送的单播报文D包括组播报文A中的数据,向实体T发送的组播报文D包括组播报文A中的节点T的组播路由信息和数据,组播报文D中包括的节点T的组播信息可参见图22中的(e)。
节点T接收组播报文D,根据组播报文D中的节点T的组播路由标识110查找组播转发表(参见表12),确定3个bit中值为1的bit对应实体X和实体Y,向实体X和实体Y发送单播报文E,单播报文E中包括组播报文A中的数据。
表11
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体R的地址 |
1(对应第2个bit) | 实体S的地址 |
2(对应第3个bit) | 实体T的地址 |
表12
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体X的地址 |
1(对应第2个bit) | 实体Y的地址 |
2(对应第3个bit) | 实体Z的地址 |
57)实体C查找到实体D之后,向实体D发送组播报文F,组播报文F中包括节点D1的组播路由标识2(即100001)、节点E的组播路由信息和数据。组播报文F中节点D1的组播路由信息2可参见图22中的(d)。
需要说明的是,由于节点C的组播路由信息被实体C处理了,因此,在发送组播报文F之前,实体C将节点D1的组播路由标识1更新为节点D1的组播路由标识2。
58)实体D接收组播报文F,确定组播报文F中的节点D1的组播路由标识2(即100001)中的第1个bit的值为1,则根据节点D1的组播路由标识2中的后5个bit查找组播转发表1(参见表13),确定这5个bit中值为1的bit对应实体E,则向实体E发送组播报文F。
表13
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体C的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体D的地址 |
4(对应第5个bit) | 实体E的地址 |
59)实体E接收组播报文F,确定组播报文F中的节点D1的组播路由标识2(即100001)中的第1个bit的值为1,则根据节点D1的组播路由标识2中的后5个bit查找组播转发表1(参见表14),确定5个bit中值为1的bit对应自身(即实体E),获取这5个bit中第1个值为1的bit(即第5个bit)对应的节点(即节点E)的组播路由信息,确定节点E的组播路由标识(即0110)中的第1个bit的值为0,则根据节点E的组播路由标识中的后3个bit查找组播转发表2(参见表15),确定3个bit中值为1的bit对应实体U和实体V,向实体U和实体V发送单播报文G,单播报文G中包括组播报文A中的数据。
表14
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体D的地址 |
1(对应第2个bit) | 实体D的地址 |
2(对应第3个bit) | 实体D的地址 |
3(对应第4个bit) | 实体D的地址 |
4(对应第5个bit) | 实体E的地址 |
表15
表索引 | 下一跳的地址 |
0(对应第1个bit) | 节点U的地址 |
1(对应第2个bit) | 节点V的地址 |
2(对应第3个bit) | 节点W的地址 |
在第二种情况下,参见图23中的(a),节点D1对应的第一节点集合为{节点O、节点P、节点Q、节点R、节点S、节点T、节点U、节点V、节点W}。其中,节点O、节点Q、节点S、节点T、节点U和节点V为节点D1的子节点。由于节点5和实体A具有拓扑连接,因此,节点5向节点D1发送的组播报文A(组播报文A中的节点D1的组播路由信息可参见图23中的(b)),由节点D1中的实体A接收。实体A、实体B、实体C、实体D、实体E中存储有节点D1对应的组播转发表。
在第二种情况下,节点D1中的各个实体发送组播报文的流程如下:
61)实体A接收组播报文A,根据组播报文A中的节点D1的组播路由标识(即101011110)查找组播转发表(参见表16),确定9个bit中第1个和第2个值为1的bit对应实体O、实体Q,其余值为1的bit对应实体B。
表16
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体O的地址 |
1(对应第2个bit) | 实体P的地址 |
2(对应第3个bit) | 实体Q的地址 |
3(对应第4个bit) | 实体B的地址 |
4(对应第5个bit) | 实体B的地址 |
5(对应第6个bit) | 实体B的地址 |
6(对应第7个bit) | 实体B的地址 |
7(对应第8个bit) | 实体B的地址 |
8(对应第9个bit) | 实体B的地址 |
62)实体A查找到实体O和实体Q之后,向实体O和实体Q发送单播报文B,单播报文B中包括组播报文A中的数据。
63)实体A查找到实体B之后,向实体B发送组播报文C,组播报文C中包括节点D1的组播路由标识1(即000011110)、节点T的组播路由信息和数据。组播报文C中节点D1的组播路由信息1可参见图23中的(c)。
需要说明的是,由于节点D1的组播路由标识中的前3个bit被实体A处理了,因此,在发送组播报文C之前,实体A将节点D1的组播路由标识更新为节点D1的组播路由标识1。
64)实体B接收组播报文C,根据组播报文C中的节点D1的组播路由标识1(即000011110)查找组播转发表(参见表17),确定9个bit中值为1的bit均对应实体C,向实体C发送组播报文C。
表17
65)实体C接收组播报文C,根据组播报文C中的节点D1的组播路由标识1(即000011110)查找组播转发表(参见表18),确定9个bit中第1个和第2个值为1的bit对应实体S、实体T,其余值为1的bit对应实体D。
表18
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体B的地址 |
1(对应第2个bit) | 实体B的地址 |
2(对应第3个bit) | 实体B的地址 |
3(对应第4个bit) | 实体R的地址 |
4(对应第5个bit) | 实体S的地址 |
5(对应第6个bit) | 实体T的地址 |
6(对应第7个bit) | 实体D的地址 |
7(对应第8个bit) | 实体D的地址 |
8(对应第9个bit) | 实体D的地址 |
66)实体C查找到实体S、实体T之后,向实体S发送单播报文D,单播报文D中包括组播报文A中的数据,向实体T发送组播报文D,组播报文D中包括组播报文A中的节点T的组播路由信息和数据。实体T接收组播报文D,根据组播报文D中的节点T的组播路由标识110查找组播转发表(参见上述表12),确定3个bit中值为1的bit对应实体X和实体Y,向实体X和实体Y发送单播报文E,单播报文E中包括组播报文A中的数据。
67)实体C查找到实体D之后,向实体D发送组播报文E,组播报文E中包括节点D1的组播路由标识2(即000000110)和数据。组播报文E中节点D1的组播路由信息2可参见图23中的(d)。
需要说明的是,由于节点D1的组播路由标识中的中间3个bit被实体C处理了,因此,在发送组播报文E之前,实体C将节点D1的组播路由标识1更新为节点D1的组播路由标识2。
68)实体D接收组播报文E,根据组播报文E中的节点D1的组播路由标识2(即000000110)查找组播转发表(参见表19),确定9个bit中值为1的bit均对应实体E,向实体E发送组播报文E。
表19
69)实体E接收组播报文E,根据组播报文E中的节点D1的组播路由标识2(即000000110)查找组播转发表(参见表20),确定9个bit中值为1的bit对应实体U、实体V,向实体U和实体V发送单播报文F,单播报文F中包括组播报文A中的数据。
表20
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体D的地址 |
1(对应第2个bit) | 实体D的地址 |
2(对应第3个bit) | 实体D的地址 |
3(对应第4个bit) | 实体D的地址 |
4(对应第5个bit) | 实体D的地址 |
5(对应第6个bit) | 实体D的地址 |
6(对应第7个bit) | 实体U的地址 |
7(对应第8个bit) | 实体V的地址 |
8(对应第9个bit) | 实体W的地址 |
在第三种情况下,参见图24A中的(a),节点D1对应的第一节点集合为{节点O、节点P、节点Q、节点C、节点D、节点E}。其中,节点O、节点Q、节点C和节点E为节点D1的子节点。由于节点5和实体A具有拓扑连接,因此,节点5向节点D1发送的组播报文A(组播报文A中的节点D1的组播路由信息可参见图24A中的(b)),由节点D1中的实体A接收。组播报文A中的节点D1的组播路由信息中包括2个非叶子子节点(即节点C和节点E)的组播路由信息,节点E的组播路由信息的长度配置在实体A中,节点C的组播路由信息的长度可以通过节点D1的组播路由信息的总长度计算得到。实体A、实体B和实体D中存储有组播转发表1,组播转发表1为节点D1对应的组播转发表。实体C、实体E中存储有两个组播转发表。实体C和实体E中存储的组播转发表1均为节点D1对应的组播转发表,实体C中存储的组播转发表2为节点C对应的组播转发表,实体E中存储的组播转发表2为节点E对应的组播转发表。节点D1的组播路由标识以及由其衍生的组播路由标识、节点C的组播路由标识、节点E的组播路由标识中均包括组播转发表标识字段,该字段为这些组播路由标识中的第1个bit,该bit值为1表示查找节点D1对应的组播转发表,该bit值为0表示查找组播转发表2。
71)实体A接收组播报文A,确定组播报文A中的节点D1的组播路由标识(即1101101)中的第1个bit的值为1,则根据节点D1的组播路由标识中的后6个bit查找组播转发表(参见表21),确定这6个bit中第1个和第2个值为1的bit对应实体O、实体Q,其余值为1的bit对应实体B。
表21
72)实体A查找到实体O和实体Q之后,向实体O和实体Q发送单播报文B,单播报文B中包括组播报文A中的数据。
73)实体A查找到实体B之后,向实体B发送组播报文C,组播报文C中包括节点D1的组播路由标识1(即1000101)、节点C的组播路由信息、节点E的组播路由信息和数据。组播报文C中节点D1的组播路由信息1可参见图24A中的(c)。
需要说明的是,由于节点D1的组播路由标识中的前3个bit被实体A处理了,因此,在发送组播报文C之前,实体A将节点D1的组播路由标识更新为节点D1的组播路由标识1。
74)实体B接收组播报文C,确定组播报文C中的节点D1的组播路由标识1(即1000101)中的第1个bit的值为1,则根据节点D1的组播路由标识1中的后6个bit查找组播转发表(参见表22),确定这6个bit中值为1的bit均对应实体C,向实体C发送组播报文C。
表22
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体A的地址 |
1(对应第2个bit) | 实体A的地址 |
2(对应第3个bit) | 实体A的地址 |
3(对应第4个bit) | 实体C的地址 |
4(对应第5个bit) | 实体C的地址 |
5(对应第6个bit) | 实体C的地址 |
75)实体C接收组播报文C,确定组播报文C中的节点D1的组播路由标识1(即1000101)中的第1个bit的值为1,则根据节点D1的组播路由标识1中的后6个bit查找组播转发表1(参见表23),确定这6个bit中第1个值为1的bit(即第4个bit)对应自身(即实体C),其余值为1的bit对应实体D。
表23
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体B的地址 |
1(对应第2个bit) | 实体B的地址 |
2(对应第3个bit) | 实体B的地址 |
3(对应第4个bit) | 实体C的地址 |
4(对应第5个bit) | 实体D的地址 |
5(对应第6个bit) | 实体D的地址 |
76)实体C查找到自身(即实体C)之后,获取6个bit中第1个值为1的bit(即第4个bit)对应的节点(即节点C)的组播路由信息,确定节点C的组播路由标识(即0011)中的第1个bit的值为0,则根据节点C的组播路由标识中的后3个bit查找组播转发表2(参见上述表11),确定3个bit中值为1的bit对应实体S和实体T,向实体S和实体T发送报文。其中,向实体S发送的单播报文D包括组播报文A中的数据,向实体T发送的组播报文D包括组播报文A中的节点T的组播路由信息和数据,组播报文D中包括的节点T的组播信息可参见图22中的(e)。
节点T接收组播报文D,根据组播报文D中的节点T的组播路由标识110查找组播转发表(参见上述表12),确定3个bit中值为1的bit对应实体X和实体Y,向实体X和实体Y发送单播报文E,单播报文E中包括组播报文A中的数据。
77)实体C查找到实体D之后,向实体D发送组播报文F,组播报文F中包括节点D1的组播路由标识2(即1000001)、节点E的组播路由信息和数据。组播报文F中节点D1的组播路由信息2可参见图24A中的(d)。
需要说明的是,由于节点C的组播路由信息被实体C处理了,因此,在发送组播报文F之前,实体C将节点D1的组播路由标识1更新为节点D1的组播路由标识2。
78)实体D接收组播报文F,确定组播报文F中的节点D1的组播路由标识2(即1000001)中的第1个bit的值为1,则根据节点D1的组播路由标识2中的后6个bit查找组播转发表1(参见表24),确定6个bit中值为1的bit对应实体E,则向实体E发送组播报文F。
表24
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体C的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体C的地址 |
4(对应第5个bit) | 实体C的地址 |
5(对应第6个bit) | 实体E的地址 |
79)实体E接收组播报文F,确定组播报文F中的节点D1的组播路由标识2(即1000001)中的第1个bit的值为1,则根据节点D1的组播路由标识2中的后6个bit查找组播转发表1(参见表25),确定这6个bit中值为1的bit对应自身(即实体E),获取这6个bit中第1个值为1的bit(即第6个bit)对应的节点(即节点E)的组播路由信息,确定节点E的组播路由标识(即0110)中的第1个bit的值为0,则根据节点E的组播路由标识中的后3个bit查找组播转发表2(参见上述表15),确定3个bit中值为1的bit对应实体U和实体V,向实体U和实体V发送单播报文G,单播报文G中包括组播报文A中的数据。
表25
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体D的地址 |
1(对应第2个bit) | 实体D的地址 |
2(对应第3个bit) | 实体D的地址 |
3(对应第4个bit) | 实体D的地址 |
4(对应第5个bit) | 实体D的地址 |
5(对应第6个bit) | 实体E的地址 |
示例2
基于图1B中的(a)所示的部分实体的拓扑连接和组播树。其中,实体A、实体B、实体C、实体D和实体E组成节点Z,实体E还组成节点E。示例2中均以组播路由标识为bit序列为例对图20所示的实施例进行示例性说明,其中,bit序列中的bit与第一节点集合中的节点一一对应,bit序列中的一个bit的值为1时,表示该bit对应的节点为节点Z的子节点。每个节点中可以静态维护节点Z的组播路由标识的长度。
在图1B中的(a)中,节点Z对应的第一节点集合为{节点Q、节点R、节点E、节点V}。其中,节点R、节点E、节点V为节点Z的子节点。由于节点3和实体A具有拓扑连接,因此,节点3向节点Z发送的组播报文A(组播报文A中的节点Z的组播路由信息可参见图24B中的(a)),由节点Z中的实体A接收。组播报文A中的节点Z的组播路由信息中包括1个非叶子子节点(即节点E)的组播路由信息。实体A、实体B、实体C、实体D、实体E中存储有组播转发表1,组播转发表1为节点Z对应的组播转发表。实体E中还存储有组播转发表2,组播转发表2为节点E对应的组播转发表。节点Z的组播路由标识以及由其衍生的组播路由标识、节点E的组播路由标识中均包括组播转发表标识字段,该字段为这些组播路由标识中的第1个bit,该bit值为1表示查找组播转发表1,该bit值为0表示查找组播转发表2。
节点Z中的各个实体发送组播报文的流程如下:
81)实体A接收组播报文A,确定组播报文A中的节点Z的组播路由标识(即10111)中的第1个bit的值为1,则根据节点Z的组播路由标识中的后4个bit查找组播转发表1(参见表26),确定这4个bit中第1个和第2个值为1的bit(即第2个和第3个bit)对应实体C,第3个值为1的bit(即第4个bit)对应实体B。
表26
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体C的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体B的地址 |
82)实体A向实体B发送组播报文B,向实体C发送组播报文C。组播报文B中包括节点Z的组播路由标识1(即10001),组播报文B中的节点Z的组播路由信息1可参见图24B中的(b)。组播报文C中包括节点Z的组播路由标识2(即10110)和节点E的组播路由信息,组播报文C中的节点Z的组播路由信息2可参见图24B中的(c)。
其中,由于实体B不处理节点Z的组播路由标识中的后4个bit中的第2个和第3个bit,因此,在发送组播报文B之前,实体A可以将节点Z的组播路由标识更新为节点Z的组播路由标识1。由于实体C不处理节点Z的组播路由标识中的后4个bit中的第4个bit,因此,在发送组播报文C之前,实体A可以将节点Z的组播路由标识更新为节点Z的组播路由标识2。
83)实体B接收组播报文B,确定组播报文B中的节点Z的组播路由标识1(即10001)中的第1个bit的值为1,则根据节点Z的组播路由标识1中的后4个bit查找组播转发表1(参见表27),确定这4个bit中第1个值为1的bit(即第4个bit)对应实体D,向实体D发送组播报文B。实体D接收组播报文B,确定组播报文B中的节点Z的组播路由标识1(即10001)中的第1个bit的值为1,则根据节点Z的组播路由标识1中的后4个bit查找组播转发表1(参见表28),确定这4个bit中第1个值为1的bit(即第4个bit)对应实体V,向实体V发送单播报文D,单播报文D中包括组播报文A中的数据。
表27
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体C的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体D的地址 |
表28
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体B的地址 |
1(对应第2个bit) | 实体B的地址 |
2(对应第3个bit) | 实体E的地址 |
3(对应第4个bit) | 实体V的地址 |
84)实体C接收组播报文C,确定组播报文C中的节点Z的组播路由标识2(即10110)中的第1个bit的值为1,则根据节点Z的组播路由标识2中的后4个bit查找组播转发表1(参见表29),确定4个bit中第1个值为1的bit(即第2个bit)对应实体R,向实体R发送单播报文E,单播报文E中包括组播报文A中的数据,第2个值为1的bit(即第3个bit)对应实体E,向实体E发送组播报文F。组播报文F中包括节点Z的组播路由标识3(即10010)。
需要说明的是,由于实体C在发送组播报文F之前,由于已经处理了节点Z的组播路由标识2中的后4个bit中的第2个bit,因此,将节点Z的组播路由标识2更新为节点Z的组播路由标识3。
表29
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体Q的地址 |
1(对应第2个bit) | 实体R的地址 |
2(对应第3个bit) | 实体E的地址 |
3(对应第4个bit) | 实体B的地址 |
85)实体E接收组播报文F,确定组播报文F中的节点Z的组播路由标识3(即10010)中的第1个bit的值为1,则根据节点Z的组播路由标识3中的后4个bit查找组播转发表1(参见表30),确定4个bit中值为1的bit(即第3个bit)对应自身(即实体E),获取节点E的组播路由信息,确定节点E的组播路由标识(即011)中的第1个bit的值为0,则根据节点E的组播路由标识中的后2个bit查找组播转发表2(参见表31),得到实体S和实体T,向实体S和实体T发送单播报文G,单播报文G中包括组播报文A中的数据。
表30
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体C的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体E的地址 |
3(对应第4个bit) | 实体D的地址 |
表31
示例3
基于图1B中的(b)所示的部分实体的拓扑连接和组播树。其中,实体A、实体B、实体C、实体D和实体E组成节点Z,实体A和实体B还组成实体X,实体E还组成节点E。示例3中均以组播路由标识为bit序列为例对图20所示的实施例进行示例性说明,其中,bit序列中的bit与第一节点集合中的节点一一对应,bit序列中的一个bit的值为1时,表示该bit对应的节点为节点Z的子节点。每个节点中可以静态维护节点Z的组播路由标识的长度。
在图1B中的(b)中,节点Z对应的第一节点集合为{节点X、节点Q、节点R、节点E、节点V}。其中,节点X、节点R、节点E、节点V为节点Z的子节点。由于节点3和实体A具有拓扑连接,因此,节点3向节点Z发送的组播报文A(组播报文A中的节点Z的组播路由信息可参见图24C中的(a)),由节点Z中的实体A接收。组播报文A中的节点Z的组播路由信息中包括2个非叶子子节点(即节点X和节点E)的组播路由信息。实体A、实体B、实体C、实体D、实体E中存储有组播转发表1,组播转发表1为节点Z对应的组播转发表。实体A和实体B中还存储有组播转发表2,实体A和实体B中的组播转发表2为节点X对应的组播转发表。实体E中还存储有组播转发表2,实体E中的组播转发表2为节点E对应的组播转发表。节点Z的组播路由标识以及由其衍生的组播路由标识、节点X的组播路由标识、节点E的组播路由标识中均包括组播转发表标识字段,该字段为这些组播路由标识中的第1个bit,该bit值为1表示查找组播转发表1,该bit值为0表示查找组播转发表2。
节点Z中的各个实体发送组播报文的流程如下:
91)实体A接收组播报文A,确定组播报文A中的节点Z的组播路由标识(即110111)中的第1个bit的值为1,则根据节点Z的组播路由标识中的后5个bit查找组播转发表1(参见表32),确定这5个bit中第1个值为1的bit(即第1个bit)对应自身(即实体A),第2个值为1的bit(即第3个bit)和第3个值为1的bit(即第4个bit)对应实体C,第4个值为1的bit(即第5个bit)对应实体B。
表32
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体A的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体C的地址 |
4(对应第5个bit) | 实体B的地址 |
92)实体A查找到自身(即实体A)之后,获取这5个bit中第1个值为1的bit(即第1个bit)对应的节点(即节点X)的组播路由信息,根据节点X的组播路由标识(即1)查找组播转发表(参见表33),确定实体O,向实体O发送单播报文H,单播报文H中包括组播报文A中的数据。
表33
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体O的地址 |
93)实体A向实体B发送组播报文B,向实体C发送组播报文C。组播报文B中包括节点Z的组播路由标识1(即100001),组播报文B中的节点Z的组播路由信息1可参见图24C中的(b)。组播报文C中包括节点Z的组播路由标识2(即100110)和节点E的组播路由信息,组播报文C中的节点Z的组播路由信息2可参见图24C中的(c)。
其中,由于实体B不处理节点Z的组播路由标识中的后5个bit中的第3个和第4个bit,因此,在发送组播报文B之前,实体A可以将节点Z的组播路由标识更新为节点Z的组播路由标识1。由于实体C不处理节点Z的组播路由标识中的后5个bit中的第5个bit,因此,在发送组播报文C之前,实体A可以将节点Z的组播路由标识更新为节点Z的组播路由标识2。
94)实体B接收组播报文B,确定组播报文B中的节点Z的组播路由标识1(即100001)中的第1个bit的值为1,则根据节点Z的组播路由标识1中的后5个bit查找组播转发表1(参见表34),确定这5个bit中第1个值为1的bit(即第5个bit)对应实体D,向实体D发送组播报文B。实体D接收组播报文B,确定组播报文B中的节点Z的组播路由标识1(即100001)中的第1个bit的值为1,则根据节点Z的组播路由标识1中的后5个bit查找组播转发表1(参见表35),确定这5个bit中第1个值为1的bit(即第5个bit)对应实体V,向实体V发送单播报文D,单播报文D中包括组播报文A中的数据。
表34
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体B的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体C的地址 |
4(对应第5个bit) | 实体D的地址 |
表35
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体B的地址 |
1(对应第2个bit) | 实体B的地址 |
2(对应第3个bit) | 实体B的地址 |
3(对应第4个bit) | 实体E的地址 |
4(对应第5个bit) | 实体V的地址 |
95)实体C接收组播报文C,确定组播报文C中的节点Z的组播路由标识2(即100110)中的第1个bit的值为1,则根据节点Z的组播路由标识2中的后5个bit查找组播转发表1(参见表36),确定这5个bit中第1个值为1的bit(即第3个bit)对应实体R,向实体R发送单播报文E,单播报文E中包括组播报文A中的数据,第2个值为1的bit(即第4个bit)对应实体E,向实体E发送组播报文F。组播报文F中包括节点Z的组播路由标识3(即100010)。
需要说明的是,由于实体C在发送组播报文F之前,由于已经处理了节点Z的组播路由标识2中的后5个bit中的第3个bit,因此,将节点Z的组播路由标识2更新为节点Z的组播路由标识3。
表36
96)实体E接收组播报文F,确定组播报文F中的节点Z的组播路由标识3(即100010)中的第1个bit的值为1,则根据节点Z的组播路由标识3中的后5个bit查找组播转发表1(参见表37),确定这5个bit中值为1的bit(即第4个bit)对应自身(即实体E),获取节点Z的组播路由标识3中的后5个bit中的第4个bit对应的节点(即节点E)的组播路由信息,确定节点E的组播路由标识(即011)中的第1个bit的值为0,则根据节点E的组播路由标识中的后2个bit查找组播转发表2(参见表38),得到实体S和实体T,向实体S和实体T发送单播报文G,单播报文G中包括组播报文A中的数据。
表37
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体C的地址 |
1(对应第2个bit) | 实体C的地址 |
2(对应第3个bit) | 实体C的地址 |
3(对应第4个bit) | 实体E的地址 |
4(对应第5个bit) | 实体D的地址 |
表38
表索引 | 下一跳的地址 |
0(对应第1个bit) | 实体S的地址 |
1(对应第2个bit) | 实体T的地址 |
本申请上述实施例提供的方法,相比PIM-SM具有以下好处:
1、节点中的组播转发表的表项个数不会随着组播流个数的增加而增加,因此,即使组播流个数较多,也不需要在路由器中扩展更多的表空间来支持组播报文的转发,因此,可扩展性较好。
2、组播报文是从源节点生成的,并且,组播报文中包括非叶子子节点的组播路由信息,因此,可以通过调整组播报文,主动控制转发路径。例如,如果有多条路径,控制器或源节点可以通过控制面算法选择最优的路径。
3、组播报文是从源节点生成的,因此,节点加入或离开组播树,源节点均是可以获知的,可管理性较高。例如,源节点可以通过应用层采集到用户的偏好,根据这些偏好调整组播报文中的数据。
4、节点不需要发送加入信令,因此,节点不需要处理大量的周期性信令,避免增加节点的计算负载、功耗以及处理资源。
本申请上述实施例提供的方法,相比BIER具有以下好处:
1、组播报文中包括非叶子子节点的组播路由信息,非叶子子节点可以根据自身的组播路由信息进行组播报文的转发,因此,报文份数不会过多,组播效率较高。
2、组播报文是从源节点生成的,并且,组播报文中包括非叶子子节点的组播路由信息,因此,可以通过调整组播报文,主动控制转发路径。例如,如果有多条路径,控制器或源节点可以通过控制面算法选择最优的路径。
为了使得本申请实施例更加的清楚,以下通过实施例1、实施例2和实施例3对上述实施例提供的方法作示例性说明。其中,实施例1中以组播树为图25所示的组播树、且节点的组播路由标识通过上述方式21实现为例对上述实施例提供的方法作示例性说明。实施例2中以组播树为图25所示的组播树、且节点的组播路由标识通过上述方式22实现为例对上述实施例提供的方法作示例性说明。实施例3中以组播树为图28所示的组播树、且节点的组播路由标识通过上述方式22实现为例对上述实施例提供的方法作示例性说明。
实施例1
在图25所示的组播树中,节点B对应的第一节点集合中包括2个节点(即节点1和节点R),则节点B的Idx字段的位宽为1,节点B有1个子节点(即节点R),节点R的索引为1,因此,节点B的组播路由标识中的Cnt字段的值为1,Idx字段有一个,值也为1。节点R对应的第一节点集合中包括3个节点(即节点B、节点S和节点E),则节点R的Idx字段的位宽为2,节点R有2个子节点,分别为节点S和节点E,节点S和节点E的索引分别为1和2,因此,节点B的组播路由标识中的Cnt字段的值为2,Idx字段有2个,2个Idx字段的值分别为1和2。节点S对应的第一节点集合中包括3个节点(即节点R、节点C和节点D),则节点S的Idx字段的位宽为2,节点S有2个子节点,分别为节点C和节点D,节点C和节点D的索引分别为1和2,因此,节点S的组播路由标识中的Cnt字段的值为2,Idx字段有2个,2个Idx字段的值分别为1和2。节点C对应的第一节点集合中包括2个节点(即节点S和节点2),则节点C的Idx字段的位宽为1,节点C有1个子节点,该子节点为节点2,节点2的索引为1,因此,节点C的组播路由标识中的Cnt字段的值为1,Idx字段有一个,值为1。节点D对应的第一节点集合中包括2个节点(即节点S和节点3),则节点D的Idx字段的位宽为1,节点D有1个子节点,该子节点为节点3,节点3的索引为1,因此,节点D的组播路由标识中的Cnt字段的值为1,Idx字段有一个,值为1。节点E对应的第一节点集合中包括2个节点(即节点R和节点4),则节点E的Idx字段的位宽为1,节点E有1个子节点,该子节点为节点4,节点4的索引为1,因此,节点E的组播路由标识中的Cnt字段的值为1,Idx字段有一个,值为1。假设第一字段和Cnt字段的位宽为1字节,则节点1发送给节点B的组播报文(记为组播报文1)可参见图26中的(a)。图26中的(a)、图26中的(b)、图26中的(c)、图26中的(d)、图26中的(e)中,“:”之前的C表示Cnt字段,“:”之前的I0表示第一个Idx字段,“:”之前的I1表示第二个Idx字段,“:”之前的Ls是指节点S的组播路由信息的长度,“:”之后的值表示该字段的值,Ls的位宽为1字节。
需要说明的是,由于节点B只有一棵子树,也就是说,节点B只有一个非叶子子节点,该非叶子子节点的组播路由信息的位置可以通过第一字段指示的长度和其他字段的长度计算得到,因此,组播报文1中可以不携带节点B的寻址字段。基于节点B接收到的组播报文1,组播树中的各个节点发送组播报文的过程如下:
101)节点B解析组播报文1,根据第一字段的长度和Cnt字段的长度确定Cnt字段的位置(节点B的组播信息中的第9-16个bit),根据该位置上的值确定Cnt字段的值为1,则获知后续有1个Idx字段(也就是节点B有一个子节点),根据Idx字段的长度确定Idx字段的位置(节点B的组播信息中的第17个bit),根据该位置上的值确定Idx字段的值为1,在节点B的组播转发表(参见下文中的表39)中查找Idx字段的值对应的下一跳的地址,得到节点R的地址。根据第一字段的长度和节点B的组播路由标识的长度,以及第一字段指示的节点B的组播路由信息的总长度确定组播报文1中节点R的组播路由信息的位置(节点B的组播信息中的第18-76个bit),根据该位置提取出节点R的组播路由信息,并进行组播封装得到组播报文2,向节点R发送组播报文2。组播报文2中节点R的组播信息的结构可参见图26中的(b),其中,节点R的组播路由信息的长度为59,因此,节点B在封装组播报文2时,可以添加第一字段和第二字段,第一字段的值为59,第二字段的长度为5bit。组播报文2中还可以包括单播封装,单播封装中的源地址为节点B的地址,目的地址为节点R的地址。
表39:节点B的组播转发表
节点索引 | 下一跳地址 |
0 | 节点1的地址 |
1 | 节点R的地址 |
需要说明的是,由于节点R有2棵子树,也就是说,节点R有2个非叶子子节点,其中一个非叶子子节点的组播路由信息的位置可以通过组播报文2中的节点R的寻址字段指示,另一个非叶子子节点的组播路由信息的位置可以根据组播报文2中的第一字段指示的长度、节点R的寻址字段指示的长度和其他字段的长度计算得到。
102)节点R接收并解析组播报文2,根据第一字段的长度和Cnt字段的长度确定Cnt字段的位置(节点R的组播信息中的第9-16个bit),根据该位置上的值确定Cnt字段的值为2,则获知后续有2个Idx字段(也就是节点R有2个子节点),根据Idx字段的长度确定2个Idx字段的位置(第1个Idx字段的位置为节点R的组播信息中的第17-18个bit,第2个Idx字段的位置为节点R的组播信息中的第19-20个bit),根据该位置上的值确定第1个Idx字段的值为1,第2个Idx字段的值为2,在节点R的组播转发表(参见下文中的表40)中查找Idx字段的值对应的下一跳的地址,得到节点S和节点E的地址。
表40:节点R的组播转发表
节点索引 | 下一跳地址 |
0 | 节点B的地址 |
1 | 节点S的地址 |
2 | 节点E的地址 |
103)节点R根据第一字段的长度、节点R的组播路由标识的长度、节点R的寻址字段的长度、节点R的寻址字段指示的节点S的组播路由信息的长度以及第一字段指示的节点R的组播路由信息的总长度,确定组播报文2中节点S的组播路由信息的位置(节点R的组播信息中的第29-58个bit),根据该位置提取出节点S的组播路由信息,并进行组播封装得到组播报文3,向节点S发送组播报文3。组播报文3中节点S的组播信息的结构可参见图26中的(c),其中,节点S的组播路由信息的长度为30,因此,节点R在封装组播报文3时,可以添加第一字段和第二字段,第一字段的值为30,第二字段的长度为2bit。组播报文3中还可以包括单播封装,单播封装中的源地址为节点R的地址,目的地址为节点S的地址。
需要说明的是,节点C只有节点2一个子节点并且节点2为叶子节点,节点D只有节点3一个子节点并且节点3为叶子节点,此时,节点C和节点D的Idx字段的个数不会变化,均为1,因此,节点S中可以静态维护节点C和节点D的Idx字段的长度,此时,组播报文3中可以不包括节点S的寻址字段。
104)节点R根据第一字段的长度、节点R的组播路由标识的长度、节点R的寻址字段的长度、节点R的寻址字段指示的节点S的组播路由信息的长度以及第一字段指示的节点R的组播路由信息的总长度,确定组播报文2中节点E的组播路由信息的位置(节点R的组播信息中的第59-67个bit),根据该位置提取出节点E的组播路由信息,并进行组播封装得到组播报文4,向节点E发送组播报文4。组播报文4中节点E的组播信息的结构可参见图26中的(d),其中,节点E的组播路由信息的长度为9,因此,节点R在封装组播报文4时,可以添加第一字段和第二字段,第一字段的值为9,第二字段的长度为7bit。组播报文4中还可以包括单播封装,单播封装中的源地址为节点R的地址,目的地址为节点E的地址。
105)节点S接收并解析组播报文3,根据第一字段的长度和Cnt字段的长度确定Cnt字段的位置(节点S的组播信息中的第9-16个bit),根据该位置上的值确定Cnt字段的值为2,则获知后续有2个Idx字段(也就是节点S有2个子节点),根据Idx字段的长度确定2个Idx字段的位置(第1个Idx字段的位置为节点S的组播信息中的第17-18个bit,第2个Idx字段的位置为节点S的组播信息中的第19-20个bit),根据该位置上的值确定第1个Idx字段的值为1,第2个Idx字段的值为2,在节点S的组播转发表(参见下文中的表41)中查找Idx字段的值对应的下一跳的地址,得到节点C和节点D的地址。
表41:节点S的组播转发表
节点索引 | 下一跳地址 |
0 | 节点R的地址 |
1 | 节点C的地址 |
2 | 节点D的地址 |
106)节点S根据第一字段的长度、节点S的组播路由标识的长度、以及静态维护的节点C的组播路由信息的长度(即9),确定组播报文3中节点C的组播路由信息的位置(节点S的组播信息中的第21-29个bit),根据该位置提取出节点C的组播路由信息,并进行组播封装得到组播报文5,向节点C发送组播报文5。组播报文5中节点C的组播信息的结构可参见图26中的(e),其中,节点C的组播路由信息的长度为9,因此,节点S在封装组播报文5时,可以添加第一字段和第二字段,第一字段的值为9,第二字段的长度为7bit。组播报文5中还可以包括单播封装,单播封装中的源地址为节点S的地址,目的地址为节点C的地址。
107)节点S根据第一字段的长度、节点S的组播路由标识的长度、静态维护的节点C的组播路由信息的长度(即9)、以及第一字段指示的节点S的组播路由信息的总长度,确定组播报文3中节点D的组播路由信息的位置(节点S的组播信息中的第30-38个bit),根据该位置提取出节点D的组播路由信息,并进行组播封装得到组播报文6,向节点D发送组播报文6。组播报文6中节点D的组播信息的结构与节点C的组播路由信息的结构类似,可参考进行理解,不再赘述。
108)节点C接收并解析组播报文5,根据第一字段的长度和Cnt字段的长度确定Cnt字段的位置(节点C的组播信息中的第9-16个bit),根据该位置上的值确定Cnt字段的值为1,则获知后续有1个Idx字段(也就是节点C有1个子节点),根据Idx字段的长度确定Idx字段的位置(节点C的组播信息中的第17个bit),根据该位置上的值确定Idx字段的值为1,在节点C的组播转发表(参见下文中的表42)中查找Idx字段的值对应的下一跳的地址,得到节点2的地址,向节点2发送单播报文6,单播报文6中包括组播报文1中的数据。
表42:节点C的组播转发表
节点索引 | 下一跳地址 |
0 | 节点S的地址 |
1 | 节点2的地址 |
节点D、节点E和节点C的组播报文处理过程类似,可参考进行理解,不再赘述。
实施例2
在图25所示的组播树中,节点B对应的第一节点集合中包括2个节点(即节点1和节点R),则节点B的bit序列的位宽为2,第1个bit与节点1对应,第2个bit与节点R对应,节点R为节点B的子节点,因此,2个bit的值为01。节点R对应的第一节点集合中包括3个节点(即节点B、节点S和节点E),则节点R的bit序列的位宽为3,第1个bit与节点B对应,第2个bit与节点S对应,第3个bit与节点E对应,节点S和节点E为节点R的子节点,因此,3个bit的值为011。节点S对应的第一节点集合中包括3个节点(即节点R、节点C和节点D),则节点S的bit序列的位宽为3,第1个bit与节点R对应,第2个bit与节点C对应,第3个bit与节点D对应,节点C和节点D为节点S的子节点,因此,3个bit的值为011。节点C对应的第一节点集合中包括2个节点(即节点S和节点2),则节点C的bit序列的位宽为2,第1个bit与节点S对应,第2个bit与节点2对应,节点2为节点C的子节点,因此,2个bit的值为01。节点D对应的第一节点集合中包括2个节点(即节点S和节点3),则节点D的bit序列的位宽为2,第1个bit与节点S对应,第2个bit与节点3对应,节点3为节点D的子节点,因此,2个bit的值为01。节点E对应的第一节点集合中包括2个节点(即节点R和节点4),则节点E的bit序列的位宽为2,第1个bit与节点R对应,第2个bit与节点4对应,节点4为节点E的子节点,因此,2个bit的值为01。假设第一字段的位宽为1字节,则节点1发送给节点B的组播报文(记为组播报文1)可参见图27中的(a)。图27中的(a)、图27中的(b)、图27中的(c)、图27中的(d)、图27中的(e)中,除第一字段、第二字段和节点R的寻址字段之外,“:”之前的字母表示该字段对应的节点,“:”之后的值表示该字段对应的bit序列;节点R的寻址字段中的“:”之前的Ls是指节点S的组播路由信息的长度,“:”之后的值表示该字段的值,Ls的位宽为1字节。
需要说明的是,由于节点B只有一棵子树,也就是说,节点B只有一个非叶子子节点,该非叶子子节点的组播路由信息的位置可以通过第一字段指示的长度和其他字段的长度计算得到,因此,组播报文1中可以不携带节点B的寻址字段。基于节点B接收到的组播报文1,组播树中的各个节点发送组播报文的过程如下:
111)节点B解析组播报文1,根据第一字段的长度和Bit序列的长度确定Bit序列的位置(节点B的组播信息中的第9-10个bit),根据该位置确定Bit序列的值为01,则在节点B的组播转发表(参见下文中的表43)中查找不为0的bit(即第二个bit)的值对应的下一跳的地址,得到节点R的地址。根据第一字段的长度和节点B的组播路由标识的长度,以及第一字段指示的节点B的组播路由信息的总长度确定组播报文1中节点R的组播路由信息的位置(节点B的组播信息中的第11-30个bit),根据该位置提取出节点R的组播路由信息,并进行组播封装得到组播报文2,向节点R发送组播报文2。组播报文2中节点R的组播信息的结构可参见图27中的(b),其中,节点R的组播路由信息的长度为20,因此,节点B在封装组播报文2时,可以添加第一字段和第二字段,第一字段的值为20,第二字段的长度为4bit。组播报文2中还可以包括单播封装,单播封装中的源地址为节点B的地址,目的地址为节点R的地址。
表43:节点B的组播转发表
bit序列中的bit | 下一跳地址 |
第1个 | 节点1的地址 |
第2个 | 节点R的地址 |
需要说明的是,由于节点R有2棵子树,也就是说,节点R有2个非叶子子节点,其中一个非叶子子节点的组播路由信息的位置可以通过组播报文2中的节点R的寻址字段指示,另一个非叶子子节点的组播路由信息的位置可以根据组播报文2中的第一字段指示的长度、节点R的寻址字段指示的长度和其他字段的长度计算得到。
112)节点R接收并解析组播报文2,根据第一字段的长度和Bit序列的长度确定Bit序列的位置(节点R的组播信息中的第9-11个bit),根据该位置确定Bit序列的值为011,则在节点R的组播转发表(参见下文中的表44)中查找不为0的bit(即第二个bit和第三个bit)对应的下一跳的地址,得到节点S和节点E的地址。
表44:节点R的组播转发表
bit序列中的bit | 下一跳地址 |
第1个 | 节点B的地址 |
第2个 | 节点S的地址 |
第3个 | 节点E的地址 |
113)节点R根据第一字段的长度、节点R的组播路由标识的长度、节点R的寻址字段的长度、节点R的寻址字段指示的节点S的组播路由信息的长度以及第一字段指示的节点R的组播路由信息的总长度,确定组播报文2中节点S的组播路由信息的位置(节点R的组播信息中的第20-26个bit),根据该位置提取出节点S的组播路由信息,并进行组播封装得到组播报文3,向节点S发送组播报文3。组播报文3中节点S的组播信息的结构可参见图27中的(c),其中,节点S的组播路由信息的长度为7,因此,节点R在封装组播报文3时,可以添加第一字段和第二字段,第一字段的值为7,第二字段的长度为1bit。组播报文3中还可以包括单播封装,单播封装中的源地址为节点R的地址,目的地址为节点S的地址。
需要说明的是,节点C和节点D对应的第一节点集合中只有2个节点并且其中一个为叶子节点,因此,节点C和节点D的组播路由标识的位宽不会变化,均为2,因此,节点S中可以静态维护节点C和节点D的组播路由标识的位宽,此时,组播报文3中可以不包括节点S的寻址字段。
114)节点R根据第一字段的长度、节点R的组播路由标识的长度、节点R的寻址字段的长度、节点R的寻址字段指示的节点S的组播路由信息的长度以及第一字段指示的节点R的组播路由信息的总长度,确定组播报文2中节点E的组播路由信息的位置(节点R的组播信息中的第27-28个bit),根据该位置提取出节点E的组播路由信息,并进行组播封装得到组播报文4,向节点E发送组播报文4。组播报文4中节点E的组播信息的结构可参见图27中的(d),其中,节点E的组播路由信息的长度为2,因此,节点R在封装组播报文4时,可以添加第一字段和第二字段,第一字段的值为2,第二字段的长度为6bit。组播报文4中还可以包括单播封装,单播封装中的源地址为节点R的地址,目的地址为节点E的地址。
115)节点S接收并解析组播报文3,根据第一字段的长度和Bit序列的长度确定Bit序列的位置(节点S的组播信息中的第9-11个bit),根据该位置确定Bit序列的值为011,则在节点S的组播转发表(参见下文中的表45)中查找不为0的bit(即第二个bit和第三个bit)对应的下一跳的地址,得到节点C和节点D的地址。
表45:节点S的组播转发表
bit序列中的bit | 下一跳地址 |
第1个 | 节点R的地址 |
第2个 | 节点C的地址 |
第3个 | 节点D的地址 |
116)节点S根据第一字段的长度、节点S的组播路由标识的长度、以及第一字段指示的节点S的组播路由信息的总长度,确定组播报文3中节点C的组播路由信息的位置(节点S的组播信息中的第12-13个bit),根据该位置提取出节点C的组播路由信息,并进行组播封装得到组播报文5,向节点C发送组播报文5。组播报文5中节点C的组播信息的结构可参见图27中的(e),其中,节点C的组播路由信息的长度为2,因此,节点S在封装组播报文5时,可以添加第一字段和第二字段,第一字段的值为2,第二字段的长度为6bit。组播报文5中还可以包括单播封装,单播封装中的源地址为节点S的地址,目的地址为节点C的地址。
117)节点S根据第一字段的长度、节点S的组播路由标识的长度、以及第一字段指示的节点S的组播路由信息的总长度,确定组播报文3中节点D的组播路由信息的位置(节点S的组播信息中的第14-15个bit),根据该位置提取出节点D的组播路由信息,并进行组播封装得到组播报文6,向节点D发送组播报文6。组播报文6中节点D的组播信息的结构与节点C的组播路由信息的结构类似,可参考进行理解,不再赘述。
118)节点C接收并解析组播报文5,根据第一字段的长度和Bit序列的长度确定Bit序列的位置(节点C的组播信息中的第9-10个bit),根据该位置确定Bit序列的值为01,则在节点C的组播转发表(参见下文中的表46)中查找不为0的bit(即第二个bit)对应的下一跳的地址,得到节点2的地址,向节点2发送单播报文6,单播报文6中包括组播报文1中的数据。
表46:节点C的组播转发表
bit序列中的bit | 下一跳地址 |
第1个 | 节点S的地址 |
第2个 | 节点2的地址 |
节点D、节点E和节点C的组播报文处理过程类似,可参考进行理解,不再赘述。
实施例3
在图28中的(a)所示的组播树中,组播源是节点1,组播目的节点包括:节点O、节点Q、节点S、节点X、节点Y、节点U、节点V、节点G、节点H。实体A、实体B、实体C、实体D和实体E组成节点D1,节点D1中的实体之间、以及节点D1中的实体与节点D1之外的其他实体之间的拓扑连接可参见图21。实体F、实体G和实体H组成节点D2,节点D2中的实体之间的拓扑连接可参见图28中的(b),节点D2中的实体F与节点5具有拓扑连接。
节点3对应的第一节点集合中包括2个节点(即节点1和节点5),则节点3的bit序列的位宽为2,第1个bit与节点1对应,第2个bit与节点5对应,节点5为节点3的子节点,因此,2个bit的值为01。
节点5对应的第一节点集合中包括3个节点(即节点3、节点D1和节点D2),则节点5的bit序列的位宽为3,第1个bit与节点3对应,第2个bit与节点D1对应,第3个bit与节点D2对应,节点D1和节点D2为节点5的子节点,因此,3个bit的值为011。
节点D1对应的第一节点集合中包括5个节点(即节点A、节点B、节点C、节点D和节点E),则节点D1的bit序列的位宽为5,从前至后的5个bit分别与节点A、节点B、节点C、节点D和节点E对应,节点A、节点C和节点E为节点D1的子节点,因此,5个bit的值为10101。
节点A对应的第一节点集合中包括3个节点(即节点O、节点P和节点Q),则节点A的bit序列的位宽为3,第1个bit与节点O对应,第2个bit与节点P对应,第3个bit与节点Q对应,节点O和节点Q为节点A的子节点,因此,3个bit的值为101。
节点C对应的第一节点集合中包括3个节点(即节点R、节点S和节点T),则节点C的bit序列的位宽为3,第1个bit与节点R对应,第2个bit与节点S对应,第3个bit与节点T对应,节点S和节点T为节点C的子节点,因此,3个bit的值为011。
节点T对应的第一节点集合中包括3个节点(即节点X、节点Y和节点Z),则节点T的bit序列的位宽为3,第1个bit与节点X对应,第2个bit与节点Y对应,第3个bit与节点Z对应,节点X和节点Y为节点T的子节点,因此,3个bit的值为110。
节点E对应的第一节点集合中包括3个节点(即节点U、节点V和节点W),则节点E的bit序列的位宽为3,第1个bit与节点U对应,第2个bit与节点V对应,第3个bit与节点W对应,节点U和节点V为节点E的子节点,因此,3个bit的值为110。
节点D2对应的第一节点集合中包括3个节点(即节点F、节点G和节点H),则节点D2的bit序列的位宽为3,第1个bit与节点F对应,第2个bit与节点G对应,第3个bit与节点H对应,节点G和节点H为节点D2的子节点,因此,3个bit的值为011。
假设第一字段的位宽为1字节,则节点1发送给节点B的组播报文(记为组播报文1)可参见图29中的(a)。图29中的(a)、图29中的(b)、图29中的(c)、图29中的(d)中,除第一字段、第二字段、节点5的寻址字段和节点D1的寻址字段之外,“:”之前的字母表示该字段对应的节点,“:”之后的值表示该字段对应的bit序列;节点5的寻址字段中的“:”之前的LD1是指节点D1的组播路由信息的长度,“:”之后的值表示该字段的值,LD1的位宽为1字节;节点D1的寻址字段中的“:”之前的LC是指节点C的寻址字段,“:”之后的值表示该字段的值,LC的位宽为1字节。
需要说明的是,由于节点3只有一棵子树,也就是说,节点3只有一个非叶子子节点,该非叶子子节点的组播路由信息的位置可以通过第一字段指示的长度和其他字段的长度计算得到,因此,组播报文1中可以不携带节点3的寻址字段。基于节点1生成的组播报文1,组播树中的各个节点发送组播报文的过程如下:
121)节点1向节点3发送组播报文1,节点3接收并解析组播报文1,根据第一字段的长度和Bit序列的长度确定Bit序列的位置(节点3的组播信息中的第9-10个bit),根据该位置确定Bit序列的值为01,则在节点3的组播转发表(参见下文中的表47)中查找不为0的bit(即第二个bit)的值对应的下一跳的地址,得到节点5的地址。根据第一字段的长度和节点3的Bit序列的长度,以及第一字段指示的节点3的组播路由信息的总长度确定组播报文1中节点5的组播路由信息的位置(节点3的组播信息中的第11-53个bit),根据该位置提取出节点5的组播路由信息,并进行组播封装得到组播报文2,向节点5发送组播报文2。组播报文2中节点5的组播信息的结构可参见图29中的(b),其中,节点5的组播路由信息的长度为43,因此,节点3在封装组播报文2时,可以添加第一字段和第二字段,第一字段的值为43,第二字段的长度为5bit。组播报文2中还可以包括单播封装,单播封装中的源地址为节点3的地址,目的地址为节点5的地址。
表47:节点3的组播转发表
bit序列中的bit | 下一跳地址 |
第1个 | 节点1的地址 |
第2个 | 节点5的地址 |
122)节点5接收并解析组播报文2,根据第一字段的长度和Bit序列的长度确定Bit序列的位置(节点5的组播信息中的第9-11个bit),根据该位置确定Bit序列的值为011,则在节点5的组播转发表(参见下文中的表48)中查找不为0的bit(即第二个bit和第三个bit)对应的下一跳的地址,得到实体A和实体F的地址。
表48:节点5的组播转发表
123)节点5根据第一字段的长度、节点5的bit序列的长度、节点5的寻址字段的长度、节点5的寻址字段指示的节点D1的组播路由信息的长度以及第一字段指示的节点5的组播路由信息的总长度,确定组播报文2中节点D1的组播路由信息的位置(节点5的组播信息中的第20-48个bit),根据该位置提取出节点D1的组播路由信息,并进行组播封装得到组播报文3,向实体A发送组播报文3。组播报文3中节点D1的组播信息的结构可参见图29中的(c),其中,节点D1的组播路由信息的长度为29,因此,节点5在封装组播报文3时,可以添加第一字段和第二字段,第一字段的值为29,第二字段的长度为3bit。组播报文3中还可以包括单播封装,单播封装中的源地址为节点5的地址,目的地址为节点D1中的实体A的地址。
124)节点D1中的实体A接收组播报文3,并进行组播报文转发,具体过程可参见上述步骤51)-步骤59),将组播报文A替换为组播报文3理解即可。
125)节点5根据第一字段的长度、节点5的组播路由标识的长度、节点5的寻址字段的长度、节点5的寻址字段指示的节点D1的组播路由信息的长度以及第一字段指示的节点5的组播路由信息的总长度,确定组播报文2中节点D2的组播路由信息的位置(节点5的组播信息中的第49-51个bit),根据该位置提取出节点D2的组播路由信息,并进行组播封装得到组播报文4,向实体F发送组播报文4。组播报文4中节点D2的组播信息的结构可参见图29中的(d),其中,节点D2的组播路由信息的长度为3,因此,节点5在封装组播报文4时,可以添加第一字段和第二字段,第一字段的值为3,第二字段的长度为5bit。组播报文4中还可以包括单播封装,单播封装中的源地址为节点5的地址,目的地址为节点D2中的实体F的地址。
126)节点D2中的实体F接收并解析组播报文4,根据第一字段的长度和Bit序列的长度确定Bit序列的位置(节点D2的组播信息中的第9-11个bit),根据该位置确定Bit序列的值为011,则在节点D2的组播转发表(参见下文中的表49)中查找不为0的bit(即第二个bit和第三个bit)对应的下一跳的地址,得到实体G的地址和实体H的地址,实体F向实体G和实体H发送单播报文5,单播报文5中包括组播报文1中的数据。
表49:节点D2的组播转发表
bit序列中的bit | 下一跳地址 |
第1个 | 实体F的地址 |
第2个 | 实体G的地址 |
第3个 | 实体H的地址 |
上述实施例中,均以组播报文中不包括类型字段为例对本申请提供的方法作示例性说明。若当前节点支持多种类型的组播路由标识,组播报文中可以包括类型字段,则节点可以解析类型字段获取组播路由标识的类型,根据组播路由标识的类型对组播路由标识进行识别。
上述实施例中,组播报文中的任意一个字段的位宽均是示例性的,在实际实现时,任意一个字段的位宽可以不是字节对齐的,也可以是对齐的(例如,该字段均为1字节、2字节或更多字节),本申请不作限制。
上述实施例中,一个节点(或该节点中的实体)在接收到组播报文之后,可以根据外层封装中的字段的指示确定组播报文的报文头中是否包含组播封装,若外层封装中的目的地址为该节点(或该实体)的地址、且确定组播报文中的报文头中包含组播封装,该节点(或该实体)可以剥掉外层封装,获取组播封装,并根据组播封装对组播报文进行相应的处理。
上述实施例中,一个节点(或实体)向多个节点(或实体)发送组播报文之前,可以将接收到的组播报文进行复制,向N个节点(或实体)发送则复制N-1份,在复制的组播报文以及接收到的组播报文上进行编辑得到需要发送的组播报文。若只向一个节点(或实体)发送组播报文,则可以不复制,直接在接收到的组播报文上进行编辑。节点(或实体)在进行组播报文的复制时,可以一次全部复制,再并行编辑组播报文并发送。也可以一次复制一个组播报文,并编辑组播报文并发送。
本申请中的图13中的(a)、图13中的(b)、图14中的(a)、图14中的(b)、图22中的(b)、图22中的(c)、图22中的(d)、图22中的(e)、图23中的(b)、图23中的(c)、图23中的(d)、图24A中的(b)、图24A中的(c)、图24A中的(d)、图24B中的(a)、图24B中的(b)、图24B中的(c)、图24C中的(a)、图24C中的(b)、图24C中的(c)、图26中的(a)、图26中的(b)、图26中的(c)、图26中的(d)、图26中的(e)、图27中的(a)、图27中的(b)、图27中的(c)、图27中的(d)、图27中的(e)、图29中的(a)、图29中的(b)、图29中的(c)、图29中的(d)中所示的组播报文中,“:”之前的部分为助记符,实际报文中并不存在助记符和“:”。本申请各个附图中,各个字段的位置仅仅为示例,在实际实现时有些字段的位置可以与图示中不同,本申请不作限制。
需要说明的是,在本申请实施例的描述中,一个节点(或实体)向另一个节点(或实体)发送组播报文是指该组播报文的源地址为所述一个节点(或实体)的地址,目的地址为所述另一个节点(或实体)的地址。本申请上述实施例中任何一个bit(可以为单个bit也可以为bit序列中的bit)的值为1时表示的含义也可以通过0表示,为0时的含义也可以通过为1时表示,不作限制。例如,上述实施例中bit序列中的bit的值为1时,表示该bit为节点D1的子节点,值为0时表示该bit不为节点D1的子节点,在实际实现时,也可以bit序列中的bit的值为0时,表示该bit为节点D1的子节点,值为1时表示该bit不为节点D1的子节点。其他bit类似,不再一一阐述。
上述主要从方法的角度对本申请实施例的方案进行了介绍。可以理解的是,各个网元,例如,节点或实体为了实现上述功能,其包含了执行各个功能相应的硬件结构和软件模块中的至少一个。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对节点或实体进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
示例性的,图30示出了上述实施例中所涉及的通信装置(记为通信装置300)的一种可能的结构示意图,该通信装置300包括处理单元3001和通信单元3002。可选的,还包括存储单元3003。通信装置300可以用于示意上述实施例中的节点或实体的结构。
当图30所示的结构示意图用于示意上述实施例中所涉及的第一节点的结构时,处理单元3001用于对第一节点的动作进行控制管理,例如,处理单元3001用于执行图6中的601和602,图19中的1901-1904,和/或本申请实施例中所描述的其他过程中的第一节点执行的动作。处理单元3001可以通过通信单元3002与其他节点或实体通信,例如,与图6中的第二节点通信。存储单元3003用于存储第一节点的程序代码和数据。
当图30所示的结构示意图用于示意上述实施例中所涉及的第二节点的结构时,处理单元3001用于对第二节点的动作进行控制管理,例如,处理单元3001用于执行图6中的602,图19中的1904,和/或本申请实施例中所描述的其他过程中的第二节点执行的动作。处理单元3001可以通过通信单元3002与其他节点或实体通信,例如,与图6中的第一节点通信。存储单元3003用于存储第二节点的程序代码和数据。
当图30所示的结构示意图用于示意上述实施例中所涉及的第一实体的结构时,处理单元3001用于对第一实体的动作进行控制管理,例如,处理单元3001用于执行图20中的2001-2003,和/或本申请实施例中所描述的其他过程中的第一实体执行的动作。处理单元3001可以通过通信单元3002与其他节点或实体通信,例如,与第二实体通信。存储单元3003用于存储第一实体的程序代码和数据。
当图30所示的结构示意图用于示意上述实施例中所涉及的其他节点或实体的结构时,处理单元3001用于对该节点或实体的动作进行控制管理,该节点或实体用于执行本申请实施例中所描述的过程中该节点或实体执行的动作。
示例性的,通信装置300可以为一个设备也可以为芯片或芯片系统。
当通信装置300为一个设备时,处理单元3001可以是处理器;通信单元3002可以是通信接口、收发器,输入接口和/或输出接口。可选地,收发器可以为收发电路。可选地,输入接口可以为输入电路,输出接口可以为输出电路。
当通信装置300为芯片或芯片系统时,处理单元3001可以是处理器、处理电路或逻辑电路等。通信单元3002可以是该芯片或芯片系统上的通信接口、输入接口和/或输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。
图30中的集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。存储计算机软件产品的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random accessmemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
当处理单元3001为处理器,通信单元3002为通信接口,存储单元3003为存储器时,本申请实施例所涉及的通信装置可以为图31所示的通信装置310。
图31所示为本申请实施例提供的通信装置的硬件结构示意图,该通信装置可以为本文中的节点或实体。该通信装置310包括至少一个处理器3101,通信总线3102以及至少一个通信接口3104。可选的,还包括存储器3103。图31中以通信装置310包括一个处理器3101和一个通信接口3104为例进行绘制。
处理器3101、通信接口3104和存储器3103之间可以通过通信总线3102连接实现互相通信,传递控制和/或数据信号,该存储器3103用于存储计算机程序,该处理器3101用于从该存储器3103中调用并运行该计算机程序,以控制该通信接口3104收发信号。
在第一种可能的实现方式中,处理器3101可以是一个通用中央处理器(centralprocessing unit,CPU),微处理器,特定应用集成电路(application-specificintegrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。通信接口3104,可以为任何收发器一类的装置。
在第二种可能的实现方式中,处理器3101可以为逻辑电路,通信接口3104可以包括输入接口和/或输出接口。
通信接口3104,使用任何收发器一类的装置,用于与其他设备或通信网络通信。
存储器3103可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信总线3102与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器3103用于存储执行本申请方案的计算机执行指令,并由处理器3101来控制执行。处理器3101用于执行存储器3103中存储的计算机执行指令,从而实现本申请下述实施例提供的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
当图31所示的结构示意图用于示意上述实施例中所涉及的第一节点的结构时,处理器3101用于对第一节点的动作进行控制管理,例如,处理器3101用于执行图6中的601和602,图19中的1901-1904,和/或本申请实施例中所描述的其他过程中的第一节点执行的动作。处理器3101可以通过通信接口3104与其他节点或实体通信,例如,与图6中的第二节点通信。存储器3103用于存储第一节点的程序代码和数据。
当图31所示的结构示意图用于示意上述实施例中所涉及的第二节点的结构时,处理器3101用于对第二节点的动作进行控制管理,例如,处理器3101用于执行图6中的602,图19中的1904,和/或本申请实施例中所描述的其他过程中的第二节点执行的动作。处理器3101可以通过通信接口3104与其他节点或实体通信,例如,与图6中的第一节点通信。存储器3103用于存储第二节点的程序代码和数据。
当图31所示的结构示意图用于示意上述实施例中所涉及的第一实体的结构时,处理器3101用于对第一实体的动作进行控制管理,例如,处理器3101用于执行图20中的2001-2003,和/或本申请实施例中所描述的其他过程中的第一实体执行的动作。处理器3101可以通过通信接口3104与其他节点或实体通信,例如,与第二实体通信。存储器3103用于存储第一实体的程序代码和数据。
当图30所示的结构示意图用于示意上述实施例中所涉及的其他节点或实体的结构时,处理单元3001用于对该节点或实体的动作进行控制管理,该节点或实体用于执行本申请实施例中所描述的过程中该节点或实体执行的动作。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述任一方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一方法。
本申请实施例还提供了一种通信系统,该通信系统中包括上述实施例中的一个或多个节点,或者,该通信系统包括上述实施例中的一个或多个实体,或者,该通信系统中包括上述实施例中的一个或多个节点和一个或多个实体。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (30)
1.一种组播报文发送方法,其特征在于,包括:
第一节点获取第一组播报文,所述第一组播报文包括第二节点的组播信息,所述第二节点为组播树中所述第一节点的非叶子子节点,所述第二节点的组播信息中包括所述第二节点的组播路由信息;其中,一个节点的组播路由信息包括该节点的组播路由标识和该节点在所述组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点确定在所述组播树中的子节点;
所述第一节点向所述第二节点发送所述第一组播报文。
2.根据权利要求1所述的方法,其特征在于,一个节点的组播路由标识用于该节点在该节点对应的第一节点集合内确定该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。
3.根据权利要求1或2所述的方法,其特征在于,一个节点的组播路由标识包括N个第三字段,N为该节点对应的第一节点集合中的节点个数,一个所述第三字段用于指示所述第一节点集合中的一个节点是否为该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。
4.根据权利要求1-3任一项所述的方法,其特征在于,一个节点的组播路由信息还包括该节点的寻址字段;其中,一个节点的寻址字段用于该节点确定该节点的非叶子子节点的组播路由信息的位置。
5.根据权利要求4所述的方法,其特征在于,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的长度;或者,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的起始位置或结束位置;或者,一个节点的寻址字段包括多个定界字段,该节点的非叶子子节点的组播路由信息由所述多个定界字段分隔开。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述第一组播报文为互联网协议IP报文,所述第一组播报文中的目的地址为所述第二节点的地址,所述第一组播报文还包括数据,所述第一组播报文中的所述第二节点的组播信息位于所述第一组播报文的IP头部和所述数据之间。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述第一节点获取第一组播报文,包括:
所述第一节点接收第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;
所述第一节点确定所述第二节点为所述第一节点的非叶子子节点;
所述第一节点根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;
所述第一节点根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
8.根据权利要求7所述的方法,其特征在于,所述第一节点根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息,包括:
所述第一节点根据所述第一节点的组播路由信息中的寻址字段确定所述第二节点的组播路由信息的位置;
所述第一节点根据所述第二节点的组播路由信息的位置获取所述第二节点的组播路由信息。
9.根据权利要求1-6任一项所述的方法,其特征在于,所述第一节点为所述组播树的源节点,所述第一节点获取第一组播报文,包括:
所述第一节点生成所述第一组播报文。
10.根据权利要求1-6任一项所述的方法,其特征在于,所述第一节点为所述组播树的源节点,所述第一节点获取第一组播报文,包括:
所述第一节点生成第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;
所述第一节点确定所述第二节点为所述第一节点的非叶子子节点;
所述第一节点根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;
所述第一节点根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述第一节点包括至少一个实体,所述第二节点包括至少一个实体,所述第一组播报文为所述第一节点中的一个实体向所述第二节点中的一个实体发送的组播报文。
12.根据权利要求1-11任一项所述的方法,其特征在于,一个节点的组播路由标识具体用于该节点中的实体确定该节点在所述组播树中的子节点。
13.一种组播报文发送方法,其特征在于,应用于第一实体,所述第一实体属于第一节点,所述方法包括:
所述第一实体接收第三组播报文,所述第三组播报文包括所述第一节点的第一组播路由信息;其中,所述第一节点的第一组播路由信息包括所述第一节点的第一组播路由标识和所述第一节点的第一组播路由标识对应的非叶子子节点的组播路由信息;一个节点的组播路由信息包括该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点中的实体确定该节点在所述组播树中的子节点;所述第一节点的第一组播路由标识与所述第一节点的组播路由标识相同或通过对所述第一节点的组播路由标识进行更新得到;
所述第一实体根据所述第一节点的第一组播路由标识确定第二实体,所述第二实体为所述第一节点中的实体;
所述第一实体向所述第二实体发送第四组播报文,所述第四组播报文中包括所述第一节点的第二组播路由信息,所述第一节点的第二组播路由信息包括所述第一节点的第二组播路由标识和所述第一节点的第三组播路由标识对应的部分或全部非叶子子节点的组播路由信息;所述第一节点的第三组播路由标识与所述第一节点的第一组播路由标识相同或通过对所述第一节点的第一组播路由标识进行更新得到,所述第一节点的第二组播路由标识与所述第一节点的第三组播路由标识相同或通过对所述第一节点的第三组播路由标识进行更新得到。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述第一实体根据所述第一节点的第一组播路由标识确定第一子节点,所述第一子节点为所述第一节点在所述组播树中的子节点中所述第一实体对应的子节点;
所述第一实体向所述第一子节点发送第五组播报文,所述第五组播报文包括所述第一子节点的组播路由信息。
15.一种第一节点,其特征在于,包括:处理单元和通信单元;
所述处理单元,用于获取第一组播报文,所述第一组播报文包括第二节点的组播信息,所述第二节点为组播树中所述第一节点的非叶子子节点,所述第二节点的组播信息中包括所述第二节点的组播路由信息;其中,一个节点的组播路由信息包括该节点的组播路由标识和该节点在所述组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点确定在所述组播树中的子节点;
所述通信单元,用于向所述第二节点发送所述第一组播报文。
16.根据权利要求15所述的第一节点,其特征在于,一个节点的组播路由标识用于该节点在该节点对应的第一节点集合内确定该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。
17.根据权利要求15或16所述的第一节点,其特征在于,一个节点的组播路由标识包括N个第三字段,N为该节点对应的第一节点集合中的节点个数,一个所述第三字段用于指示所述第一节点集合中的一个节点是否为该节点在所述组播树中的子节点,一个节点对应的第一节点集合中包括该节点的部分或全部潜在子节点。
18.根据权利要求15-17任一项所述的第一节点,其特征在于,一个节点的组播路由信息还包括该节点的寻址字段;其中,一个节点的寻址字段用于该节点确定该节点的非叶子子节点的组播路由信息的位置。
19.根据权利要求18所述的第一节点,其特征在于,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的长度;或者,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的起始位置或结束位置;或者,一个节点的寻址字段包括多个定界字段,该节点的非叶子子节点的组播路由信息由所述多个定界字段分隔开。
20.根据权利要求15-19任一项所述的第一节点,其特征在于,所述第一组播报文为互联网协议IP报文,所述第一组播报文中的目的地址为所述第二节点的地址,所述第一组播报文还包括数据,所述第一组播报文中的所述第二节点的组播信息位于所述第一组播报文的IP头部和所述数据之间。
21.根据权利要求15-20任一项所述的第一节点,其特征在于,所述处理单元,具体用于:
通过所述通信单元接收第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;
确定所述第二节点为所述第一节点的非叶子子节点;
根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;
根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
22.根据权利要求21所述的第一节点,其特征在于,所述处理单元,具体用于:
根据所述第一节点的组播路由信息中的寻址字段确定所述第二节点的组播路由信息的位置;
根据所述第二节点的组播路由信息的位置获取所述第二节点的组播路由信息。
23.根据权利要求15-20任一项所述的第一节点,其特征在于,所述第一节点为所述组播树的源节点,所述处理单元,具体用于:
生成所述第一组播报文。
24.根据权利要求15-20任一项所述的第一节点,其特征在于,所述第一节点为所述组播树的源节点,所述处理单元,具体用于:
生成第二组播报文,所述第二组播报文包括所述第一节点的组播路由信息;
确定所述第二节点为所述第一节点的非叶子子节点;
根据所述第一节点的组播路由信息获取所述第二节点的组播路由信息;
根据所述第二节点的组播路由信息进行报文封装得到所述第一组播报文。
25.根据权利要求15-24任一项所述的第一节点,其特征在于,所述第一节点包括至少一个实体,所述第二节点包括至少一个实体,所述第一组播报文为所述第一节点中的一个实体向所述第二节点中的一个实体发送的组播报文。
26.根据权利要求15-25任一项所述的第一节点,其特征在于,一个节点的组播路由标识具体用于该节点中的实体确定该节点在所述组播树中的子节点。
27.一种第一实体,其特征在于,所述第一实体属于第一节点,所述第一实体包括:通信单元和处理单元;
所述通信单元,用于接收第三组播报文,所述第三组播报文包括所述第一节点的第一组播路由信息;其中,所述第一节点的第一组播路由信息包括所述第一节点的第一组播路由标识和所述第一节点的第一组播路由标识对应的非叶子子节点的组播路由信息;一个节点的组播路由信息包括该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息,一个节点的组播路由标识用于该节点中的实体确定该节点在所述组播树中的子节点;所述第一节点的第一组播路由标识与所述第一节点的组播路由标识相同或通过对所述第一节点的组播路由标识进行更新得到;
所述处理单元,用于根据所述第一节点的第一组播路由标识确定第二实体,所述第二实体为所述第一节点中的实体;
所述通信单元,还用于向所述第二实体发送第四组播报文,所述第四组播报文中包括所述第一节点的第二组播路由信息,所述第一节点的第二组播路由信息包括所述第一节点的第二组播路由标识和所述第一节点的第三组播路由标识对应的部分或全部非叶子子节点的组播路由信息;所述第一节点的第三组播路由标识与所述第一节点的第一组播路由标识相同或通过对所述第一节点的第一组播路由标识进行更新得到,所述第一节点的第二组播路由标识与所述第一节点的第三组播路由标识相同或通过对所述第一节点的第三组播路由标识进行更新得到。
28.根据权利要求27所述的第一实体,其特征在于,
所述处理单元,还用于根据所述第一节点的第一组播路由标识确定第一子节点,所述第一子节点为所述第一节点在所述组播树中的子节点中所述第一实体对应的子节点;
所述通信单元,还用于向所述第一子节点发送第五组播报文,所述第五组播报文包括所述第一子节点的组播路由信息。
29.一种通信装置,其特征在于,包括:处理器;
所述处理器与存储器连接,所述存储器用于存储计算机执行指令,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述通信装置实现如权利要求1-12任一项,或者,权利要求13或14所述的方法。
30.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-12任一项,或者,权利要求13或14所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110304363.4A CN115134289A (zh) | 2021-03-22 | 2021-03-22 | 组播报文发送方法及装置 |
EP22773956.2A EP4300913A1 (en) | 2021-03-22 | 2022-02-18 | Multicast packet sending method and device |
PCT/CN2022/076838 WO2022199294A1 (zh) | 2021-03-22 | 2022-02-18 | 组播报文发送方法及装置 |
US18/472,896 US20240064098A1 (en) | 2021-03-22 | 2023-09-22 | Multicast Packet Sending Method and Apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110304363.4A CN115134289A (zh) | 2021-03-22 | 2021-03-22 | 组播报文发送方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115134289A true CN115134289A (zh) | 2022-09-30 |
Family
ID=83374619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110304363.4A Pending CN115134289A (zh) | 2021-03-22 | 2021-03-22 | 组播报文发送方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240064098A1 (zh) |
EP (1) | EP4300913A1 (zh) |
CN (1) | CN115134289A (zh) |
WO (1) | WO2022199294A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4809855B2 (ja) * | 2008-02-25 | 2011-11-09 | 日本電信電話株式会社 | Ipマルチキャスト疎通監視方法及びシステム |
US9237025B2 (en) * | 2013-08-15 | 2016-01-12 | Verizon Patent And Licensing Inc. | Source routing in multicast transmissions |
CN110224935B (zh) * | 2018-03-02 | 2020-10-23 | 华为技术有限公司 | 一种处理组播数据报文的方法及装置 |
-
2021
- 2021-03-22 CN CN202110304363.4A patent/CN115134289A/zh active Pending
-
2022
- 2022-02-18 EP EP22773956.2A patent/EP4300913A1/en active Pending
- 2022-02-18 WO PCT/CN2022/076838 patent/WO2022199294A1/zh active Application Filing
-
2023
- 2023-09-22 US US18/472,896 patent/US20240064098A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240064098A1 (en) | 2024-02-22 |
WO2022199294A1 (zh) | 2022-09-29 |
EP4300913A1 (en) | 2024-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106059924B (zh) | 一种管理信息的方法,装置及系统 | |
CN107770073B (zh) | 一种信息同步的方法,装置及系统 | |
US9584568B2 (en) | Signal processing apparatus and signal processing method thereof for implementing a broadcast or a multicast communication | |
CN110401599B (zh) | 数据包的处理方法及装置、存储介质、电子装置 | |
CN107968750B (zh) | 报文传输方法、装置及节点 | |
US11258698B2 (en) | Multicast forwarding method and related device | |
US20120008629A1 (en) | Communication system, node, control server,communication method and program | |
CN106603413B (zh) | 通过指定路径传输流量的方法和装置 | |
CN108989209B (zh) | Bier mpls网络设备、及其报文转发方法和介质 | |
US10680950B2 (en) | Route searching method and apparatus, allocation node, searching node, and ingress node | |
US11632322B2 (en) | Preferred path route graphs in a network | |
CN112187648B (zh) | 组播报文转发方法及装置 | |
US11671517B2 (en) | Compressed data transmissions in networks implementing interior gateway protocol | |
CN111147372A (zh) | 下行报文发送、转发方法和装置 | |
WO2019169268A1 (en) | Igp topology information and use for bier-te | |
CN113630316A (zh) | 一种数据传输方法及通信装置 | |
CN117478503A (zh) | 一种组播配置方法及装置 | |
CN115134289A (zh) | 组播报文发送方法及装置 | |
CN116094987A (zh) | 转发路径的确定方法及装置 | |
WO2011012081A1 (zh) | 一种通信设备路由转发表的压缩方法和装置 | |
WO2023025171A1 (zh) | 通信方法及装置 | |
US20240163208A1 (en) | Packet processing method and apparatus, and storage medium and electronic apparatus | |
WO2024016869A1 (zh) | 一种组播配置方法及装置 | |
CN117135105A (zh) | 一种层次化bier组播报文转发的方法和装置 | |
CN117880003A (zh) | 数据转发方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |