CN102694734B - 二层交换设备基于Linux内核桥实现组播的方法 - Google Patents
二层交换设备基于Linux内核桥实现组播的方法 Download PDFInfo
- Publication number
- CN102694734B CN102694734B CN201210190639.1A CN201210190639A CN102694734B CN 102694734 B CN102694734 B CN 102694734B CN 201210190639 A CN201210190639 A CN 201210190639A CN 102694734 B CN102694734 B CN 102694734B
- Authority
- CN
- China
- Prior art keywords
- message
- multicast
- linux kernel
- switching equipment
- igmp
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 33
- 230000005540 biological transmission Effects 0.000 claims abstract description 18
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 claims description 4
- 230000032683 aging Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 238000000060 site-specific infrared dichroism spectroscopy Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种二层交换设备基于Linux内核桥实现IP组播的方法,包括以下步骤:设置在二层交换设备中的Linux内核桥监听主机与路由器之间的IGMP报文并根据IGMP报告报文或IGMP离开报文对自身或二层交换设备中的网络处理器的组播转发表项进行维护;所述Linux内核桥识别收到的数据帧是否为组播报文,并根据自身或网络处理器上的组播转发表项将组播报文向具有组成员的端口转发,对其他报文进行透传。本发明,通过设置在二层交换设备中的Linux内核桥实现了IGMP?Snooping功能,解决了二层交换设备中组播报文泛滥的问题,通过灵活的配置,大大降低了CPU的负荷,并在此基础上实现了有线端口和无线端口的全桥的IGMP?Snooping功能。
Description
技术领域
本发明涉及通信领域中的IP网络数据传输技术,具体涉及二层交换设备基于Linux内核桥(Linuxkernelbridge)实现IP组播的方法。
背景技术
IP组播技术有效地解决了单点发送、多点接收的问题,实现了IP网络中点到多点的高效数据传送,能够大量节约网络带宽、降低网络负载。从而方便地提供包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等新的增值业务。
实现IP组播传输,组播源和接收者以及两者之间的下层网络都必须支持组播协议。根据协议的作用范围,组播协议分为主机-路由器之间的协议,即组播成员关系协议IGMP,以及路由器-路由器之间协议,主要是各种路由协议。同时,为了有效抑制组播数据在二层网络中的扩散,引入了IGMP监听(IGMPSnooping)、IGMPProxy和CGMP协议等二层组播协议。通过IGMP和二层组播协议,在路由器和交换机中建立起直联网段内的组成员关系信息,具体地说,就是哪个接口下有哪个组播组的成员。域内组播路由协议根据IGMP维护的这些组播组成员关系信息,运用一定的组播路由算法构造组播分发树,在路由器中建立组播路由状态,路由器根据这些状态进行组播数据包转发。域间组播路由协议根据网络中配置的域间组播路由策略,在各自治二层设备(AS,AutonomousSystem)间发布具有组播能力的路由信息以及组播源信息,使组播数据能在域间进行转发。
众所周知,IGMP(InternetGroupManagementProtocol)组播成员管理机制是针对网络协议的第三层设计的,在第三层路由器中可以对组播报文的转发进行控制,只要进行适当的接口配置和对TTL(TimetoLive)值的检测就可以了。但是在很多情况下,组播报文要不可避免地经过一些二层交换设备,尤其是在局域网环境里,如果不对二层设备进行相应的配置,则组播报文就会转发给二层交换设备的所有接口,会浪费大量的二层设备资源。
发明内容
本发明所要解决的技术问题是解决二层交换设备中组播报文泛滥,降低CPU负荷的问题,并进一步实现了有线端口和无线端口的全桥IGMPSnooping功能。
为了解决上述技术问题,本发明所采用的技术方案是提供一种二层交换设备基于Linux内核桥实现IP组播的方法,包括以下步骤:
设置在二层交换设备中的Linux内核桥监听主机与路由器之间的IGMP报文并根据IGMP报告报文或IGMP离开报文对自身或二层交换设备中的网络处理器的组播转发表项进行维护;
所述Linux内核桥识别收到的数据帧是否为组播放报文,并根据自身或网络处理器上的组播转发表项将组播报文向具有组成员的端口转发,对其他报文进行透传。
在上述方法中,如果所述二层交换设备具备网络处理器,则所述组播报文由所述网络处理器以FastPath方式进行转发,否则所述组播报文由所述Linux内核桥以SlowPath方式进行转发。
在上述方法中,Linux内核桥以收到的数据帧的目的MAC地址头部是否为01:00:5E并且EtherType值是否为0x0800获得该数据帧是否为组播报文的判断结果。
在上述方法中,Linux内核桥对自身或二层交换设备中的网络处理器上的组播转发表项进行维护包括以下步骤:
A101、以IP层协议类型代码是否为0x02获得该数据帧是否为IGMP报文的判断结果,当判断结果表明所述数据帧报文是不IGMP报文时,丢弃该数据帧;否则转步骤A102;
A102、判断所述IGMP报文是否为IGMPQuery报文,如果是则进行透传;否则转步骤A103;
A103、判断所述IGMP报文是否为IGMPLeave报文,如果不是,转步骤A105,否则转步骤A104;
A104、通过读取配置判断是否开启Fast-Leave功能,如果是,则直接从所述Linux内核桥或所述网络处理器上的组播转发表项中删除具有组成员的端口,否则,直接转步骤A105;
A105、透传该报文。
在上述方法中,如果组播报文的转发端口包括若干无线端口,则所述Linux内核桥或所述网络处理器将组播报文克隆为与无线端口数量相应的单播报文。
本发明,通过设置在二层交换设备中的Linux内核桥实现了IGMPSnooping功能,解决了二层交换设备中组播报文泛滥的问题,通过灵活的配置,大大降低了CPU的负荷,并进一步实现了有线端口和无线端口的全桥的IGMPSnooping功能。
附图说明
图1是本发明的流程图;
图2是本发明中FastPath功能描述图;
图3是本发明的一个具体实施例流程图。
具体实施方式
本发明提供了一种二层交换设备基于Linux内核桥实现IP组播的方法,通过软件(即Linux内核桥)来实现全桥(含有线端口和无线端口)的IGMPSnooping功能,具体作法是:通过对Linux内核桥的br_handle_frame_finish()函数(位于net/bridge/br_input.c文件里面)进行扩展,实现IGMP报文的监听功能,维护端口的组成员关系,并根据组成员关系由Linux内核桥内(或网络处理器)对组播报文进行转发,从而实现了二层交换设备的IP组播功能。
其中IGMP监听的工作原理如下:
主机发出IGMP成员报告消息,这个消息是给路由器的,在IGMP成员报告经过二层交换机时,交换机对这个消息进行监听,并记录下来形成组成员和接口的对应关系,交换机在收到组播报文时,根据组成员和端口的对应关系(组播转发表),仅向具有组成员的端口转发组播报文。
本发明包括以下步骤:
具体步骤如下:
在二层交换设备(如:家庭网关)中设置基于Linux的内核桥,所述Linux的内核桥监听主机与路由器之间的IGMP报文并根据IGMP报告报文或IGMP离开报文对自身或二层交换设备中的网络处理器的组播转发表项进行维护,对端口进行成组或删除操作;
所述Linux内核桥以收到的数据帧的目的MAC地址头部是否为01:00:5E并且EtherType值是否为0x0800判断该数据帧是否为组播报文,并根据自身或网络处理器上的组播转发表项将组播报文(通常为UDP流)向具有组成员的端口转发,对其他报文进行透传。
下面结合附图和一个具体实施例对本发明作出详细的说明,以便于本领域技术人员更好地理解。
本具体实施例中,二层交换设备基于Linux内核桥实现IP组播的实施环境和处理流程如图3所示,包括两台主机、一个家庭网关(二层设备)和一台路由器(三层设备)。主机PC1为台式机,通过网线与家庭网关的LAN1口(端口1)相连,主机PC2为笔记本电脑,采用无线方式与家庭网关的SSID1(端口2)相连。在家庭网关上设置基于Linux内核桥实现IP组播的软件功能模块,实现IGMPSnooping功能,包括基于IGMPReport报文的成组、基于IGMPLeave报文的快速离开机制、组成员表项老化以及对无线端口组播转发的特殊处理。家庭网关上设有支持FastPath功能的单独网络处理器。路由器负责组播路由及组播源(如IPTV数据流)。
FastPath是指那些可以依据已有状态转发的路径,在这些路径上,网关、二层地址等都已经准备好了,不需要缓存数据包,可以直接转发。SlowPath是那些需要额外信息的数据包,比如查找路由,解析MAC地址等。
以下结合图3详细说明使用本发明实现IP组播的处理流程。为方便说明,对图3中的编号进行约定:C为前缀的代表IGMP报文的处理,T为前缀的代表组播报文的处理,A为前缀的代表Linux内核桥的处理。
具体步骤如下:
(C1)、路由器通过IGMPQuery报文向家庭网关查询某一普通组的组员情况,家庭网关通过Linux内核桥向PC1、PC2透传该IGMPQuery报文;
(A1)、家庭网关上的Linux内核桥,通过读取配置来判断IGMPSnooping功能是否处于开启状态,当IGMPSnooping功能未开启时,按常规方式处理;当IGMPSnooping功能开启时,在所有端口(不管是有线端口还是无线端口,如:四个有线端口和四个无线SSID端口)监听主机PC1和PC2与路由器之间的IGMP报文,再根据IGMP报告报文或IGMP离开报文维护组播转发表。本实施例中,如果之前端口1和端口2已经建立了成组关系,则将端口1和端口2成组;如果没有,则通过下面的C2-C5建立成组关系。
在不具有网络处理器的情况下,所有的组播流由所述Linux内核桥转发,在具有网络处理器的情况下,所有的组播流经由网络处理器进行转发。
Linux内核桥监听及维护组播转发表具体步骤如图1所示:
A101、以IP层协议类型代码是否为0x02获得该数据帧是否为IGMP报文的判断结果,当判断结果表明所述数据帧报文是不IGMP报文时,丢弃该数据帧;否则转步骤A102;
A102、判断所述IGMP报文是否为IGMPQuery报文,如果是则进行透传;否则转步骤A103;
A103、判断所述IGMP报文是否为IGMPLeave报文,如果不是,转步骤A105,否则转步骤A104;
A104、通过读取配置判断是否开启Fast-Leave功能,如果是,则直接从所述Linux内核桥或所述网络处理器上的组播转发表项中删除具有组成员的端口,否则,直接转步骤A105;
A105、透传该报文。此时,该组播转发表支持老化机制,且老化时间可配置。
(C2、C3)PC1和PC2分别通过IGMPReport报文向家庭网关报告自己的成员所属关系(此处假设PC1、PC2均属于该普通组);
(C4、C5)、家庭网关向路由器发送上述IGMPReport报文;
(A2)、根据组播转发表向端口1和端口2转发组播流;
(T1)、路由器向家庭网关发送该组播组的组播报文Traffic1;
(T2、T3)如果二层设备中(家庭网关)中设有网络处理器,则组播报文通过网络处理器以FastPath方式转发,如果二层设备中(家庭网关)没有网络处理器,则组播报文由Linux内核桥以SlowPath方式进行转发,如果组播报文的转发端口包括若干无线端口,则将组播报文克隆为与无线端口数量相应的单播报文进行转发;本实施例中,家庭网关中设有支持组播报文(非IGMP报文)的FastPath传输的网络处理器,因此,对该组播报文Traffic1向端口1和2(PC1、PC2)进行FastPath转发;
家庭网关中的Linux内核桥根据收到的数据帧的目的MAC地址头部是否为01:00:5E并且EtherType值是否为0x0800判断该数据帧是否为组播报文,如果不是组播报文则进行透传。本实施例中,Traffic1为组播报文,因此,家庭网关查询组播转发表项,发现应该向端口1和2转发组播报文Traffic1;
(C6)、PC1通过向家庭网关发送Leave报文来退出该组播组;
(A3)、家庭网关通过Linux内核桥判断Fast-Leave功能是否处于开启状态,如果是,则删除相应的端口;否则,转C7;
(C7)、家庭网关向三层路由器递送该Leave报文;
(C8)、三层路由器在收到PC1的Leave报文后,立即向家庭网关发送针对该特定组的Query报文;
(C9)、PC2在接收到从家庭网关透传过来的特定组Query报文后,通过Report报文向家庭网关报告自己的组成员关系;
(A4)、家庭网关根据判断得知该组播组的PC2成员关系不变,保持网络处理器对PC2的组播转发表项;
(C10)、家庭网关向三层路由器透传PC2的Report报文;
(A5)、根据组播转发表向端口2转发组播流。具体作法是:家庭网关的网络处理器查询其组播转发表,发现PC1已经退出该组播组,应向端口2转发组播报文Traffic2;
(T4)、三层路由器向家庭网关转发该另一个组播报文Traffic2;
(T5)、家庭网关将该组播报文向端口2进行转发(FastPath方式或SlowPath方式,本实施例中由于家庭网关上设有网络管理器,因此采用FastPath方式)。
本发明中,Linux内核桥通过SlowPath的方式处理IGMP报文,如果二层设备具备网络处理器,则组播报文由网络处理器以FastPath方式进行转发,否则组播报文由Linux内核桥以SlowPath方式进行转发。即:对于组播报文的转发,既可以是采用Linux内核桥的SlowPath方式,又可以采用硬件(网络处理器)的FastPath,但是对于组播报文的处理均为SlowPath方式,这样对于不同的需求可以提供灵活的解决方案,特别是针对家庭网关产品。
在上述步骤中:
Linux内核桥支持IPv6的MLDSnooping(MulticastListenerDiscoverySnooping),并且根据实际需要,Linux内核桥在IGMPSnooping模式下对于离开组播组的处理支持两种方式:自然老化和快速离开(Fast-Leave),并且可配置。
以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均包含于本发明的保护范围之内。
Claims (4)
1.二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,包括以下步骤:
设置在二层交换设备中的Linux内核桥监听主机与路由器之间的IGMP报文,并根据IGMP报告报文或IGMP离开报文对自身或二层交换设备中的网络处理器的组播转发表项进行维护,具体做法是:通过对Linux内核桥的br_handle_frame_finish()函数进行扩展,实现IGMP报文的监听功能,维护端口的组成员关系;
根据所述Linux内核桥自身或网络处理器上的组播转发表项将组播报文向具有组成员的端口转发;
Linux内核桥对自身或二层交换设备中的网络处理器上的组播转发表项进行维护包括以下步骤:
A101、以IP层协议类型代码是否为0x02获得数据帧报文是否为IGMP报文的判断结果,当判断结果表明所述数据帧报文不是IGMP报文时,执行步骤A105;否则转步骤A102;
A102、判断所述IGMP报文是否为IGMPQuery报文,如果是则进行透传;否则转步骤A103;
A103、判断所述IGMP报文是否为IGMPLeave报文,如果不是,转步骤A105,否则,转步骤A104;
A104、通过读取配置判断是否开启Fast-Leave功能,如果是,则直接从所述Linux内核桥或所述网络处理器上的组播转发表项中删除具有组成员的端口,否则,直接转步骤A105;
A105、透传该报文。
2.如权利要求1所述的二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,如果所述二层交换设备具备网络处理器,则所述组播报文由所述网络处理器以FastPath方式进行转发,否则所述组播报文由所述Linux内核桥以SlowPath方式进行转发。
3.如权利要求1所述的二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,Linux内核桥以收到的数据帧的目的MAC地址头部是否为01:00:5E并且EtherType值是否为0x0800获得该数据帧是否为组播报文的判断结果。
4.如权利要求1所述的二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,如果组播报文的转发端口包括若干无线端口,则所述Linux内核桥或所述网络处理器将组播报文克隆为与无线端口数量相应的单播报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210190639.1A CN102694734B (zh) | 2012-06-11 | 2012-06-11 | 二层交换设备基于Linux内核桥实现组播的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210190639.1A CN102694734B (zh) | 2012-06-11 | 2012-06-11 | 二层交换设备基于Linux内核桥实现组播的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102694734A CN102694734A (zh) | 2012-09-26 |
CN102694734B true CN102694734B (zh) | 2016-02-10 |
Family
ID=46860023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210190639.1A Active CN102694734B (zh) | 2012-06-11 | 2012-06-11 | 二层交换设备基于Linux内核桥实现组播的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102694734B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103795604B (zh) * | 2014-01-14 | 2017-09-26 | 普联技术有限公司 | 一种实现以太网拓扑自动切换的装置及方法 |
CN105306373B (zh) * | 2014-07-29 | 2019-03-15 | 杭州迪普科技股份有限公司 | 一种igmp报文处理方法以及装置 |
CN114157684B (zh) * | 2020-08-18 | 2024-01-02 | 华为终端有限公司 | 一种报文处理的方法、设备以及存储介质 |
CN113490162B (zh) * | 2021-07-04 | 2022-05-17 | 芯河半导体科技(无锡)有限公司 | 一种组播数据流转发的优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571379A (zh) * | 2003-07-11 | 2005-01-26 | 华为技术有限公司 | 多端口虚拟局域网系统中的组播数据转发方法 |
CN1744572A (zh) * | 2005-08-31 | 2006-03-08 | 杭州华为三康技术有限公司 | 控制组播数据转发的交换设备及方法 |
EP2079198A1 (en) * | 2006-11-07 | 2009-07-15 | Huawei Technologies Co Ltd | Method and exchanger for realizing internet group management protocol snooping |
CN102075422A (zh) * | 2011-01-04 | 2011-05-25 | 杭州华三通信技术有限公司 | 一种组播管理方法及二层设备 |
-
2012
- 2012-06-11 CN CN201210190639.1A patent/CN102694734B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1571379A (zh) * | 2003-07-11 | 2005-01-26 | 华为技术有限公司 | 多端口虚拟局域网系统中的组播数据转发方法 |
CN1744572A (zh) * | 2005-08-31 | 2006-03-08 | 杭州华为三康技术有限公司 | 控制组播数据转发的交换设备及方法 |
EP2079198A1 (en) * | 2006-11-07 | 2009-07-15 | Huawei Technologies Co Ltd | Method and exchanger for realizing internet group management protocol snooping |
CN102075422A (zh) * | 2011-01-04 | 2011-05-25 | 杭州华三通信技术有限公司 | 一种组播管理方法及二层设备 |
Non-Patent Citations (2)
Title |
---|
基于Linux的网桥和NAT网关集成的实现;何顶新;《华中科技大学学报》;20010430;第27页-29页 * |
基于嵌入式liunx无线网关设计;杜廷龙;《电脑知识与技术》;20111130;第7613页-7614页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102694734A (zh) | 2012-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10230577B2 (en) | Packet broadcast mechanism in a split architecture network | |
CN102075417B (zh) | 组播剪枝方法及协议无关组播路由器 | |
CN102647355B (zh) | Lacp协商处理方法、中继节点及系统 | |
CN101286990B (zh) | 二层组播的转发方法和装置 | |
CN100433730C (zh) | 组播点播方法及系统 | |
CN101616014B (zh) | 一种实现跨虚拟专用局域网组播的方法 | |
CN102215172B (zh) | 一种实现跨虚拟专用局域网组播的方法和系统 | |
CN102201999B (zh) | 一种实现组播业务负荷分担的方法和系统 | |
CN101702689B (zh) | 组播业务数据负载均衡的传输控制方法及传输控制设备 | |
CN103916275A (zh) | 一种bfd检测装置和方法 | |
CN100396055C (zh) | 组播源过滤的处理方法 | |
WO2007054006A1 (fr) | Station de base de système d’accès sans fil large bande et système pour réaliser un service de diffusion de groupe | |
CN102694734B (zh) | 二层交换设备基于Linux内核桥实现组播的方法 | |
CN103138955A (zh) | 在第2层网络中使用多个igmp查询器 | |
CN105591692A (zh) | 以太网无源光网络epon中的环路消除方法和设备 | |
CN102647359B (zh) | 基于DSA TAG及自定义协议栈的网桥IGMP Snooping实现方法 | |
CN101610200A (zh) | 组播路由的切换方法及装置 | |
CN106210166B (zh) | 一种扩展无线控制器设备mac地址转发表的容量的系统 | |
CN100479371C (zh) | 一种广播发送报文的方法及一种交换设备 | |
CN100477635C (zh) | 一种域间组播的传输方法及边缘设备 | |
CN100433731C (zh) | 一种实现vpn组播的方法 | |
US20080240114A1 (en) | Data Frame Forwarding Method By Data Relay Entity And Data Relay Entity | |
CN102244583A (zh) | 组播流转发方法及网络设备 | |
CN101488873B (zh) | 组播加入方法及系统 | |
CN106375100A (zh) | 一种视频监控系统中组播实现方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |