首页> 中国专利> 基于二层组播域的二层组播转发方法及路由器

基于二层组播域的二层组播转发方法及路由器

摘要

本发明提供一种支持在有关联关系的多个IGMP SNP实例上有效开展二层组播业务的二层组播转发方法,并提供一种实现该方法的路由器。将存在关联关系的2个以上IGMP SNP实例划分到同一个二层组播域中;各IGMP SNP实例上设置有虚拟接口,各IGMP SNP实例的虚拟接口并通过虚拟链路连接;当二层组播域中的一个IGMP SNP实例接收到IGMP消息或PIM消息时,通过虚拟链路将该IGMP消息或PIM消息转发至二层组播域中的其它IGMP SNP实例;层组播域中各IGMP SNP实例通过处理接收到的IGMP消息或PIM消息形成二层组播转发表并写入与该IGMP SNP实例一一对应的二层组播转发实例中;当IGMP SNP实例接收到组播数据时,二层组播转发实例根据二层组播转发表对组播数据进行转发。

著录项

  • 公开/公告号CN101938429A

    专利类型发明专利

  • 公开/公告日2011-01-05

    原文格式PDF

  • 申请/专利权人 迈普通信技术股份有限公司;

    申请/专利号CN201010298746.7

  • 发明设计人 王强;

    申请日2010-09-30

  • 分类号

  • 代理机构成都虹桥专利事务所;

  • 代理人邹裕蓉

  • 地址 610041 四川省成都市高新区九兴大道16号迈普大厦

  • 入库时间 2023-12-18 01:30:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-08-29

    授权

    授权

  • 2011-03-02

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20100930

    实质审查的生效

  • 2011-01-05

    公开

    公开

说明书

技术领域

本发明涉及网络通信技术,特别涉及二层组播技术。

背景技术

申请号为201010267841.0的发明申请“支持二层组播转发的桥接方法及其路由器”提出了一台路由器通过在VLAN或者桥接组上创建IGMP SNOOPING(Internet Group Management Protocol SNOOPING,因特尔网组管理协议监听,后面简称“IGMP SNP”)实例来支持二层组播转发的技术方案,具体的过程是:在桥接模块上运行IGMP SNOOPING,IGMP SNOOPING针对每个桥接组创建一个实例,并对应所有桥接组接口形成IGMP SNOOPING接口;桥接模块通过收到的链路帧中IP数据报文的头部识别出IGMP、PIM(协议无关组播)消息;并将IGMP消息、PIM消息交给IGMP SNOOPING处理,IGMP SNOOPING通过处理IGMP消息、PIM消息形成二层组播转发表,并将二层组播转发表下发至桥接模块;所述二层组播转发表包括实例ID、组播MAC地址、IGMP SNOOPING接口列表;桥接模块根据接收到二层组播转发表生成BMC(Bridge Multicast Cache,桥接组播缓存)表项;所述BMC表项包括桥接组ID、组播MAC地址、桥接组接口列表;桥接模块收到组播帧后,确定组播帧所属的桥接组ID、组播MAC地址,并查询是否有匹配的BMC表项,当有匹配的BMC表项,则根据该BMC表项中的桥接组接口列表转发此组播帧。这样,桥接模块仅需向桥接组中需要组播帧的一个或多个桥接组接口复制转发组播数据,节约了桥接组中不需要组播业务的桥接组接口上的带宽。

上述方法中这些IGMP SNP实例相互独立,没有关联关系。在某些情况下,还是不能有效解决二层组播应用的问题。例如,在宽窄带一体化路由器中,在一个桥接组中包含多个桥接组接口。在这些桥接组接口包含VLAN虚拟接口。桥接组的转发流程是通过CPU软件实现,而VLAN中的交换是通过ASIC硬件转发引擎实现。在这个桥接组上要支持二层组播,就需要分别在桥接组和VLAN上分别运行IGMP SNP实例。这些IGMP SNP实例之间不存在关联关系,桥接组IGMP SNP实例不能学习到来自VLAN所属的IGMP SNP实例的各类IGMP消息,反之亦然。这样,各个实例之间就不知道二层组播需求,只能在各个实例之间广播二层组播数据,例如,实例A不知道实例B需要哪些组播组信息。那么实例A就无法将实例B需要的组播信息转发给实例B。最终表现为相互独立的多个IGMP SNP实例二层组播方法不能满足一台设备内部的多个IGMP SNP实例之间存在关联关系的二层组播应用需求,则实施间无法相互获知组播需求,只能在各个实例之间广播组播业务。这样的后果是让不需要IGMP消息的IGMP SNP实例也接收到IGMP消息,造成带宽浪费,同时可能增加该设备或者其他设备的CPU或者转发能力负担。

发明内容

本发明所要解决的技术问题是,提供一种支持在有关联关系的多个IGMP SNP实例上有效开展二层组播业务的二层组播转发方法,并提供一种实现该方法的路由器。

本发明为解决上述技术问题所采用的技术方案是,基于二层组播域的二层组播转发方法,包括步骤:

将存在关联关系的2个以上IGMP SNP实例划分到同一个二层组播域中;

二层组播域包括2个以上IGMP SNP实例时,二层组播域中各IGMP SNP实例上设置虚拟接口,各IGMP SNP实例的虚拟接口并通过虚拟链路连接,IGMP SNP实例记录与其通过虚拟链路连接的各IGMP SNP实例的虚拟接口;

当二层组播域中的一个IGMP SNP实例接收到IGMP消息或PIM消息时,通过虚拟链路将该IGMP消息或PIM消息转发至二层组播域中的其它IGMP SNP实例;

二层组播域中各IGMP SNP实例通过处理接收到的IGMP消息或PIM消息形成二层组播转发表并写入与该IGMP SNP实例一一对应的二层组播转发实例中;所述二层组播转发表为(实例ID、组播MAC、组播成员接口列表),所述组播成员接口包括IGMP SNP实例接口、虚拟接口;

当IGMP SNP实例接收到组播数据时,二层组播转发实例根据二层组播转发表对组播数据进行转发。

一个二层组播域中的IGMP SNP实例即可以是在桥接组上运行的、也可以是在VLAN上运行的。一个二层组播域中IGMP SNP实例对应的二层组播转发实例可以是CPU软件转发,也可以是ASIC硬件转发。IGMP SNP实例接口用于收发IGMP和PIM等协议消息。IGMP消息包括IGMP查询消息、IGMP报告消息。IGMP SNP实例接口按功能可分为:组播成员接口、组播路由器接口,虚拟接口同样可作为组播成员接口、组播路由器接口使用。组播组成员接口主要用于转发组播数据;组播路由器接口用于表示连接了组播路由器的接口,所有的组播数据都应该在组播路由器接口上转发。对于从虚拟接口上收到的IGMP和PIM协议消息,IGMP SNP实例把它当成一般的IGMP SNP接口对待,记录相应的组播成员接口或者组播路由器接口。当IGMP或PIM消息从虚拟接口转发出去,与之相关联的IGMP SNP实例从对应的虚拟接口上收到IGMP或PIM消息。当二层组播数据到达某个二层组播转发实例的物理接口时,既可以通过IGMP SNP接口进行组播数据转发又可通过虚拟接口将二层组播数据传递给有组播需求的其他二层组播转发实例。即,存在关联关系的IGMP SNP实例只要是划分在一个二层组播域中,就可通过虚拟链路在IGMP SNP实例之间转发IGMP消息或PIM消息,从而完成IGMP SNP实例之间的组播需求学习,避免向各个IGMP SNP实例广播组播数据。

具体的,一个二层组播域可以包含一个或多个IGMP SNP实例,但一个IGMP SNP实例只能属于一个域。在不支持二层组播域的路由设备上,一个IGMP SNP实例就是一个二层组播域。

具体的,二层组播域中各IGMP SNP实例之间的关联关系用虚拟链路表示,即存在关联关系的IGMP SNP实例之间是通过虚拟链路连接起来的。两两IGMP SNP实例之间仅能通过一条点到点的虚拟链路连接,一般情况下,二层组播域中IGMP SNP实例之间的所有虚拟链路仅支持树形拓扑结构。

但当二层组播域中的IGMP SNP实例能够运行生成树协议,则各个IGMP SNP实例之间还可以支持网状拓扑。

具体的,IGMP SNP实例上虚拟接口ID为与该IGMP SNP实例相关联的其它IGMP SNP实例的实例ID。

本发明的有益效果是,解决在路由器设备上当某些IGMP SNP实例存在关联关系时的二层组播转发问题,使得组播数据能够在存在关联关系的IGMP SNP实例之间进行转发,避免在所有IGMP SNP实例之间广播组播帧的宽带浪费,减少了路由器设备的CPU负担,且实现简单,易于用户部署组播业务。

附图说明

图1为路由器示意图;

图2为实施例二层组播域的结构示意图;

图3为实施例IGMP查询消息流向示意图;

图4为实施例IGMP报告消息流向示意图;

图5为实施例各IGMP SNP实例写转发表示意图;

图6为实施例各个二层组播转发实例转发组播数据示意图。

具体实施方式

如图1所示的路由器,包括二层组播域划分模块与二层组播域转发模块,二层组播域划分模块将路由器中所有的IGMP SNP实例划分在2个二层组播域中(二层组播域1、二层组播域2),其中,二层组播域1由3个IGMP SNP实例构成(IGMP SNP实例1、2、3),每个IGMPSNP实例一一对应有一个二层组播转发实例(二层组播转发实例1、2、3),IGMP SNP实例1上的接口包括IGMP SNP实例接口f0和f1以及虚拟接口2、虚拟接口3。

以二层组播域中IGMP SNP实例之间的所有虚拟链路仅支持树形拓扑结构为例,路由器进行基于二层组播域的组播转发的具体步骤如下:

第一步,二层组播域划分模块将一个或者多个IGMP SNP实例划分到一个二层组播域,指定二层组播域ID;一个IGMP SNP实例仅能属于一个二层组播域。

如图1所示为域的结构示意图。这个域由3个IGMP SNP实例构成(IGMP SNP实例1、2、3)。上层是IGMP SNP实例,其间的粗黑线是表示协议实例之间的虚拟链路。下层是二层组播转发实例,其间的粗黑线是表示转发实例之间的虚拟链路。IGMP SNP实例和二层组播转发实例之间使用虚线相连,表示一个IGMP SNP实例对应一个转发实例,反之亦然。

第二步,二层组播域划分模块通过手工指定或者动态学习方法建立同一个域的IGMP SNP实例之间的关联关系,也就是指明IGMP SNP实例之间的虚拟链路;任何两个IGMP SNP实例之间最多存在一条点对点的虚拟链路,而且从一个IGMP SNP实例到另一个IGMP SNP实例有且仅有一条虚拟链路路径可达,也就是说各个IGMP SNP实例和各条虚拟链路构成的是一个树形拓扑,二层组播转发实例也是如此。

第三步,二层组播域划分模块在IGMP SNP实例上用对端虚拟实例编号表示虚拟链路的本端接口。如图3所示,例如实例1和实例3之间存在一条虚拟链路,实例1就用“虚拟接口3”表示实例1、实例3之间虚拟链路的本端虚拟接口。

第四步,二层组播转发模块在控制IGMP SNP实例处理IGMP组播组信息时对这些虚拟接口和IGMP SNP实例的接口同等对待。虚拟接口可以作为组播组的成员接口、组播路由器接口。

第五步,IGMP SNP实例在向虚拟接口转发或者发送IGMP协议消息时,与IGMP SNP实例的接口不同。当IGMP SNP向普通接口发送或者转发IGMP协议消息时,报文将被发出设备,进入物理链路,被其它设备接收到。但是,由于虚拟接口是各个IGMP SNP实例之间虚拟链路的本端端点,那么报文被发出去以后,进入虚拟链路,将被其它IGMP SNP实例从对应虚拟接口上收到。IGMP协议消息包括IGMP查询消息、IGMP报告消息。例如实例1和实例3存在虚拟链路。实例1转发了一个IGMP查询消息到“虚拟接口3”上,此IGMP查询消息将通过实例1和实例3的虚拟链路,实例3将从“虚拟接口1”上收到此IGMP查询消息。

如图3所示为域收到IGMP查询消息时报文流向示意图。如果所示三个IGMP SNP实例分别编号1、2和3。假定实例1有两个IGMP SNP实例接口f0和f1。它和实例2、3之间关联起来,那么它还包括两个虚拟接口,“虚拟接口2”和“虚拟接口3”。实例2和实例3分别和实例1关联起来,那么实例2和实例3都包含一个虚拟接口,“虚拟接口1”。当实例1从f0接口收到IGMP查询消息时,记录组播路由器接口为f0。将此消息转发到该实例的f1接口上,且将此查询消息转发到“虚拟接口2”和“虚拟接口3”上。实例2的处理是,将“虚拟接口1”记录为组播路由器接口,按照前述逻辑进行IGMP查询消息的转发,不再详细叙述。实例3的处理和实例2的相同。

如图4所示为域收到IGMP报告消息时报文流向示意图。IGMP报告消息从实例3的IGMPSNPf3实例接口达到,并且实例3存在组播路由器接口:“虚拟接口1”和f4。实例3首先将f3记录为该组播组的成员接口,再将IGMP报告消息转发给组播路由器接口:“虚拟接口1”和f4。实例1将从“虚拟接口3”接收到IGMP报告消息。实例1首先将“虚拟接口3”记录为该组播组的成员接口,再将IGMP报告消息转发给组播路由器接口f0。

第六步,二层组播转发模块在控制各个IGMP SNP实例在形成组播转发表时,虚拟接口也可以作为成员接口或者组播路由器接口添加到转发表中。每个IGMP SNP对应一个二层组播转发实例。IGMP SNP只会向各自的转发实例写二层组播转发表。

如图5所示为域的各个IGMP SNP实例写转发表的示意图。IGMP SNP实例在形成转发表的时候,维护形如(实例ID,MAC,成员接口列表)这样的转发表项。其中“成员接口列表”包含IGMP SNP实例接口,也可以包含像“虚拟接口1”和“虚拟接口2”这样的虚拟接口。在写转发表时,IGMP SNP实例将转发表写到各自对应的转发实例中。例如,IGMP实例1仅能写二层组播转发实例1的转发表。

第七步,各个二层组播转发实例可以具有相同的转发引擎,也可以不同。例如实例1可以是CPU软件转发。实例2和实例3可以是ASIC硬件转发引擎转发。二层组播转发实例有各自的二层组播转发表。

第八步,当组播数据到达某个二层组播转发实例i时,二层组播转发模块控制该转发实例根据二层组播转发表在普通的IGMP SNP实例接口与虚拟接口上完成组播数据的转发。与之相连的各个实例将从“虚拟接口i”上收到此组播数据。各个实例根据各自的二层组播转发表项按照与实例i相同的转发逻辑完成交换转发。通过域中的各个二层组播转发实例的独立和协同工作,可以完成域的二层组播转发功能。

如图6所示为域的二层组播数据帧转发示意图。假定组播数据帧从转发实例1的接口f0到达,转发流程查找该转发实例的转发表项,得知成员接口包括f1和“虚拟接口3”。转发实例1将组播数据帧转发到接口f1和“虚拟接口3”上。实例3将会从“虚拟接口1”上收到组播数据帧。转发流程查找转发实例3上的转发表。得知成员接口列表包括接口f3和f4。转发实例3将组播数据帧转发到接口f3和f4。

当IGMP SNP实例之间通过树形拓扑,而这个树形拓扑超过了两层,那么最下层的转发实例将组播数据转发给倒数第二层的实例,倒数第二层的实例将组播数据再转发给再上一层的实例,最终组播数据达到顶层的实例,在顶层的实例将数据帧到从该实例的物理接口上转发出去。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号