CN106550059A - 一种arp请求的响应方法和装置 - Google Patents
一种arp请求的响应方法和装置 Download PDFInfo
- Publication number
- CN106550059A CN106550059A CN201610958185.6A CN201610958185A CN106550059A CN 106550059 A CN106550059 A CN 106550059A CN 201610958185 A CN201610958185 A CN 201610958185A CN 106550059 A CN106550059 A CN 106550059A
- Authority
- CN
- China
- Prior art keywords
- address
- packet
- flow table
- mac address
- arp request
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了一种ARP请求的响应方法和装置,该ARP请求的响应方法包括:获取ARP请求的数据包;将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系;根据IP地址和MAC地址,构造ARP请求的响应包。本发明通过获取ARP请求的数据包,并将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系,最后根据IP地址和MAC地址,构造ARP请求的响应包,从而能够在本地物理主机回应虚拟机的ARP广播,从而大大减轻网络上的ARP风暴,提高网络性能。
Description
技术领域
本发明涉及通信领域,具体来说,涉及一种ARP请求的响应方法和装置。
背景技术
在云计算环境下,经过计算虚拟化以后,传统数据中心的网卡数量会成几十倍的往上整加,那么在传统网络中会产生大量的ARP包,严重消耗网络带宽,其中,ARP(AddressResolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种ARP请求的响应方法和装置,能够在本地物理主机回应虚拟机的ARP广播,从而大大减轻网络上的ARP风暴,提高网络性能。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种ARP请求的响应方法。
该响应方法包括:获取ARP请求的数据包;将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系;根据IP地址和MAC地址,构造ARP请求的响应包。
根据本发明的一个实施例,将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址包括:将数据包和OpenFlow流表中的每条流表规则相匹配;在数据包和流表规则匹配的情况下,获取与数据包中的IP地址对应的MAC地址;在数据包和流表规则不匹配的情况下,洪泛ARP请求的数据包。
根据本发明的一个实施例,进一步包括:数据库中存储有所有虚拟机的IP地址和MAC地址。
根据本发明的一个实施例,进一步包括:将数据库中与本物理机通信的虚拟机的IP地址和MAC地址同步至OpenFlow流表。
根据本发明的另一方面,提供了一种ARP请求的响应装置。
该响应装置包括:获取模块,用于获取ARP请求的数据包;
匹配模块,用于将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系;
构造模块,用于根据IP地址和MAC地址,构造ARP请求的响应包。
根据本发明的一个实施例,匹配模块包括:匹配子模块,用于将数据包和OpenFlow流表中的每条流表规则相匹配;获取子模块,在数据包和流表规则匹配的情况下,获取与数据包中的IP地址对应的MAC地址;洪泛模块,用于在数据包和流表规则不匹配的情况下,洪泛ARP请求的数据包。
根据本发明的一个实施例,进一步包括:存储模块,用于在数据库中存储所有虚拟机的IP地址和MAC地址。
根据本发明的一个实施例,进一步包括:同步模块,用于将数据库中与本物理机通信的虚拟机的IP地址和MAC地址同步至OpenFlow流表。
本发明的有益技术效果在于:
本发明通过获取ARP请求的数据包,并将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系,最后根据IP地址和MAC地址,构造ARP请求的响应包,从而能够在本地物理主机回应虚拟机的ARP广播,从而大大减轻网络上的ARP风暴,提高网络性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1是根据本发明实施例的ARP请求的响应方法的流程图;
图2是根据本发明实施例的OVS流表之间的关系和数据包的处理流程图;
图3是根据本发明实施例的ARP请求的响应装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获取的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种ARP请求的响应方法。
如图1所示,根据本发明实施例的响应方法包括:
步骤S101,获取ARP请求的数据包;
步骤S103,将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系,该OpenFlow流表是通过OpenFlow协议对Flow流表进行编程;
步骤S105,根据IP地址和MAC地址,构造ARP请求的响应包。
通过本发明的上述方案,能够通过获取ARP请求的数据包,并将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系,最后根据IP地址和MAC地址,构造ARP请求的响应包,从而能够在本地物理主机回应虚拟机的ARP广播,从而大大减轻网络上的ARP风暴,提高网络性能。
根据本发明的一个实施例,将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址包括:将数据包和OpenFlow流表中的每条流表规则相匹配;在数据包和流表规则匹配的情况下,获取与数据包中的IP地址对应的MAC地址;在数据包和流表规则不匹配的情况下,洪泛ARP请求的数据包,其中,该洪泛仅要求接收到的信息的节点以广播方式转发数据包。
根据本发明的一个实施例,进一步包括:数据库中存储有所有虚拟机的IP地址和MAC地址。
根据本发明的一个实施例,进一步包括:将数据库中与本物理机通信的虚拟机的IP地址和MAC地址同步至OpenFlow流表。
为了更好的描述本发明,下面通过一个具体的实施例对本发明进行详细地描述。
OVS(open vswitch,开放虚拟交换标准)流表支持255个流表,如图2所示,本发明使用了其中的0-22号流表,当然可以理解,可根据实际需求对OVS流量中使用流表进行设置,例如,根据本发明的一个实施例,本发明使用其中的0-25号流表,本发明对此不做限定,下面对0-22号流表进行详细的描述,具体如下:
流表0(Table0),用于分发本地物理机接收的消息,下面通过一个实施例进行描述,该实施例具体如下:
Table 0,priority=1,in_port=3actions=resubmit(,3)
table 0,priority=1,in_port=1actions=resubmit(,2);
流表1(Table1),用于处理分布式路由出包,下面通过一个实施例进行描述,该实施例具体如下:
Table 1,dl_vlan=1,dl_src=fa:16:3e:ec:f3:dd
actions=mod_dl_src:fa:16:3f:b2:34:82,resubmit(,2)
table1,dl_vlan=2,dl_src=fa:16:3e:63:3b:4c
actions=mod_dl_src:fa:16:3f:b2:34:82,resubmit(,2);
流表2(Table2),用于分发单播,组播,广播数据包,下面通过一个实施例进行描述,该实施例具体如下:
table2,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00actions=resubmit(,20)
table,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00actions=resubmit(,22);
流表3(Table3),用于只允许本机网络的数据包通过,下面通过一个实施例进行描述,该实施例具体如下:
table3,tun_id=0x4actions=mod_vlan_vid:1,resubmit(,9)
table 3,actions=drop;
流表9(Table9),用于处理分布式路由入包,下面通过一个实施例进行描述,该实施例具体如下:
table 9,dl_src=fa:16:3f:db:6f:73actions=output:1;
流表10(Table10),用于学习MAC地址,tunnel(隧道),vlan(虚拟局域网);
流表20(Table20),用于将流表10学习到的内容会存入本表中,L2Population会更新本流表20,其中,L2Population用于调用和更新数据库,下面通过一个实施例进行描述,该实施例具体如下:
table20,dl_vlan=1,dl_dst=fa:16:3e:7e:ab:cc
ctions=strip_vlan,set_tunnel:0x3e9,output:5
流表21(Table21),用于处理本地机器ARP请求,L2Population会更新本表;
流表22(Table22),用于洪泛数据包,L2Population会更新本表,下面通过一个实施例进行描述,该实施例具体如下:
table22,dl_vlan=2actions=strip_vlan,set_tunnel:0x6,output:3。
在没有本地响应ARP请求的情况下,每次遇到ARP广播包,都会经过流表22洪泛到其他所有节点,这样大大的占用了网络带宽,因此,本发明通过L2Population的作用是在本地处理ARP请求,其中,L2Population用于调用数据库和更新数据库,在该数据库中保存了所有的端口(或虚拟机)的MAC地址和IP地址的相关数据,而ARP的请求过程就是一个虚机要根据另一个虚机的IP地址查询它的MAC地址,因此,只需要Neutron server通过RPC告诉每个计算节点上的agent所有活动端口的MAC地址和IP地址,其中,该neutron-server是neutron的核心组件之一,负责直接接收外部请求,这样本机上的虚机的ARP请求的响应就可以在本地解决,有了L2Population以后,流表(示例)有以下变化:
table=2,priority=1,arp,dl_dst=ff:ff:ff:ff:ff:ff actions=resubmit(,21)
table=20,priority=2,dl_vlan=2,dl_dst=fa:16:3e:73:49:41,actions=strip_vla n,set_tunnel:0x6,output:5
table=21,priority=1,arp,dl_vlan=2,arp_tpa=10.0.1.11
table=21,priority=0actions=resubmit(,22)
table=22,hard_age=78,dl_vlan=2actions=strip_vlan,set_tunnel:0x6,output:5,output:5,output:4,
首先,流表2增加了一条规则来处理ARP数据包,将其交给流表21;
其次,由L2population发来的entry来更新流表21和流表20,例如,计算机节点C上增加了新的虚拟机VM3,计算节点A和B收到一条L2population关于VM3的MAC,IP和Network的消息,然后,计算机节点A和B会在流表21中增加相应的OpenFlow流表规则,随后流表21中的每一条OpenFlow流表规则,会和进来的帧的数据做匹配(包括:ARP协议,network、虚拟机的IP地址),如果匹配成功,则构造一个ARP响应包,其中包括了IP地址和MAC地址,从原来的部分发回到虚机,例如,发送ARP请求的网关设备为本地,则通过流表21将响应包发送回源主机,若发送ARP请求的网关设备为异地,则通过流表20将响应包发送回源主机,如果没有匹配成功的,那么转发到流表22做泛洪,于此同时流表20新增一条OpenFlow流表规则来进行vlan与Tunnel号的更换和建立管道之间的链接。
根据本发明的实施例,还提供了一种ARP请求的响应装置。
如图3所示,根据本发明实施例的响应装置包括:
获取模块31,用于获取ARP请求的数据包;
匹配模块32,用于将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系;
构造模块33,用于根据IP地址和MAC地址,构造ARP请求的响应包。
根据本发明的一个实施例,匹配模块32包括:
匹配子模块(未示出),用于将数据包和OpenFlow流表中的每条流表规则相匹配;
获取子模块(未示出),在数据包和流表规则匹配的情况下,获取与数据包中的IP地址对应的MAC地址;洪泛模块,用于在数据包和流表规则不匹配的情况下,洪泛ARP请求的数据包。
根据本发明的一个实施例,进一步包括:存储模块(未示出),用于在数据库中存储所有虚拟机的IP地址和MAC地址。
根据本发明的一个实施例,进一步包括:同步模块(未示出),用于将数据库中与本物理机通信的虚拟机的IP地址和MAC地址同步至OpenFlow流表。
综上所述,借助于本发明的上述技术方案,通过获取ARP请求的数据包,并将数据包和OpenFlow流表相匹配,以获取与数据包中的IP地址对应的MAC地址,其中,OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系,最后根据IP地址和MAC地址,构造ARP请求的响应包,从而能够在本地物理主机回应虚拟机的ARP广播,从而大大减轻网络上的ARP风暴,提高网络性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种ARP请求的响应方法,其特征在于,包括:
获取所述ARP请求的数据包;
将所述数据包和OpenFlow流表相匹配,以获取与所述数据包中的IP地址对应的MAC地址,其中,所述OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系;
根据所述IP地址和所述MAC地址,构造所述ARP请求的响应包。
2.根据权利要求1所述的响应方法,其特征在于,将所述数据包和OpenFlow流表相匹配,以获取与所述数据包中的IP地址对应的MAC地址包括:
将所述数据包和OpenFlow流表中的每条流表规则相匹配;
在所述数据包和流表规则匹配的情况下,获取与所述数据包中的IP地址对应的MAC地址;
在所述数据包和流表规则不匹配的情况下,洪泛所述ARP请求的数据包。
3.根据权利要求1所述的响应方法,其特征在于,进一步包括:
数据库中存储有所有虚拟机的IP地址和MAC地址。
4.根据权利要求3所述的响应方法,其特征在于,进一步包括:
将所述数据库中与本物理机通信的虚拟机的IP地址和MAC地址同步至所述OpenFlow流表。
5.一种ARP请求的响应装置,其特征在于,包括:
获取模块,用于获取所述ARP请求的数据包;
匹配模块,用于将所述数据包和OpenFlow流表相匹配,以获取与所述数据包中的IP地址对应的MAC地址,其中,所述OpenFlow流表存储有与本物理机通信的虚拟机的IP地址和MAC地址的映射关系;
构造模块,用于根据所述IP地址和所述MAC地址,构造所述ARP请求的响应包。
6.根据权利要求1所述的响应装置,其特征在于,所述匹配模块包括:
匹配子模块,用于将所述数据包和OpenFlow流表中的每条流表规则相匹配;
获取子模块,在所述数据包和流表规则匹配的情况下,获取与所述数据包中的IP地址对应的MAC地址;
洪泛模块,用于在所述数据包和流表规则不匹配的情况下,洪泛所述ARP请求的数据包。
7.根据权利要求1所述的响应装置,其特征在于,进一步包括:
存储模块,用于在数据库中存储所有虚拟机的IP地址和MAC地址。
8.根据权利要求3所述的响应装置,其特征在于,进一步包括:
同步模块,用于将所述数据库中与本物理机通信的虚拟机的IP地址和MAC地址同步至所述OpenFlow流表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610958185.6A CN106550059A (zh) | 2016-10-27 | 2016-10-27 | 一种arp请求的响应方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610958185.6A CN106550059A (zh) | 2016-10-27 | 2016-10-27 | 一种arp请求的响应方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106550059A true CN106550059A (zh) | 2017-03-29 |
Family
ID=58393341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610958185.6A Pending CN106550059A (zh) | 2016-10-27 | 2016-10-27 | 一种arp请求的响应方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106550059A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337172A (zh) * | 2018-01-30 | 2018-07-27 | 长沙理工大学 | 大规模OpenFlow流表分级存储架构与加速查找方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457586A (zh) * | 2010-10-18 | 2012-05-16 | 中兴通讯股份有限公司 | 一种实现二层网络的扩展方法及扩展的二层网络 |
CN104427004A (zh) * | 2013-08-19 | 2015-03-18 | 北京怀教网络技术服务有限公司 | 一种基于网络设备的arp报文管理方法 |
CN105450690A (zh) * | 2014-08-21 | 2016-03-30 | 国际商业机器公司 | 虚拟机管理程序执行的方法和虚拟机管理系统 |
-
2016
- 2016-10-27 CN CN201610958185.6A patent/CN106550059A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457586A (zh) * | 2010-10-18 | 2012-05-16 | 中兴通讯股份有限公司 | 一种实现二层网络的扩展方法及扩展的二层网络 |
CN104427004A (zh) * | 2013-08-19 | 2015-03-18 | 北京怀教网络技术服务有限公司 | 一种基于网络设备的arp报文管理方法 |
CN105450690A (zh) * | 2014-08-21 | 2016-03-30 | 国际商业机器公司 | 虚拟机管理程序执行的方法和虚拟机管理系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337172A (zh) * | 2018-01-30 | 2018-07-27 | 长沙理工大学 | 大规模OpenFlow流表分级存储架构与加速查找方法 |
CN108337172B (zh) * | 2018-01-30 | 2020-09-29 | 长沙理工大学 | 大规模OpenFlow流表加速查找方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11411776B2 (en) | Multi-cloud VPC routing and registration | |
CN112470436B (zh) | 用于提供多云连通性的系统、方法、以及计算机可读介质 | |
CN105706400B (zh) | 在网络上转发分组的方法和装置 | |
CN106936777B (zh) | 基于OpenFlow的云计算分布式网络实现方法、系统 | |
CN103595648B (zh) | 用于在服务器的接收侧进行负载均衡的方法和系统 | |
CN105577548B (zh) | 一种软件定义网络中报文处理方法和装置 | |
US20150355934A1 (en) | Method for generating configuration information, and network control unit | |
CN103841028A (zh) | 一种报文转发方法及设备 | |
CN106209553A (zh) | 报文处理方法、设备及系统 | |
CN111585889A (zh) | 逻辑路由器 | |
US10574570B2 (en) | Communication processing method and apparatus | |
CN104283980A (zh) | 一种地址解析协议代答方法和装置 | |
CN105591907B (zh) | 一种路由获取方法和装置 | |
US20200007472A1 (en) | Service insertion in basic virtual network environment | |
CN111736958A (zh) | 虚拟机迁移方法、系统、计算机设备及存储介质 | |
CN105634901B (zh) | 基于cas vxlan的mac地址信息同步方法及装置 | |
US9467374B2 (en) | Supporting multiple IEC-101/IEC-104 masters on an IEC-101/IEC-104 translation gateway | |
CN107342941A (zh) | 一种vxlan控制平面的优化方法及装置 | |
CN107547665A (zh) | 一种dhcp地址分配的方法、设备及系统 | |
CN106209689A (zh) | 从vxlan至vlan的组播数据报文转发方法和设备 | |
CN108512737B (zh) | 一种数据中心ip层互联的方法和sdn控制器 | |
CN108259205B (zh) | 一种路由发布方法及网络设备 | |
CN114422415A (zh) | 在分段路由中的出口节点处理流 | |
CN106550059A (zh) | 一种arp请求的响应方法和装置 | |
WO2016173196A1 (zh) | 地址映射关系的学习方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170329 |