CN109729009A - 用于实现组播业务的方法和装置 - Google Patents

用于实现组播业务的方法和装置 Download PDF

Info

Publication number
CN109729009A
CN109729009A CN201711046331.9A CN201711046331A CN109729009A CN 109729009 A CN109729009 A CN 109729009A CN 201711046331 A CN201711046331 A CN 201711046331A CN 109729009 A CN109729009 A CN 109729009A
Authority
CN
China
Prior art keywords
message
unicast
network equipment
address
multicast
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.)
Granted
Application number
CN201711046331.9A
Other languages
English (en)
Other versions
CN109729009B (zh
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 CN201711046331.9A priority Critical patent/CN109729009B/zh
Priority to PCT/CN2018/111921 priority patent/WO2019085822A1/zh
Priority to EP18873380.2A priority patent/EP3694163B1/en
Publication of CN109729009A publication Critical patent/CN109729009A/zh
Priority to US16/862,055 priority patent/US11374778B2/en
Application granted granted Critical
Publication of CN109729009B publication Critical patent/CN109729009B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • 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
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • 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
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1877Measures taken prior to transmission
    • 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
    • H04L12/1886Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with traffic restrictions for efficiency improvement, e.g. involving subnets or subdomains
    • 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
    • H04L12/189Arrangements for providing special services to substations for broadcast or conference, e.g. multicast in combination with wireless systems
    • 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
    • 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
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • 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

Landscapes

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

Abstract

本申请提供了一种用于实现组播业务的方法和装置,该方法包括:第一网络设备接收第二网络设备发送的第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址;所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道。本申请实施例的用于实现组播业务的方法和装置,有利于提高组播业务的可用性。

Description

用于实现组播业务的方法和装置
技术领域
本申请涉及通信领域,特别涉及通信领域中的用于实现组播业务的方法和装置。
背景技术
组播是指组播源仅发送一次信息,组播路由器借助组播路由协议为组播数据包建立树型路由,被传递的信息在路组播源尽可能远的分叉路口才开始复制和分发。组播要求网络中的路由器都支持相关的组播路由协议,以协议无关组播-稀疏模式(protocolindependent multicast-sparse mode,PIM-SM)为例,PIM-SM是一种组播路由协议,用于从接收端向组播源方向或汇聚点方向逐跳建立组播路由表项,最终构造出一棵以组播源(source)或汇聚点(rendezvous point,RP)为根,以接收端为叶子的树状结构(即组播树),组播报文从根节点开始朝着叶子方向,在每个组播路由器上进行复制,直到接收端。其中,以RP为根的组播树可以称为共享树(rendezvous point tree,RPT),以source为根的组播树可以称为指定源最短路径树(source-specific shortest-path tree,SPT)。
上述组播树的建立,要求所有路由器必须支持PIM-SM协议,支持PIM-SM协议的路由器可以称为PIM-SM路由器,换句话说,组播树内的路由器必须均为PIM-SM路由器。在加入过程中,某一台组播路由器在构造组播加入消息的过程中,如果该组播路由器的下一跳路由器不支持PIM-SM协议,这台路由器便无法加入到组播树,该组播路由器下的终端设备无法接收组播报文,因此,组播业务的可用性较差。
发明内容
本申请提供一种用于实现组播业务的方法和装置,有利于提高组播业务的可用性。
第一方面,提供了一种用于实现组播业务方法,包括:第一网络设备接收第二网络设备发送的第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址;所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道。
具体地,终端设备可以向第二网络设备发送加入请求消息,请求加入组播组,该第二网络设备根据该加入请求消息,构造第一单播加入消息并发送,该第一单播加入消息的目的地址为组播源地址或RP地址。网络中能够识别该第一单播加入消息的第一个设备可以将其捕获,即第一网络设备,该第一网络设备可以根据该第一单播接入消息建立该第一网络设备到该第二网络设备的隧道,以便于后续该第一网络设备可以将组播报文转发至该第二网络设备,再由该第二网络设备将组播报文转发至该终端设备。
本申请实施例的用于实现组播业务的方法,通过引入单播加入消息,截获单播加入消息的组播路由器能够自动建立隧道连通本地路由器,从而实现自动穿越单播网络,能够使下一跳路由器不支持组播路由协议的组播路由器加入到组播组中,有利于提高组播业务的可用性。
结合第一方面,在第一方面的某些实现方式中,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之前,所述方法还包括:所述第一网络设备根据所述第一单播加入消息中携带的第一字段,确定所述第二网络设备是否为所述第一网络设备的邻居节点,其中,所述第一单播加入消息每被一个网络设备转发一次,所述第一字段的值减1;所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道,包括:若所述第二网络设备不是所述第一网络设备的邻居节点,所述第一网络设备建立所述第一网络设备到所述第二网络设备的隧道。
应理解,上述第一字段为该第一单播加入消息中的某个字段,该第一单播加入消息每被一个网络设备转发一次,该第一字段的值减1,因此,第一网络设备可以通过该第一字段的值来判断该第一单播加入消息被转发了几次,即判断该第一单播加入消息的发送者是否为第一网络设备的邻居。在一种具体实现中,该第一字段可以为互联网协议版本4(internet protocol version 4,IPv4)中的存活时间(time to live,TTL)字段,也可以为互联网协议版本6(internet protocol version 6,IPv6)中的跳数限制(hop limit)字段,本申请实施例对此不作限定。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:若所述第一字段等于初始值,所述第一网络设备确定所述第二网络设备为所述第一网络设备的邻居节点;若所述第一字段小于所述初始值,所述第一网络设备确定所述第二网络设备不是所述第一网络设备的邻居节点。
结合第一方面,在第一方面的某些实现方式中,当所述第一单播加入消息的目的地址为所述组播源地址时,所述第一网络设备的地址与所述组播源地址不相同;当所述第一单播加入消息的目的地址为所述RP地址时,所述第一网络设备的地址与所述RP地址不相同。
具体地,若该终端设备请求加入以组播源Source为根的组播树SPT,该第一单播加入消息的目的地址为该组播源地址,第一网络设备的地址与该组播源地址不相同,即该第一网络设备可以为中间节点,例如,组播路由器;若该终端设备请求加入以RP为根的组播树RPT,该第一单播加入消息的目的地址为该RP地址,第一网络设备的地址与该RP地址不相同,即该第一网络设备可以为中间节点,例如,组播路由器。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一网络设备建立所述组播组与所述第一网络设备到所述第二网络设备的隧道之间的对应关系。
具体地,该第一网络设备建立第一网络设备到第二网络设备的隧道,还需要建立上述组播组与该隧道之间的对应关系。在一种具体实现中,该第一网络设备可以将该第一网络设备到第二网络设备的隧道添加至组播转发表项的出接口列表中。
结合第一方面,在第一方面的某些实现方式中,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之后,所述方法还包括:所述第一网络设备发送第一组播加入消息,所述第一组播加入消息用于请求加入所述组播组,所述第一组播加入消息的源地址为所述第一网络设备的地址,所述第一组播加入消息的目的地址为组播路由器的组播地址。
具体地,在第一网络设备建立该第一网络设备到第二网络设备的隧道之后,该第一网络设备还可以向上发送第一组播加入消息,该第一组播加入消息的目的地址为组播路由器的组播地址。应理解,在具体实现中,该第一网络设备继续向上发送第一组播加入消息的前提是,该第一网络设备的组播转发表项是在接收到第一单播加入消息之后新建的,且该第一网络设备的上游邻居为该第一网络设备的PIM-SM邻居,但本申请实施例对此不作限定。在一种具体实现中,该网络系统中的组播路由器均支持PIM-SM协议,该第一组播加入消息的目的地址即为224.0.0.13。
结合第一方面,在第一方面的某些实现方式中,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之后,所述方法还包括:所述第一网络设备发送第二单播加入消息,所述第二单播加入消息用于请求加入所述组播组,所述第二单播加入消息的源地址为所述第一网络设备的地址,所述第二单播加入消息的目的地址为所述组播源地址或所述RP地址。
具体地,在第一网络设备建立该第一网络设备到第二网络设备的隧道之后,该第一网络设备还可以向上发送第二单播加入消息,该第二单播加入消息的目的地址为组播源地址或RP地址。应理解,在具体实现中,若该第一网络设备的组播转发表项是在接收到第一单播加入消息之后新建的,该第一网络设备就需要向上继续发送第二单播加入消息。
结合第一方面,在第一方面的某些实现方式中,所述第一网络设备支持协议无关组播-稀疏模式PIM-SM协议,在所述第一网络设备发送第二单播加入消息之前,所述方法还包括:所述第一网络设备根据所述组播源地址或所述RP地址,查表获得所述第一网络设备的上游邻居的地址;所述第一网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;所述第一网络设备发送第二单播加入消息,包括:若所述上游邻居不支持所述PIM-SM协议,所述第一网络设备发送所述第二单播加入消息。
具体地,该第一网络设备在发送第二单播加入消息之前,也可以判断该第一网络设备的上游邻居是否支持PIM-SM协议,即判断该第一网络设备的上游邻居是否为该第一网络设备的PIM-SM邻居。若该上游邻居支持PIM-SM协议,该第一网络设备可以向该上游邻居发送上述第一组播加入消息,若该上游邻居不支持PIM-SM协议,该第二网络设备可以发送上述第二单播加入消息。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一网络设备接收第三网络设备发送的第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第三网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址;所述第一网络设备根据所述第一单播剪枝消息,确定是否存在与所述第一单播剪枝消息中携带的信息对应的第一组播转发表项;若不存在所述第一组播转发表项,所述第一网络设备确定所述第一网络设备的地址与所述第一单播剪枝消息的目的地址是否相同;若所述第一网络设备的地址与所述第一单播剪枝消息的目的地址相同,所述第一网络设备忽略所述第一单播剪枝消息;若所述第一网络设备的地址与所述第一单播剪枝消息的目的地址不相同,所述第一网络设备根据所述第一单播剪枝消息的目的地址,继续转发所述第一单播剪枝消息。
具体地,该第一网络设备可以接收到第三网络设备发送的第一单播剪枝消息,根据该第一单播剪枝消息,确定是否存在第一组播转发表项,该第一组播转发表项与该第一单播剪枝消息中携带的信息对应,例如,若该第一单播剪枝消息中携带组播组地址G,该第一组播转发表项可以为(*,G),若该第一单播剪枝消息中携带组播组地址G和组播源地址S,该第一组播转发表项可以为(S,G)。
若不存在第一组播转发表项,该第一网络设备确定该第一网络设备的地址与该第一单播剪枝消息的目的地址是否相同,在该第一网络设备的地址与该第一单播剪枝消息的目的地址不相同的情况下,该第一网络设备继续转发该第一单播剪枝消息。应理解,对于第一网络设备的地址与该第一单播剪枝消息的目的地址相同的情况,由于并不存在上述第一组播转发表项,说明并不存在对应的分支,该第一单播剪枝消息发送有误,该第一网络设备可以忽略该第一单播剪枝消息。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:若存在所述第一组播转发表项,所述第一网络设备确定是否存在所述第一网络设备到所述第三网络设备的隧道;若不存在所述第一网络设备到所述第三网络设备的隧道,所述第一网络设备将接收所述第一单播剪枝消息的物理接口从所述第一组播转发表项的出接口列表中删除;若存在所述第一网络设备到所述第三网络设备的隧道,所述第一网络设备拆除所述第一网络设备到所述第三网络设备的隧道,并将所述第一网络设备到所述第三网络设备的隧道从所述第一组播转发表项的出接口列表中删除。
具体地,对于存在与该第一单播剪枝消息中携带的信息对应的第一组播转发表项的情况,该第一网络设备可以确定是否存在第一网络设备到第三网络设备的隧道,若不存在该隧道,该第一网络设备可以直接将接收第一单播剪枝消息的物理接口从第一组播转发表项的出接口列表中删除,若存在该隧道,该第一网络设备需要拆除该隧道,并将该隧道从第一组播转发表项的出接口列表中删除。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一网络设备判断所述第一组播转发表项的出接口列表是否为空;若所述第一组播转发表项的出接口列表为空,所述第一网络设备删除所述第一组播转发表项。
具体地,该第一网络设备在处理完第一单播剪枝消息之后,还可以判断该第一组播转发表项的出接口列表是否为空,若该出接口列表为空,该第一网络设备可以删除该第一组播转发表项。应理解,若该出接口列表不为空,说明对应的组播树中该第一网络设备下还存在其他分支,该第一网络设备不做任何处理。
结合第一方面,在第一方面的某些实现方式中,所述第一网络设备不是组播源或汇聚点RP,所述方法还包括:所述第一网络设备发送第二单播剪枝消息,所述第二单播剪枝消息用于请求离开所述组播组,所述第二单播剪枝消息的源地址为所述第一网络设备的地址,所述第二单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
具体地,若该第一网络设备不是组播源或RP,即该第一网络设备不是根节点,那么该第一网络设备在删除该第一组播转发表项之后,需要向上继续发送第二单播剪枝消息,直到组播源或RP为止。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:在所述第一网络设备接收到组播报文的情况下,所述第一网络设备确定是否存在与所述组播报文的目的地址对应的第二组播转发表项;若不存在所述第二组播转发表项,所述第一网络设备确定所述组播报文是否经过隧道封装;若所述组播报文未经过隧道封装,所述第一网络设备发送第三单播剪枝消息,所述第三单播剪枝消息用于请求离开所述组播组,所述第三单播剪枝消息的源地址为所述第一网络设备的地址,所述第三单播剪枝消息的目的地址为所述组播源地址或所述RP地址;若所述组播报文经过隧道封装,所述第一网络设备发送第四单播剪枝消息,所述第四单播剪枝消息用于请求离开所述组播组,所述第四单播剪枝消息的源地址为所述第一网络设备的地址,所述第四单播剪枝消息的目的地址为封装所述组播报文的隧道的隧道源地址。
具体地,在第一网络设备接收到组播报文之后,该第一网络设备可以根据该组播报文的目的地址,确定是否存在对应的第二组播转发表项。若存在,该第一网络设备可以直接根据该第二组播转发表项中的出接口列表,将该组播报文发送至对应的出接口。若不存在,该第一网络设备可以发送单播剪枝消息,请求组播源停止向该第一网络设备发送组播报文。该第一网络设备可以判断该组播报文是否经过隧道封装,若该组播报文未经过隧道封装,该第一网络设备可以发送目的地址为组播源地址或RP地址的第三单播剪枝消息,若该组播报文经过隧道封装,该第一网络设备可以发送目的地址为封装该组播报文的隧道的隧道源地址的第四单播剪枝消息。在本申请实施例中,通过组播报文触发剪枝消息的发送,可以避免不必要的组播报文的转发,节省开销。
结合第一方面,在第一方面的某些实现方式中,所述第一单播加入消息为周期性发送的消息,且所述第一单播加入消息的发送周期为第一时间段,所述方法还包括:若所述第一网络设备在所述第一时间段内未接收到所述第二网络设备再次发送的所述第一单播加入消息,所述第一网络设备拆除所述第一网络设备到所述第二网络设备的隧道。
结合第一方面,在第一方面的某些实现方式中,所述第一单播加入消息为周期性发送的消息,且所述第一单播加入消息的发送周期为第一时间段,所述方法还包括:
若所述第一网络设备在所述第一时间段内未接收到所述第二网络设备再次发送的所述第一单播加入消息,所述第一网络设备从对应的组播转发表项的出接口列表中删除之前接收所述第一单播加入消息的物理接口。
在本申请实施例中,第一单播加入消息为周期性发送的消息,第一网络设备每收到一次第一单播加入消息便刷新定时器,定时器时长为第一时间段,若定时器超时,还未收到第一单播加入消息,若该第一网络设备与该第二网络设备之间建立了隧道,该第一网络设备可以拆除已经建立的、第一网络设备到第二网络设备的隧道。进一步地,该第一网络设备可以从组播转发表项的出接口列表中将该第一网络设备到第二网络设备的隧道删除。若该第一网络设备与该第二网络设备之间不存在隧道,该第一网络设备可以直接从对应的组播转发表项的出接口列表中将之前存储的、接收该第一单播加入消息的物理接口删除。
第二方面,提供了另一种用于实现组播业务方法,包括:第二网络设备接收加入请求消息,所述加入请求消息用于请求加入组播组,所述加入请求消息中携带组播组地址;所述第二网络设备根据所述加入请求消息,发送第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址。
结合第二方面,在第二方面的某些实现方式中,所述第二网络设备支持协议无关组播-稀疏模式PIM-SM协议,在所述第二网络设备根据所述加入请求消息,发送第一单播加入消息之前,所述方法还包括:所述第二网络设备根据所述组播源地址或所述RP地址,查表获得所述第二网络设备的上游邻居的地址;所述第二网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;所述第二网络设备根据所述加入请求消息,发送第一单播加入消息,包括:若所述上游邻居不支持所述PIM-SM协议,所述第二网络设备发送所述第一单播加入消息。
结合第二方面,在第二方面的某些实现方式中,所述方法还包括:所述第二网络设备接收离开请求消息,所述离开请求消息用于请求离开所述组播组,所述离开请求消息中携带组播组地址;所述第二网络设备根据所述离开请求消息,将接收所述离开请求消息的物理接口从与所述组播组地址对应的组播转发表项的出接口列表中删除,并判断所述出接口列表是否为空;若所述出接口列表为空,所述第二网络设备发送第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第二网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
结合第二方面,在第二方面的某些实现方式中,在所述第二网络设备发送第一单播剪枝消息之前,所述方法还包括:所述第二网络设备根据所述组播源地址或所述RP地址,查表获得所述第二网络设备的上游邻居的地址;所述第二网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;所述第二网络设备发送第一单播剪枝消息,包括:若所述上游邻居不支持所述PIM-SM协议,所述第二网络设备发送所述第一单播剪枝消息。
第三方面,提供了一种用于实现组播业务的装置,用于执行第一方面或第一方面任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任一种可能的实现方式中的方法的单元。
第四方面,提供了一种用于实现组播业务的装置,用于执行第二方面或第二方面任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任一种可能的实现方式中的方法的单元。
第五方面,提供了另一种用于实现组播业务的装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任一种可能的实现方式中的方法。
第六方面,提供了另一种用于实现组播业务的装置,该装置包括:收发器、存储器和处理器。其中,该收发器、该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第二方面或第二方面的任一种可能的实现方式中的方法。
第七方面,提供了一种用于实现组播业务的系统,该系统包括上述第三方面或第三方面的任一种可能实现方式中的装置以及第四方面或第四方面中的任一种可能实现方式中的装置;或者
该系统包括上述第五方面或第五方面的任一种可能实现方式中的装置以及第六方面或第六方面中的任一种可能实现方式中的装置。
第八方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述第一方面或第一方面任一种可能实现方式中的方法。
第九方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述第二方面或第二方面任一种可能实现方式中的方法。
第十方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第十一方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的指令。
附图说明
图1示出了本申请实施例的网络系统的示意图。
图2示出了根据本申请实施例的用于实现组播业务的方法的示意性流程图。
图3示出了根据本申请实施例的基于隧道的网络系统的示意图。
图4示出了根据本申请实施例的组播树分支的示意图。
图5示出了根据本申请实施例的另一组播树分支的示意图。
图6示出了根据本申请实施例的另一组播树分支的示意图。
图7出了根据本申请实施例的另一基于隧道的网络系统的示意图。
图8示出了根据本申请实施例的另一组播树分支的示意图。
图9示出了根据本申请实施例的用于实现组播业务的装置的示意性框图。
图10示出了根据本申请实施例的另一用于实现组播业务的装置的示意性框图。
图11示出了根据本申请实施例的另一用于实现组播业务的装置的示意性框图。
图12示出了根据本申请实施例的另一用于实现组播业务的装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为便于理解,下面先对本申请实施例所涉及的相关术语进行解释说明。
组播:指组播源仅发送一次信息,组播路由器借助组播路由协议为组播数据包建立树型路由,被传递的信息在路组播源尽可能远的分叉路口才开始复制和分发。
协议无关组播-稀疏模式(protocol independent multicast-sparse mode,PIM-SM):一种组播路由协议,用于从接收端向组播源方向或汇聚点RP方向逐跳建立组播路由表项,最终构造出一棵以组播源(source)或汇聚点(rendezvous point,RP)为根,以接收端为叶子的树状结构(即组播树)。
组播源(source):一般是服务器,可以构造以组播源为根的组播树SPT,将组播报文由该组播源通过SPT进行复制转发,也可以选择使用汇聚点RP提供的代理服务,将组播报文先发送至RP,由RP进行复制转发。
汇聚点(rendezvous point,RP):一种特殊的路由器,继承自标准的PIM-SM协议,可以为组播源提供代理服务,即组播源用单播隧道把组播报文发送给RP,组播报文由RP通过RPT进行复制转发。
组播路由器(router):支持分发组播报文的路由器,通过组播路由协议建立组播路由表,组播路由协议可以为PIM-SM,还可以为其他组播路由协议,本申请实施例对此不作限定。在本文中,也将组播路由器用R表示。
指定路由器(designated router,DR):一个共享介质局域网(如以太网)可能和多个组播路由器连接,这些组播路由器中将会选出一个路由器来负责为这个局域网的主机提供组播路由协议服务,这个被选出来的组播路由器就是指定路由器DR,也可称之为网关。
客户端(client):支持因特网组管理协议(Internet Group Manage Protocol,IGMP)的主机,如计算机、手机等,本申请实施例对此不作限定。在本文中,也将客户端称为终端设备。
组播转发表项:保存至已经加入组播组(或指定组播源的组播组)的网络设备中,用于表示该网络设备所加入的组播组地址(或者,组播组地址和组播源地址),具体可以表示为MFIB表项,也可以表示为(*,G),(S,G),其中,*为通配符,代表未指定组播源,G为组播组地址,S为组播源地址。
上游邻居:组播路由器发送消息时的下一跳节点,该消息可以是加入消息(joinmessage),也可以是剪枝消息(prune message)。
PIM-SM邻居:支持PIM-SM协议的邻居路由器。
图1是本申请实施例的网络系统的示意图。如图1所示,该网络系统100包括:组播源101、组播路由器103、组播路由器104、指定路由器105、指定路由器106、指定路由器107、客户端108、客户端109、客户端110以及客户端111。可选地,该网络系统100还可以包括汇聚点102。
在实现组播业务时,客户端可以向组播源方向逐跳建立组播路由表项,最终构造出一棵以组播源或汇聚点为根,以客户端为叶子的树状结构(组播树),如图1所示。在组播树建立完成之后,组播源就可以将组播报文从根节点开始朝着叶子方向,在每个组播路由器上进行转发,直到客户端。应理解,上述网络系统100中的组播源、组播路由器、指定路由器都支持PIM-SM协议,才可形成如图1所示的组播树结构。
图1仅为便于理解而示例的简化示意图,网络中还可以包括其他数量的组播路由器、指定路由器以及客户端等等,图1中未予以画出,但本申请实施例对此不作限定。图1中的组播树为4层,在实际应用中,组播树的层数也可以是其他数量,本申请实施例对此也不作限定。
图2示出了本申请实施例的用于实现组播业务的方法的示意性流程图200。该方法200可以应用于图1所示的网络系统100,但本申请实施例不限于此。
S210,终端设备向第二网络设备发送加入请求消息,所述加入请求消息用于请求加入组播组,所述加入请求消息中携带组播组地址;
在一种可能的实现方式中,该加入请求消息可以为互联网组管理协议成员报告IGMP Membership Report消息。
S220,所述第二网络设备接收加入请求消息,并根据所述加入请求消息,发送第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址;
S230,第一网络设备接收所述第二网络设备发送的第一单播加入消息,并根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道。
具体地,终端设备可以向第二网络设备发送加入请求消息,请求加入组播组,该第二网络设备根据该加入请求消息,构造第一单播加入消息并发送,该第一单播加入消息的目的地址为组播源地址或RP地址。网络中能够识别该第一单播加入消息的第一个设备可以将其捕获,即第一网络设备,该第一网络设备可以根据该第一单播接入消息建立该第一网络设备到该第二网络设备的隧道,以便于后续该第一网络设备可以将组播报文转发至该第二网络设备,再由该第二网络设备将组播报文转发至该终端设备。
针对第一网络设备捕获上述第一单播加入消息,在具体实现中,该第一组播路由器可以通过预先配置的访问控制列表匹配第一单播加入消息的某些特征字段,例如,协议号、消息类型、目的地址类型等等,来截获目的地址不是自身组播路由器的地址的第一单播加入消息。应理解,本申请实施例的用于实现组播业务的方法,还可以通过其他方式捕获单播加入消息,例如,上述第一单播加入消息,本申请实施例对此不作限定。
上述终端设备可以为网络系统100中的客户端,第二网络设备可以为网络系统100中的指定路由器DR,第一网络设备可以为网络系统100中的组播路由器,也可以为网络系统100中的组播源Source,还可以为网络系统100中的汇聚点RP,本申请实施例对此不作限定。
应理解,上述加入请求消息以及第一单播加入消息可以仅携带组播组地址,也可以携带组播组地址和组播源地址,本申请实施例对此不作限定。由于一个组播组可能包括多个组播源,终端设备可以仅选择组播组加入,也可以选择组播组以及该组播组中特定的组播源加入,本文中将终端设备选择组播组以及该组播组中特定的组播源加入的方式称为“指定源方式”。
还应理解,上述加入请求消息可以是终端设备发送给第二网络设备的,也可以是其他网络设备发送给该第二网络设备的,本申请实施例对此不作限定。
一般情况下,在建立组播树的过程中,支持组播路由协议的路由器会向组播源方向或汇聚点RP方向逐跳发送组播加入消息,这就要求所有路由器必须支持对应的组播路由协议。在加入过程中,某一台组播路由器在构造组播加入消息的过程中,如果该组播路由器的下一跳路由器不支持组播路由协议,这台路由器便无法加入到组播树,该组播路由器下的终端设备无法接收组播报文。
本申请实施例的用于实现组播业务的方法,通过引入单播加入消息,截获单播加入消息的组播路由器能够自动建立隧道连通本地路由器,从而实现自动穿越单播网络,能够使下一跳路由器不支持组播路由协议的组播路由器加入到组播组中,有利于提高组播业务的可用性。
作为一个可选的实施例,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之前,所述方法还包括:
所述第一网络设备根据所述第一单播加入消息中携带的第一字段,确定所述第二网络设备是否为所述第一网络设备的邻居节点,其中,所述第一单播加入消息每被一个网络设备转发一次,所述第一字段的值减1;
所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道,包括:
若所述第二网络设备不是所述第一网络设备的邻居节点,所述第一网络设备建立所述第一网络设备到所述第二网络设备的隧道。
具体地,在第一网络设备接收第一单播加入消息之后,该第一网络设备可以先根据该第一单播加入消息,确定是否需要建立隧道。该第一网络设备可以根据该第一单播加入消息中携带的第一字段,确定该第一单播加入消息的发送者(即第二网络设备)是否为该第一网络设备的邻居节点。若该第二网络设备是该第一网络设备的邻居节点,该第一网络设备可以直接将第一单播加入消息中携带的组播组地址加入组播转发表项,将接收到该第一单播加入消息的接口加入组播转发表项的出接口列表。若该第二网络设备不是该第一网络设备的邻居节点,该第一网络设备可以建立该第一网络设备到该第二网络设备的隧道,用于后续转发组播报文。
应理解,上述第一字段为该第一单播加入消息中的某个字段,该第一单播加入消息每被一个网络设备转发一次,该第一字段的值减1,因此,第一网络设备可以通过该第一字段的值来判断该第一单播加入消息被转发了几次,即判断该第一单播加入消息的发送者是否为第一网络设备的邻居。在一种具体实现中,该第一字段可以为互联网协议版本4(internet protocol version 4,IPv4)中的存活时间(time to live,TTL)字段,也可以为互联网协议版本6(internet protocol version 6,IPv6)中的跳数限制(hop limit)字段,本申请实施例对此不作限定。
还应理解,若所述第一字段等于初始值,所述第一网络设备可以确定所述第二网络设备为所述第一网络设备的邻居节点;若所述第一字段小于所述初始值,所述第一网络设备可以确定所述第二网络设备不是所述第一网络设备的邻居节点。
作为一个可选的实施例,当所述第一单播加入消息的目的地址为所述组播源地址时,所述第一网络设备的地址与所述组播源地址不相同;
当所述第一单播加入消息的目的地址为所述RP地址时,所述第一网络设备的地址与所述RP地址不相同。
具体地,若该终端设备请求加入以组播源Source为根的组播树SPT,该第一单播加入消息的目的地址为该组播源地址,第一网络设备的地址与该组播源地址不相同,即该第一网络设备可以为中间节点,例如,组播路由器;若该终端设备请求加入以RP为根的组播树RPT,该第一单播加入消息的目的地址为该RP地址,第一网络设备的地址与该RP地址不相同,即该第一网络设备可以为中间节点,例如,组播路由器。
作为一个可选的实施例,所述方法还包括:
所述第一网络设备建立所述组播组与所述第一网络设备到所述第二网络设备的隧道之间的对应关系。
具体地,该第一网络设备建立第一网络设备到第二网络设备的隧道,还需要建立上述组播组与该隧道之间的对应关系。在一种具体实现中,该第一网络设备可以将该第一网络设备到第二网络设备的隧道添加至组播转发表项的出接口列表中。
作为一个可选的实施例,所述第二网络设备支持协议无关组播-稀疏模式PIM-SM协议,在所述第二网络设备根据所述加入请求消息,发送第一单播加入消息之前,所述方法还包括:
所述第二网络设备根据所述组播源地址或所述RP地址,查表获得所述第二网络设备的上游邻居的地址;
所述第二网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述第二网络设备根据所述加入请求消息,发送第一单播加入消息,包括:
若所述上游邻居不支持所述PIM-SM协议,所述第二网络设备发送所述第一单播加入消息。
具体地,第二网络设备在接收加入请求消息之后,可以先根据组播源地址,查表获得该第二网络设备的上游邻居的地址,然后,该第二网络设备判断该上游邻居是否支持PIM-SM协议,即判断该第二网络设备的上游邻居是否为该第二网络设备的PIM-SM邻居。若该上游邻居支持PIM-SM协议,该第二网络设备可以向该上游邻居发送组播加入消息,若该上游邻居不支持PIM-SM协议,该第二网络设备可以发送上述第一单播加入消息。
应理解,在第二网络设备发送第一单播加入消息的情况下,由于该第二网络设备的上游邻居不支持PIM-SM协议,无法识别该第一单播加入消息,该第二网络设备的上游邻居会直接转发该第一单播加入消息,直到第一个能够识别该第一单播加入消息的节点,即第一网络设备。
作为一个可选的实施例,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之后,所述方法还包括:
所述第一网络设备发送第一组播加入消息,所述第一组播加入消息用于请求加入所述组播组,所述第一组播加入消息的源地址为所述第一网络设备的地址,所述第一组播加入消息的目的地址为组播路由器的组播地址。
具体地,在第一网络设备建立该第一网络设备到第二网络设备的隧道之后,该第一网络设备还可以向上发送第一组播加入消息,该第一组播加入消息的目的地址为组播路由器的组播地址。应理解,在具体实现中,该第一网络设备继续向上发送第一组播加入消息的前提是,该第一网络设备的组播转发表项是在接收到第一单播加入消息之后新建的,且该第一网络设备的上游邻居为该第一网络设备的PIM-SM邻居,但本申请实施例对此不作限定。在一种具体实现中,该网络系统中的组播路由器均支持PIM-SM协议,该第一组播加入消息的目的地址即为224.0.0.13。
作为一个可选的实施例,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之后,所述方法还包括:
所述第一网络设备发送第二单播加入消息,所述第二单播加入消息用于请求加入所述组播组,所述第二单播加入消息的源地址为所述第一网络设备的地址,所述第二单播加入消息的目的地址为所述组播源地址或所述RP地址。
具体地,在第一网络设备建立该第一网络设备到第二网络设备的隧道之后,该第一网络设备还可以向上发送第二单播加入消息,该第二单播加入消息的目的地址为组播源地址或RP地址。应理解,在具体实现中,若该第一网络设备的组播转发表项是在接收到第一单播加入消息之后新建的,该第一网络设备就需要向上继续发送第二单播加入消息。
作为一个可选的实施例,所述第一网络设备支持协议无关组播-稀疏模式PIM-SM协议,在所述第一网络设备发送第二单播加入消息之前,所述方法还包括:
所述第一网络设备根据所述组播源地址或所述RP地址,查表获得所述第一网络设备的上游邻居的地址;
所述第一网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述第一网络设备发送第二单播加入消息,包括:
若所述上游邻居不支持所述PIM-SM协议,所述第一网络设备发送所述第二单播加入消息。
具体地,该第一网络设备在发送第二单播加入消息之前,也可以判断该第一网络设备的上游邻居是否支持PIM-SM协议,即判断该第一网络设备的上游邻居是否为该第一网络设备的PIM-SM邻居。若该上游邻居支持PIM-SM协议,该第一网络设备可以向该上游邻居发送上述第一组播加入消息,若该上游邻居不支持PIM-SM协议,该第二网络设备可以发送上述第二单播加入消息。
作为一个可选的实施例,所述方法还包括:
所述第二网络设备接收离开请求消息,所述离开请求消息用于请求离开所述组播组,所述离开请求消息中携带组播组地址;
所述第二网络设备根据所述离开请求消息,将接收所述离开请求消息的物理接口从与所述组播组地址对应的组播转发表项的出接口列表中删除,并判断所述出接口列表是否为空;
若所述出接口列表为空,所述第二网络设备发送第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第二网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
具体地,在加入组播组之后,终端设备可以向第二网络设备发送离开请求消息,请求离开该组播组。该第二网络设备接收该离开请求消息,将接收该离开请求消息的物理接口从与该离开请求消息中携带的组播组地址对应的组播转发表项的出接口列表中删除。
进一步地,该第二网络设备可以判断该出接口列表是否为空,若该出接口列表不为空,该第二网络设备不做任何处理;若该出接口列表为空,该第二网络设备可以向上继续发送第一单播剪枝消息,请求离开该组播组。
在一种可能的实现方式中,上述离开请求消息可以为IGMP Leave Group消息,但本申请实施例对此不作限定。
作为一个可选的实施例,在所述第二网络设备发送第一单播剪枝消息之前,所述方法还包括:
所述第二网络设备根据所述组播源地址或所述RP地址,查表获得所述第二网络设备的上游邻居的地址;所述第二网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述第二网络设备发送第一单播剪枝消息,包括:
若所述上游邻居不支持所述PIM-SM协议,所述第二网络设备发送所述第一单播剪枝消息。
具体地,第二网络设备可以先根据组播源地址或RP地址,查表获得该第二网络设备的上游邻居的地址,然后,该第二网络设备判断该上游邻居是否支持PIM-SM协议,即判断该第二网络设备的上游邻居是否为该第二网络设备的PIM-SM邻居。若该上游邻居支持PIM-SM协议,该第二网络设备可以向该上游邻居发送组播剪枝消息,若该上游邻居不支持PIM-SM协议,该第二网络设备可以发送上述第一单播剪枝消息。
作为一个可选的实施例,所述方法还包括:
所述第一网络设备接收第三网络设备发送的第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第三网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址;
所述第一网络设备根据所述第一单播剪枝消息,确定是否存在与所述第一单播剪枝消息中携带的信息对应的第一组播转发表项;
若不存在所述第一组播转发表项,所述第一网络设备确定所述第一网络设备的地址与所述第一单播剪枝消息的目的地址是否相同;
若所述第一网络设备的地址与所述第一单播剪枝消息的目的地址相同,所述第一网络设备忽略所述第一单播剪枝消息;
若所述第一网络设备的地址与所述第一单播剪枝消息的目的地址不相同,所述第一网络设备根据所述第一单播剪枝消息的目的地址,继续转发所述第一单播剪枝消息。
具体地,该第一网络设备可以接收到第三网络设备发送的第一单播剪枝消息,根据该第一单播剪枝消息,确定是否存在第一组播转发表项,该第一组播转发表项与该第一单播剪枝消息中携带的信息对应,例如,若该第一单播剪枝消息中携带组播组地址G,该第一组播转发表项可以为(*,G),若该第一单播剪枝消息中携带组播组地址G和组播源地址S,该第一组播转发表项可以为(S,G)。
若不存在第一组播转发表项,该第一网络设备确定该第一网络设备的地址与该第一单播剪枝消息的目的地址是否相同,在该第一网络设备的地址与该第一单播剪枝消息的目的地址不相同的情况下,该第一网络设备继续转发该第一单播剪枝消息。应理解,对于第一网络设备的地址与该第一单播剪枝消息的目的地址相同的情况,由于并不存在上述第一组播转发表项,说明并不存在对应的分支,该第一单播剪枝消息发送有误,该第一网络设备可以忽略该第一单播剪枝消息。
应理解,该第三网络设备可以与第二网络设备相同,也可以与第二网络设备不相同,本申请实施例对此不作限定。若第三网络设备与第二网络设备相同,那么会存在对应的第一组播转发表项,剪枝过程如下所述。
作为一个可选的实施例,所述方法还包括:
若存在所述第一组播转发表项,所述第一网络设备确定是否存在所述第一网络设备到所述第三网络设备的隧道;
若不存在所述第一网络设备到所述第三网络设备的隧道,所述第一网络设备将接收所述第一单播剪枝消息的物理接口从所述第一组播转发表项的出接口列表中删除;
若存在所述第一网络设备到所述第三网络设备的隧道,所述第一网络设备拆除所述第一网络设备到所述第三网络设备的隧道,并将所述第一网络设备到所述第三网络设备的隧道从所述第一组播转发表项的出接口列表中删除。
具体地,对于存在与该第一单播剪枝消息中携带的信息对应的第一组播转发表项的情况,该第一网络设备可以确定是否存在第一网络设备到第三网络设备的隧道,若不存在该隧道,该第一网络设备可以直接将接收第一单播剪枝消息的物理接口从第一组播转发表项的出接口列表中删除,若存在该隧道,该第一网络设备需要拆除该隧道,并将该隧道从第一组播转发表项的出接口列表中删除。
作为一个可选的实施例,所述方法还包括:
所述第一网络设备判断所述第一组播转发表项的出接口列表是否为空;
若所述第一组播转发表项的出接口列表为空,所述第一网络设备删除所述第一组播转发表项。
具体地,该第一网络设备在处理完第一单播剪枝消息之后,还可以判断该第一组播转发表项的出接口列表是否为空,若该出接口列表为空,该第一网络设备可以删除该第一组播转发表项。应理解,若该出接口列表不为空,说明对应的组播树中该第一网络设备下还存在其他分支,该第一网络设备不做任何处理。
作为一个可选的实施例,所述第一网络设备不是组播源或汇聚点RP,所述方法还包括:
所述第一网络设备发送第二单播剪枝消息,所述第二单播剪枝消息用于请求离开所述组播组,所述第二单播剪枝消息的源地址为所述第一网络设备的地址,所述第二单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
具体地,若该第一网络设备不是组播源或RP,即该第一网络设备不是根节点,那么该第一网络设备在删除该第一组播转发表项之后,需要向上继续发送第二单播剪枝消息,直到组播源或RP为止。
作为一个可选的实施例,所述方法还包括:
在所述第一网络设备接收到组播报文的情况下,所述第一网络设备确定是否存在与所述组播报文的目的地址对应的第二组播转发表项;
若不存在所述第二组播转发表项,所述第一网络设备确定所述组播报文是否经过隧道封装;
若所述组播报文未经过隧道封装,所述第一网络设备发送第三单播剪枝消息,所述第三单播剪枝消息用于请求离开所述组播组,所述第三单播剪枝消息的源地址为所述第一网络设备的地址,所述第三单播剪枝消息的目的地址为所述组播源地址或所述RP地址;
若所述组播报文经过隧道封装,所述第一网络设备发送第四单播剪枝消息,所述第四单播剪枝消息用于请求离开所述组播组,所述第四单播剪枝消息的源地址为所述第一网络设备的地址,所述第四单播剪枝消息的目的地址为封装所述组播报文的隧道的隧道源地址。
具体地,在第一网络设备接收到组播报文之后,该第一网络设备可以根据该组播报文的目的地址,确定是否存在对应的第二组播转发表项。若存在,该第一网络设备可以直接根据该第二组播转发表项中的出接口列表,将该组播报文发送至对应的出接口。若不存在,该第一网络设备可以发送单播剪枝消息,请求组播源停止向该第一网络设备发送组播报文。该第一网络设备可以判断该组播报文是否经过隧道封装,若该组播报文未经过隧道封装,该第一网络设备可以发送目的地址为组播源地址或RP地址的第三单播剪枝消息,若该组播报文经过隧道封装,该第一网络设备可以发送目的地址为封装该组播报文的隧道的隧道源地址的第四单播剪枝消息。在本申请实施例中,通过组播报文触发剪枝消息的发送,可以避免不必要的组播报文的转发,节省开销。
应理解,组播报文的目的地址为组播组地址,组播报文的源地址为组播源地址或RP地址。例如,存在一个组播组G、两个组播源S1和S2,那么在一台组播路由器上会存在(*,G),(S1,G)和(S2,G)三个表项。目的地址为G,源地址为S1的组播报文会命中(*,G)和(S1,G)两个表项;目的地址为G,源地址为S2的组播报文会命中(*,G)和(S2,G)两个表项;目的地址为G,源地址为RP的组播报文会命中(*,G)表项。
作为一个可选的实施例,所述第一单播加入消息为周期性发送的消息,且所述第一单播加入消息的发送周期为第一时间段,所述方法还包括:
若所述第一网络设备在所述第一时间段内未接收到所述第二网络设备再次发送的所述第一单播加入消息,所述第一网络设备拆除所述第一网络设备到所述第二网络设备的隧道。
作为一个可选的实施例,所述第一单播加入消息为周期性发送的消息,且所述第一单播加入消息的发送周期为第一时间段,所述方法还包括:
若所述第一网络设备在所述第一时间段内未接收到所述第二网络设备再次发送的所述第一单播加入消息,所述第一网络设备从对应的组播转发表项的出接口列表中删除之前接收所述第一单播加入消息的物理接口。
在本申请实施例中,第一单播加入消息为周期性发送的消息,第一网络设备每收到一次第一单播加入消息便刷新定时器,定时器时长为第一时间段,若定时器超时,还未收到第一单播加入消息,若该第一网络设备与该第二网络设备之间建立了隧道,该第一网络设备可以拆除已经建立的、第一网络设备到第二网络设备的隧道。进一步地,该第一网络设备可以从组播转发表项的出接口列表中将该第一网络设备到第二网络设备的隧道删除。若该第一网络设备与该第二网络设备之间不存在隧道,该第一网络设备可以直接从对应的组播转发表项的出接口列表中将之前存储的、接收该第一单播加入消息的物理接口删除。
图3示出了本申请实施例的另一网络系统的示意图。其中各网元的单播地址如下:
DR1:10.9.1.1
DR 2:10.9.2.1
DR 3:10.9.3.1
R1:10.10.1.1
R2(不支持PIM-SM):10.10.2.1
R3(不支持PIM-SM):10.10.3.1
R4:10.10.4.1
R5(不支持PIM-SM):10.10.5.1
R6:10.10.6.1
R7(PIM-SM进程运行一段时间后故障):10.10.7.1
R8:10.10.8.1
RP:10.0.0.1
Source:10.10.10.1
Source已经通过隧道在向RP发送组播内容,组播内容向组播组224.10.10.10(即组播组地址)发送,所有组播路由器都静态配置了RP的信息。因此,在该网络中,既包括以Source为根的组播树SPT,又包括以RP为根的组播树RPT。在图3-图8中,将接收消息的接口称为端口(port),但本申请实施例对此不作限定。
下面结合一个具体的实施例,对本申请的用于实现组播业务的方法进行详细说明。在本申请实施例中,组播树的建立流程如下:
第一步:Client 1以指定源方式加入组播树RPT
1、Client 1构造IGMP Membership Report消息发送给DR 1,其中,type字段为0x16(Membership Report),组播组地址(group address)字段中填入待加入的组播组地址224.10.10.10,组播源地址(source address)字段填入组播源地址10.10.10.1,目的地址为224.0.0.2(代表所有组播路由器的组播地址)。
2、DR 1用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项,并把接收到IGMP Membership Report消息的接口Port 1加入到新建立MFIB表项的出接口列表中。
3、DR 1构造第一单播加入消息,该第一单播加入消息的目的地址为RP地址10.0.0.1,源地址为DR 1的地址10.9.1.1,存活时间TTL字段初始化为255,此外,DR 1把IGMP Membership Report消息中的组播组地址填入该第一单播加入消息的MulticastGroup Address字段,把IGMP Membership Report消息中的组播源地址填入该第一单播加入消息的Joined Source Address字段。
4、R2是普通的单播路由器,不识别第一单播加入消息,直接转发该第一单播加入消息。
5、R4收到上述第一单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。
6、R4检查单播加入消息的TTL字段,由于TTL为254,建立R4到消息源地址10.9.1.1(即DR 1)的隧道Tunnel 1,隧道的源地址是R4的地址10.10.4.1,目的地址是DR 1地址10.9.1.1。R4把该隧道添加至新建立的MFIB表项的出接口列表中。
7、R4继续向上游发送第二单播加入消息,该第二单播加入消息的目的地址为RP地址10.0.0.1,源地址为R4的地址10.10.4.1,TTL初始化为255,R4把组播组地址填入第二单播加入消息的Multicast Group Address字段,把组播源地址填入第二单播加入消息的Joined Source Address字段。
8、R7收到第二单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。
9、R7检查第二单播加入消息的TTL字段,由于TTL为255,R7把收到消息的接口port1添加至新建立的MFIB表项的出接口列表中。
10、R7继续向上游发送第三单播加入消息,该第三单播加入消息的目的地址为RP地址10.0.0.1,源地址为R7自身的地址10.10.7.1,TTL初始化为255,把组播组地址填入第三单播加入消息的Multicast Group Address字段,把组播源地址填入第三单播加入消息的Joined Source Address字段。
11、RP收到第三单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。
12、RP检查第三单播加入消息的TTL字段,由于TTL为255,RP把收到消息的接口port 1添加至新建立的MFIB表项的出接口列表中。
经过上述过程,Client 1已经加入了以RP为根的组播树RPT,如图4所示。
第二步:Client 2以指定源方式加入组播树RPT
1、Client 2构造IGMP Membership Report消息发送给DR 2,其中,type字段为0x16(Membership Report),group address字段中填入待加入的组播组地址224.10.10.10,source address字段填入组播源地址10.10.10.1,目的地址为224.0.0.2(代表所有组播路由器的组播地址)。
2、DR 2用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项,并把接收到IGMP Membership Report消息的接口Port 1加入到新建立MFIB表项的出接口列表中。
3、DR 2构造第四单播加入消息,消息的目的地址为RP地址10.0.0.1,源地址为DR2的地址10.9.2.1,把IGMP Membership Report消息中的组播组地址填入第四单播加入消息的Multicast Group Address字段,把IGMP Membership Report消息中的组播源地址填入第四单播加入消息的Joined Source Address字段。
4、R3是普通的单播路由器,不识别第四单播加入消息,直接转发该消息。
5、RP收到该第四单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中MFIB表项。
6、RP检查第四单播加入消息的TTL字段,由于TTL为254,建立RP到消息源地址10.9.2.1(即DR 2)的隧道Tunnel 2,隧道的源地址是RP地址10.0.0.1,目的地址是DR 2地址10.9.2.1。RP把该隧道添加至MFIB表项的出接口列表中。
经过上述过程,Client 2已经加入了以RP为根的组播树RPT,如图5所示。
第三步:Client 3加入组播树SPT
1、Client 3构造IGMP Membership Report消息发送给DR 3,type字段为0x16(Membership Report),group address字段中填入待加入的组播组地址224.10.10.10,source address字段填入组播源地址10.10.10.1,目的地址为224.0.0.2(代表所有组播路由器的组播地址)。
2、DR 3用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。并把接收到IGMP Membership Report消息的接口Port 1加入到新建立MFIB表项的出接口列表中。
3、DR 3构造第五单播加入消息,该第五单播加入消息的目的地址为组播源地址10.10.10.1,源地址为DR 3的地址10.9.3.1,存活时间TTL字段初始化为255,此外,DR3把IGMP Membership Report消息中的组播组地址填入该第五单播加入消息的MulticastGroup Address字段。
4、R5是普通的单播路由器,不识别第五单播加入消息,直接转发该消息。
5、R8收到第五单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。
6、R8检查第五单播加入消息的TTL字段,由于TTL为254,建立R8到消息源地址10.9.3.1(即DR 3)的隧道Tunnel 3,隧道的源地址是R8地址10.10.8.1,目的地址是DR3地址10.9.3.1。R8把该隧道添加至新建立的MFIB表项的出接口列表中。
7、R8到Source的加入流程和上述过程类似,此处不再赘述。
经过上述过程,Client 3已经加入了以Source为根的组播树SPT,如图6所示。至此,Client 1、Client 2和Client 3均已加入组播组,组播报文可以沿着如图3中实线所示的路径进行转发,直到各个客户端。
在实际应用中,可能会存在路由器的PIM-SM进程发生故障的情况,导致该路由器对应的客户端的组播业务发生中断,下面以R7的PIM-SM进程发生故障为例进行说明。
第四步:R7的PIM-SM进程出现故障:
1、R4定期发送第二单播加入消息,该第二单播加入消息的目的地址为RP地址10.0.0.1,源地址为R4的地址10.10.4.1,TTL初始化为255,R4把组播组地址填入第二单播加入消息的Multicast Group Address字段,把组播源地址填入第二单播加入消息的Joined Source Address字段。
2、R7的PIM-SM进程故障之后退化成是单播路由器,不识别第二单播加入消息,R7直接转发该第二单播加入消息。
3、RP收到第二单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中MFIB表项。
4、RP检查第二单播加入消息的TTL字段,由于TTL为254,建立RP到消息源地址10.10.4.1(即R4)的隧道Tunnel 4,隧道的源地址是RP地址10.0.0.1,目的地址是R4地址10.10.4.1。RP把该隧道添加至MFIB表项的出接口列表中。
5、由于R7的PIM-SM进程故障之后,不再发送第三单播加入消息到RP,超时后,RP把Port 1从MFIB表项的出接口列表中删除。
经过上述步骤,便成功越过了故障设备R7,建立了R4至RP的隧道,如图8所示,组播报文可以沿着如图7中实线所示的路径进行转发,组播业务不会受到影响。因此,本申请实施例能够在支持组播路由协议的路由器发生故障时建立用于组播的隧道,不会导致组播业务中断,有利于提高组播业务的可靠性。
第五步:R7的PIM-SM进程恢复
1、R4定期发送第二单播加入消息,该第二单播加入消息的目的地址为RP地址10.0.0.1,源地址为R4的地址10.10.4.1,TTL初始化为255,R4把组播组地址填入第二单播加入消息的Multicast Group Address字段,把组播源地址填入第二单播加入消息的Joined Source Address字段。
2、R7的PIM-SM进程恢复后,能够识别第二单播加入消息,用组播组地址224.10.10.10组播源地址10.10.10.1查找MFIB表项,查找未命中,新建MFIB表项。
3、R7检查第二单播加入消息的TTL字段,由于TTL为255,把接收到消息的接口port1添加至MFIB表项的出接口列表中。
4、R7继续向上游发送第三单播加入消息,该第三单播加入消息的目的地址为RP地址10.0.0.1,源地址为R7的地址10.10.7.1,TTL初始化为255,把组播组地址填入第三单播加入消息的Multicast Group Address字段,把组播源地址填入第三单播加入消息的Joined Source Address字段。
5、RP收到第三单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中MFIB表项。
6、RP检查第三单播加入消息的TTL字段,由于TTL为255,把收到消息的接口port1添加至新建立的MFIB表项的出接口列表中。
7、由于RP不再收到R4发出的第二单播加入消息,超时之后,Tunnel 4被从出接口列表中删除,Tunnel 4被拆除。
应理解,上述R7的PIM-SM进程出现故障,但是R7还可以进行正常的消息转发,如果R7整机出现故障,那么R4发出的单播加入消息就无法通过R7转发。由于R7的故障会触发单播路由协议收敛,且R6有链路和RP相连,单播路由协议就会把R4上目的地址为RP的路由的下一跳地址修改为R6的地址。在这种情况下,单播路由协议收敛完成后,R4发出的第二单播加入消息就可以通过R6转发给RP,从而让R4加入组播树。
第六步:Client 1取消点播(即退出组播树)
1、Client 1向DR 1发送IGMP Leave Group消息,该消息携带组播组地址224.10.10.10和组播源地址10.10.10.1。
2、DR 1接收到Client 1发送的IGMP Leave Group消息,根据组播组地址224.10.10.10和组播源地址10.10.10.1,确定对应的MFIB表项,将接收该消息的接口从该MFIB表项中删除。
进一步地,该DR 1判断该MFIB表项是否为空,若该MFIB表项为空,DR 1删除该MFIB表项,构造第一单播剪枝消息并发送。该第一单播剪枝消息的目的地址为RP地址10.0.0.1,源地址为DR1的地址10.9.1.1,DR 1把IGMP消息中的组播组地址填入第一单播剪枝消息的Multicast Group Address字段,把IGMP消息中的组播源地址填入第一单播剪枝消息的Pruned Source Address字段。
3、R2是普通的单播路由器,不识别第一单播剪枝消息,直接转发该消息。
4、R4收到上述第一单播剪枝消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中,查找该第一单播剪枝消息的源地址10.9.1.1的隧道,得到Tunnel1,把该隧道从MFIB表项的出接口列表中删除,并拆除该隧道。
5、由于MFIB表项的出接口列表为空,因此R4删除MFIB表项,并向继续构造第二单播剪枝消息向上游发送。
6、后续第二单播剪枝消息的发送和处理流程与上面相同,此处不再赘述。
经过上述步骤,已经建立的如图4所示的组播树RPT的分支将会被删除。但是,在第六步的执行过程中,可能出现路由器发生故障,导致单播剪枝消息丢包的情况,下面以R2发生故障为例进行说明。
第七步:Client 1取消点播失败
1、DR 1在接收到Client 1发送的IGMP Leave Group消息之后,构造第一单播剪枝消息并发送,R2是普通的单播路由器,不识别第一单播剪枝消息,直接转发该消息。此时,由于R2发生故障,导致该第一单播剪枝消息丢包。
2、R4未收到第一单播剪枝消息,因此会继续向DR 1复制组播报文。
3、DR 1收到组播报文,未查找到对应的MFIB表项,确定其之前发送的第一单播剪枝消息没有被上游正确接收和处理,因此,DR 1再次构造第一单播剪枝消息并发送,由于组播报文是从R4到DR 1的隧道中出来的,因此第一单播剪枝消息的目的地址为R4地址10.10.4.1,消息的源地址为DR 1的地址10.9.1.1,把组播报文中的组播组地址填入第一单播剪枝消息的Multicast Group Address字段。
4、R4收到上述第一单播剪枝消息,用组播组地址224.10.10.10查找MFIB表项,查找命中,查找该第一单播剪枝消息的源地址10.9.1.1的隧道,得到Tunnel 1,把该隧道从MFIB表项的出接口列表中删除,并拆除该隧道。
5、由于MFIB表项的出接口列表为空,因此R4删除MFIB表项,并向继续构造第二单播剪枝消息向上游发送。
6、后续第二单播剪枝消息的发送和处理流程与上面相同,此处不再赘述。
在本申请实施例中,通过引入单播加入消息,能够自动建立隧道连通本地路由器和通过单播加入消息发现的远程组播路由器,从而实现自动穿越单播网络,提高了组播业务的可用性。此外,在任意组播路由器发生故障之后,会再次发起单播加入过程寻找另一个最近的组播路由器重新恢复业务,大大提高了组播业务的可靠性。
下面结合另一个具体的实施例,对本申请的用于实现组播业务的方法进行详细说明。在本申请实施例中,组播树的建立流程如下:
第一步:Client 1以指定源方式加入组播树RPT
1、Client 1构造IGMP Membership Report消息发送给DR 1,其中,type字段为0x16(Membership Report),group address字段中填入待加入的组播组地址224.10.10.10,source address字段填入组播源地址10.10.10.1,目的地址为224.0.0.2(代表所有组播路由器的组播地址)。
2、DR 1用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项,并把接收到IGMP Membership Report消息的接口Port 1加入到新建立MFIB表项的出接口列表中。
3、DR 1用IGMP Membership Report消息中的组播组地址224.10.10.10查找对应的RP地址10.0.0.1,再用RP地址10.0.0.1查找MRIB表,获取上游邻居R2的地址10.10.2.1。DR 1检查R2不是该DR 1的PIM-SM邻居,构造第一单播加入消息,目的地址为RP地址10.0.0.1,源地址为DR 1的地址10.9.1.1,DR 1把组播组地址填入第一单播加入消息的Multicast Group Address字段,把组播源地址填入第一单播加入消息的Joined SourceAddress字段。
4、R2是普通的单播路由器,不识别第一单播加入消息,直接转发该消息。
5、R4收到上述第一单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。由于收到的是单播加入消息,R4建立R4到单播消息源地址10.9.1.1(即DR 1)的隧道Tunnel 1,隧道的源地址是R4地址10.10.4.1,目的地址是DR 1地址10.9.1.1。R4把该隧道添加至新建立的MFIB表项的出接口列表中。
6、R4用RP地址10.0.0.1查找MRIB表,获取下一跳R7地址10.10.7.1。R4检查R7是PIM-SM邻居,构造第一组播加入消息,目的地址为PIM-SM路由器的组播地址224.0.0.13,源地址为R4的地址10.10.4.1,R4把R7地址10.10.7.1填入第一组播加入消息的UpstreamNeighbor Address字段,把组播组地址填入第一组播加入消息的Multicast GroupAddress字段,把组播源地址填入第一组播加入消息的Joined Source Address字段。
7、R6收到上述第一组播加入消息,将该消息中的Upstream Neighbor Address字段和自身地址10.10.6.1比较,不相同,忽略该消息。
8、R7收到上述第一组播加入消息,将该消息中的Upstream Neighbor Address字段和自身地址10.10.7.1比较,相同,处理该消息。R7用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。由于收到的是组播加入消息,把接收到消息的接口Port 1添加至新建立的MFIB表项的出接口列表中。
9、R7继续向上游发送第二组播加入消息,重复6~8步骤后结束。
经过上述过程,Client 1已经加入了以RP为根的组播树RPT,如图4所示。
第二步:Client 2以指定源方式加入组播树RPT
1、Client 2构造IGMP Membership Report消息发送给DR 2,其中,type字段为0x16(Membership Report),group address字段中填入待加入的组播组地址224.10.10.10,source address字段填入组播源地址10.10.10.1,目的地址为224.0.0.2(代表所有组播路由器的组播地址)。
2、DR 2用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。并把接收到IGMP Membership Report消息的接口Port 1加入到新建立MFIB表项的出接口列表中。
3、DR 2用IGMP Membership Report消息中的组播组地址224.10.10.10查找对应的RP地址10.0.0.1,再用RP地址10.0.0.1查找MRIB表,获取上游邻居R3的地址10.10.3.1。DR 2检查R3不是PIM-SM邻居,构造第四单播加入消息,消息的目的地址为RP地址10.0.0.1,源地址为DR2的地址10.9.2.1,把IGMP Membership Report消息中的组播组地址填入第四单播加入消息的Multicast Group Address字段,把IGMP Membership Report消息中的组播源地址填入第四单播加入消息的Joined Source Address字段。
4、R3是普通的单播路由器,不识别第四单播加入消息,直接转发该消息。
5、RP收到该第四单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中MFIB表项。由于收到的是单播加入消息,建立RP到单播消息源地址10.9.2.1(即DR 2)的隧道Tunnel 2,隧道的源地址是RP地址10.0.0.1,目的地址是DR 2地址10.9.2.1。RP把该隧道添加至MFIB表项的出接口列表中。
经过上述过程,Client 2已经加入了以RP为根的组播树RPT,如图5所示。
第三步:Client 3加入组播树SPT
1、Client 3构造IGMP Membership Report消息发送给DR 3,type字段为0x16(Membership Report),group address字段中填入待加入的组播组地址224.10.10.10,source address字段填入组播源地址10.10.10.1,目的地址为224.0.0.2(代表所有组播路由器的组播地址)。
2、DR 3用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。并把接收到IGMP Membership Report消息的接口Port 1加入到新建立MFIB表项的出接口列表中。
3、由于加入的是SPT,DR 3用组播源地址10.10.10.1查找MRIB表,获取上游邻居R5的地址10.10.5.1。DR 3检查R5不是PIM-SM邻居,构造第五单播加入消息,该第五单播加入消息的目的地址为组播源地址10.10.10.1,源地址为DR 3的地址10.9.3.1,存活时间TTL字段初始化为255,此外,DR 3把IGMP Membership Report消息中的组播组地址填入该第五单播加入消息的Multicast Group Address字段。
4、R5是普通的单播路由器,不识别第五单播加入消息,直接转发该消息。
5、R8收到第五单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。由于收到的是单播加入消息,R8建立R8到单播消息源地址10.9.3.1(即DR 3)的隧道Tunnel 3,隧道的源地址是R8地址10.10.8.1,目的地址是DR 3地址10.9.3.1。R8把该隧道添加至新建立的MFIB表项的出接口列表中。
6、R8到Source的加入流程和上述过程类似,不再赘述。
经过上述过程,Client 3已经加入了以Source为根的组播树SPT,如图6所示。至此,Client 1、Client 2和Client 3均已加入组播组,组播报文可以沿着如图3中实线所示的路径进行转发,直到各个客户端。
在实际应用中,可能会存在路由器的PIM-SM进程发生故障的情况,导致该路由器对应的客户端的组播业务发生中断,下面以R7的PIM-SM进程发生故障为例进行说明。
第四步:R7的PIM-SM进程出现故障
1、R4用RP地址10.0.0.1查找MRIB表,获取上游邻居R7的地址10.10.7.1。由于R4检查R7不是PIM-SM邻居,R4构造第二单播加入消息,该第二单播加入消息的目的地址为RP地址10.0.0.1,源地址为R4的地址10.10.4.1,TTL初始化为255,R4把组播组地址填入第二单播加入消息的Multicast Group Address字段,把组播源地址填入第二单播加入消息的Joined Source Address字段。
2、R7的PIM-SM进程故障之后退化成是单播路由器,不识别第二单播加入消息,直接转发该消息。
3、RP收到第二单播加入消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中MFIB表项。由于收到的是单播加入消息,建立RP到单播消息源地址10.10.4.1(即R4)的隧道Tunnel 4,隧道的源地址是RP地址10.0.0.1,目的地址是R4地址10.10.4.1。RP把该隧道添加至MFIB表项的出接口列表中。
4、由于R7的PIM-SM进程故障之后,不再发送组播加入消息到RP,超时后,RP把port1从MFIB表项的出接口列表中删除。
经过上述步骤,便成功越过了故障设备R7,建立了R4至RP的隧道,如图8所示,组播报文可以沿着如图7中实线所示的路径进行转发,组播业务不会受到影响。因此,本申请实施例能够在支持组播路由协议的路由器发生故障时建立用于组播的隧道,不会导致组播业务中断,有利于提高组播业务的可靠性。
第五步:R7的PIM-SM进程恢复:
1、R7的PIM-SM进程恢复后,会自动和R4、RP建立起PIM-SM邻居关系。
2、R4检查发现R7是PIM-SM邻居,构造第一组播加入消息,目的地址为PIM-SM路由器的组播地址224.0.0.13,源地址为R4的地址10.10.4.1,R4把R7地址10.10.7.1填入第一组播加入消息的Upstream Neighbor Address字段,把组播组地址填入第一组播加入消息的Multicast Group Address字段,把组播源地址填入第一组播加入消息的Joined SourceAddress字段。
3、R6收到上述第一组播加入消息,将该消息中的Upstream Neighbor Address字段和自身地址10.10.6.1比较,不相同,忽略该消息。
4、R7收到上述第一组播加入消息,将该消息中的Upstream Neighbor Address字段和自身地址10.10.7.1比较,相同,处理该消息。R7用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找未命中,建立MFIB表项。由于收到的是组播加入消息,把接收到消息的接口Port 1添加至新建立的MFIB表项的出接口列表中。
5、R7继续向上游发送第二组播加入消息,目的地址为224.0.0.13,源地址为R7的地址10.10.7.1,R7把RP地址10.0.0.1填入第二组播加入消息的Upstream NeighborAddress字段,把组播组地址填入第二组播加入消息的Multicast Group Address字段,把组播源地址填入组播加入消息的Joined Source Address字段。
6、RP收到组播加入消息,用消息中的Upstream Neighbor Address字段和自身地址10.0.0.1比较,相同处理该消息。RP用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中MFIB表项。由于收到的是组播加入消息,把接收到消息的接口Port 1添加至新建立的MFIB表项的出接口列表中。
7、由于R4不再向RP发送第二单播加入消息,超时之后,RP把Tunnel 1从出接口列表中删除,拆除Tunnel 1隧道。
应理解,上述R7的PIM-SM进程出现故障,但是R7还可以进行正常的消息转发,如果R7整机出现故障,那么R4发出的单播加入消息就无法通过R7转发。由于R7的故障会触发单播路由协议收敛,且R6有链路和RP相连,单播路由协议就会把R4上目的地址为RP的路由的下一跳地址修改为R6的地址。在这种情况下,单播路由协议收敛完成后,R4发出的第二单播加入消息就可以通过R6转发给RP,从而让R4加入组播树。
第六步:Client 1取消点播(即退出组播树)
1、Client 1向DR 1发送IGMP Leave Group消息,该消息携带组播组地址224.10.10.10和组播源地址10.10.10.1。
2、DR 1接收到Client 1发送的IGMP Leave Group消息,根据组播组地址224.10.10.10和组播源地址10.10.10.1,确定对应的MFIB表项,将接收该消息的接口从该MFIB表项中删除。
进一步地,该DR 1判断该MFIB表项是否为空,若该MFIB表项为空,DR 1删除该MFIB表项,并构造剪枝消息。具体地,该DR 1用IGMP Leave Group消息中的组播组地址224.10.10.10查找对应的RP地址10.0.0.1,用RP地址10.0.0.1查找MRIB表,获取上游邻居R2的地址10.10.2.1。
DR 1确定R2不是PIM-SM邻居,构造第一单播剪枝消息,目的地址为RP地址10.0.0.1,源地址为DR 1的地址10.9.1.1,把IGMP Leave Group消息中的组播组地址填入第一单播剪枝消息的Multicast Group Address字段,把IGMP Leave Group消息中的组播源地址填入第一单播剪枝消息的Pruned Source Address字段。
3、R2是普通的单播路由器,不识别第一单播剪枝消息,直接转发该消息。
4、R4收到上述第一单播剪枝消息,用组播组地址224.10.10.10和组播源地址10.10.10.1查找MFIB表项,查找命中,查找该第一单播剪枝消息的源地址10.9.1.1的隧道,得到Tunnel1,把该隧道从MFIB表项的出接口列表中删除,并拆除该隧道。
5、由于MFIB表项的出接口列表为空,因此R4删除MFIB表项,并向继续构造第二单播剪枝消息向上游发送。
6、后续第二单播剪枝消息的发送和处理流程与上面相同,此处不再赘述。
经过上述步骤,已经建立的如图4所示的组播树RPT的分支将会被删除。但是,在第六步的执行过程中,可能出现路由器发生故障,导致单播剪枝消息丢包的情况,由于本申请实施例中的Client 1取消点播失败流程与上一个实施例中的相同,此处不再赘述。
在本申请实施例中,通过引入单播加入消息,能够自动建立隧道连通本地路由器和通过单播加入消息发现的远程组播路由器,从而实现自动穿越单播网络,提高了组播业务的可用性。此外,在任意组播路由器发生故障之后,会再次发起单播加入过程寻找另一个最近的组播路由器重新恢复业务,大大提高了组播业务的可靠性。
应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文中结合图1至图8,详细描述了根据本申请实施例的用于实现组播业务的方法,下面将结合图9至图12,详细描述根据本申请实施例的用于实现组播业务的装置。
图9示出了本申请实施例提供的用于实现组播业务的装置900,该装置900包括:
接收单元910,用于接收第二网络设备发送的第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址;
处理单元920,用于根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道。
本申请实施例的用于实现组播业务的装置,通过引入单播加入消息,捕获单播加入消息的远程组播路由器能够自动建立隧道连通本地路由器,从而实现自动穿越单播网络,能够使下一跳路由器不支持组播路由协议的组播路由器加入到组播组中,有利于提高组播业务的可用性。
可选地,所述处理单元920还用于:在所述根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道之前,根据所述第一单播加入消息中携带的第一字段,确定所述第二网络设备是否为所述装置的邻居节点,其中,所述第一单播加入消息每被一个网络设备转发一次,所述第一字段的值减1;若所述第二网络设备不是所述装置的邻居节点,建立所述装置到所述第二网络设备的隧道。
可选地,当所述第一单播加入消息的目的地址为所述组播源地址时,所述装置的地址与所述组播源地址不相同;当所述第一单播加入消息的目的地址为所述RP地址时,所述装置的地址与所述RP地址不相同。
可选地,所述处理单元920还用于:建立所述组播组与所述装置到所述第二网络设备的隧道之间的对应关系。
可选地,所述装置还包括:发送单元,用于在所述根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道之后,发送第一组播加入消息,所述第一组播加入消息用于请求加入所述组播组,所述第一组播加入消息的源地址为所述装置的地址,所述第一组播加入消息的目的地址为组播路由器的组播地址。
可选地,所述装置还包括:发送单元,用于在所述根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道之后,发送第二单播加入消息,所述第二单播加入消息用于请求加入所述组播组,所述第二单播加入消息的源地址为所述装置的地址,所述第二单播加入消息的目的地址为所述组播源地址或所述RP地址。
可选地,所述装置支持协议无关组播-稀疏模式PIM-SM协议,所述处理单元920还用于:在所述发送第二单播加入消息之前,根据所述组播源地址或所述RP地址,查表获得所述装置的上游邻居的地址;根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;所述发送单元具体用于:若所述上游邻居不支持所述PIM-SM协议,发送所述第二单播加入消息。
可选地,所述接收单元910还用于:接收第三网络设备发送的第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第三网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址;所述处理单元920还用于:根据所述第一单播剪枝消息,确定是否存在与所述第一单播剪枝消息中携带的信息对应的第一组播转发表项;若不存在所述第一组播转发表项,确定所述装置的地址与所述第一单播剪枝消息的目的地址是否相同;若所述装置的地址与所述第一单播剪枝消息的目的地址相同,忽略所述第一单播剪枝消息;若所述装置的地址与所述第一单播剪枝消息的目的地址不相同,根据所述第一单播剪枝消息的目的地址,继续转发所述第一单播剪枝消息。
可选地,所述处理单元920还用于:若存在所述第一组播转发表项,确定是否存在所述装置到所述第三网络设备的隧道;若不存在所述装置到所述第三网络设备的隧道,将接收所述第一单播剪枝消息的物理接口从所述第一组播转发表项的出接口列表中删除;若存在所述装置到所述第三网络设备的隧道,拆除所述装置到所述第三网络设备的隧道,并将所述装置到所述第三网络设备的隧道从所述第一组播转发表项的出接口列表中删除。
可选地,所述处理单元920还用于:判断所述第一组播转发表项的出接口列表是否为空;若所述第一组播转发表项的出接口列表为空,删除所述第一组播转发表项。
可选地,所述装置为组播源或汇聚点RP,所述发送单元还用于:发送第二单播剪枝消息,所述第二单播剪枝消息用于请求离开所述组播组,所述第二单播剪枝消息的源地址为所述装置的地址,所述第二单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
可选地,所述处理单元920还用于:在接收到组播报文的情况下,确定是否存在与所述组播报文的目的地址对应的第二组播转发表项;若不存在所述第二组播转发表项,确定所述组播报文是否经过隧道封装;所述发送单元还用于:若所述组播报文未经过隧道封装,发送第三单播剪枝消息,所述第三单播剪枝消息用于请求离开所述组播组,所述第三单播剪枝消息的源地址为所述装置的地址,所述第三单播剪枝消息的目的地址为所述组播源地址或所述RP地址;若所述组播报文经过隧道封装,发送第四单播剪枝消息,所述第四单播剪枝消息用于请求离开所述组播组,所述第四单播剪枝消息的源地址为所述装置的地址,所述第四单播剪枝消息的目的地址为封装所述组播报文的隧道的隧道源地址。
可选地,所述第一单播加入消息为周期性发送的消息,且所述第一单播加入消息的发送周期为第一时间段,所述处理单元920还用于:若在所述第一时间段内未接收到所述第二网络设备再次发送的所述第一单播加入消息,拆除所述装置到所述第二网络设备的隧道。
应理解,这里的装置900以功能单元的形式体现。这里的术语“单元”可以指应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选例子中,本领域技术人员可以理解,装置900可以具体为上述实施例中的第一网络设备,装置900可以用于执行上述方法实施例中与第一网络设备对应的各个流程和/或步骤,为避免重复,在此不再赘述。
图10示出了本申请实施例提供的用于实现组播业务的装置1000,该装置1000包括:
接收单元1010,用于接收加入请求消息,所述加入请求消息用于请求加入组播组,所述加入请求消息中携带组播组地址;
发送单元1020,用于根据所述加入请求消息,发送第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述装置的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址。
本申请实施例的用于实现组播业务的装置,通过引入单播加入消息,捕获单播加入消息的远程组播路由器能够自动建立隧道连通本地路由器,从而实现自动穿越单播网络,能够使下一跳路由器不支持组播路由协议的组播路由器加入到组播组中,有利于提高组播业务的可用性。
可选地,所述装置支持协议无关组播-稀疏模式PIM-SM协议,所述装置还包括:第一处理单元,用于在所述根据所述加入请求消息,发送第一单播加入消息之前,根据所述组播源地址或所述RP地址,查表获得所述装置的上游邻居的地址;根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;所述发送单元1020具体用于:若所述上游邻居不支持所述PIM-SM协议,发送所述第一单播加入消息。
可选地,所述接收单元1010还用于:接收离开请求消息,所述离开请求消息用于请求离开所述组播组,所述离开请求消息中携带组播组地址;所述装置还包括:第二处理单元,用于根据所述离开请求消息,将接收所述离开请求消息的物理接口从与所述组播组地址对应的组播转发表项的出接口列表中删除,并判断所述出接口列表是否为空;所述发送单元1020还用于:若所述出接口列表为空,发送第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述装置的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
可选地,所述第二处理单元还用于:在所述发送第一单播剪枝消息之前,根据所述组播源地址或所述RP地址,查表获得所述装置的上游邻居的地址;根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;所述发送单元1020具体用于:若所述上游邻居不支持所述PIM-SM协议,发送所述第一单播剪枝消息。
应理解,这里的装置1000以功能单元的形式体现。这里的术语“单元”可以指应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选例子中,本领域技术人员可以理解,装置1000可以具体为上述实施例中的第二网络设备,装置1000可以用于执行上述方法实施例中与第二网络设备对应的各个流程和/或步骤,为避免重复,在此不再赘述。
图11示出了本申请实施例提供的另一用于实现组播业务的装置1100。该装置1100包括至少一个处理器1110、存储器1120和通信接口1130;所述至少一个处理器1110、所述存储器1120和所述通信接口1130均通过内部通路连接;
所述存储器1120,用于存储计算机执行指令;
所述至少一个处理器1110,用于执行所述存储器1120存储的计算机执行指令,使得所述装置1100可以通过所述通信接口1130与其他装置进行数据交互来执行上述方法实施例提供的信息处理方法。
其中,该至少一个处理器1110用于执行以下操作:
通过通信接口1130接收第二网络设备发送的第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址;
根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道。
应理解,装置1100可以具体为上述实施例中的第一网络设备,并且可以用于执行上述方法实施例中与第一网络设备对应的各个步骤和/或流程。
图12示出了本申请实施例提供的另一用于实现组播业务的装置1200。该装置1200包括至少一个处理器1210、存储器1220和通信接口1230;所述至少一个处理器1210、所述存储器1220和所述通信接口1230均通过内部通路连接;
所述存储器1220,用于存储计算机执行指令;
所述至少一个处理器1210,用于执行所述存储器1220存储的计算机执行指令,使得所述装置1200可以通过所述通信接口1230与其他装置进行数据交互来执行上述方法实施例提供的信息处理方法。
其中,该至少一个处理器1210用于执行以下操作:
通过通信接口1230接收加入请求消息,所述加入请求消息用于请求加入组播组,所述加入请求消息中携带组播组地址;
根据所述加入请求消息,通过通信接口1230发送第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述装置的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址。
应理解,装置1200可以具体为上述实施例中的第二网络设备,并且可以用于执行上述方法实施例中与第二网络设备对应的各个步骤和/或流程。
应理解,在本申请实施例中,上述装置的处理器可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以是以下的任一种或任一种组合:随机存取存储器(random accessmemory,RAM)、只读存储器(read only memory,ROM)、非易失性存储器(non-volatilememory,NVM)、固态硬盘(solid state drives,SSD)、机械硬盘、磁盘、磁盘整列等存储介质。
通信接口用于本装置与其他设备之间的数据交互。通信接口可以是以下的任一种或任一种组合:网络接口(例如以太网接口)、无线网卡等具有网络接入功能的器件。
可选地,上述至少一个处理器、存储器和通信接口可以通过总线连接,该总线可以包括地址总线、数据总线、控制总线等。总线可以是以下的任一种或任一种组合:工业标准体系结构(industry standard architecture,ISA)总线、外设组件互连标准(peripheralcomponent interconnect,PCI)总线、扩展工业标准结构(extended industry standardarchitecture,EISA)总线等有线数据传输的器件。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (34)

1.一种用于实现组播业务的方法,其特征在于,包括:
第一网络设备接收第二网络设备发送的第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址;
所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道。
2.根据权利要求1所述的方法,其特征在于,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之前,所述方法还包括:
所述第一网络设备根据所述第一单播加入消息中携带的第一字段,确定所述第二网络设备是否为所述第一网络设备的邻居节点,其中,所述第一单播加入消息每被一个网络设备转发一次,所述第一字段的值减1;
所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道,包括:
若所述第二网络设备不是所述第一网络设备的邻居节点,所述第一网络设备建立所述第一网络设备到所述第二网络设备的隧道。
3.根据权利要求1或2所述的方法,其特征在于,当所述第一单播加入消息的目的地址为所述组播源地址时,所述第一网络设备的地址与所述组播源地址不相同;
当所述第一单播加入消息的目的地址为所述RP地址时,所述第一网络设备的地址与所述RP地址不相同。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
所述第一网络设备建立所述组播组与所述第一网络设备到所述第二网络设备的隧道之间的对应关系。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之后,所述方法还包括:
所述第一网络设备发送第一组播加入消息,所述第一组播加入消息用于请求加入所述组播组,所述第一组播加入消息的源地址为所述第一网络设备的地址,所述第一组播加入消息的目的地址为组播路由器的组播地址。
6.根据权利要求1至4中任一项所述的方法,其特征在于,在所述第一网络设备根据所述第一单播加入消息,建立所述第一网络设备到所述第二网络设备的隧道之后,所述方法还包括:
所述第一网络设备发送第二单播加入消息,所述第二单播加入消息用于请求加入所述组播组,所述第二单播加入消息的源地址为所述第一网络设备的地址,所述第二单播加入消息的目的地址为所述组播源地址或所述RP地址。
7.根据权利要求6所述的方法,其特征在于,所述第一网络设备支持协议无关组播-稀疏模式PIM-SM协议,在所述第一网络设备发送第二单播加入消息之前,所述方法还包括:
所述第一网络设备根据所述组播源地址或所述RP地址,查表获得所述第一网络设备的上游邻居的地址;
所述第一网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述第一网络设备发送第二单播加入消息,包括:
若所述上游邻居不支持所述PIM-SM协议,所述第一网络设备发送所述第二单播加入消息。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述方法还包括:
所述第一网络设备接收第三网络设备发送的第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第三网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址;
所述第一网络设备根据所述第一单播剪枝消息,确定是否存在与所述第一单播剪枝消息中携带的信息对应的第一组播转发表项;
若不存在所述第一组播转发表项,所述第一网络设备确定所述第一网络设备的地址与所述第一单播剪枝消息的目的地址是否相同;
若所述第一网络设备的地址与所述第一单播剪枝消息的目的地址相同,所述第一网络设备忽略所述第一单播剪枝消息;
若所述第一网络设备的地址与所述第一单播剪枝消息的目的地址不相同,所述第一网络设备根据所述第一单播剪枝消息的目的地址,继续转发所述第一单播剪枝消息。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若存在所述第一组播转发表项,所述第一网络设备确定是否存在所述第一网络设备到所述第三网络设备的隧道;
若不存在所述第一网络设备到所述第三网络设备的隧道,所述第一网络设备将接收所述第一单播剪枝消息的物理接口从所述第一组播转发表项的出接口列表中删除;
若存在所述第一网络设备到所述第三网络设备的隧道,所述第一网络设备拆除所述第一网络设备到所述第三网络设备的隧道,并将所述第一网络设备到所述第三网络设备的隧道从所述第一组播转发表项的出接口列表中删除。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述第一网络设备判断所述第一组播转发表项的出接口列表是否为空;
若所述第一组播转发表项的出接口列表为空,所述第一网络设备删除所述第一组播转发表项。
11.根据权利要求10所述的方法,其特征在于,所述第一网络设备不是组播源或汇聚点RP,所述方法还包括:
所述第一网络设备发送第二单播剪枝消息,所述第二单播剪枝消息用于请求离开所述组播组,所述第二单播剪枝消息的源地址为所述第一网络设备的地址,所述第二单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
12.根据权利要求1至11中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一网络设备接收到组播报文的情况下,所述第一网络设备确定是否存在与所述组播报文的目的地址对应的第二组播转发表项;
若不存在所述第二组播转发表项,所述第一网络设备确定所述组播报文是否经过隧道封装;
若所述组播报文未经过隧道封装,所述第一网络设备发送第三单播剪枝消息,所述第三单播剪枝消息用于请求离开所述组播组,所述第三单播剪枝消息的源地址为所述第一网络设备的地址,所述第三单播剪枝消息的目的地址为所述组播源地址或所述RP地址;
若所述组播报文经过隧道封装,所述第一网络设备发送第四单播剪枝消息,所述第四单播剪枝消息用于请求离开所述组播组,所述第四单播剪枝消息的源地址为所述第一网络设备的地址,所述第四单播剪枝消息的目的地址为封装所述组播报文的隧道的隧道源地址。
13.根据权利要求1至12中任一项所述的方法,其特征在于,所述第一单播加入消息为周期性发送的消息,且所述第一单播加入消息的发送周期为第一时间段,所述方法还包括:
若所述第一网络设备在所述第一时间段内未接收到所述第二网络设备再次发送的所述第一单播加入消息,所述第一网络设备拆除所述第一网络设备到所述第二网络设备的隧道。
14.一种用于实现组播业务的方法,其特征在于,包括:
第二网络设备接收加入请求消息,所述加入请求消息用于请求加入组播组,所述加入请求消息中携带组播组地址;
所述第二网络设备根据所述加入请求消息,发送第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址。
15.根据权利要求14所述的方法,其特征在于,所述第二网络设备支持协议无关组播-稀疏模式PIM-SM协议,在所述第二网络设备根据所述加入请求消息,发送第一单播加入消息之前,所述方法还包括:
所述第二网络设备根据所述组播源地址或RP地址,查表获得所述第二网络设备的上游邻居的地址;
所述第二网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述
PIM-SM协议;
所述第二网络设备根据所述加入请求消息,发送第一单播加入消息,包括:
若所述上游邻居不支持所述PIM-SM协议,所述第二网络设备发送所述第一单播加入消息。
16.根据权利要求14或15所述的方法,其特征在于,所述方法还包括:
所述第二网络设备接收离开请求消息,所述离开请求消息用于请求离开所述组播组,所述离开请求消息中携带组播组地址;
所述第二网络设备根据所述离开请求消息,将接收所述离开请求消息的物理接口从与所述组播组地址对应的组播转发表项的出接口列表中删除,并判断所述出接口列表是否为空;
若所述出接口列表为空,所述第二网络设备发送第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第二网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
17.根据权利要求16所述的方法,其特征在于,在所述第二网络设备发送第一单播剪枝消息之前,所述方法还包括:
所述第二网络设备根据所述组播源地址或RP地址,查表获得所述第二网络设备的上游邻居的地址;
所述第二网络设备根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述第二网络设备发送第一单播剪枝消息,包括:
若所述上游邻居不支持所述PIM-SM协议,所述第二网络设备发送所述第一单播剪枝消息。
18.一种用于实现组播业务的装置,其特征在于,包括:
接收单元,用于接收第二网络设备发送的第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述第二网络设备的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址;
处理单元,用于根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道。
19.根据权利要求18所述的装置,其特征在于,所述处理单元还用于:
在所述根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道之前,根据所述第一单播加入消息中携带的第一字段,确定所述第二网络设备是否为所述装置的邻居节点,其中,所述第一单播加入消息每被一个网络设备转发一次,所述第一字段的值减1;
若所述第二网络设备不是所述装置的邻居节点,建立所述装置到所述第二网络设备的隧道。
20.根据权利要求18或19所述的装置,其特征在于,当所述第一单播加入消息的目的地址为所述组播源地址时,所述装置的地址与所述组播源地址不相同;
当所述第一单播加入消息的目的地址为所述RP地址时,所述装置的地址与所述RP地址不相同。
21.根据权利要求18至20中任一项所述的装置,其特征在于,所述处理单元还用于:
建立所述组播组与所述装置到所述第二网络设备的隧道之间的对应关系。
22.根据权利要求18至21中任一项所述的装置,其特征在于,所述装置还包括:
发送单元,用于在所述根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道之后,发送第一组播加入消息,所述第一组播加入消息用于请求加入所述组播组,所述第一组播加入消息的源地址为所述装置的地址,所述第一组播加入消息的目的地址为组播路由器的组播地址。
23.根据权利要求18至21中任一项所述的装置,其特征在于,所述装置还包括:
发送单元,用于在所述根据所述第一单播加入消息,建立所述装置到所述第二网络设备的隧道之后,发送第二单播加入消息,所述第二单播加入消息用于请求加入所述组播组,所述第二单播加入消息的源地址为所述装置的地址,所述第二单播加入消息的目的地址为所述组播源地址或所述RP地址。
24.根据权利要求23所述的装置,其特征在于,所述装置支持协议无关组播-稀疏模式PIM-SM协议,所述处理单元还用于:
在所述发送第二单播加入消息之前,根据所述组播源地址或所述RP地址,查表获得所述装置的上游邻居的地址;
根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述发送单元具体用于:
若所述上游邻居不支持所述PIM-SM协议,发送所述第二单播加入消息。
25.根据权利要求18至24中任一项所述的装置,其特征在于,所述接收单元还用于:
接收第三网络设备发送的第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述第三网络设备的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址;
所述处理单元还用于:
根据所述第一单播剪枝消息,确定是否存在与所述第一单播剪枝消息中携带的信息对应的第一组播转发表项;
若不存在所述第一组播转发表项,确定所述装置的地址与所述第一单播剪枝消息的目的地址是否相同;
若所述装置的地址与所述第一单播剪枝消息的目的地址相同,忽略所述第一单播剪枝消息;
若所述装置的地址与所述第一单播剪枝消息的目的地址不相同,根据所述第一单播剪枝消息的目的地址,继续转发所述第一单播剪枝消息。
26.根据权利要求25所述的装置,其特征在于,所述处理单元还用于:
若存在所述第一组播转发表项,确定是否存在所述装置到所述第三网络设备的隧道;
若不存在所述装置到所述第三网络设备的隧道,将接收所述第一单播剪枝消息的物理接口从所述第一组播转发表项的出接口列表中删除;
若存在所述装置到所述第三网络设备的隧道,拆除所述装置到所述第三网络设备的隧道,并将所述装置到所述第三网络设备的隧道从所述第一组播转发表项的出接口列表中删除。
27.根据权利要求26所述的装置,其特征在于,所述处理单元还用于:
判断所述第一组播转发表项的出接口列表是否为空;
若所述第一组播转发表项的出接口列表为空,删除所述第一组播转发表项。
28.根据权利要求27所述的装置,其特征在于,所述装置为组播源或汇聚点RP,所述发送单元还用于:
发送第二单播剪枝消息,所述第二单播剪枝消息用于请求离开所述组播组,所述第二单播剪枝消息的源地址为所述装置的地址,所述第二单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
29.根据权利要求18至28中任一项所述的装置,其特征在于,所述处理单元还用于:
在接收到组播报文的情况下,确定是否存在与所述组播报文的目的地址对应的第二组播转发表项;
若不存在所述第二组播转发表项,确定所述组播报文是否经过隧道封装;
所述发送单元还用于:
若所述组播报文未经过隧道封装,发送第三单播剪枝消息,所述第三单播剪枝消息用于请求离开所述组播组,所述第三单播剪枝消息的源地址为所述装置的地址,所述第三单播剪枝消息的目的地址为所述组播源地址或所述RP地址;
若所述组播报文经过隧道封装,发送第四单播剪枝消息,所述第四单播剪枝消息用于请求离开所述组播组,所述第四单播剪枝消息的源地址为所述装置的地址,所述第四单播剪枝消息的目的地址为封装所述组播报文的隧道的隧道源地址。
30.根据权利要求18至29中任一项所述的装置,其特征在于,所述第一单播加入消息为周期性发送的消息,且所述第一单播加入消息的发送周期为第一时间段,所述处理单元还用于:
若在所述第一时间段内未接收到所述第二网络设备再次发送的所述第一单播加入消息,拆除所述装置到所述第二网络设备的隧道。
31.一种用于实现组播业务的装置,其特征在于,包括:
接收单元,用于接收加入请求消息,所述加入请求消息用于请求加入组播组,所述加入请求消息中携带组播组地址;
发送单元,用于根据所述加入请求消息,发送第一单播加入消息,所述第一单播加入消息用于请求加入组播组,所述第一单播加入消息的源地址为所述装置的地址,所述第一单播加入消息的目的地址为组播源地址或汇聚点RP地址。
32.根据权利要求31所述的装置,其特征在于,所述装置支持协议无关组播-稀疏模式PIM-SM协议,所述装置还包括:
第一处理单元,用于在所述根据所述加入请求消息,发送第一单播加入消息之前,根据所述组播源地址,查表获得所述装置的上游邻居的地址;
根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述发送单元具体用于:
若所述上游邻居不支持所述PIM-SM协议,发送所述第一单播加入消息。
33.根据权利要求31或32所述的装置,其特征在于,所述接收单元还用于:
接收离开请求消息,所述离开请求消息用于请求离开所述组播组,所述离开请求消息中携带组播组地址;
所述装置还包括:
第二处理单元,用于根据所述离开请求消息,将接收所述离开请求消息的物理接口从与所述组播组地址对应的组播转发表项的出接口列表中删除,并判断所述出接口列表是否为空;
所述发送单元还用于:
若所述出接口列表为空,发送第一单播剪枝消息,所述第一单播剪枝消息用于请求离开所述组播组,所述第一单播剪枝消息的源地址为所述装置的地址,所述第一单播剪枝消息的目的地址为所述组播源地址或所述RP地址。
34.根据权利要求33所述的装置,其特征在于,所述第二处理单元还用于:
在所述发送第一单播剪枝消息之前,根据所述组播源地址,查表获得所述装置的上游邻居的地址;
根据所述上游邻居的地址,判断所述上游邻居是否支持所述PIM-SM协议;
所述发送单元具体用于:
若所述上游邻居不支持所述PIM-SM协议,发送所述第一单播剪枝消息。
CN201711046331.9A 2017-10-31 2017-10-31 用于实现组播业务的方法和装置 Active CN109729009B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201711046331.9A CN109729009B (zh) 2017-10-31 2017-10-31 用于实现组播业务的方法和装置
PCT/CN2018/111921 WO2019085822A1 (zh) 2017-10-31 2018-10-25 用于实现组播业务的方法和装置
EP18873380.2A EP3694163B1 (en) 2017-10-31 2018-10-25 Method and device for implementing multicast service
US16/862,055 US11374778B2 (en) 2017-10-31 2020-04-29 Method and apparatus for multicast service availability

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711046331.9A CN109729009B (zh) 2017-10-31 2017-10-31 用于实现组播业务的方法和装置

Publications (2)

Publication Number Publication Date
CN109729009A true CN109729009A (zh) 2019-05-07
CN109729009B CN109729009B (zh) 2022-08-26

Family

ID=66293513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711046331.9A Active CN109729009B (zh) 2017-10-31 2017-10-31 用于实现组播业务的方法和装置

Country Status (4)

Country Link
US (1) US11374778B2 (zh)
EP (1) EP3694163B1 (zh)
CN (1) CN109729009B (zh)
WO (1) WO2019085822A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110149276A (zh) * 2019-05-30 2019-08-20 新华三技术有限公司 组播转发方法和装置
CN113497833A (zh) * 2020-04-07 2021-10-12 联发科技(新加坡)私人有限公司 用于多链路操作的代理地址解析协议服务的装置和方法
CN113542134A (zh) * 2020-04-17 2021-10-22 银峰系统公司 安全多播数据业务通过计算机网络的传输
CN114157597A (zh) * 2020-08-18 2022-03-08 瞻博网络公司 经加权的多播加入负载平衡
CN114285679A (zh) * 2021-12-09 2022-04-05 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 一种基于集中控制的异构网络组播实现的方法及系统
CN114915589A (zh) * 2021-02-10 2022-08-16 华为技术有限公司 报文传输方法及装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019223005A1 (en) * 2018-05-25 2019-11-28 Qualcomm Incorporated Mixed mode multicast architecture
EP4109939A4 (en) * 2020-03-18 2023-04-12 Huawei Technologies Co., Ltd. MESSAGE TRANSFER METHOD AND APPARATUS
US11909542B2 (en) * 2022-02-08 2024-02-20 Arista Networks, Inc. EVPN PIM neighborship
US20230318969A1 (en) * 2022-03-31 2023-10-05 Lenovo (United States) Inc. Optimizing network load in multicast communications

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102075417A (zh) * 2010-09-30 2011-05-25 杭州华三通信技术有限公司 组播剪枝方法及协议无关组播路由器、二层交换机
CN103401788A (zh) * 2013-07-30 2013-11-20 杭州华三通信技术有限公司 一种spt建立方法和设备
CN103916905A (zh) * 2013-01-06 2014-07-09 中兴通讯股份有限公司 组播源的注册、组播路径的建立方法及装置
US20140241357A1 (en) * 2013-02-25 2014-08-28 Brocade Communications Systems, Inc. Techniques for customizing forwarding decisions via a hardware lookup result

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020023100A (ko) * 2001-05-28 2002-03-28 박현제 가상 멀티캐스트 네트워크 구축을 위한 시스템
US7626984B2 (en) * 2006-10-25 2009-12-01 At&T Corp. Method and apparatus for providing congruent multicast and unicast routing
CN1988507B (zh) * 2006-12-14 2011-12-21 华为技术有限公司 转发组播数据的方法、系统及路由器
KR101344015B1 (ko) * 2007-02-09 2013-12-23 삼성전자주식회사 PIM―SSM을 이용하는 네트워크에서 Join 메시지부하 조절 시스템 및 방법
CN101150423B (zh) * 2007-10-31 2010-08-18 华为技术有限公司 一种建立pim邻居、组播加入的方法、组播网络及路由器
CN102325266B (zh) * 2011-10-21 2013-09-25 杭州华三通信技术有限公司 一种视频实况点播方法及其设备
CN104283796B (zh) 2014-10-23 2018-02-09 新华三技术有限公司 一种组播分发树建立方法和装置
US9674075B1 (en) * 2014-12-22 2017-06-06 Juniper Networks, Inc. Multicast only fast re-route for PIM ASM mode
US10523456B2 (en) * 2016-03-28 2019-12-31 Telefonaktiebolaget Lm Ericsson (Publ) Multipoint to multipoint trees for computed spring multicast
US10104139B2 (en) * 2016-03-31 2018-10-16 Juniper Networks, Inc. Selectively signaling selective tunnels in multicast VPNs
CN106817629B (zh) * 2016-12-20 2020-04-28 北京华为数字技术有限公司 一种媒体信息传输方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102075417A (zh) * 2010-09-30 2011-05-25 杭州华三通信技术有限公司 组播剪枝方法及协议无关组播路由器、二层交换机
CN103916905A (zh) * 2013-01-06 2014-07-09 中兴通讯股份有限公司 组播源的注册、组播路径的建立方法及装置
US20140241357A1 (en) * 2013-02-25 2014-08-28 Brocade Communications Systems, Inc. Techniques for customizing forwarding decisions via a hardware lookup result
CN103401788A (zh) * 2013-07-30 2013-11-20 杭州华三通信技术有限公司 一种spt建立方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RAHUL AGGARWAL .ETC: "《PIM-SM EXTENSIONS FOR SUPPORTING REMOTE NEIGHBORS》", 《NETWORK WORKING GROUP INTERNET DRAFT》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110149276A (zh) * 2019-05-30 2019-08-20 新华三技术有限公司 组播转发方法和装置
CN113497833A (zh) * 2020-04-07 2021-10-12 联发科技(新加坡)私人有限公司 用于多链路操作的代理地址解析协议服务的装置和方法
CN113497833B (zh) * 2020-04-07 2023-09-19 联发科技(新加坡)私人有限公司 用于多链路操作的代理地址解析协议服务的装置和方法
CN113542134A (zh) * 2020-04-17 2021-10-22 银峰系统公司 安全多播数据业务通过计算机网络的传输
US11824759B2 (en) 2020-04-17 2023-11-21 Hewlett Packard Enterprise Development Lp Transfer of secure multicast data traffic over a computing network
CN114157597A (zh) * 2020-08-18 2022-03-08 瞻博网络公司 经加权的多播加入负载平衡
CN114157597B (zh) * 2020-08-18 2024-01-02 瞻博网络公司 经加权的多播加入负载平衡
CN114915589A (zh) * 2021-02-10 2022-08-16 华为技术有限公司 报文传输方法及装置
CN114915589B (zh) * 2021-02-10 2024-06-04 华为技术有限公司 报文传输方法及装置
CN114285679A (zh) * 2021-12-09 2022-04-05 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 一种基于集中控制的异构网络组播实现的方法及系统

Also Published As

Publication number Publication date
US20200259672A1 (en) 2020-08-13
US11374778B2 (en) 2022-06-28
WO2019085822A1 (zh) 2019-05-09
CN109729009B (zh) 2022-08-26
EP3694163B1 (en) 2022-12-28
EP3694163A4 (en) 2020-11-25
EP3694163A1 (en) 2020-08-12

Similar Documents

Publication Publication Date Title
CN109729009A (zh) 用于实现组播业务的方法和装置
US20150085862A1 (en) Forwarding Multicast Data Packets
CN101442564B (zh) 组播数据转发的方法和nat设备
US20150124810A1 (en) Method, device, and system for creating bidirectional multicast distribution tree based on interior gateway protocol
CN103841037B (zh) 组播报文转发的方法及设备
WO2022062506A1 (zh) 一种数据处理方法、装置、存储介质及电子装置
CN103858391A (zh) 在转发层面针对无连接的mpls网络使mpls路径环回
CN102577238A (zh) 用于追踪多播流的方法和装置
JP4436960B2 (ja) パケット通信システムおよび移動通信システム
CN104980355A (zh) 一种sdn环境下的源端可控组播数据传输方法及系统
CN103117935A (zh) 应用于多归属组网的组播数据转发方法和装置
CN104539545B (zh) Trill网络中的组播报文转发方法和设备
CN105144639A (zh) 在覆盖网络中至双重连接(vpc)的主机的有效组播传送
CN103609063B (zh) 协议无关组播最后一跳路由器发现的方法及设备
WO2016091156A1 (zh) 节点故障的判断方法及装置
CN103188153B (zh) 一种广播网链路上bfd报文发送方法和设备
CN104092554A (zh) 组播分发树建立方法及装置
CN103716244B (zh) 一种实现组播跨vpn转发的方法及装置
CN107547367A (zh) 一种组播切换方法、装置和机器可读存储介质
CN104052672A (zh) 一种基于lisp的组播实现方法和设备
CN103780437B (zh) 一种信息同步方法和装置
JP2024027107A (ja) 通信方法および関連する装置
CN102843303B (zh) Pim中的组播报文处理方法及装置
WO2014199924A1 (ja) 制御装置、通信システム、中継装置の制御方法及びプログラム
WO2020168982A1 (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
GR01 Patent grant
GR01 Patent grant