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

文档序号:7969542阅读:3670来源:国知局
专利名称:Linux系统中多网卡接收组播数据的方法
技术领域
本发明涉及U1)P (用户数据协议)组播数据传输技术,尤其涉及Linux系统中多网卡准确 接收组播数据的方法。
背景技术
目前在Linux系统的UDP组播数据接收过程中,存在有一台机器安装有多块网卡接收到 相同或者不同网段的组播数据的情况。在这种网络情况下进行组播数据接收时,如果只在-个网卡中进行数据接收,可能出现接收不到组播的问题,而如果同时在所有的网卡中进行组 播数据的接收,又可能出现接收重复数据的问题。

发明内容
为了克服上述缺陷,本发明的目的在于提供一种Linux系统多网卡准确接收组播数据的 方法,
为达到上述目的,本发明一种Limix系统中多网卡接收组播数据的方法,包括如下歩骤
(1) 列举本机中所有网卡的IP地址;
(2) 绑定目标组播地址;
(3) 将本机中所有网卡的IP地址加入目标组播地址组;
(4) 加入目标组播地址组的网卡接收目标组播数据,在收到目标组播数据后,解析出本
机中接收到目标组播数据的网卡的IP地址;
(5) 保留该目标组播地址组中收到来自正确IP地址的目标组播数据的网卡的IP地址,
该目标组播地址组中其余的网卡则离开该目标组播地址组。
进一歩地,所述步骤(5)具体为
目标组播地址组中若只有一个网卡接收到来自正确的IP地址的目标组播数据,则直接将
该网卡标记为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组中;
目标组播地址组中若有多个网卡同时接收到来自相同且正确的IP地址的目标组播数据,
则标记其中一个网卡为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组
中,该目标组播地址组中其余网卡全部离开该目标组播地址组。 进一歩地,所述目标组播数据为用户数据协议组播数据。
本发明的UDP组播数据接收方法,通过检测、解析接收目标组播数据包的网卡IP地址,
选择不同的网卡中接收组播数据包,不仅可以很好地完成在多网卡情况下,保证接收到目标
组播数据;同时还可以避免在接收过程出现多余或者重复的数据包。


图1为Linux系统中多网卡准确接收组播数据的流程图。
具体实施例方式
下面结合附图对本发明技术方案做进一歩详细的说明。如图1所示,本发明的方法主要 包括如下步骤-
51、 列举本机中的所有网卡的IP地址。列举出网卡地址个数以及每一个IP地址。例如 本机中安装有两块网卡192. 168. 1. 10和10. 1. 1. 10。
52、 采用Linux系统特性,绑定目标组播地址。目标组播地址是组播数据的目的地址。 在Linux系统中,绑定组播地址是一种系统特性,通过采用绑定组播地址这种系统特性,能 够在后面的步骤中,选择不同的网卡加入组播地址组。关于组播地址段的定义,InterrK't Assigned Numbers Authority (IANA,互联网网络号分配机构)已经将D类地址空间分配为 IP组播地址,范围224. 0.0.0 239. 255. 255. 255。例如现有目标组播IP地址为224. 1. 1. i, 目标端口 8000,则绑定组播地址224. 1. 1. 1与8000。
53、 将所有的网卡IP地址加入目标组播地址组,接收组播数据。在收到组播数据包后, 解析出接收到组播数据的本地网卡的IP地址。
在实际情况中,大致可以分为以下三种情况
情况l:只有一个网卡接收到目标组播数据。例如只有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. U)。
情况3:两个网卡同时接收到来源相同的目标组播数据。例如192. 168. 1. 10与10. 1. 1. l() 中接收到的是完全相同的数据。这种情况,只需要在两块网卡中任意选择一个作为接收网卡。
54、 保留收到组播数据的网卡加入目标组播地址组,其他所有的网卡都离开组播地址组。 例如保留网卡192. 168.1.10加入到组播组224. 1. 1. 1中,选择另一块网卡10. 1. 1. 10离丌 组播地址组224. i. 1. 1。
55、 输出接收到的组播数据。例如在S4中已经选择10. 1.1.10离开组播地址组,此时
的组播数据都完全來自192. 168. 1. 10。到此,即实现了多网卡情况下准确接收UDP组播数据。 综上所述,本发明的UDP组播数据接收方法,通过检测、解析接收目标组播数据包的网 卡IP地址,选择不同的网卡中接收组播数据包,不仅可以很好地完成在多网卡情况下,保 证接收到目标组播数据;同时还可以避免在接收过程出现多余或者重复的数据包。
权利要求
1、一种Linux系统中多网卡接收组播数据的方法,其特征在于,包括如下步骤(1)列举本机中所有网卡的IP地址;(2)绑定目标组播地址;(3)将本机中所有网卡的IP地址加入目标组播地址组;(4)加入目标组播地址组的网卡接收目标组播数据,在收到目标组播数据后,解析出本机中接收到目标组播数据的网卡的IP地址;(5)保留该目标组播地址组中收到来自正确IP地址的目标组播数据的网卡的IP地址,该目标组播地址组中其余的网卡则离开该目标组播地址组。
2、 根据权利要求l所述的Linux系统中多网卡接收组播数据的方法,其特征在于,所述 步骤(5)具体为目标组播地址组中若只有一个网卡接收到来自正确的IP地址的目标组播数据,则直接将 该网卡标记为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组中;目标组播地址组中若有多个网卡同时接收到来自相同且正确的IP地址的目标组播数据, 则标记其中一个网卡为接收到组播数据的网卡,并将该网卡的IP地址保留在目标组播地址组 中,该目标组播地址组中其余网卡全部离开该目标组播地址组。
3、 根据权利要求1或2所述的Linux系统中多网卡接收组播数据的方法,其特征在于, 所述目标组播数据为用户数据协议目标组播数据。
全文摘要
本发明公开一种多网卡接收组播数据的方法,涉及组播数据传输技术,为解决现有Linux系统中多网卡接收组播数据时出现重复接收数据的问题而发明。本发明列举本机中所有网卡的IP地址;绑定目标组播地址;将本机中所有网卡的IP地址加入目标组播地址组;加入目标组播地址组的网卡接收目标组播数据,在收到目标组播数据后,解析出本机中接收到目标组播数据的网卡的IP地址;保留该目标组播地址组中收到来自正确IP地址的目标组播数据的网卡的IP地址,该目标组播地址组中其余的网卡则离开该目标组播地址组。本发明保证网卡接收到目标组播数据的同时还避免了接收过程出现多余或者重复的数据包的现象。
文档编号H04L12/18GK101179411SQ20061013866
公开日2008年5月14日 申请日期2006年11月10日 优先权日2006年11月10日
发明者卢王飞 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1