2024年6月10日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.6

(22)申请日 2004.01.05

(71)申请人 联想(北京)有限公司

地址 100085 北京市海淀区上地信息产业基础创业路6号

(72)发明人 朱晨露 袁林 谈华芳

(74)专利代理机构 北京德琦知识产权代理有限公司

代理人 王琦

(51)

H04L12/28

权利要求说明书 说明书 幅图

(10)申请公布号 CN 1556625 A

(43)申请公布日 2004.12.22

(54)发明名称

一种基于多网卡的网络设备的数据

传输方法和装置

(57)摘要

本发明提供一种基于多网卡的网络

设备的数据传输方法,包括:建立基于多

网卡的网络设备的虚拟网卡;获取所述网

络设备中至少一块物理网卡的地址;将所

述虚拟网卡的地址设置为区别于所述获取

的至少一块物理网卡的地址;所述网络设

备根据具有不同地址的所述虚拟网卡、物

理网卡进行数据传输;本发明还提供一种

基于多网卡的网络设备的数据传输装置,

包括:虚拟网卡数据存储模块、设置地址

模块、数据传输模块;本发明节约了网络

设备资源,提高了数据传输速率。

法律状态

法律状态公告日

2007-07-04

2005-02-23

2004-12-22

法律状态信息

授权

实质审查的生效

公开

法律状态

授权

实质审查的生效

公开

权 利 要 求 说 明 书

1、一种基于多网卡的网络设备的数据传输方法,其特征在于包括:

a、建立基于多网卡的网络设备的虚拟网卡;

b、获取所述网络设备中至少一块物理网卡的地址;

c、将所述虚拟网卡的地址设置为区别于所述获取的至少一块物理网卡的地址:

d、所述网络设备根据具有不同地址的所述虚拟网卡、物理网卡进行数据传输。

2、如权利要求1所述的一种基于多网卡的网络设备的数据传输方法,其特征在于

所述步骤a包括:

在数据链路层建立基于多网卡的网络设备的虚拟网卡;

根据物理网卡列表为所述虚拟网卡设置名称。

3、如权利要求1或2所述的一种基于多网卡的网络设备的数据传输方法,其特征

在于所述的步骤c包括:

将所述虚拟网卡的以太网地址设置为区别于所述获取的至少一块物理网卡的以太网

地址;

将所述虚拟网卡的物理地址设置为所述获取的至少一块物理网卡的物理地址中的一

个;

在不改变所述至少一块物理网卡的物理地址的同时将所述网络设备中各物理网卡与

所述虚拟网卡绑定。

4、如权利要求1或2所述的一种基于多网卡的网络设备的数据传输方法,其特征

在于所述的步骤d包括:

从所述网络设备至少一块物理网卡中选取一块物理网卡;

将网络设备待发数据的控制网卡设置为所述选取的物理网卡;

将所述待发数据的链路层数据帧的源物理地址设置为所述选取的物理网卡的物理地

址;

所述选取的物理网卡将所述待发数据发送。

5、如权利要求4所述的一种基于多网卡的网络设备的数据传输方法,其特征在于

所述步骤d中从所述至少一块物理网卡中选取一块物理网卡进一步包括:

采用轮循算法从所述网络设备的至少一块物理网卡中选取一块物理网卡。

6、如权利要求1或2所述的一种基于多网卡的网络设备的数据传输方法,其特征

在于所述的步骤c还包括:

将所述虚拟网卡设置为属主状态;

将所述网络设备中至少一块物理网卡设置为从属状态。

7、如权利要求6所述的一种基于多网卡的网络设备的数据传输方法,其特征在于

所述的步骤d包括:

所述网络设备的物理网卡接收传输来的数据;

将所述接收的数据的控制网卡设置为处于属主状态的网卡;

判断所述接收的数据是否为基于地址解析协议的请求报文;

如果是,返回所述网络设备物理网卡的物理地址;

如果不是,所述网络设备对所述接收的数据进行相应处理。

8、如权利要求7所述的一种基于多网卡的网络设备的数据传输方法,其特征在于

所述步骤d中返回所述网络设备物理网卡的物理地址进一步包括:

判断所述请求报文的控制网卡是否为所述虚拟网卡;

如果是,从所述网络设备的至少一块物理网卡中选取一块物理网卡,并将其物理地

址返回;

如果不是,将所述请求报文的控制网卡的物理地址返回。

9、如权利要求8所述的一种基于多网卡的网络设备的数据传输方法,其特征在于

所述步骤d中从所述网络设备的至少一块物理网卡中选取一块物理网卡进一步包括:

采用轮循算法从所述网络设备的至少一块物理网卡中选取一块物理网卡。

10、一种基于多网卡的网络设备的数据传输装置,其特征在于包括:

虚拟网卡数据存储模块:用于存储基于多网卡的网络设备的虚拟网卡的相应数据;

设置地址模块:用于获取所述网络设备中各物理网卡的地址,并将所述虚拟网卡的

地址设置为区别于所述获取的各物理网卡的地址,并存储;

数据传输模块:用于根据具有不同地址的所述虚拟网卡、物理网卡进行数据传输。

说 明 书

技术领域

本发明涉及网络通讯技术领域,具体涉及一种基于多网卡的网络设备的数据传输方

法和装置。

背景技术

在当今的计算机领域,网络已经变的非常普及,Intranet(企业内部互联网)和

Internet(国际互联网)的高速发展使得网络访问越来越频繁,用户对网络带宽,网络

访问速度的要求也越来越高。网络设备中的网卡已经随着用户对网络访问速度的要

求从十兆网卡、百兆网卡发展到千兆网卡。

增加网络带宽虽然可以通过升级网卡、选取更高速的网卡来实现,但是硬件设备的

升级可能会要求原有配套网络设备如集线器、交换机、路由器等的整体升级,在这

种情况下,使用原有网卡并行扩展技术来增加带宽就变的非常实用了。原有网卡并

行扩展的技术即为网卡绑定技术。

网卡绑定技术的主导思想为:将网络设备的多块物理网卡在逻辑上统一起来,对外

呈现为一块网卡,但网络设备的数据处理能力却为多块网卡数据处理能力之和。

由于在以太网通讯中,网卡的以太网地址和网卡的物理地址是两个不可或缺的基本

要素,所以在网卡绑定技术中确定虚拟网卡的以太网地址和物理地址是实现网卡绑

定的重要步骤。

现行网卡绑定技术中确定虚拟网卡的以太网地址和物理地址的基本方法为:将虚拟

网卡、网络设备中所有物理网卡的以太网地址和物理地址分别虚拟成相同的地址。

如设定网络设备中有物理网卡1和物理网卡2,它们的以太网地址分别是

192.168.10.20和192.168.10.30,它们的物理地址分别是0010605b67f9和

001079df73d9。设定虚拟网卡的以太网地址是192.168.10.40,利用现行的网卡绑定

技术,依次将物理网卡1,物理网卡2绑定到虚拟网卡上,绑定后,虚拟网卡、物

理网卡1、物理网卡2的以太网地址都成为192.168.10.40,物理地址都成为

0010605b67f9。

利用现行网卡绑定技术将网络设备各物理网卡绑定在虚拟网卡上以后,网络设备在

数据发送时,由网络设备进行轮循驱动实现物理网卡轮循发送数据,与网络设备连

接的对端如交换机等同样需要支持轮循操作,这样保证了网络设备多块网卡的并行

操作,从而增加了网络的带宽。

现行的这种网卡绑定技术,使网络设备在进行数据传输时,会产生一些异常现象,

如在与网络设备连接的对端如交换机等不支持轮循操作时,交换机会认为连接在其

上的多个端口拥有同样的物理地址是一种错误行为,从而使交换机工作不正常;在

网络设备的物理网卡直接连接在集线器上时,会导致从远端发送的数据被网络设备

重复接收,使网络设备在接收数据、发送数据时不能够实现并行操作。综上所述,

利用现行的网卡绑定技术进行数据传输时,会带来浪费网络设备的带宽、浪费网络

设备处理器的处理时间、降低数据传输速率等问题。

发明内容

本发明的目的在于,提供一种基于多网卡的网络设备的数据传输方法和装置,使网

络设备连接在不支持轮循操作的交换机或直接连接在集线器上时,可保持多网卡带

宽的优势,保证数据正常的并行接收和发送,从而实现了节约网络设备资源,提高

数据传输速率的目的。

为达到上述目的,本发明提供的一种基于多网卡的网络设备的数据传输方法,包括:

a、建立基于多网卡的网络设备的虚拟网卡;

b、获取所述网络设备中至少一块物理网卡的地址;

c、将所述虚拟网卡的地址设置为区别于所述获取的至少一块物理网卡的地址;

d、所述网络设备根据具有不同地址的所述虚拟网卡、物理网卡进行数据传输。

所述步骤a包括:

在数据链路层建立基于多网卡的网络设备的虚拟网卡;

根据物理网卡列表为所述虚拟网卡设置名称。

所述的步骤c包括:

将所述虚拟网卡的以太网地址设置为区别于所述获取的至少一块物理网卡的以太网

地址;

将所述虚拟网卡的物理地址设置为所述获取的至少一块物理网卡的物理地址中的一

个;

在不改变所述至少一块物理网卡的物理地址的同时将所述网络设备中各物理网卡与

所述虚拟网卡绑定。

所述的步骤d包括:

从所述网络设备至少一块物理网卡中选取一块物理网卡;

将网络设备待发数据的控制网卡设置为所述选取的物理网卡;

将所述待发数据的链路层数据帧的源物理地址设置为所述选取的物理网卡的物理地

址;

所述选取的物理网卡将所述链路层数据帧发送。

所述步骤d中从所述至少一块物理网卡中选取一块物理网卡进一步包括:

采用轮循算法从所述网络设备的至少一块物理网卡中选取一块物理网卡。

所述的步骤c还包括:将所述虚拟网卡设置为属主状态;

将所述网络设备中至少一块物理网卡设置为从属状态。

所述的步骤d包括:

所述网络设备的物理网卡接收传输来的数据;

将所述接收的数据的控制网卡设置为处于属主状态的网卡;

判断所述接收的数据是否为基于地址解析协议的请求报文;

如果是,返回所述网络设备物理网卡的物理地址;

如果不是,所述网络设备对所述接收的数据进行相应处理。

所述步骤d中返回所述网络设备物理网卡的物理地址进一步包括:

判断所述请求报文的控制网卡是否为所述虚拟网卡;

如果是,从所述网络设备的至少一块物理网卡中选取一块物理网卡,并将其物理地

址返回;

如果不是,将所述请求报文的控制网卡的物理地址返回。

所述步骤d中从所述网络设备的至少一块物理网卡中选取一块物理网卡进一步包括:

采用轮循算法从所述网络设备的至少一块物理网卡中选取一块物理网卡。

本发明提供的一种基于多网卡的网络设备的数据传输装置,包括:

虚拟网卡数据存储模块:用于存储基于多网卡的网络设备的虚拟网卡的相应数据;

设置地址模块:用于获取所述网络设备中各物理网卡的地址,并将所述虚拟网卡的

地址设置为区别于所述获取的各物理网卡的地址,并存储;

数据传输模块:用于根据具有不同地址的所述虚拟网卡、物理网卡进行数据传输。

通过上述技术方案的描述可明显得知,本发明通过设置虚拟网卡地址,将虚拟网卡、

物理网卡的地址设置为不同的地址,在将虚拟网卡和物理网卡绑定后对外呈现为至

少两块网卡,使与网络设备连接的不支持轮循操作的交换机不会产生工作异常现象,

而且网络设备直接连接在集线器上时,也不会造成网络设备重复接收远端传输来的

数据的现象;本发明通过改变链路层封装处理流程、改变链路层地址解析协议的实

现方法,使网络设备在保持多网卡带宽优势的同时,保证了网络设备多块网卡的并

行操作,从而使本发明克服了现有技术的缺点,实现了节约网络设备资源,提高数

据传输速率的目的。

附图说明

图1是本发明的建立虚拟网卡并绑定的处理过程示意图;

图2是本发明的网卡绑定后TCP/IP协议栈的示意图;

图3是本发明的基于多网卡的网络设备发送数据示意图;

图4是本发明的基于多网卡的网络设备接收数据示意图;

图5是本发明的基于多网卡的网络设备的数据传输装置。

具体实施方式

本发明的核心思想是:建立基于多网卡的网络设备的虚拟网卡;获取所述网络设备

中至少一块物理网卡的地址;将所述虚拟网卡的地址设置为区别于所述获取的至少

一块物理网卡的地址;所述网络设备根据所述虚拟网卡、物理网卡进行数据传输。

基于本发明的核心思想,下面结合附图对本发明的基于多网卡的网络设备进行数据

传输的方法和装置进行具体说明。

本发明的基于多网卡的网络设备进行数据传输的方法需要首先建立虚拟网卡,并将

网络设备中的物理网卡绑定在虚拟网卡上。

建立虚拟网卡,并将网络设备中的各物理网卡绑定在虚拟网卡上的过程如附图1所

示。

图1中,在步骤1.1,网络设备的系统驱动部分加载网络设备虚拟网卡的驱动模块,

同时为虚拟网卡分配名字如bond0,系统驱动部分查询网络设备中物理网卡列表,

该列表中是否有与bond0重复的名字,如果没有,成功的为虚拟网卡分配了名字;

否则,继续为虚拟网卡分配名字bond1,再次查询网络设备中物理网卡列表,以此

类推直至成功的为虚拟网卡分配了名字,或者网卡名称从bond0至bond100都已在

网卡列表中存在,错误退出。

到步骤1.2,系统驱动部分调用注册函数在网络驱动层注册一个设备,虚拟出一块

网卡,该网卡即为虚拟网卡。虚拟网卡虽然在物理上并不存在,但是对IP层来说

虚拟网卡就是一块实际存在的物理网卡。调用注册函数成功后,建立虚拟网卡的过

程实现,通过ifconfig -a命令将可以在网络系统中看到这块虚拟网卡。下面的步骤

是实现网卡绑定的过程。

到步骤1.3,为该虚拟网卡设置IP地址,IP地址的设置由用户根据具体的网络环境

通过用户进程来设置,如果网络设备是一台多穴主机,用户在设置路由的时候应该

清楚自己希望在哪个网段做网卡绑定,增加去往哪个网段的带宽。

到步骤1.4,用户通过用户进程读出需要绑定在虚拟网卡上物理网卡的信息,对这

些物理网卡做合法性判断,如判断此网卡是否为物理网卡等,以决定该块网卡是否

可以绑定在虚拟网卡上。

到步骤1.5,用户通过用户进程调用ioctl,将网络设备中各合法的物理网卡绑定在

虚拟网卡上。

到步骤1.6,系统驱动部分判断虚拟网卡目前是否有物理地址,如果虚拟网卡目前

还没有物理地址,将虚拟网卡的物理地址设置为第一块绑定到虚拟网卡上的物理网

卡,到步骤1.7;如果虚拟网卡已经有物理地址,到步骤1.7。

步骤1.7,系统驱动部分将要求绑定的物理网卡的状态设置为从属状态,将虚拟网

卡的状态设置为属主状态。

到步骤1.8,正常退出。

通过上述建立虚拟网卡并将物理网卡绑定过程的描述,可以得知,如果设定网络设

备有物理网卡1和物理网卡2,它们的以太网地址分别是192.168.10.20和

192.168.10.30,物理地址分别是0010605b67f9和001079df73d9,并且设定虚拟网

卡的以太网地址为192.168.10.40。在将各物理网卡绑定在虚拟网卡上后,虚拟网卡、

物理网卡1、物理网卡2三者的以太网地址都为192.168.10.40,物理网卡1的物理

地址仍然为0010605b67f9,物理网卡2的物理地址仍然为001079df73d9,虚拟网

卡的物理地址可以是物理网卡1的0010605b67f9,也可以是物理网卡2的物理地址

001079df73d9。

建立虚拟网卡并将物理网卡绑定后TCP/IP协议栈的示意图如附图2所示。

在图2中,2.1是采用本发明的网卡绑定技术后,相对正常TCP/IP协议模型所增加

的虚拟接口即虚拟网卡,2.2为网络层,2.3为物理接口即物理网卡。本发明在物理

网卡上虚拟一层2.1虚拟接口,让网络层2.2只看到虚拟网卡,再由虚拟网卡去管

理物理网卡2.3,这样,从使用网络设备用户的角度看,网络设备使用的是一块网

卡,从与网络设备连接的交换机、集线器等其他网络设备看,网络设备使用的是两

块不同的网卡,从而使不支持轮循的交换机在网络设备实现网卡绑定后同样能够进

行正常工作,避免了数据传输过程中网络设备重复接收数据等异常现象的出现。

建立虚拟网卡并将物理网卡绑定后,网络设备发送数据的示意图如附图3所示。

图3中,在步骤3.1,网络设备的应用层首先创建套接口,应用层发送数据至传输

层。

到步骤3.2,网络设备的传输层对该数据进行处理,并将其传输至网络层。

到步骤3.3,网络设备的网络层对该数据进行处理,根据网络设备中的路由选择可

得知该数据由虚拟网卡发送。

到步骤3.4,网络设备的网络层发送基于地址解析协议的数据包,请求并得到下一

跳目的网络设备的物理地址。

到步骤3.5,网络设备的网络层构建链路层数据帧,并将请求得到的下一跳目的网

络设备的物理地址和虚拟网卡的物理地址添入链路层数据帧的帧头。

到步骤3.6,网络设备从绑定在虚拟网卡上的物理网卡中选择一块物理网卡作为实

际发送数据的网卡。选择的方法采用轮循算法,如设定有三块物理网卡绑定在虚拟

网卡上,则选择的作为实际发送数据的网卡依次为网卡1,网卡2,网卡3,网卡1,

网卡2,网卡3,依次循环。

到步骤3.7,将该数据的控制网卡改为实际发送数据的网卡。

到步骤3.8,修改链路层数据帧,将帧头的源物理地址改为实际发送数据的网卡的

物理地址。

到步骤3.9,实际发送数据的网卡通过物理线路将该数据发送。

到步骤3.10,成功发送数据后,正常退出。

建立虚拟网卡并将物理网卡绑定后,网络设备接收数据的示意图如附图4所示。

图4中,在步骤4.1,网络设备的物理网卡接收远端传输来的数据。

到步骤4.2,判断该物理网卡是否处于是从属状态,如果不是处于从属状态,跳转

到步骤4.4;如果处于从属状态,到步骤4.3。

在步骤4.3、将物理网卡接收到的数据的控制网卡更改为虚拟网卡。

到步骤4.4,剥除该数据的链路层数据帧的帧头,判断该数据是否是基于地址解析

协议的请求,如果是,则到步骤4.5,如果不是,到步骤4.7。

在步骤4.5,判断该数据的控制网卡是否是虚拟网卡,如果是,到步骤4.6,如果不

是,返回该物理网卡的物理地址,网络设备接收数据的处理过程结束。

在步骤4.6,从绑定在虚拟网卡上的物理网卡中选择一块物理网卡,将选择的该物

理网卡的物理地址返回,网络设备接收数据的处理过程结束。选择的方法为轮循算

法,设定有三块物理网卡绑定在虚拟网卡上,则选择的物理网卡依次为网卡1,网

卡2,网卡3,网卡1,网卡2,网卡3,依次循环。

在步骤4.7,网络设备的网络层接收该数据并进行处理。

到步骤4.8,网络设备的传输层接收该数据并进行处理。

到步骤4.9,网络设备的应用层的守候进程接收该数据并进行处理。

到步骤4.10,网络设备接收数据的过程结束,正常退出。

上述网络设备接收数据的过程是针对网络设备接收远端启动的数据发送来描述的。

远端为了响应接收到的数据而产生的数据发送,由于远端可以从接收到的数据中得

到介质访问控制地址等信息,使网络设备接收数据的处理过程变的简单,包含在上

述图4的描述过程中,在本实施例中不再具体描述。

本发明提供的基于多网卡的网络设备的数据传输装置如附图5所示。

在图5中,该装置包括虚拟网卡数据存储模块500、设置地址模块510和数据传输

模块520。

虚拟网卡数据存储模块500用于存储虚拟网卡的名称等数据信息,并接收设置地址

模块510传输来的虚拟网卡的以太网地址、物理地址和属主/从属状态。

设置地址模块510用于获取网络设备中各物理网卡的以太网地址和物理地址,将虚

拟网卡的以太网地址设置为区别于获取的各物理网卡的以太网地址,将虚拟网卡的

物理地址设置为获取的各物理网卡的物理地址中的一个,将虚拟网卡和网络设备中

各物理网卡绑定,设置虚拟网卡、各物理网卡的属主/从属状态,并将绑定后虚拟

网卡的以太网地址、物理地址、属主/从属状态传输至虚拟网卡数据存储模块500,

同时,设置地址模块510存储绑定后各物理网卡的以太网地址和物理地址。

数据传输模块520的功能包括数据发送和数据接收,其数据接收和数据发送的过程

如上述方法中描述的过程,在数据接收和数据发送过程中需要用到虚拟网卡和物理

网卡的地址和状态时,从设置地址模块510和虚拟网卡数据存储模块500中获取,

在本实施例中不再详细描述。

虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变

化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化。