CN102694734A - 二层交换设备基于Linux内核桥实现组播的方法 - Google Patents

二层交换设备基于Linux内核桥实现组播的方法 Download PDF

Info

Publication number
CN102694734A
CN102694734A CN2012101906391A CN201210190639A CN102694734A CN 102694734 A CN102694734 A CN 102694734A CN 2012101906391 A CN2012101906391 A CN 2012101906391A CN 201210190639 A CN201210190639 A CN 201210190639A CN 102694734 A CN102694734 A CN 102694734A
Authority
CN
China
Prior art keywords
message
multicast
linux kernel
igmp
switching equipment
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
CN2012101906391A
Other languages
English (en)
Other versions
CN102694734B (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.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication 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 Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201210190639.1A priority Critical patent/CN102694734B/zh
Publication of CN102694734A publication Critical patent/CN102694734A/zh
Application granted granted Critical
Publication of CN102694734B publication Critical patent/CN102694734B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种二层交换设备基于Linux内核桥实现IP组播的方法,包括以下步骤:设置在二层交换设备中的Linux内核桥监听主机与路由器之间的IGMP报文并根据IGMP报告报文或IGMP离开报文对自身或二层交换设备中的网络处理器的组播转发表项进行维护;所述Linux内核桥识别收到的数据帧是否为组播报文,并根据自身或网络处理器上的组播转发表项将组播报文向具有组成员的端口转发,对其他报文进行透传。本发明,通过设置在二层交换设备中的Linux内核桥实现了IGMPSnooping功能,解决了二层交换设备中组播报文泛滥的问题,通过灵活的配置,大大降低了CPU的负荷,并在此基础上实现了有线端口和无线端口的全桥的IGMPSnooping功能。

Description

二层交换设备基于Linux内核桥实现组播的方法
技术领域
本发明涉及通信领域中的IP网络数据传输技术,具体涉及二层交换设备基于Linux内核桥(Linux kernel bridge)实现IP组播的方法。
背景技术
IP组播技术有效地解决了单点发送、多点接收的问题,实现了IP网络中点到多点的高效数据传送,能够大量节约网络带宽、降低网络负载。从而方便地提供包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等新的增值业务。
实现IP组播传输,组播源和接收者以及两者之间的下层网络都必须支持组播协议。根据协议的作用范围,组播协议分为主机-路由器之间的协议,即组播成员关系协议IGMP,以及路由器-路由器之间协议,主要是各种路由协议。同时,为了有效抑制组播数据在二层网络中的扩散,引入了IGMP监听 (IGMP Snooping)、IGMP Proxy和CGMP协议等二层组播协议。通过 IGMP 和二层组播协议,在路由器和交换机中建立起直联网段内的组成员关系信息,具体地说,就是哪个接口下有哪个组播组的成员。域内组播路由协议根据 IGMP 维护的这些组播组成员关系信息,运用一定的组播路由算法构造组播分发树,在路由器中建立组播路由状态,路由器根据这些状态进行组播数据包转发。域间组播路由协议根据网络中配置的域间组播路由策略,在各自治二层设备(AS,Autonomous System)间发布具有组播能力的路由信息以及组播源信息,使组播数据能在域间进行转发。
众所周知,IGMP (Internet Group Management Protocol)组播成员管理机制是针对网络协议的第三层设计的,在第三层路由器中可以对组播报文的转发进行控制,只要进行适当的接口配置和对 TTL(Time to Live) 值的检测就可以了。但是在很多情况下,组播报文要不可避免地经过一些二层交换设备,尤其是在局域网环境里,如果不对二层设备进行相应的配置,则组播报文就会转发给二层交换设备的所有接口,会浪费大量的二层设备资源。
发明内容
本发明所要解决的技术问题是解决二层交换设备中组播报文泛滥,降低CPU负荷的问题,并进一步实现了有线端口和无线端口的全桥IGMP Snooping功能。
为了解决上述技术问题,本发明所采用的技术方案是提供一种二层交换设备基于Linux内核桥实现IP组播的方法,包括以下步骤:
设置在二层交换设备中的Linux内核桥监听主机与路由器之间的IGMP报文并根据IGMP报告报文或IGMP离开报文对自身或二层交换设备中的网络处理器的组播转发表项进行维护;
所述Linux内核桥识别收到的数据帧是否为组播放报文,并根据自身或网络处理器上的组播转发表项将组播报文向具有组成员的端口转发,对其他报文进行透传。
在上述方法中,如果所述二层交换设备具备网络处理器,则所述组播报文由所述网络处理器以Fast Path方式进行转发,否则所述组播报文由所述Linux内核桥以Slow Path方式进行转发。
在上述方法中,Linux内核桥以收到的数据帧的目的MAC地址头部是否为01:00:5E并且EtherType值是否为0x0800获得该数据帧是否为组播报文的判断结果。
在上述方法中,Linux内核桥对自身或二层交换设备中的网络处理器上的组播转发表项进行维护包括以下步骤:
A101、以IP层协议类型代码是否为0x02获得该数据帧是否为IGMP报文的判断结果,当判断结果表明所述数据帧报文是不IGMP报文时,丢弃该数据帧;否则转步骤A102;
A102、判断所述IGMP报文是否为IGMP Query报文,如果是则进行透传;否则转步骤A103;
A103、判断所述IGMP报文是否为IGMP Leave报文,如果不是,转步骤A105,否则转步骤A104;
A104、通过读取配置判断是否开启Fast-Leave功能,如果是,则直接从所述Linux内核桥或所述网络处理器上的组播转发表项中删除具有组成员的端口,否则,直接转步骤A105;
A105、透传该报文。
在上述方法中,如果组播报文的转发端口包括若干无线端口,则所述Linux内核桥或所述网络处理器将组播报文克隆为与无线端口数量相应的单播报文。
本发明,通过设置在二层交换设备中的Linux内核桥实现了IGMP Snooping功能,解决了二层交换设备中组播报文泛滥的问题,通过灵活的配置,大大降低了CPU的负荷,并进一步实现了有线端口和无线端口的全桥的IGMP Snooping功能。
附图说明
图1是本发明的流程图;
图2是本发明中Fast Path功能描述图;
图3是本发明的一个具体实施例流程图。
具体实施方式
本发明提供了一种二层交换设备基于Linux内核桥实现IP组播的方法,通过软件(即Linux内核桥)来实现全桥(含有线端口和无线端口)的IGMP Snooping功能,具体作法是:通过对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组播的软件功能模块,实现IGMP Snooping功能,包括基于IGMP Report报文的成组、基于IGMP Leave报文的快速离开机制、组成员表项老化以及对无线端口组播转发的特殊处理。家庭网关上设有支持Fast Path功能的单独网络处理器。路由器负责组播路由及组播源(如IPTV数据流)。
Fast Path是指那些可以依据已有状态转发的路径,在这些路径上,网关、二层地址等都已经准备好了,不需要缓存数据包,可以直接转发。Slow Path是那些需要额外信息的数据包,比如查找路由,解析MAC地址等。
以下结合图3详细说明使用本发明实现IP组播的处理流程。为方便说明,对图3中的编号进行约定:C为前缀的代表IGMP报文的处理,T为前缀的代表组播报文的处理,A为前缀的代表Linux内核桥的处理。
具体步骤如下:
(C1)、路由器通过IGMP Query报文向家庭网关查询某一普通组的组员情况,家庭网关通过Linux内核桥向PC1、PC2透传该IGMP Query报文;
(A1)、家庭网关上的Linux内核桥,通过读取配置来判断IGMP Snooping功能是否处于开启状态,当IGMP Snooping功能未开启时,按常规方式处理;当IGMP Snooping功能开启时,在所有端口(不管是有线端口还是无线端口,如:四个有线端口和四个无线SSID端口)监听主机PC1和PC2与路由器之间的IGMP报文,再根据IGMP报告报文或IGMP离开报文维护组播转发表。本实施例中,如果之前端口1和端口2已经建立了成组关系,则将端口1和端口2成组;如果没有,则通过下面的C2-C5建立成组关系。
在不具有网络处理器的情况下,所有的组播流由所述Linux内核桥转发,在具有网络处理器的情况下,所有的组播流经由网络处理器进行转发。
Linux内核桥监听及维护组播转发表具体步骤如图1所示:
A101、以IP层协议类型代码是否为0x02获得该数据帧是否为IGMP报文的判断结果,当判断结果表明所述数据帧报文是不IGMP报文时,丢弃该数据帧;否则转步骤A102;
A102、判断所述IGMP报文是否为IGMP Query报文,如果是则进行透传;否则转步骤A103;
A103、判断所述IGMP报文是否为IGMP Leave报文,如果不是,转步骤A105,否则转步骤A104;
A104、通过读取配置判断是否开启Fast-Leave功能,如果是,则直接从所述Linux内核桥或所述网络处理器上的组播转发表项中删除具有组成员的端口,否则,直接转步骤A105;
A105、透传该报文。此时,该组播转发表支持老化机制,且老化时间可配置。
(C2、C3)PC1和PC2分别通过IGMP Report报文向家庭网关报告自己的成员所属关系(此处假设PC1、PC2均属于该普通组);
(C4、C5)、家庭网关向路由器发送上述IGMP Report报文;
(A2)、根据组播转发表向端口1和端口2转发组播流;
(T1)、路由器向家庭网关发送该组播组的组播报文Traffic1;
(T2、T3)如果二层设备中(家庭网关)中设有网络处理器,则组播报文通过网络处理器以Fast Path方式转发,如果二层设备中(家庭网关)没有网络处理器,则组播报文由Linux内核桥以Slow Path方式进行转发,如果组播报文的转发端口包括若干无线端口,则将组播报文克隆为与无线端口数量相应的单播报文进行转发;本实施例中,家庭网关中设有支持组播报文(非IGMP报文)的Fast Path传输的网络处理器,因此,对该组播报文Traffic1向端口1和2(PC1、PC2)进行Fast Path转发;
家庭网关中的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进行转发(Fast Path方式或Slow Path方式,本实施例中由于家庭网关上设有网络管理器,因此采用Fast Path方式)。
本发明中,Linux内核桥通过Slow Path的方式处理IGMP报文,如果二层设备具备网络处理器,则组播报文由网络处理器以Fast Path方式进行转发,否则组播报文由Linux内核桥以Slow Path方式进行转发。即:对于组播报文的转发,既可以是采用Linux内核桥的Slow Path方式,又可以采用硬件(网络处理器)的Fast Path,但是对于组播报文的处理均为Slow Path方式,这样对于不同的需求可以提供灵活的解决方案,特别是针对家庭网关产品。
在上述步骤中:
Linux内核桥支持IPv6的MLD Snooping(Multicast Listener Discovery Snooping),并且根据实际需要,Linux内核桥在IGMP Snooping模式下对于离开组播组的处理支持两种方式:自然老化和快速离开(Fast-Leave),并且可配置。
以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均包含于本发明的保护范围之内。

Claims (5)

1.二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,包括以下步骤:
设置在二层交换设备中的Linux内核桥监听主机与路由器之间的IGMP报文,并根据IGMP报告报文或IGMP离开报文对自身或二层交换设备中的网络处理器的组播转发表项进行维护;
根据所述Linux内核桥自身或网络处理器上的组播转发表项将组播报文向具有组成员的端口转发。
2.如权利要求1所述的二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,如果所述二层交换设备具备网络处理器,则所述组播报文由所述网络处理器以Fast Path方式进行转发,否则所述组播报文由所述Linux内核桥以Slow Path方式进行转发。
3.如权利要求1所述的二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,Linux内核桥以收到的数据帧的目的MAC地址头部是否为01:00:5E并且EtherType值是否为0x0800获得该数据帧是否为组播报文的判断结果。
4.如权利要求1所述的二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,Linux内核桥对自身或二层交换设备中的网络处理器上的组播转发表项进行维护包括以下步骤:
A101、以IP层协议类型代码是否为0x02获得该数据帧是否为IGMP报文的判断结果,当判断结果表明所述数据帧报文是不IGMP报文时,丢弃该数据帧;否则转步骤A102;
A102、判断所述IGMP报文是否为IGMP Query报文,如果是则进行透传;否则转步骤A103;
A103、判断所述IGMP报文是否为IGMP Leave报文,如果不是,转步骤A105,否则,转步骤A104;
A104、通过读取配置判断是否开启Fast-Leave功能,如果是,则直接从所述Linux内核桥或所述网络处理器上的组播转发表项中删除具有组成员的端口,否则,直接转步骤A105;
A105、透传该报文。
5.如权利要求1所述的二层交换设备基于Linux内核桥实现IP组播的方法,其特征在于,如果组播报文的转发端口包括若干无线端口,则所述Linux内核桥或所述网络处理器将组播报文克隆为与无线端口数量相应的单播报文。
CN201210190639.1A 2012-06-11 2012-06-11 二层交换设备基于Linux内核桥实现组播的方法 Active CN102694734B (zh)

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 true CN102694734A (zh) 2012-09-26
CN102694734B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103795604A (zh) * 2014-01-14 2014-05-14 普联技术有限公司 一种实现以太网拓扑自动切换的装置及方法
CN105306373A (zh) * 2014-07-29 2016-02-03 杭州迪普科技有限公司 一种igmp报文处理方法以及装置
CN113490162A (zh) * 2021-07-04 2021-10-08 芯河半导体科技(无锡)有限公司 一种组播数据流转发的优化方法
CN114157684A (zh) * 2020-08-18 2022-03-08 华为终端有限公司 一种报文处理的方法、设备以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
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 杭州华三通信技术有限公司 一种组播管理方法及二层设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
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 (3)

* Cited by examiner, † Cited by third party
Title
CLOVECHAO: "IGMP Snooping的实现", 《IGMP SNOOPING的实现》 *
何顶新: "基于Linux的网桥和NAT网关集成的实现", 《华中科技大学学报》 *
杜廷龙: "基于嵌入式liunx无线网关设计", 《电脑知识与技术》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103795604A (zh) * 2014-01-14 2014-05-14 普联技术有限公司 一种实现以太网拓扑自动切换的装置及方法
CN103795604B (zh) * 2014-01-14 2017-09-26 普联技术有限公司 一种实现以太网拓扑自动切换的装置及方法
CN105306373A (zh) * 2014-07-29 2016-02-03 杭州迪普科技有限公司 一种igmp报文处理方法以及装置
CN105306373B (zh) * 2014-07-29 2019-03-15 杭州迪普科技股份有限公司 一种igmp报文处理方法以及装置
CN114157684A (zh) * 2020-08-18 2022-03-08 华为终端有限公司 一种报文处理的方法、设备以及存储介质
CN114157684B (zh) * 2020-08-18 2024-01-02 华为终端有限公司 一种报文处理的方法、设备以及存储介质
CN113490162A (zh) * 2021-07-04 2021-10-08 芯河半导体科技(无锡)有限公司 一种组播数据流转发的优化方法
CN113490162B (zh) * 2021-07-04 2022-05-17 芯河半导体科技(无锡)有限公司 一种组播数据流转发的优化方法

Also Published As

Publication number Publication date
CN102694734B (zh) 2016-02-10

Similar Documents

Publication Publication Date Title
CN102075417B (zh) 组播剪枝方法及协议无关组播路由器
US10230577B2 (en) Packet broadcast mechanism in a split architecture network
US9154330B2 (en) Method and device of link aggregation and method and system for transceiving MAC frames
EP2418808B1 (en) Virtual local srea network (VLAN)-based membership for multicase VLAN registration
CN101286990B (zh) 二层组播的转发方法和装置
CN103916275A (zh) 一种bfd检测装置和方法
CN104579982B (zh) 一种二层组播数据报文转发方法和装置
CN105099847A (zh) 一种多归属接入方法和装置
CN103401781A (zh) 应用于多链路透明互联网络的接入方法和设备
CN103780509A (zh) 报文转发方法和路由转发设备
CN102694734B (zh) 二层交换设备基于Linux内核桥实现组播的方法
CN102694664A (zh) 组播方法及组播设备
US20130136122A1 (en) Using multiple igmp queriers in a layer 2 network
WO2010069480A1 (en) Multicast quality of service module and method
CN102082720B (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
CN104660509B (zh) 一种接入网关中数据报文的转发处理方法
CN101610200A (zh) 组播路由的切换方法及装置
CN103354567B (zh) 一种同步媒体访问控制地址的方法和设备
CN106210167B (zh) 一种扩展无线控制器设备mac地址转发表容量的方法
CN101488873B (zh) 组播加入方法及系统
CN104410576A (zh) 混合式条件策略路由系统及方法
CN102377639B (zh) 组播剪枝方法及协议无关组播路由器、组管理窥探交换机
CN101534203B (zh) 一种组播控制的方法、设备和系统
Cisco Configuring IP Multicast Routing

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