CN102647359B - 基于DSA TAG及自定义协议栈的网桥IGMP Snooping实现方法 - Google Patents
基于DSA TAG及自定义协议栈的网桥IGMP Snooping实现方法 Download PDFInfo
- Publication number
- CN102647359B CN102647359B CN201210125975.8A CN201210125975A CN102647359B CN 102647359 B CN102647359 B CN 102647359B CN 201210125975 A CN201210125975 A CN 201210125975A CN 102647359 B CN102647359 B CN 102647359B
- Authority
- CN
- China
- Prior art keywords
- igmp
- port
- bridge
- exchange chip
- protocol stack
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,网桥IGMP Snooping算法模块通过对收到的IGMP报文进行分析,为网桥端口和组播组MAC地址建立起映射关系,并根据这样的映射关系转发组播数据;自定义数据链路层协议栈是网桥端口与交换芯片沟通的桥梁,利用IGMP报文中的DSA TAG信息建立网桥端口与交换芯片物理端口的对应关系;交换芯片根据IGMP报文内部DSA TAG信息将报文转发到指定物理端口,到达组播组的组播成员。相互协作,软件与硬件相互配合,完美地实现IGMP Snooping功能。
Description
技术领域
本发明涉及一种基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,属于网络通信技术领域。
背景技术
很多多媒体网络应用,如电视会议系统、远程教学系统、多媒体点播系统等,都要求把信息从一个源发送到多个目的地,即采用一对多的发送方式。由于多媒体信息的数据量非常大,使用一对一的方式模拟一对多的方式将浪费大量带宽。如果采用广播方式,又会造成信息泛滥。因此,在IP协议栈上实现了一种一对多的IP组播协议。IP组播协议分为两类:三层网络设备(网关、路由器)之间的通信协议和三层网络设备与主机、二层交换机之间的协议。 三层网络设备之间的通信协议用于获得组播路径信息,包括 PIM-DM(Protocol Independent Multicast-Dense Mode)、PIM-SM(Protocol Independent Multicast-Sparse Mode)、DVMRP(Distance Vector Multicast Routing Protocol)等协议。 三层网络设备与主机、二层交换机之间的协议根据组播路径信息转发组播数据报文,使用IGMP Snooping来侦听三层的 IGMP协议报文来建立和维护二层组播功能,对组播组以及组播成员进行动态学习从而避免组播报文在设备中进行广播,而只会将组播报文转发给组播成员。对于有IGMP Snooping功能的网关设备,只会将IGMP 报文传给组播成员,而无IGMP Snooping功能的网关设备会广播IGMP 报文。由此可见,IGMP Snooping功能提高了带宽利用率,增强了网络安全性和可靠性。
目前,现有的三层网络设备对IGMP Snooping的实现方法有两种,一种单纯依靠网络设备中的二层芯片,把IGMP Snooping的算法、组播组MAC与物理端口的映射表都由芯片实现,这种方法配置简单,使用方便,但是提高了设备成本,而且对于没有使用这种高级芯片的三层设备,就无法实现了。另外一种是单纯的依靠网桥IGMP Snooping算法模块实现,网桥IGMP Snooping算法模块可以将网桥的成员端口与组播组建立对应关系,控制组播报文能否到达网桥的成员端口,但是无法将网桥的成员端口与设备的物理端口建立一一对应关系,所以就无法将组播组与组播成员关联,也就无法控制组播报文只到达组播成员而不进行广播。在这种方式下,如果要将网桥的成员端口与设备的物理端口建立一一对应关系,可以将每个端口划为一个VLAN,每个VLAN设备组成HASH表链接到ptype_base链表中,然后将每个VLAN设备绑定到网桥上作为桥的成员端口,这样就将网桥的成员端口与设备的物理端口建立了一一对应关系,于是就可以实现IGMP Snooping了。但是这种每个端口划为一个VLAN势必影响了设备本身的VLAN功能。如果要求多物理端口属于同一VLAN,IGMP Snooping 功能就无法实现了。
发明内容
本发明提供一种在三层设备或三层以上设备上实现一种基于Linux网桥下的IGMP Snooping实现方法,以解决当今IGMP Snooping 实现方法所存在的问题和缺陷。
本发明的目的通过以下技术方案来实现:
基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,特点是:涉及网桥IGMP Snooping算法模块、自定义数据链路层协议栈以及交换芯片;由网桥IGMP Snooping算法模块通过对收到的IGMP报文进行分析,为网桥端口和组播组MAC地址建立起映射关系,并根据映射关系转发组播数据;自定义数据链路层协议栈是网桥端口与交换芯片沟通的桥梁,利用IGMP报文中的DSA TAG信息建立网桥端口与交换芯片物理端口的对应关系;交换芯片根据IGMP报文内部DSA TAG信息将报文转发到指定物理端口,到达组播组的组播成员。
进一步地,上述的基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,网桥IGMP Snooping算法模块工作在Linux网桥模块下,通过侦听 IGMP报文建立和维护组播组和网桥成员端口的对应关系,当网桥的成员端口加入到某个组后,相应组的组播报文只转发到这些成员端口,使组播报文只在网桥的这些成员端口内进行组播,不进行广播;IGMP Snooping算法模块建立组播组和网桥的成员端口之间的映射关系,但是没有实现IGMP Snooping功能,如果将网桥的成员端口与组播成员之间建立起一一对应关系,那就实现IGMP Snooping功能,也就是说,如果将网络设备的网桥的成员端口与其物理端口建立起一一对应关系,那就IGMP Snooping;交换芯片的DSA TAG,通过自定义数据链路层协议栈,在网络设备的网桥的成员端口与其物理端口之间架起桥梁,建立一一对应关系;
规划交换芯片的运行方式,使其以DSA TAG方式运行,并设定交换芯片的上行端口,交换芯片在此模式下运行,识别IGMP数据帧还是其他数据帧,获知数据帧的源端口,对于上行IGMP数据帧,直接将其发送到交换芯片的上行口,对于下行所有数据帧,根据数据帧中的DSA TAG信息指定数据帧出口路径;
自定义数据链路层协议栈,链接到内核ptype_base协议链表上,所有IGMP报文都经由自定义数据链路层协议栈处理;其他的数据帧,如VLAN的数据帧经由802.1q协议栈处理,独自工作,互不干扰。
更进一步地,上述的基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,自定义数据链路层协议栈上注册IGMP虚拟设备,每一个IGMP虚拟设备与实际的设备物理端口一一对应,所有的IGMP虚拟设备组成一个HASH表作为IGMP Group;所有的IGMP虚拟设备绑定到Linux网桥上,作为网桥的成员端口;
对于下行IGMP报文,网桥IGMP Snooping算法模块通过对收到的IGMP报文进行分析,转发IGMP报文到相应的IGMP成员端口,IGMP虚拟设备将报文打上DSA TAG,此TAG中含有与其对应的物理端口信息,然后转发给交换芯片,交换芯片根据DSA TAG里面的信息,直接转发到交换芯片的对应物理端口;对于上行IGMP数据帧,交换芯片直接发送到交换芯片的上行口,同时将数据帧打上DSA TAG,处理器通过交换芯片的上行口收到此数据帧后,根据DSA TAG的信息,将报文转发给自定义数据链路层协议栈的对应IGMP虚拟设备,然后再传送到网桥IGMP Snooping算法模块;这样,对于上下行IGMP数据报,将设备的网桥成员端口--IGMP端口与设备的物理端口建立一一对应关系,也是将设备的网桥成员端口--IGMP端口与组播成员之间建立了一一对应关系,完整的实现IGMP Snooping功能。
再进一步地,上述的基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,所述的网桥IGMP Snooping算法模块工作在Linux 网桥下。所述方法用于三层设备或三层以上设备,如网关、路由器等;所述的设备主处理器上运行Linux操作系统;所述的二层交换芯片具有DSA TAG功能,但不具备IGMP Snooping功能。
本发明技术方案突出的实质性特点和显著的进步主要体现在:
网桥IGMP Snooping算法模块、自定义数据链路层协议栈以及交换芯片相互协作而实现linux网桥下IGMP Snooping,利用软件与硬件相结合,很好地实现IGMP Snooping功能,节约了硬件成本,填补了市场空白。
附图说明
下面结合附图对本发明技术方案作进一步说明:
图1: 网桥IGMP Snooping算法模块、自定义数据链路层协议栈以及交换芯片在三层网络设备中的位置示意图;
图2:上行DSA TAG 帧结构示意图;
图3:下行Forward DSA TAG 帧结构示意图;
图4:下行From_CPU DSA TAG 帧结构示意图。
具体实施方式
本发明提出一种基于DSA (Distributed Switching Architecture) TAG及自定义协议栈的网桥IGMP(Internet Group Management Protocol) Snooping 实现方法,利用软件与硬件相结合,很好地实现IGMP Snooping功能,节约了硬件成本,填补了市场空白。
基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,涉及网桥IGMP Snooping算法模块、自定义数据链路层IGMP协议栈以及交换芯片,三者共同协作实现Linux网桥下IGMP Snooping功能。三者在三层网络设备中的位置如图1 所示,设定此网络设备的交换芯片有n 个物理端口,eth1是网络设备节点,是主处理器MAC (Media Access controller)在Linux系统中的抽象,在LAN侧,主处理器MAC与交换芯片的上行口相连,交换芯片每个物理端口收到的报文都通过其上行口转发给主处理器MAC,同样,所有的下行报文都由主处理器MAC通过交换芯片的上行口将其转发给其他端口,然后发送出去。
网桥IGMP Snooping算法模块建立组和网桥的成员端口的映射关系,实现IGMP Snooping功能,在组和组播成员之间建立映射关系,也即是,在组和设备的物理端口之间建立映射关系;对于上下行IGMP数据报,如果能将网桥的成员端口与设备的物理端口建立起一一对应关系,那就可以IGMP Snooping。
设定交换芯片的上行端口,规划交换芯片上行端口的运行方式,使其以DSA TAG模式运行。在这种模式下,对于上行数据报,即进入交换芯片除上行端口外每个端口的数据帧,交换芯片都会在该数据帧的目标地址和原地址之后加上DSA TAG,而且不广播IGMP数据帧,而是直接将其转发到交换芯片的上行口,然后通过eth1转发到数据链路层协议栈。
DSA TAG包含4个字节的数据,如图2所示,其中重要的是,bit17,bit18两位Code[2:1]表示进入交换芯片的数据帧的类型,特别的,0x2表示该数据帧是IGMP数据帧;bit19~bit23五位Src_Port表示该数据帧是从交换芯片的哪个端口进入的,即该数据帧的源端口。对于下行报文,即协议栈进入交换芯片上行端口的数据报,交换芯片根据DSA TAG 的信息进行转发。交换芯片支持两种不同的DSA TAG 的信息,分别如图3 和图4,图3为Forward DSA TAG,上行端口收到带有此DSA TAG信息的报文后,根据交换芯片的VLAN功能进行转发;图4为From_CPU DSA TAG,其中bit19~bit23 这5位为Trg_Port---该报文的目标端口,即根据Trg_Port直接将该报文转发到那个端口,这个特征为网桥的成员端口与设备的物理端口建立一一对应关系创造了条件。
根据这些特征,设计IGMP 数据链路层协议栈,定义其协议号为0x4100,将其链接到内核ptype_base协议链表上,并在此协议栈上注册IGMP虚拟设备,IGMP虚拟设备的个数等同实际的设备物理端口个数,绑定这些IGMP虚拟设备到Linux网桥上作为网桥的成员端口。所有这些IGMP虚拟设备组成一个HASH表作为IGMP Group,即IGMP1,IGMP2…IGMPn组成一个HASH表。
对于上行数据报,在其进入数据链路层协议栈之前,一、通过扩展skb结构,增加成员变量来存储源端口信息;二、规划报文的上行路径。数据报在转发到网桥之前会遍历ptype_base链表,根据协议号决定该报文经由什么协议栈处理。在此,对数据报进行分类,如果是IGMP报文,改变DSA TAG 前二个字节为0x4100,如果是其他的数据报,改变DSA TAG 前二个字节为0x8100。这样就保证了IGMP报文经由IGMP协议栈处理,其他的报文经由802.1q协议栈处理。三、以Src_Port为索引,建立IGMP虚拟设备与实际物理端口的一一对应关系。IGMP报文上行到IGMP协议栈后,转发给IGMP虚拟设备,那么它会转发到哪个IGMP虚拟设备呢?先找到IGMP Group的HASH表,然后以该数据报DSA TAG 中的Src_Port为IGMP虚拟设备的索引值,在HASH中找到该设备,然后转发给该IGMP虚拟设备,即Src_Port为1的数据报转发给了IGMP1,Src_Port为2的数据报转发给了IGMP2,以此类推。而由交换芯片的DSA TAG属性可知,Src_Port表示该数据帧是从交换芯片的哪个端口。所以,也就是说,物理端口1进来的数据报转发给IGMP1,物理端口2进来的数据报转发给了IGMP2,以此类推。即:建立了IGMP虚拟设备与实际物理端口的一一对应关系。而IGMP虚拟设备是网桥的成员端口,所以:将网桥的成员端口与设备的物理端口建立起了一一对应关系。
对于下行的IGMP报文,IGMP虚拟设备对其收到的报文打上From_CPU DSA TAG,用这个虚拟设备的index作为 From_CPU DSA TAG信息中的Trg_Port,即虚拟设备IGMP1会设置下行IGMP报文 From_CPU DSA TAG信息中的Trg_Port 为1,虚拟设备IGMP2 会设置下行IGMP报文 From_CPU DSA TAG信息中的 Trg_Port 为2,以此类推。而Trg_Port即是报文的目标物理端口,也就是说,IGMP虚拟设备IGMP1将会把它收到的下行IGMP数据报直接转发到物理端口1,IGMP虚拟设备IGMP2将会把它收到的下行IGMP数据报直接转发到物理端口2,以此类推。即:建立了IGMP虚拟设备与实际物理端口的一一对应关系。而IGMP虚拟设备是网桥的成员端口,所以:将网桥的成员端口与设备的物理端口建立起了一一对应关系。
对于上下行IGMP数据报,都将网桥的成员端口与设备物理端口建立了一一对应关系,成功地实现了IGMP Snooping。
需要理解到的是:以上所述仅是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (2)
1.基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,涉及网桥IGMP Snooping算法模块、自定义数据链路层协议栈以及交换芯片;由网桥IGMP Snooping算法模块通过对收到的IGMP报文进行分析,为网桥端口和组播组MAC地址建立起映射关系,并根据映射关系转发组播数据;自定义数据链路层协议栈是网桥端口与交换芯片沟通的桥梁,利用IGMP报文中的DSA TAG信息建立网桥端口与交换芯片物理端口的对应关系;交换芯片根据IGMP报文内部DSA TAG信息将报文转发到指定物理端口,到达组播组的组播成员,其特征在于:网桥IGMP Snooping算法模块工作在Linux网桥模块下,通过侦听 IGMP报文建立和维护组播组和网桥成员端口的对应关系,当网桥的成员端口加入到某个组后,相应组的组播报文只转发到这些成员端口,使组播报文只在网桥的这些成员端口内进行组播;网桥IGMP Snooping算法模块建立组播组和网桥的成员端口之间的映射关系,交换芯片的DSA TAG,通过自定义数据链路层协议栈,在网络设备的网桥的成员端口与其物理端口之间建立起一一对应关系;
规划交换芯片的运行方式,使其以DSA TAG方式运行,并设定交换芯片的上行端口,交换芯片在此模式下运行,识别IGMP数据帧还是其他数据帧,获知数据帧的源端口,对于上行IGMP数据帧,直接将其发送到交换芯片的上行口,对于下行所有数据帧,根据数据帧中的DSA TAG信息指定数据帧出口路径;
自定义数据链路层协议栈,链接到内核ptype_base协议链表上,所有IGMP报文都经由自定义数据链路层协议栈处理。
2.根据权利要求1所述的基于DSA TAG及自定义协议栈的网桥IGMP Snooping 实现方法,其特征在于:自定义数据链路层协议栈上注册IGMP虚拟设备,每一个IGMP虚拟设备与实际的设备物理端口一一对应,所有的IGMP虚拟设备组成一个HASH表作为IGMP Group;所有的IGMP虚拟设备绑定到Linux网桥上,作为网桥的成员端口;
对于下行IGMP报文,网桥IGMP Snooping算法模块通过对收到的IGMP报文进行分析,转发IGMP报文到相应的IGMP成员端口,IGMP虚拟设备将报文打上DSA TAG,此TAG中含有与其对应的物理端口信息,然后转发给交换芯片,交换芯片根据DSA TAG里面的信息,直接转发到交换芯片的对应物理端口;对于上行IGMP数据帧,交换芯片直接发送到交换芯片的上行口,同时将数据帧打上DSA TAG,处理器通过交换芯片的上行口收到此数据帧后,根据DSA TAG的信息,将报文转发给自定义数据链路层协议栈的对应IGMP虚拟设备,然后再传送到网桥IGMP Snooping算法模块;这样,对于上下行IGMP数据报,将设备的网桥成员端口--IGMP端口与设备的物理端口建立一一对应关系,也是将设备的网桥成员端口--IGMP端口与组播成员之间建立了一一对应关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210125975.8A CN102647359B (zh) | 2012-04-26 | 2012-04-26 | 基于DSA TAG及自定义协议栈的网桥IGMP Snooping实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210125975.8A CN102647359B (zh) | 2012-04-26 | 2012-04-26 | 基于DSA TAG及自定义协议栈的网桥IGMP Snooping实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102647359A CN102647359A (zh) | 2012-08-22 |
CN102647359B true CN102647359B (zh) | 2014-10-08 |
Family
ID=46659943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210125975.8A Active CN102647359B (zh) | 2012-04-26 | 2012-04-26 | 基于DSA TAG及自定义协议栈的网桥IGMP Snooping实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102647359B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104125128B (zh) * | 2014-08-12 | 2017-04-12 | 烽火通信科技股份有限公司 | Linux软桥支持VLAN的方法 |
CN105530188B (zh) * | 2014-10-27 | 2019-01-22 | 杭州迪普科技股份有限公司 | 一种组播转发方法和装置 |
CN105391655B (zh) * | 2015-10-12 | 2018-11-20 | 浪潮电子信息产业股份有限公司 | 一种linux平台下配置节点为二层交换设备的方法 |
CN105656780A (zh) * | 2016-03-17 | 2016-06-08 | 北京星网锐捷网络技术有限公司 | 一种数据报文转发方法和装置 |
CN106850464B (zh) * | 2016-12-20 | 2021-05-04 | 全球能源互联网研究院有限公司 | 报文处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312400A (zh) * | 2007-05-25 | 2008-11-26 | 上海大亚科技有限公司 | 四以太网口调制解调器设备上实现igmp侦听功能的方法 |
CN101873250A (zh) * | 2009-04-27 | 2010-10-27 | 中兴通讯股份有限公司 | 数据转发方法及装置 |
CN101895481A (zh) * | 2010-08-31 | 2010-11-24 | 迈普通信技术股份有限公司 | 支持二层组播转发的桥接方法及其路由器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100656487B1 (ko) * | 2006-01-17 | 2006-12-11 | 삼성전자주식회사 | Ip 디지털 방송 시스템에서의 igmp 네트워크 장비 및그 신호 처리 제어방법 |
-
2012
- 2012-04-26 CN CN201210125975.8A patent/CN102647359B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312400A (zh) * | 2007-05-25 | 2008-11-26 | 上海大亚科技有限公司 | 四以太网口调制解调器设备上实现igmp侦听功能的方法 |
CN101873250A (zh) * | 2009-04-27 | 2010-10-27 | 中兴通讯股份有限公司 | 数据转发方法及装置 |
CN101895481A (zh) * | 2010-08-31 | 2010-11-24 | 迈普通信技术股份有限公司 | 支持二层组播转发的桥接方法及其路由器 |
Also Published As
Publication number | Publication date |
---|---|
CN102647359A (zh) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102415065B (zh) | 在有路由的网络中冗余主机连接的方法和装置 | |
CN104022953B (zh) | 基于开放流Openflow的报文转发方法和装置 | |
US8934486B2 (en) | System and method for implementing multicast over a label-switched core network | |
WO2018205982A1 (zh) | 软件定义网络中广播、组播实现方法、装置及存储介质 | |
CN104468462B (zh) | 分布式虚拟交换机系统的报文转发方法及设备 | |
US20150085862A1 (en) | Forwarding Multicast Data Packets | |
EP1722520A1 (en) | A method for implementing multicast based on multiple service transmission plate | |
US10681425B2 (en) | Dynamic designated forwarder election per multicast stream for EVPN all-active homing | |
CN104022960A (zh) | 基于OpenFlow协议实现PVLAN的方法和装置 | |
CN104468358A (zh) | 分布式虚拟交换机系统的报文转发方法及设备 | |
CN102647359B (zh) | 基于DSA TAG及自定义协议栈的网桥IGMP Snooping实现方法 | |
US20130322441A1 (en) | Scaling up/out the number of broadcast domains in network virtualization environments | |
WO2008075336A3 (en) | Forwarding multicast traffic over link aggregation ports | |
US9548917B2 (en) | Efficient multicast delivery to dually connected (VPC) hosts in overlay networks | |
CN103685009A (zh) | 数据包的处理方法、控制器及系统 | |
CN111083425A (zh) | 视频流处理方法、装置、服务器、电子设备及存储介质 | |
EP3968580A1 (en) | Method for generating multicast forwarding table entry, and access gateway | |
CN106209636A (zh) | 从vlan至vxlan的组播数据报文转发方法和设备 | |
CN100571218C (zh) | 一种实现流转换的方法和设备 | |
CN105723664A (zh) | 一种通信方法、装置、控制器和转发面设备 | |
CN104579981B (zh) | 一种组播数据报文转发方法及设备 | |
CN103138955A (zh) | 在第2层网络中使用多个igmp查询器 | |
CN102801622A (zh) | 一种数据报文的转发方法及转发装置 | |
CN110690989A (zh) | 业务数据传输方法、装置和计算机可读存储介质 | |
CN105493454B (zh) | 用于实现双活接入trill园区边缘的方法和设备 |
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 |