支持二层组播转发的桥接方法及其路由器的制作方法

文档序号:7758493阅读:246来源:国知局
专利名称:支持二层组播转发的桥接方法及其路由器的制作方法
技术领域
本发明涉及网络通信技术,尤其涉及桥接技术、二层组播技术。
背景技术
在路由器上,桥接技术将桥接组内的各个桥接组接口透明的连接起来。对于单播 帧,桥接遵循802. ID规范采用泛洪和源地址学习完成帧转发。对于组播帧,桥接模块在桥 接组的各个桥接组接口上复制转发,从而透明的将各个桥接组接口上的组播业务桥接起 来。但是,这种泛洪组播帧的方式会增加路由器的CPU负担,造成不需要组播业务帧的各个 桥接组接口上的带宽浪费,并且增加其他网络设备的转发负担。在编号为US005982775A 的《FORWARDING MULTICAST FRAMES ON AN ETHERNETBRIDGE))美国专利文档中提出了在以太桥接上转发组播帧方法。它是通过在桥接 模块中直接分析和记录IGMP (因特尔网组管理协议)等消息,生成桥接转发表,然后将组播 帧按照桥接转发表进行转发。但是,该方法存在几个缺点。第一,桥接模块需要直接分析 IGMP等消息,存储IGMP协议状态机,使得桥接模块实现复杂;第二,在该专利使用的IGMP 协议是RFC 1122,到目前IETF组织已经出了 RFC 2236和RFC 3376两个新版本,在RFC 2236和RFC 3376中新增加了报文消息类型,并且RFC 3376中定义了和前两个RFC不同的 协议状态机,该方法已经不适用于这些新版本;第三,由于IGMP的RFC 1122和RFC 2236的 两个版本中,IGMP报告消息有抑制特性,IGMP报告消息的抑制特性是指,当某个PC主机收 到了 IGMP Vl或者V2的报告消息,并且和自己想加入的组播组地址相同时,它就不会发送 IGMP报告消息了。这也就避免了 IGMP报告消息过多。但是,这也可能造成路由器误认为对 应端口上没有IGMP成员主机的情况,需要针对IGMP报告作特殊处理,否则存在成员端口不 能学全问题;第四,该方案仅在以太接口上支持桥接组播转发,不能在广域接口上支持桥接 组播转发。

发明内容
本发明所要解决的技术问题是,提供一种更易实现的桥接支持二层组播转发方 法,以及实现该方法的路由器。本发明为解决上述技术问题所采用的技术方案是,桥接支持二层组播转发方法, 包括步骤在桥接模块上运行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表项中的桥接组接口列表转发此组 播帧。具体的,桥接模块可通过读取或根据目的IP地址计算得到组播帧所属的组播MAC地址。桥接组从逻辑上可以理解为交换机上的VLAN,而桥接组内的各个桥接组接口从逻 辑上可以理解为VLAN上的各个IGMP SNOOPING接口。本发明将IGMP SNOOPING运行在桥 接模块上,通过配置指定在某个桥接组上使能IGMP SNOOPING。这样,IGMP SNOOPING即可 获取该桥接组的桥接组ID 了,并且针对这个桥接组为之创建一个IGMP SNOOPING实例。每 个实例有一个实例ID,实例ID与桥接组ID —一对应。桥接组上使能IGMP SNOOPING时, IGMP SNOOPING通过桥接组提供的接口,遍历获取到所有桥接组的各个桥接组接口,建立 对应的IGMP SNOOPING接口,这样IGMP SNOOPING接口与桥接组接口——对应。在IGMP SNOOPING接收到IGMP消息后,IGMP SNOOPING所维护的二层组播转发表中实例ID对应的 IGMP SNOOPING接口也能找到一一对应的桥接组接口。因此,当二层组播转发表(实例ID、 组播MAC地址、IGMP SNOOPING接口列表)下发至桥接模块后,桥接模块能够根据生成与二 层组播转发表相对应的BMC表项(桥接组ID、组播MAC地址、桥接组接口列表)。为了让桥 接模块能够识别IGMP消息、PIM消息,本发明扩展了桥接模块现有的链路帧识别方法,除了 识别帧的链路层头部信息(包括目的MAC地址、帧类型),还需进一步识别链路帧中IP数据 包的头部(包括IP目的地址和IP协议号)。这样,本发明中的桥接模块仅需向桥接组中需 要组播帧的一个或多个桥接组接口复制转发,节约了桥接组中不需要组播业务的桥接组接 口上的带宽。IGMP SNOOPING和桥接模块同时运行,分别完成控制层面和转发层面功能,方 法更加简洁,符合模块化思想,另外,因为IGMP SNOOPING已经考虑了解决IGMP报告消息抑 制的特性。它在转发IGMP报告消息时,只会向连接组播路由器的接口或端口转发,而不会 向连接PC的端口或接口转发,因此不会存在端口学习不全的问题,解决了 IGMP报告消息抑 制带来的副作用,能够支持RFC 1122,2236和3376等多个IGMP协议标准。进一步的,为了不限于支持以太接口的桥接二层组播转发,实现广域接口上的桥 接二层组播转发,桥接模块不仅能通过识别链路帧的链路层头部识别出在以太接口上转发 的组播帧;还能通过链路帧中IP数据报文的头部识别出在广域接口上转发的组播帧。进一步的,桥接模块上增加维护BMP (Bridge Multicast Policy,桥接组播策略)。 BMP指定IP消息(包括IGMP消息、PIM消息)的处理策略,组播帧转发策略和组播其他策 略;桥接模块收到的IGMP消息后,根据本地维护的桥接组播策略决定将该IGMP消息 上交给IGMP SNOOPING处理,或在IGMP消息对应的桥接组内的所有桥接组接口上泛洪;桥接模块收到PIM消息后,根据本地维护的桥接组播策略决定将该PIM消息上交 给IGMPSN00PING处理并在PIM消息对应的桥接组内的所有桥接组接口上泛洪,或仅在PIM 消息对应的桥接组内的所有桥接组接口上泛洪。桥接模块收到组播帧后,如没有找到该组播帧匹配的BMC表项,则根据本地维护 的BMP决定将该组播帧丢弃或在组播帧对应的桥接组内的所有桥接组接口上泛洪。具体的,IGMP SNOOPING通过处理IGMP消息、PIM消息,形成和维护组记录表,综合组记录形成二层组播转发表。对应上述实现方法,具有桥接功能的路由器包括桥接模块,IGMP SNOOPING模块;IGMP SNOOPING模块用于,针对每个桥接组创建一个实例,并对应所有桥接组接口 形成IGMP SNOOPING接口 ;通过处理桥接模块上传的IGMP、PIM消息形成二层组播转发表, 并将二层组播转发表下发至桥接模块;所述二层组播转发表包括实例ID、组播MAC地址、 IGMP SNOOPING 接口 列表;桥接模块用于,通过收到的链路帧中IP数据报文的头部识别出IGMP、PIM消息,并 将IGMP消息、PIM消息交给IGMP SNOOPING处理;根据接收到的二层组播转发表生成BMC 表项;所述BMC表项包括桥接组ID、组播MAC地址、桥接组接口列表;收到组播帧后,读取组 播帧中的桥接组ID、组播MAC地址,并查询是否有匹配的BMC表项,当有匹配的BMC表项,则 根据该BMC表项中的桥接组接口列表转发此组播帧。进一步的,组播帧包括在广域接口上转发的组播帧、在以太接口上转发的组播 帧;桥接模块还用于,通过识别链路帧的链路层头部识别出在以太接口上转发的组播 帧;通过链路帧中IP数据报文的头部识别出广域接口上转发的组播帧。进一步的,收到的IGMP消息后,根据本地维护的桥接组播策略决定将该IGMP消 息上交给IGMP SNOOPING模块处理,或在IGMP消息对应的桥接组内的所有桥接组接口 上泛洪;收到PIM消息后,根据本地维护的桥接组播策略决定将该PIM消息上交给IGMP SNOOPING模块处理并在PIM消息对应的桥接组内的所有桥接组接口上泛洪,或仅在PIM消 息对应的桥接组内的所有桥接组接口上泛洪。进一步的,桥接模块还用于,收到组播帧后,如没有找到该组播帧匹配的BMC表 项,则根据本地维护的BMP决定将该组播帧丢弃或在组播帧对应的桥接组内的所有桥接组 接口上泛洪。具体的,IGMP SNOOPING模块通过处理IGMP消息、PIM消息,形成和维护组记录表,
综合组记录形成二层组播转发表。本发明的有益效果是,在桥接模块上实现了二层组播转发,节约了不需要组播业 务的桥接组接口上的带宽,降低交接设备CPU负担,还可降低其它网络设备的复制转发负 担,且支持多种IGMP协议标准,更加有利于运营商或企业在桥接上部署二层组播业务。进 一步的,还支持以太接口和广域接口上的桥接二层组播转发。


图1为实施例桥接支持二层组播的路由器中桥接部分的示意图;图2为IGMP SNOOPING模块内部示意图;图3为桥接模块内部示意图;图4为桥接支持二层组播的报文处理流程。
具体实施例方式如图1所示,IGMP SNOOPING模块和BRIDGE (桥接)模块协同运行。BRIDGE模块 作为数据平面,IGMP SNOOPING模块作为控制平面。BRIDGE模块和IGMP SNOOPING模块之
6间可以传递协议报文和控制函数调用或者通知信息,用图中BRIDGE和IGMPSN00PING之间 的双向箭头表示。桥接模块中包含一个或者多个桥接组。每个桥接组包含一些路由器接口 (桥接组接口)。IGMP SNOOPING模块运行一个或者多个IGMP SNOOPING实例。每个实例包 含一些IGMP SNOOPING接口。这些IGMP SNOOPING接口列表是通过将所有桥接组的接口按 照顺序0,1,2,N-1这样得到的。 如图2所示,在IGMP SNOOPING模块某个实例i中,包含了 IGMP SNOOPING接口 列表的一个子集,IGMP SNOOPING 接口 0,IGMP SNOOPING 接口 2,. . .,IGMP SNOOPING 接口 N-5。在IGMP SNOOPING接口上维护组记录信息,例如IGMP SNOOPING接口 0上维护的组记 录1,组记录2。综合各个接口相同组播组的组记录,形成二层组播转发表,如二层组播转发 表项1,. . .,二层组播转发表项4。另外,每个实例需要维护本实例内采取的组播策略。
如图3所示,桥接模块的某个桥接组i除了维护桥接组接口列表和MAC表项之外, 增加两个部分。一个是BMC表项,形如(桥接ID,IP组播MAC地址,桥接组接口 0,桥接组 接口 1,...,桥接组接口 N-1),BMC表项用于指导二层组播数据帧在桥接组上的复制转发。 另外一个是BMP,形如(桥接ID,类型,设置信息),用于控制IGMP和PIM消息的转发,是否 上交给IGMP SNOOPING模块;控制是否使能二层组播转发;控制BMC查找失败的组播帧转发 处理动作。如图4所示,桥接模块的报文转发处理流程首先检查链路帧头部信息与链路帧 内IP数据报文的头部信息,如链路帧是单播帧或者广播帧,桥接按照原有流程进行处理; 如果是IP报文,还需要检查IP目的地址和IP协议号,如IP报文不是单播或者广播报文, 则检查报文是否是PIM消息,如果是PIM消息,将此PIM消息发送给IGMP SNOOPING模块, 并且在桥接组的所有接口上泛洪。如不是PIM消息,则检查此IP报文是否是IGMP消息,如 果是IGMP消息,将此IGMP消息发送给IGMP SNOOPING模块。如果是组播帧,则按照(桥接 组ID,组播目的MAC地址)查找是否有匹配的BMC表项。如果有匹配的BMC表项存在,将此 报文在BMC指定的各个成员接口上复制发送,如无匹配表项存在,则检查BMP设置信息,如 果设置丢弃未知报文,丢弃该帧;如没有设置丢弃未知报文,则在桥接组的所有接口上泛洪 该组播帧。具体实现步骤如下第一步,针对桥接组运行IGMP SNOOPING实例,每个桥接组一个IGMP SNOOPING实
例。IGMP SNOOPING模块获取所有桥接组内的全部桥接组接口,并用0,1,2,......,N-1为
其编号,形成IGMP SNOOPING的IGMP SNOOPING接口列表。每个IGMP SNOOPING实例包含 IGMP SNOOPING接口列表的子集。通过该方式,仅支持VLAN上二层组播的IGMPSN00PING不 需要做较大的修改;第二步,IGMP SNOOPING将组播策略下发到对应桥接组的BMP中;第三步,桥接模块根据BMP设置信息,将PIM和IGMP消息发送给IGMP SNOOPING 模块,并且将PIM消息在桥接组内的所有接口上泛洪;第四步,IGMP SNOOPING收到桥接模块发送的IGMP消息,里面指定了报文到达的 桥接组ID和桥接组接口,通过转换确定IGMP SNOOPING实例和IGMP SNOOPING接口。对 于IGMP报告和离开消息,IGMP SNOOPING运行普通的组记录学习功能,形成和维护此实例 的IGMP SNOOPING接口的IGMP组记录。对于IGMP查询消息和PIM的HELLO消息,IGMPSNOOPING形成此实例上的IGMP SNOOPING接口 ;第五步,IGMP SNOOPING综合某个实例的各个IGMP SNOOPING接口上的组记录形 成二层组播转发表,形如(实例ID,MAC, IGMP SNOOPING接口列表);第六步,IGMP SNOOPING向桥接模块下发二层组播转发表项,桥接模块中将添加形 如(桥接组ID,MAC,桥接组接口列表)的BMC表项;第七步,当组播帧到达桥接模块时,桥接首先查找BMC表项;如果找到匹配表项, 那么按照BMC表项中记录的桥接组接口列表复制转发此组播帧。否则,如果规定未匹配到 BMC表项的组播帧丢弃,那么丢弃此组播帧;否则,在桥接组的各个接口上泛洪此组播帧。 第八步,对于单播帧或广播帧,桥接按照原有流程进行转发和处理。
权利要求
桥接支持二层组播转发方法,其特征在于,包括步骤在桥接模块上运行IGMP SNOOPING,IGMP SNOOPING针对每个桥接组创建一个实例,并对应所有桥接组接口形成IGMP SNOOPING接口;桥接模块通过收到的链路帧中IP报文的头部识别出IGMP消息、PIM消息;并将IGMP消息、PIM消息交给IGMP SNOOPING处理,IGMP SNOOPING通过处理IGMP消息、PIM消息形成二层组播转发表,并将二层组播转发表下发至桥接模块;所述二层组播转发表包括实例ID、组播MAC地址、IGMP SNOOPING接口列表;桥接模块根据接收到二层组播转发表生成桥接组播缓存表项;所述桥接组播缓存表项包括桥接组ID、组播MAC地址、桥接组接口列表;桥接模块收到组播帧后,确定组播帧所属的桥接组ID、组播MAC地址,并查询是否有匹配的桥接组播缓存表项,当有匹配的桥接组播缓存表项,则根据该桥接组播缓存表项中的桥接组接口列表转发此组播帧。
2.如权利要求1所述桥接支持二层组播转发方法,其特征在于,所述组播帧包括在广 域接口上转发的组播帧、在以太接口上转发的组播帧;桥接模块通过识别链路帧的链路层头部识别出在以太接口上转发的组播帧;桥接模块 通过链路帧中IP数据报文的头部识别出在广域接口上转发的组播帧。
3.如权利要求1或2所述桥接支持二层组播转发方法,其特征在于,桥接模块收到的 IGMP消息后,根据本地维护的桥接组播策略决定将该IGMP消息上交给IGMP SNOOPING处 理,或在IGMP消息对应的桥接组内的所有桥接组接口上泛洪;桥接模块收到PIM消息后,根据本地维护的桥接组播策略决定将该PIM消息上交给 IGMPSN00PING处理并在PIM消息对应的桥接组内的所有桥接组接口上泛洪,或仅在PIM消 息对应的桥接组内的所有桥接组接口上泛洪。
4.如权利要求3所述桥接支持二层组播转发方法,其特征在于,桥接模块收到组播帧 后,如没有找到该组播帧匹配的桥接组播缓存表项,则根据本地维护的桥接组播策略决定 将该组播帧丢弃或在组播帧对应的桥接组内的所有桥接组接口上泛洪。
5.如权利要求4所述桥接支持二层组播转发方法,其特征在于,IGMPSNOOPING通过处 理IGMP消息、PIM消息,形成和维护组记录表,综合组记录表形成二层组播转发表。
6.桥接支持二层组播转发的路由器,包括桥接模块,其特征在于,还包括 IGMPSN00PING 模块;所述IGMP SNOOPING模块用于,针对每个桥接组创建一个实例,并对应所有桥接组接口 形成IGMP SNOOPING接口 ;通过处理桥接模块上传的IGMP、PIM消息形成二层组播转发表, 并将二层组播转发表下发至桥接模块;所述二层组播转发表包括实例ID、组播MAC地址、 IGMP SNOOPING 接口 列表;所述桥接模块用于,通过收到的链路帧中IP数据报文的头部识别出IGMP、PIM消息,并 将IGMP消息、PIM消息交给IGMP SNOOPING处理;根据接收到的二层组播转发表生成桥接 组播缓存表项;所述桥接组播缓存表项包括桥接组ID、组播MAC地址、桥接组接口列表;收 到组播帧后,确定组播帧所属的桥接组ID、组播MAC地址,并查询是否有匹配的桥接组播缓 存表项,当有匹配的桥接组播缓存表项,则根据该桥接组播缓存表项中的桥接组接口列表 转发此组播帧。
7.如权利要求6所述桥接支持二层组播转发的路由器,所述组播帧包括在广域接口上转发的组播帧、在以太接口上转发的组播帧;桥接模块还用于,通过识别链路帧的链路层头部识别出在以太接口上转发的组播帧; 通过链路帧中IP数据报文的头部识别出广域接口上转发的组播帧。
8.如权利要求6或7所述桥接支持二层组播转发的路由器,其特征在于,桥接模块 还用于,收到的IGMP消息后,根据本地维护的桥接组播策略决定将该IGMP消息上交给 IGMPSN00PING模块处理,或在IGMP消息对应的桥接组内的所有桥接组接口上泛洪;收到 PIM消息后,根据本地维护的桥接组播策略决定将该PIM消息上交给IGMP SNOOPING模块处 理并在PIM消息对应的桥接组内的所有桥接组接口上泛洪,或仅在PIM消息对应的桥接组 内的所有桥接组接口上泛洪。
9.如权利要求8所述桥接支持二层组播转发的路由器,其特征在于,桥接模块还用于, 收到组播帧后,如没有找到该组播帧匹配的桥接组播缓存表项,则根据本地维护的桥接组 播策略决定将该组播帧丢弃或在组播帧对应的桥接组内的所有桥接组接口上泛洪。
10.如权利要求9所述桥接支持二层组播转发的路由器,其特征在于,IGMPSNOOPING 模块还用于,通过处理IGMP消息、PIM消息,形成和维护组记录表,综合组记录形成二层组 播转发表。
全文摘要
本发明提供一种更易实现的桥接支持二层组播转发方法,以及实现该方法的路由器。本发明将IGMP SNOOPING运行在桥接模块上,通过配置指定在某个桥接组上使能IGMP SNOOPING。这样,IGMP SNOOPING即可获取该桥接组的桥接组ID了,并且针对这个桥接组为之创建一个IGMP SNOOPING实例。桥接组上使能IGMP SNOOPING时,IGMP SNOOPING通过桥接组提供的接口,遍历获取到所有桥接组的各个桥接组接口,建立对应的IGMP SNOOPING接口。在IGMP SNOOPING接收到IGMP消息后,IGMP SNOOPING所维护的二层组播转发表中实例ID对应的IGMP SNOOPING接口也能找到一一对应的桥接组接口。当二层组播转发表下发至桥接模块后,桥接模块能够根据生成与二层组播转发表相对应的BMC表项。
文档编号H04L12/56GK101895481SQ20101026784
公开日2010年11月24日 申请日期2010年8月31日 优先权日2010年8月31日
发明者林茂, 王强 申请人:迈普通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1