CN113490162A - 一种组播数据流转发的优化方法 - Google Patents
一种组播数据流转发的优化方法 Download PDFInfo
- Publication number
- CN113490162A CN113490162A CN202110754049.6A CN202110754049A CN113490162A CN 113490162 A CN113490162 A CN 113490162A CN 202110754049 A CN202110754049 A CN 202110754049A CN 113490162 A CN113490162 A CN 113490162A
- Authority
- CN
- China
- Prior art keywords
- multicast
- data stream
- interface
- linux kernel
- function
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/06—Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
- H04W4/08—User group management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种linux下组播数据流转发的优化方法:在linux kernel接收数据包的处理函数__nertif_receive_skb_core中注册处理组播数据流的函数handle_multicast_frame_hook;在igmp proxy向linux kernel中添加组播路由转发项时,igmp proxy把组播组和出接口的对应绑定关系通过proc文件发送到linux kernel中,handle_multicast_frame_hook函数中会根据收到的组播数据流查找对应组播组的出接口,然后直接调用该出接口的发送函数ndo_start_xmit将组播数据流从该出接口发送出去。
Description
技术领域
本发明涉及组播数据流技术领域,具体是一种组播数据流转发的优化方法。
背景技术
当前,Linux下igmp proxy的运行依赖于linux kernel中的mroute模块,igmpproxy流程如下:
1.igmp proxy用户进程首先创建igmp raw socket(igmp原始套接字),用于接收igmp包,同时通过MRT_INIT激活Linux kernel中的mroute功能。
2.igmp proxy用户进程通过MRT_ADD_VIF在linux kernel中创建VIF虚拟网络设备,之后持续监听igmp raw socket。
3.当从igmp raw socket接收到下行接口上主机发送过来的加入组报文时,假如该主机是该组网中第一个主机,igmp proxy会创建新的组播路由表来记录该组播组,同时启用上行接口向上发送加入组报文。
4.当上行接口收到该组的数据流时,igmp proxy会添加该组的组播路由转发项,Linux kernel会根据该组播路由转发项转发组播数据流。
5.当从igmp raw socket接收到下行接口上主机发送过来的离开组报文时,假如该主机是该组网中最后一个主机,igmp proxy会将该组播路由表删除,同时删除linuxkernel中的组播路由转发项,并启用上行接口向上发送离开组报文。
6.当从igmp raw socket接收到上行接口发来的通用组查询和特定组查询报文时,igmp proxy查找组播路由表,看是否有该组播组,如果该组播组存在则响应服务器的组播查询。
正常linux下igmp proxy的组播数据流的转发是在ip层通过查找相应的组播路由转发项,来确定组播数据流该从哪个接口发送出去。这样转发必定会经过netfilter各个钩子函数的过滤,以及ip层的路由选择等处理,影响转发效率。
本发明方法是利用在linux kernel接收数据包的处理函数__nertif_receive_skb_core中注册组播数据流的处理函数handle_multicast_frame_hook,在该函数中根据组播组和出接口的对应绑定关系,查找出组播数据流的出接口,从而直接在入口处把组播数据流从相应的出接口转发出去。这样可以简化组播数据流的处理流程,提高组播数据流的转发效率。
发明内容
本发明的目的在于提供一种组播数据流转发的优化方法,当linux kernle中存在大量需要转发的组播数据流时,能够减少linux kernel中对组播数据流的处理,从而提高组播数据流在linux kernel下的转发效率,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种组播数据流转发的优化方法,具体有以下步骤:
(1)首先创建并注册linux内核模块gcmulticast,该模块用于维护组播组和出接口的对应绑定关系,同时提供用于注册的组播数据流的处理函数handle_multicast_frame_hook。
在该模块中提供了相应的用于读写组播组和出接口对应的绑定关系的接口,通过proc文件***开放给用户空间,提供给用户空间进程igmp proxy使用。
(2)在linux下,当有组播数据流到来时,linux kernel会发送一个消息给igmpproxy,igmp proxy在接收到组播数据流到来消息时会通过MRT_ADD_MFC给linux kernel添加组播路由转发项。
在添加组播路由转发项的同时,通过内核模块gcmulticast提供的proc接口,把组播组和对应的出接口绑定关系添加到内核中。
当igmp proxy接收到下行接口上主机发送过来的离开组报文时,如果该主机是该组网中最后一个主机,igmp proxy会将该组播路由表删除,同时通过MRT_DEL_MFC来删除linux kernel中的组播路由转发项。在删除组播路由转发项的同时,通过内核模块gcmulticast提供的proc接口,把组播组和对应的出接口绑定关系从内核中删除。
(3)在linux kernel中接收数据包的处理函数__nertif_receive_skb_core中注册处理组播数据流的函数handle_multicast_frame_hook。handle_multicast_frame_hook在linux内核模块gcmulticast中实现,该函数根据数据包的目的地址过滤组播数据包,如果不是组播数据包,则函数直接返回。
然后根据组播数据包的目的地址查找组播组和对应的出接口绑定关系,如果找到相应的出接口,则将数据包直接从该出接口中发送出去,同时不再执行后续的接收流程;如果没有查找到出接口,则函数直接返回,继续执行后续的接收流程。
与现有技术相比,本发明的优点是:
1.本发明提出的方法可以提高组播数据流在linux kernel中的转发效率。
2.在没有特殊硬件用于实现硬件转发组播数据流的情况下,在软件层面上对组播数据流的转发进行了优化,简化了linux kernel中对组播数据流的处理流程。
附图说明
图1为本发明的内核模块gcmulticast中维护组播组和出接口绑定关系的流程图。
图2为本发明的处理组播数据流的函数handle_multicast_frame_hook的处理流程图。
具体实施方式
下面结合具体实施方式对本专利的技术方案作进一步详细地说明。
目前linux下通过igmp proxy实现的组播转发,是在igmp proxy中维护组播路由表,在有组播数据流到达时,通过igmp proxy向linux kernel添加组播路由转发表项,从而使组播数据流通过linux kernel中的组播路由转发项进行转发。
一种组播数据流转发的优化方法,具体有以下步骤:
步骤1:如图1所示,首先创建内核模块gcmulticast;gcmulticast用于维护linuxkernel下组播组和出接口的绑定关系,用于绑定的数据结构如下所示:
#define MAX_OUT_IF 4
#define IFNAMSIZ 16
typedef struct gcGroupBindInterface_s
{
unsigned int group;
char if_name[MAX_OUT_IF][IFNAMSIZ];
struct list_head list;
}gcGroupBindInterface_t;
group:代表组播组;if_name代表出接口,同一个组能支持的最大出接口数由宏MAX_OUT_IF定义。
步骤2:gcmulticast内核模块首先初始化组播组和出接口绑定关系列表g_group,然后初始化相应的用于读写组播组和出接口绑定关系的proc接口。当有组播数据流到达时,igmp proxy在添加组播路由转发项的同时,会调用相应proc接口来添加组播组和出接口的绑定关系到gcmulticast。gcmulticast中会动态分配gcGroupBindInterface_t结构来存储绑定关系,同时把动态分配的gcGroupBindInterface_t结构***到g_group列表中。
步骤3:当igmp proxy接收到下行接口上主机发送过来的离开组报文时,如果该主机是该组网中最后一个主机,igmp proxy在将该组播路由表删除并删除linux kernel中的组播路由转发项的同时,会调用相应proc接口来删除gcmulticast中组播组和出接口的绑定关系。gcmulticast中会根据对应的组播组查找到相应的gcGroupBindInterface_t结构,并把该结构从g_group列表中删除,同时释放相应的内存。
步骤4:gcmulticast内核模块提供用于处理组播数据流的函数handle_multicast_frame_hook,该函数注册在__nertif_receive_skb_core中。组播数据流的处理流程如图2所示。该函数首先判断接收数据包的目的地址是否为组播地址,如果不是则直接返回0;如果是组播地址则接着判断该组播地址是否为保留的组播地址,如果是则直接返回0;如果不是则根据数据包的目的地址从g_group列表中查询相应的出接口,如果找到相应的出接口,则把数据包从相应的出接口发送出去同时函数返回1,如果找不到相应的出接口,则直接返回0。__nertif_receive_skb_core中会判断handle_multicast_frame_hook的返回值来决定数据包是否继续执行后续的接收流程。
步骤5:当gcmulticast内核模块注销时,首先会删除相应的proc接口,然后会遍历g_group列表,删除所有组播组和出接口的绑定关系,同时释放相应的内存。
上面对本专利的较佳实施方式作了详细说明,但是本专利并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下作出各种变化。
Claims (3)
1.一种组播数据流转发的优化方法,其特征在于,有以下步骤:
(1)首先在linux kernel接收数据包的处理函数__nertif_receive_skb_core中注册处理组播数据流的函数handle_multicast_frame_hook;
(2)当第一次接收到组播数据流时,igmp proxy会向Linux kernel中添加组播路由转发项,同时igmp proxy会把组播组和出接口的对应绑定关系通过proc接口发送到Linuxkernel中;
(3)handle_multicast_frame_hook中首先检测数据包的目的地址是否为组播地址,同时排除保留的组播地址;然后根据数据包的目的ip地址,查找igmp proxy下发的组播组和出接口的对应绑定关系;如果找不到对应的出接口,则函数返回0,数据包继续按照接收路径往下走;如果找到了对应的出接口,则根据查找到的出接口直接把数据包从该出接口发送出去,同时函数返回1,__nertif_receive_skb_core直接返回。
2.根据权利要求1所述的一种组播数据流转发的优化方法,其特征在于,所述函数handle_multicast_frame_hook是用来解析和处理组播数据流。
3.根据权利要求1所述的一种组播数据流转发的优化方法,其特征在于,所述handle_multicast_frame_hook在linux内核模块gcmulticast中实现。
根据权利要求3所述的一种组播数据流转发的优化方法,其特征在于,所述gcmulticast模块用于维护组播组和出接口的对应绑定关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110754049.6A CN113490162B (zh) | 2021-07-04 | 2021-07-04 | 一种组播数据流转发的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110754049.6A CN113490162B (zh) | 2021-07-04 | 2021-07-04 | 一种组播数据流转发的优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113490162A true CN113490162A (zh) | 2021-10-08 |
CN113490162B CN113490162B (zh) | 2022-05-17 |
Family
ID=77939847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110754049.6A Active CN113490162B (zh) | 2021-07-04 | 2021-07-04 | 一种组播数据流转发的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113490162B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474563A (zh) * | 2002-08-06 | 2004-02-11 | ��Ϊ��������˾ | 网络通信中组播报文的转发方法 |
CN101702672A (zh) * | 2009-11-04 | 2010-05-05 | 华为技术有限公司 | 组播数据报文转发方法和转发装置 |
CN102316083A (zh) * | 2010-07-06 | 2012-01-11 | 杭州华三通信技术有限公司 | 一种在ip网络中实现组播业务的方法和装置 |
CN102694734A (zh) * | 2012-06-11 | 2012-09-26 | 烽火通信科技股份有限公司 | 二层交换设备基于Linux内核桥实现组播的方法 |
CN102820977A (zh) * | 2012-08-07 | 2012-12-12 | 福建星网锐捷网络有限公司 | 组播方法、装置及网络设备 |
CN104796340A (zh) * | 2014-01-22 | 2015-07-22 | 杭州华三通信技术有限公司 | 一种组播数据传输方法和设备 |
CN106470171A (zh) * | 2016-09-18 | 2017-03-01 | 杭州迪普科技股份有限公司 | 组播转发表项的下发方法及装置 |
WO2018121584A1 (zh) * | 2016-12-30 | 2018-07-05 | 中兴通讯股份有限公司 | 一种数据流传输方法、装置、相关设备及存储介质 |
CN109495406A (zh) * | 2017-09-13 | 2019-03-19 | 中兴通讯股份有限公司 | 组播虚拟专用网络vpn流量的转发方法及转发设备 |
-
2021
- 2021-07-04 CN CN202110754049.6A patent/CN113490162B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474563A (zh) * | 2002-08-06 | 2004-02-11 | ��Ϊ��������˾ | 网络通信中组播报文的转发方法 |
CN101702672A (zh) * | 2009-11-04 | 2010-05-05 | 华为技术有限公司 | 组播数据报文转发方法和转发装置 |
CN102316083A (zh) * | 2010-07-06 | 2012-01-11 | 杭州华三通信技术有限公司 | 一种在ip网络中实现组播业务的方法和装置 |
CN102694734A (zh) * | 2012-06-11 | 2012-09-26 | 烽火通信科技股份有限公司 | 二层交换设备基于Linux内核桥实现组播的方法 |
CN102820977A (zh) * | 2012-08-07 | 2012-12-12 | 福建星网锐捷网络有限公司 | 组播方法、装置及网络设备 |
CN104796340A (zh) * | 2014-01-22 | 2015-07-22 | 杭州华三通信技术有限公司 | 一种组播数据传输方法和设备 |
CN106470171A (zh) * | 2016-09-18 | 2017-03-01 | 杭州迪普科技股份有限公司 | 组播转发表项的下发方法及装置 |
WO2018121584A1 (zh) * | 2016-12-30 | 2018-07-05 | 中兴通讯股份有限公司 | 一种数据流传输方法、装置、相关设备及存储介质 |
CN109495406A (zh) * | 2017-09-13 | 2019-03-19 | 中兴通讯股份有限公司 | 组播虚拟专用网络vpn流量的转发方法及转发设备 |
Non-Patent Citations (2)
Title |
---|
刘杰等: "嵌入式Linux上的IGMPProxy研究与实现", 《武汉理工大学学报·信息与管理工程版》 * |
许广达: "基于IGMP的IPTV应用***设计", 《硕士学位论文 专辑:信息科技 专题:电信技术》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113490162B (zh) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10097689B2 (en) | System and methods for integrating short message service messaging with contact center applications | |
CN101409685B (zh) | 基于虚拟局域网映射的转发方法及接入设备 | |
US5598535A (en) | System for selectively and cumulatively grouping packets from different sessions upon the absence of exception condition and sending the packets after preselected time conditions | |
US6178453B1 (en) | Virtual circuit switching architecture | |
US7031338B2 (en) | System and method for the consolidation of data packets | |
CN100566282C (zh) | 控制组播数据转发的设备及方法 | |
US20070011350A1 (en) | Method and apparatus for multicast management of user interface in a network access device | |
RU2007134860A (ru) | Способ и система интеллектуальной маршрутизации | |
WO2013075436A1 (zh) | 一种无线资源优化方法、装置及*** | |
CN101360054A (zh) | 数据传输***及数据传输方法 | |
CN106685827B (zh) | 一种下行报文的转发方法及ap设备 | |
CN112751788A (zh) | 一种支持多类型帧混合传输的双平面交换方法 | |
US8819135B2 (en) | Method of performing data mediation, and an associated computer program product, data mediation device and information system | |
CN109587082A (zh) | 一种基于Linux操作***的报文异步转发***及方法 | |
US20060209774A1 (en) | Wireless base station, wireless mobile device, and wireless access network | |
CN101132374A (zh) | 一种发送报文的方法及装置 | |
EP1917580B1 (en) | Peer-to-peer communication system | |
CN113490162B (zh) | 一种组播数据流转发的优化方法 | |
CN101009669A (zh) | 一种传输组播消息的方法和***以及路由设备 | |
CN107483628A (zh) | 基于dpdk的单向代理方法及*** | |
CN109787903B (zh) | 集中式网络中无碰撞的组播数据反馈方法 | |
CN101227306A (zh) | 用于多播处理的报文复制方法和装置 | |
US9596577B1 (en) | Relaying mobile communications | |
CN100455049C (zh) | 一种多媒体消息服务***中对消息的处理方法 | |
WO2009103196A1 (zh) | 多媒体消息存储地址发送***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |