您的当前位置:首页正文

Linux系统中多网卡接收组播数据的方法[发明专利]

来源:华拓网
[19]中华人民共和国国家知识产权局

[12]发明专利申请公布说明书

[21]申请号200610138661.6

[51]Int.CI.

H04L 12/18 (2006.01)H04L 29/06 (2006.01)

[43]公开日2008年5月14日[22]申请日2006.11.10[21]申请号200610138661.6

[71]申请人中兴通讯股份有限公司

地址518057广东省深圳市南山区高新技术产业

园科技南路中兴通讯大厦6层法律部[72]发明人卢王飞

[11]公开号CN 101179411A

[74]专利代理机构北京中博世达专利商标代理有限公

代理人申健

权利要求书 1 页 说明书 3 页 附图 1 页

[54]发明名称

Linux系统中多网卡接收组播数据的方法[57]摘要

本发明公开一种多网卡接收组播数据的方法,涉及组播数据传输技术,为解决现有Linux系统中多网卡接收组播数据时出现重复接收数据的问题而发明。本发明列举本机中所有网卡的IP地址;绑定目标组播地址;将本机中所有网卡的IP地址加入目标组播地址组;加入目标组播地址组的网卡接收目标组播数据,在收到目标组播数据后,解析出本机中接收到目标组播数据的网卡的IP地址;保留该目标组播地址组中收到来自正确IP地址的目标组播数据的网卡的IP地址,该目标组播地址组中其余的网卡则离开该目标组播地址组。本发明保证网卡接收到目标组播数据的同时还避免了接收过程出现多余或者重复的数据包的现象。

200610138661.6

权 利 要 求 书

第1/1页

1.一种Linux系统中多网卡接收组播数据的方法,其特征在于,包括如下步骤:

(1)列举本机中所有网卡的IP地址;

(2)绑定目标组播地址;

(3)将本机中所有网卡的IP地址加入目标组播地址组;

(4)加入目标组播地址组的网卡接收目标组播数据,在收到目标组播数据后,解析出本

机中接收到目标组播数据的网卡的IP地址;

(5)保留该目标组播地址组中收到来自正确IP地址的目标组播数据的网卡的IP地址,

该目标组播地址组中其余的网卡则离开该目标组播地址组。

2.根据权利要求1所述的Linux系统中多网卡接收组播数据的方法,其特征在于,所述

步骤(5)具体为:

目标组播地址组中若只有一个网卡接收到来自正确的IP地址的目标组播数据,则直接将

该网卡标记为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组中;

目标组播地址组中若有多个网卡同时接收到来自相同且正确的IP地址的目标组播数据,

则标记其中一个网卡为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组

中,该目标组播地址组中其余网卡全部离开该目标组播地址组。

3.根据权利要求1或2所述的Linux系统中多网卡接收组播数据的方法,其特征在于,

所述目标组播数据为用户数据协议目标组播数据。

2

200610138661.6

说 明 书

Linux系统中多网卡接收组播数据的方法

第1/3页

技术领域

本发明涉及UDP(用户数据协议)组播数据传输技术,尤其涉及Linux系统中多网卡准确接收组播数据的方法。背景技术

目前在Linux系统的UDP组播数据接收过程中,存在有一台机器安装有多块网卡接收到相同或者不同网段的组播数据的情况。在这种网络情况下进行组播数据接收时,如果只在一个网卡中进行数据接收,可能出现接收不到组播的问题,而如果同时在所有的网卡中进行组播数据的接收,又可能出现接收重复数据的问题。发明内容

为了克服上述缺陷,本发明的目的在于提供一种Linux系统多网卡准确接收组播数据的方法,

为达到上述目的,本发明一种Linux系统中多网卡接收组播数据的方法,包括如下步骤: (1)列举本机中所有网卡的IP地址; (2)绑定目标组播地址;

(3)将本机中所有网卡的IP地址加入目标组播地址组;

(4)加入目标组播地址组的网卡接收目标组播数据,在收到目标组播数据后,解析出本机中接收到目标组播数据的网卡的IP地址;

(5)保留该目标组播地址组中收到来自正确IP地址的目标组播数据的网卡的IP地址,该目标组播地址组中其余的网卡则离开该目标组播地址组。 进一步地,所述步骤(5)具体为:

目标组播地址组中若只有一个网卡接收到来自正确的IP地址的目标组播数据,则直接将该网卡标记为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组中; 目标组播地址组中若有多个网卡同时接收到来自相同且正确的IP地址的目标组播数据,则标记其中一个网卡为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组中,该目标组播地址组中其余网卡全部离开该目标组播地址组。 进一步地,所述目标组播数据为用户数据协议组播数据。

本发明的UDP组播数据接收方法,通过检测、解析接收目标组播数据包的网卡IP地址,

3

200610138661.6说 明 书 第2/3页

选择不同的网卡中接收组播数据包,不仅可以很好地完成在多网卡情况下,保证接收到目标组播数据;同时还可以避免在接收过程出现多余或者重复的数据包。附图说明

图1为Linux系统中多网卡准确接收组播数据的流程图。 具体实施方式

下面结合附图对本发明技术方案做进一步详细的说明。如图1所示,本发明的方法主要包括如下步骤:

S1、列举本机中的所有网卡的IP地址。列举出网卡地址个数以及每一个IP地址。例如本机中安装有两块网卡:192.168.1.10和10.1.1.10。

S2、采用Linux系统特性,绑定目标组播地址。目标组播地址是组播数据的目的地址。在Linux系统中,绑定组播地址是一种系统特性,通过采用绑定组播地址这种系统特性,能够在后面的步骤中,选择不同的网卡加入组播地址组。关于组播地址段的定义,InternetAssigned Numbers Authority(IANA,互联网网络号分配机构)已经将D类地址空间分配为IP组播地址,范围:224.0.0.0~239.255.255.255。例如:现有目标组播IP地址为224.1.1.1,目标端口8000,则绑定组播地址224.1.1.1与8000。

S3、将所有的网卡IP地址加入目标组播地址组,接收组播数据。在收到组播数据包后,解析出接收到组播数据的本地网卡的IP地址。 在实际情况中,大致可以分为以下三种情况:

情况1:只有一个网卡接收到目标组播数据。例如:只有192.168.1.10收到组播数据,则直接标记接收网卡为192.168.1.10。

情况2:两个网卡分别接收到不同来源的目标组播数据。

例如:192.168.1.10中接收到的组播数据发自:192.168.1.1;10.1.1.10中接收到的发自10.1.1.1。假设目标组播数据来源应该为192.168.1.1,则标记接收网卡为192.168.1.10。 情况3:两个网卡同时接收到来源相同的目标组播数据。例如:192.168.1.10与10.1.1.10中接收到的是完全相同的数据。这种情况,只需要在两块网卡中任意选择一个作为接收网卡。 S4、保留收到组播数据的网卡加入目标组播地址组,其他所有的网卡都离开组播地址组。例如:保留网卡192.168.1.10加入到组播组224.1.1.1中,选择另一块网卡10.1.1.10离开组播地址组:224.1.1.1。

S5、输出接收到的组播数据。例如:在S4中已经选择10.1.1.10离开组播地址组,此时

4

200610138661.6说 明 书 第3/3页

的组播数据都完全来自192.168.1.10。到此,即实现了多网卡情况下准确接收UDP组播数据。 综上所述,本发明的UDP组播数据接收方法,通过检测、解析接收目标组播数据包的网卡IP地址,选择不同的网卡中接收组播数据包,不仅可以很好地完成在多网卡情况下,保证接收到目标组播数据;同时还可以避免在接收过程出现多余或者重复的数据包。

5

200610138661.6

说 明 书 附 图

图1

6

第1/1页

因篇幅问题不能全部显示,请点此查看更多更全内容