CN117675440A - 报文传输的方法和网络设备 - Google Patents

报文传输的方法和网络设备 Download PDF

Info

Publication number
CN117675440A
CN117675440A CN202211063430.9A CN202211063430A CN117675440A CN 117675440 A CN117675440 A CN 117675440A CN 202211063430 A CN202211063430 A CN 202211063430A CN 117675440 A CN117675440 A CN 117675440A
Authority
CN
China
Prior art keywords
header
message
node
multicast
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
Application number
CN202211063430.9A
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 CN202211063430.9A priority Critical patent/CN117675440A/zh
Priority to PCT/CN2023/079614 priority patent/WO2024045537A1/zh
Publication of CN117675440A publication Critical patent/CN117675440A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks

Landscapes

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

Abstract

本申请实施例提供了一种报文传输的方法和网络设备,该方法包括:入口节点接收用户边缘设备发送的第一报文,所述第一报文包含第一报文头和载荷,所述第一报文头包括组播源组信息;所述入口节点根据所述组播源组信息和对应关系,获取隧道信息,所述对应关系包括所述组播源组信息和所述隧道信息;所述入口节点根据所述载荷和所述隧道信息获得第二报文,所述第二报文包含所述载荷和与所述隧道信息对应的第二报文头,所述第二报文不包括所述第一报文头;所述入口节点通过与所述隧道信息对应的隧道发送所述第二报文。

Description

报文传输的方法和网络设备
技术领域
本申请涉及通信领域,特别涉及报文传输的方法和网络设备。
背景技术
随着通信技术的发展,组播技术在视频直播、视频会议等场景下的使用需求日渐增加。组播技术一方面能够在网络中提供点到多点的转发,有效减少网络冗余流量,降低网络负载,另一方面能够在应用平台中减轻服务器和处理器的负荷,减少因用户量的增长对组播源的造成的影响。基于组播技术的网络架可以包括用户网络和骨干网络。骨干网络可以采用不同的隧道进行报文传输,比如骨干网络可以支持采用一种或多种隧道。用户网络的组播报文在进入骨干网络时进行需进行封装。封装后的报文通过隧道在骨干网络中传输。封装后的报文离开骨干网络时通过解封装获得组播报文。组播报文被转发至组播接收者所在的用户网络。骨干网络可以是运行组播虚拟专用网络(Multicast Virtual PrivateNetwork VPN,MVPN)或以太虚拟专用网络(Ethernet VPN,EVPN)的网络。上述组播报文的传输方法存在传输开销较大的问题。
发明内容
本申请提供了一种报文传输的方法和网络设备,能够减少组播报文在骨干网中传输的开销。
第一方面,本申请提供了一种报文传输的方法,包括:入口节点接收用户边缘设备发送的第一报文,所述第一报文包含第一报文头和载荷,所述第一报文头包括组播源组信息;所述入口节点根据所述组播源组信息和对应关系,获取隧道信息,所述对应关系包括所述组播源组信息和所述隧道信息;所述入口节点根据所述载荷和所述隧道信息获得第二报文,所述第二报文包含所述载荷和与所述隧道信息对应的第二报文头,所述第二报文不包括所述第一报文头;所述入口节点通过与所述隧道信息对应的隧道发送所述第二报文。
本申请提供的方法适用基于组播技术的网络架构,该网络架构可以包括用户网络和骨干网络,骨干网络包括入口节点、中间节点和出口节点,其中,入口节点和出口节点是骨干网络中的与用户网络进行报文交互的边缘节点。本申请实施例中将CE设备发送的报文记作第一报文,入口节点对接收到的第一报文进行封装得到第二报文头,并将第一报文的第一报文头删除,得到第二报文并转发。在骨干网络中,根据入口节点、中间节点与出口节点的实际设置情况,第二报文可能经过一个或多个中间节点转发到达出口节点,或者,第二报文由入口节点转发至出口节点。在第二报文到达出口节点时,由出口节点对第二报文进行封装得到第一报文头,并删除第二报文头,得到第一报文。其中,第一报文中的第一报文头可以是第六版互联网协议(Internet Protocol version 6,IPv6)头或第四版互联网协议(Internet Protocol version 4,IPv4)头。组播源组信息是第一报文中的源地址和目的地址,该目的地址是组播组地址。
对应关系是组播源组信息与骨干网络中各节点的隧道信息的之间的关系,可以是入口节点建立的。进一步地,基于对应关系确定的隧道信息对应第二报文头,在入口节点和出口节点之间采用不同的隧道对应的场景时,隧道信息与第二报文头可以采用不同的表示方式,如在入口节点和出口节点之间采用IP组播隧道的场景中,如入口节点基于互联网协议(Internet Protocol,IP)进行封装,进一步地,入口节点可以基于IPv6封装,得到的第二报文头包括IPv6头,IPv6头包括与隧道信息对应的源地址和目的地址,其中,目的地址是组播树对应的组播组地址;在入口节点和出口节点之间采用基于IPv6封装的位索引显式复制(Bit Index Explicit Replication IPv6 Encapsulation,BIERv6)组播隧道的场景中,BIERv6头包括与隧道信息对应的源地址和目的地址,其中,目的地址是单播地址,或者,BIERv6头可以包括与隧道信息对应的源地址,不包括目的地址;在入口节点和出口节点之间采用多协议标签交换点到多点(Multiprotocol Label Switching point-to-multipoint,MPLS P2MP)隧道的场景中,隧道信息与第二报文头通过MPLS标签对应,在入口节点和出口节点之间采用BIER组播隧道的场景中,隧道信息与第二报文头通过上游MPLS标签对应。
在一种可能实现的方式中,所述第二报文头包括IPv6头和通用路由封装(GenericRouting Encapsulation,GRE)头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头为多协议标签交换(Multiprotocol Label Switching,MPLS)头,所述MPLS头包括所述入口节点在组播树的下一跳节点的MPLS标签或组播树对应的MPLS标签。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头包括位索引显式复制(Bit Index Explicit Replication,BIER)头和标签,所述BIER头包括与所述隧道信息对应的所述出口节点的标识,所述标签用于标识所述组播源组信息。
在一种可能实现的方式中,所述方法还包括:所述入口节点向出口节点通告所述对应关系。在另一种可能实现的方式中,对应关系可以是入口节点和出口节点各自静态配置。
在一种可能实现的方式中,所述方法还包括:所述入口节点向出口节点通告指示信息,所述指示信息用于指示还原所述组播源组信息。其中,指示信息用于指示还原所述组播源组信息,即指示信息至少用于指示出口节点能够还原出第一报文头的组播源组信息,使得出口节点根据指示信息和第二报文得到第一报文。
在一种可能实现的方式中,所述入口节点向出口节点通告所述对应关系包括:所述入口节点向所述出口节点发送边界网关协议(Border Gateway Protocol,BGP)消息,所述BGP消息包括所述对应关系。比如,所述BGP消息为边界网关协议-组播虚拟专用网络(Border Gateway Protocol-Multicast VPN,BGP-MVPN)信令或者边界网关协议-以太虚拟专用网络(Border Gateway Protocol-Ethernet VPN,BGP-EVPN)信令。
本申请实施例以入口节点删除第一报文头,并封装第二报文头得到第二报文,由第二报文在骨干网络中进行传输,到达出口节点时,再由出口节点删除第二报文头,恢复第一报文头得到第一报文,这样,在骨干网络的传输中,第二报文不需再携带第一报文头,能够减少报文在骨干网络中传输的开销。
第二方面,本申请提供了一种报文传输的方法,包括:出口节点接收第二报文,所述第二报文包括载荷和与隧道信息对应的第二报文头;所述出口节点根据对应关系和所述第二报文头对应的所述隧道信息,获取组播源组信息,所述对应关系包括所述隧道信息和所述组播源组信息;所述出口节点根据所述组播源组信息和所述载荷获得第一报文,所述第一报文包含第一报文头和所述载荷,所述第一报文头包括所述组播源组信息,所述第一报文不包括所述第二报文头。
在一种可能实现的方式中,所述第二报文头包括IPv6头和GRE头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
在一种可能实现的方式中,所述出口节点根据所述组播源组信息和所述载荷获得第一报文之前,还包括:所述出口节点接收第三报文,所述第三报文包括所述载荷和与所述隧道信息对应的第三报文头;所述出口节点根据对应关系和所述第三报文头对应的所述隧道信息,获取所述组播源组信息,所述第三报文头为MPLS头,所述MPLS头包括所述出口节点为组播树分配的MPLS标签或所述组播树对应的MPLS标签。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头包括BIER头和标签,所述BIER头包括与所述隧道信息对应的出口节点的标识,所述标签用于标识所述组播源组信息。
在一种可能实现的方式中,所述方法还包括:所述出口节点获取所述入口节点通告的所述对应关系。
在一种可能实现的方式中,所述方法还包括:所述出口节点接收所述入口节点通告的指示信息,所述指示信息用于指示还原所述组播源组信息。
在一种可能实现的方式中,所述出口节点获取所述入口节点通告的所述对应关系包括:所述出口节点接收所述入口节点发送的BGP消息,所述BGP消息包括所述对应关系。
在一种可能实现的方式中,所述BGP消息为BGP-MVPN信令或者BGP-EVPN信令。
第三方面,本申请提供了一种网络设备,所述网络设备设置于入口节点,所述网络设备包括:接收模块,用于接收用户边缘设备发送的第一报文,所述第一报文包含第一报文头和载荷,所述第一报文头包括组播源组信息;处理模块,用于根据所述组播源组信息和对应关系,获取隧道信息,所述对应关系包括所述组播源组信息和所述隧道信息;所述处理模块,还用于根据所述载荷和所述隧道信息获得第二报文,所述第二报文包含所述载荷和与所述隧道信息对应的第二报文头,所述第二报文不包括所述第一报文头;发送模块,用于通过与所述隧道信息对应的隧道发送所述第二报文。
在一种可能实现的方式中,所述第二报文头包括IPv6头和GRE头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
在一种可能实现的方式中,所述第二报文头为MPLS头,所述MPLS头包括所述入口节点在组播树的下一跳节点的MPLS标签或组播树对应的MPLS标签。
在一种可能实现的方式中,所述第二报文头包括BIER头和标签,所述BIER头包括与所述隧道信息对应的所述出口节点的标识,所述标签用于标识所述组播源组信息。
在一种可能实现的方式中,所述发送模块还用于向出口节点通告所述对应关系。
在一种可能实现的方式中,所述发送模块还用于向出口节点通告指示信息,所述指示信息用于指示还原所述组播源组信息。
在一种可能实现的方式中,所述发送模块具体用于向所述出口节点发送BGP消息,所述BGP消息包括所述对应关系。
在一种可能实现的方式中,所述BGP消息为BGP-MVPN信令或者边界网关协议-以BGP-EVPN信令。
第四方面,本申请提供了一种网路设备,所述网络设备设置于出口节点,所述网络设备包括:接收模块,用于接收第二报文,所述第二报文包括载荷和与隧道信息对应的第二报文头;处理模块,用于根据对应关系和所述第二报文头对应的所述隧道信息,获取组播源组信息,所述对应关系包括所述隧道信息和所述组播源组信息;所述处理模块,还用于根据所述组播源组信息和所述载荷获得第一报文,所述第一报文包含第一报文头和所述载荷,所述第一报文头包括所述组播源组信息,所述第一报文不包括所述第二报文头。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头包括IPv6头和GRE头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头包括IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
在一种可能实现的方式中,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
在一种可能实现的方式中,所述接收模块还用于接收第三报文,所述第三报文包括所述载荷和与所述隧道信息对应的第三报文头;所述处理模块,还用于根据所述对应关系和所述第三报文头对应的所述隧道信息,获取所述组播源组信息,所述第三报文头为多协议标签交换MPLS头,所述MPLS头包括所述出口节点为组播树分配的MPLS标签或所述组播树对应的MPLS标签。
在一种可能实现的方式中,与所述隧道信息对应的所述第二报文头包括BIER头和标签,所述BIER头包括与所述隧道信息对应的出口节点的标识,所述标签用于标识所述组播源组信息。
在一种可能实现的方式中,所述接收模块,还用于获取所述入口节点通告的所述对应关系。
在一种可能实现的方式中,所述接收模块,还用于接收所述入口节点通告的指示信息,所述指示信息用于指示还原所述组播源组信息。
在一种可能实现的方式中,所述接收模块,具体用于接收所述入口节点发送的BGP消息,所述BGP消息包括所述对应关系。
在一种可能实现的方式中,所述BGP消息为BGP-MVPN信令或者BGP-EVPN信令。
第五方面,本申请提供一种网络设备,所述网络设备包括通信接口和处理器,所述通信接口用于执行前述任一方面所述的方法以及任一方面的任一可能的实现方式中所涉及的收发操作,所述处理器用于执行以上任一方面所述的方法以及任一方面的任一可能的实现方式中所涉及的除收发操作之外的其它操作。例如,第五方面所述的网络设备设置于入口节点执行第一方面所述的方法时,所述处理器用于根据所述组播源组信息和对应关系,获取隧道信息,所述对应关系包括所述组播源组信息和所述隧道信息,根据所述载荷和所述隧道信息获得第二报文,所述第二报文包含所述载荷和与所述隧道信息对应的第二报文头,所述第二报文不包括所述第一报文头,所述通信接口用于接收用户边缘设备发送的第一报文,所述第一报文包含第一报文头和载荷,所述第一报文头包括组播源组信息,根据所述载荷和所述隧道信息获得第二报文,所述第二报文包含所述载荷和与所述隧道信息对应的第二报文头,所述第二报文不包括所述第一报文头。第五方面所述的网络设备设置于出口节点执行第二方面所述的方法时,所述通信接口用于接收第二报文,所述第二报文包括载荷和与隧道信息对应的第二报文头,所述处理器用于根据对应关系和所述第二报文头对应的所述隧道信息,获取组播源组信息,所述对应关系包括所述隧道信息和所述组播源组信息,根据所述组播源组信息和所述载荷获得第一报文,所述第一报文包含第一报文头和所述载荷,所述第一报文头包括所述组播源组信息,所述第一报文不包括所述第二报文头。
第六方面,本申请提供了一种通信系统,该通信系统用于报文的传输,包括:第三方面提供的设置于入口节点的网络设备,和第四方面提供的设置于出口节点的网络设备,该设置于入口节点的网络设备用于执行第一方面以及第一方面任一可能的实现方式中由所述第一设备所执行的部分或全部操作;所述设置于出口节点的网络设备用于执行第二方面以及第二方面任一可能的实现方式中由所述第二设备所执行的部分或全部操作。
在一种可能实现的方式中,所述系统还包括,设置于中间节点的网络设备,用于接收设置于入口节点的网络设备转发的所述第二报文,并转发所述第二报文。
第七方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,实现前述任一方面所述的方法以及前述任一方面的任一可能的实现方式中所包括的部分或全部操作。
第八方面,本申请提供了一种计算机程序产品,所述计算机程序产品包含指令,当其在处理器上运行时,实现前述任一方面所述的方法以及前述任一方面的任一可能的实现方式中所包括的部分或全部操作。
第九方面,本申请提供了一种芯片,包括:接口电路和处理器。所述接口电路和所述处理器相连接,所述处理器用于使得所述芯片执行前述任一方面所述的方法以及前述任一方面的任一可能的实现方式中所包括的部分或全部操作。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种骨干网络结构示意图;
图2为本申请实施例提供的一种网络架构的示意图;
图3为本申请实施例提供的报文的传输方法的流程示意图;
图4为本申请实施例提供的一种封装和解封装报文结构示意图;
图5为本申请实施例提供的报文的另一种传输方法的流程示意图;
图6为本申请实施例提供的另一种封装和解封装报文结构示意图;
图7为本申请实施例提供的另一种封装和解封装报文结构示意图;
图8为本申请实施例提供的另一种封装和解封装报文结构示意图;
图9为本申请实施例提供的一种配置方法;
图10为本申请实施例提供的另一种封装和解封装报文结构示意图;
图11为本申请实施例提供的一种入口节点结构示意图;
图12为本申请实施例提供的一种出口节点结构示意图;
图13为本申请实施例提供的一种网络设备30的结构示意图;
图14为本申请实施例提供的一种网络设备40的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
为了便于理解,下面先对本申请实施例所使用到的相关名词或术语进行解释说明:
1、组播技术
一种在网络中能够实现点到多点的高效传送的技术,通过组播技术能有效地节约网络带宽、降低数据传播的网络负载。
2、指定源模式协议无关组播(Protocol Independent Multicast-Source-Specific Multicast,PIM-SSM)
PIM-SSM是对传统PIM协议的扩展,支持从组播源接收组播业务流,SSM代表特定源的组播服务,在SSM中,仅接收者所请求的特定源的组播报文能转发给接收者,使得组播接收者在加入组播源时,可以指定接收或者拒绝来自特定组播源的流量。
3、隧道(Tunnel)
隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式,包括数据封装,传输和解封装的全过程。被封装的数据在网络上传递时所经过的逻辑路径称为隧道。
4、GRE
GRE协议是对网络层协议(如IPv4和IPv6)的数据报文进行封装,使这些被封装的数据报文能够在如IP的网络层协议中传输,GRE采用了隧道技术,根据传输协议的不同,可以分为GRE over IPv4和GRE over IPv6两种隧道模式。
5、MPLS
MPLS是一种适用于网络如本申请中的骨干网络的隧道技术,可以在骨干网络上进行标签交换,MPLS能够支持多种网络协议,如IPv4、IPv6、互联网分组交换(InternetPacket Exchange,IPX)协议和无连接网络协议(ConnectionLess Network Protocol,CLNP)等。
6、BIER
是一种基于位索引显式复制的新型组播技术,在入口节点和出口节点之间采用BIER组播隧道的场景中,骨干网络相当于BIER域,通常BIER域中包括三种角色的路由器:接收组播报文的入口路由器为位转发入口路由器(Bit Forwarding Ingress Router,BFIR),离开BIER域的最后一跳路由器为位转发出口路由器(Bit Forwarding Engress Router,BFER),其他中间路由器统称为位转发路由器(Bit Forwarding Router,BFR),其中,BFIR和BFER属于边缘BFR。例如,对应于本申请实施例提供的骨干网络,BFIR设置于入口节点位置,BFER设置于出口节点位置,BFR设置于中间节点位置。采用BIER组播隧道的场景中,组播报文传输是一种无状态的组播转发,由于BFR没有任何组播信息,因此不需要维护组播状态,也不需要建立组播转发树,依靠转发表和组播报文中的比特串(Bit String)来复制和转发。
7、比特串(BitString)
BitString中的bit用来对应BFER的标识,由于BIER域的每个边缘BFR配置有BIER转发路由器标识符(BIER Forwarding Router Identifier,BFR-ID),BFR-ID取值范围为1到65535内的整数,因此,位转发出口路由器的BFR-ID组成的BitString就形成了出口节点集合,BitString中的每个Bit所在的位置或索引用于确定BFER。
8、基于IPv6封装的比特位索引显式复制(Bit Index Explicit ReplicationIPv6encapsulation,BIERv6)
BIERv6是一种新型组播技术,在入口节点和出口节点之间采用BIERv6隧道的场景中,骨干网络通过将出口节点的集合以比特串的方式封装报文中发送给中间节点,中间节点不需要维护组播状态,也无需建立组播分发树,而是根据报文携带的比特串匹配转发表来完成复制和转发。
9、IPv6扩展头
IPv6扩展头是可选报头,IPv6扩展头包括路由头(Routing Header,RH),目的选项头(Destination Options Header,DOH)等。
本申请实施例可以适用于组播网络,该网络包括用户网络和骨干网络,其中,用户网络可以是运行IPv6或IPv4的网络,骨干网络可以是运行MVPN或EVPN的网络。本申请实施例提供的骨干网络可以采用不同的隧道进行报文传输,一个骨干网络可以支持采用一种或多种隧道,在这种网络架构下,用户网络中的组播报文,在进入骨干网络时,可以根据骨干网络采用的隧道对应的封装方式进行封装,报文在离开骨干网络时,以该封装对应的方式进行解封装。图1为本申请实施例提供的一种骨干网络结构示意图,如图1所示,该骨干网络包括设置于入口节点的网络设备100,简记为入口节点100、设置于中间节点的网络设备200,简记为中间节点200和设置于出口节点的网络设备300,简记为出口节点300,其中,入口节点100收到用户网络发送的报文后对该报文进行封装,发送至中间节点200,由中间节点200转发或复制转发后,发送至出口节点300,再由出口节点300对该报文解封装,将解封装后的报文发送给用户网络。在一些实例中,骨干网络采用不同的隧道对应的场景时,分别支持多种封装方式,如支持IP+GRE封装方式、IP封装方式、MPLS封装方式等,随着无状态组播的提出,骨干网络还可以支持使用BIER封装(RFC8279、RFC8296、RFC8556)或者使用BIERv6封装的方式。举例来说,入口节点100可以用IP+GRE的方式对接收到的报文进行封装,报文被封装有IP头+GRE头;或者使用IP进行封装,报文被封装有IP头;或者使用MPLS的方式进行封装,报文被封装有MPLS头。但是入口节点100对报文进行封装后,报文在骨干网络中传输的开销会增大,这会对网络带宽造成一定的压力。如,用户网络中的组播业务是基于IPv6的组播业务,从用户网络中接收到的组播报文属于IPv6报文,入口节点100接收到该IPv6报文后,根据骨干网络采用的隧道为IP隧道,确定使用IPv6封装的方式对接收到的报文进行封装,即在IPv6报文上封装一个IPv6头,因此,该组播报文封装有两个IPv6头,共会占用80字节,相当于进入骨干网络后增加了40字节的传输开销;再如,入口节点100收到的组播报文属于IPv6报文,根据骨干网络采用的隧道为IP隧道,支持IPv6+扩展头的封装方式,因此需要再在该IPv6报文上封装IPv6头+扩展头,其中,扩展头可以是DOH,封装后的IPv6报文的头部长度可达128字节,相当于增加了84字节的传输开销。为了减少报文在骨干网络中的传输开销,在一些实例中,入口节点会将接收到的组播报文中的源地址和目的地址删除,但这种方法会使得组播报文不符合规范格式、容易出现报文错误的问题难以定位、影响方案的部署和使用等问题。因此,本申请实施例提供了一种报文的传输方法,能够在报文格式符合规范的基础上,有效减小骨干网络中报文传输的开销,解决带宽浪费的问题。图2为本申请实施例提供的一种网络架构的示意图,如图2所示,网络架构中包括骨干网络和用户网络,其中,骨干网络中包括入口节点1000、中间节点(包括中间节点2001和中间节点2002)、出口节点(包括出口节点1图2中标为3001、出口节点2图2中标为3002和出口节点3图2中标为3003),用户网络包括用户边缘(Customer Edge,CE)设备(包括CE设备1图2中标为4001、CE设备2图2中标为4002和CE设备3图2中标为4003),用户网络还可以包括连接各CE设备的服务器。在图2提供的网络架构场景中,以CE1向骨干网络发送的报文是封装有IP头的组播报文为例进行说明,入口节点1000对CE设备1发送的组播报文进行封装,同时将组播报文的IP头删除,入口节点1000转发封装后的报文,该封装后的报文经过中间节点2001和中间节点2002转发,最后可以由出口节点1解封装,并封装IP头,得到组播报文,再向用户网络中组播报文的组播地址对应的CE设备发送,如向CE设备2发送。进一步地,若入口节点1000接收到的组播报文中,组播报文的目的地址为组播组地址1,且CE设备2和CE设备3均加入到该组播组地址中,则可以如图2所示,由出口节点1根据组播报文的目的地址,向CE设备2发送组播报文,由出口节点3根据组播报文的目的地址,向CE设备3发送组播报文。本申请实施例提供的方法,可以适用于图2提供的场景,但不以此为限定。
图3为本申请实施例提供的报文的传输方法的流程示意图,如图3所示,该方法包括:
S101、入口节点接收用户边缘设备发送的第一报文,第一报文包含第一报文头和载荷,第一报文头包括组播源组信息。
第一报文是包括组播源组信息的组播报文,其组播源组信息包括组播报文中的源地址S和目的地址,该目的地址是组播组地址,记作G,组播源组信息记作(S,G)。以图2所示场景为例,入口节点1000可以用于接收CE设备1发送的组播报文,该报文可以记作第一报文。入口节点1000接收到的第一报文中的第一报文头可以属于IPv6头或IPv4头,举例来说,第一报文头属于IPv6头,即C-IP Header属于IPv6,表1为IPv6头各字段的示意。
表1
如表1所示,IPv6头包括如下部分:
版本号(Version,Ver):IPv6的版本号为6,Ver占4比特(bit);
传输类型(Traffic Class,TC):用于区分不同的IPv6报文的类别和优先级,TC占8比特(bit);
流标识(Flow Label,FL):一条“流”标识源地址到目的地址的报文,从A源地址到B目的地址的“流”为同一条“流”其报文的流标识相同,FL占20比特(bit);
载荷长度(Payload Length,PL):用于标识报文中除IPv6头之外的其他部分的长度,如果报文封装有扩展头,则PL标识的长度为扩展头加载荷长度,PL占16比特(bit)。
下一个头部(Next Header,NH):可以指示紧跟在本IPv6头后的下一个头部字段,用于说明IPv6头之后其他扩展头的存在和类型,NH占8比特(bit);
跳数极限(Hop Limit,HL):用于设置报文可以经过的路由器数量的上限,可以初始化为一个值,每台路由器在转发报文时将该值减1,减到0则到达极限,丢弃报文,HL占8比特(bit);
源地址(Source Address,SA):承载有发送IPv6报文的用户设备的地址,SA占128比特(bit);
目的地址(Destination Address,DA):承载有接收IPv6报文的用户设备的地址,DA占128比特(bit)。
举例来说,第一报文头属于IPv4头,即C-IP Header属于IPv4。表2为IPv4头各字段的示意,如表2所示,IPv4头包括如下部分:
表2
如表2所示,IPv4头包括如下部分:
版本号(version,Ver):IPv4的版本号为4,设置为0100,Ver占4比特(bit);
报头长度(Internet Header Length,IHL):IHL用来标识IPv4头的长度,以32比特位为单位,最多可以有15个32位字,且有效报头的最小值为5,IHL占4比特(bit);
服务类型(Type of Service,TOS):该字段的前6位被为区分服务字段,后2位是显示拥塞通知字段或指示位,用于表示服务质量,TOS占8比特(bit);
总长度(Total Length):用于标识报文的总长度,单位为字节,通过这个总长度字段和IHL字段,可以确定报文的数据部分的开始位置及长度,进而确定数据部分的起始和结束位置,总长度占16比特(bit);
标识符(Identifier),用于识别分段所属的组,同一组的分段标识符相同,标识符占16比特(bit);
标志(Flags):表示分片相关信息,标志占3比特(bit);
分段偏移(Fragment Offset,FO)用来重排序,用于标识被分片的每个分段相对于原始数据的位置,FO占13比特(bit);
生存时间(Time to Live,TTL)用于标识最大存活时间,报文每经过一台路由器则TTL字段减去1,直到为0被丢弃。通常以跳数为衡量单位,TTL占8比特(bit);
协议(Protocol),用来标识IP层所封装的上层协议类型,协议占8比特(bit);
报头校验和(Header Checksum),该字段根据IP头计算得到的校验和码,用于首部查错,不对数据部分进行校验,报头校验和占16比特(bit);
源地址(Source Address,SA):承载有发送IPv4报文的用户设备的地址,SA占32比特(bit);
目的地址(Destination Address,DA):承载有接收IPv4报文的用户设备的地址,DA占128比特(bit);
可选字段(options)用于提供一些控制功能,可选字段长度可变;
填充(padding)在具有可选字段的情况下,头部长度可能不是32比特(bit)的整数倍,通过在填充字段填入0,补齐32比特(bit)。
IPv4头中的各字段可以如表2所示,也可以没有可选字段和填充字段,不以表2举例为限定。
S102、入口节点根据组播源组信息和对应关系,获取隧道信息,对应关系包括组播源组信息和隧道信息。
其中,隧道信息包括指示报文在骨干网络中传播的隧道的信息,隧道信息在骨干网络采用不同的隧道时,以对应的形式表示在第二报文头中。
在一些实例中,入口节点建立对应关系,回到图2场景中,若入口节点1000接收到CE设备1发送的第一报文,该第一报文头中包括组播源组信息(S1,G1),其中,组播源组信息中的源地址对应CE设备1或者连接CE设备1的服务器的地址,记作S1,组播源组信息中的组地址记作G1,CE设备2和CE设备3均加入了该组播组;或者,若入口节点1000接收到CE设备1发送的第一报文,该第一报文头中包括的组播源组信息是(S1,G2),其中,组播源组信息中的源地址对应CE设备1或者连接CE设备1的服务器的地址,记作S1,组播源组信息中的组地址为G2,CE设备2加入了该组播组,以上是适用于图2场景的举例,但本申请实施例不以图2所示的CE设备为限定,如一些其他的场景中,在基于图2所示的CE设备2和CE设备3上,用户网络中还可以设置有CE设备4、CE设备5等CE设备,入口节点接收到CE设备1发送的第一报文中,第一报文头的组播源组信息是组播源组信息(S1,G3),其中,S1表示组播源组信息中的源地址为CE设备1或者连接CE设备1的服务器的地址,组播源组信息中的组地址为G3,CE设备3和CE设备4均加入了该组播组。从上述举例可以获知,组播源组信息中的组地址G1、G2和G3分别表示不同CE设备加入组播组得到的组播地址。
S103、入口节点根据载荷和隧道信息获得第二报文,第二报文包含载荷和与隧道信息对应的第二报文头,第二报文不包括第一报文头。
基于对应关系确定的隧道信息对应第二报文头,在入口节点和出口节点之间采用不同的隧道对应的场景时,隧道信息与第二报文头可以对应不同的表示方式,如在入口节点和出口节点之间采用IP组播隧道的场景中,如入口节点可以基于IPv6封装,得到的第二报文头包括IPv6头,IPv6头包括与隧道信息对应的源地址和目的地址,其中,目的地址是组播树对应的组播组地址。这种情况下,入口节点建立组播源组信息(S1,G1)与IPv6头中隧道信息(S,D)的对应关系,记作第一对应关系,其中,组播源组信息(S1,G1)参照上例,在此不再展开赘述,隧道信息(S,D),参照图2场景,隧道信息中源地址S对应入口节点,可以记作S-P1,隧道信息的的目的地址D是组播组地址,可以记作D-P1,出口节点1、出口节点2和出口节点3均加入了D-P1对应的组播组,这种情况下,隧道信息可以记作(S-P1,D-P1),或者,源地址对应入口节点,记作S-P1,组地址记作D-P2,出口节点1和出口节点2均加入了D-P2对应的组播组,这种情况下,隧道信息可以记作(S-P1,D-P2),以上是适用于图2场景的举例,但本申请实施例不以图2所示的入口节点和出口节点设置为限定,如基于图2所示的入口节点外,骨干网络中还可以设置有其他的入口节点,这种情况下,隧道信息中源地址对应这个入口节点,可以记作S-P2,组地址记作D-P2,出口节点1和出口节点2加入了D-P2对应的组播组,这种情况下,隧道信息可以记作(S-P2,D-P2)。
对应关系的一种示例,如第一对应关系的一种示例可以如表3所示:
表3
入口节点如果根据第一报文得到的组播源组信息是(S1,G1),则根据第一对应关系,获取的隧道信息是(S-P1,D-P1),第二报文包括与(S-P1,D-P1)对应的第二报文头。如果根据第一报文得到的组播源组信息是(S1,G3),则根据第一对应关系,获取的隧道信息是(S-P2,D-P2),第二报文包括与(S-P2,D-P2)对应的第二报文头。表3是适应上述场景中的一种第一对应关系的举例,具体实施方案并不限定于使用表3。
在入口节点和出口节点之间采用BIERv6组播隧道的的场景中,第二报文头是BIERv6头,BIERv6头包括与隧道信息对应的源地址和目的地址,其中,目的地址是单播地址,或者,BIERv6头可以只包括与隧道信息对应的源地址,不包括目的地址。入口节点建立组播源组信息(S,G)与BIERv6头中隧道信息的对应关系,记作第二对应关系,举例来说,BIERv6头包括与隧道信息对应的源地址和目的地址,该目的地址是单播地址时,可以是入口节点在组播树的下一跳的地址,入口节点的下一跳是中间节点时,该单播地址在报文发送到中间节点,由中间节点根据组播树的下一跳的地址进行更改,直至中间节点向出口节点发送的时,单播地址被更改为出口节点对应的地址。在这种情况下,该隧道信息在报文的传输中可以改变,如入口节点根据组播源组信息(S1,G1)和第二对应关系,获取的隧道信息是(S-P1,D-P1),该隧道信息可以记作第一隧道信息,入口节点根据第一隧道信息(S-P1,D-P1)获得第二报文,第二报文头包括与第一隧道信息对应的源地址S-P1和目的地址D-P1,其中,目的地址D-P1是入口节点在组播树下一跳对应的中间节点的地址,第二报文由下一跳的中间节点接收后,中间节点根据其在组播树的下一跳的地址,假设中间节点的下一跳是一个出口节点,则根据该出口节点的地址得到目的地址,获得一个新的隧道信息,可以记作第二隧道信息,中间节点根据第二隧道信息更新第二报文头中与第二隧道信息对应的目的地址,得到第三报文,中间节点向出口节点发送第三报文,由出口节点接收第三报文后,解封装。再举例来说,第二报文头是BIERv6头,优选地,入口节点建立的第二对应关系包括组播源组信息(S1,G1)与BIERv6头中隧道信息源地址,即BIERv6头只包括与隧道信息对应的源地址,不包括目的地址时,由于BIERv6头不包括目的地址,无需中间节点更改目的地址,中间节点只转发第二报文即可,同理,出口节点上建立的第二对应关系与入口节点相同,包括组播源组信息(S1,G1)与BIERv6头中隧道信息源地址,如S-P1。进一步地,出口节点接收到第二报文后,根据BIERv6头中隧道信息源地址S-P1和第二对应关系,得到组播源组信息(S1,G1),再根据组播源组信息(S1,G1)封装第一报文头,删除BIERv6头得到第一报文。
在入口节点和出口节点之间采用MPLS P2MP隧道的场景中,入口节点建立的第三对应关系包括组播源组信息(S1,G1)和MPLS标签的对应关系,MPLS标签包括第一MPLS标签值,入口节点封装的第二报文头可以是MPLS头,MPLS头中包括与隧道信息对应的MPLS标签,MPLS标签可以以第一MPLS标签值表示,进一步地,MPLS P2MP隧道的场景中对应各节点建立有组播树,如MPLS P2MP树(隧道),入口节点可以根据从第一报文中得到组播源组信息(S,G)与MPLS P2MP树(隧道)的标识建立第四对应关系,并将第四对应关系通告出口节点;入口节点还保存有MPLS P2MP树的所有分叉信息,分叉信息包括MPLS P2MP树(隧道)上每个节点的一个或多个分叉的信息,其中,MPLS P2MP树(隧道)上的节点对应骨干网络中的入口节点、中间节点或出口节点,每个节点的一个或多个分叉对应骨干网络中各节点间的路径,入口节点可以根据MPLS P2MP树(隧道)的分叉信息对应为MPLS P2MP树(隧道)的标识分配第一标签值,以建立MPLS P2MP树(隧道)的标识与第一标签值的第五对应关系,综上,入口节点可以根据组播源组信息(S,G)与MPLS P2MP树(隧道)的标识的第四对应关系,MPLS P2MP树(隧道)的标识与第一MPLS标签值的第五对应关系,建立组播源组信息(S,G)和第一MPLS标签值的第三对应关系。需要说明的是,入口节点发送的第二报文由入口节点在MPLS P2MP树(隧道)中下一个分叉对应的中间节点接收后,中间节点根据其在MPLS P2MP树(隧道)的下一个分叉,更新第二报文头中与隧道信息对应的MPLS标签,得到第三报文,假设中间节点在MPLS P2MP树(隧道)中下一个分叉对应的是出口节点,则中间节点向出口节点发送第三报文,由出口节点接收第三报文后解封装。出口节点可以根据入口节点的通告建立第四对应关系,出口节点上还会建立MPLS P2MP树(隧道)的标识与第二MPLS标签值的第六对应关系,其中,第二MPLS标签值可以是出口点为MPLS P2MP树(隧道)的标识分配的标签值,综上,出口节点根据第四对应关系和第六对应关系,可以建立组播源组信息(S,G)和第二MPLS标签值的第七对应关系。由于MPLS P2MP树(隧道)的标识是确定的,因此,入口节点和出口节点基于MPLS P2MP树(隧道)的标识分别建立的第三对应关系,和第七对应关系,可以对应确定出同一个组播源组信息(S,G)。需要说明的是,不同的出口节点上第七对应关系中对应于组播源组信息如,组播源组信息(S1,G1)的第二MPLS标签值可以不同,只需能在接收到第三报文后,通过本出口节点建立第七对应关系和第三报文头中的第二MPLS标签值确定出组播源组信息(S1,G1)即可。
在入口节点和出口节点之间采用BIER组播隧道的场景中,第二报文头包括上游MPLS标签,隧道信息与第二报文头通过上游MPLS标签对应,如,入口节点封装的第二报文头可以是BIER头+上游MPLS标签。在骨干网络中,入口节点为上游节点,上游MPLS标签为入口节点的MPLS标签,该场景中,入口节点可以建立组播源组信息(S,G)与上游MPLS标签的第八对应关系,如,入口节点建立组播源组信息(S1,G1)与上游MPLS标签的第八对应关系,根据第一报文中的组播源组信息(S1,G1)和第八对应关系确定上游MPLS标签,在封装第二报文的上游MPLS标签中填入相应的标签值;出口节点上建立的第八对应关系包括组播源组信息(S,G)和上游MPLS标签的对应关系,出口节点根据封装在第二报文上的上游MPLS标签确定组播源组信息(S,G),出口节点上建立的第八对应关系可以是根据入口节点通告的参数建立的。
入口节点获得的第二报文可以根据隧道支持的封装格式进行封装,下面通过例举不同封装格式,详细描述入口节点如何获得第二报文。
举例来说,骨干网络可以使用PIM-SSM的信令建立能够运行MVPN的网络,骨干网络支持的隧道中,可以传输封装格式参照RFC6513的12.1.1的报文,如封装有IPv4头的报文,封装有IPv6头的报文、封装有IPv6头+GRE头的报文等。在用户网络中的组播报文发送至入口节点时,入口节点对接到的报文进行封装,入口节点封装的部分主要用于在骨干网络的隧道中传输报文,因此该报文在到达出口节点时,删除该封装的部分,本申请实施例提供的传输方法能够减少入口节点进行封装造成的报文在骨干网络中的传输的开销。图4为本申请实施例提供的一种封装和解封装报文结构示意图,以入口节点封装IPv6头+GRE头为例,如图4所示,入口节点收到的组播报文为如图4(a)所示,该组播报文为第一报文,包括第一报文头和载荷,其中,第一报文头是用户网络中对报文封装并传输报文的,因此可以记作C-IP头(Header),同理,载荷也可以记作C-Payload,入口节点删除第一报文的C-IP Header,并封装第二报文头,第二报文头包括P-IP Header+GRE头,其中,第二报文头适用于在骨干网络中传输,P-IP Header属于IPv6头,如图4(b)所示,入口节点得到的第二报文包括P-IPHeader、GRE头和C-Payload,且,第二报文不包括C-IP Header,第二报文到达出口节点后,如图4(c)所示,出口节点将第二报文的P-IP Header和GRE头删除,封装C-IP Header,相当于出口节点将第二报文恢复为包括C-IP Header和C-Payload、不包括P-IP Header和GRE头的第一报文。在本申请实施例提供的封装方法中,入口节点删除了第一报文头(C-IPHeader),第二报文在骨干网络中传输时,不包括第一报文头,因此减小了第二报文在骨干网络中传输的开销。
进一步地,由于入口节点删除了C-IP Header,第二报文传输至出口节点时,需要在出口节点封装C-IP Header,因此,入口节点删除C-IP Header后,在封装的第二报文头中,应至少包括与隧道信息对应的源地址和目的地址,该目的地址可以是组播地址,以使得出口节点能够根据该隧道信息和出口节点建立的第一对应关系得到C-IP Header的组播源组信息,封装C-IP Header。需要说明的是,第二报文头包括属于IPv6头的P-IP Header+GRE头,适用于入口节点和出口节点之间采用IP组播隧道的场景中,入口节点和出口节点建立的第一对应关系可以参照上例,以及参照表3,如,入口节点根据组播源组信息(S1,G2)和第一对应关系获取的隧道信息是(S-P1,D-P2),第二报文头与隧道信息对应的源地址是S-P1和目的地址是D-P2,同理,出口节点接收到第二报文后,可以根据第二报文头与隧道信息对应的源地址是S-P1、目的地址是D-P2和第一对应关系,得到第一报文头对应的组播源组信息(S1,G2)。
需要说明的是,第一对应关系可以是入口节点和出口节点各自静态配置,也可以由入口节点向出口节点通告,如入口节点向出口节点通告可以通过入口节点向出口节点发送BGP消息实现,BGP消息中包括第一对应关系,其中,BGP消息可以是BGP-MVPN信令或者BGP-EVPN信令,本申请实施例以骨干网络是运行MVPN的网络为例,BGP消息是BGP-MVPN信令,实际应用中,实施方案并不限定于使用BGP-MVPN。
下面以第一报文的第一报文头包括C-IP Header,C-IP Header属于IPv6头,第二报文的第二报文头包括P-IP Header+GRE头,P-IP Header属于IPv6头进行说明,入口节点删除如图4(a)所示的第一报文的C-IP Header,入口节点封装第二报文头,第二报文头包括P-IP Header和GRE头,封装后得到的第二报文如图4(b)所示,包括P-IP Header、GRE头和C-Payload。下文示例中,入口节点在封装第二报文头即P-IP Header和GRE头时,各字段中填入内容的一种可能的示例如下:
P-IP Header的Ver:IPv6的版本号为6。
P-IP Header的TC:将C-IP Header中的TC字段拷贝到P-IP Header的TC字段中,或者根据本地配置策略设置TC值,如本地配置策略中TC值等于1,则设置为1。
P-IP Header的FL:将C-IP Header中的FL字段拷贝到P-IP Header的FL字段中,或者根据本地配置策略设置FL值。
P-IP Header的PL:可以根据C-IP Header中的PL字段值加上GRE头的长度得到。
P-IP Header的NH:指示紧跟着的下一个头部字段,即指示GRE头。
P-IP Header的HL:将C-IP Header中的HL字段拷贝到P-IP Header的HL字段中,或者根据本地配置策略设置HL值。
P-IP Header的SA和DA:通过C-IP Header中的SA字段和DA字段和对应关系,设置SA字段和DA字段,如,可以通过C-IP Header中的SA字段和DA字段得到组播源组信息(S1,G2),根据组播源组信息(S1,G2)和第一对应关系得到隧道信息是(S-P1,D-P2),P-IPHeader的SA字段填入S-P1,P-IP Header的DA字段填入D-P2。
GRE头的Protocol:根据C-IP Header中的NH值转换出GRE头的Protocol值,如,C-IP Header中的NH为4、指示C-Payload是带有IPv4头的报文,GRE头的Protocol值可以根据格式设置为0x0800。
封装第二报文头时各字段的设置可以静态配置,本地配置策略可以是入口节点对不同字段配置预设值,如本地配置策略中对TC字段配置的预设值等于1。
进一步地,入口节点可以向出口节点通告指示信息,指示信息用于指示还原组播源组信息,如,指示信息可以指示出口节点根据第一对应关系,以及出口节点获取的第二报文头对应的隧道信息,获得组播源组信息,并根据组播源组信息,在封装第一报文头时,填入C-IP Header的SA字段和DA字段的内容,相当于还原了入口节点删除的第一报文头的组播源组信息。进一步地,入口节点还可以向出口节点通告删除还原指示信息,该删除还原指示信息可以进一步指示出口节点删除第二报文头,并根据第二报文头的字段或本地配置策略得到第一报文头中各字段需设置的内容,如指示出口节点根据GRE头的Protocol字段得到第一报文头中的NH字段的值等。
需要说明的是,出口节点接收到指示信息后,可以保存指示信息,在接收到第二报文后,根据指示信息和第二报文得到第一报文。可选的,入口节点和出口节点间可以建立关系,建立关系之后,入口节点可以通知出口节点采用与入口节点相同的封装方式,对第二报文进行解封装,还可以通知出口节点,入口节点接收到的第一报文的第一报文头对应的封装方式,以使得出口节点根据第一报文头对应的封装方式封装得到第一报文,这种封装方法可以定义为紧凑型(compact)封装方法,或称为删除还原(delete-restore)的封装方法。
S104、入口节点通过与隧道信息对应的隧道发送第二报文。
入口节点可以通过隧道信息(S-P1,D-P2)对应的隧道发送第二报文,如果第二报文头中IPv6头的目的地址D-P2是组播树对应的组播组地址,回到图2所示的场景中,出口节点1和出口节点2均加入了D-P2对应的组播组,相当于出口节点1和出口节点2接收到第二报文时,将第二报文头删除,并封装第一报文头,得到第一报文。
隧道信息的目的地址也可以为入口节点在组播树的下一跳的地址,如回到图2所示的场景中,在入口节点1000、中间节点2001、中间节点2002、出口节点1和出口节点3之间采用BIERv6组播隧道的情况,参照上例中在入口节点和出口节点之间采用BIERv6组播隧道的的场景的举例,如果目的地址为下一跳节点单播地址的情况下,入口节点通过与隧道信息对应的隧道发送第二报文,到达对应的出口节点时,对应的出口节点接收到的可能是第三报文,对应的出口节点可以根据第三报文中的隧道信息得到组播源组信息,封装第一报文头;入口节点通过与隧道信息对应的隧道发送的第二报文中,第二报文头如果对应隧道信息源地址不包括目的地址,则出口节点接收到的是第二报文,出口节点根据第二对应关系和隧道信息源地址得到组播源组信息,封装第一报文头。
本申请实施例以P-IP Header和C-IP Header头均属于IPv6头,入口节点删除如图4(a)中C-IP Header头,并在如图4(b)所示封装P-IP Header和GRE头,其效果等同于将C-IPHeader“替换”成了P-IP Header和GRE头,而不是在报文进入骨干网络时增加封装的P-IPHeader和GRE头,这样可以减少报文在骨干网络中传输的开销。
图5为本申请实施例提供的报文的另一种传输方法的流程示意图,如图5所示,该方法包括:
S105、出口节点接收第二报文,第二报文包括载荷和与隧道信息对应的第二报文头。
出口节点接收如图4(b)所示的第二报文,第二报文包括C-Payload、P-IP Header和GRE头,不包括C-IP Header。出口节点如图4(c)所示,将第二报文的P-IP Header和GRE头删除,并封装C-IP Header,得到包括C-IP Header和C-Payload的第一报文,相当于出口节点还原了第一报文。本申请实施例提供的封装方法能够向CE设备发送符合规范格式的报文。
S106、出口节点根据第二报文头对应的隧道信息和对应关系,获取组播源组信息,对应关系包括隧道信息和组播源组信息。
该对应关系可以是第一对应关系,包括隧道信息和组播源组信息,出口节点根据第二报文头对应的隧道信息和第一对应关系,可以得到组播源组信息。回到图2所示的场景中,在入口节点1000、中间节点2001、中间节点2002、出口节点1和出口节点3之间采用IP组播隧道的场景中,如,出口节点3接收到第二报文,根据第二报文头得到的隧道信息(S-P1,D-P2),其中,第二报文头包括的目的地址是组播树对应的组播组地址,其中,组播树包括入口节点1000、出口节点1和出口节点3,出口节点3可以根据隧道信息(S-P1,D-P2)和第一对应关系,得到组播源组信息(S1,G2)。
或者,在入口节点1000、中间节点2001、中间节点2002、出口节点1和出口节点3之间采用BIERv6组播隧道的场景中,由于入口节点到中间节点2001、中间节点2001到中间节点2002,中间节点2002到出口节点1、中间节点2002到出口节点3的报文,均属于IPv6头,且IPv6头中的目的地址均是单播地址,入口节点1000向中间节点2001发送是第二报文目的地址是中间节点2001的,中间节点2001向中间节点2002发送的时候第三报文目的地址更改为中间节点2002的,中间节点向出口节点1发送的第四报文的目的地址更改为出口节点1的,中间节点2002向出口节点3发送的时候第五报文目的地址更改为出口节点3的。但是对于出口节点1和出口节点3来说,接收到的第四报文和第五报文都是“BIERv6隧道”报文,根据报文的隧道信息中的源地址和第二对应关系确定组播源组信息,即可得到第一报文,由于第二对应关系是组播源组信息(S,G)与隧道信息中源地址的对应关系,不论报文中的目的地址是否更改,出口节点只要根据隧道信息的源地址和第二对应关系,就可以得到组源组信息(S,G),并可以据此封装第一报文头,得到第一报文。
需要说明的是,第一对应关系和第二对应关系可以是出口节点静态配置,也可以是获取入口节点通告的第一对应关系或第二对应关系后保存的,出口节点可以接收入口节点发送的BGP消息,BGP消息包括第一对应关系或BGP消息包括第二对应关系。其中,BGP消息为BGP-MVPN信令或者BGP-EVPN信令。
进一步地,出口节点接收入口节点通告的指示信息,指示信息用于指示还原组播源组信息。出口节点在接收到第二报文时,可以根据指示信息的指示还原组播源组信息,基于组播源组信息中的源地址设置第一报文头(下例中的C-IP Header)的SA字段,基于组播源组信息中的组播组地址设置第一报文头(下例中的C-IP Header)的DA字段。
S107、出口节点根据组播源组信息和载荷获得第一报文,第一报文包含第一报文头和载荷,第一报文头包括组播源组信息,第一报文不包括第二报文头。
下面以P-IP Header和C-IP Header都属于IPv6头为例进行说明,出口节点收到的第二报文的第二报文头包括IPv6头和GRE头,删除如图4(b)中的P-IP Header头和GRE头,封装C-IP Header得到如图4(c)所示的第一报文,第一报文包括C-IP Header和C-Payload,下文示例中,出口节点在封装第一报文头即C-IP Header时,封装C-IP Header的各字段的一种示例如下:
C-IP Header的Version:IPv6的版本号为6。
C-IP Header的TC:将P-IP Header中的TC字段拷贝到C-IP Header的TC字段中,或者根据本地配置策略设置TC值,如果入口节点根据本地配置策略在P-IP Header中的TC字段设置为1,出口节点拷贝1即可,不用恢复第一报文进入骨干网络时的TC字段内容;
C-IP Header的FL:将P-IP Header中的FL字段拷贝到C-IP Header的FL字段中,或者根据本地配置策略设置FL值。
C-IP Header的PL:可以根据P-IP Header中的PL字段值减去GRE头的长度得到。
C-IP Header的NH:指示紧跟着的下一个头部字段,需要根据GRE头中的Protocol字段做相应的转换获得,如,GRE头的Protocol值为0x0800,指示C-Payload带有IPv4,则NH为4。
C-IP Header的HL:将P-IP Header中的HL字段拷贝到C-IP Header的HL字段中,或者根据本地配置策略设置HL值。
C-IP Header的SA和DA:通过P-IP Header中的SA字段和DA字段和对应关系设置SA字段和DA字段,如,可以通过P-IP Header中的SA字段和DA字段得到隧道信息(S-P1,D-P2),查找第一对应关系得到组播源组信息(S1,G2),C-IP Header的SA字段填入S1,C-IP Header的DA字段填入G2。
在一种示例中,封装第一报文头时各字段的设置可以是出口节点静态配置的,用于设置字段的本地配置策略也可以是提前预设的。在另一种示例中,出口节点根据入口节点发送的指示信息在封装时填入第一报文头中组播源组信息的对应字段,或者,出口节点根据入口节点发送的删除还原指示信息的指示,来确定第一报文头中的字段是如何根据第二报文头的字段或本地配置策略进行设置的。在另一种示例中,用于设置字段的本地配置策略是提前预设的,出口节点接收到指示信息,可以根据指示信息指示的对应关系和配置的其他信息设置相应字段。进一步地,出口节点接收到指示信息后,可以先保存,在接收到第二报文时,根据指示信息的指示得到第一报文。举例来说,出口节点如果通过BGP-MVPN信令收到指示信息,该指示信息可以是第一对应关系或第二对应关系。出口节点也可以通过预先设置的配置将第二报文恢复为第一报文。本申请实施例仅为举例说明,不以举例为限定。
本申请实施例提供的出口节点可以根据接收的第二报文得到第一报文,再向CE设备发送第一报文,能够保证发送至用户网络的报文与骨干网络入口节点接收到的报文格式一致,这样一来,用户网络接收到的报文格式规范,不影响网络链路上的报文分析器对该报文进行解析,从而保障报文传输方案的可维护性,(如便于定位报文出错的问题),不会影响报文传输方案的部署和应用。
在一些实例中,骨干网络使用PIM-SSM的信令建立的隧道类型作为MVPN的隧道承载,其报文的封装格式可以参照RFC6513的12.1.1的封装格式,图6为本申请实施例提供的另一种封装和解封装报文结构示意图,如图6所示,入口节点收到的报文为如图6(a)所示的格式,第一报文包括第一报文头(C-IP Header)和C-Payload,C-IP Header属于IPv6头。入口节点删除接收到的第一报文的C-IP Header,封装第二报文头,如图6(b)所示,第二报文包括C-Payload、P-IP Header和GRE头,且,第二报文不包括C-IP Header。P-IP Header属于IPv4头。第二报文到达出口节点后,出口节点删除第二报文的P-IP Header和GRE头,封装C-IP Header,得到如图6(c)所示的第一报文,第一报文包括C-IP Header和C-Payload。
下面以第一报文头(C-IP Header)属于IPv6头、第二报文头为P-IP Header和GRE头,其中P-IP Header属于IPv4头为例进行说明,入口节点收到的第一报文后删除C-IPHeader,入口节点确定第二报文头包括IPv4头和GRE头,其中,IPv4头包括与隧道信息对应的源地址和目的地址,隧道信息对应的源地址和目的地址可以根据C-IP Header中的组播源组信息和第一对应关系确定,其中,第一对应关系可以参照上述实施例,在此不再赘述,入口节点封装IPv4头和GRE头得到第二报文,如图5(b)所示,第二报文包括C-Payload、P-IPHeader和GRE头,下文的字段示例中,将第一报文头记作C-IP Header,将第二报文头的IPv4头记作P-IP Header,封装P-IP Header和GRE头时各字段的一种示例如下:
P-IP Header的Ver:IPv4的版本号为4;
P-IP Header的IHL:可以按照IPv4头的要求设置为5;
P-IP Header的TOS:将C-IP Header中的TC字段(8bit)拷贝到P-IP Header的TOS字段(8bit)中,或者根据本地配置策略设置TOS值;
P-IP Header的Total Length:可以按照C-IP Header中的Payload Length字段值,再加上GRE头的长度和IPv4头的长度得到;
P-IP Header的Identifier:按照IPv4头的要求设置,考虑不分段的情况设置为0;
P-IP Header的Flags:按照IPv4头的要求设置,考虑不分段的情况设置为010(二进制);
P-IP Header的FO:按照IPv4头的要求设置,考虑不分段的情况设置0;
P-IP Header的TTL:将C-IP中的HL字段(8bit)拷贝到P-IP的TTL字段(8bit)中,或者根据本地配置策略设置TTL值;
P-IP Header的Protocol:根据C-IP中的Next Header值进行设置,比如C-IPHeader中的Next Header为17,指示C-Payload是带有UDP头部的净荷,P-IP头的Protocol值设置为17;
P-IP Header的Header Checksum:该字段根据IPv4头计算得到的校验和设置,或者,设置为0;
P-IP Header的SA和DA:通过C-IP Header中的SA字段和DA字段和对应关系设置SA字段和DA字段,可参照上例。
GRE头的Protocol:根据C-IP中的NH值转换出GRE头的Protocol值。
封装第二报文头时各字段的设置可以静态配置,本地配置策略也可以是提前预设,此处例举的数值均为示例,具体的字段设置可以根据实际使用场景的需求进行调整,除了版本号外其他数值不以此为限定。
本实施例中P-IP Header属于IPv4头、C-IP Header属于IPv6头,所以入口节点删除C-IP Header后封装P-IP Header和GRE头,如图6(b)中所示,等同于将C-IP Header“替换”成了P-IP Header,在骨干网络中传输到达出口节点后,出口节点再将P-IP Header和GRE头删除,恢复C-IP Header,出口节点可以通过前述MVPN信令传递对应关系和指示信息,指示信息用于指示还原组播源组信息,骨干网络中的封装和解封装是由入口节点和出口节点配合完成的,以此减少报文在骨干网络中传输的开销。需要说明的是,第一对应关系可以是出口节点静态配置,也可以是获取入口节点通告的第一对应关系后预存的,通过第一对应关系和隧道信息得到组播源组信息,并设置第一报文头的方法可以是出口节点配置,也可以是接收指示信息后保存的。
下文的字段示例中,将第一报文头记作C-IP Header,出口节点删除P-IP Header和GRE头,封装C-IP Header时各字段的一种示例如下:
C-IP Header的Version:IPv6的版本号为6;
C-IP Header的TC:将P-IP Header中的TOS字段拷贝到C-IP Header的TC字段中,或者根据本地配置策略设置TC值;
C-IP Header的FL:根据本地配置策略设置FL值;
C-IP Header的PL:可以根据P-IP Header中的PL字段值减去GRE头的长度、再减去IPv4头长度得到;
C-IP Header的NH:将P-IP Header中中的Protocol字段(8bit)拷贝到C-IPHeader的Next Header字段中(8bit);
C-IP Header的HL:将P-IP Header中的TTL字段拷贝到C-IP Header的HL字段中,或者根据本地配置策略设置HL值;
C-IP Header的SA和DA:通过P-IP Header中的SA字段和DA字段和对应关系设置SA字段和DA字段,方法参照上例,在此不再赘述。
封装第一报文头时各字段的值,可以是出口节点静态配置的,用于设置字段的本地配置策略也可以是提前预设的。封装第一报文头时,各字段还可以是出口节点根据入口节点发送的指示信息或删除还原指示信息的指示来确定的。
进一步地,IPv4头包括与隧道信息对应的源地址和目的地址,除了以上示例所列举的DA字段为组播树对应的组播组地址,DA字段还可以为入口节点在组播树的下一跳的地址。
以上示例以第一报文头(C-IP Header)属于IPv6头,第二报文头中的P-IP Header分别属于IPv6头和IPv4头举例,第一报文头(C-IP Header)属于IPv4头,第二报文头中的P-IP Header属于IPv6头或IPv4头的情况,可以参照上述示例,类推得到第二报文头中各字段的值和恢复第一报文头时各字段的值,不再展开详述,同理,本申请实施例提供所有示例,均以第一报文头(C-IP Header)均属于IPv6头为例进行说明,第一报文头(C-IP Header)属于IPv4头的情况可以根据本申请提供的示例类推,本申请实施例中不再赘述,但第一报文头(C-IP Header)属于IPv4头的情况也在本申请保护范围之内。
在一些实例中,骨干网络的报文的封装可以参照RFC6513的12.1.3的封装方式,下面以第一报文头(C-IP Header)属于IPv6头,第二报文头为MPLS头,记作P-MPLS头,MPLS头可以包括三层标签,本申请实施例以MPLS头包括一层标签为例进行说明,进一步地,C-Payload中可以包括一层IPv4头或IPv6头。图7为本申请实施例提供的另一种封装和解封装报文结构示意图,回到图2的场景中,以CE设备1向入口节点发送的第一报文的第一报文头IPv6头,且C-Payload中包括IPv6头为例,入口节点接收到如图7(a)所示的第一报文,删除第一报文的C-IP Header后,进行MPLS封装,即封装第二报文头(P-MPLS头),得到如图7(b)所示的第二报文,第二报文包括P-MPLS头和C-Payload,出口节点接收到第二报文后删除P-MPLS头,封装C-IP Header得到如图7(c)所示的第一报文。
入口节点进行MPLS封装,本申请实施例进行MPLS封装,表4为MPLS头包括的字段。
标签值Label 实验位Exp 栈底位S 生存时间TTL
表4
如表4所示,MPLS头包括如下部分:
标签值Label:用于设置标签号,Label占20比特(bit);
实验位Exp:可用于代表服务质量,Exp占3比特(bit);
栈底位S:用来表示当前标签是否位于栈底,通过栈底位设置数值不同,多个标签可以编入同数据包中,形成标签栈,如IPv6报文可以确定为S为0的标签栈数据包,MPLS最大可以在数据包中封装3次标签,S占1比特(bit);
生存时间TTL:C-IP Header中的TTL字段或者Hop Limit字段值复制到标签栈中的TTL字段中,TTL占8比特(bit)。
与隧道信息对应的第二报文头为MPLS头,该MPLS头可以参照表4的格式,MPLS头包括组播树对应的MPLS标签或者MPLS头包括入口节点在组播树的下一跳节点的MPLS标签,如通过标签值指示入口节点在组播树的下一跳节点或组播树。由于隧道是通过逐跳的节点基于协议建立起来的,回到图2场景中,假设隧道是入口节点1000,及其下一跳的中间节点2001、中间节点2001的下一跳节点2002以及中间节点2002的下一跳的出口节点1建立起的,且支持建立RFC6513协议,RFC6513协议建立的时候,骨干网络使用相同的控制面的隧道标识,但各节点会基于隧道标识分配不同的数据面标识,其中,控制面用于控制和管理所有网络协议的运行,数据面用于进行数据处理和处理数据的转发,因此,MPLS标签在骨干网络中每一跳的MPLS标签都不同。入口节点参照上述实施例中的方法建立第三对应关系。举例来说,MPLS头中的标签值指示入口节点在组播树的下一跳节点时,入口节点1000可以为下一跳节点即中间节点2001分配10001的标签;该标签值指示组播树时,入口节点可以针对组播源组信息(S1,G1)在MPLS标签分发树中,将所有节点为(S1,G1)对应的组播树分配均为10001的标签。
需要说明的是,入口节点获得的组播源组信息,既可以从要删除的C-IP Header中获取,也可以从C-Payload中包含的IPv6头中获取,优选地,入口节点获得的组播源组信息从C-IP Header中获取组播源组信息。
下文的字段设置示例中,将第一报文头记作C-IP Header,将第二报文头(MPLS头)记作P-MPLS头,封装P-MPLS头时各字段的设置的一种示例如下:
P-MPLS头的Label:根据C-IP Header中的SA字段和DA字段和第三对应关系,对应获得对应的MPLS标签,设置MPLS标签字段,如设置10001;
P-MPLS头的Exp:按照P-MPLS头的要求,设置一个值,代表服务质量;
P-MPLS头的S:根据P-MPLS头包括一层标签,设置为1;
P-MPLS头的TTL:将C-IP中的HL字段(8bit)拷贝到P-IP的TTL字段(8bit)中,或者根据本地配置策略设置TTL值。
封装P-MPLS时各字段的设置可以静态配置,本地配置策略也可以是提前预设,此处例举的设置数值均为示例,具体的字段设置数值可以根据实际使用场景的需求进行调整,不以上例要求的数值为限定。
本实施例中C-IP Header属于IPv6头,所以入口节点删除C-IP Header后封装P-MPLS头的效果,等同于将C-IP Header“替换”成了MPLS头,在骨干网络中,第二报文传输到达出口节点后,出口节点再将如图7(b)中所示的P-MPLS头删除,封装如图7(c)所示的C-IPHeader得到第一报文。出口节点可以接收入口节点通过BGP-MVPN信令或BGP-EVPN传递的指示信息获取第四对应关系和还原组播源组信息,出口节点获取入口节点通告的第四对应关系后,可以根据出口节点建立的第六对应关系和接收的第四对应关系,得到第七对应关系并保存,入口节点建立第三对应关系和出口节点建立第七对应关系可以参照上述举例,在此不再赘述。出口节点也可以预存指示信息,接收到指示信息后预存,并在接收到第二报文时,根据指示信息指示的还原组播源组信息和第七对应关系得到第一报文头。骨干网络中的封装和解封装是由入口节点和出口节点配合完成的,以此减少报文在骨干网络中传输的开销。
下文的字段设置示例中,将第二报文头记作P-MPLS头,第一报文头记作C-IPHeader,封装C-IP Header时各字段的设置的一种示例如下:
C-IP Header的Version:IPv6的版本号为6;
C-IP Header的TC:根据本地配置策略设置TC值;
C-IP Header的FL:根据本地配置策略设置FL值;
C-IP Header的PL:可以按照C-Payload中的IPv4或者IPv6头部进行设置,比如C-Payload中包括的封装头属于IPv6头,则可以通过C-Payload中的IPv6头的Payload Length字段再加上IPv6头长度40得到作为C-IP头的Payload Length字段,同理,如果C-Payload中包括的封装头属于IPv4头,则可以通过C-Payload中的IPv4头的Payload Length字段再加上IPv4头长度得到作为C-IP头的Payload Length字段;
C-IP Header的NH:需要根据C-Payload中的IPv4头或者IPv6头进行设置,比如C-Payload中包括的封装头属于IPv6头,则Next Header字段设置41,同理,如果C-Payload中包括的封装头属于IPv4头,则Next Header字段设置4;
C-IP Header的HL:根据本地配置策略设置HL值;
C-IP Header的SA和DA:通过MPLS标签值和第七对应关系,设置SA字段和DA字段,如,可以通过MPLS标签值为10001从第三对应关系得到组播源组信息(S1,G2),对应设置SA字段和DA字段。
图8为本申请实施例提供的另一种封装和解封装报文结构示意图,在一些实例中,骨干网络的报文的封装格式可以参照draft-xie-bier-ipv6-encapsulation-09的封装方式,如图8所示,入口节点收到的报文为如图8(a)所示,第一报文包括C-IP Header和C-Payload,入口节点删除接收到的第一报文的C-IP Header,封装P-IP Header和扩展头,得到第二报文头,如图8(b)所示,第二报文包括P-IP Header、扩展头和C-Payload,且,第二报文不包括C-IP Header,第二报文到达出口节点后,出口节点删除第二报文的P-IP Header和扩展头,并封装C-IP Header,得到第一报文,如图8(c)所示,第一报文包括C-IP Header和C-Payload。
入口节点进行P-IP Header和扩展头封装,目前已经定义和使用的IPv6扩展头包括逐跳选项头(Hop-by-hop Options Header)、DOH、路由头(Routing Header)、分片头(Fragment Header)、认证头(Authentication Header)和封装安全有效载荷头(ESP),本申请实施例以扩展头为DOH举例进行说明。DOH由于承载特别针对数据包目的地址的可选信息,本例中,DOH通过无状态转发的BIER选项或BitString承载目的地址的可选信息,如图2所示的场景中,有4个边缘BFR,每个边缘BFR需要配置1~256的唯一值,其中,有3个BFER,这3个目的节点集合就可以设置256比特(bit)或32字节的BitString来表示,BitString中的每个bit用来标识1个BFER,例如图2中的出口节点1的BFR-ID=1,出口节点2的BFR-ID=2,出口节点3的BFR-ID=3,其中,BFR-ID=1在BitString中可以用最右位的bit为1来标识,BFR-ID=2在BitString中可以用从右往左第2个bit为1来标识1,BFR-ID=3在BitString从右往左第3个bit为1来标识。本申请实施例中,目标地址可以设置在IPv6头的DA字段中,在一些未封装有目标地址的报文中,BitString中不同bit标识的BFER也可以用于指示报文要离开骨干网络发往CE设备时对应的出口节点。
以C-IP Header属于IPv6头,P-IP Header属于IPv6头,扩展头是DOH,DOH含有用于无状态转发的BIER选项或BitString为例。下文的字段设置示例中,将第一报文头记作C-IPHeader,第二报文头包括P-IP Header和DOH,封装P-IP Header和DOH时各字段的设置的一种示例如下:
P-IP Header的Ver:IPv6的版本号为6;
P-IP Header的TC:将C-IP Header中的TC字段拷贝到P-IP Header的TC字段中,或者根据本地配置策略设置TC值,如本地配置策略中TC值等于1,则设置为1;
P-IP Header的FL:将C-IP Header中的FL字段拷贝到P-IP Header的FL字段中,或者根据本地配置策略设置FL值;
P-IP Header的PL:Payload Length字段的设置可以根据C-IP Header中的Payload Length字段值加上DOH的长度得到;
P-IP Header的NH:指示紧跟着的下一个头部字段,本例中为指示DOH;
P-IP Header的HL:将C-IP Header中的HL字段拷贝到P-IP Header的HL字段中,或者根据本地配置策略设置HL值;
P-IP Header的SA和DA:通过C-IP Header中的SA字段和DA字段和对应关系,设置SA字段和DA字段,如,可以通过C-IP Header中的SA字段和DA字段得到组播源组信息(S1,G2),根据第一对应关系得到隧道信息是(S-P1,D-P2),SA字段填入S-P1,DA字段填入D-P2;
DOH:含有用于无状态转发的BIER选项或BitString。
需要说明的是,上述字段设置以DOH举例,在属于IPv6头的P-IP Header包含的其他类型扩展头中,若有需要设置Next Header字段的,则将C-IP Header中的Next Header字段拷贝到其中。属于IPv6头的P-IP Header包含的其他类型扩展头中的各字段的设置参考draft-xie-bier-ipv6-encapsulation,在此不再展开详述。
进一步地,出口节点得到的第二报文头包括IPv6头和IPv6扩展头,IPv6头中包括与隧道信息对应的源地址和目的地址,其中,目的地址为入口节点在组播树的下一跳的地址或者目的地址为组播树对应的组播组地址。
出口节点收到的第二报文的第二报文头包括P-IP Header和DOH,删除如图8(b)所示的P-IP Header和DOH,封装C-IP Header,得到如图8(c)所示的第一报文,下文的字段设置示例中,将第一报文头记作C-IP Header,第二报文头包括的P-IP Header属于IPv6头,封装C-IP Header的各字段的设置的一种示例如下:
C-IP Header的Version:IPv6的版本号为6;
C-IP Header的TC:将P-IP Header中的TC字段拷贝到C-IP Header的TC字段中,或者根据本地配置策略设置TC值,如果入口节点根据本地配置策略在P-IP Header中的TC字段设置1,出口节点拷贝1即可,不用恢复第一报文进入骨干网络时的TC字段内容;
C-IP Header的FL:将P-IP Header中的FL字段拷贝到C-IP Header的FL字段中,或者根据本地配置策略设置FL值;
C-IP Header的PL:可以根据P-IP Header中的PL字段值减去DOH的长度得到;
C-IP Header的NH:指示紧跟着的下一个头部字段,如果C-Payload中包含的封装头属于IPv6头,则NH为41;
C-IP Header的HL:将P-IP Header中的HL字段拷贝到C-IP Header的HL字段中,或者根据本地配置策略设置HL值;
C-IP Header的SA和DA:通过P-IP Header中的SA字段和DA字段和对应关系,设置SA字段和DA字段,如,可以通过P-IP Header中的SA字段和DA字段得到隧道信息是(S-P1,D-P2)根据第一对应关系得到组播源组信息(S1,G2),C-IP Header的SA字段填入S1,C-IPHeader的DA字段填入G2。
在一种示例中,封装第一报文头时,各字段的设置可以是出口节点静态配置的,用于设置字段的本地配置策略也可以是提前预设的。在另一种示例中,出口节点根据入口节点发送的指示信息在封装时填入第一报文头中组播源组信息的对应字段,或者,出口节点根据入口节点发送的删除还原指示信息的指示来确定第一报文头中的字段是如何根据第二报文头的字段或本地配置策略进行设置的。在另一种示例中,用于设置字段的本地配置策略是提前预设的,出口节点接收到的指示信息,可以根据指示信息指示的对应关系和配置的其他信息设置相应字段。进一步地,出口节点接收到指示信息后,可以先保存,在接收到第二报文时,根据指示信息的指示还原第一报文。举例来说,出口节点如果通过BGP-MVPN信令收到指示信息,该指示信息可以指示第一对应关系。出口节点也可以通过预先设置的配置将第二报文恢复为第一报文。本申请实施例仅为举例说明,不以举例为限定。
进一步地,本申请实施例提供一种能够适用于上述各种封装格式的静态配置指示信息的示例,入口节点可以动态地为同一虚拟路由转发(Virtual Routing Forwarding,VRF)下所有的组播流量,即为组播源组信息(S,G)分配对应的隧道信息。可选的,入口节点进行配置时,还可以在对应关系中表示出组播流量所属的VRF,如可以用的标识,例如,该标识为VRF1。组播流量所属的VRF的标识可以是VRF的名字、VRF的ID号对应的整数来标识,需要说明的是,在报文发送的过程中,该VRF标识应满足报文传输协议的要求,以VRF标识可以是为路由表(route-target)标识,可参考RFC4364定义,VRF标识记作VRF1,图9为本申请实施例提供的一种配置方法,如图9所示,该方法包括:
S201、入口节点配置VRF,建立对应关系。
其具体的配置如下所示:
即,入口节点使能图8(a)中C-IP Header的SA字段、DA字段弹出,并从本地所有(locator a1)的地址范围内动态分配地址,以对应每个组播流量,例如,入口节点得到的对应关系可以是(2001:A:1:1::1001,VRF1,S1v6,G1v6),其中,图8(b)P-IP Header的IPv6地址=2001:A:1:1::1001,即第二报文头中的隧道信息为2001:A:1:1::1001,VRF1可以是根据RFC4364定义的路由表对象,C-IP Header的组播源组信息中源地址为S1v6,即第一报文头的SA字段为S1v6,C-IP Header的组播源组信息中目的地址,即组播地址为G1v6,即第一报文头的DA字段为G1v6。
S202、入口节点向出口节点通告对应关系。
以入口节点为A节点,出口节点为D节点为例,A节点与D节点间可以相互建立BGP邻居关系,A节点可以向出口节点发送BGP消息,BGP消息包括对应关系,如,A节点可以发送BGP-MVPN的S-PMSI A-D路由消息,该S-PMSI A-D路由消息包含(VRF标识,C-IP Header的SA字段,C-IP Header的DA字段,P-IP Header的IPv6地址),其中,C-IP Header的SA字段是组播源组信息中源地址S1v6,C-IP Header的DA字段是组播源组信息中目的地址G1v6,P-IPHeader的IPv6地址是隧道信息的地址2001:A:1:1::1001。A节点还可以在该S-PMSI A-D路由消息中携带删除还原指示信息,该删除还原指示信息可以用于指示D节点还原第一报文头的方法。A节点可以通过BGP属性值类型长度(Type length value,TLV)来携带此指示信息。
S203、出口节点根据通告建立组播源组信息与隧道信息的对应关系。
如,入口节点为A节点,出口节点为D节点,D节点收到上述消息,建立起C-IP和P-IP的SA字段和DA字段的对应关系。例如D节点上配置有VRF1标识,VRF1是本机VRF1的标识,可以是VRF1的名字,或者VRF1的ID号整数值,D节点根据消息中的VRF标识和自身配置的VRF标识,确定该消息对应哪个VRF,由于D节点的VRF标识为VRF1,与该消息中的VRF标识相同,则D节点可以根据消息中的(VRF标识,C-IP Header的SA,C-IP Header的DA,P-IP Header的IPv6地址),确定VRF1下的如下对应关系:(2001:A:1:1::1001,VRF1,S1v6,G1v6),D节点保存该对应关系。
S204、入口节点收到第一报文,并根据对应关系封装报文,得到第二报文。
如,入口节点收到图2中的CE设备1发送的第一报文时IPv6头组播报文,根据组播源组信息和入口节点中的对应关系即(VRF标识,C-IP Header的SA字段,C-IP Header的DA字段,P-IP Header的IPv6地址)封装得到第二报文,例如该IPv6组播报文的第一报文头中SA=S1v6、DA=G1v6,根据对应关系,可以在第二报文头的隧道信息中对应设置P-IPHeader的IPv6地址为2001:A:1:1::1001,封装第二报文头并删除第一报文头,得到第二报文。
S205、出口节点收到第二报文,删除第二报文头,封装第一报文头,得到第一报文。
出口节点收到第二报文,该第二报文可以是本申请实施例提供的各种实例中的封装格式的报文,第二报文的隧道信息若设置为2001:A:1:1::1001,根据出口节点上预存的(VRF标识,C-IP Header的SA字段,C-IP Header的DA字段,P-IP Header的IPv6地址)的对应值,如(S1v6,G1v6,2001:A:1:1::1001)可以得到组播源组信息(S1v6,G1v6),即组播源组信息的源地址为S1v6,组播源组信息的组播地址为G1v6,设置第一报文头相应字段,得到第一报文,并向CE设备进行转发。第一报文其他字段的内容,可以根据本地配置策略设置,也可以根据删除还原指示信息指示的方法进行设置,本申请不做限定。
图10为本申请实施例提供的另一种封装和解封装报文结构示意图,本申请实施例中BIER封装的类型可以有多种,在一个示例中,可以通过MPLS对BIER报文进行的封装,这种封装可以称为BIER-MPLS封装。在另一个示例中,可以通过IPv6对BIER报文进行的封装,这种封装可以称为BIERv6封装。本申请以BIER-MPLS封装为例入口节点在第删除第一报文头,并封装BIER头以及上游标签为例,该上游标签为上游MPLS标签,在骨干网络中,入口节点为上游节点,该上游标签(上游MPLS标签)为入口节点的标签。上游MPLS标签和上游MPLS标签封装格式可以参照使用RFC8296和RFC8556的BIER-MPLS MVPN封装方式,BIER适合于MPLS网络。如图10所示,入口节点收到的报文为如图10(a)所示的格式,第一报文包括第一报文头(C-IP Header)和C-Payload,C-IP Header属于IPv6头,入口节点删除接收到的第一报文的C-IP Header,并封装P-BIER Header和上游标签得到第二报文,第二报文如图10(b)所示,包括C-Payload、P-BIER Header和上游标签,且,第二报文不包括C-IP Header,以上游标签为上游MPLS标签为例,第二报文到达出口节点后,出口节点将第二报文的P-BIER Header和上游标签删除,封装C-IP Header得到第一报文如图10(c)所示,第一报文包括C-IP Header和C-Payload。
入口节点进行BIER Header封装,表5为入口节点封装的BIER Header各字段的示意:
表5
如表5所示,BIER Header包括如下部分:
位索引转发表标识(Bit Index Forwarding Table identification,BIFT-ID):用于位索引转发,出口节点可以根据BIER Header中的BIFT ID确定该报文属于哪个SD,使用的BSL以及转发该报文的节点或配置的BFR ID组成的集合,BIFT-ID可以对应子域(Sub-Domain,SD)、比特串长度(Bit String Length,BSL)和集合标识(Set Identifier,SI)的组合,不同的BIFT ID可以对应于不同的SD、BSL和SI组合;
BSL:为BIER Header中包括的bit string的长度;
Proto:可以设置2来表示BIER Header后面是“上游MPLS标签”,可以设置4表示BIER Header后面的CE设备发送的报文属于IPv4报文,或,设置6表示BIER Header后面的CE设备发送的报文属于IPv4报文;
比特串BitString:用于标识组播业务BFER集合,使得出口节点根据BitString字段确定接收到的第二报文是否为发送给本节点的报文;
BIER头中除了上述字段外,还可以包含Ver、差分服务代码点(DifferentiatedServices Code Point,DSCP)、TTL、Entropy、操作维护管理(Operation Administrationand Maintenance,OAM)、TC、栈(stack,S)等字段,在此不展开详述,表5的字段示意仅为举例,不做限定。
与隧道信息对应的第二报文头包括BIER头和上游标签,如上游MPLS标签,BIER头包括与隧道信息对应的出口节点的标识,上游MPLS标签用于标识组播源组信息,BIER头参照表5的格式,该上游MPLS标签参照表4的MPLS头格式。
举例来说,上游MPLS标签可以用于标识组播源组信息,进而根据组播源组信息确定对应的CE设备所属的VPN。上游MPLS标签可以用于标识组播源组信息可以参照MPLS标签的举例,在此不再赘述。
入口节点可以将分配的标签值设置封装的上游MPLS标签的Label字段中,上游MPLS标签的字段设置参照上例中MPLS头封装时各字段的设置,在此不再赘述。BIER头包括与隧道信息对应的出口节点的标识,可以是在入口节点在BitString中对应设置出口节点的ID,如图2所示的出口节点ID分别是ID=1,ID=2和ID=3。BIER头其他字段的设置可参考RFC8296和RFC8556的要求,根据接收到的第一报文中的C-IP Header字段对应设置,或根据本地配置策略设置,也不再展开。
出口节点接收到第二报文,删除封装的BIER头和上游MPLS标签,恢复第一报文头,得到第一报文,第二报文头包括P-BIER Header和上游MPLS标签,第一报文头记作C-IPHeader,封装C-IP Header时各字段的设置的一种示例如下:
C-IP Header的Version:IPv6的版本号为6;
C-IP Header的TC:根据本地配置策略设置TC值;
C-IP Header的FL:根据本地配置策略设置FL值;
C-IP Header的PL:可以按照C-Payload中包含的封装头属于IPv4头或者IPv6头进行设置,比如C-Payload中包含的封装头属于IPv6头,则可以通过IPv6头的Payload Length字段再加上IPv6头长度40得到作为C-IP头的Payload Length字段,同理,如果C-Payload中包含的封装头属于IPv4头,则可以通过IPv4头的Payload Length字段再加上IPv4头长度得到作为C-IP头的Payload Length字段;
C-IP Header的NH:需要根据C-Payload中的IPv4头或者IPv6头进行设置,比如C-Payload中包含的封装头属于IPv6头,则Next Header字段设置41,同理,如果C-Payload中包含的封装头属于IPv4头,则Next Header字段设置4;
C-IP Header的HL:根据本地配置策略设置HL值;
C-IP Header的SA和DA:通过Label字段和对应关系,设置SA字段和DA字段,如,可以通过Label字段中的10001从对应关系得到组播源组信息(S1,G2),将得到的组播源组信息源地址对应设置SA字段,目的地址对应设置DA字段。
需要说明的是,这种封装格式不限制第一报文中的C-Payload内容,入口节点接收到的C-Payload可以是带有用户数据报协议(User Datagram Protocol,UDP)头的净荷,也可以是包含有IPv4或IPv6头的完整报文,且上游MPLS标签后的C-Payload的格式不会影响到报文的转发过程。
本申请实施例以第一报文头(C-IP Header)属于IPv6头,第二报文头是P-BIERHeader和上游标签为例,入口节点删除C-IP Header头,并封装P-BIER Header和上游标签,其效果等同于将C-IP Header“替换”成了P-BIER Header和上游标签。再由出口节点将P-BIER Header和上游标签删除,封装C-IP Header,本申请实施例以上游标签是上游MPLS标签为例,其效果等同于出口节点将第一报文恢复回来,进入骨干网络的第一报文和离开骨干网络后的第一报文格式一致,且能够减小在骨干网络中的传输开销。
本申请实施例提供一种网络设备,网络设备设置于入口节点,可以用于实现上述方法中入口节点的相应功能,图11为本申请实施例提供的一种网络设备10结构示意图,该网络设备可以用于执行以上实施例中的方法S101至S104,或执行S201至S205,当网络设备用于执行以上实施例中的方法S101至S104,或方法S201至S205时,相当于该方法中例举的入口节点。网络设备10包括:接收模块101、处理模块102和发送模块103:
接收模块101,用于接收用户边缘设备发送的第一报文,第一报文包含第一报文头和载荷,第一报文头包括组播源组信息。
处理模块102,用于根据组播源组信息和对应关系,获取隧道信息,对应关系包括组播源组信息和隧道信息。
处理模块102,还用于根据载荷和隧道信息获得第二报文,第二报文包含载荷和与隧道信息对应的第二报文头,第二报文不包括第一报文头。
发送模块103,用于通过与隧道信息对应的隧道发送第二报文。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv6头和GRE头,IPv6头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv4头和GRE头,IPv4头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv6头和IPv6扩展头,IPv6头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv6头,IPv6头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,目的地址为入口节点在组播树的下一跳的地址或者目的地址为组播树对应的组播组地址。
在一种可能的方式中,与隧道信息对应的第二报文头为多协议标签交换MPLS头,MPLS头包括入口节点在组播树的下一跳节点的MPLS标签或组播树对应的MPLS标签。
在一种可能的方式中,与隧道信息对应的第二报文头包括位索引显式复制BIER头和标签,BIER头包括与隧道信息对应的出口节点的标识,标签用于标识组播源组信息。
在一种可能的方式中,发送模块103,还用于向出口节点通告对应关系。
如,发送模块103,还用于向出口节点通告指示信息,指示信息用于指示还原组播源组信息。
进一步地,发送模块103,具体用于向出口节点发送BGP消息,BGP消息包括对应关系。
在一种可能的方式中,BGP消息为BGP-MVPN信令或者BGP-EVPN信令。
当网络设备10用于执行以上方法时,可以应用于图2-图11所示的应用场景中,例如可以是图2所示场景中的入口节点1000。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本申请实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。例如,上述实施例中,发送模块、接收模块和处理模块可以是同一个模块,也可以是不同的模块。上述集成的模块既可以采用硬件的形式实现,例如芯片,也可以采用软件功能模块的形式实现。
另外,本申请实施例还提供一种网络设备,网络设备设置于出口节点,该网络设备可以用于执行以上实施例中的方法S105至S107,或执行S201至S205,图12为本申请实施例提供的一种网络设备20结构示意图,当网络设备用于执行以上实施例中的方法S105至S107,或方法S201至S205时,相当于该方法中例举的出口节点。网络设备20包括:接收模块201和处理模块202。
接收模块201,用于接收第二报文,第二报文包括载荷和与隧道信息对应的第二报文头。
处理模块202,用于根据第二报文头对应的隧道信息和对应关系,获取组播源组信息,对应关系包括隧道信息和组播源组信息。
处理模块202,还用于根据组播源组信息和载荷获得第一报文,第一报文包含第一报文头和载荷,第一报文头包括组播源组信息,第一报文不包括第二报文头。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv6头和GRE头,IPv6头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv4头和GRE头,IPv4头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv6头和IPv6扩展头,IPv6头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,与隧道信息对应的第二报文头包括IPv6头,IPv6头包括与隧道信息对应的源地址和目的地址。
在一种可能的方式中,目的地址为入口节点在组播树的下一跳的地址或者目的地址为组播树对应的组播组地址。
在一种可能的方式中,接收模块201,还用于接收第三报文,第三报文包括载荷和与隧道信息对应的第三报文头;处理模块202,还用于根据第三报文头对应的隧道信息和对应关系,获取组播源组信息,对应关系包括隧道信息和组播源组信息,与隧道信息对应的第三报文头为多协议标签交换MPLS头,MPLS头包括出口节点为组播树分配的MPLS标签或组播树对应的MPLS标签。
在一种可能的方式中,与隧道信息对应的第二报文头包括位索引显式复制BIER头和标签,BIER头包括与隧道信息对应的出口节点的标识,标签用于标识组播源组信息。
在一种可能的方式中,接收模块201,还用于获取入口节点通告的对应关系。
如,接收模块201,还用于接收入口节点通告的指示信息,指示信息用于指示还原组播源组信息。
进一步地,接收模块201,具体用于接收入口节点发送的边界网关协议BGP消息,BGP消息包括对应关系。
在一种可能的方式中,BGP消息为BGP-MVPN信令或者BGP-EVPN信令。
当网络设备20用于执行以上方法时,可以应用于图2-图11所示的应用场景中,例如可以是图2所示场景中的出口节点200。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本申请实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。例如,上述实施例中,接收模块和处理模块可以是同一个模块,也可以是不同的模块。上述集成的模块既可以采用硬件的形式实现,例如芯片,也可以采用软件功能模块的形式实现。
此外,本申请实施例还提供了一种网络设备30,参见图13所示,图13为本申请实施例提供的一种网络设备30的结构示意图。该网络设备30包括通信接口301和与通信接口301连接的处理器302。通信接口例如为收发器一类的装置。该网络设备30可以用于执行以上实施例中的方法。具体来说,该网络设备30可以设置于入口节点执行方法S101至S104和S201至S205中由入口节点执行的操作,网络设备30还可以设置于出口节点执行方法S105至S107和S201至S205由出口节点执行的操作。其中,通信接口301用于执行方法中由入口节点的收发操作。处理器302用于执行方法中入口节点所执行的收发操作以外的操作。其中,通信接口301用于执行方法S101至S104和S201至S205中由入口节点所执行的收发操作。处理器302用于执行方法S101至S104和S201至S205中由入口节点所执行的收发操作以外的操作。例如,当网络设备30设置于入口节点执行操作时,根据组播源组信息和对应关系,获取隧道信息,对应关系包括组播源组信息和隧道信息,还用于根据载荷和隧道信息获得第二报文,第二报文包含载荷和与隧道信息对应的第二报文头,第二报文不包括第一报文头。通信接口301,用于接收用户边缘设备发送的第一报文,第一报文包含第一报文头和载荷,第一报文头包括组播源组信息,还用于通过与隧道信息对应的隧道发送第二报文。当网络设备30设置于出口节点执行操作时,通信接口301用于执行方法S105至S107和S201至S205中由出口节点所执行的收发操作。处理器302用于执行方法S105至S107和S201至S205中由出口节点所执行的收发操作以外的操作。通信接口301,用于接收第二报文,第二报文包括载荷和与隧道信息对应的第二报文头。处理器302用于根据第二报文头对应的隧道信息和对应关系,获取组播源组信息,对应关系包括隧道信息和组播源组信息,还用于根据组播源组信息和载荷获得第一报文,第一报文包含第一报文头和载荷,第一报文头包括组播源组信息,第一报文不包括第二报文头。
此外,本申请实施例还提供了一种网络设备40,参见图14所示,图14为本申请实施例提供的一种网络设备40的结构示意图。如图14所示,网络设备40可以包括处理器401,与所述处理器401耦合连接的存储器402,收发器403。收发器403可以是通信接口,光模块等,用于接收报文或数据信息等。处理器401可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合,用于执行上述实施例所举例的设备中转发处理相关步骤。处理器还可以是专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。处理器401可以是指一个处理器,也可以包括多个处理器。存储器402可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器402还可以包括上述种类的存储器的组合。存储器402可以是指一个存储器,也可以包括多个存储器,用于存储程序指令。在一个实施方式中,存储器402中存储有计算机可读指令,所述计算机可读指令包括多个软件模块,例如发送模块,处理模块和接收模块。处理器401执行各个软件模块后可以按照各个软件模块的指示进行相应的操作。在本实施例中,软件模块所执行的操作实际上是指处理器401根据所述软件模块的指示而执行的操作。可选地,处理器401也可以存储执行本申请实施例方案的程序代码或指令,在这种情况下处理器401不需要到存储器402中读取程序代码或指令。
该网络设备40可以用于执行以上实施例中的方法。具体来说,该网络设备40可以设置于入口节点执行方法S101至S104、S201至S205中由入口节点执行的操作,网络设备40可以设置于出口节点执行方法S105至S107、S201至S205由出口节点执行的操作。例如,当网络设备40作为设置于入口节点的设备执行操作时,处理器401用于执行存储器402中的相关指令,根据组播源组信息和对应关系,获取隧道信息,对应关系包括组播源组信息和隧道信息,根据载荷和隧道信息获得第二报文,第二报文包含载荷和与隧道信息对应的第二报文头,第二报文不包括第一报文头。例如,当网络设备40作为设置于出口节点的设备执行操作时,处理器401用于执行存储器402中的相关指令,根据第二报文头对应的隧道信息和对应关系,获取组播源组信息,对应关系包括隧道信息和组播源组信息,根据组播源组信息和载荷获得第一报文,第一报文包含第一报文头和载荷,第一报文头包括组播源组信息,第一报文不包括第二报文头。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在处理器上运行时,实现前述实施例中任一实施例的方法中任一方法中的部分或全部操作。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,当其在处理器上运行时,实现前述实施例中任一实施例的方法中任一方法中的部分或全部操作。
本申请实施例还提供一种报文的传输系统,该系统可以应用在如图2所示的场景中,包括:系统包括至少一个设置于入口节点的网络设备和至少一个设置于出口节点的网络设备。如图2所示,该系统还可以包括设置于中间节点的网络设备和CE设备。其中,设置于入口节点的网络设备如图11、图13或图14对应的网络设备,设置于入口节点的网络设备是结构如图12、图13或图14对应的网络设备。上述通信系统用于实现前述实施例中任一实施例的方法中任一方法中的部分或全部操作。
本申请实施例还提供了另一种通信系统,包括至少一个存储器和至少一个处理器,该至少一个存储器存储有指令,该至少一个处理器执行指令,使得通信系统实现前述实施例中任一实施例的方法中任一方法中的部分或全部操作。
本申请实施例还提供了一种芯片,包括:接口电路和处理器。接口电路和处理器相连接,处理器用于使得芯片执行前述实施例中任一实施例的方法中任一方法中的部分或全部操作。
本申请实施例还提供一种芯片系统,包括:处理器,处理器与存储器耦合,存储器用于存储程序或指令,当程序或指令被处理器执行时,使得该芯片系统实现前述实施例中任一实施例的方法中任意方法中的部分或全部操作。
可选地,该芯片系统中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请实施例并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
示例性的,该芯片系统可以是FPGA,可以是ASIC,还可以是系统芯片(system onchip,SoC),还可以是CPU,还可以是NP,还可以是数字信号处理电路(digital signalprocessor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)或其他集成芯片。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (44)

1.一种报文的传输方法,其特征在于,包括:
入口节点接收用户边缘设备发送的第一报文,所述第一报文包含第一报文头和载荷,所述第一报文头包括组播源组信息;
所述入口节点根据所述组播源组信息和对应关系,获取隧道信息,所述对应关系包括所述组播源组信息和所述隧道信息;
所述入口节点根据所述载荷和所述隧道信息获得第二报文,所述第二报文包含所述载荷和与所述隧道信息对应的第二报文头,所述第二报文不包括所述第一报文头;
所述入口节点通过与所述隧道信息对应的隧道发送所述第二报文。
2.根据权利要求1所述的方法,其特征在于,所述第二报文头包括第六版互联网协议IPv6头和通用路由封装GRE头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
3.根据权利要求1所述的方法,其特征在于,所述第二报文头包括第四版互联网协议IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
4.根据权利要求1所述的方法,其特征在于,所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
5.根据权利要求1所述的方法,其特征在于,所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
6.根据权利要求2至5任一所述的方法,其特征在于,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
7.根据权利要求1所述的方法,其特征在于,所述第二报文头包括多协议标签交换MPLS头,所述MPLS头包括所述入口节点在组播树的下一跳节点的MPLS标签或组播树对应的MPLS标签。
8.根据权利要求1所述的方法,其特征在于,所述第二报文头包括位索引显式复制BIER头和标签,所述BIER头包括与所述隧道信息对应的所述出口节点的标识,所述标签用于标识所述组播源组信息。
9.根据权利要求1至8任一所述的方法,其特征在于,所述方法还包括:
所述入口节点向出口节点发送边界网关协议BGP消息,所述BGP消息包括所述对应关系。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述入口节点向出口节点通告指示信息,所述指示信息用于指示还原所述组播源组信息。
11.根据权利要求9或10所述的方法,其特征在于,所述BGP消息为边界网关协议-组播虚拟专用网络BGP-MVPN信令或者边界网关协议-以太虚拟专用网络BGP-EVPN信令。
12.一种报文的传输方法,其特征在于,包括:
出口节点接收第二报文,所述第二报文包括载荷和与隧道信息对应的第二报文头;
所述出口节点根据对应关系和所述第二报文头对应的所述隧道信息,获取组播源组信息,所述对应关系包括所述隧道信息和所述组播源组信息;
所述出口节点根据所述组播源组信息和所述载荷获得第一报文,所述第一报文包含第一报文头和所述载荷,所述第一报文头包括所述组播源组信息,所述第一报文不包括所述第二报文头。
13.根据权利要求12所述的方法,其特征在于,所述第二报文头包括第六版互联网协议IPv6头和通用路由封装GRE头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
14.根据权利要求12所述的方法,其特征在于,所述第二报文头包括第四版互联网协议IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
15.根据权利要求12所述的方法,其特征在于,所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
16.根据权利要求12所述的方法,其特征在于,所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
17.根据权利要求13至16任一所述的方法,其特征在于,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
18.根据权利要求12所述的方法,其特征在于,所述出口节点根据所述组播源组信息和所述载荷获得第一报文之前,还包括:
所述出口节点接收第三报文,所述第三报文包括所述载荷和与所述隧道信息对应的第三报文头;
所述出口节点根据所述对应关系和所述第三报文头对应的所述隧道信息,获取所述组播源组信息,所述第三报文头包括多协议标签交换MPLS头,所述MPLS头包括所述出口节点为组播树分配的MPLS标签或所述组播树对应的MPLS标签。
19.根据权利要求12所述的方法,其特征在于,所述第二报文头包括位索引显式复制BIER头和标签,所述BIER头包括与所述隧道信息对应的出口节点的标识,所述标签用于标识所述组播源组信息。
20.根据权利要求12至19任一所述的方法,其特征在于,所述方法还包括:
所述出口节点获取所述入口节点发送的边界网关协议BGP消息,所述BGP消息包括所述对应关系。
21.根据权利要求20所述的方法,其特征在于,所述方法还包括:
所述出口节点接收所述入口节点通告的指示信息,所述指示信息用于指示还原所述组播源组信息。
22.根据权利要求20或21所述的方法,其特征在于,所述BGP消息为边界网关协议-组播虚拟专用网络BGP-MVPN信令或者边界网关协议-以太虚拟专用网络BGP-EVPN信令。
23.一种网络设备,其特征在于,所述网络设备设置于入口节点,包括:
接收模块,用于接收用户边缘设备发送的第一报文,所述第一报文包含第一报文头和载荷,所述第一报文头包括组播源组信息;
处理模块,用于根据所述组播源组信息和对应关系,获取隧道信息,所述对应关系包括所述组播源组信息和所述隧道信息;
所述处理模块,还用于根据所述载荷和所述隧道信息获得第二报文,所述第二报文包含所述载荷和与所述隧道信息对应的第二报文头,所述第二报文不包括所述第一报文头;
发送模块,用于通过与所述隧道信息对应的隧道发送所述第二报文。
24.根据权利要求23所述的网络设备,其特征在于,所述第二报文头包括第六版互联网协议IPv6头和通用路由封装GRE头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
25.根据权利要求23所述的网络设备,其特征在于,所述第二报文头包括第四版互联网协议IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
26.根据权利要求23所述的网络设备,其特征在于,所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
27.根据权利要求23所述的网络设备,其特征在于,所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
28.根据权利要求24至27任一所述的网络设备,其特征在于,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
29.根据权利要求23所述的网络设备,其特征在于,所述第二报文头包括多协议标签交换MPLS头,所述MPLS头包括所述入口节点在组播树的下一跳节点的MPLS标签或组播树对应的MPLS标签。
30.根据权利要求23所述的网络设备,其特征在于,所述第二报文头包括位索引显式复制BIER头和标签,所述BIER头包括与所述隧道信息对应的所述出口节点的标识,所述标签用于标识所述组播源组信息。
31.根据权利要求23至30任一所述的网络设备,其特征在于,
所述发送模块,还用于向出口节点发送边界网关协议BGP消息,所述BGP消息包括所述对应关系。
32.根据权利要求31所述的网络设备,其特征在于,
所述发送模块,还用于向出口节点通告指示信息,所述指示信息用于指示还原所述组播源组信息。
33.根据权利要求31或32所述的网络设备,其特征在于,所述BGP消息为边界网关协议-组播虚拟专用网络BGP-MVPN信令或者边界网关协议-以太虚拟专用网络BGP-EVPN信令。
34.一种网络设备,其特征在于,所述网络设备设置于出口节点,包括:
接收模块,用于接收第二报文,所述第二报文包括载荷和与隧道信息对应的第二报文头;
处理模块,用于根据对应关系和所述第二报文头对应的所述隧道信息,获取组播源组信息,所述对应关系包括所述隧道信息和所述组播源组信息;
所述处理模块,还用于根据所述组播源组信息和所述载荷获得第一报文,所述第一报文包含第一报文头和所述载荷,所述第一报文头包括所述组播源组信息,所述第一报文不包括所述第二报文头。
35.根据权利要求34所述的网络设备,其特征在于,所述第二报文头包括第六版互联网协议IPv6头和通用路由封装GRE头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
36.根据权利要求34所述的网络设备,其特征在于,所述第二报文头包括第四版互联网协议IPv4头和GRE头,所述IPv4头包括与所述隧道信息对应的源地址和目的地址。
37.根据权利要求34所述的网络设备,其特征在于,所述第二报文头包括IPv6头和IPv6扩展头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
38.根据权利要求34所述的网络设备,其特征在于,所述第二报文头包括IPv6头,所述IPv6头包括与所述隧道信息对应的源地址和目的地址。
39.根据权利要求35至38任一所述的网络设备,其特征在于,所述目的地址为所述入口节点在组播树的下一跳的地址或者所述目的地址为组播树对应的组播组地址。
40.根据权利要求34所述的网络设备,其特征在于,
所述接收模块,还用于接收第三报文,所述第三报文包括所述载荷和与所述隧道信息对应的第三报文头;
所述处理模块,还用于根据所述对应关系和所述第三报文头对应的所述隧道信息,获取所述组播源组信息,所述第三报文头包括多协议标签交换MPLS头,所述MPLS头包括所述出口节点为组播树分配的MPLS标签或所述组播树对应的MPLS标签。
41.根据权利要求34所述的网络设备,其特征在于,所述第二报文头包括位索引显式复制BIER头和标签,所述BIER头包括与所述隧道信息对应的出口节点的标识,所述标签用于标识所述组播源组信息。
42.根据权利要求34至41任一所述的网络设备,其特征在于,
所述接收模块,还用于获取所述入口节点发送的边界网关协议BGP消息,所述BGP消息包括所述对应关系。
43.根据权利要求42所述的网络设备,其特征在于,
所述接收模块,还用于接收所述入口节点通告的指示信息,所述指示信息用于指示还原所述组播源组信息。
44.根据权利要求42或43所述的网络设备,其特征在于,所述BGP消息为边界网关协议-组播虚拟专用网络BGP-MVPN信令或者边界网关协议-以太虚拟专用网络BGP-EVPN信令。
CN202211063430.9A 2022-08-31 2022-08-31 报文传输的方法和网络设备 Pending CN117675440A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211063430.9A CN117675440A (zh) 2022-08-31 2022-08-31 报文传输的方法和网络设备
PCT/CN2023/079614 WO2024045537A1 (zh) 2022-08-31 2023-03-03 报文传输的方法和网络设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211063430.9A CN117675440A (zh) 2022-08-31 2022-08-31 报文传输的方法和网络设备

Publications (1)

Publication Number Publication Date
CN117675440A true CN117675440A (zh) 2024-03-08

Family

ID=90083293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211063430.9A Pending CN117675440A (zh) 2022-08-31 2022-08-31 报文传输的方法和网络设备

Country Status (2)

Country Link
CN (1) CN117675440A (zh)
WO (1) WO2024045537A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8068499B2 (en) * 2006-08-10 2011-11-29 Motorola Solutions, Inc. Optimized tunneling methods in a network
US7848280B2 (en) * 2007-06-15 2010-12-07 Telefonaktiebolaget L M Ericsson (Publ) Tunnel overhead reduction
CN102820977B (zh) * 2012-08-07 2016-05-25 福建星网锐捷网络有限公司 组播方法、装置及网络设备
CN110460522B (zh) * 2018-05-08 2021-11-19 华为技术有限公司 组播数据传输方法、相关装置及系统
CN112769745B (zh) * 2019-11-01 2022-07-22 华为技术有限公司 传输组播报文的方法和相关装置
CN114598635A (zh) * 2020-12-02 2022-06-07 华为技术有限公司 报文传输的方法和装置

Also Published As

Publication number Publication date
WO2024045537A1 (zh) 2024-03-07

Similar Documents

Publication Publication Date Title
CN109218178B (zh) 一种报文处理方法及网络设备
CN109756425B (zh) 组播转发方法、装置以及bfr
JP7208386B2 (ja) パケット転送方法、パケット送信装置、およびパケット受信装置
CN109995634B (zh) 一种组播虚拟专用网络的承载方法和设备
US8339973B1 (en) Multicast traceroute over MPLS/BGP IP multicast VPN
US7126949B2 (en) Source identifier for MAC address learning
US20130182709A1 (en) Methods and apparatus for rbridge hop-by-hop compression and frame aggregation
CN108964940B (zh) 消息发送方法及装置、存储介质
KR20230101903A (ko) Bier 패킷 포워딩 방법, 디바이스 및 시스템
CN112134776B (zh) 生成组播转发表项的方法和接入网关
JP2022537296A (ja) Evpnメッセージ転送方法、システム、記憶媒体及び端末
CN112104547B (zh) Evpn多归属组网避免环路的方法及装置
KR20220062347A (ko) 역 경로 포워딩 rpf 검사 방법 및 장치
CN114666267A (zh) 以太虚拟专用网的数据处理方法、设备及存储介质
KR20220093155A (ko) 패킷 전달 방법, 제1 네트워크 디바이스 및 제1 디바이스 그룹
CN112491706A (zh) 数据报文的处理方法及装置、存储介质、电子装置
US20220200820A1 (en) Packet Sending Method and Apparatus
CN117675440A (zh) 报文传输的方法和网络设备
WO2021129023A1 (zh) 报文发送的方法、设备和系统
CN111404816B (zh) 一种跨网络发送组播报文的方法、装置、系统及存储介质
CN114520762A (zh) BIERv6报文的发送方法以及第一网络设备
WO2022222582A1 (zh) 一种报文处理方法、装置、存储介质及电子装置
WO2022237563A1 (zh) 数据转发方法、装置、存储介质和电子装置
WO2023125774A1 (zh) 一种vxlan报文传输方法、网络设备及系统
WO2024016869A1 (zh) 一种组播配置方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication