CN1272937C - 一种单一ip地址多硬件地址的动态解析方法 - Google Patents
一种单一ip地址多硬件地址的动态解析方法 Download PDFInfo
- Publication number
- CN1272937C CN1272937C CN 02153539 CN02153539A CN1272937C CN 1272937 C CN1272937 C CN 1272937C CN 02153539 CN02153539 CN 02153539 CN 02153539 A CN02153539 A CN 02153539A CN 1272937 C CN1272937 C CN 1272937C
- Authority
- CN
- China
- Prior art keywords
- address
- main frame
- ethernet
- host
- datagram
- 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地址的动态解析方法,其中在以太网的各个主机上设置具有同一IP地址不同MAC地址的多个以太网卡,并且在各个主机上设置用于记录IP地址与多个MAC地址对应关系的一个ARP表;当一个第一主机需要解析一个第二主机的硬件地址时,包含以下步骤:第一主机利用自身的各个以太网卡,分别广播发送包含该网卡自身MAC地址的用于请求地址解析的数据报;第二主机接收到第一主机广播的各个请求地址解析的数据报后,利用自身各个以太网卡,分别发送包含该网卡自身MAC地址的用于应答的数据报。第一主机接收到第二主机回应的各个用于应答的所述数据报后,将相应的网卡MAC地址数据添加到在本机ARP表中。
Description
技术领域
本发明涉及计算机通信技术领域,特别是指一种单一IP(网际协议)地址多硬件地址的动态解析方法。
背景技术
在集群并行计算领域,高速通信能力一直是影响***计算速度的一个关键因素,如何以较低的成本实现高性能的传输机制一直是研究的热点。
在目前的局域网通信技术中,较低成本的通信设施在普通环境中的应用十分普遍,虽然运行可靠,但它们往往不能给集群计算提供足够的通信能力,如以太网通信技术。而为集群***等需要高性能通信技术专门研发的通信设施往往价格昂贵,维护费用高,很少能够在普通环境中应用,例如光纤技术(Myrinet)。因此,如何利用现有的低成本设施构建高通信环境成为当前的技术需求。
在现有技术中,关于以太网多网卡并行通信技术的实现是使用多块网卡单一IP地址的构建方式,上层软件对于某IP地址的通信数据在低层被分解到多个网卡上,通过分担任务使通信带宽得到提高。但是,目前的这种单一IP多网卡技术需要交换机支持中继(Trunk)技术或以太网通路(EtherChannel)技术,也就是说,某主机单一IP地址下的多块网卡必须设置成为相同的硬件地址(MAC地址),由交换机识别硬件地址的变化并负责分配通信信道。
上述的局限性在于,在构建***时必须选用价格较责的能够支持Trunk或EtherChannel技术的具有多端口绑定技术的以太网交换机,因而如何摆脱交换机的限制,实现***间动态解析各主机IP地址下的多MAC地址的能力成为通信技术的需求。
本中请人在同一日递交的发明名称为《一种提高以太网带宽的方法》的专利申请中,提供了一种提高以太网带宽的方法,该方法包含以下步骤:在各个主机上设置多个具有同一IP地址不同MAC地址的以太网卡;在各个主机上设置一个ARP表,在该ARP表中,根据IP地址可以查到该IP地址对应的多个MAC地址;当一个第一主机需要向一个第二主机发送IP数据包时,通过查询所述的ARP表,获得目标IP地址的多个MAC地址,向该多个MAC地址轮循发送。其中,该方法中所述的ARP表可以通过静态手工配置也可以通过动态解析得到。而本发明的重点在于解决实现***间动态解析各主机IP地址下的多MAC地址的问题。
发明内容
有鉴于此,本发明的目的在于提供一种单一IP地址多硬件地址的动态解析方法。
为达到上述目的,本发明的技术方案是这样实现的:
一种单一IP地址多MAC地址的动态解析方法,其中在以太网的各个主机上设置具有同一IP地址不同MAC地址的多个以太网卡,并且在各个主机上设置用于记录IP地址与多个MAC地址对应关系的一个ARP表;当一个第一主机需要解析一个第二主机的硬件地址时,包含以下步骤:
A、第一主机利用自身的各个以太网卡,分别广播发送包含该网卡自身MAC地址的用于请求地址解析的数据报;
B、第二主机接收到第一主机广播的各个请求地址解析的所述数据报后,利用自身的各个以太网卡,分别发送包含该网卡自身MAC地址的用于应答的数据报;
C、第一主机接收到第二主机回应的各个用于应答的所述数据报后,将相应的网卡MAC地址数据添加到在本机ARP表中。
较佳地,所述数据报的结构中包含:以太网目的地址、以太网源地址、数据帧类型标志、操作类型标志、发送端以太网地址、发送端IP地址、目的以太网地址和目的IP地址,并且
在第一主机构建所述用于请求地址解析的数据报时,将以太网目的地址设置为广播地址,以太网源地址和发送端以太网地址设置为发送本数据报的网卡的MAC地址,操作类型标志设置为请求标志,目的以太网地址设置为空,目的IP地址设置为第二主机的IP地址;
在第二主机构建所述用于应答的数据报时,将应答数据报文中的以太网目的地址和目的以太网地址设置为接收到的来自第一主机的请求地址解析数据报文中的发送端以太网地址,将以太网源地址和发送端以太网地址设置为发送本数据报的网卡的MAC地址,操作类型标志设置为应答标志,目的IP地址设置为第一主机的IP地址。
较佳地,步骤B中进一步包含:第二主机根据接收到的数据报,判断其是否为向本机请求地址解析的数据报的步骤。
较佳地,步骤B中进一步包含:第二主机根据接收到的用于请求地址解析的数据报,将第一主机的网卡MAC地址数据添加到本机ARP表中的步骤。
较佳地,步骤C中进一步包含:第一主机根据接收到的数据报,判断其是否为向本机应答的数据报的步骤。
较佳地,步骤C中进一步包含:第一主机判断是否解析响应超时,如超时并在ARP表中标记为不可解析或不完全解析的步骤。
较佳地,在第一主机需要与第二主机通信,而其本机ARP表中没有第二主机的数据的情况下,第一主机启动解析过程;或者第一主机ARP表项中记录的第二主机的数据存活时间超时的情况下,第一主机启动解析过程。
应用本发明,***可以得到局域网内部任一指定主机IP地址下的所有可以工作的以太网卡的硬件地址;并且可以定时更新存放硬件地址的ARP表中的数据,无论***添加主机还是***中某主机下电时,所有主机都可以自动解析到新机器网卡的硬件地址,或自动取消下电主机的路由数据;当某主机中有网卡出现故障时,所有主机也将会从ARP表中剔除该网卡信息,将通信任务转移到其他网卡上,而故障主机也将不再使用该网卡通信。在分配数据到不同网卡上发送时,通过设定数据包中的目标硬件地址而自由地决定目标主机的接收网卡,从而实现负载平衡。
附图说明
图1为发送控制过程流程图;
图2为接受控制过程流程图;
图3为时间过程流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
在本实施例中,以Linux***为例。
在Linux***中,基于IP协议的网络通信,其操作***的内核由以下几层组成:用户编写通信程序的用户层、内核接收用户需要发送数据的加州大学柏克利分校软件(BSD Socket)层、处理传输控制协议(TCP)和用户数据协议(UDP)的数据处理层、构建IP包和路由等的IP层和通过硬件发送数据的硬件设备通信驱动程序层。本发明只涉及硬设备件通信驱动程序层。
Linux***中的主机分为两种:主设备和从属设备。每个主设备可以拥有多个不同类型的从属设备。单一JP多网卡的通信机制即使用这种方式,通过构建一个主设备,并在主设备上设置多个以太网卡,使主设备和它所有的从设备使用同一IP地址,不同的MAC地址。在配置***ARP表时,将主设备配置成为本网段的通信设备。
多硬件地址的动态解析技术是在***使用硬件设备驱动程序发送数据的过程中实现的。
单一IP地址多MAC地址的动态解析通信过程由三个部分构成:发送控制过程,接收控制过程和时间过程。三个部分构成了一个内核加载模块。所有操作过程都围绕着该模块中ARP表的数据进行,整个过程可以看作是一个表驱动结构。
在ARP表中记录着解析得到的各个主机的IP地址,和该IP地址下多个网卡的硬件地址,同时存放着其他标志信息,如时间等。
同时,为了在以太网络上发送包含网卡硬件地址地数据包,基于以太网传输的数据报文结构,构建一个独立的通信数据报结构,称之为多网卡通信硬件地址解析请求与应答报文。其格式如表1所示:
以太网目的地址 | 以太网源地址 | 帧类型 | Op | 发送端以太网地址 | 发送端IP地址 | 目的以太网地址 | 目的IP地址 |
6 | 6 | 2 | 2 | 6 | 4 | 6 | 4 |
表1
该数据报的结构中包含:以太网目的地址、以太网源地址、数据帧类型标志、操作类型标志、发送端以太网地址、发送端IP地址、目的以太网地址和目的IP地址。图中的前三列是以太网协议要求的数据结构,后五列为多网卡地址解析数据结构,每一列中的数字表示该字段所占的字节长度。整个***的数据传输都是依靠在网络上传输这种报文实现的。其解析应答过程如下:
当主机A需要与远端主机B通信时,主机A首先检查自身的ARP表中是否有主机B的表项,如果没有,则启动请求解析过程,或者当时间过程判断ARP表中的表项存活时间超时后,也将会触发请求解析过程来更新ARP表中的数据。其具体的解析过程如下:
首先,根据主机A自身的各个网卡的硬件地址数据,构建请求地址解析数据报,其具体格式如表2所示:
以太网目的地址 | 以太网源地址 | 帧类型 | Op | 发送端以太网地址 | 发送端IP地址 | 目的以太网地址 | 目的IP地址 |
广播地址 | 主机A第i块网卡的地址 | 定义的报文类型 | 1表示请求 | 主机A第i块网卡的地址 | 主机A的IP地址 | 空 | 主机B的IP地址 |
表2
其次,主机A利用自身的各个以太网卡,以广播的方式分别发送包含该网卡自身MAC地址的请求地址解析的数据报;也即针对每一块以太网卡,都构建一个如表2所示的报文,然后将所构建的所有报文分别以广播的方式发送出去。
当主机B接收到主机A发送的广播数据报后,接收控制过程首先判断OP的值是否为请求标识,如果是,则接收控制过程根据目的IP地址判断该请求信息是否为请求解析主机B的信息,如果是,则启动应答过程。其具体的应答过程如下:
首先,应答过程根据从主机A接收到的各个数据报中得到主机A的各个网卡的硬件地址,并结合自身各个网卡的硬件地址针对每个数据报文分别构建出应答数据报文,其具体格式如表3所示:
以太网目的地址 | 以太网源地址 | 帧类型 | Op | 发送端以太网地址 | 发送端IP地址 | 目的以太网地址 | 目的IP地址 |
主机A的第i块网卡地址 | 主机B第j块网卡的地址 | 定义的报文类型 | 2表示应答 | 主机B第j块网卡的地址 | 主机B的IP地址 | 主机A的第i块网卡地址 | 主机A的IP地址 |
表3
其次,主机B的每块网卡将发送由自身各个网卡的硬件地址构建的应答数据报文,(如果某块网卡出现问题,将不回应这块网卡的地址信息),每个报文将直接回应到主机A的网卡上。
应答数据报文被主机A接收后,主机A将启动接收控制过程。该过程首先判断OP的值是否为应答标识,如果是,则根据主机B的IP地址找到主机B网卡的硬件地址,在主机A的ARP表中添加应答数据报文传送过来的主机B网卡的硬件地址;多次接收到主机B发送来的应答数据报文后,主机A的ARP表中会记录所有的主机B网卡的硬件地址,如果主机A不能全部解析主机B所有网卡的硬件地址,时间处理函数将在表项超时后进行标识。以被解析的硬件地址将在主机A下次与主机B通信时使用,从而实现对单一IP地址下的多MAC地址动态解析的过程,构建出均衡负载的通路。
基于这个架构,下面分别描述发送控制过程、接受控制过程和时间过程的运行细节:
图1所示为发送控制过程流程图。Linux***使用主设备发送数据包,并由主设备控制发送过程。
步骤101,***调用主设备的发送函数,即主设备发送函数接收到来自网络协议层的数据;
步骤102,主设备在发送函数中判断数据报是否为IP数据报,如果是执行步骤103,否则执行步骤204,直接发送。
步骤103,查找路由表中该IP项数据,并获得该项目前的情况;
步骤105,判断是否存在该IP地址的ARP表,如果是则不需要解析,直接执行步骤106,否则执行步骤108,启动硬件地址的解析过程;
步骤106,通过IP地址查询ARP表获得对端多网卡的硬件地址,设置硬件数据报报头后,启动轮循发送策略;
步骤107,发送数据报;
步骤108,判断***是否保留原ARP表中已经设置的数据报目标地址,如果是执行步骤109,否则执行步骤110;
步骤109,直接发送数据报(但不具有多网卡通信能力);
步骤110,广播发送该IP的地址解析请求数据报;
步骤111,等待接收,处理回应数据。
图2所示为接受控制过程流程图。
步骤201,当接收端的网卡收到数据报后,网卡驱动程序注册的中断处理程序被调用;
步骤202,数据报被发送到***后,***根据数据报的类型上传数据;在上传数据报过程中,根据以太网数据报类型标识判断该数据报是否为多网卡地址解析类型数据报,如果是执行步骤203,否则执行步骤204,将数据报直接上传;
步骤203,调用接受过程,解读该报文信息;
步骤205,根据多网卡解析数据报文中的标识判断该报文是请求数据报还是应答数据报,如果是请求数据报,执行步骤206,如果是应答数据报,执行步骤209;
步骤206,根据报文中的源地址更新本机的多网卡路由数据表信息;
步骤207,根据IP地址判断是否需要应答,如果是则执行步骤208,发送应答报文后,结束接收过程。
步骤209,根据回应信息确定路由数据,将解析得到的数据添加到ARP表中,结束接收过程。
图3所示为时间过程流程图。时间过程定时地被***触发,它主要进行两个方面的工作:一是在解析请求不能得到完整应答时判断ARP表状态,二是定时更新已经存在的ARP表。
步骤301,到达指定时间后,***启动注册函数;
步骤302,确定ARP表中各路由表项的时间值;
步骤303,判断正在解析表项的解析响应是否超时,如果是执行步骤304,否则执行步骤305,继续执行;
步骤304,将解析超时的路由表项的IP地址标记为不可解析或不完全解析,时间过程结束;
步骤306,判断ARP表中不可或不完全解析和正确解析的表项的存在时间是否超时,如果是执行步骤307,否则执行步骤308,继续执行;
步骤307,判断是否为不可解析报文,如果是执行步骤310,删除该项,时间过程结束;否则执行步骤309;
步骤309,发送解析请求报文,并进行标记,时间过程结束。
经测试,当***添加主机时,所有主机可以解析到新机器网卡的硬件地址;当***中某主机被移开或下电时,所有主机可以自动取消该被移开或下电主机的路由数据;当某主机中有网卡出现故障时,所有主机将会从路由数据中剔除该网卡信息,将通信任务转移到其他网卡上,而故障主机也将不使用该网卡通信。另外,当局域网中存在不具有多网卡通信机制的主机时,硬件地址动态解析技术能够做出判断,使对于这些主机的通信仍然可以正常进行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1、一种单一IP地址多MAC地址的动态解析方法,其中在以太网的各个主机上设置具有同一IP地址不同MAC地址的多个以太网卡,并且在各个主机上设置用于记录IP地址与多个MAC地址对应关系的一个ARP表;其特征在于当一个第一主机需要解析一个第二主机的硬件地址时,包含以下步骤:
A、第一主机利用自身的各个以太网卡,分别广播发送包含该网卡自身MAC地址的用于请求地址解析的数据报;
B、第二主机接收到第一主机广播的各个请求地址解析的所述数据报后,利用自身的各个以太网卡,分别发送包含该网卡自身MAC地址的用于应答的数据报;
C、第一主机接收到第二主机回应的各个用于应答的所述数据报后,将相应的网卡MAC地址数据添加到在本机ARP表中。
2、根据权利要求1所述的单一IP地址多MAC地址的动态解析方法,其特征在于,所述数据报的结构中包含:以太网目的地址、以太网源地址、数据帧类型标志、操作类型标志、发送端以太网地址、发送端IP地址、目的以太网地址和目的IP地址,并且
在第一主机构建所述用于请求地址解析的数据报时,将以太网目的地址设置为广播地址,以太网源地址和发送端以太网地址设置为发送本数据报的网卡的MAC地址,操作类型标志设置为请求标志,目的以太网地址设置为空,目的IP地址设置为第二主机的IP地址;
在第二主机构建所述用于应答的数据报时,将应答数据报文中的以太网目的地址和目的以太网地址设置为接收到的来自第一主机的请求地址解析数据报文中的发送端以太网地址,将以太网源地址和发送端以太网地址设置为发送本数据报的网卡的MAC地址,操作类型标志设置为应答标志,目的IP地址设置为第一主机的IP地址。
3、根据权利要求1所述的单一IP地址多MAC地址的动态解析方法,其特征在于,步骤B中进一步包含:第二主机根据接收到的数据报,判断其是否为向本机请求地址解析的数据报的步骤。
4、根据权利要求1所述的单一IP地址多MAC地址的动态解析方法,其特征在于,步骤B中进一步包含:第二主机根据接收到的用于请求地址解析的数据报,将第一主机的网卡MAC地址数据添加到本机ARP表中的步骤。
5、根据权利要求1所述的单一IP地址多MAC地址的动态解析方法,其特征在于,步骤C中进一步包含:第一主机根据接收到的数据报,判断其是否为向本机应答的数据报的步骤。
6、根据权利要求1所述的单一IP地址多MAC地址的动态解析方法,其特征在于,步骤C中进一步包含:第一主机判断是否解析响应超时,如超时并在ARP表中标记为不可解析或不完全解析的步骤。
7、根据权利要求1所述的单一IP地址多MAC地址的动态解析方法,其特征在于,在第一主机需要与第二主机通信,而其本机ARP表中没有第二主机的数据的情况下,第一主机启动解析过程;或者第一主机ARP表项中记录的第二主机的数据存活时间超时的情况下,第一主机启动解析过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02153539 CN1272937C (zh) | 2002-12-04 | 2002-12-04 | 一种单一ip地址多硬件地址的动态解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02153539 CN1272937C (zh) | 2002-12-04 | 2002-12-04 | 一种单一ip地址多硬件地址的动态解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1505334A CN1505334A (zh) | 2004-06-16 |
CN1272937C true CN1272937C (zh) | 2006-08-30 |
Family
ID=34235179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02153539 Expired - Fee Related CN1272937C (zh) | 2002-12-04 | 2002-12-04 | 一种单一ip地址多硬件地址的动态解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1272937C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100442791C (zh) * | 2005-01-07 | 2008-12-10 | 华为技术有限公司 | 使用浮动ip地址提高数据通信可靠性的方法 |
CN100490411C (zh) * | 2007-06-29 | 2009-05-20 | 华为技术有限公司 | 学习mac地址的方法及网元设备 |
CN104079486A (zh) * | 2013-03-28 | 2014-10-01 | 国际商业机器公司 | 一种网关及其传送数据的方法 |
CN105391589B (zh) * | 2015-12-15 | 2018-09-25 | 京信通信***(中国)有限公司 | 一种报文传输的方法及装置 |
CN110198337B (zh) * | 2019-03-04 | 2021-10-08 | 腾讯科技(深圳)有限公司 | 网络负载均衡方法、装置、计算机可读介质及电子设备 |
CN115051973B (zh) * | 2022-04-25 | 2023-10-20 | 浙江大华技术股份有限公司 | 一种设备内部通信建立方法及装置 |
-
2002
- 2002-12-04 CN CN 02153539 patent/CN1272937C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1505334A (zh) | 2004-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1270553C (zh) | 移动自组织网络中发现路径最大传输单元的***和方法 | |
CN1194512C (zh) | 信息设备、网关设备及其控制方法 | |
CN1283126C (zh) | 用于移动因特网协议本地代理集群的方法和装置 | |
CN1291574C (zh) | 多点通信方法和装置 | |
CN1168233C (zh) | 使用移动网际协议的移动通信***中的区域隧道管理方法 | |
CN1714558A (zh) | 支持端口标识的移动ip注册 | |
CN1726689A (zh) | 用于移动ip的代理间通信协议 | |
CN1930848A (zh) | 用于万维网服务处理的方法和*** | |
CN1719808A (zh) | 在基于无线分组的网络中的节能 | |
CN1332924A (zh) | 从多个替代服务器中选择一个最近服务器的因特网***和方法 | |
CN1977500A (zh) | 在自组织网络中对通信进行路由 | |
CN1244087A (zh) | 在不同无线网络上提供网络访问的方法和设备 | |
JP2000032028A (ja) | ネットワークアドレス設定方式 | |
CN1848815A (zh) | 基于网络的择路方案 | |
CN1703892A (zh) | 在注册为移动节点的服务器集群中分发服务器请求的方法、设备和*** | |
CN100576846C (zh) | 多协议域名解析服务的服务代理方法 | |
CN1855940A (zh) | 数据处理的方法和*** | |
US10382391B2 (en) | Systems and methods for managing network address information | |
CN1791044A (zh) | 使用无线连接映射管理无线连接状态的***及其方法 | |
CN1408159A (zh) | 作为对于路由发现的触发机制的广播 | |
CN102761618A (zh) | 实现负载均衡的方法、设备及*** | |
CN1925452A (zh) | 数据转发***、方法以及网络转发设备 | |
CN1531813A (zh) | 接入网 | |
CN1929497A (zh) | 一种获取移动节点家乡代理信息的方法和*** | |
CN1230756C (zh) | 用于处理状态查询的网络控制器 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060830 Termination date: 20201204 |