CN1272938C - 一种提高以太网带宽的方法 - Google Patents
一种提高以太网带宽的方法 Download PDFInfo
- Publication number
- CN1272938C CN1272938C CN 02153540 CN02153540A CN1272938C CN 1272938 C CN1272938 C CN 1272938C CN 02153540 CN02153540 CN 02153540 CN 02153540 A CN02153540 A CN 02153540A CN 1272938 C CN1272938 C CN 1272938C
- Authority
- CN
- China
- Prior art keywords
- address
- packet
- main frame
- mac address
- arp table
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种提高以太网带宽的方法,该方法包括以下步骤:在各个主机上设置多个具有同一IP地址不同MAC地址的以太网卡;在各个主机上设置一个ARP表,在该ARP表中,根据IP地址可以查到该IP地址对应的多个MAC地址;当一个第一主机需要向一个第二主机发送IP数据包时,通过查询所述的ARP表,获得目标IP地址的多个MAC地址,向该多个MAC地址轮循发送。应用本发明,可代替价格昂贵的高速网络,但同样达到提高网络带宽的效果,使系统原有的网卡依然发挥作用,并尽可能发挥出多块网卡的效能。在一块网卡发生故障时,其它网卡仍然可以正常工作,提高了系统稳定性、可靠性。
Description
技术领域
本发明涉及计算机通信技术领域,特别是指一种提高以太网带宽的方法。
背景技术
随着计算机的处理能力越来越强大,网络的I/O性能越来越成为系统的一个瓶颈,特别是在机群系统中,进行高性能计算的网络需要很大的带宽来解决计算速度这一问题。
通常解决这一问题主要采取以下两种措施:
一是采用更加快速的网络,如千兆网络或光纤技术(Myrinet)网络,但这需要很大的投资,而且改造旧系统的难度很大。
另一种方法是采用Linux中的绑定(Bonding)技术。将多块网卡虚拟成为一块网卡,使其具有相同的IP地址,来实现提升主机的网络带宽。Bonding靠多网卡来提高网络带宽,它把多块网卡的硬件地址(MAC)改为相同,然后实现了一个虚拟的主机bond0,发送数据包时,bond0首先接收到数据,然后把它平均分配给多个网卡来发送,当对方也有多个网卡时,就可以提高带宽。但Bonding需要交换机支持中继(Trunk)技术或以太网通路(EtherChannel)技术,也就是说,某主机单一IP地址下的多块网卡必须设置成为相同的MAC地址,由交换机识别硬件地址的变化并负责分配通信信道,从而实现带宽的提升。此方法在构建系统时必须选用价格较贵的能够支持Trunk或EtherChannel技术的具有多端口绑定技术的以太网交换机。经试验,测得两块百兆网卡经绑定技术处理后,其实际带宽为130mbit/s左右。比单块百兆网卡的带宽仅提高了30%左右,两块网卡的性能并没有得到充分发挥,效率较低。
发明内容
有鉴于此,本发明提供了一种提高以太网带宽的方法。应用多块网卡绑定技术,使单一IP地址对应多个MAC地址,从而摆脱了机群系统对交换机的依赖,更有效的提高了网络带宽。同时,如果其中一块网卡发生故障,其它的网卡仍然可以正常工作,提高了系统的稳定性。
为达到上述目的,本发明的技术方案是这样实现的:
一种提高以太网带宽的方法,该方法包含以下步骤:
在各个主机上设置多个具有同一IP地址不同MAC地址的以太网卡;
在各个主机上设置一个ARP表,在该ARP表中,根据IP地址可以查到该IP地址对应的多个MAC地址;
当一个第一主机向一个第二主机发送IP数据包时,通过查询所述的ARP表,获得目标IP地址的多个MAC地址,选取其中的一个MAC地址,向该选定的MAC地址发送IP数据包;
当第一主机向所述第二主机再次发送IP数据包时,通过查询所述的ARP表,获得该目标IP地址对应的另一个MAC地址,向该选定的另一个MAC地址发送IP数据包,以此轮循发送;
并且,在一个第一主机向所述第二主机再次发送IP数据包的同时,第一主机也使用自身的多个MAC地址轮循发送。
较佳地,所述发送IP数据包的操作设置在网络硬件层,并且进一步包含以下步骤:
当第一主机需要向第二主机需要发送一个IP数据包时,首先取得该数据包的目的IP地址,然后根据目的IP地址在所述的ARP表中查询是否有MAC地址对应项,如果不存在则根据该IP数据包中原有的目的方MAC地址直接转发出去,否则根据查得的MAC地址修改数据包中目的方MAC地址,再转发出去;
当该第一主机下一次向同一IP地址发送数据包时,该主机使用这个IP地址对应的另一个MAC地址修改数据包的目的方MAC地址,再通过自身的另一个以太网卡转发出去;以此不断轮循。
较佳地,在各个主机上构造一个虚拟的设备,所有传输的IP数据包都要经过该虚拟的设备,通过该虚拟的设备的驱动程序中取得各个IP数据包的目的IP地址。
较佳的,所述第一主机调用LINUX操作系统的dev_queue_xmit函数,将IP数据包转发出去。
较佳地,所述的ARP表可以通过静态手工配置的或动态解析得到。
应用本发明,可以代替价格昂贵的高速网络,但同样达到提高网络带宽的效果,使系统原有的网卡依然发挥作用,最大限度地保护了用户的利益,节约投资。同时,摆脱了对交换机的依赖,并尽可能的提高了网络的带宽,发挥出多块网卡的效能。在一块网卡发生故障时,其它网卡仍然可以正常工作,提高了系统稳定性、可靠性。
附图说明
图1为Linux网络层次模型;
图2为Linux网络设备驱动程序的结构图;
图3为单IP多MAC地址通信过程。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
图1所示为Linux网络层次模型。Linux的网络部分沿用了传统的层次结构。网络数据从用户进程到网络设备要经过四个层次。每个层次的内部还可以再细分为很多层次,但数据的传输过程只能依照层次的划分,自上而下进行,不能跨越其中的某个或某些层次,这就使得网络传输只有一条而且是唯一的一条路径。这样做的目的是为了提高整个网络的可靠性和准确性。
一个套接字就是网络中的一个连接,它向用户提供了文件的I/O接口,并和网络协议紧密地联系在一起,体现了网络、文件系统和进程管理之间的关系,它是网络传输的入口。
网络协议是一种网络语言,它规定了通信双方之间交换信息的一种规范,是网络传输的基础。
网络设备接口控制着网络数据由软件到硬件再到软件的传递过程,体现了网络和设备的关系,是网络传输的桥梁。Linux网络接口的适用面很广,所有的Linux主机都遵循同样的接口,它提供了丰富的接口功能。
网络设备驱动程序的功能可分为两部分即发送数据功能和接收数据功能。在发送数据时,设备驱动程序全权负责把来自协议层网络缓冲区的数据帧发送到物理介质上,并且接受硬件产生的应答信号;在接收数据时,设备驱动程序接收来自网络介质上的数据帧,并把它转换成能被网络协议识别的网络缓冲区中的数据帧,然后把它传递给接收数据包函数。
图2所示为Linux网络设备驱动程序的结构图。在发送数据时,从协议层过来的数据帧经过内核发送数据包函数(dev_queue_xmit)发送到网卡上,然后经网络设备驱动函数(hard_start_xmit),将该数据发送到网络设备和介质上;当有数据到达网络设备和介质时,网卡要产生一个中断,在网卡驱动程序中的中断处理函数(mydev_interrupt)中,处理接收到的数据,并把它交给上层内核的接收数据包函数(netif_rx),继续协议层的处理。初始化例程的作用是在网卡刚刚启动,对网卡进行初始化,即在网卡刚刚启动,将网络设备驱动函数中所有函数的指针,登记到安装设备驱动程序(device)的数据结构中,网络设备驱动函数在接收或发送数据时,都是通过device数据结构来完成的。
为了提高网络带宽,把多块网卡设为一个IP地址,同时保持它们本身的MAC地址不变,这样一个IP地址就对应了多个MAC地址。Linux原有的地址解析协议(ARP)表中,一个IP地址只对应一个MAC地址,不适用于这种情况。为此,需要建立自己的ARP表,在这个ARP表中,根据一个IP地址能够查到它对应的多个MAC地址。MAC地址可以静态的手工设入ARP表中,也可以通过动态解析摄入到ARP表中。
首先构造一个虚拟的网络设备,所有需要传输的数据包都要经过该设备,在该虚拟设备的驱动程序中取得这个数据包的目的IP地址,然后根据该IP地址在自己建立的ARP表中查询是否有对应的多个MAC地址,如果该IP地址下只对应一个MAC地址,则根据此MAC地址直接调用dev_queue_xmit函数将数据包转发出去;如果该IP地址下对应多个MAC地址,则需要根据查到的MAC地址修改数据包中目的方MAC地址,再调用dev_queue_xmit函数将此数据包转发出去;当下一次向同一IP地址发送数据包时,就用这个IP地址对应的另一个MAC地址修改数据包中目的方的MAC地址后,再调用dev_queue_xmit函数将此数据包转发出去。以此类推,不断执行轮循发送。同时,在发送数据包时,发送方的网卡也在不断轮循。这样就实现了在不依赖交换机的情况下,自动分配通信信道,从而提高了网络的带宽。
图3所示为单IP多MAC地址通信过程。图左侧是一个虚拟的设备bond0,右边的两个是主机实际的eth0和eth1。数据包从协议层传过来以后,首先经过bond0,在bond0的驱动程序中取得这个数据包的目的IP地址,然后根据该IP地址在ARP表中查询对应的MAC地址,并修改数据包中目的方MAC地址,以此实现bond0把数据包轮循地发向eth0和eth1的过程。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1、一种提高以太网带宽的方法,其特征在于包含以下步骤:
在各个主机上设置多个具有同一IP地址不同MAC地址的以太网卡;
在各个主机上设置一个ARP表,在该ARP表中,根据IP地址可以查到该IP地址对应的多个MAC地址;
当一个第一主机向一个第二主机发送IP数据包时,通过查询所述的ARP表,获得目标IP地址的多个MAC地址,选取其中的一个MAC地址,向该选定的MAC地址发送IP数据包;
当第一主机向所述第二主机再次发送IP数据包时,通过查询所述的ARP表,获得该目标IP地址对应的另一个MAC地址,向该选定的另一个MAC地址发送IP数据包,以此轮循发送;
并且,在一个第一主机向所述第二主机再次发送IP数据包的同时,第一主机也使用自身的多个MAC地址轮循发送。
2、根据权利要求1所述的提高以太网带宽的方法,其特征在于,所述发送IP数据包的操作设置在网络硬件层,并且进一步包含以下步骤:
当第一主机需要向第二主机发送一个IP数据包时,首先取得该数据包的目的IP地址,然后根据目的IP地址在所述的ARP表中查询是否有MAC地址对应项,如果不存在则根据该IP数据包中原有的目的方MAC地址直接转发出去,否则根据查得的MAC地址修改数据包中目的方MAC地址,再转发出去;
当该第一主机下一次向同一IP地址发送数据包时,该主机使用这个IP地址对应的另一个MAC地址修改数据包的目的方MAC地址,再通过自身的另一个以太网卡转发出去;以此不断轮循。
3、根据权利要求1所述的提高以太网带宽的方法,其特征在于,在各个主机上构造一个虚拟的设备,所有传输的IP数据包都要经过该虚拟的设备,通过该虚拟的设备的驱动程序中取得各个IP数据包的目的IP地址。
4、根据权利要求1所述的提高以太网带宽的方法,其特征在于,所述第一主机调用LINUX操作系统的dev_queue_xmit函数,将IP数据包转发出去。
5、根据权利要求1所述的一种提高以太网带宽的方法,其特征在于,所述的ARP表可以通过静态手工配置的或动态解析得到。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02153540 CN1272938C (zh) | 2002-12-04 | 2002-12-04 | 一种提高以太网带宽的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02153540 CN1272938C (zh) | 2002-12-04 | 2002-12-04 | 一种提高以太网带宽的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1505335A CN1505335A (zh) | 2004-06-16 |
CN1272938C true CN1272938C (zh) | 2006-08-30 |
Family
ID=34235180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02153540 Expired - Fee Related CN1272938C (zh) | 2002-12-04 | 2002-12-04 | 一种提高以太网带宽的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1272938C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100414936C (zh) * | 2006-06-30 | 2008-08-27 | 中国科学院计算技术研究所 | 平衡网络文件系统服务器多网卡间负载的方法 |
CN103166840A (zh) * | 2011-12-09 | 2013-06-19 | 国家电网公司 | 服务器与交换机的数据传输方法与系统 |
CN104079486A (zh) | 2013-03-28 | 2014-10-01 | 国际商业机器公司 | 一种网关及其传送数据的方法 |
CN103336708B (zh) * | 2013-05-31 | 2016-12-28 | 华为技术有限公司 | 聚合网卡资源的方法和相关设备及计算机系统 |
CN103944750B (zh) * | 2014-03-14 | 2017-08-29 | 华为技术有限公司 | 一种绑定网卡故障处理方法及装置 |
CN104702518B (zh) * | 2015-03-05 | 2017-12-19 | 安徽清新互联信息科技有限公司 | 一种基于无线网络的多卡路由器装置及其数据传输方法 |
-
2002
- 2002-12-04 CN CN 02153540 patent/CN1272938C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1505335A (zh) | 2004-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5864535A (en) | Network server having dynamic load balancing of messages in both inbound and outbound directions | |
US7599289B2 (en) | Electronic communication control | |
JP2878062B2 (ja) | ネットワーク資源を遠隔のネットワークに拡張するシステム及び方法 | |
CN101150527B (zh) | 一种pcie数据传输的方法、系统及设备 | |
EP0909062A1 (en) | Methods and apparatus for accelerating OSI layer 3 routers | |
US20080181232A1 (en) | Computer program product and system for managing virtual instances of a physical port attached to a network | |
CN111614631B (zh) | 一种用户态流水线架构防火墙系统 | |
CN1825836A (zh) | 避免网络设备拥塞的系统和方法 | |
CN101098292B (zh) | 在接入设备上减少用户地址解析协议广播的方法 | |
WO2009085536A2 (en) | High performance ethernet networking utilizing existing fibre channel fabric hba | |
US20110292793A1 (en) | Communication apparatus, communication method, and computer program | |
CN111371920A (zh) | Dns前端解析方法及系统 | |
CN1272938C (zh) | 一种提高以太网带宽的方法 | |
CN1668030A (zh) | 对于通信网络中的多协议应用,处理字段帧的系统与方法 | |
CN1272724C (zh) | 基于内核中套接字对接的第七层负载均衡的方法 | |
CN1157902C (zh) | 非广播多路访问网络的ip地址映射发送方法 | |
CN1235346C (zh) | 提高接入服务器路由转发可靠性的方法 | |
CN1929435A (zh) | 分组传送装置与方法 | |
US7463585B2 (en) | System, method, and apparatus for load-balancing to a plurality of ports | |
EP1540473B1 (en) | System and method for network interfacing in a multiple network environment | |
CN112217687B (zh) | 一种实现任意IP地址ping回复的方法 | |
CN1558640A (zh) | 一种处理器提供多个有mac地址的网口的系统和方法 | |
JPH1013471A (ja) | ネットワーク間接続方式およびドメインネーム管理方法 | |
CN1435969A (zh) | 实现支持虚拟局域网防火墙的方法 | |
JP2001144793A (ja) | 高速/高信頼性イーサ伝送方式及びi/f装置 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060830 Termination date: 20201204 |
|
CF01 | Termination of patent right due to non-payment of annual fee |