CN115733796A - 通信方法及装置 - Google Patents

通信方法及装置 Download PDF

Info

Publication number
CN115733796A
CN115733796A CN202110977642.7A CN202110977642A CN115733796A CN 115733796 A CN115733796 A CN 115733796A CN 202110977642 A CN202110977642 A CN 202110977642A CN 115733796 A CN115733796 A CN 115733796A
Authority
CN
China
Prior art keywords
node
multicast
multicast routing
information
packet
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
Application number
CN202110977642.7A
Other languages
English (en)
Inventor
孟锐
万俊杰
王闯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110977642.7A priority Critical patent/CN115733796A/zh
Priority to EP22860517.6A priority patent/EP4380129A1/en
Priority to PCT/CN2022/114357 priority patent/WO2023025171A1/zh
Publication of CN115733796A publication Critical patent/CN115733796A/zh
Priority to US18/584,358 priority patent/US20240195729A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/34Source routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种通信方法及装置,用于提高报文的可扩展性。该方法包括:第一节点接收来自第二节点的第一报文,并解析第一报文。该第一报文包括:第二节点的组播路由信息,第一节点为组播树中第二节点的子节点。其中,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息。

Description

通信方法及装置
技术领域
本申请涉及通信领域,尤其涉及一种通信方法及装置。
背景技术
组播(multicast)是指一个发送端把携带相同数据的报文发送给多个特定的接收端。,最初的实现是发送端把一个报文中的数据按照接收端的数量拷贝成多份,分别进行封装发送给各个接收端,这种做法导致了报文在某些链路上重复传输,降低了网络资源的利用率,增加了网络拥塞的可能。
为了解决上述问题,业界提出了一系列组播技术,最典型的有稀疏模式协议无关组播(protocol independent multicast-sparse mode,PIM-SM)。其中,PIM-SM需要在网络中为每条组播流维护多播转发信息库(multicast forwarding information base,MFIB)表,有严重的可扩展性问题。
发明内容
本申请实施例提供一种通信方法及装置,用于提高报文的可扩展性。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种通信方法。该方法包括:第一节点接收来自第二节点的第一报文,并解析第一报文。该第一报文包括:第二节点的组播路由信息,第一节点为组播树中第二节点的子节点。其中,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息。
基于第一方面所述的方法可知,1)将组播路由信息嵌入到报文,比如第一报文中,报文中包括的树形递归结构的组播路由信息,可以描述某个组播树或组播树的子树的报文转发信息,可扩展性好,并且根据需要可以方便的进行转发路径的规划和指定。2)一个节点发往每个子节点的报文内的树形递归结构都相同,比如都是第二节点的组播路由信息的树形递归结构,使得该节点在对应的每个出端口可以只发送一份报文,以避免出现冗余报文,提高通信效率。3)每个非叶子子节点的组播路由信息无需上游节点,比如第二节点确定,而可以由该非叶子子节点自行确定,从而可以节约上游节点的处理资源,提高运行效率。
一种可能的设计方案中,第一节点为第二节点的非叶子子节点,第三节点为第一节点的子节点,第一节点解析第一报文,包括:第一节点根据第一报文,生成第二报文。其中,第二报文包括:第一节点的组播路由信息,或者第三节点的组播路由信息,第一节点的组播路由信息包括如下任一项:第一节点的组播路由标识和第三节点的组播路由信息、第一节点的组播路由标识、或者第一节点的组播路由标识和第三节点的组播路由标识。如此,在第一节点解析第一报文之后,第一方面所述的方法还可以包括:第一节点向第三节点发送第二报文。可以看出,第一节点可以较为灵活地处理第一报文。比如,如果第三节点支持由第三节点自行确定第三节点的组播路由信息,则第一节点可以执行与第二节点类似的操作,即向第三节点发送包含第一节点的组播路由信息的第二报文,以避免出现冗余报文,并节约第一节点的处理资源,提高运行效率。但是,如果第三节点不支持由第三节点自行确定第三节点的组播路由信息,则第一节点可以在确定第一节点的组播路由信息的基础上,进一步确定第三节点的组播路由信息,向第三节点发送只包含第三节点的组播路由信息的第二报文,保证第三节点可以正常处理第二报文,保证通信的可靠性。
可选地,第一节点根据第一报文,生成第二报文,可以包括:第一节点根据第二节点的组播路由标识,确定第一节点的组播路由信息;根据第二节点的组播路由信息进行报文封装,获得第二报文。或者,第一节点根据第一报文,生成第二报文,还可以包括:第一节点根据第二节点的组播路由标识,确定第一节点的组播路由信息;并根据第一节点的组播路由信息中第一节点的组播路由标识,确定第三节点的组播路由信息;再根据第三节点的组播路由信息进行报文封装,获得第二报文。
进一步地,第一节点根据第二节点的组播路由标识,确定第一节点的组播路由信息,可以包括:第一节点根据第二节点的组播路由标识,确定第一节点在第一节点集合内的位置,第一节点集合为第二节点对应的节点集合,第一节点集合包括第二节点的部分或全部潜在子节点;第一节点根据第一节点在第一节点集合内的位置,确定第一节点的组播路由信息。
进一步地,第二节点的组播路由标识包括:N个第一字段,N为第一节点集合中的节点个数,第一节点根据第二节点的组播路由标识,确定第一节点在第一节点集合内的位置,包括:第一节点在N个第一字段中确定第一节点对应的第一字段的位置,第一节点对应的第一字段的位置用于表示第一节点在第一节点集合内的位置。
进一步地,第二节点的组播路由信息还包括第二节点的寻址字段,第一节点根据第二节点的组播路由标识,确定第一节点的组播路由信息,可以包括:第一节点根据第二节点的组播路由标识,以及第二节点的寻址字段,确定第一节点的组播路由信息。
可以理解,如果第二节点的每个非叶子子节点的组播路由信息长度相同,则第一节点只根据第一节点在第一节点集合内的位置,也能够确定第一节点的组播路由信息。这种情况下,第二节点的组播路由信息可以不包括第二节点的寻址字段,以节约通信开销,提高通信效率。但是,如果第二节点的组播路由信息包括第二节点的寻址字段,则无论第二节点的每个非叶子子节点的组播路由信息是否长度相同,第一节点都能够确定第一节点的组播路由信息,使得每个非叶子子节点的组播路由信息的长度可以灵活设置,以适用更多场景。
进一步地,第二节点的寻址字段用于指示第二节点的子节点的组播路由信息的长度,如此可以节约寻址字段的比特(bit)开销,提高通信效率。或者,第二节点的节点的寻址字段用于指示第二节点的子节点的组播路由信息的起始位置或结束位置,以便第一节点快速确定第一节点的组播路由信息,提高组播效率。或者,第二节点的寻址字段包括:多个定界字段,第二节点的子节点的组播路由信息由多个定界字段分隔开。
可选地,第一节点和第三节点为第一网络内的节点,第二报文还包括:第一头部和第二头部,第一头部包括:第三节点的组播路由信息,或者第一节点的组播路由信息,第二头部包括:第二网络的单播/组播信息。其中,从报文转发角度而言,通过封装单播/组播信息,可以实现第二报文的跨网络转发,使得转发不再受限。从设备部署角度而言,支持组播路由信息转发的节点(以下称为新组播节点),也即第一节点和第三节点,与只支持单播/组播信息转发的节点(以下称为普通节点)可以混合部署,比如新组播节点可以插花式的小批量部署在普通节点中,从而可以降低新组播节点的部署数量,以降低部署难度和部署成本。
进一步地,第一节点有第一节点的组播路由标识,或第三节点的组播路由标识,与第二网络的单播/组播信息的对应关系。
进一步地,第一节点为第二网络内的节点,也就是说,第一节点既是支持组播路由信息转发的新组播节点,又是支持单播/组播信息转发的普通节点。因此,在部署时,可以通过在普通节点上使能新组播,使得普通节点成为支持组播路由信息转发的新组播节点,从而无需单独部署新组播节点,以进一步降低部署成本。
另一种可能的设计方案中,第一节点为第二节点的叶子子节点,第一节点解析第一报文,可以包括:第一节点根据第一报文,生成第三报文,其中,第三报文包括:第一设备的单播/组播信息。如此,在第一节点解析第一报文之后,第一方面所述的方法还可以包括:第一节点向第一设备发送第三报文。
可选地,第一报文包括第一节点的组播路由标识,第一节点的组播路由标识用于指示目的设备为第一设备,使得第一节点仅根据第一节点的组播路由标识,便可确定需要向第一设备发送第三报文,无需拆封第一报文的内层头部,从而可以提高处理效率。
一种可能的设计方案中,第一节点和第二节点为第一网络内的节点,第一报文还包括:第三头部和第四头部,第三头部包括:第二节点的组播路由信息,第四头部包括:第三网络的单播/组播信息。其中,从报文转发角度而言,通过封装单播/组播信息,可以实现第一报文的跨网络转发,使得转发不再受限。从设备部署角度而言,新组播节点,也即第一节点和第二节点,与普通节点可以混合部署,比如新组播节点可以插花式的小批量部署在普通节点中,从而可以降低新组播节点的部署数量,以降低部署难度和部署成本。
可选地,第二节点为第三网络内的节点,也就是说,第二节点既是支持组播路由信息转发的新组播节点,又是支持单播/组播信息转发的普通节点。因此,在部署时,可以通过在普通节点上使能新组播,使得普通节点成为支持组播路由信息转发的新组播节点,从而无需单独部署新组播节点,以进一步降低部署成本。
一种可能的设计方案中,单播/组播信息可以包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息,以适用更多场景。
第二方面,提供一种通信方法。该方法包括:第二节点获取第一报文,并向第一节点发送第一报文。其中,第一节点为组播树中第二节点的子节点,第一报文包括:第二节点的组播路由信息,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息。
一种可能的设计方案中,第一节点和第二节点为第一网络内的节点,第一报文还可以包括:第三头部和第四头部,第三头部包括:第二节点的组播路由信息,第四头部包括:第三网络的单播/组播信息。
可选地,第二节点为第三网络内的节点。
可选地,单播/组播信息可以包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
此外,第二方面所述的方法的技术效果可以参考第一方面所述的方法的技术效果,此处不再赘述。
第三方面,提供一种通信方法。该方法包括:第四节点获取第四报文,并根据第四报文,向第五节点发送第五报文。其中,第四节点为第四网络内的节点,第四报文包括:第五头部,第五头部包括:第五网络的位串信息;第五节点为第四网络内的节点,第五报文包括:第五头部和第六头部,第六头部包括:第五节点的位串信息。
基于第三方面所述的方法可知,由于第五报文内封装有第五节点的位串信息,使得第五报文在发往第五网络之前,可以先跨网络转发,比如跨第四网络向第五节点转发,使得转发不再受限。
一种可能的设计方案中,第四节点配置有第一表项,以及第二表项。其中,第一表项包括:第五网络的位串信息,第二表项包括:第五节点的串位信息,以便第四节点通过遍历表项,可以准确地确定第五节点的串位信息。
一种可能的设计方案中,第四节点根据第四报文,向第五节点发送第五报文,包括:第四节点在第四报文上封装第六头部,以获得第五报文,从而向第五节点发送第五报文。
第四方面,提供一种通信方法。该方法包括:第五节点接收来自第四节点的第五报文,并解析第五报文。其中,第四节点和第五节点为第四网络内的节点,第四报文包括:第五头部和第六头部,第五头部包括:第五网络的位串信息,第六头部包括:第五节点的位串信息。
一种可能的设计方案中,在第五节点解析第五报文之后,第四方面所述的方法还可以包括:第五节点剥除第五报文中的第六头部获得第四报文,向第五网络发送第四报文,以实现报文的跨网络转发,使得转发不再受限。
此外,第四方面所述的方法的技术效果可以参考第三方面所述的方法的技术效果,此处不再赘述。
第五方面,提供一种第一节点。该第一节点包括:收发模块和处理模块。其中,收发模块,用于接收来自第二节点的第一报文;处理模块,用于解析第一报文。其中,第一报文包括:第二节点的组播路由信息,第一节点为组播树中第二节点的子节点,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息。
一种可能的设计方案中,第一节点为第二节点的非叶子子节点,处理模块,还用于根据第一报文生成第二报文;收发模块,还用于向第三节点发送第二报文。其中,第二报文包括:第一节点的组播路由信息,或者第三节点的组播路由信息,第一节点的组播路由信息包括如下任一项:第一节点的组播路由标识和第三节点的组播路由信息、第一节点的组播路由标识、或者第一节点的组播路由标识和第三节点的组播路由标识。
可选地,处理模块,还用于根据第二节点的组播路由标识,确定第一节点的组播路由信息;根据第二节点的组播路由信息进行报文封装,获得第二报文。或者,处理模块,还用于第一节点根据第二节点的组播路由标识,确定第一节点的组播路由信息;根据第一节点的组播路由信息中第一节点的组播路由标识,确定第三节点的组播路由信息;根据第三节点的组播路由信息进行报文封装,获得第二报文。
进一步地,处理模块,还用于根据第二节点的组播路由标识,确定第一节点在第一节点集合内的位置,根据第一节点在第一节点集合内的位置,确定第一节点的组播路由信息。其中,第一节点集合为第二节点对应的节点集合,第一节点集合包括第二节点的部分或全部潜在子节点。
进一步地,第二节点的组播路由标识包括:N个第一字段,N为第一节点集合中的节点个数,处理模块,还用于在N个第一字段中确定第一节点对应的第一字段的位置,第一节点对应的第一字段的位置用于表示第一节点在第一节点集合内的位置。
进一步地,第二节点的组播路由信息还包括第二节点的寻址字段。处理模块,还用于根据第二节点的组播路由标识,以及第二节点的寻址字段,确定第一节点的组播路由信息。
进一步地,第二节点的寻址字段用于指示第二节点的子节点的组播路由信息的长度。或者,第二节点的节点的寻址字段用于指示第二节点的子节点的组播路由信息的起始位置或结束位置。或者,第二节点的寻址字段包括:多个定界字段,第二节点的子节点的组播路由信息由多个定界字段分隔开。
可选地,第一节点和第三节点为第一网络内的节点。第二报文还包括:第一头部和第二头部,第一头部包括:第三节点的组播路由信息,或者第一节点的组播路由信息,第二头部包括:第二网络的单播/组播信息。
进一步地,第一节点有第一节点的组播路由标识,或第三节点的组播路由标识,与第二网络的单播/组播信息的对应关系。
进一步地,第一节点为第二网络内的节点。
另一种可能的设计方案中,第一节点为第二节点的叶子子节点,处理模块,还用于根据第一报文,生成第三报文,其中,第三报文包括:第一设备的单播/组播信息;收发模块,还用于向第一设备发送第三报文。
可选地,第一报文包括第一节点的组播路由标识,第一节点的组播路由标识用于指示目的设备为第一设备。
一种可能的设计方案中,第一节点和第二节点为第一网络内的节点,第一报文还包括:第三头部和第四头部,第三头部包括:第二节点的组播路由信息,第四头部包括:第三网络的单播/组播信息。
可选地,第二节点为第三网络内的节点。
一种可能的设计方案中,单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
可选地,收发模块也可以包括发送模块和接收模块。其中,发送模块用于实现第五方面所述的节点的发送功能,接收模块用于实现第五方面所述的节点的接收功能。
可选地,第五方面所述的节点还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得上述第一方面所述的方法被该节点执行。
需要说明的是,第五方面所述的节点可以是终端或网络设备,也可以是可设置终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,第五方面所述的节点的技术效果可以参考第一方面的方法的技术效果,此处不再赘述。
第六方面,提供一种第二节点。该第二节点包括:处理模块和收发模块。其中,处理模块,用于获取第一报文;收发模块,用于向第一节点发送第一报文,第一节点为组播树中第二节点的子节点。其中,第一报文包括:第二节点的组播路由信息,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息;
一种可能的设计方案中,第一节点和第二节点为第一网络内的节点,第一报文还包括:第三头部和第四头部,第三头部包括:第二节点的组播路由信息,第四头部包括:第三网络的单播/组播信息。
可选地,第二节点为第三网络内的节点。
可选地,单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
可选地,收发模块也可以包括发送模块和接收模块。其中,发送模块用于实现第六方面所述的节点的发送功能,接收模块用于实现第六方面所述的节点的接收功能。
可选地,第六方面所述的节点还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得上述第二方面的方法被该节点执行。
需要说明的是,第六方面所述的节点可以是终端或网络设备,也可以是可设置终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,第六方面所述的节点的技术效果可以参考第二方面的方法的技术效果,此处不再赘述。
第七方面,提供一种第四节点。该第四节点包括:处理模块和收发模块。其中,收发模块,用于获取第四报文;处理模块,用于根据第四报文,控制收发模块向第五节点发送第五报文。其中,第四节点为第四网络内的节点,第四报文包括:第五头部,第五头部包括:第五网络的位串信息;第五节点为第四网络内的节点,第五报文包括:第五头部和第六头部,第六头部包括:第五节点的位串信息。
一种可能的设计方案中,第四节点配置有第一表项,以及第二表项。其中,第一表项包括:第五网络的位串信息,第二表项包括:第五节点的串位信息。
一种可能的设计方案中,处理模块,还用于在第四报文上封装第六头部,以获得第五报文,从而控制收发模块向第五节点发送第五报文。
可选地,收发模块也可以包括发送模块和接收模块。其中,发送模块用于实现第七方面所述的节点的发送功能,接收模块用于实现第七方面所述的节点的接收功能。
可选地,第七方面所述的节点还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得上述第三方面所述的方法被该节点执行。
需要说明的是,第七方面所述的节点可以是终端或网络设备,也可以是可设置终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,第七方面的所述节点的技术效果可以参考第三方面所述的方法的技术效果,此处不再赘述。
第八方面,提供一种第五节点。该第五节点包括:收发模块和处理模块。其中,收发模块,用于接收来自第四节点的第五报文;处理模块,用于解析第五报文。其中,第四节点和第五节点为第四网络内的节点,第四报文包括:第五头部和第六头部,第五头部包括:第五网络的位串信息,第六头部包括:第五节点的位串信息。
一种可能的设计方案中,处理模块,还用于在解析第五报文之后,剥除第五报文中的第六头部,以获得第四报文,从而控制收发模块向第五网络发送第四报文。
可选地,收发模块也可以包括发送模块和接收模块。其中,发送模块用于实现第八方面的节点的发送功能,接收模块用于实现第八方面的节点的接收功能。
可选地,第八方面的节点还可以包括存储模块,该存储模块存储有程序或指令。当处理模块执行该程序或指令时,使得上述第四方面的方法被该节点执行。
需要说明的是,第八方面的节点可以是终端或网络设备,也可以是可设置终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,第八方面的节点的技术效果可以参考第四方面的方法的技术效果,此处不再赘述。
第九方面,提供一种通信装置。该装置包括:处理器。其中,处理器,用于执行如第一方面至第四方面中任一方面所述的方法。
一种可能的设计方案中,第九方面所述的装置还可以包括收发器。该收发器可以为收发电路或接口电路。该收发器可以用于该装置与其他装置通信。
一种可能的设计方案中,第九方面所述的装置还可以包括存储器。该存储器可以与处理器集成在一起,也可以分开设置。该存储器可以用于存储第一方面至第四方面中任一方面所述的方法所涉及的计算机程序和/或数据。
在本申请中,第九方面所述的装置可以为终端或网络设备,或者可设置于该终端或网络设备中的芯片(系统)或其他部件或组件,或者包含该终端或网络设备的装置。
此外,第九方面所述的装置的技术效果可以参考第一方面至第四方面中任一方面所述的方法的技术效果,此处不再赘述。
第十方面,提供一种通信装置。该装置包括:处理器和存储器。其中,存储器用于存储计算机指令,当处理器执行该指令时,以使该装置执行如第一方面至第四方面中任一方面所述的方法。
一种可能的设计方案中,第十方面所述的装置还可以包括收发器。该收发器可以为收发电路或接口电路。该收发器可以用于该装置与其他装置通信。
在本申请中,第十方面所述的装置可以为终端或网络设备,或者可设置于该终端或网络设备中的芯片(系统)或其他部件或组件,或者包含该终端或网络设备的装置。
此外,第十方面所述的装置的技术效果可以参考第一方面至第四方面中任一方面所述的方法的技术效果,此处不再赘述。
第十一方面,提供一种通信装置。该装置包括:逻辑电路和输入输出接口。其中,输入输出接口,用于接收代码指令并传输至逻辑电路。逻辑电路用于运行代码指令以执行如第一方面至第四方面中任一方面所述的方法。
一种可能的设计方案中,第十一方面所述的装置还可以包括收发器。该收发器可以为收发电路。该收发器可以用于该装置与其他装置通信。
一种可能的设计方案中,第十一方面所述的装置还可以包括存储器。该存储器可以与处理器集成在一起,也可以分开设置。该存储器可以用于存储第一方面至第四方面中任一方面所述的方法所涉及的计算机程序和/或数据。
在本申请中,第十一方面所述的装置可以为终端或网络设备,或者可设置于该终端或网络设备中的芯片(系统)或其他部件或组件,或者包含该终端或网络设备的装置。
此外,第十一方面所述的装置的技术效果可以参考第一方面至第四方面中任一方面所述的方法的技术效果,此处不再赘述。
第十二方面,提供一种通信装置。该装置包括:处理器和收发器。其中,收发器用于通信装置和其他装置之间进行信息交互,处理器执行程序指令,用以执行如第一方面至第四方面中任一方面所述的方法。
一种可能的设计方案中,第十二方面所述的装置还可以包括存储器。该存储器可以与处理器集成在一起,也可以分开设置。该存储器可以用于存储第一方面至第四方面中任一方面所述的方法所涉及的计算机程序和/或数据。
在本申请中,第十二方面所述的装置可以为终端或网络设备,或者可设置于该终端或网络设备中的芯片(系统)或其他部件或组件,或者包含该终端或网络设备的装置。
此外,第十二方面所述的装置的技术效果可以参考第一方面至第四方面中任一方面所述的方法的技术效果,此处不再赘述。
第十三方面,提供一种通信系统。该通信系统包括一个或多个终端或网络设备,如第一节点、第二节点、第三节点、第四节点或第五节点等,该终端或网络设备用于执行第一方面至第四方面中任一方面所述的方法。
第十四方面,提供一种计算机可读存储介质,包括:计算机程序;当该计算机程序在计算机上运行时,使得第一方面至第四方面中任一方面所述的方法被该计算机执行。
第十五方面,提供一种计算机程序产品,包括计算机程序,当该计算机程序在计算机上运行时,使得第一方面至第四方面中任一方面所述的方法被该计算机执行。
附图说明
图1A为组播树的结构示意图一;
图1B为节点和实体的结构示意图;
图2为组播树的结构示意图二;
图3A为组播报文的转发流程示意图;
图3B为节点和子节点的结构示意图;
图4为网络的架构示意图;
图5为组播树的结构示意图三;
图6为IP组播的场景示意图;
图7为BIER组播的场景示意图;
图8为本申请实施例提供的通信方法的流程示意图一;
图9为本申请实施例提供中组播路由信息的结构示意图一;
图10为本申请实施例提供的通信方法中组播路由信息的结构示意图二;
图11为本申请实施例提供的通信方法中组播路由信息的结构示意图三;
图12为本申请实施例提供的通信方法中组播路由信息的结构示意图四;
图13为本申请实施例提供的通信方法中组播路由标识的结构示意图一;
图14为本申请实施例提供的通信方法中组播路由标识的映射关系示意图;
图15为本申请实施例提供的通信方法中组播路由标识的结构示意图二;
图16为本申请实施例提供的通信方法中组播路由信息的结构示意图五;
图17为本申请实施例提供的通信方法中组播路由信息的结构示意图六;
图18为本申请实施例提供的通信方法中组播路由信息的结构示意图七;
图19为本申请实施例提供的通信方法中报文的结构示意图一;
图20为本申请实施例提供的通信方法中组播树的架构示意图;
图21为本申请实施例提供的通信方法中报文的结构示意图二;
图22为本申请实施例提供的通信方法中报文的结构示意图三;
图23为本申请实施例提供的通信方法中报文的结构示意图四;
图24为本申请实施例提供的通信方法的流程示意图二;
图25为本申请实施例提供的通信方法中报文的结构示意图六;
图26为本申请实施例提供的通信方法的流程示意图三;
图27为本申请实施例提供的通信方法中BIER组播的场景示意图;
图28为本申请实施例提供的通信方法中报文的结构示意图七;
图29为本申请实施例提供的通信装置的结构示意图一;
图30为本申请实施例提供的通信装置的结构示意图二。
具体实施方式
下面介绍本申请实施例所涉及的技术术语。
1、组播
组播是一种点对多点的传输技术,例如图1A所示,一个发送端,如服务器,可以向多个接收端,如客户端发送携带有相同数据的报文,也称为组播报文。该组播报文由发送端发送后,可经过多个组播节点(以下简称为节点)到达多个接收端。
2、节点
节点具备转发组播报文的能力,如直接转发组播报文,或者将组播报文封装后再转发。一个节点可以包括一个实体或多个实体。一个实体可以仅属于一个节点,也可以属于多个节点。示例性地,如图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)、终端(例如,移动终端)、设备内部模块等,虚拟实体例如可以为虚拟机、容器、进程、线程等。当实体为物理实体时,节点也可以称为组播设备。为便于理解,下文以节点为例进行介绍。
3、组播树
组播树是基于特定的网络拓扑,通过路由协议,如协议无关组播(protocolindependent multicast,PIM)、内部网关协议(interior gateway protocol,IGP)等,或其他方法,如手工配置、控制器计算等,为特定的源节点和目的节点的组合,生成的从源节点到所有目的节点的路径。该路径是一个以源节点为根节点,以目的节点为叶子节点的树形结构,称为组播树。组播树也可以称为组播分发树(multicast distribution tree,MDT),并且,组播树内的所有节点都支持同一种组播。例如,图2为组播树的示意图,图2中的(a)为左侧为网络拓扑图,若源节点为节点B,目的节点为节点C、节点D和节点E,为源节点和目的节点的组合,生成的组播树的一种示例可以如图2中的(b)所示。
需要说明的是,上述发送端和/或接收端可以是组播树中的节点,也可以不是组播树中的节点。若为前者,则源节点可以为发送端,目的节点可以为接收端。若接收端不是组播树中的节点,则数据到达叶子节点之后,叶子节点继续向其连接的接收端发送该数据。为了方便描述,在没有特别说明的情况下,本申请实施例中以发送端(后文的第二节点)和接收端(后文的第一节点或第三节点)均是组播树中的节点,对本申请实施例提供的方法作示例性说明。
4、子节点
一个节点的子节点是指组播树中的该节点的报文可以通过一跳组播,如经过一次组播转发到达的节点。其中,一跳组播是指查找一次组播转发表。例如,图2中(b)的节点R为节点B的子节点,节点S为节点R的子节点,节点E为节点R的子节点。需要说明的是,若组播树中前一个支持组播的节点发送的组播报文,经过一个或多个不支持组播的其他节点(非组播树中的节点)后,到达组播树中的后一个支持组播的节点,则后一个支持组播的节点为前一个支持组播的节点的子节点,也就是说,组播报文经过了一跳组播,从前一个支持组播的节点到达后一个支持组播的节点。例如,图3A为路由器的转发流程示意图,如图3A所示,路由器A和路由器C为支持组播的路由器,且为组播树中的节点,路由器B为不支持组播的路由器。若路由器A向路由器C发送组播报文,则路由器C为路由器A的子节点,路由器B不为路由器A的子节点。
此外,当一个节点的子节点是组播树的叶子节点时,该子节点可以称为该节点的叶子子节点,当一个节点的子节点不是组播树的叶子节点时,该子节点可以称为该节点的非叶子子节点。
在本申请的描述中,若无特别说明,本申请下文中提到的一个节点的子节点均是指该节点在组播树中的子节点。子节点也可以有其他名称,例如,组播子节点等,本申请不作限制。
另外,一个设备中的除网卡之外的模块可以认为是一个节点(假设为节点a),服务器中的网卡可以认为是另一个节点(假设为节点b),则节点b可以认为是节点a的子节点。一个路由器中的除线卡之外的模块可以认为是一个节点(假设为节点c),路由器中的线卡可以认为是另一个节点(假设为节点d),则节点d可以认为是节点c的子节点。示例性地,如图3B所示,A为路由器,节点A0为路由器中的除线卡之外的模块,节点A1、节点A2和节点A3为路由器中的3个线卡。路由器可以通过3个线卡上的接口分别向节点B、节点C、节点D、节点E、节点F和节点G发送组播报文。此时,节点A1、节点A2和节点A3可以为节点A0的子节点。A也可以为服务器,此时,节点A1、节点A2和节点A3为该服务器中的3个网卡,A可以通过3个网卡上的网口分别向节点B、节点C、节点D、节点E、节点F和节点G发送组播报文。
5、潜在子节点
一个节点的潜在子节点是指该节点的报文可以通过一跳组播到达的节点。例如,图2中的节点R和节点A均为节点B的潜在子节点,节点F、节点R、节点C和节点D均为节点S的潜在子节点。可以理解的是,一个节点的潜在子节点包括该节点在组播树中的子节点。当一个节点的潜在子节点位于组播树中时,该潜在子节点也就是该节点在组播树中的子节点。潜在子节点也可以有其他名称,例如,组播对象、预备子节点等,本申请不作限制。
6、网络
网络可以分为不同的区域,即不同的网络区域(简称域),或者说不同的网络层,用以承载不同的业务。
其中,一个网络可以由一个组播树的所有节点构成,该网络也可以认为是由该所有节点构成的虚拟节点,例如,图4为组播树的结构示意图,如图4所示,组播树包括:节点1至节点9,节点1为源节点,节点6、节点7和节点9为目的节点,节点1至节点9可以构成一个网络,如网络D。一个网络可以包括多个子网络,或者说多个子网络区域,子网络可以通过路由协议,如PIM、IGP等,或其他方法,如手工配置、控制器计算等方式划分出来,每个子网络可以包括组播树中的部分节点。其中,组播树中不位于子网络边缘的节点可以称为非边缘节点,或者非边界节点,位于子网络边缘的节点可以称为边缘节点,或者边界节点。非边缘节点可以用于子网络内部的报文转发,边缘节点可以用于子网络之间的报文转发,如接收来自上一个子网络的报文,或者向下一个子网络发送报文,换言之,一个子网络的边缘节点可以作为该子网络的入口节点,或者出口节点。相邻两个子网络之间可以共享同一个边缘节点,或者也可以独享各自的边缘节点。如果是共享同一个边缘节点,则边缘节点既作为上一个子网络的出口节点,也作为下一个子网络的入口节点。如果是独享各自的边缘节点,则边缘节点要么作为所在子网络的出口节点,要么作为所在子网络的入口节点。例如,图4所示,网络A包括:子网络A1、子网络A2和子网络A3。以子网络A1为例,子网络A1包括:节点1、节点2、节点3、节点4、以及节点5。其中,节点2为非边缘节点、除此之外的节点全为边缘节点,即节点1、节点3、节点4以及节点5为边缘节点。其中,节点1为子网络A1独享的边缘节点,且为子网络A1的入口节点,节点3和节点5也为子网络A1独享的边缘节点,且为子网络A1的出口节点,节点4为子网络A1和子网络A3共享的边缘节点,即节点4既为子网络A1的出口节点,又为子网络A3的入口节点。
应理解,如果节点支持的组播方式不同,则节点构成的网络不同,或者说节点所属的网络不同。对于同一个节点而言,如果该节点同时支持多种组播方式,则该节点可以同属于多个网络。例如,图5中的(a)所示,网络拓扑结构包括:节点1至节点11,其中,节点1、节点5、节点6、节点7、节点8和节点9支持一种组播,如互联网协议(internet protocol,IP)组播;节点1、节点2、节点3、节点4、节点6、节点10以及节点11支持另一种组播,如多协议标签交换(multi-protocol label switching,MPLS)点对多点主站(point-to-multiplepoint,P2MP)隧道。此时,如图5中的(b)所示,节点1、节点5、节点6、节点7、节点8和节点9可以构成一个组播树,如组播树T1,且组播树T1属于一个网络,如网络B。如图5中的(c)所示,节点1、节点2、节点3、节点4、节点6、节点10以及节点11可以构成另一个组播树,如组播树T2,且组播树T2属于另一个网络,如网络C。其中,对于节点1和节点6,其同属于两个网络,即网络B和网络C。
7、单播报文、组播报文
单播报文和组播报文的第一种定义:
根据节点对报文的处理行为对报文进行分类,此时,一个报文是单播报文还是组播报文是相对的,具体的:
对于一个节点而言,若节点不需要根据报文中的组播路由信息进行组播转发,或者说不需要根据组播路由信息查找组播转发表转发,而只需要根据该报文的单播封装进行单播转发,或者说根据单播封装查找单播转发表转发,或者消费报文,即自己处理该报文不需要再转发,则该报文对于该节点而言为单播报文。反之,若节点需要根据报文中的组播路由信息组播转发,或者说需要根据组播路由信息查找组播转发表转发,则该报文对于该节点而言为组播报文。
例如,节点A和节点B具有拓扑连接,节点B和节点C具有拓扑连接。若节点B将来自节点A的报文组播转发给节点C,而节点C接收到该报文后消费该报文,则该报文对于B而言是单播报文,对于节点B而言是组播报文,对于节点C而言是单播报文。又例如,节点A和节点B具有拓扑连接,若节点A向节点B单播发送一个报文,则该报文对于节点B而言是单播报文。
单播报文和组播报文的第二种定义:
根据报文的结构对报文进行分类,具体地,最外层头部是单播头部的报文是单播报文,最外层头部是组播头部的报文是组播报文。其中,目的IP地址是单播地址的IP头部、或者目的介质访问控制(media access control,MAC)地址是单播地址的mac头部都是单播头部。目的IP地址是组播地址的IP头部、目的mac地址是组播地址的mac头部、或者目的地址是多协议标签交换(multi-protocol label switching,MPLS)点对多点主站(point-to-multiple point,P2MP)的隧道标签的MPLS头部都是组播头部。此外,本申请后文所指的组播路由信息也是一种组播头部,具体实现请参看后文介绍,在此不再赘述。
基于上述针对单播报文和组播报文的两种定义,为了使得本申请实施例提供的方法更加的清楚,本申请采用第二种定义对本申请实施例提供的方法进行描述。本申请中采用第一种定义对本申请实施例提供的方法进行描述。当本申请中采用第二种定义时,可以根据报文的具体结构确定报文是单播报文还是组播报文,例如,下文中第二节点向第一节点发送第一报文,若第一报文的最外层头部是单播头部,则采用第二种定义描述时,第一报文可以理解为单播报文。
此外,本申请中的报文中的单播封装可以是互联网协议IP的第四版(简称为IPv4)单播封装、IP的第六版(简称为IPv6)单播封装或其他任何可能的封装形式。本申请中,可以在含有组播路由信息的报文上进行任何可能形式的单播封装,也可以不进行单播封装,报文的单播封装使报文可以以单播的形式穿越2个节点之间的网络(或者说在2个节点之间传输)。关于单播报文和组播报文解释中所提到的组播路由信息均是指本申请下文中定义的组播路由信息。
需要说明的是,在本申请实施例中,当组播报文为IP报文,即该组播报文包括IP头部,并且该IP头部中的目的IP地址为单播IP地址时,该组播报文的IP头部即为该组播报文的单播封装。需要说明的是,若本申请中的组播报文为IP报文,则本申请的描述中,目的地址均是指目的IP地址。
在本申请下文中,若一个节点接收到一个组播报文、且该组播报文为IP报文,该节点首先判断该组播报文的IP头部中的目的地址是否为自身的地址。若是,则解析该组播报文的IP头部之后的组播信息,并根据组播信息转发组播报文。此外,对于该节点生成并向其他节点发送组播报文的过程,首先,该节点可以确定需要向其他节点发送的组播路由信息和数据,再确定下一跳的地址(即其他节点的地址)。然后,该节点可以将其他节点的地址填入IP头部中的目的地址字段,并将组播路由信息和数据封装在IP头部,以生成组播报文,从而向其他节点发送该组播报文。本申请下文中为了简洁,并未在每个步骤中展开描述这一过程,在此处统一描述,下文中不再赘述。
8、组播报文的转发
目前,组播报文的转发可以有多种实现方式,比如,可以通过PIM-SM(方案1)、显式比特索引复制(bit index explicit replication,BIER)(方案2)实现,以下分别介绍。
方案1:
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),当路由器接收到目的地址为该组地址的组播报文时,通过该端口列表中的端口发送该组播报文。
为便于理解,下面以图6所示的组播树为例,对PIM-SM的加入以及转发进行介绍。
如图6所示,如果接收端1想要加入某个组播组,则接收端1可以向DR1发送IGMP消息。其中,DR可以表示指定路由器,即向组播组中的成员发送组播报文的路由器。IGMP消息可以包括:该组播组的地址,如224.10.10.10、接收端1的源地址,如1.1.1.1、以及组播树中所有路由器对应的同一目的地址,如224.0.0.2。
DR1接收到来自接收端1的IGMP消息后,可以根据IGMP消息生成加入(join)消息,并向R1发送加入消息。其中,加入消息可以包括:DR1的上游邻居,或者说DR1的上一跳设备,如R1的地址、组播组的地址、以及接收端1的源地址。其中,DR1的上游邻居的地址可以记录在DR1预配置的MRIB表中,R可以表示普通路由器。此外,DR1还可以根据IGMP消息,查找DR1的MFIB表。若查找未命中,则DR1可以建立MFIB表,其中,DR1的MFIB表中的组地址可以为上述组播组的地址,如224.10.10.10、出端口列表包括DR1接收加入消息的入端口,如端口1。如果查找命中,则DR1可以维护MFIB表,即检查DR1的MFIB表中出端口列表是否包括上述入端口。如果不包括上述入端口,则DR1可以在端口列表中加入上述入端口。
R1接收到来自DR1的加入消息后,可以将加入消息中DR1的上游邻居的地址,如R1自身的地址,修改为R1的上游邻居的地址,如组播源的地址,从而向组播源发送加入消息。其中,R1的上游邻居的地址可以记录在R1预配置的MRIB表中。同理,R1也可以根据加入消息查找R1的MFIB表。若查找未命中,则R1可以建立MFIB表,其中,R1的MFIB表中,组地址可以为上述组播组的地址,如224.10.10.10,出端口列表包括R1接收加入消息的入端口,如端口1。如果查找命中,则R1可以维护MFIB表,即检查R1的MFIB表中出端口列表是否包括上述入端口。如果不包括上述入端口,则R1可以在端口列表中加入上述入端口。
组播源接收到来自R1的加入消息后,可以根据加入消息查找R1的MFIB表。若查找未命中,则组播源可以建立MFIB表,其中,组播源的MFIB表中,组地址可以为上述组播组的地址,如224.10.10.10,出端口列表包括组播源接收加入消息的入端口,如端口1。如果查找命中,则组播源可以维护MFIB表,即检查组播源的MFIB表中出端口列表是否包括上述入端口。如果不包括上述入端口,则组播源可以在端口列表中加入上述入端口。如此,便完成了从接收端1到组播源的组播路径建立。
应理解,对于接收端2和接收端3而言,其加入组播组的流程与接收端1类似,在此不再赘述。当接收端2和接收端3也加入组播组后,组播组中每个路由器维护的MFIB表可以如图7所示。在此基础上,如果组播源想要发送组播报文,且组播报文的目的地址为224.10.10.10,则组播源可以查找组播源的MFIB表,确定组播报文的出端口包括端口1和端口2,从而分别向这两个端口各发送一份组播报文。R1接收到来自组播源的组播报文后,可以查找R1的MFIB表,确定组播报文的出端口包括端口1,从而向端口1转发该组播报文。R2接收到来自组播源的组播报文后,可以查找R2的MFIB表,确定组播报文的出端口包括端口1和端口2。然后,R2可以复制一份组播报文,从而分别向两个端口各发送一份组播报文。如此,接收端1、接收端2和接收端3都可以接收到相同的组播报文。
综上,根据上述方案1的相关介绍可知,PIM-SM是基于构建,以及维护MFIB表实现,也就是说,PIM-SM需要为每条组播流在网络中维护MFIB表。但是,每个路由器上维护的MFIB表的表项数是有限制的,如果组播树或者说组播流太多,则路由器无法相应增加MFIB表,从而导致组播树的可扩展性很差。此外,PIM-SM的组播树是通过从接收端向组播源方向,逐跳建立MFIB表构造出的,因此,组播树是完全固定的,无法基于规划主动控制转发路径。并且,叶子节点加入或离开组播树只有其上一跳节点知道,组播源不知道,也就是说,组播源感知不到用户的存在,可管理性较差。
方案2:
BIER是一种无状态的组播路由协议。支持BIER的路由器称为BFR(Bit-forwardingrouter),支持BIER的域入口路由器称为BFIR(Bit-forwarding ingress router),支持BIER的域出口路由器称为比特转发出口路由器(bit-forwarding egress router,BFER)。BIER为每个BFER分配一个唯一标识(ID),称为BFRID,典型取值范围是1~65536。其中,图7为BIER中BFER的集合划分示意图,如图7所示,如果把所有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组播。示例性地,参见图7,set1中ID为2的BFER通过节点P(即运营商网络内部的节点)向set2中的ID为258和510的BFER发送组播报文,该组播报文中包括一个SI和一个位串,SI为2,bitstring中ID为258和510的BFER对应的bit为1,其他bit为0。另外,每个BFER中会维护位索引转发表(bit index forwarding table,BIFT),BIFT是BIER定义的组播路由表。BFER可以基于组播报文头部携带的SI和bitstring以及维护的BIFT进行组播报文转发。
综上,根据上述方案2的相关介绍可知,由于一个组播报文只能携带一个SI和一个位串,因此,只能向某一个set组播,这也就意味着,如果总共有50个set,并且需要向50个set中的BFER发送组播报文,那么需要发送50份组播报文,报文份数过多导致组播效率较差。并且,BIER中的BIFT是固定的,也就是说,每个节点有固定的下一跳,因此,仍无法规划或指定路径路由。
为了解决上述方案1和方案2中存在的问题,本申请提供了一种通信方法,适用于至少两个节点之间的通信,例如第一节点和第二节点之间的通信,参见图8,该方法包括:
S801,第二节点获取第一报文。
其中,第二节点可以为组播树中的任何一个具有子节点的节点,具体可以为组播树中的源节点,或者也可以为源节点或某个节点的非叶子子节点,对此不限定。如果第二节点是源节点,则第二节点获取第一报文可以是第二节点生成第一报文;如果第二节点是某个节点的非叶子子节点,则第二节点获取第一报文可以是接收来自该节点的第一报文。为方便理解,本申请以第二节点为源节点为例进行介绍。
第一报文是组播树对应的组播报文,即第一报文包括该组播树,或者该组播树中某个子树中的一个节点的组播路由信息。一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息。其中,组播路由标识的具体实现可以参考下述S802和S803中的相关介绍,此处不予赘述。一个节点的组播路由信息中的非叶子子节点的组播路由信息,可以是一个组播路由信息列表,该列表可以是顺序排列、链式排列或其他可能的方式排列,本申请不作限制。可以理解的是,若一个节点没有非叶子子节点,则该节点的组播路由信息中不包括非叶子子节点的组播路由信息,仅仅包括该节点的组播路由标识,或者还可以不包括该节点的组播路由标识,对此不限定。因此,对于第二节点,第一报文包括第二节点的组播路由信息,第二节点的组播路由信息包括:第二节点的组播路由标识,以及第二节点的非叶子子节点的组播路由信息,该非叶子子节点的组播路由信息包括:自身的组播路由标识,以及自身的非叶子子节点的组播路由信息,然后依次类推。可以看出,第一报文中的组播路由信息呈树形递归结构,第一报文中第二节点的一个非叶子子节点的组播路由信息,可以认为是递归结构中的一个递归单元。方便描述,本申请下文中的部分描述中,将一个节点的一个非叶子子节点的组播路由信息记为一个递归单元,假设一个节点的非叶子子节点的个数为M,该节点的第m+1个非叶子子节点的组播路由信息记为该节点的递归单元m,m为大于等于0小于M的整数。可以理解,第二节点的每个非叶子子节点的组播路由信息又包括多个递归单元(每个递归单元为该非叶子子节点的一个非叶子子节点的组播路由信息),依次类推。因此,第一报文中包括的组播路由信息可以描述某个组播树或组播树的子树的报文转发信息。
例如,如图9所示,假设第二节点的非叶子子节点有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类似。
例如,如图10所示,假设组播树如图10中的(a)所示,如图10中的(b)所示,节点D的组播路由信息可以包括节点A的组播路由信息和节点B的组播路由信息,可选地,还可以包括节点C(节点D的叶子子节点)的组播路由标识。节点A的组播路由信息可以包括节点A的组播路由标识,可选地,还可以包括节点E(节点A的叶子子节点)的组播路由标识,以及节点F(节点A的叶子子节点)的组播路由标识。节点B的组播路由信息可以包括节点B的组播路由标识,可选地,还可以包括节点H(节点B的叶子子节点)的组播路由标识。
可选地,一个节点的组播路由信息还包括该节点的寻址字段。其中,一个节点的寻址字段用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息。示例性地,如图11所示,第二节点的组播路由信息包括第二节点的寻址字段,节点20的组播路由信息包括节点20的寻址字段,其他节点类似。示例性地,如图12所示,节点D的组播路由信息包括节点D的寻址字段。可选地,如果节点A的组播路由信息包括节点E(节点A的叶子子节点)的组播路由标识,和/或,节点F(节点A的叶子子节点)的组播路由标识,则节点A的组播路由信息还可以包括节点A的寻址字段,此时,节点A的寻址字段用于节点E确定节点E的组播路由标识,和/或,用于节点F确定节点F的组播路由标识。可选地,如果节点B的组播路由信息包括节点H(节点B的叶子子节点)的组播路由标识,则节点B的组播路由信息还可以包括节点B的寻址字段,此时,节点B的寻址字段用于节点H确定节点H的组播路由标识。
需要说明的是,一个节点的非叶子子节点的组播路由信息除了通过寻址字段指示之外,还可以静态配置在节点中。例如,若一个节点的子节点个数固定,并且这些子节点的子节点都是叶子节点,那么这些子节点的组播路由信息中仅仅包括这些子节点的组播路由标识,并且组播路由标识的长度是固定的,此时,该节点中可以静态维护这些子节点的组播路由信息的长度,此时,该节点的组播路由信息中可以不包括该节点的寻址字段。此外,第二节点的寻址字段的具体实现可以参考下述S803中的相关介绍,此处不予赘述。
可选地,第一报文还包括:第二字段;第二字段用于指示第二节点的非叶子子节点的组播路由信息的总长度,可选地,还用于指示第二节点的非叶子子节点的组播路由信息的总长度,与如下一项或多项的长度之和,该如下一项或多项包括:该第二字段的长度、第二节点的寻址字段的长度、第二节点的组播路由标识的长度。换言之,第二字段用于指示第二节点的组播路由信息的长度,或者,第二节点的组播路由信息与第二字段的总长度,或者,第二节点的组播路由信息中的非叶子子节点的组播路由信息的总长度。这些长度可以通过bit、字节等表征。第二字段中还可以包括预留字段,用于后续功能扩展。第二字段可以是一个固定长度的字段,例如,1个字节(即8个bit)。示例性的,参见图11,第二节点的组播信息还包括第二字段。示例性地,参见图12,若第二节点为节点D,则节点D发往节点A、节点B以及节点C的组播报文中还包括第二字段。
可选地,第二节点的组播信息中还包括:第三字段,第三字段用于对齐第二节点的组播信息的字节。第三字段也可以称为填充(padding)字段。示例性地,参见图11,第二节点的组播信息还包括第三字段。示例性地,参见图12,若第二节点为节点D,则节点D发往节点A、节点B以及节点C的组播报文中还包括第三字段。需要说明的是,在进行字节对齐时,可能是单字节对齐,此时,第三字段的存在是为了使得整个组播信息的bit数可以整除8,也可以是4字节对齐,此时,第三字段的存在是为了使得整个组播信息的bit数可以整数32,也可以是8字节对齐,此时,第三字段的存在是为了使得整个组播信息的bit数可以整数64。第三字段的具体长度可以根据需要对齐的字节数确定。可以理解的是,若没有第三字段,第二节点的组播路由信息本身已经是字节对齐的,则不需要第三字段。为了方便描述,本申请下文中均以字节对齐为单字节对齐为例对本申请实施例提供的方法作示例性说明。
其中,第二字段和第三字段可以由第二节点添加到第一报文中。此外,为方便描述,将第二字段、第三字段以及第二节点的组播路由信息三者称为第二节点的组播信息,即第二节点的组播信息包括第二字段、第三字段以及第二节点的组播路由信息。
S802,第二节点向第一节点发送第一报文,第一节点接收来自第二节点的第一报文。
其中,第一节点可以为第二节点的非叶子子节点。对于一个节点而言,该节点的组播路由标识用于指导该节点向该节点的子节点发送组播报文,即第二节点的组播路由标识用于指导第二节点向第一节点发送第一报文。一个节点的组播路由标识可以通过以下方式11、方式12或方式13实现。
方式11:
一个节点的组播路由标识包括第四字段和X个第五字段,第四字段用于指示该节点的子节点的个数为X,一个第五字段用于指示该节点的一个子节点的标识。节点的标识(ID)例如可以为节点的索引、节点的IP地址或节点的其他标识。以节点的标识为节点的索引为例,如图13中的(a)所示,第四字段记为Cnt(即Count的缩写),表示用于指示节点个数,第五字段记为Idx(即Index的缩写),表示用于指示索引。Idxi为节点的第i个子节点的索引,Idx1至Idxx组成一个Idx序列,i为大于0小于等于X的整数。
一个节点对应的节点集合中的节点可以具有连续的编号,例如,0、1、2、…,该节点集合可以包括该节点的全部或部分潜在子节点,一个节点的索引可以是该节点的编号。一个节点可以通过接收到的组播报文中,该节点的组播路由标识中携带的节点的索引,确定需要向哪些节点发送组播报文(也就是确定哪些节点为自身的子节点)。实际实现时,一个节点对应的节点集合中的节点的编号也可以是从其他数值(例如,1)开始的连续的取值(即该节点对应的节点集合中的节点的索引为1、2、3、…),或者,也可以为离散的取值,本申请不作限制。当一个节点对应的节点集合中的节点从0开始编号时,第五字段的位宽
Figure BDA0003227959120000161
N为该节点对应的节点集合中的节点个数。第五字段的位宽也可以是固定位宽,例如,1字节。当第四字段的值为自然数时,第四字段的位宽可以为
Figure BDA0003227959120000171
当第四字段的值为N-1(即第四字段的值为0表示N为1,第四字段的值为1表示N为2,依次类推)时,第四字段的位宽可以为
Figure BDA0003227959120000172
第四字段也可以为固定位宽,例如,1字节,此时,第五字段的最大长度也就固定了。第四字段也可以称为Cnt字段或Count字段。第五字段也可以称为Idx字段或Index字段。下文中将方式11中的第四字段称为Cnt字段,第五字段称为Idx字段。
示例性地,如图10所示,假设节点D对应的节点集合包含节点A、节点B和节点C,表示节点D的潜在子节点有3个,这3个潜在子节点的编号分别是0,1,2。若Cnt字段的值为N-1,则Cnt字段和Idx字段均可以为2个bit。由于节点D有3个子节点,即节点A、节点B和节点C,则Idx字段有3个,即节点D的组播路由标识有8个bit。由于节点集合中共有3个节点(即N=3),则Cnt字段的值可以为11。在3个Idx字段中,第1个Idx字段的值为10,表示编号为0的节点(即节点A)为节点D的子节点,第2个Idx字段的值为11,表示编号为1的节点(即节点B)为节点D的子节点,第3个Idx字段的值为01,表示编号为2的节点(即节点C)为节点D的子节点,那么节点D的组播路由标识可以为11101101。
其中,每个节点上可以存储有组播转发表(也可以称为组播路由表或路由转发表或其他名称),组播转发表中包括该节点对应的节点集合中的节点索引与下一跳(nexthop)的信息(例如,去往下一跳的出接口、下一跳的地址)之间的对应关系,一个节点可以根据组播路由标识中的Idx字段确定节点索引,再查找组播转发表得到下一跳的信息,进而向该下一跳转发组播报文。对于第二节点,第二节点可以根据第二节点的组播路由标识中第一节点的Idx字段,查找第二节点的组播转发表,确定第一节点的地址,以通过第一节点的地址对应的出端口,向第一节点发送第一报文。
例如,基于图10所示的示例,节点D的组播转发表一种示例可以参见表1。
表1
节点索引 下一跳的地址
0 节点A的地址
1 节点B的地址
2 节点C的地址
方式12:
一个节点的组播路由标识包括N个第一字段,N为该节点对应的节点集合中的节点个数,一个第一字段用于指示节点集合中的一个节点是否为该节点在组播树中的子节点。以第二节点为例,第二节点的组播路由标识可以包括N个第一字段,一个第一字段用于指示第一节点集合中的一个节点是否为第二节点在组播树中的子节点。N为第一节点集合中的节点个数,该第一节点集合为第二节点对应的节点集合,第一节点集合包括第二节点的部分或全部潜在子节点。
一个第一字段可以为一个bit,也就是说,一个节点(以第二节点为例)的组播路由标识包括N个bit,如图13中(b)所示,N个bit组成一个bit序列(bit squence),N个bit与第二节点对应的第一节点集合中的节点一一对应,一个bit用于指示第一节点集合中的与该bit对应的节点是否为第二节点的子节点。具体地,一个bit的值为1(也可以为0)时,该bit用于指示该第一节点集合中的与该bit对应的节点为第二节点的子节点。为了方便描述,下文中均以一个bit的值为1时,表示该bit对应的节点为对应的子节点为例,对本申请提供的方法做示例性说明。方式12中的组播路由标识在下文中称为bit序列。
例如,基于图10所示的示例,节点D对应的节点集合包含节点A、节点B和节点C,这3个节点分别对应3个bit中的第1、2、3个bit。如果节点集合中的对应的bit的值为1的节点为节点D的子节点,则节点D的bit序列可以为111。节点A对应的节点集合包含节点D、节点E和节点F,这3个节点分别对应3个bit中的第1、2、3个bit,节点E和节点F为节点A的子节点。如果节点集合中的对应的bit的值为1的节点为节点A的子节点,则节点A的bit序列可以为011。
每个节点上可以存储有组播转发表,组播转发表中包括bit序列中的bit与下一跳的信息(例如,去往下一跳的出接口、下一跳的地址)之间的对应关系,一个节点可以根据组播转发表中的bit序列中的bit的位置确定下一跳的信息,进而向该下一跳转发报文。其中,bit序列中的bit与下一跳的信息的对应关系可以有4种情况。如图14所示,在第一种情况下,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与下一跳的地址的对应关系可参见图14。在本申请下文中的描述中,若无特别说明,均认为bit序列中最左边的bit为第1个bit,从左往右依次为第1个bit、第2个bit、第3个bit…。需要说明的是,除了上述4种情况之外,组播转发表中的表项的索引还可以为从其他数值(例如,2、3、4)开始的连续的数值或离散的数值,本申请不作限制。对于第二节点,第二节点可以根据第二节点的bit序列中,第一节点的一个bit对应的索引,查找第二节点的组播转发表,确定第一节点的地址,以通过第一节点的地址对应的出端口,向第一节点发送第一报文。
方式13:
一个节点的组播路由标识包括组标识,组标识用于指示该节点对应的节点组,一个节点对应的节点组中的节点均为该节点的子节点。以第二节点为例,第二节点的组播路由标识包括第一组标识,第一组标识用于指示第二节点对应的第一节点组,第一节点组中的节点均为第二节点的子节点。
其中,一个节点对应的节点组为该节点对应的节点集合的子集。一个节点对应的节点集合中的节点可以组成至少一个节点组,节点集合中的一个节点可以位于一个节点组,也可以位于多个节点组,哪些节点组成一个节点组可以是预先配置的,一个节点组对应一个组标识(Group ID,简称GID)。该情况下,如图13中的(c)所示,组播路由标识为GID,一个节点可以通过接收到的组播报文中,该节点的组播路由标识中的GID,确定该GID对应的节点组中的节点,并向这些节点发送组播报文。
例如,基于图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。
与方式11和方式12类似,在方式13中,每个节点上也可以存储有组播转发表,组播转发表中包括节点组的组标识与下一跳的信息(例如,去往下一跳的出接口、下一跳的地址)的对应关系。此处的下一跳即组标识对应的节点组中的节点。该情况下,一个节点可以根据组播路由标识以及组播转发表中的该对应关系确定向哪些节点转发组播报文。对于第二节点,第二节点可以根据第二节点的组播路由标识中的第一组标识,查找组播转发表,确定向第一节点组内的子节点(包括第一节点)发送第一报文。
例如,基于图2所示的示例,节点R的组播转发表的一种示例可参见表2。
表2
Figure BDA0003227959120000191
可以理解的是,上述方式11、方式12和方式13中的组播路由标识之间是可以进行相互转换的,例如,方式13中的GID可以转换为方式12中的bit序列或方式11中的组播路由标识。上述方式11、方式12和方式13中的组播路由标识分别可以称为第一类型组播路由标识、第二类型组播路由标识和第三类型组播路由标识。上述方式11、方式12和方式13中的一个节点的组播路由标识的长度可以在该节点中静态维护。生成组播树中的第一个组播报文的节点(例如,源节点)或控制器可以维护组播树中的所有节点的组播路由标识的长度。
上述方式11,在组播树中的节点极低密度的组播场景下,组播报文的封装效率最优。上述方式12,在组播树中的节点较高密度的组播场景下,封装效率最优。上述方式13,在组播树中的节点最高密度的组播场景下,封装效率最优。
可选地,一个节点的组播路由标识中还包括类型字段,类型字段用于指示该节点的组播路由标识的类型。组播路由标识的类型包括上述第一类型组播路由标识、第二类型组播路由标识和第三类型组播路由标识。该情况下,接收组播报文的节点可以根据组播路由标识的类型确定如何识别组播路由标识。示例性的,当组播路由标识还包括类型字段时,方式11、方式12和方式13中的组播路由标识可以参见图15中的(a)、图15中的(b)和图15中的(c),类型字段在图15中的(a)、图15中的(b)和图15中的(c)中记为Type。
在实际实现时,可以唯一使用一种类型的组播路由标识(此时,不需要类型字段),也可以通过类型字段指示使用哪种类型的组播路由标识。另外,需要说明的是,类型字段可以认为是组播路由标识的一部分,也可以认为是独立于组播路由标识的一个字段,本申请不作限制。在一个组播报文中,不同节点的组播路由标识的类型可以相同,也可以不同,本申请不作限制。
可选地,一个节点的组播路由标识中还包括组播路由标识长度字段和/或节点类型字段,组播路由标识长度字段用于指示组播路由标识的长度,节点类型字段用于指示节点类型,节点类型包括单实体节点和多实体节点,单实体节点是指该节点包括一个实体,多实体节点是指该节点包括多个实体。与类型字段类似的,组播路由标识长度字段和/或节点类型字段可以认为是组播路由标识的一部分,也可以认为是独立于组播路由标识的一个字段,本申请不作限制。
上述类型字段、组播路由标识长度字段和节点类型字段可以统称为描述字段或dscr字段。这些字段还可以有其他名称,本申请不作限制。
可选地,第二节点向第一节点发送第一报文,第一报文中的单播封装中的目的地址为第一节点的地址。具体地,第一报文可以为IP报文,此时,第一报文中的目的地址为第一节点的地址,第一报文还包括数据,第一报文中的第二节点的组播信息位于第一报文的IP头部和数据之间。其中,单播封装中可以包括指示字段,该指示字段用于指示组播报文中的单播封装后的信息中是否包含组播信息,节点在接收到组播报文之后,可以根据该指示字段确定组播报文中的单播封装后的信息中是否包含组播信息。若单播封装为IPv4封装,则IPv4头部中的“协议(protocol)”字段可以指示组播报文中的单播封装后的信息中是否包含组播信息,若单播封装为IPv6封装,则IPv6头部中的“下一包头(Next Header)”字段可以指示组播报文中的单播封装后的信息中是否包含组播信息。
需要说明的是,在本申请实施例中,一个节点(例如,节点a)向另一个节点(例如,节点b)发送的组播报文中的单播封装中的源地址可以为节点a的地址,也可以为组播树中的源节点的地址。例如,基于图10所示的示例,节点A向节点E发送的组播报文中的单播封装中的源地址可以为节点D的地址,也可以为节点A的地址。
需要说明的是,在本申请中的组播报文中不包括单播封装的情况下,节点可以通过组播报文中的组播路由标识确定组播报文的下一跳节点。例如,一个节点接收到组播报文,在该节点的组播路由标识为下文中的bit序列的情况下,该组播路由标识中值为1的bit对应的节点为该组播报文的下一跳节点,即该节点的子节点为该组播报文的下一跳节点。
S803,第一节点解析第一报文。
其中,第一节点解析第一报文可以是第一节点根据第一报文生成第二报文。第二报文可以包括:第一节点的组播路由信息,或者第三节点的组播路由信息。其中,第三节点为第一节点的子节点,第一节点的组播路由信息包括如下任一项:第一节点的组播路由标识和第三节点的组播路由信息、第一节点的组播路由标识、或者第一节点的组播路由标识和第三节点的组播路由标识。如果第三节点为第一节点的非叶子子节点,则第一节点的组播路由信息包括第一节点的组播路由标识和第三节点的组播路由信息。但是,如果第三节点为第一节点的叶子子节点,则第一节点的组播路由信息可以包括第三节点的组播路由标识,即包括第一节点的组播路由标识和第三节点的组播路由标识,或者也可以不包括第三节点的组播路由标识,即第一节点的组播路由信息可以只包括第一节点的组播路由标识。可以看出,第一节点可以较为灵活地处理第一报文。比如,如果第三节点支持由第三节点自行确定第三节点的组播路由信息,则第一节点可以执行与第二节点类似的操作,即向第三节点发送包含第一节点的组播路由信息的第二报文,以避免出现冗余报文,并节约第一节点的处理资源,提高运行效率。但是,如果第三节点不支持由第三节点自行确定第三节点的组播路由信息,则第一节点可以在确定第一节点的组播路由信息的基础上,进一步确定第三节点的组播路由信息,向第三节点发送只包含第三节点的组播路由信息的第二报文,保证第三节点可以正常处理第二报文,保证通信的可靠性。
其中,对于一个节点在组播树中的非叶子子节点而言,该节点的组播路由标识可以用于该非叶子子节点确定该非叶子子节点的组播路由信息。换言之,第一节点可以根据第一报文中第二节点的组播路由标识,确定第一节点的组播路由信息,从而根据第一节点的组播路由信息进行报文封装,获得第二报文。或者,第一节点确定第一节点的组播路由信息后,可以进一步确定第三节点的组播路由信息,从而根据第三节点的组播路由信息进行报文封装,获得第二报文。其中,确定组播路由信息的实现包括方式21和方式22,下面分别介绍。
方式21:
一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点在该节点对应的一个节点集合内的位置。该非叶子子节点在该节点对应的一个节点集合内的位置,用于该非叶子子节点确定该非叶子子节点的组播路由信息。以第一节点为例,第一节点可以根据第二节点的组播路由标识,确定第一节点在第一节点集合内的位置,从而根据第一节点在第一节点集合内的位置,确定第一节点的组播路由信息。下面结合上述组播路由标识以上三种实现方式分别介绍。
在上述方式11中,一个节点的组播路由标识包括Cnt字段和X个Idx字段,Cnt字段用于指示该节点的子节点的个数为X,一个Idx字段用于指示该节点的一个子节点的标识。因此,该节点在组播树中的每个非叶子子节点可以根据Cnt字段和X个Idx字段,确定该非叶子子节点对应的一个Idx字段在X个Idx字段中的位置,该位置可以表示该非叶子子节点在对应的节点集合内的位置。以第一节点为例,第一节点根据第二节点的组播路由标识中的Cnt字段和X个Idx字段,确定第一节点对应的一个Idx字段在X个Idx字段中的位置,从而根据该位置,在第二节点的组播路由信息中确定出第一节点的组播路由信息。
具体而言,一个节点在组播树中的每个非叶子子节点上存储有上述Cnt字段对应的映射关系表,该映射关系表用于指示每个非叶子子节点对应的一个Idx字段与该非叶子子节点的对应关系,每个非叶子子节点对应的一个Idx字段在该映射关系表内的位置,可以指示该非叶子子节点在对应的节点集合内的位置。以第一节点为例,第一节点的第一映射关系表用于指示每个非叶子子节点(包含第一节点)对应的一个Idx字段与该非叶子子节点的对应关系。第一节点可以根据第二节点的组播路由标识查找第一映射关系表,以确定第一节点对应的一个Idx字段在第一映射关系表中的位置,比如第一节点对应的一个Idx字段是第一映射关系中的第几个Idx字段,也即第一节点在第一节点集合中的位置,比如第一节点是第一节点集合中第几个的子节点。第一节点在第一节点集合中的位置,可以用于指示第一节点的组播路由信息在第二节点的组播路由信息中的位置,即第一节点的组播路由信息是第二节点的组播路由信息中第几个组播路由信息,或者说第一节点的递归单元是第二节点包含的所有递归单元中的第几个递归单元。在组播路由信息等长的情况下,第一节点根据第一节点的组播路由信息在第二节点的组播路由信息中的位置,便可以确定第一节点的组播路由信息。
例如,基于图10所示的示例,节点A、节点B和节点C的映射关系表的一种示例可参见表3。
表3
Idx字段 节点
10 节点A
11 节点B
01 节点C
其中,节点D的组播路由标识为11101101,在节点D的组播路由标识中,Cnt字段的值为11,第1个Idx字段的值为10,第2个Idx字段的值为11,第3个Idx字段的值为01。节点A根据该Cnt字段的值为11确定需要查找表3。节点A根据第1个Idx字段的值为10查找表3,确定该第1个Idx字段为节点A对应的一个Idx字段,以及确定该节点A是对应的节点集合(包括节点A、节点B和节点C)中的第1个节点。如果节点A、节点B和节点C的组播路由信息的长度都是8bit,则节点A可以确定节点D的组播路由信息中,第1个8bit为节点A的组播路由信息。同理,节点B根据Cnt字段的值为11,确定需要查找表3。节点B根据第1个Idx字段的值为10查找表3,确定该第1个Idx字段为节点A对应的一个Idx字段,并非节点B对应的一个Idx字段。节点B根据第2个Idx字段的值为11继续查找表3,确定该第2个Idx字段为节点B对应的一个Idx字段,以及确定该节点B是对应的节点集合中的第2个节点。这样,节点B可以确定节点D的组播路由信息中,第2个8bit为节点B的组播路由信息。同理,节点C根据Cnt字段的值为11,确定需要查找表3。节点C根据第1个Idx字段的值为10查找表3,确定该第1个Idx字段为节点A对应的一个Idx字段,并非节点C对应的一个Idx字段。节点C根据第2个Idx字段的值为11继续查找表3,确定该第2个Idx字段为节点B对应的一个Idx字段,并非节点C对应的一个Idx字段。节点C根据第3个Idx字段的值为01继续查找表3,确定该第3个Idx字段为节点C对应的一个Idx字段,以及确定该节点C是对应的节点集合中的第3个节点。这样,节点C可以确定节点D的组播路由信息中,第3个8bit为节点C的组播路由信息。
在上述方式12中,一个节点的bit序列包括N个第一字段,N为该节点对应的节点集合中的节点个数,一个第一字段用于指示节点集合中的一个节点是否为该节点在组播树中的子节点。因此,该节点在组播树中的每个非叶子子节点可以根据N个第一字段,确定该非叶子子节点对应的一个第一字段在N个第一字段中的位置,该位置可以表示该非叶子子节点在对应的节点集合内的位置。以第一节点为例,第一节点根据第二节点的bit序列中的N个第一字段,确定第一节点对应的一个第一字段在N个第一字段中的位置,从而根据该位置,在第二节点的组播路由信息中确定出第一节点的组播路由信息。
具体而言,一个节点在组播树中的每个非叶子子节点上存储有上述第一字段对应的映射关系表,该映射关系表用于指示每个非叶子子节点对应的一个第一字段与该非叶子子节点的对应关系,每个非叶子子节点对应的一个第一字段在该映射关系表内的位置,可以指示该非叶子子节点在对应的节点集合内的位置。以第一节点为例,第一节点的第一映射关系表用于指示每个非叶子子节点(包含第一节点)对应的一个第一字段的索引与该非叶子子节点的对应关系。第一节点可以查找第一映射关系表,确定第一节点对应的一个第一字段在N个第一字段中的位置,比如第一节点对应的一个第一字段是N个第一字段中的第几个第一字段,也即第一节点在第一节点集合中的位置。第一节点在第一节点集合中的位置,可以用于指示第一节点的组播路由信息在第二节点的组播路由信息中的位置。在组播路由信息等长的情况下,第一节点根据第一节点的组播路由信息在第二节点的组播路由信息中的位置,便可以确定第一节点的组播路由信息。
例如,基于图10所示的示例,节点A、节点B和节点C的映射关系表的一种示例可参见表4。
表4
索引(bit) 节点
1 节点A
2 节点B
3 节点C
其中,节点D的bit序列为111;节点A查找表4,确定节点A对应的一个第一字段是节点D的bit序列中的第1个bit,第1个bit的值为1,即节点A是节点D的子节点,节点D的组播路由信息包括节点A的组播路由信息。如果节点A、节点B和节点C的组播路由信息的长度都是8bit,则节点A可以确定节点D的组播路由信息中,第1个8bit为节点A的组播路由信息。同理,节点B查找表4,确定节点B对应的一个第一字段是bit序列中的第2个bit,第2个bit的值为1,即节点B是节点D的子节点,节点D的组播路由信息包括节点B的组播路由信息。这样,节点B可以确定节点D的组播路由信息中,第2个8bit为节点B的组播路由信息。同理,节点C查找表4,确定节点C对应的一个第一字段是bit序列中的第3个bit,第3个bit的值为1,即节点C是节点D的子节点,节点D的组播路由信息包括节点C的组播路由信息。这样,节点C可以确定节点D的组播路由信息中,第3个8bit为节点C的组播路由信息。此外,上述表4的索引也可以从0开始,即0、1、2、3等等,对此不限定。
在上述方式13中,一个节点的组播路由标识包括组标识,该组标识用于指示该节点对应的节点组,一个节点对应的节点组中的节点均为该节点的子节点。因此,该节点在组播树中的每个非叶子子节点可以根据组标识,确定该非叶子子节点是否为该节点组中的节点。如果该非叶子子节点是该节点组中的节点,则确定该非叶子子节点在该节点组中的位置。由于该节点组属于该非叶子子节点对应的节点集合,该非叶子子节点在该节点组中的位置,可认为是该非叶子子节点在对应的节点集合内的位置。以第一节点为例,第一节点根据第一组标识,确定第一节点为节点组中的节点,以及确定第一节点在该节点组中的位置,从而根据该位置,在第二节点的组播路由信息中确定出第一节点的组播路由信息。
具体而言,一个节点在组播树中的每个非叶子子节点上存储有映射关系表,该映射关系表用于指示上述组标识与该组标识指示的节点组的对应关系。以第一节点为例,第一节点的第一映射关系表用于第一组标识与第一标识指示的第一节点组的对应关系。第一节点可以根据第二节点的组播路由信息中的第一组标识,查找第一映射关系表,确定第一节点为第一节点组中的节点,并确定第一节点在第一节点组中的位置,比如第一节点是第一节点组中第几个的子节点。第一节点在第一节点组中的位置,可以用于指示第一节点的组播路由信息在第二节点的组播路由信息中的位置。在组播路由信息等长的情况下,第一节点根据第一节点的组播路由信息在第二节点的组播路由信息中的位置,便可以确定第一节点的组播路由信息。
例如,基于图10所示的示例,节点A、节点B和节点C的映射关系表的一种示例可参见表5。
表5
Figure BDA0003227959120000231
其中,节点D的组播路由标识中的组标识为标识4,该标识4指示的节点组包括节点A、节点B和节点C。节点A根据标识4查找表5,确定节点A为节点组中的节点,且为第1个节点。如果节点A、节点B和节点C的组播路由信息的长度都是8bit,则节点A可以确定节点D的组播路由信息中,第1个8bit为节点A的组播路由信息。同理,节点B查找表5,确定节点B为节点组中的节点,且为第2个节点。节点B可以确定节点D的组播路由信息中,第2个8bit为节点B的组播路由信息。同理,节点C查找表5,确定节点C为节点组中的节点,且为第3个节点。节点C可以确定节点D的组播路由信息中,第3个8bit为节点C的组播路由信息。
方式22:一个节点的组播路由信息包括该节点的寻址字段,一个节点的组播路由标识和寻址字段,用于该节点在组播树中的非叶子子节点确定该非叶子子节点的组播路由信息。以第一节点为例,第一节点可以根据第二节点的组播路由标识,以及第二节点的寻址字段,确定第一节点的组播路由信息。
其中,一个节点的寻址字段用于指示该节点的子节点的组播路由信息的长度;或者,一个节点的寻址字段用于指示该节点的子节点的组播路由信息的起始位置或结束位置;或者,一个节点的寻址字段包括:多个定界字段,该节点的子节点的组播路由信息由多个定界字段分隔开。以第二节点为例,第二节点的寻址字段用于指示第二节点的子节点的组播路由信息的长度;或者,第二节点的节点的寻址字段用于指示第二节点的子节点的组播路由信息的起始位置或结束位置;或者,第二节点的寻址字段包括多个定界字段,第二节点的子节点的组播路由信息由多个定界字段分隔开。下面分别对寻址字段的以上几种指示方式进行介绍。
第一种设计方案,一个节点的寻址字段用于指示该节点的非叶子子节点的组播路由信息的长度。
假设该节点为节点1,节点1的非叶子子节点有M个。节点1的寻址字段中可以包括M-1或M个字段(该字段记为第六字段),一个第六字段用于指示节点1的一个非叶子子节点的组播路由信息的长度(该长度记为Y),该第六字段的位宽可以为
Figure BDA0003227959120000242
(此时,该第六字段指示的长度为该第六字段的值与1之和),或,
Figure BDA0003227959120000243
(此时,该第六字段指示的长度为该第六字段的值),或,固定位宽(例如,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
假设节点1的非叶子子节点为节点2,节点2可以根据第二字段、组播路由标识和寻址字段的长度确定递归单元0的起始位置,再根据各个递归单元的长度确定每个递归单元的起始位置和/或结束位置,即确定出每个递归单元的位置。本申请提到的位置可以是相对于组播信息的起始位置的偏移,也可以是相对于组播报文中的其他某个位置的偏移。示例性地,基于图16所示的示例,以节点1的寻址字段指示节点1的M个递归单元的长度、第二字段指示总长度1、且递归单元的起始位置为相对于组播信息的起始位置的偏移为例,递归单元m的起始位置记为offsetm,各个递归单元的起始位置可如表6所示。
表6
Figure BDA0003227959120000241
Figure BDA0003227959120000251
第二种设计方案,一个节点的寻址字段用于指示该节点的子节点的组播路由信息的起始位置或结束位置。
假设该节点为节点1,节点1的非叶子子节点有M个。节点1的寻址字段中可以包括M-1或M个字段(该字段记为第六字段),一个第六字段用于指示节点1的一个非叶子子节点的组播路由信息的起始位置或结束位置。第六字段可以为固定几个bit(例如,4bit)或固定几个字节(例如,1字节)。为了方便描述,下文中以第六字段用于指示起始位置为例对第一种设计方案进行说明,第六字段用于指示结束位置的原理类似,可参考理解。节点1的组播信息可以如图17中的(a)或图17中的(b)或图17中的(c)所示。其中,递归单元m的起始位置(即节点1的第m+1个非叶子子节点的组播路由信息的起始位置)可以记为Om。在第二种设计方案中,递归单元M-1的长度可以通过第二字段指示的长度计算得到,计算的方法与第一种设计方案类似,可参考理解,不再赘述。或者,递归单元M-1的长度也可以由一个字段(记为第七字段)显示指示,此时,第二字段可以有也可以没有。若第二字段没有,则第七字段可以位于第二字段的位置,也可以位于其他位置,本申请不作限定。为了方便描述,下文中以存在第七字段时没有第二字段、且第七字段位于第二字段的位置为例进行说明。
第二种设计方案可以通过以下方式a或方式b实现。
方式a、节点1的寻址字段指示节点1的M-1个递归单元的起始位置。
其中,M-1个递归单元可以为递归单元1至递归单元M-1,即节点1的寻址字段指示O1、O2、…、OM-1。方式a的第一种可能的实现方式,参见图17中的(a),节点1的寻址字段指示O1、O2、…、OM-1。方式a的第二种可能的实现方式,参见图17中的(b),每个递归单元之前、且与该递归单元相邻的位置均有一个第六字段,该第六字段用于指示下一个递归单元的起始位置。
假设节点1的非叶子子节点为节点2,节点2可以根据第二字段(或第七字段)、组播路由标识和寻址字段的长度确定递归单元0的起始位置,根据寻址字段确定递归单元1至递归单元M-1的起始位置,以及递归单元0至递归单元M-2的长度,再根据第二字段(或第七字段)确定递归单元M-1的长度,即确定出每个递归单元的位置。本申请提到的位置与第一种设计方案类似,可参考理解,不再赘述。示例性地,基于图17中的(b)所示的示例,以递归单元M-1的长度根据第七字段确定为例,各个递归单元的起始位置以及长度可如表7所示。
表7
Figure BDA0003227959120000252
方式b、节点1的寻址字段指示节点1的M个递归单元的起始位置。
其中,节点1的寻址字段指示O0、O1、…、OM-1。该情况下,假设节点1的非叶子子节点为节点2,节点2可以根据寻址字段确定递归单元0至递归单元M-1的起始位置,以及递归单元0至递归单元M-2的长度,再根据第二字段或第七字段确定递归单元M-1的长度,即确定出每个递归单元的位置。本申请提到的位置与第一种设计方案类似,可参考理解,不再赘述。示例性地,基于图17中的(c)所示的示例,以递归单元M-1的长度根据第七字段确定为例,各个递归单元的起始位置以及长度可如表8所示。
表8
递归单元 递归单元的起始位置 递归单元的长度
递归单元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> 第七字段指示
第三种设计方案,一个节点的寻址字段包括多个定界字段,该节点的非叶子子节点的组播路由信息由多个定界字段分隔开。
其中,假设该节点为节点1,节点1的非叶子子节点有M个。节点1的寻址字段中可以包括M-1个定界字段,定界字段的长度可以为预先配置的。节点1的组播信息可参见图18。每两个递归单元之间可以存在一个定界字段。该情况下,递归单元M-1的长度可以通过第一字段指示的长度计算得到,计算的方法与第一种设计方案类似,可参考理解,不再赘述。或者,递归单元M-1的长度也可以由一个字段(记为第七字段)显示指示,此时,第二字段可以有也可以没有。若第二字段没有,第七字段可以位于第二字段的位置,也可以位于其他位置,本申请不作限定。为了方便描述,下文中以存在第七字段时没有第二字段、且第七字段位于第二字段的位置为例进行说明。
假设节点1的非叶子子节点为节点2,节点2可以根据第二字段(或第七字段)和组播路由标识的长度确定递归单元0的起始位置,根据定界字段确定递归单元1至递归单元M-1的起始位置,以及递归单元0至递归单元M-2的长度,再根据第二字段(或第七字段)确定递归单元M-1的长度,即确定出每个递归单元的位置。本申请提到的位置与第一种设计方案类似,可参考理解,不再赘述。示例性地,基于图18所示的示例,以递归单元的起始位置为相对于组播信息的起始位置的偏移、递归单元M-1的长度根据第六字段确定为例,递归单元m的起始位置记为offsetm,各个递归单元的起始位置以及长度可如表9所示。
表9
Figure BDA0003227959120000261
以第一节点为例,根据上述方式21的介绍可知,第一节点可以确定该第一节点在第一节点集合中的位置,即确定第一节点的组播路由信息是第二节点的组播路由信息中的第几个组播路由信息,或者说是第一节点的递归单元是第二节点的所有递归单元中的的第几个递归单元。并且,结合上文对寻址字段的介绍可知,第一节点可以根据第二节点的寻址字段,确定每个递归单元的位置。如此,第一节点便可以确定出第一节点的递归单元,也即第一节点的组播路由信息。
结合上述方式21和方式22的介绍可以理解,如果第二节点的每个非叶子子节点的组播路由信息长度相同,则第一节点只根据第一节点在第一节点集合内的位置,也能够确定第一节点的组播路由信息。这种情况下,第二节点的组播路由信息可以不包括第二节点的寻址字段,以节约通信开销,提高通信效率。但是,如果第二节点的组播路由信息包括第二节点的寻址字段,则无论第二节点的每个非叶子子节点的组播路由信息是否长度相同,第一节点都能够确定第一节点的组播路由信息,使得每个非叶子子节点的组播路由信息的长度可以灵活设置,以适用更多场景。
第一节点确定出第一节点的组播路由信息后,可以根据第一节点的组播路由信息,生成第二报文。或者,第一节点确定出第一节点的组播路由信息后,还可以进一步确定第三节点的组播路由信息,根据第三节点的组播路由信息,生成第二报文。如此,第一节点可以向第三节点发送第二报文。其中,确定第三节点的组播路由信息,可参考上述确定第一节点的组播路由信息的相关介绍,不再赘述。
可选地,结合上述实施例,在第一种应用场景中,如图19所示,第一节点和第二节点为第一网络内的节点。第一报文还包括:第三头部和第四头部;第三头部包括:第二节点的组播路由信息,可选地,也可以包括第二节点的组播信息;第四头部包括:第三网络的单播/组播信息。第一网络与第三网络不同,第一网络或第三网络可以是完整的网络,也可以是一个完整网络中的子网络,对此不限定。第一网络与第三网络的具体实现可以参考上述“6、网络”中的相关介绍,在此不予赘述。第三网络的单播/组播信息可以包括如下任一项:IP单播/组播信息信息、MPLS标签信息、或位串信息,对此不限定。也就是说,当第二节点向第一节点发送的第一报文不是直接发往第一节点,而需要经过普通节点转发,第二节点需要在第一报文内封装普通节点所在网络支持的单播/组播信息的头部,即包括第三网络的单播/组播信息的第四头部。第四头部可以是第一报文最外层的头部,以便普通节点识别并转发第一报文。其中,第二节点封装第三网络的单播/组播信息是在第三头部的外层,继续封装包括第三网络的单播/组播信息的第四头部,并不会剥除第三头部。第二节点能够理解或者说能够识别第三网络的单播/组播信息,或者不能够理解第三网络的单播/组播信息,对此不限定,第二节点是否能够理解第三网络的单播/组播信息,并不影响第二节点封装第三网络的单播/组播信息。
可选地,第一节点和/或第二节点也可以为第三网络内的节点,且可以是第三网络内的边缘节点,换言之,第一节点和/或第二节点既是支持组播路由信息转发的新组播节点,又是支持单播/组播信息转发的普通节点。因此,在部署时,可以通过在普通节点上使能新组播,使得普通节点成为支持组播路由信息转发的新组播节点,从而无需单独部署新组播节点,以进一步降低部署成本。
示例性地,第二节点存储有第一转发表,第一转发表中记录有第二节点的组播路由标识与第三网络的单播/组播信息的对应关系。第二节点可以根据第一转发表在第一报文中封装第四头部,下面具体介绍。
方式31,第三网络的单播/组播信息是IP单播信息,第一转发表中记录有第二节点的组播路由标识与第三网络的IP单播信息的对应关系。可以理解,第二节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在上述方式11中,一个节点的组播路由标识包括Cnt字段和X个Idx字段。以第二节点为例,第二节点的组播路由标识中的Cnt字段用于指示第二节点的子节点个数,第二节点的组播路由标识中的一个Idx字段用于指示对应的一个子节点的标识,Idx字段和X个Cnt字段用于指示第一报文需要发往这X个子节点。在此基础上,第一转发表中可以记录Cnt字段、子节点的IP单播信息、以及出端口的对应关系。第二节点可以根据第二节点的组播路由标识查找第一转发表,确定对应的X个IP单播信息和出端口。第二节点可以将报文复制X份,在每份报文中封装包括对应的一个IP单播信息的第四头部,获得X个第一报文。如此,第二节点可以通过X个第一报文各自对应的出端口,向每个子节点(包括第一节点)发送对应的一份第一报文。
例如,基于图20所示的示例,节点A-节点H(实线节点)是组播树内的节点,即是网络内1的节点,节点D与节点A-节点C之间还包括4个普通节点,即非组播树内的节点,分别是节点R1、节点R2、节点R3和节点R4(虚线节点),节点R1-节点R4是网络2内的节点。节点A-节点D中任一个节点可以是网络2内的节点,也可以不是网络2内的节点。节点D的第一转发表的一种示例可如表10所示。
表10
Idx字段 IP单播信息 端口
10 10.1.1.1 端口1
11 10.1.1.2 端口2
01 10.1.1.3 端口2
其中,节点D的组播路由标识为11101101,在节点D的组播路由标识中,Cnt字段的值为11,第1个Idx字段的值为10,第2个Idx字段的值为11,第3个Idx字段的值为01。节点D根据该Cnt字段的值为11确定需要查找表10。节点D根据第1个Idx字段的值为10查找表10,确定该第1个Idx字段对应的IP单播信息为IP单播地址10.1.1.1,以及对应的端口为端口1。节点D可以在报文中封装包括IP单播地址10.1.1.1的外层头部中(记为单播报文1),并通过端口1向节点A发送单播报文1。节点D根据第2个Idx字段的值为11查找表10,确定该第2个Idx字段对应的IP单播信息为IP单播地址10.1.1.2,以及对应的端口为端口2。节点D可以在报文中封装包括IP单播地址10.1.1.2的外层头部中(记为单播报文2),并通过端口2向节点B发送单播报文1。节点D根据第3个Idx字段的值为01查找表10,确定该第3个Idx字段对应的IP单播信息为IP单播地址10.1.1.3,以及对应的端口为端口2。节点D可以在报文中封装包括IP单播地址10.1.1.3的外层头部中(记为单播报文3),并通过端口2向节点C发送单播报文1。
在上述方式12中,一个节点的bit序列包括N个第一字段,N为该节点对应的节点集合中的节点个数,一个第一字段用于指示该节点是否需要向该第一字段对应的一个潜在子节点发送报文,比如该第一字段的值为1,用以指示该节点需要向该第一字段对应的一个潜在子节点发送报文;该第一字段的值为0,用以指示该节点不需要向该第一字段对应的一个潜在子节点发送报文。以第二节点为例,一个第一字段用于指示第二节点是否需要向该第一字段对应的一个潜在子节点发送第二报文。在此基础上,第一转发表中可以记录第一字段、潜在子节点的IP单播信息、以及出端口的对应关系。第二节点可以根据第二节点的bit序列查找第一转发表,确定对应的IP单播信息和出端口。第二节点可以按IP单播信息的数量,将报文复制对应的份数,并在每份报文中封装包括对应的一个IP单播信息的第四头部,从而获得对应份数的第三报文。如此,第二节点可以通过每份第三报文对应的一个出端口,向每个潜在子节点(包括第一节点)发送对应的一份第三报文。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表11所示。
表11
Figure BDA0003227959120000281
Figure BDA0003227959120000291
其中,节点D的bit序列为111,节点A对应的一个第一字段为bit序列111中的第1个bit,也即表11中索引为1的bit,节点B对应的一个第一字段为bit序列111中的第2个bit,也即表11中索引为2的bit,节点C对应的一个第一字段为bit序列111中的第3个bit,也即表11中索引为3的bit。对于节点D而言,由于bit序列111中的第1个bit的取值为1,节点D根据第1个bit查找表11,确定该第1个bit对应的IP单播信息为IP单播地址10.1.1.1,以及对应的端口为端口1。节点D可以在报文中封装包括IP单播地址10.1.1.1的外层头部中(记为单播报文1),并通过端口1向节点A发送单播报文1。由于bit序列111中的第2个bit的取值为1,节点D根据第2个bit查找表11,确定该第1个bit对应的IP单播信息为IP单播地址10.1.1.2,以及对应的端口为端口2。节点D可以在报文中封装包括IP单播地址10.1.1.2的外层头部中(记为单播报文2),并通过端口2向节点B发送单播报文2。由于bit序列111中的第3个bit的取值为1,节点D根据第3个bit查找表11,确定该第3个bit对应的IP单播信息为IP单播地址10.1.1.3,以及对应的端口为端口2。节点D可以在报文中封装包括IP单播地址10.1.1.3的外层头部中(记为单播报文3),并通过端口2向节点C发送单播报文3。
在上述方式13中,一个节点的组播路由标识包括组标识,该组标识用于指示该节点对应的节点组。以第二节点为例,第二节点的组播路由标识中的第一组标识用于指示第一节点组,且指示第一报文需要发往第一节点组,即需要发往第一节点组中的节点(包括第一节点)。在此基础上,第一转发表中可以记录组标识、节点组内各节点的IP单播信息、以及出端口的对应关系。第二节点可以根据第二节点的组播路由标识中的第一组标识查找第一转发表,确定对应的IP单播信息和出端口。第二节点可以按IP单播信息的数量,将报文复制对应的份数,并在每份报文中封装包括对应的一个IP单播信息的第四头部,从而获得对应份数的第一报文。如此,第二节点可以通过每份第一报文对应的一个出端口,向第一节点组内的每个节点(包括第一节点)发送对应的一份第一报文。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表12所示。
表12
Figure BDA0003227959120000292
其中,节点D的组播路由标识中的组标识为标识4。节点D根据标识4查找表12,确定标识4对应的IP单播信息包括IP单播地址10.1.1.1、IP单播地址10.1.1.2和IP单播地址10.1.1.3,以及对应的端口包括端口0和端口1。节点D可以在报文中封装包括IP单播地址10.1.1.1的外层头部中(记为单播报文1),并通过端口1向节点A发送单播报文1。节点D可以在报文中封装包括IP单播地址10.1.1.2的外层头部中(记为单播报文2),并通过端口2向节点B发送单播报文2。节点D可以在报文中封装包括IP单播地址10.1.1.3的外层头部中(记为单播报文3),并通过端口2向节点C发送单播报文3。
方式32,第三网络的单播/组播信息是IP组播信息,第一转发表中记录有第二节点的组播路由标识与第三网络的IP组播信息的对应关系。可以理解,第二节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在方式11中,第一转发表中可以记录第二节点的组播路由标识整体,即包括Cnt字段和X个Idx字段、IP组播信息、以及出端口的对应关系,以指示第一报文需要发往该IP组播信息对应的组播组(包括第一节点)。第二节点可以根据第二节点的组播路由标识查找第一转发表,确定对应的IP组播信息和出端口。第二节点可以在报文中封装包括IP组播信息的第四头部,从而获得第一报文。第二节点可以通过第一报文对应的出端口,向组播组(包括第一节点)发送第一报文。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表13所示。
表13
Idx字段+X个Idx字段 IP组播信息 端口
11101101 224.1.1.1 端口1、端口2
其中,节点D的组播路由标识为11101101。节点D根据组播路由标识11101101查找表13,确定对应的IP组播信息为IP组播地址224.1.1.1,以及对应的端口为端口1。节点D可以将IP组播地址224.1.1.1封装到报文的外层头部中(记为组播报文1),并通过端口1和端口2向组播组(包括节点A、节点B和节点C)发送组播报文1。
在方式12中,第一转发表中可以记录第二节点的bit序列、IP组播信息以及出端口的对应关系,以指示第一报文需要发往该IP组播信息对应的组播组(包括第一节点)。第二节点可以根据第二节点的bit序列查找第一转发表,确定对应的IP组播信息和出端口。第二节点可以在报文中封装包括IP组播信息的第四头部,从而获得第一报文。第二节点可以通过第一报文对应的出端口,向组播组(包括第一节点)发送第一报文。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表14所示。
表14
bit序列 IP组播信息 端口
111 224.1.1.1 端口1、端口2
其中,节点D的bit序列为111。节点D根据bit序列111查找表14,确定对应的IP组播信息为IP组播地址224.1.1.1,以及对应的端口为端口1。节点D可以将IP组播地址224.1.1.1封装到报文的外层头部中(记为组播报文1),并通过端口1和端口2向组播组(包括节点A、节点B和节点C)发送组播报文1。
在上述方式13中,第一转发表中可以记录组标识、IP组播信息、以及出端口的对应关系,以指示报文需要发往该IP组播信息对应的组播组(包括第一节点)。第二节点可以根据第二节点的组播路由标识中的第一组标识查找第一转发表,确定对应的IP组播信息和出端口。第二节点可以在报文中封装包括IP组播信息的第四头部,从而获得第一报文。第二节点可以通过第一报文对应的出端口,向组播组(包括第一节点)发送第一报文。
例如,基于图20所示的示例,节点F的第一转发表的一种示例可如表15所示。
表15
组标识 IP组播信息 端口
标识4 224.1.1.1 端口1、端口2
标识5 224.1.1.2 端口2
其中,节点D的组播路由标识中的组标识为标识4。节点D根据标识4查找表15,确定对应的IP组播信息为IP组播地址224.1.1.1,以及对应的端口为端口1。节点D可以将IP组播地址224.1.1.1封装到报文的外层头部中(记为组播报文1),并通过端口1和端口2向组播组(包括节点A、节点B和节点C)发送组播报文1。
方式33,第三网络的单播/组播信息是MPLS标签信息,第一转发表中记录有第二节点的组播路由标识与MPLS标签信息的对应关系。可以理解,第二节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在上述方式11中,第一转发表中可以记录该第二节点的组播路由标识整体,即包括Cnt字段和X个Idx字段、MPLS标签信息、以及出端口的对应关系,具体实现与上述方式32类似,可参考方式32理解,不再赘述。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表16所示。
表16
Figure BDA0003227959120000311
其中,节点D的组播路由标识为11101101。节点D根据组播路由标识11101101查找表16,确定对应的标签列表包括MPLS标签100、MPLS标签001和MPLS标签101,以及对应的端口包括端口1和端口2。节点D可以将MPLS标签100封装到报文的外层头部中(记为隧道报文1),并通过端口1向节点A发送隧道报文1。节点D可以将MPLS标签001封装到报文的外层头部中(记为隧道报文2),并通过端口2向节点B发送隧道报文2。节点D可以将MPLS标签101封装到报文的外层头部中(记为隧道报文3),并通过端口2向节点C发送隧道报文3。
在上述方式12中,第一转发表中可以记录该第二节点的bit序列、MPLS标签信息以及出端口的对应关系,具体实现与上述方式32类似,可参考方式32理解,不再赘述。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表17所示。
表17
Figure BDA0003227959120000312
其中,节点D的bit序列为111。节点D根据bit序列111查找表17,确定对应的标签列表包括MPLS标签100、MPLS标签001和MPLS标签101,以及对应的端口包括端口1和端口2。节点D可以将MPLS标签100封装到报文的外层头部中(记为隧道报文1),并通过端口1向节点A发送隧道报文1。节点D可以将MPLS标签001封装到报文的外层头部中(记为隧道报文2),并通过端口2向节点B发送隧道报文2。节点D可以将MPLS标签101封装到报文的外层头部中(记为隧道报文3),并通过端口2向节点C发送隧道报文3。
在上述方式13中,第一转发表中可以记录组标识、MPLS标签信息、以及出端口的对应关系,具体实现与上述方式32类似,可参考方式32理解,不再赘述。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表18所示。
表18
Figure BDA0003227959120000321
其中,节点D的组播路由标识中的组标识为标识4。节点D根据标识4查找表18,确定对应的标签列表包括MPLS标签100、MPLS标签001和MPLS标签101,以及对应的端口包括端口1和端口2。节点D可以将MPLS标签100封装到报文的外层头部中(记为隧道报文1),并通过端口1向节点A发送隧道报文1。节点D可以将MPLS标签001封装到报文的外层头部中(记为隧道报文2),并通过端口2向节点B发送隧道报文2。节点D可以将MPLS标签101封装到报文的外层头部中(记为隧道报文3),并通过端口2向节点C发送隧道报文3。
方式34,第三网络的单播/组播信息是位串信息,即第三网络支持BIER组播,第一转发表中记录有第二节点的组播路由标识与MPLS标签信息的对应关系。可以理解,第二节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在上述方式11中,第一转发表中可以记录该第二节点的组播路由标识整体,即包括Cnt字段和X个Idx字段、位串信息、以及邻居设备的对应关系。第二节点可以根据第二节点的组播路由标识查找第一转发表,确定对应的位串信息和邻居设备。第二节点可以在报文中封装包括位串信息的第四头部,从而获得第一报文。第二节点可以通过邻居设备对应的出端口,向第一节点发送第一报文。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表19所示。
表19
Figure BDA0003227959120000322
其中,节点D的组播路由标识为11101101。节点D根据组播路由标识11101101查找表19,确定对应的位串信息包括位串信息100和位串信息011。其中,位串信息100对应的邻居设备为节点R2,表示发往节点A的组播报文需要经过节点R2,位串信息011对应的邻居设备为节点R1,表示发往节点B和节点C的组播报文需要经过节点R1。节点D可以将位串信息100封装到报文中(记为组播报文2),并通过节点R2对应的端口发送组播报文2。节点D可以将位串信息0011分别封装到两份报文中(记为组播报文3和组播报文4),并通过节点R1对应的端口发送组播报文3和组播报文4。
在上述方式12中,第一转发表中可以记录第二节点的bit序列、位串信息、以及邻居设备的对应关系。第二节点可以根据第二节点的bit序列查找第一转发表,确定对应的位串信息和邻居设备。第二节点可以在报文中封装包括位串信息的第四头部,从而获得第一报文。第二节点可以通过邻居设备对应的出端口,向第一节点发送第一报文。
例如,基于图20所示的示例,节点D的第一转发表的一种示例可如表20所示。
表20
Figure BDA0003227959120000331
其中,节点D的bit序列0111。节点D根据bit序列111查找表20,确定对应的位串信息包括位串信息100和位串信息011。节点D可以将位串信息100封装到报文中(记为组播报文2),并通过节点R2对应的端口发送组播报文2。节点D可以将位串信息011分别封装到两份报文中(记为组播报文3和组播报文4),并通过节点R1对应的端口发送组播报文3和组播报文4。
在上述方式13中,第一转发表中可以记录组标识、位串信息、以及邻居设备的对应关系。第二节点可以根据第二节点的组播路由标识中的第一组标识查找第一转发表,确定对应的位串信息和邻居设备。第二节点可以在报文中封装包括位串信息的第四头部,从而获得第一报文。第二节点可以通过邻居设备对应的出端口,向第一节点发送第一报文。
例如,基于图20所示的示例,节点E的第一转发表的一种示例可如表21所示。
表21
Figure BDA0003227959120000332
其中,节点D的组播路由标识中的组标识为标识4。节点D根据标识4查找表21,确定对应的位串信息包括位串信息100和位串信息011。节点D可以将位串信息100封装到报文中(记为组播报文2),并通过节点R2对应的端口发送组播报文2。节点D可以将位串信息011分别封装到两份报文中(记为组播报文3和组播报文4),并通过节点R1对应的端口发送组播报文3和组播报文4。
可以理解,上述表19-表21仅为一种示例,不作为限定。比如,表19-表21中的邻居设备这一项可以配置为对应的出端口,即节点E可以不感知或者不配置普通节点的拓扑关系,直接通过出端口发送组播报文。
结合上述方式31-方式34,可以看出,从报文转发角度而言,通过封装单播/组播信息,可以实现第一报文的跨网络转发,使得转发不再受限。从设备部署角度而言,新组播节点,也即第一节点和第二节点,与普通节点可以混合部署,比如新组播节点可以插花式的小批量部署在普通节点中,从而可以降低新组播节点的部署数量,以降低部署难度和部署成本。
可选地,结合上述实施例,在第二种应用场景中,如图21所示,第一节点和第三节点为第一网络内的节点,第二报文还可以包括:第一头部和第二头部,第一头部包括:上述第三节点的组播路由信息,或者上述第一节点的组播路由信息,第二头部包括:第二网络的单播/组播信息。第二网络的单播/组播信息可以包括如下任一项:IP单播/组播信息信息、MPLS标签信息、或位串信息,对此不限定。也就是说,当第一节点向第三节点发送的第二报文不是直接发往第三节点,而需要经过普通节点转发,第一节点需要在第二报文内封装普通节点所在网络支持的单播/组播信息的头部,即包括第二网络的单播/组播信息的第二头部。第二头部可以是第二报文最外层的头部,以便普通节点识别并转发第二报文。其中,第二网络与第三网络可以相同或不同,第二网络或第三网络可以是完整的网络,也可以是一个完整网络中的子网络,对此不限定。第二网络与第三网络的具体实现可以参考上述“6、网络”中的相关介绍,在此不予赘述。第一节点封装第二网络的单播/组播信息是在第一头部的外层,继续封装包括第二网络的单播/组播信息的第二头部,并不会剥除第一头部。第一节点能够理解或者说能够识别第二网络的单播/组播信息,或者不能够理解第二网络的单播/组播信息,对此不限定,第一节点是否能够理解第二网络的单播/组播信息,并不影响第一节点封装第二网络的单播/组播信息。
可选地,第一节点和/或第三节点也可以为第二网络内的节点,且可以是第二网络内的边缘节点,换言之,第一节点和/或第三节点既是支持组播路由信息转发的新组播节点,又是支持单播/组播信息转发的普通节点。因此,在部署时,可以通过在普通节点上使能新组播,使得普通节点成为支持组播路由信息转发的新组播节点,从而无需单独部署新组播节点,以进一步降低部署成本。需要指出的是,如果第一节点既是第二网络内的节点,又是第三网络内的节点,则在第二网络与第三网络不同的情况下,第一节点便是同属多个网络的节点,从而可以被称为共享节点。如果第一节点是第二网络内或者第三网络内的节点,则对于第二网络或第三网络不同而言,第一节点便是属于单个网络的节点,从而可以被称为独享节点。
示例性地,第一节点存储有第二转发表,第二转发表中记录有第一节点的组播路由标识与第二网络的单播/组播信息的对应关系。第一节点可以根据第二转发表在第二报文中封装第二头部。其中,第一节点根据第二转发表在第二报文中封装第二头部的实现原理与上述方式31-方式34类似,可以参考方式31-方式34理解,在此不再赘述。
例如,基于图20所示的示例,节点A与节点E之间还包括1个普通节点,为节点R5,属于网络3中的节点。节点A与节点F之间还包括1个普通节点,为节点R6,属于网络4中的节点。节点B与节点H之间还包括1个普通节点,为节点R7,属于网络5中的节点。网络2、网络3、网络4和网络5可以是相同的网络,也可以是不同的网络,对此不限定。节点A和节点E可以是网络3中的节点,也可以不是网络3中的节点;节点A和节点F可以是网络4中的节点,也可以不是网络4中的节点;节点B和节点H可以是网络5中的节点,也可以不是网络5中的节点,对此不限定。该情况下,节点A向节点E和节点F转发报文,节点B向节点H的实现原理与上述节点D类似,可以参考上述方式31-方式34理解,不予赘述。
可选地,结合上述实施例,在第三种应用场景中,第一节点也可能为第二节点的叶子子节点。这种情况下,第一节点还可以根据第一报文,生成第三报文,并向第一设备发送第三报文。其中,第三报文包括:第一设备的单播/组播信息,即第三报文可以是单播报文也可以是组播报文。第一设备的单播/组播信息可以包括如下任一项:IP单播/组播信息信息、MPLS标签信息、或位串信息。也就是说,第一设备不是组播树内的节点,如果想要将报文发往第一设备,则第一节点需要在报文中封装第一设备所在网络支持的单播/组播信息,以实现跨网络转发,将报文从第一节点和第二节点所在的网络发往第一设备所在网络,并最终发往第一设备。第一节点能够理解或者说能够识别第一设备所在网络支持的单播/组播信息,或者不能够理第一设备所在网络支持的单播/组播信息,第一节点是否能够第一设备所在网络支持的单播/组播信息,并不影响第一节点封装第一设备所在网络支持的单播/组播信息。第一节点在报文中封装第一设备所在网络支持的单播/组播信息的方式有两种,分别为方式41和方式42,下面具体介绍。
方式41:
在第一报文中,第二节点的组播路由信息包括第一节点的组播路由标识。第一节点存储有第三转发表,第三转发表中记录有第一节点的组播路由标识与第一设备的单播/组播信息的对应关系,第一节点可以根据第三转发表生成第三报文。
第一种实施方式中,第一设备的单播/组播信息是IP单播信息,第三转发表中记录有第一节点的组播路由标识与IP单播信息的对应关系。可以理解,第一节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在上述方式11中,一个节点的组播路由标识包括Cnt字段和X个Idx字段。此时,对于叶子子节点而言,叶子子节点的组播路由标识中的Cnt字段可以用于指示叶子子节点下游的设备个数,叶子子节点的组播路由标识中的一个Idx字段用于指示对应的一个设备的标识,Idx字段和X个Cnt字段用于配合指示报文需要发往这X个下游设备。以第一节点为例,第一节点的组播路由标识中的Cnt字段用于指示第一设备的个数,第一节点的组播路由标识中的一个Idx字段用于指示对应的一个第一设备的标识,Idx字段和X个Cnt字段用于指示第三报文需要发往这X个第一设备。在此基础上,第三转发表中可以记录Cnt字段、第一设备的IP单播信息、以及出端口的对应关系。第一节点可以根据第一节点的组播路由标识查找第三转发表,确定对应的X个IP单播信息和出端口。如图22所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文。第一节点可以将剥除后的报文复制X份,并将每个IP单播信息封装到对应的一份报文的IP头部中,获得X个第三报文。如此,第一节点可以通过X个第三报文各自对应的出端口,向每个第一设备发送对应的一份第三报文。
例如,基于图20所示的示例,节点C的第三转发表的一种示例可如表22所示。
表22
Idx字段 IP单播信息 端口
1 10.1.1.4 端口1
0 10.1.1.5 端口2
其中,节点C的组播路由标识为110,在节点C的组播路由标识中,Cnt字段的值为1,第1个Idx字段的值为1,第2个Idx字段的值为0。节点C根据该Cnt字段的值为1确定需要查找表10。节点C根据第1个Idx字段的值为1查找表22,确定该第1个Idx字段对应的IP单播信息为IP单播地址10.1.1.4,以及对应的端口为端口1。节点C可以剥除报文中节点D的组播信息,将IP单播地址10.1.1.4封装到报文的IP头部中(记为单播报文4),并通过端口1向设备1发送单播报文4。节点C根据第2个Idx字段的值为0查找表22,确定该第2个Idx字段对应的IP单播信息为IP单播地址10.1.1.5,以及对应的端口为端口2。节点C可以剥除报文中节点D的组播信息,将IP单播地址10.1.1.5封装到报文的IP头部中(记为单播报文5),并通过端口2向设备2发送单播报文5。此外,设备1和设备2是网络9中的设备,节点C可以是网络9中的节点,也可以不是网络9中的节点。
在上述方式12中,一个节点的bit序列包括N个第一字段,N为该节点对应的节点集合中的节点个数。此时,对于叶子子节点而言,叶子子节点对应的节点集合可以包括叶子子节点的部分或全部潜在子节点,即可以包括叶子子节点的上游节点,以及叶子子节点的所有下游设备,一个第一字段用于指示叶子子节点是否需要向该第一字段对应的一个潜在子节点发送报文,比如该第一字段的值为1,用以指示该叶子子节点需要向该第一字段对应的一个潜在子节点发送报文;该第一字段的值为0,用以指示叶子子节点不需要向该第一字段对应的一个潜在子节点发送报文。以第一节点为例,一个第一字段用于指示第一节点是否需要向该第一字段对应的一个第一设备发送第三报文。在此基础上,第三转发表中可以记录第一字段、第一设备的IP单播信息、以及出端口的对应关系。第一节点可以根据第一节点的bit序列查找第三转发表,确定对应的IP单播信息和出端口。如图22所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文。第一节点按IP单播信息的数量,将剥除后的报文复制对应的份数,并将每个IP单播信息封装到对应的一份报文封装的IP头部中,获得第三报文。如此,第一节点可以通过第三报文对应的出端口,向第一设备发送对应的第三报文。
例如,基于图20所示的示例,节点E的第三转发表的一种示例可如表23所示。
表23
索引(bit) IP单播信息 端口
1 10.1.1.1 端口0
2 10.1.1.6 端口1
3 10.1.1.7 端口1
4 10.1.1.8 端口2
其中,节点E的bit序列为0111,节点A对应的一个第一字段为bit序列0111中的第1个bit,也即表11中索引为1的bit,设备3对应的一个第一字段为bit序列0111中的第2个bit,也即表11中索引为2的bit,设备4对应的一个第一字段为bit序列0111中的第3个bit,也即表11中索引为3的bit,设备5对应的一个第一字段为bit序列0111中的第4个bit,也即表11中索引为4的bit。对于节点E而言,由于bit序列0111中的第1个bit的取值为0,节点E跳过该bit,查找bit序列0111中的第2个bit。由于bit序列0111中的第2个bit的取值为1,节点E根据第2个bit查找表23,确定该第2个bit对应的IP单播信息为IP单播地址10.1.1.6,以及对应的端口为端口1。节点E可以剥除报文中节点A的组播信息,将IP单播地址10.1.1.6封装到报文的IP头部中(记为单播报文6),并通过端口1向设备3发送单播报文6。由于bit序列0111中的第3个bit的取值为1,节点E根据第3个bit查找表23,确定该第3个bit对应的IP单播信息为IP单播地址10.1.1.7,以及对应的端口为端口1。节点E可以剥除报文中节点A的组播信息,将IP单播地址10.1.1.7封装到报文的IP头部中(记为单播报文7),并通过端口1向设备4发送单播报文7。由于组播路由标识0111中的第4个bit的取值为1,节点E根据第4个bit查找表23,确定该第4个bit对应的IP单播信息为IP单播地址10.1.1.8,以及对应的端口为端口2。节点E可以剥除报文中节点A的组播信息,将IP单播地址10.1.1.8封装到报文的IP头部中(记为单播报文8),并通过端口2向设备5发送单播报文8。此外,设备3、设备4和设备5是网络6中的设备,节点E可以是网络6中的节点,也可以不是网络6中的节点。
在上述方式13中,一个节点的组播路由标识包括组标识,该组标识用于指示该节点对应的节点组。此时,对于叶子子节点而言,叶子子节点对应的节点组中的节点均为该叶子子节点的下游设备,且报文需要发往这些下游设备。以第一节点为例,第一节点的组播路由标识中的第二组标识用于指示第二节点组,即指示第三报文需要发往第二节点组。在此基础上,第三转发表中可以记录组标识、节点组中各设备的IP单播信息、以及出端口的对应关系。第一节点可以根据第一节点的组播路由标识中的第二组标识查找第三转发表,确定对应的IP单播信息和出端口。如图22所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文。第一节点按IP单播信息的数量,将剥除后的报文复制对应的份数,并将每个IP单播信息封装到对应的一份报文封装的IP头部中,获得第三报文。如此,第一节点可以通过第三报文对应的出端口,向第一设备发送对应的第三报文。
例如,基于图20所示的示例,节点E的第三转发表的一种示例可如表24所示。
表24
Figure BDA0003227959120000371
其中,节点E的组播路由标识中的组标识为标识6。节点E根据标识6查找表24,确定标识6对应的IP单播信息包括IP单播地址10.1.1.6、IP单播地址10.1.1.7和IP单播地址10.1.1.8,以及对应的端口包括端口1和端口2。节点E可以剥除报文中节点A的组播信息,将IP单播地址10.1.1.6封装到报文的IP头部中(记为单播报文6),并通过端口1向设备3发送单播报文6。节点E可以剥除报文中节点A的组播信息,将IP单播地址10.1.1.7封装到报文的IP头部中(记为单播报文7),并通过端口1向设备4发送单播报文7。节点E可以剥除报文中节点A的组播信息,将IP单播地址10.1.1.8封装到报文的IP头部中(记为单播报文8),并通过端口2向设备5发送单播报文8。
第二种实施方式中,第一设备的单播/组播信息是IP组播信息,即第一设备是组播组内的设备,第三转发表中记录有第一节点的组播路由标识与IP组播信息的对应关系。可以理解,第一节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在上述方式11中,一个节点的组播路由标识包括Cnt字段和X个Idx字段。以第一节点为例,第一节点的组播路由标识也包括Cnt字段和X个Idx字段。在此基础上,第三转发表中可以记录组播路由标识整体,即包括Cnt字段和X个Idx字段、IP组播信息、以及出端口的对应关系,以指示报文需要发往该IP组播信息对应的组播组。第一节点可以根据第一节点的组播路由标识查找第三转发表,确定对应的IP组播信息和出端口。如图22所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文,并将IP组播信息封装到剥除后的报文的IP头部中,获得第三报文。如此,第一节点可以通过第三报文对应的出端口,向对应的组播组(包括第一设备)发送第三报文。
例如,基于图20所示的示例,节点F的第三转发表的一种示例可如表25所示。
表25
Idx字段+X个Idx字段 IP组播信息 端口
11 224.1.1.3 端口1
其中,节点F的组播路由标识为11,在节点F的组播路由标识中,Cnt字段的值为1,Idx字段的值为1。节点F根据组播路由标识11查找表25,确定对应的IP组播信息为IP组播地址224.1.1.3,以及对应的端口为端口1。节点F可以剥除报文中节点A的组播信息,将IP组播地址224.1.1.3封装到报文的IP头部中(记为组播报文5),并通过端口1向组播组内的设备6发送组播报文5。此外,设备6是网络7中的设备,节点F可以是网络7中的节点也可以不是网络7中的节点。
在上述方式12中,一个节点的bit序列包括N个第一字段。以第一节点为例,第一节点的bit序列也包括N个第一字段。在此基础上,第三转发表中可以记录该bit序列与IP组播信息以及出端口的对应关系,以指示第三报文需要发往该IP组播信息对应的组播组。第一节点可以根据第一节点的bit序列查找第三转发表,确定对应的IP组播信息和出端口。第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文,并将IP组播信息封装到剥除后的报文的IP头部中,获得第三报文。如此,第一节点可以通过第三报文对应的出端口,向对应的组播组(包括第一设备)发送第三报文。
例如,基于图20所示的示例,节点F的第三转发表的一种示例可如表26所示。
表26
bit序列 IP组播信息 端口
01 224.1.1.3 端口1
其中,节点F的bit序列为01。节点F根据bit序列01查找表26,确定对应的IP组播信息为IP组播地址224.1.1.3,以及对应的端口为端口1。节点F可以剥除报文中节点A的组播信息,将IP组播地址224.1.1.3封装到报文的IP头部中(记为组播报文5),并通过端口1向组播组内的设备6发送组播报文5。
在上述方式13中,一个节点的组播路由标识包括组标识。以第一节点为例,第一节点的组播路由标识包括第二组标识。在此基础上,第三转发表中可以记录组播路由标识中的组标识、IP组播信息、以及出端口的对应关系,以指示报文需要发往该IP组播信息对应的组播组。第一节点可以根据第一节点的组播路由标识中的第二组标识查找第三转发表,确定对应的IP组播信息和出端口。如图19所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文,并将IP组播信息封装到剥除后的报文的IP头部中,获得第三报文。如此,第一节点可以通过第三报文对应的出端口,向对应的组播组(包括第一设备)发送第三报文。
例如,基于图20所示的示例,节点F的第三转发表的一种示例可如表27所示。
表27
组标识 IP组播信息 端口
标识8 224.1.1.3 端口1
其中,节点F的组播路由标识中的组标识为标识8。节点F根据标识8查找表27,确定对应的IP组播信息为IP组播地址224.1.1.3,以及对应的端口为端口1。节点F可以剥除报文中节点A的组播信息,将IP组播地址224.1.1.3封装到报文的IP头部中(记为组播报文5),并通过端口1向组播组内的设备6发送组播报文5。
第三种实施方式中,第一设备的单播/组播信息是MPLS标签信息,第三转发表中记录有第一节点的组播路由标识与MPLS标签信息的对应关系。可以理解,第一节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在上述方式11中,第三转发表中可以记录该第一节点的组播路由标识整体,即包括Cnt字段和X个Idx字段、MPLS标签信息、以及出端口的对应关系,具体实现与上述第二种实施方式类似,可参考第二种实施方式理解,不再赘述。
例如,基于图20所示的示例,节点H的第三转发表的一种示例可如表28所示。
表28
Figure BDA0003227959120000381
Figure BDA0003227959120000391
其中,节点H的组播路由标识为110。节点H根据组播路由标识110查找表28,确定对应的MPLS标签信息包括MPLS标签100和MPLS标签101,以及对应的端口为端口1。节点H可以剥除报文中节点B的组播信息,将MPLS标签100封装到报文的IP头部中(记为隧道报文4),并通过端口1向设备7发送隧道报文4。节点H可以剥除报文中节点B的组播信息,将MPLS标签101封装到报文的IP头部中(记为隧道报文5),并通过端口1向设备8发送隧道报文5。此外,设备7和设备8是网络8中的设备,节点H可以是网络8中的节点,也可以不是网络8中的节点。
在上述方式12中,第三转发表中可以记录该第一节点的bit序列与MPLS标签信息以及出端口的对应关系,具体实现与上述第二种实施方式类似,可参考第二种实施方式理解,不再赘述。
例如,基于图20所示的示例,节点H的第三转发表的一种示例可如表29所示。
表29
Figure BDA0003227959120000392
其中,节点H的bit序列为011。节点H根据bit序列011查找表29,确定对应的MPLS标签信息包括MPLS标签100和MPLS标签101,以及对应的端口为端口1。节点H可以剥除报文中节点B的组播信息,将MPLS标签100封装到报文的IP头部中(记为隧道报文4),并通过端口1向设备7发送隧道报文4。节点H可以剥除报文中节点B的组播信息,将MPLS标签101封装到报文的IP头部中(记为隧道报文5),并通过端口1向设备8发送隧道报文5。
在上述方式13中,第三转发表中可以记录组播路由标识中的组标识、MPLS标签信息、以及出端口的对应关系,具体实现与上述第二种实施方式类似,可参考第二种实施方式理解,不再赘述。
例如,基于图20所示的示例,节点H的第三转发表的一种示例可如表30所示。
表30
Figure BDA0003227959120000393
其中,节点H的组播路由标识中的组标识为标识9。节点H根据标识9查找表30,确定对应的MPLS标签信息包括MPLS标签100和MPLS标签101,以及对应的端口为端口1。节点H可以剥除报文中节点B的组播信息,将MPLS标签100封装到报文的IP头部中(记为隧道报文4),并通过端口1向设备7发送隧道报文4。节点H可以剥除报文中节点B的组播信息,将MPLS标签101封装到报文的IP头部中(记为隧道报文5),并通过端口1向设备8发送隧道报文5。
第四种实施方式中,第一设备的单播/组播信息是位串信息,即第一设备是BIER组播组内的设备,第三转发表中记录有第一节点的组播路由标识与位串信息的对应关系。可以理解,第一节点的组播路由标识的实现方式有三种,即上述方式11、方式12和方式13,下面结合这三种方式进行介绍。
在上述方式11中,第三转发表中可以记录组播路由标识整体,即包括Cnt字段和X个Idx字段、位串信息、以及邻居设备的对应关系。第一节点可以根据第一节点的组播路由标识查找第三转发表,确定对应的位串信息和邻居设备。如图23所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文,在剥除后的报文中封装包括位串信息的外层头部,从而获得第三报文。如此,第一节点可以通过邻居设备对应的出端口,向BIER组播组(包括第一设备)发送第三报文。
例如,基于图20所示的示例,节点E和设备3-设备5之间还包括4个普通节点,即非组播树内的节点,分别是节点R8、节点R9、节点R10和节点R11,节点R8、节点R9、节点R10和节点R11是网络6中节点,节点E的第三转发表的一种示例可如表31所示。
表31
Figure BDA0003227959120000401
其中,节点E的组播路由标识为11101101,在节点E的组播路由标识中,Cnt字段的值为11,用以表示节点E的下游设备有3个;第1个Idx字段的值为10,用以指示设备3;第2个Idx字段的值为11,用以指示设备4;第3个Idx字段的值为01,用以指示设备5。节点E根据组播路由标识11101101查找表31,确定对应的位串信息包括位串信息0100和位串信息0011。其中,位串信息0100对应的邻居设备为节点R9,表示发往设备3的组播报文需要经过节点R9,位串信息0011对应的邻居设备为节点R8,表示发往设备4和设备5的组播报文需要经过节点R8。节点E可以剥除报文中节点A的组播信息,在报文中封装包括位串信息0100的外层头部(记为组播报文6),并通过节点R9对应的端口发送组播报文6。节点E可以剥除报文中节点A的组播信息,然后复制两份,并在两份报文中封装包括位串信息0011的外层头部(记为组播报文7和组播报文8),通过节点R8对应的端口发送组播报文7和组播报文8。
在上述方式12中,第三转发表中可以记录该第一节点的bit序列、位串信息、以及邻居设备的对应关系。第一节点可以根据第一节点的bit序列查找第三转发表,确定对应的位串信息和邻居设备。如图23所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文,在剥除后的报文中封装包括位串信息的外层头部,从而获得第三报文。如此,第一节点可以通过邻居设备对应的出端口,向BIER组播组(包括第一设备)发送第三报文。
例如,基于图20所示的示例,节点E的第三转发表的一种示例可如表32所示。
表32
Figure BDA0003227959120000402
其中,节点E的bit序列0111,第1个bit的值为0,用以指示节点A不是节点E的潜在子节点,第2个-第4个bit的值为1,用以分别指示设备3-设备5均是节点E的潜在子节点。节点E根据bit序列0111查找表32,确定对应的位串信息包括位串信息0100和位串信息0011。节点E可以剥除报文中节点A的组播信息,在报文中封装包括位串信息0100的外层头部(记为组播报文6),并通过节点R9对应的端口发送组播报文6。节点E可以剥除报文中节点A的组播信息,然后复制两份,并在两份报文中封装包括位串信息0011的外层头部(记为组播报文7和组播报文8),通过节点R8对应的端口发送组播报文7和组播报文8。
在上述方式13中,第三转发表中可以记录组播路由标识中的组标识、位串信息、以及邻居设备的对应关系。第一节点可以根据第一节点的组播路由标识中的组标识查找第三转发表,确定对应的位串信息和邻居设备。如图23所示,第一节点可以剥除第二报文中第二节点的组播信息,获得剥除后的报文,在剥除后的报文中封装包括位串信息的外层头部,从而获得第三报文。如此,第一节点可以通过邻居设备对应的出端口,向BIER组播组(包括第一设备)发送第三报文。
例如,基于图20所示的示例,节点E的第三转发表的一种示例可如表33所示。
表33
Figure BDA0003227959120000411
其中,节点E的组播路由标识中的组标识为标识6。节点E根据标识6查找表33,确定对应的位串信息包括:位串信息0100和位串信息0011。节点E可以剥除报文中节点A的组播信息,在报文中封装包括位串信息0100的外层头部(记为组播报文6),并通过节点R9对应的端口发送组播报文6。节点E可以剥除报文中节点A的组播信息,然后复制两份,并在两份报文中封装包括位串信息0011的外层头部(记为组播报文7和组播报文8),通过节点R8对应的端口发送组播报文7和组播报文8。
可以理解,上述表19-表21仅为一种示例,不作为限定。比如,表19-表21中的邻居设备这一项可以配置为对应的出端口,即节点E可以不感知或者不配置普通节点的拓扑关系,直接通过出端口发送组播报文。此外,上述网络2-网络9可以是相同的网络,也可以是不同的网络,可以是独立的网络,也可以是一个网络下的子网络,对此不限定。网络的相关介绍可以参考上述“6、网络”中的相关介绍,在此不予赘述。
方式42:
在第二报文中,第二节点的组播路由信息不包括第一节点的组播路由标识。这种情况下,第一节点可以根据第二报文的IP头部中的IP地址,查找第一节点动态维护的第二转发表,该第二转发表记录有该IP地址对应的单播/组播信息,比如五元组信息或者二元组信息。如图22所示,第一节点在剥除第二报文中第二节点的组播信息后,可以在剥除后的报文的IP头部中,封装五元组信息或者二元组信息对应的单播/组播信息,从而获得第三报文,并向第一设备发送该第三报文。
结合上述方式31和方式32,可以看出,第二节点的组播路由信息包括第一节点的组播路由标识时,第一节点的组播路由标识可以用于指示目的设备为第一设备,使得第一节点仅根据第一节点的组播路由标识,便可确定需要向第一设备发送第三报文,无需拆封第一报文的内层头部,即IP头部,从而可以提高处理效率。
可选地,结合上述实施例,在第四种应用场景中,一个节点有可能包括多个实体,一个节点内的实体接收到组播报文后可以通过图24所示的方法进行处理,该方法应用于第一实体,第一实体属于第一节点,该方法具体包括:
S2401,第一实体接收第一组播报文。
其中,第一组播报文包括第一节点的第一组播路由信息,第一节点的第一组播路由信息包括:第一节点的第一组播路由标识,以及第一节点的第一组播路由标识对应的非叶子子节点的组播路由信息,第一节点的第一组播路由标识与第一节点的组播路由标识相同,或通过对第一节点的组播路由标识进行更新得到。关于节点的组播路由信息的相关描述可参见上文,不再赘述。
根据上文中关于组播路由标识的作用以及描述可知,若组播路由标识为bit序列,或,Cnt字段+Idx字段,则一个节点的组播路由标识中会有与每个子节点(包括非叶子子节点和叶子子节点)对应的bit或Idx字段。由于第一组播路由标识是根据组播路由标识衍生得到的,因此,第一节点的第一组播路由标识对应的非叶子子节点是指该第一组播路由标识中的bit或Idx字段对应的子节点中的非叶子子节点。
其中,第一实体为第一节点中的一个实体,第一实体可以从第一节点之外的其他节点接收第一组播报文,也可以从第一节点中的其他实体接收第一组播报文,本申请不作限制。若第一实体从第一节点之外的其他节点接收第一组播报文,则第一节点的第一组播路由信息与第一节点的组播路由信息相同。若第一实体从第一节点中的其他实体接收第一组播报文,则第一节点的第一组播路由标识可能与第一节点的组播路由标识相同,也可能通过对第一节点的组播路由标识进行更新得到。第一组播路由信息具体是如何的可根据第一实体和第二实体之间处理组播报文的方法推算得到,具体示例可参见下文,不再赘述。
S2402,第一实体根据第一节点的第一组播路由标识确定第二实体。
其中,第二实体为第一节点中的实体。S2002在具体实现时可以包括:第一实体根据第一节点的第一组播路由标识查找组播转发表得到第二实体。需要说明的是,第一实体根据第一节点的第一组播路由标识可能可以得到多个第二实体,此处的第二实体可以为其中的任意一个第二实体,本申请中以第一实体向一个第二实体转发组播报文为例进行描述,第一节点在实际处理组播报文时,可以向每个第二实体转发组播报文。
示例性地,若第一组播路由标识为bit序列,则组播转发表中第一组播路由标识中的值为1的bit对应的下一跳为第二实体,若第一组播路由标识为Cnt字段+Idx字段,则组播转发表中Idx字段的值对应的下一跳为第二实体。
S2403,第一实体向第二实体发送第二组播报文。
其中,第二组播报文中包括第一节点的第二组播路由信息。第一节点的第二组播路由信息包括:第一节点的第二组播路由标识,以及第一节点的第三组播路由标识对应的部分或全部非叶子子节点的组播路由信息。第一节点的第三组播路由标识与所述第一节点的第一组播路由标识相同,或通过对所述第一节点的第一组播路由标识进行更新得到。第一节点的第二组播路由标识与第一节点的第三组播路由标识相同,或通过对第一节点的第三组播路由标识进行更新得到。
其中,第一实体具体在以下情况1和情况2下,需要对第一节点的第一组播路由标识进行更新得到第一节点的第三组播路由标识,在其他情况下,第一节点的第三组播路由标识与第一节点的第一组播路由标识相同,以下对情况1和情况2以及更新方法进行示例性说明。
情况1、第一实体属于第一节点的某个子节点(假设为子节点1)。若第一组播路由标识为bit序列,则第一实体将子节点1对应的bit置0得到第三组播路由标识。若第一组播路由标识为Cnt字段+Idx字段,则第一实体将子节点1对应的Idx字段删除,并将Cnt字段的值减1得到第三组播路由标识。
情况2、第一实体不属于第一节点的任意一个子节点,但是组播报文只需要经过第一实体的组播转发就可以到达的第一节点的一个或多个子节点(假设为Q个子节点)。若第一组播路由标识为bit序列,则第一实体将Q个子节点对应的bit置0得到第三组播路由标识。若第一组播路由标识为Cnt字段+Idx字段,则第一实体将Q个子节点对应的Idx字段删除,并将Cnt字段的值减Q得到第三组播路由标识。
其中,第一实体具体在以下情况3下,需要对第一节点的第三组播路由标识进行更新得到第一节点的第二组播路由标识,在其他情况下,第一节点的第二组播路由标识与第一节点的第三组播路由标识相同,以下对情况3以及更新方法进行示例性说明。
情况3、第一实体需要向多个第二实体转发组播报文。针对任意一个第二实体,若第三组播路由标识为bit序列,则第一实体需要将第一节点的第三组播路由标识中的与除P个子节点之外的其他子节点对应的bit置0得到第二组播路由标识。若第三组播路由标识为Cnt字段+Idx字段,则第一实体将除P个子节点之外的其他子节点对应的Idx字段删除,并将Cnt字段的值减P得到第二组播路由标识。其中,P个子节点为第一节点的一个或多个子节点,这些子节点需要经过该第二实体的组播转发才可以接收到组播报文。
综上,本申请上述实施例提供的方法,相比PIM-SM具有以下好处:
1、节点中的组播转发表的表项个数不会随着组播流个数的增加而增加,因此,即使组播流个数较多,也不需要在路由器中扩展更多的表空间来支持组播报文的转发,因此,可扩展性较好。
2、组播报文是从源节点生成的,并且,组播报文中包括非叶子子节点的组播路由信息,因此,可以通过调整组播报文,主动控制转发路径。例如,如果有多条路径,控制器或源节点可以通过控制面算法选择最优的路径。
3、组播报文是从源节点生成的,因此,节点加入或离开组播树,源节点均是可以获知的,可管理性较高。例如,源节点可以通过应用层采集到用户的偏好,根据这些偏好调整组播报文中的数据。
4、节点不需要发送加入信令,因此,节点不需要处理大量的周期性信令,避免增加节点的计算负载、功耗以及处理资源。
本申请上述实施例提供的方法,相比BIER具有以下好处:
1、组播报文中包括非叶子子节点的组播路由信息,非叶子子节点可以根据自身的组播路由信息进行组播报文的转发,因此,报文份数不会过多,组播效率较高。
2、组播报文是从源节点生成的,并且,组播报文中包括非叶子子节点的组播路由信息,因此,可以通过调整组播报文,主动控制转发路径。例如,如果有多条路径,控制器或源节点可以通过控制面算法选择最优的路径。
此外,本申请上述实施例提供的方法还具有以下好处:
1、由于一个节点发往每个子节点的报文内的树形递归结构都相同,比如都是第二节点的组播路由信息的树形递归结构,使得该节点在对应的每个出端口可以只发送一份报文,以避免出现冗余报文,提高通信效率。
2、每个非叶子子节点的组播路由信息无需上游节点,比如第二节点确定,而可以由该非叶子子节点自行确定,从而可以节约上游节点的处理资源,提高运行效率。
为了使得本申请实施例更加的清楚,以下结合图20所示的场景,且以节点的组播路由标识通过上述方式12实现为例,对上述实施例提供的方法作示例性说明。
在图20所示的组播树中,节点D对应的节点集合包括3个节点,即节点A、节点B和节点C,节点D的bit序列的位宽为3,第1个bit与节点A对应,第2个bit与节点B对应,第3个bit与节点C对应。节点A为节点D的非叶子子节点,节点A对应的节点集合包括3个节点,即节点D、节点E和节点F,节点A的bit序列的位宽为3,第1个bit与节点D对应,第2个bit与节点E对应,第3个bit与节点F对应。节点E为节点A的叶子子节点,节点E对应的节点集合包括4个节点,即节点A、设备3、设备4和设备5,节点A的bit序列的位宽为4,第1个bit与节点A对应,第2个bit与设备3对应,第3个bit与设备4对应,第4个bit与设备5对应。节点F为节点A的叶子子节点,节点F对应的节点集合包括2个节点,即节点A和设备6,节点A的bit序列的位宽为2,第1个bit与节点A对应,第2个bit与设备6对应。节点B为节点D的非叶子子节点,节点B对应的节点集合包括2个节点,即节点D和节点H,节点B的bit序列的位宽为2,第1个bit与节点D对应,第2个bit与节点H对应。节点H为节点B的叶子子节点,节点H对应的节点集合包括3个节点,即节点B、设备7和设备8,节点H的bit序列的位宽为3,第1个bit与节点B对应,第2个bit与设备7对应,第3个bit与设备8对应。节点C为节点D的叶子子节点,节点C对应的节点集合包括3个节点,即节点D、设备1和设备2,节点C的bit序列的位宽为3,第1个bit与节点D对应,第2个bit与设备1对应,第3个bit与设备2对应。图25,除第一字段、第二字段和寻址字段之外,“:”之前的字母表示该字段对应的节点,“:”之后的值表示该字段对应的bit序列;寻址字段中的“:”之前的LEN是指节点的组播路由信息的长度,“:”之后的值表示该字段的值,寻址字段的位宽为1字节。
其中,节点D可以生成图25中的(a)所示的报文1。报文1的外层头部中封装有网络2支持的单播/组播信息1。节点D可以跨网络2分别向节点A、节点B和节点C发送报文1。节点A接收到报文1后,节点A可以根据寻址字段,从节点D的组播路由信息中确定出节点A的组播路由信息,并封装节点A的组播路由信息,以生成图25中的(b)所示的报文2。报文2的外层头部中封装有网络3和网络4支持的单播/组播信息2。节点A可以跨网络3向节点E发送报文2,以及跨网络4向节点E发送报文2。节点E接收到报文2后,可以将报文2中A的组播信息剥除。此时,如果网络6支持IP单播/组播或者MPLS标签,则节点E可以在IP头部中封装单播/组播信息3,以生成图25中的(c)中左侧所示的报文3,该单播/组播信息3包括IP单播/组播信息或者MPLS标签信息。如果网络6支持BIER组播,则节点E可以在IP头部的外层再封装一层包括BIER组播信息1的头部,以生成图25中的(c)中右侧所示的报文3。节点E可以跨网络6分别向设备3、设备4和设备5发送报文3。节点B接收到报文1后,节点B可以根据寻址字段,从节点D的组播路由信息中确定出节点B的组播路由信息,并封装节点B的组播路由信息,以生成图25中的(d)所示的报文4。报文4的外层头部中封装有网络5支持的单播/组播信息4。节点B可以跨网络5向节点H发送报文4。节点H接收到报文4后,可以将报文4中B的组播信息剥除。此时,如果网络8支持IP单播/组播或者MPLS标签,则节点H可以在IP头部中封装单播/组播信息5,以生成图25中的(e)中左侧所示的报文5,该单播/组播信息5包括IP单播/组播信息或者MPLS标签信息。如果网络8支持BIER组播,则节点E可以在IP头部的外层再封装一层包括BIER组播信息2的头部,以生成图25中的(e)中右侧所示的报文5。这样,节点H可以跨网络8分别向设备7和设备8发送报文5。节点C接收到报文1后,可以将报文1中D的组播信息剥除。此时,如果网络9支持IP单播/组播或者MPLS标签,则节点C可以在IP头部中封装单播/组播信息6,以生成图25中的(f)中左侧所示的报文6,该单播/组播信息6包括IP单播/组播信息或者MPLS标签信息。如果网络9支持BIER组播,则节点C可以在IP头部的外层再封装一层包括BIER组播信息3的头部,以生成图25中的(f)中右侧所示的报文6。这样,节点C可以跨网络9分别向设备1和设备2发送报文6。
上述实施例中,均以组播报文中不包括类型字段为例对本申请提供的方法作示例性说明。若当前节点支持多种类型的组播路由标识,组播报文中可以包括类型字段,则节点可以解析类型字段获取组播路由标识的类型,根据组播路由标识的类型对组播路由标识进行识别。
上述实施例中,组播报文中的任意一个字段的位宽均是示例性地,在实际实现时,任意一个字段的位宽可以不是字节对齐的,也可以是对齐的(例如,该字段均为1字节、2字节或更多字节),本申请不作限制。
上述实施例中,一个节点(或该节点中的实体)在接收到组播报文之后,可以根据外层封装中的字段的指示确定组播报文的报文头中是否包含组播封装,若外层封装中的目的地址为该节点(或该实体)的地址、且确定组播报文中的报文头中包含组播封装,该节点(或该实体)可以剥掉外层封装,获取组播封装,并根据组播封装对组播报文进行相应的处理。
上述实施例中,一个节点(或实体)向多个节点(或实体)发送组播报文之前,可以将接收到的组播报文进行复制,向N个节点(或实体)发送则复制N-1份,在复制的组播报文以及接收到的组播报文上进行编辑得到需要发送的组播报文。若只向一个节点(或实体)发送组播报文,则可以不复制,直接在接收到的组播报文上进行编辑。节点(或实体)在进行组播报文的复制时,可以一次全部复制,再并行编辑组播报文并发送。也可以一次复制一个组播报文,并编辑组播报文并发送。
需要说明的是,在本申请实施例的描述中,一个节点(或实体)向另一个节点(或实体)发送组播报文是指该组播报文的源地址为所述一个节点(或实体)的地址,目的地址为所述另一个节点(或实体)的地址。本申请上述实施例中任何一个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类似,不再一一阐述。
请参阅图26,本申请提供的通信方法适用于至少两个节点之间的通信,例如第四节点和第五节点之间的通信,该方法包括:
S2601,第四节点获取第四报文。
其中,第四节点为第四网络内的节点,可以是边缘节点或者非边缘节点,对此不限定。第四报文包括第五头部,第五头部包括第五网络的位串信息,即第四报文为BIER的组播报文。第四网络与第五网络是不同的网络,第四网络和第五网络均可以认为是虚拟节点,这样,第四节点或者第五网络内的节点均可以认为是各自虚拟节点内的实体,此外,第四网络与第五网络的具体实现可以参考上述“6、网络”中的相关介绍,在此不予赘述。第四节点可以接收来自上游节点的报文,以根据该报文生成第四报文,或者第四节点可以接收来自上游节点的第四报文,或者第四节点也可以根据业务生成第四报文,对此不限定。可选地,第四节点保存有第五网络的BIFT。如果第四节点需要生成第四报文,则可以查找第五网络的BIFT,确定第五网络的位串信息,从而在报文中封装包括第五网络的位串信息的第五报文,以生成第五报文。
S2602,第四节点根据第四报文,向第五节点发送第五报文。相应的,第五节点接收来自第四节点的第五报文。
其中,第五节点为第四网络内的节点,且可以是第四网络的边缘节点。第五节点可以认为是虚拟节点中的实体。第五报文包括第五头部和第六头部,第六头部位于第五头部的外层,第六头部包括第五节点的位串信息。可以看出,在第五节点是第四网络的边缘节点的情况下,如果想要向第五网络发送第五报文,则需要在第五报文内封装第五节点的位串信息,以便第五报文能够发往第五节点,经过第五节点发往第四网络,从而实现跨域转发。第四节点上存储有第二映射关系表,该第二映射关系表可以记录第五节点与第五网络的对应关系。第四节点查找第二映射关系表,确定第五报文需要发往第五接单。在此基础上,第四节点上存储有第四网络的BIFT,第四节点可以查找第四网络的BIFT,确定第五节点的位串信息,以便第四节点在第四报文中封装包括第五节点的位串信息的第六头部,获得第五报文,从而向第五节点发送第五报文。
例如,假设BIER组播的网络结构如图27所示,节点A、节点P、节点B和节点C为同一网络,比如网络1内的节点。节点A、节点B和节点C构成BIER集合1,节点A的位串信息可以为001、节点B的位串信息可以为010、节点C的位串信息可以为100。此外,节点T、节点E和节点F为同一网络,比如网络2内的节点。节点G、节点H和节点K同一网络,比如网络3内的节点。将网络1作为虚拟节点D1,网络2作为虚拟节点D2,网络3作为虚拟节点D3,虚拟节点D1、虚拟节点D2和虚拟节点D3可以构成BIER集合2,这样,虚拟节点D1的位串信息可以为100、虚拟节点D2的位串信息可以为010、虚拟节点D3的位串信息可以为001。节点A、节点B、节点P和节点C可以作为虚拟节点D1内的实体,节点T、节点E和节点F可以作为虚拟节点D2内的实体,节点G、节点H和节点K可以作为虚拟节点D3内的实体。
在虚拟节点D1需要向虚拟节点D2和虚拟节点D3发送报文的情况下,虚拟节点D1内的某个实体,比如节点A生成该报文。其中,节点A上存储有BIER集合1的BIFT1,映射关系表1以及BIER集合2的BIFT2,BIFT1的一种示例可如表34所示,映射关系表1的一种示例可如表35所示,BIFT2的一种示例可如表36所示。
表34
标识 转发位掩码 邻居设备
010 010 D2
001 001 D3
表35
节点 节点 邻居设备
D2 B 010
D3 C 100
表36
标识 转发位掩码 邻居设备
010 010 P
100 100 C
其中,表34中的转发位掩码(forwarding bit mask,F-BM)用于指示BIER集合1中的子集,该子集有两个,一个子集内的节点为D2,另一个子集内的节点为D3。表36中的F-BM用于指示BIER集合2中的子集,该子集有两个,一个子集内的节点为B,另一个子集内的节点为C。节点A查找表34确定虚拟节点D2对应的转发位掩码为010,即位串信息为010,虚拟节点D3对应的转发位掩码为001,即位串信息为001。如图28中的(a)所示,节点可以在报文A中封装包括位串信息010的头部(记为头部1),在报文B中封装包括位串信息001的头部(记为头部2)。节点A查找表35确定需要进一步查找表36。节点A查找表36确定节点P对应的转发位掩码为010,即位串信息为010,节点C对应的转发位掩码为100,即位串信息为100。如图28中的(b)所示,节点可以在报文A中封装包括位串信息010的头部(记为头部3),在报文B中封装包括位串信息001的头部(记为头部4)。在报文A中,头部3位于头部1的外层,同理,在报文B中,头部4位于头部2的外层,以便于报文A和报文B的转发。节点A可以向节点P发送报文A,向节点C发送报文B,以便节点B能够接收到报文A,节点C能够接收到报文C。
需要说明的是,如果节点A接收到来自其他节点的报文(记为报文X),且报文X需要发往虚拟节点D2和虚拟节点D3,则报文X中的位串信息可以是转发位掩码001+转发位掩码010,即为011。节点A根据位串信息011查找表34,确定虚拟节点D2对应的转发位掩码为010,虚拟节点D3对应的转发位掩码为001。节点A可以剥除报文X中的位串信息011,并将剥除后的报文复制2份。这样,节点A通过查找表35和表36,可以在其中一份报文中封装上述头部1和头部3,得到报文A,在另一份报文中封装上述头部2和头部4,得到报文B,即节点A根据来自上游节点的报文X,生成报文A和报文B。
S2603,第五节点解析第五报文。
其中,第五节点上存储有第五网络的BIFT。第五节点解析第五报文,获得第五节点的位串信息,以及第五网络的位串信息。第五节点可以查找第五网络的BIFT,确定第五网络的BIFT中记录有第五网络的位串信息,但第五网络的BIFT中未记录第五节点的位串信息。如此,第五节点可以剥除第五报文中的第六头部,从而获得第四报文,然后向第五网络发送第四报文,以实现报文的跨网络转发,使得转发不再受限。
例如,假设BIER组播的网络结构如图27所示,节点B上存储有上述表34,节点B接收到来自节点P的报文A后,节点B通过查找表34,可以将报文A中的头部3剥除,得到报文C(如图28中的(c)所示)。如此,节点B可以向虚拟节点D2发送报文C,实现报文C的跨网络转发。节点C上存储有上述表34,节点C接收到报文B后,节点C通过查找表34,可以将报文B中的头部4剥除,得到报文D(如图28中的(d)所示)。如此,节点C可以向虚拟节点D3发送报文D,实现报文D的跨网络转发。
综上,根据上述实施例提供的方法可知,由于第五报文内封装有第五节点的位串信息,使得第五报文在发往第五网络之前,可以先跨网络转发,比如跨第四网络向第五节点转发,使得转发不再受限。
本申请中的上述附图中所示的“:”之前的部分为助记符,实际报文中并不存在助记符和“:”。本申请各个附图中,各个字段的位置仅仅为示例,在实际实现时有些字段的位置可以与图示中不同,本申请不作限制。
上述主要从方法的角度对本申请实施例的方案进行了介绍。可以理解的是,各个网元,例如,节点或实体为了实现上述功能,其包含了执行各个功能相应的硬件结构和软件模块中的至少一个。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对节点或实体进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
以上结合图8-图28详细说明了本申请实施例提供的通信方法。以下结合图29和图30详细说明用于执行本申请实施例提供的通信方法的通信装置。
示例性地,图29是本申请实施例提供的通信装置的结构示意图一。如图29所示,通信装置2900包括:收发模块2901和处理模块2902。为了便于说明,图29仅示出了该通信装置的主要部件。
一些实施例中,通信装置2900可以是图8所示的方法中的第一节点。
其中,收发模块2901,用于接收来自第二节点的第一报文;处理模块2902,用于解析第一报文。其中,第一报文包括:第二节点的组播路由信息,第一节点为组播树中第二节点的子节点,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息。
一种可能的设计方案中,第一节点为第二节点的非叶子子节点,处理模块2902,还用于根据第一报文生成第二报文;收发模块2901,还用于向第三节点发送第二报文。其中,第二报文包括:第一节点的组播路由信息,或者第三节点的组播路由信息,第一节点的组播路由信息包括如下任一项:第一节点的组播路由标识和第三节点的组播路由信息、第一节点的组播路由标识、或者第一节点的组播路由标识和第三节点的组播路由标识。
可选地,处理模块2902,还用于根据第二节点的组播路由标识,确定第一节点的组播路由信息;根据第二节点的组播路由信息进行报文封装,获得第二报文。或者,处理模块2902,还用于第一节点根据第二节点的组播路由标识,确定第一节点的组播路由信息;根据第一节点的组播路由信息中第一节点的组播路由标识,确定第三节点的组播路由信息;根据第三节点的组播路由信息进行报文封装,获得第二报文。
进一步地,处理模块2902,还用于根据第二节点的组播路由标识,确定第一节点在第一节点集合内的位置,根据第一节点在第一节点集合内的位置,确定第一节点的组播路由信息。其中,第一节点集合为第二节点对应的节点集合,第一节点集合包括第二节点的部分或全部潜在子节点。
进一步地,第二节点的组播路由标识包括:N个第一字段,N为第一节点集合中的节点个数,处理模块2902,还用于在N个第一字段中确定第一节点对应的第一字段的位置,第一节点对应的第一字段的位置用于表示第一节点在第一节点集合内的位置。
进一步地,第二节点的组播路由信息还包括第二节点的寻址字段。处理模块2902,还用于根据第二节点的组播路由标识,以及第二节点的寻址字段,确定第一节点的组播路由信息。
进一步地,第二节点的寻址字段用于指示第二节点的子节点的组播路由信息的长度。或者,第二节点的节点的寻址字段用于指示第二节点的子节点的组播路由信息的起始位置或结束位置。或者,第二节点的寻址字段包括:多个定界字段,第二节点的子节点的组播路由信息由多个定界字段分隔开。
可选地,第一节点和第三节点为第一网络内的节点。第二报文还包括:第一头部和第二头部,第一头部包括:第三节点的组播路由信息,或者第一节点的组播路由信息,第二头部包括:第二网络的单播/组播信息。
进一步地,第一节点有第一节点的组播路由标识,或第三节点的组播路由标识,与第二网络的单播/组播信息的对应关系。
进一步地,第一节点为第二网络内的节点。
另一种可能的设计方案中,第一节点为第二节点的叶子子节点,处理模块2902,还用于根据第一报文生成第三报文,收发模块2901,还用于向第一设备发送第三报文。其中,第三报文包括:第一设备的单播/组播信息。
可选地,第一报文包括第一节点的组播路由标识,第一节点的组播路由标识用于指示目的设备为第一设备。
一种可能的设计方案中,第一节点和第二节点为第一网络内的节点,第一报文还包括:第三头部和第四头部,第三头部包括:第二节点的组播路由信息,第四头部包括:第三网络的单播/组播信息。
可选地,第二节点为第三网络内的节点。
一种可能的设计方案中,单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
可选地,收发模块2901也可以包括发送模块和接收模块。其中,发送模块用于实现通信装置2900的发送功能,接收模块用于实现通信装置2900的接收功能
可选地,通信装置2900还可以包括存储模块(图29中未示出),该存储模块存储有程序或指令。当处理模块2902执行该程序或指令时,使得通信装置2900可以执行图8所示的方法中第一节点的功能。
应理解,通信装置2900中涉及的处理模块2902可以由处理器或处理器相关电路组件实现,可以为处理器或处理单元;收发模块2901可以由收发器或收发器相关电路组件实现,可以为收发器或收发单元。
需要说明的是,通信装置2900具体可以是终端或网络设备,也可以是可设置于终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,通信装置2900的技术效果可以参考图8所示出的方法中第一节点对应的技术效果,此处不再赘述。
另一些实施例中,通信装置2900可以是图8所示的方法中的第二节点。
其中,处理模块2902,用于获取第一报文;收发模块2901,用于向第一节点发送第一报文,第一节点为组播树中第二节点的子节点。其中,第一报文包括:第二节点的组播路由信息,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在组播树中的非叶子子节点的组播路由信息;
一种可能的设计方案中,第一节点和第二节点为第一网络内的节点,第一报文还包括:第三头部和第四头部,第三头部包括:第二节点的组播路由信息,第四头部包括:第三网络的单播/组播信息。
可选地,第二节点为第三网络内的节点。
可选地,单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
可选地,收发模块2901也可以包括发送模块和接收模块。其中,发送模块用于实现通信装置2900的发送功能,接收模块用于实现通信装置2900的接收功能
可选地,通信装置2900还可以包括存储模块(图29中未示出),该存储模块存储有程序或指令。当处理模块2902执行该程序或指令时,使得通信装置2900可以执行图8所示的方法中第二节点的功能。
应理解,通信装置2900中涉及的处理模块2902可以由处理器或处理器相关电路组件实现,可以为处理器或处理单元;收发模块2901可以由收发器或收发器相关电路组件实现,可以为收发器或收发单元。
需要说明的是,通信装置2900具体可以是终端或网络设备,也可以是可设置于终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,通信装置2900的技术效果可以参考图8所示出的方法中第二节点对应的技术效果,此处不再赘述。
再一些实施例中,通信装置2900可以是图26所示的方法中的第四节点。
其中,收发模块2901,用于获取第四报文;处理模块2902,用于根据第四报文,控制收发模块2901向第五节点发送第五报文。其中,第四节点为第四网络内的节点,第四报文包括:第五头部,第五头部包括:第五网络的位串信息;第五节点为第四网络内的节点,第五报文包括:第五头部和第六头部,第六头部包括:第五节点的位串信息。
一种可能的设计方案中,第四节点配置有第一表项,以及第二表项。其中,第一表项包括:第五网络的位串信息,第二表项包括:第五节点的串位信息。
一种可能的设计方案中,处理模块2902,还用于在第四报文上封装第六头部,以获得第五报文,从而控制收发模块2901向第五节点发送第五报文。
可选地,收发模块2901也可以包括发送模块和接收模块。其中,发送模块用于实现通信装置2900的发送功能,接收模块用于实现通信装置2900的接收功能
可选地,通信装置2900还可以包括存储模块(图29中未示出),该存储模块存储有程序或指令。当处理模块2902执行该程序或指令时,使得通信装置2900可以执行图26所示的方法中第四节点的功能。
应理解,通信装置2900中涉及的处理模块2902可以由处理器或处理器相关电路组件实现,可以为处理器或处理单元;收发模块2901可以由收发器或收发器相关电路组件实现,可以为收发器或收发单元。
需要说明的是,通信装置2900具体可以是终端或网络设备,也可以是可设置于终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,通信装置2900的技术效果可以参考图26所示出的方法中第四节点对应的技术效果,此处不再赘述。
又一些实施例中,通信装置2900可以是图26所示的方法中的第五节点。
其中,收发模块2901,用于接收来自第四节点的第五报文;处理模块2902,用于解析第五报文。其中,第四节点和第五节点为第四网络内的节点,第四报文包括:第五头部和第六头部,第五头部包括:第五网络的位串信息,第六头部包括:第五节点的位串信息。
一种可能的设计方案中,处理模块2902,还用于在解析第五报文之后,剥除第五报文中的第六头部,以获得第四报文,从而控制收发模块2901向第五网络发送第四报文。
可选地,收发模块2901也可以包括发送模块和接收模块。其中,发送模块用于实现通信装置2900的发送功能,接收模块用于实现通信装置2900的接收功能
可选地,通信装置2900还可以包括存储模块(图29中未示出),该存储模块存储有程序或指令。当处理模块2902执行该程序或指令时,使得通信装置2900可以执行图26所示的方法中第五节点的功能。
应理解,通信装置2900中涉及的处理模块2902可以由处理器或处理器相关电路组件实现,可以为处理器或处理单元;收发模块2901可以由收发器或收发器相关电路组件实现,可以为收发器或收发单元。
需要说明的是,通信装置2900具体可以是终端或网络设备,也可以是可设置于终端或网络设备中的芯片(系统)或其他部件或组件,还可以是包含终端或网络设备的装置,本申请对此不做限定。
此外,通信装置2900的技术效果可以参考图26所示出的方法中第五节点对应的技术效果,此处不再赘述。
示例性地,图30为本申请实施例提供的通信装置的结构示意图二。该通信装置可以是终端或网络设备,也可以是可设置于终端或网络设备的芯片(系统)或其他部件或组件。如图30所示,通信装置3000可以包括处理器3001。可选地,通信装置3000还可以包括存储器3002和/或收发器3003。其中,处理器3001与存储器3002和收发器3003耦合,如可以通过通信总线连接。
下面结合图30对通信装置3000的各个构成部件进行具体的介绍:
其中,处理器3001是通信装置3000的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器3001是一个或多个中央处理器(central processing unit,CPU),也可以是特定集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(fieldprogrammable gate array,FPGA)。此外,处理器3001也可以是逻辑电路。
可选地,处理器3001可以通过运行或执行存储在存储器3002内的软件程序,以及调用存储在存储器3002内的数据,执行上述图8或图26所述方法。
在具体的实现中,作为一种实施例,处理器3001可以包括一个或多个CPU,例如图30中所示出的CPU0和CPU1。
在具体实现中,作为一种实施例,通信装置3000也可以包括多个处理器,例如图30中所示的处理器3001和处理器3004。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
其中,所述存储器3002用于存储执行本申请方案的软件程序,并由处理器3001来控制执行,具体实现方式可以参考上述方法实施例,此处不再赘述。
可选地,存储器3002可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器3002可以和处理器3001集成在一起,也可以独立存在,并通过通信装置3000的接口电路(图30中未示出)与处理器3001耦合,本申请实施例对此不作具体限定。
收发器3003,用于与其他通信装置之间的通信。例如,通信装置3000为终端设备,收发器3003可以用于与网络设备通信,或者与另一个终端设备通信。又例如,通信装置3000为网络设备,收发器3003可以用于与终端设备通信,或者与另一个网络设备通信。
可选地,收发器3003可以包括接收器和发送器(图30中未单独示出)。其中,接收器用于实现接收功能,发送器用于实现发送功能。
可选地,收发器3003可以和处理器3001集成在一起,也可以独立存在,并通过通信装置3000的接口电路(图30中未示出)与处理器3001耦合,本申请实施例对此不作具体限定。此外,接口电路也可以是输入输出接口。
需要说明的是,图30中示出的通信装置3000的结构并不构成对该通信装置的限定,实际的通信装置可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
此外,通信装置3000的技术效果可以参考上述方法实施例所述的通信方法的技术效果,此处不再赘述。
本申请实施例提供一种通信系统。该通信系统包括上述一个或多个终端或网络设备。该或网络设备用于执行上述图8或图26所述方法。
应理解,在本申请实施例中的处理器可以是中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件(如电路)、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (40)

1.一种通信方法,其特征在于,所述方法包括:
第一节点接收来自第二节点的第一报文,其中,所述第一报文包括:所述第二节点的组播路由信息,所述第一节点为组播树中所述第二节点的子节点,一个节点的组播路由标识用于该节点在所述组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在所述组播树中的非叶子子节点的组播路由信息;
所述第一节点解析所述第一报文。
2.根据权利要求1所述的方法,其特征在于,所述第一节点为所述第二节点的非叶子子节点,第三节点为所述第一节点的子节点,所述第一节点解析所述第一报文,包括:
所述第一节点根据所述第一报文,生成第二报文,其中,所述第二报文包括:所述第一节点的组播路由信息,或者所述第三节点的组播路由信息,所述第一节点的组播路由信息包括如下任一项:第一节点的组播路由标识和所述第三节点的组播路由信息、所述第一节点的组播路由标识、或者所述第一节点的组播路由标识和第三节点的组播路由标识;
在所述第一节点解析所述第一报文之后,所述方法还包括:
所述第一节点向所述第三节点发送所述第二报文。
3.根据权利要求2所述的方法,其特征在于,所述第一节点根据所述第一报文,生成第二报文,包括:
所述第一节点根据所述第二节点的组播路由标识,确定所述第一节点的组播路由信息;
所述第一节点根据所述第二节点的组播路由信息进行报文封装,获得所述第二报文;
或者,所述第一节点根据所述第一报文,生成第二报文,包括:
所述第一节点根据所述第二节点的组播路由标识,确定所述第一节点的组播路由信息;
所述第一节点根据所述第一节点的组播路由信息中所述第一节点的组播路由标识,确定所述第三节点的组播路由信息;
所述第一节点根据所述第三节点的组播路由信息进行报文封装,获得所述第二报文。
4.根据权利要求3所述的方法,其特征在于,所述第一节点根据所述第二节点的组播路由标识,确定所述第一节点的组播路由信息,包括:
所述第一节点根据所述第二节点的组播路由标识,确定所述第一节点在第一节点集合内的位置,所述第一节点集合为所述第二节点对应的节点集合,所述第一节点集合包括所述第二节点的部分或全部潜在子节点;
所述第一节点根据所述第一节点在第一节点集合内的位置,确定所述第一节点的组播路由信息。
5.根据权利要求4所述的方法,其特征在于,所述第二节点的组播路由标识包括:N个第一字段,N为所述第一节点集合中的节点个数,所述第一节点根据所述第二节点的组播路由标识,确定所述第一节点在第一节点集合内的位置,包括:
所述第一节点在所述N个第一字段中确定所述第一节点对应的第一字段的位置,所述第一节点对应的第一字段的位置用于表示所述第一节点在第一节点集合内的位置。
6.根据权利要求3所述的方法,其特征在于,所述第二节点的组播路由信息还包括所述第二节点的寻址字段,所述第一节点根据所述第二节点的组播路由标识,确定所述第一节点的组播路由信息,包括:
所述第一节点根据所述第二节点的组播路由标识,以及所述第二节点的寻址字段,确定所述第一节点的组播路由信息。
7.根据权利要求6所述的方法,其特征在于,所述第二节点的寻址字段用于指示所述第二节点的子节点的组播路由信息的长度;或者,所述第二节点的节点的寻址字段用于指示所述第二节点的子节点的组播路由信息的起始位置或结束位置;或者,所述第二节点的寻址字段包括:多个定界字段,所述第二节点的子节点的组播路由信息由所述多个定界字段分隔开。
8.根据权利要求2-7中任一项所述的方法,其特征在于,所述第一节点和所述第三节点为第一网络内的节点,所述第二报文还包括:第一头部和第二头部,所述第一头部包括:所述第三节点的组播路由信息,或者所述第一节点的组播路由信息,所述第二头部包括:第二网络的单播/组播信息。
9.根据权利要求8所述的方法,其特征在于,所述第一节点有所述第一节点的组播路由标识,或所述第三节点的组播路由标识,与所述第二网络的单播/组播信息的对应关系。
10.根据权利要求8或9所述的方法,其特征在于,所述第一节点为所述第二网络内的节点。
11.根据权利要求1所述的方法,其特征在于,所述第一节点为所述第二节点的叶子子节点,所述第一节点解析所述第一报文,包括:
所述第一节点根据所述第一报文,生成第三报文,其中,所述第三报文包括:第一设备的单播/组播信息;
在所述第一节点解析所述第一报文之后,所述方法还包括:
所述第一节点向所述第一设备发送第三报文。
12.根据权利要求11所述的方法,其特征在于,所述第一报文包括所述第一节点的组播路由标识,所述第一节点的组播路由标识用于指示目的设备为所述第一设备。
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述第一节点和所述第二节点为第一网络内的节点,所述第一报文还包括:第三头部和第四头部,所述第三头部包括:所述第二节点的组播路由信息,所述第四头部包括:第三网络的单播/组播信息。
14.根据权利要求13所述的方法,其特征在于,所述第二节点为所述第三网络内的节点。
15.根据权利要求8-14中任一项所述的方法,其特征在于,所述单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
16.一种通信方法,其特征在于,所述方法包括:
第二节点获取第一报文,所述第一报文包括:所述第二节点的组播路由信息,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在所述组播树中的非叶子子节点的组播路由信息;
所述第二节点向第一节点发送所述第一报文,所述第一节点为所述组播树中所述第二节点的子节点。
17.根据权利要求16所述的方法,其特征在于,所述第一节点和所述第二节点为第一网络内的节点,所述第一报文还包括:第三头部和第四头部,所述第三头部包括:所述第二节点的组播路由信息,所述第四头部包括:第三网络的单播/组播信息。
18.根据权利要求17所述的方法,其特征在于,所述第二节点为所述第三网络内的节点。
19.根据权利要求16-18中任一项所述的方法,其特征在于,所述单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
20.一种第一节点,其特征在于,包括:收发模块和处理模块,其中,
所述收发模块,用于接收来自第二节点的第一报文,其中,所述第一报文包括:所述第二节点的组播路由信息,所述第一节点为组播树中所述第二节点的子节点,一个节点的组播路由标识用于该节点在所述组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在所述组播树中的非叶子子节点的组播路由信息;
所述处理模块,用于解析所述第一报文。
21.根据权利要求20所述的节点,其特征在于,所述第一节点为所述第二节点的非叶子子节点,所述处理模块,还用于根据所述第一报文,生成第二报文,其中,所述第二报文包括:所述第一节点的组播路由信息,或者所述第三节点的组播路由信息,所述第一节点的组播路由信息包括如下任一项:第一节点的组播路由标识和所述第三节点的组播路由信息、所述第一节点的组播路由标识、或者所述第一节点的组播路由标识和第三节点的组播路由标识;所述收发模块,还用于向所述第三节点发送所述第二报文。
22.根据权利要求21所述的节点,其特征在于,所述处理模块,还用于根据所述第二节点的组播路由标识,确定所述第一节点的组播路由信息;根据所述第二节点的组播路由信息进行报文封装,获得所述第二报文;或者,所述处理模块,还用于所述第一节点根据所述第二节点的组播路由标识,确定所述第一节点的组播路由信息;根据所述第一节点的组播路由信息中所述第一节点的组播路由标识,确定所述第三节点的组播路由信息;根据所述第三节点的组播路由信息进行报文封装,获得所述第二报文。
23.根据权利要求22所述的节点,其特征在于,所述处理模块,还用于根据所述第二节点的组播路由标识,确定所述第一节点在第一节点集合内的位置,根据所述第一节点在第一节点集合内的位置,确定所述第一节点的组播路由信息,所述第一节点集合为所述第二节点对应的节点集合,所述第一节点集合包括所述第二节点的部分或全部潜在子节点。
24.根据权利要求23所述的节点,其特征在于,所述第二节点的组播路由标识包括:N个第一字段,N为所述第一节点集合中的节点个数,所述处理模块,还用于在所述N个第一字段中确定所述第一节点对应的第一字段的位置,所述第一节点对应的第一字段的位置用于表示所述第一节点在第一节点集合内的位置。
25.根据权利要求22所述的节点,其特征在于,所述第二节点的组播路由信息还包括所述第二节点的寻址字段,所述处理模块,还用于根据所述第二节点的组播路由标识,以及所述第二节点的寻址字段,确定所述第一节点的组播路由信息。
26.根据权利要求25所述的节点,其特征在于,所述第二节点的寻址字段用于指示所述第二节点的子节点的组播路由信息的长度;或者,所述第二节点的节点的寻址字段用于指示所述第二节点的子节点的组播路由信息的起始位置或结束位置;或者,所述第二节点的寻址字段包括:多个定界字段,所述第二节点的子节点的组播路由信息由所述多个定界字段分隔开。
27.根据权利要求21-26中任一项所述的节点,其特征在于,所述第一节点和所述第三节点为第一网络内的节点,所述第二报文还包括:第一头部和第二头部,所述第一头部包括:所述第三节点的组播路由信息,或者所述第一节点的组播路由信息,所述第二头部包括:第二网络的单播/组播信息。
28.根据权利要求27所述的节点,其特征在于,所述第一节点有所述第一节点的组播路由标识,或所述第三节点的组播路由标识,与所述第二网络的单播/组播信息的对应关系。
29.根据权利要求27或28所述的节点,其特征在于,所述第一节点为所述第二网络内的节点。
30.根据权利要求20所述的节点,其特征在于,所述第一节点为所述第二节点的叶子子节点,所述处理模块,还用于根据所述第一报文,生成第三报文,其中,所述第三报文包括:第一设备的单播/组播信息;所述收发模块,还用于向所述第一设备发送第三报文。
31.根据权利要求30所述的节点,其特征在于,所述第一报文包括所述第一节点的组播路由标识,所述第一节点的组播路由标识用于指示目的设备为所述第一设备。
32.根据权利要求20-31中任一项所述的节点,其特征在于,所述第一节点和所述第二节点为第一网络内的节点,所述第一报文还包括:第三头部和第四头部,所述第三头部包括:所述第二节点的组播路由信息,所述第四头部包括:第三网络的单播/组播信息。
33.根据权利要求32所述的节点,其特征在于,所述第二节点为所述第三网络内的节点。
34.根据权利要求27-33中任一项所述的节点,其特征在于,所述单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
35.一种第二节点,其特征在于,包括:处理模块和收发模块,其中,
所述处理模块,用于获取第一报文,所述第一报文包括:所述第二节点的组播路由信息,一个节点的组播路由标识用于该节点在组播树中的非叶子子节点,确定该非叶子子节点的组播路由信息,一个节点的组播路由信息包括:该节点的组播路由标识和该节点在所述组播树中的非叶子子节点的组播路由信息;
所述收发模块,用于向第一节点发送所述第一报文,所述第一节点为所述组播树中所述第二节点的子节点。
36.根据权利要求35所述的节点,其特征在于,所述第一节点和所述第二节点为第一网络内的节点,所述第一报文还包括:第三头部和第四头部,所述第三头部包括:所述第二节点的组播路由信息,所述第四头部包括:第三网络的单播/组播信息。
37.根据权利要求36所述的节点,其特征在于,所述第二节点为所述第三网络内的节点。
38.根据权利要求35-37中任一项所述的节点,其特征在于,所述单播/组播信息包括如下任一项:互联网协议IP单播/组播信息、多协议标签交换MPLS标签信息、或位串信息。
39.一种通信装置,其特征在于,该装置包括:处理器和存储器,存储器用于存储计算机程序,当处理器执行该程序时,使得如权利要求1-15中任一项所述的方法被执行,或者如权利要求16-19中任一项所述的方法被执行。
40.一种计算机程序产品,其特征在于,所述计算机程序产品包括:计算机程序,当所述计算机程序在计算机上运行时,使得如权利要求1-15中任一项所述的方法被执行,或者如权利要求16-19中任一项所述的方法被执行。
CN202110977642.7A 2021-08-24 2021-08-24 通信方法及装置 Pending CN115733796A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110977642.7A CN115733796A (zh) 2021-08-24 2021-08-24 通信方法及装置
EP22860517.6A EP4380129A1 (en) 2021-08-24 2022-08-23 Communication method and device
PCT/CN2022/114357 WO2023025171A1 (zh) 2021-08-24 2022-08-23 通信方法及装置
US18/584,358 US20240195729A1 (en) 2021-08-24 2024-02-22 Communication method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110977642.7A CN115733796A (zh) 2021-08-24 2021-08-24 通信方法及装置

Publications (1)

Publication Number Publication Date
CN115733796A true CN115733796A (zh) 2023-03-03

Family

ID=85289547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110977642.7A Pending CN115733796A (zh) 2021-08-24 2021-08-24 通信方法及装置

Country Status (4)

Country Link
US (1) US20240195729A1 (zh)
EP (1) EP4380129A1 (zh)
CN (1) CN115733796A (zh)
WO (1) WO2023025171A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101534205B (zh) * 2008-03-11 2011-12-07 中国网通集团宽带业务应用国家工程实验室有限公司 应用层组播网络维护方法、终端和系统
US9237025B2 (en) * 2013-08-15 2016-01-12 Verizon Patent And Licensing Inc. Source routing in multicast transmissions
US10630743B2 (en) * 2016-09-23 2020-04-21 Cisco Technology, Inc. Unicast media replication fabric using bit indexed explicit replication
CN110224935B (zh) * 2018-03-02 2020-10-23 华为技术有限公司 一种处理组播数据报文的方法及装置
CN112511444B (zh) * 2020-04-03 2024-06-04 中兴通讯股份有限公司 一种组播流量传输方法、装置、通信节点及存储介质

Also Published As

Publication number Publication date
US20240195729A1 (en) 2024-06-13
EP4380129A1 (en) 2024-06-05
WO2023025171A1 (zh) 2023-03-02

Similar Documents

Publication Publication Date Title
JP7208386B2 (ja) パケット転送方法、パケット送信装置、およびパケット受信装置
CN106059924B (zh) 一种管理信息的方法,装置及系统
CN107770073B (zh) 一种信息同步的方法,装置及系统
EP3896923A1 (en) Bier packet sending method and apparatus
CN110401599B (zh) 数据包的处理方法及装置、存储介质、电子装置
JP7479489B2 (ja) パケット送信方法、デバイス、およびシステム
US11258698B2 (en) Multicast forwarding method and related device
US10680950B2 (en) Route searching method and apparatus, allocation node, searching node, and ingress node
CN111147372B (zh) 下行报文发送、转发方法和装置
WO2020156090A1 (zh) 一种建立跨域转发路径的方法、装置及系统
CN112187648B (zh) 组播报文转发方法及装置
WO2022184169A1 (zh) 报文转发方法、系统、存储介质及电子装置
WO2021088561A1 (zh) 位索引显式复制网络中负载分担的方法、装置及设备
US20240048479A1 (en) Packet Forwarding Method and Apparatus, Network Device, and Storage Medium
WO2023274083A1 (zh) 路由发布和转发报文的方法、装置、设备和存储介质
CN116094987A (zh) 转发路径的确定方法及装置
CN115733796A (zh) 通信方法及装置
EP4300913A1 (en) Multicast packet sending method and device
WO2024007762A1 (zh) 一种路由发布方法、通信方法及装置
WO2024016869A1 (zh) 一种组播配置方法及装置
CN118214917A (zh) 媒体流特征的传输方法、装置、设备及存储介质
CN115473847A (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