CN108028801B - 一种基于sdn的arp实现方法及装置 - Google Patents
一种基于sdn的arp实现方法及装置 Download PDFInfo
- Publication number
- CN108028801B CN108028801B CN201580026726.5A CN201580026726A CN108028801B CN 108028801 B CN108028801 B CN 108028801B CN 201580026726 A CN201580026726 A CN 201580026726A CN 108028801 B CN108028801 B CN 108028801B
- Authority
- CN
- China
- Prior art keywords
- switch
- arp
- arp request
- controller
- host
- 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.)
- Active
Links
Images
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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/32—Flooding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/15—Flow control; Congestion control in relation to multipoint traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- 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/58—Caching of addresses or names
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及数据通信技术领域,公开了一种基于SDN的ARP实现方法及装置,该方法为:控制器接收第一交换机发送的ARP请求,在确定本地不存在与ARP请求对应的ARP表项时,向第一交换机发送用于指示第一交换机将ARP请求泛洪的指令。这样,通过交换机之间的消息转发,可实现ARP请求在全网中广播,由于交换机之间转发消息比控制器向交换机发送packet‑out消息占用网络传输资源较少,因此,可大大减少ARP请求广播占用的网络传输资源,并提高ARP请求的广播效率,同时,由于减少了packet‑out消息的发送,降低了控制器的处理负荷,避免了控制器负荷较重,成为处理瓶颈的问题。
Description
技术领域
本发明涉及数据通信技术领域,特别涉及一种基于软件定义网络(SoftwareDefined Networking,SDN)的地址解析协议(Address Resolution Protocol,ARP)实现方法及装置。
背景技术
SDN是一种新型的网络架构,在数据中心网络和电信网络中广泛应用。如图1所示,SDN将网元的控制逻辑和转发功能解耦。由控制层提供网络服务,通过控制层下发相应的策略到网络设备来实现,网络设备用来执行转发层的报文传输,其中,网络服务包括各种网络业务和应用,例如,路由、多播、服务质量、接入控制等。
OpenFlow协议是SDN网络中的一种典型的技术,针对OpenFlow协议而言,由控制器OpenFlow Controller(以下简称OF Controller)实现控制层的功能,由若干支持OpenFlow协议交换机OpenFlow Switch(以下简称OF Switch)作为转发层的网络设备来实现转发层功能,每一个交换机下可连接若干主机。
OF Controller负责根据报文特征来确定业务流的动作,其中,报文特征包括:互联网协议(Internet Protocol,IP)五元组、以太网帧头、虚拟局域网唯一标识(VirtualLocal Area Network IDentification,VLAN ID)等。并将流表规则下发给OF Switch,OFSwitch获取并存储流表规则,对于后续符合该流表规则的报文,执行对应的动作,从而实现报文的转发或处理。
如图2所示,流表规则下发的基本流程如下:
步骤201:OF Controller将流表规则通过OFP_Flow_Mod消息(即流表修改消息)发送给OF Switch。
其中,OF Controller可能通过多个OFP_Flow_Mod消息将属于不同流表的流表规则下发给OF Switch。
步骤202:OF Switch将所有流表规则及对应的转发动作集存储到相应的流表中。
步骤203:当接收到用户发送的报文时,OF Switch针对接收到的报文执行流表匹配,并根据匹配的流表规则及其对应的转发动作集,对接收到的报文进行相应的转发处理。
如图3所示,流表匹配和转发处理过程如下:
当数据包通过入端口(Ingress port)进入交换机后,将从第一个流表Table0开始匹配,如果匹配到对应的流表规则,则执流表规则中的指令,根据指令跳转到下一个流表Table 1继续匹配,其中数据包跳转到Table 1时携带Ingress port信息和元数据(metadata)信息,metadata为一个可掩码寄存器的值,用来在流表之间传递信息。如果匹配的Table 1中的流表规则中的指令不再指示跳转下一个流表,则匹配结束,并执行匹配到的Table 1中的流表规则对应的动作集(Actions Set)。如果数据包在流表中没有匹配到对应的流表规则,数据包则会被丢弃或者转发到OF Controller进行处理,如,OF Controller会将数据包转发到指定输出端口、丢包、修改数据包头、根据群组表转发等。
在以太网协议中规定,源主机要和目标主机进行通信,源主机必须要知道目标主机的MAC地址,而通常源主机只知道目标主机的互联网协议(Internet Protocol,IP)地址,地址解析协议(Address Resolution Protocol,ARP)的基本功能是通过目标主机的IP地址,查询并获取目标主机的MAC地址。如图4所示,基于ARP实现主机间通信的过程如下:
步骤401:主机A在向主机B发送报文前,检查本地缓存的ARP映射表是否存在主机B的ARP表项,若是,则直接按照ARP表项向主机B发送报文;否则,执行步骤402。
步骤402:主机A通过相连的交换机S1向全网发送ARP请求消息。
实际应用中,主机A将ARP请求消息向相连的交换机S1发送,交换机S1将ARP请求消息向全网广播。
步骤403:主机B在收到ARP请求后,在本机添加主机A的ARP表项。
步骤404:主机B通过相连的交换机S2向主机A单播发送ARP应答。
具体地,交换机S2通过接收到的ARP请求消息获得主机A的MAC地址信息,根据该主机A的MAC地址信息可实现通过单播的方式向主机A发送ARP应答。
步骤405:主机A收到ARP应答后,添加主机B的ARP表项。
在后续与主机B的通信过程中,可根据此ARP表项来向主机B发送报文。
可见,ARP请求消息的广播会消耗大量的网络带宽,在采用SDN的网络架构中,为减少ARP请求消息的广播,利用OF Controller保存全网的ARP映射表,并处理所有的ARP请求。
如图5所示,现有的ARP实现方法如下:
501:主机A向相连的交换机OF Switch S1发送ARP请求消息。
502:OF Switch S1将ARP请求消息封装为数据包输入packet-in消息,提交给控制器OF Controller。
503:OF Controller收到该packet-in消息,查找内部的ARP映射表中是否有主机B的ARP表项。若是,则直接生成ARP应答,并封装为数据包输出packet-out消息返回给OFSwitch S1;否则,保存主机A的ARP表项,并以packet-out消息方式通知所有的OF Switch将ARP请求发送到相连的主机。
504:交换机OF Switch S3将ARP请求转发给主机B。
505:主机B返回ARP应答。
506:OF Switch S3将ARP应答封装为数据包输入packet-in消息,提交给OFController。
507:OF Controller收到该数据包输入packet-in消息,将主机B的ARP表项保存,并将ARP应答封装成packet-out消息,发送给OF Switch S1。
508:OF Switch S1再将ARP应答转发给主机A。
主机A收到ARP应答后,添加主机B的ARP表项,在后续通信过程中,可根据此ARP表项向主机B发送报文。
现有的基于SDN的ARP实现方法虽然通过OF Controller集中维护ARP映射表,减少了ARP请求消息的广播次数,但是通过集中的控制器(即OF Controller)向众多的交换机传输packet-out消息,将随着网络规模的扩大和ARP请求的增加,不仅会对控制器产生极大的控制处理负担,而且还会占用控制器更多的传输资源,导致控制器成为处理瓶颈。
发明内容
本发明实施例提供一种基于SDN的ARP实现方法及装置,用以解决现有技术中基于控制器来广播ARP请求的过程导致的控制器负荷较重,浪费控制器较多传输资源的问题。
第一方面,提供一种基于SDN的ARP实现方法,包括:
控制器接收第一交换机发送的第一ARP请求,所述第一ARP请求是与所述第一交换机相连的主机向所述第一交换机发送的;
所述控制器在确定本地不存在与所述第一ARP请求对应的ARP表项时,向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第一指令。
结合第一方面,在第一方面的第一种可能的实现方式中,所述第一指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
结合第一方面和第一方面的第一种可能的实现方式中的任一种,在第一方面的第二种可能的实现方式中,所述控制器在接收第一交换机发送的第一ARP请求之前,进一步包括:
所述控制器将预设的流表规则配置给所述第一交换机;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
结合第一方面和第一方面的第一种至第二种可能的实现方式中的任一种,在第一方面的第三种可能的实现方式中,在向所述第一交换机发送所述第一指令之后,进一步包括:
接收第一ARP应答,向所述第一交换机转发所述第一ARP应答,以及,将所述第一ARP应答中的ARP表项在本地保存。
结合第一方面和第一方面的第一种至第三种可能的实现方式中的任一种,在第一方面的第四种可能的实现方式中:
若所述控制器确定本地存在与所述第一ARP请求对应的ARP表项,则基于所述ARP表项确定目的交换机,并向所述目的交换机发送所述第一ARP请求。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述控制器向所述目的交换机发送所述第一ARP请求之后,进一步包括:
若接收到所述目的交换机返回的第二ARP应答,则向所述第一交换机转发所述第二ARP应答;
或,若在设定时长内未接收到所述目的交换机返回的ARP应答,则将本地保存的与所述第一ARP请求对应的ARP表项删除,并向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第二指令;
其中,所述第二指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,在向所述第一交换机发送所述第二指令之后,进一步包括:
在接收到第二交换机发送的第三ARP应答时,将所述第三ARP应答中包含的ARP表项在本地保存,以及
向所述第一交换机转发所述第三ARP应答。
第二方面,提供了另一种基于SDN的ARP实现方法,包括:
第一交换机接收与所述第一交换机相连的主机发送的第一ARP请求;
所述第一交换机将所述第一ARP请求上报给控制器;
所述第一交换机接收所述控制器根据所述第一ARP请求下发的用于指示所述第一交换机将所述第一ARP请求泛洪的指令;
所述第一交换机按照所述指令将所述第一ARP请求泛洪。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第一交换机按照所述指令将所述第一ARP请求泛洪,具体包括:
所述第一交换机按照所述指令向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机发送所述第一ARP请求。
结合第二方面和第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一交换机在接收与所述第一交换机相连的主机发送的第一ARP请求之前,进一步包括:
所述第一交换机根据控制器下发的流表规则配置命令,将流表规则执行配置;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
第三方面,提供另一种基于SDN的ARP实现方法,包括:
第一交换机接收与所述第一交换机相邻的第二交换机发送的第一ARP请求;
所述第一交换机直接将所述第一ARP请求泛洪。
结合第三方面,在第三方面的第一种可能的实现方式中,所述第一交换机直接将所述第一ARP请求泛洪,具体包括:
所述第一交换机向与所述第一交换机相邻的、且除所述第二交换机之外的交换机,以及与所述第一交换机相连的主机发送所述第一ARP请求。
结合第三方面和第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述第一交换机在接收与所述第一交换机相邻的第二交换机发送的第一ARP请求之前,进一步包括:
所述第一交换机根据控制器下发的流表规则配置命令,将流表规则执行配置;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪,交换机在接收到相连的主机发送的ARP请求时,将所述相连的主机发送的ARP请求向控制器上报。
第四方面,提供了一种基于SDN的ARP实现装置,包括:
接收单元,用于接收第一交换机发送的第一ARP请求,所述第一ARP请求是与所述第一交换机相连的主机向所述第一交换机发送的;
映射单元,用于确定本地是否存在与所述接收单元接收的第一ARP请求对应的ARP表项;
发送单元,用于在所述映射单元确定本地存在所述第一ARP请求对应的ARP表项时,向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第一指令。
结合第四方面,在第四方面的第一种可能的实现方式中,所述第一指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
结合第四方面和第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,进一步包括:
配置单元,用于在所述接收单元在接收第一交换机发送的第一ARP请求之前,将预设的流表规则配置给所述第一交换机;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
结合第四方面和第四方面的第一种至第二种可能的实现方式中的任一种,在第四方面的第三种可能的实现方式中,所述接收单元进一步用于,在所述发送单元向所述第一交换机发送所述第一指令之后,接收第一ARP应答;
所述发送单元进一步用于,向所述第一交换机转发所述接收单元接收到的第一ARP应答;
所述映射单元进一步用于,将所述接收单元接收到的第一ARP应答中的ARP表项在本地保存。
结合第四方面和第一方面的第一种至第三种可能的实现方式中的任一种,在第四方面的第四种可能的实现方式中,所述映射单元进一步用于,若确定本地存在与所述第一ARP请求对应的ARP表项,则基于所述ARP表项确定目的交换机;
所述发送单元进一步用于,向所述映射单元确定的目的交换机发送所述第一ARP请求。
结合第四方面的第四种可能的实现方式,在第四方面的第五种可能的实现方式中,在向所述目的交换机发送所述第一ARP请求之后,若所述接收单元接收到所述目的交换机返回的第二ARP应答,则所述发送单元向所述第一交换机转发所述第二ARP应答;
或,若所述接收单元在设定时长内未接收到所述目的交换机返回的ARP应答,则所述映射单元将本地保存的与所述第一ARP请求对应的ARP表项删除,以及,所述发送单元向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第二指令;
其中,所述第二指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
结合第四方面的第五种可能的实现方式,在第四方面的第六种可能的实现方式中,在所述发送单元向所述第一交换机发送所述第二指令之后,在所述接收单元接收到第二交换机发送的第三ARP应答时,所述映射单元进一步用于,将所述第三ARP应答中包含的ARP表项在本地保存,以及
所述发送单元进一步用于,向所述第一交换机转发所述第三ARP应答。
第五方面,提供一种基于SDN的ARP实现装置,包括:
第一接收单元,用于接收与本装置相连的主机发送的第一ARP请求;
发送单元,用于将所述第一接收单元接收到的第一ARP请求上报给控制器;
第二接收单元,用于接收所述控制器根据所述第一ARP请求下发的用于指示本装置将所述第一ARP请求泛洪的指令;
泛洪单元,用于按照所述第二接收单元接收到的指令将所述第一ARP请求泛洪。
结合第五方面,在第五方面的第一种可能的实现方式中,所述泛洪单元具体用于:
按照所述指令向与本装置相邻的交换机,以及与本装置相连的主机发送所述第一ARP请求。
结合第五方面和第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,进一步包括:
配置单元,用于在所述第一接收单元接收与本装置相连的主机发送的第一ARP请求之前,根据控制器下发的流表规则配置命令,将流表规则执行配置;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
第六方面,提供一种基于SDN的ARP实现装置,包括:
接收单元,用于接收与本装置相邻的第二交换机发送的第一ARP请求;
泛洪单元,用于直接将所述接收单元接收的第一ARP请求泛洪。
结合第六方面,在第六方面的第一种可能的实现方式中,所述泛洪单元具体用于:
向与本装置相邻的、且除本装置之外的交换机,以及与本装置相连的主机发送所述第一ARP请求。
结合第六方面和第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,进一步包括:
配置单元,用于在接收与所述第一交换机相邻的第二交换机发送的第一ARP请求之前,根据控制器下发的流表规则配置命令,将流表规则执行配置;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪,交换机在接收到相连的主机发送的ARP请求时,将所述相连的主机发送的ARP请求向控制器上报。
第七方面,提供一种控制器,包括收发器、处理器、存储器和总线,收发器、处理器、存储器均与总线连接,其中,所述存储器中存储一组程序,所述处理器用于调用所述存储器中存储的程序,使得所述控制器执行如第一方面和第一方面的第一种至第六种可能的实现方式中的任一种所述的方法。
第八方面,提供一种交换机,包括收发器、处理器、存储器和总线,收发器、处理器、存储器均与总线连接,其中,所述存储器中存储一组程序,所述处理器用于调用所述存储器中存储的程序,使得所述交换机执行如第二方面和第二方面的第一种至第二种可能的实现方式中的任一种所述的方法。
第九方面,提供一种交换机,包括收发器、处理器、存储器和总线,收发器、处理器、存储器均与总线连接,其中,所述存储器中存储一组程序,所述处理器用于调用所述存储器中存储的程序,使得所述交换机执行如第三方面和第三方面的第一种至第二种可能的实现方式中的任一种所述的方法。
本发明实施例提供中,控制器在本地存在与第一ARP请求对应的ARP表项时,向目的交换机单播发送该第一ARP请求,若接收到ARP应答,则将该ARP应答单播反馈给第一交换机,以使第一交换机进一步反馈给源主机;若在设定时长内未接收到ARP应答,则在本地删除对应的ARP表项,并通过各交换机之间的消息转发来广播第一ARP请求,以获得第一ARP请求中目的IP地址对应的正确的目的主机的MAC地址,并在本地更新ARP表项,这样可使控制器存储的ARP表及时更新,避免了因控制器存储的ARP表项失效而带来的更为严重的网络错误。
附图说明
图1为现有技术中SDN的基本架构图;
图2为现有技术中流表规则下发的基本流程图;
图3为现有技术中流表匹配和处理流程图;
图4为现有技术中基于ARP实现主机间通信的流程图;
图5为现有技术中ARP实现方法流程图;
图6为本发明实施例中ARP实现系统图;
图7为本发明实施例一中基于SDN的ARP实现方法的流程图;
图8a为本发明实施例二中另一种基于SDN的ARP实现方法的流程图;
图8b为本发明实施例三中另一种基于SDN的ARP实现方法的流程图;
图9为本发明实施例四中第一种场景下ARP实现流程图;
图10为本发明实施例四中第二种场景下ARP实现流程图;
图11为本发明实施例五中基于SDN的ARP实现装置结构图;
图12为本发明实施例六中基于SDN的ARP实现装置结构图;
图13为本发明实施例七中基于SDN的ARP实现装置结构图;
图14为本发明实施例八中控制器的结构图;
图15为本发明实施例九中交换机的结构图;
图16为本发明实施例十中交换机的结构图。
具体实施方式
考虑到SDN网络结构中能够很好的实现生成树协议,避免广播风暴,本发明实施例利用交换机之间的交互消息来完成ARP请求的广播,而取代了现有技术中利用控制器的packet-out事件向全网广播ARP请求的方法,由于减少了控制器packet-out消息的发送,且交换机之间的消息交互比控制器发送packet-out消息占用更少的传输资源,因此降低了控制器广播ARP请求所占用的传输资源,并且避免了控制器负荷较重,成为处理瓶颈的问题。
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例基于SDN的网络结构,利用控制器集中维护全网主机的ARP映射信息,如图6所示,本发明实施例提供的ARP实现系统包括:OF Controller(即控制器)601、OFSwitch(即交换机)602以及主机603。
其中,控制器601连接多个交换机,图6中以连接3个交换机为例进行说明,为交换机S1、交换机S2和交换机S3,分别用602-a、602-b和602-c来表示。每一个交换机连接至少一个主机,图中以每一个交换机连接2个主机为例进行说明。交换机S1连接主机A和主机B;交换机S2连接主机C和主机D;交换机S3连接主机E和主机F,主机A、主机B、主机C、主机D、主机E和主机F,分别用603-a、603-b、603-c、603-d、603-e和603-f来表示。
控制器601为SDN网络架构中的控制面设备,负责根据报文特征确定业务流的转发动作形成对应的流表规则,并将对应的流表规则下发给交换机602;以及,负责集中维护主机603的ARP映射信息。
例如,ARP映射信息可采用ARP映射表的方式统一记录在控制器601,控制器601为每一个主机维护一个ARP表项,ARP表项中记录主机的IP地址与MAC地址的映射关系。
交换机602为SDN网络架构中的用户面设备,用于从控制器601获取并存储流表规则,对于符合存储的流表规则的报文,按照存储的流表规则中记录的转发动作执行对应的动作,从而实现报文的转发处理。
源主机在向目的主机发送报文之前,需要获知目的主机的MAC地址,源主机在本地未缓存目的主机的ARP表项时,向与其相连的交换机发送ARP请求,再由交换机将该ARP请求封装为packet-in消息向控制器601发送,由控制器601决定后续ARP请求的广播。
下面针对本发明实施例基于SDN的ARP实现方法进行详细说明。
在SDN网络中,交换机在接收到无法处理的ARP请求消息时,会生成packet-in消息上报控制器,交换机在接收到无法处理的ARP应答消息时,会生成packet-out消息上报控制器。本发明实施例中,控制器在交换机入网时,预先配置好所有交换机的流表规则。其中,配置的流表规则至少包括:交换机在接收到相邻的交换机发送的ARP请求时,将该相邻的交换机发送的ARP请求泛洪。
配置的流表规则还可包括:交换机在接收到来自非交换机互连端口(例如来自与交换机相连的主机)的ARP请求时,将来自非交换机互连端口的ARP请求上报控制器。
其中,泛洪是指交换机基于生成树协议,将从某个端口收到的数据报文,从除该端口之外的所有其他端口发送出去。即,交换机将接收到的相邻的交换机发送的ARP请求,从除该相邻的交换机对应的端口之外的所有其他端口发送出去。其中,该所有其他端口包括:与交换机相邻的所有其他交换机对应的端口,以及,与交换机相连的所有主机对应的端口。
如图6所示,例如,与交换机S2相邻的为交换机S1、S3,且与交换机S2相连主机为主机C和主机D,当交换机S2接收到交换机S1转发的ARP请求时,S2将ARP请求向除ARP请求的接收端口之外的其他所有端口进行转发,即,S2将ARP请求向除S1之外的S3,以及主机C和主机D,都进行转发。
实施例一
如图7所示,以某一个交换机(假设称为第一交换机)发送ARP请求为例,本发明实施例一中基于SDN的ARP实现方法的流程具体如下:
步骤700:控制器接收第一交换机发送的第一ARP请求,其中,第一ARP请求是与第一交换机相连的主机向第一交换机发送的。
具体地,由于第一交换机接收到的第一ARP请求是与其相连的主机发送的,根据控制器预先针对第一交换机配置的流表规则,第一交换机将该第一ARP请求封装成packet-in消息后上报给控制器。例如,第一交换机可将该第一ARP请求的数据包包含在packet-in消息中,上报给控制器。
控制器将上报第一ARP请求的主机(也可称为源主机)对应的ARP表项在本地进行存储,即,将源主机的IP地址和MAC地址的映射关系在对应的ARP表项中存储。
其中,该第一ARP请求中包含源主机欲进行通信的主机(也可称为目的主机)的IP地址,即,目的IP地址。
步骤710:控制器在确定本地不存在与该第一ARP请求对应的ARP表项时,向第一交换机发送用于指示第一交换机将该第一ARP请求泛洪的第一指令。
其中,第一指令用于指示第一交换机向与第一交换机相邻的交换机,以及与所述第一交换机相连的主机发送第一ARP请求。
本发明实施例一中,控制器集中维护全网主机的ARP映射表项,控制器在接收到第一交换机发送的携带第一ARP请求的packet-in消息之后,对该packet-in消息进行解析,获取第一ARP请求,并检查本地是否存在与该第一ARP请求对应的ARP表项,即,检查本地是否存在目的IP地址对应的目的MAC地址。如果不存在,则控制器向第一交换机单播发送packet-out消息,该packet-out消息用于指示第一交换机将该第一ARP请求泛洪。
具体地,在第一交换机将该第一ARP请求泛洪之后,与第一交换机相邻的交换机接收到第一交换机转发的该第一ARP请求,根据该相邻的交换机预配置的流表规则,该相邻的交换机会继续将该第一ARP请求泛洪。并且,与第一交换机相连的主机接收到第一交换机转发的第一ARP请求,若确定该第一ARP请求中包含的目的IP地址与自身的IP地址匹配,则向第一交换机返回ARP应答,否则,不返回ARP应答。
上述过程中,控制器在确定本地不存在与第一ARP请求对应的ARP表项时,向发送第一ARP请求的第一交换机指示将该第一ARP请求泛洪,通过各交换机预先配置的流表规则,与第一交换机相邻的交换机在会继续将该第一ARP请求泛洪,这样,通过交换机之间的消息转发,可将第一ARP请求在全网中实现广播,由于交换机之间转发第一ARP请求时,无需将第一ARP请求封装为packet-in消息,并且,控制器仅向第一交换机发送packet-out消息,大大减少了packet-out消息的发送,降低了控制器的处理负荷,使得ARP请求广播占用更少的网络传输资源,并且能够提高ARP请求的广播效率。另外,通过预先对交换机流表规则设置,可避免在ARP请求的广播过程中,当某一个交换机接收到相邻的交换机转发的ARP请求时,再次生成packet-in消息重复上报给控制器。
进一步地,主机在接收到第一ARP请求时,都会检查该第一ARP请求是否在询问自己IP地址对应的MAC地址,若某主机(即目的主机)发现该第一ARP请求与自己的IP地址匹配,则会向相连的交换机返回ARP应答(可记为第一ARP应答),该相连的交换机会将该第一ARP应答封装成Packet-in消息后向控制器发送。
当控制器接收到某一个交换机(可能是第一交换机,也可能是其它交换机)返回的携带第一ARP应答的packet-in消息时,将该packet-in消息转为相应的携带第一ARP应答的packet-out消息,并将该packet-out消息单播发送给第一交换机,由第一交换机向发送第一ARP请求的主机(即源主机)反馈,并且,控制器将第一ARP应答中的ARP表项在本地保存。在后续通信过程中,源主机可根据第一ARP应答中的目的主机的MAC地址,向目的主机发送报文。
另外,控制器在接收到第一交换机发送的携带第一ARP请求的packet-in消息之后,检查本地是否存在与该第一ARP请求对应的ARP表项后,若确定存在与该第一ARP请求对应的ARP表项,则根据ARP表项确定目的主机,以及目的主机连接的目的交换机,并向目的交换机发送该第一ARP请求。
具体地,控制器根据本地存储的ARP映射表,确定与该第一ARP请求对应的ARP表项,ARP表项中包含有目的IP地址与目的MAC地址的映射关系,在此种情况下,控制器并不是直接向第一交换机反馈该ARP表项,而是根据该目的MAC地址,通过与目的主机相连的目的交换机,向目的主机转发该第一ARP请求。
控制器通过目的交换机向目的主机转发该第一ARP请求之后,存在以下两种情况。
第一种情况:
若控制器接收到目的交换机返回的第二ARP应答,则向第一交换机转发该第二ARP应答。
其中,接收到目的交换机返回的第二ARP应答,此种情况表明控制器存储的与第一ARP请求对应的ARP表项与目的主机最新的IP地址与MAC地址的信息相匹配,即,目的主机保持原来的IP地址和MAC地址不变。
具体地,控制器接收到目的交换机发送的携带第二ARP应答的packet-in消息,该packet-in消息是目的交换机在接收到目的主机发送的第二ARP应答后,将第二ARP应答进行封装得到的。当控制器接收到携带第二ARP应答的packet-in消息时,将该packet-in消息转为相应的携带第二ARP应答的packet-out消息,并将该packet-out消息单播发送给第一交换机,由第一交换机向发送第一ARP请求的主机反馈。
第二种情况:
若在设定时长内未接收到目的交换机返回的ARP应答,则将本地保存的与第一ARP请求对应的ARP表项删除,以及,向第一交换机发送用于指示第一交换机将第一ARP请求泛洪的第二指令。第二指令用于指示第一交换机向与第一交换机相邻的交换机、以及与第一交换机相连的主机均发送第一ARP请求。
其中,在设定时长内未接收到目的交换机返回的ARP应答,此种情况表明控制器存储的与第一ARP请求对应的ARP表项与目的主机最新的IP地址与MAC地址的信息不匹配,即,目的主机的IP地址已发生改变。控制器本地存储的与第一ARP请求对应的ARP表项失效,则删除对应的ARP表项。
在这种情况下,控制器会继续发起ARP广播,以获得第一ARP请求对应的正确的目的主机及其相连的交换机。
具体地,控制器将packet-out消息单播发送给第一交换机,该packet-out消息指示第一交换机将该第一ARP请求泛洪,即,指示第一交换机将该第一ARP请求向相邻的交换机以及相连的主机转发。其中,相邻的交换机接收该第一ARP请求,根据预配置的流表规则,继续将该第一ARP请求泛洪,并且,与第一交换机相连的主机接收到第一交换机转发的第一ARP请求,若确定该第一ARP请求中包含的目的IP地址与自身IP地址匹配,则向第一交换机返回ARP应答,否则,不返回ARP应答。这样,第一ARP请求通过相邻交换机之间的消息转发,可在全网中实现广播的目的。
控制器在将第一ARP请求广播后,某一个主机(假设为主机C)发现该第一ARP请求中包含的目的IP地址与自身IP地址匹配,则会向相连的第二交换机(假设为交换机S2)返回第三ARP应答,第二交换机会将该第三ARP应答封装成Packet-in消息后向控制器发送。
进一步地,控制器在接收到第二交换机发送的第三ARP应答时,将第二交换机发送的第三ARP应答中包含的ARP表项在本地保存,以及,向第一交换机转发第三ARP应答。
具体地,控制器接收到第二交换机发送的携带第三ARP应答的packet-in消息,该packet-in消息是第二交换机在接收到主机C发送的第三ARP应答后,将第三ARP应答进行封装得到的。当控制器接收到携带第三ARP应答的packet-in消息时,将该packet-in消息转为相应的携带第三ARP应答的packet-out消息,并将该packet-out消息单播发送给第一交换机,由第一交换机向发送第一ARP请求的主机反馈。
上述过程中,控制器在本地存在与第一ARP请求对应的ARP表项时,向目的交换机单播发送该第一ARP请求,若接收到ARP应答,则将该ARP应答单播反馈给第一交换机,以使第一交换机进一步反馈给源主机;若在设定时长内未接收到ARP应答,则在本地删除对应的ARP表项,并通过各交换机之间的消息转发来广播第一ARP请求,以获得第一ARP请求中目的IP地址对应的正确的目的主机的MAC地址,并在本地更新ARP表项,这样可使控制器存储的ARP表及时更新,避免了因控制器存储的ARP表项失效而带来的更为严重的网络错误。
至此,本发明实施例一基于SDN的ARP实现方法介绍完毕。
实施例二
基于同一发明构思,本发明实施例二提供了另一种基于SDN的ARP实现方法,下面仍以第一交换机为例进行介绍,具体流程如图8a所示。
步骤800a:第一交换机接收与第一交换机相连的主机发送的第一ARP请求,将第一ARP请求上报给控制器。
第一交换机预先根据控制器下发的流表规则配置命令,将流表规则执行配置。
其中,流表规则包括:交换机在接收到来自非交换机互连端口(例如来自与交换机相连的主机)的ARP请求时,将来自非交换机互连端口的ARP请求上报控制器。
步骤810a:第一交换机接收控制器根据第一ARP请求下发的用于指示交换机将第一ARP请求泛洪的指令,并按照指令将第一ARP请求泛洪。
具体地,第一交换机按照该指令向与第一交换机相邻的交换机,以及与第一交换机相连的主机发送第一ARP请求。
其中,该指令是控制器在确定本地不存在与ARP请求对应的ARP表项时,向第一交换机单播发送的;或者
该指令是控制器在确定本地存在与ARP请求对应的ARP表项,并将ARP请求单播发送给目的交换机后,经目的交换机发送给目的主机,但未收到目的主机经目的交换机返回的ARP应答时,向第一交换机单播发送的。
具体地,与第一交换机相同,全网所有交换机在入网时,皆预先根据控制器下发的流表规则配置命令,将流表规则执行配置,这样,当与第一交换机相邻的交换机接收到第一交换机转发的ARP请求时,直接将ARP请求继续向除第一交换机之外的其他相邻交换机,以及相连的主机转发,于此,可通过交换机之间的消息转发来实现ARP请求的广播。
进一步地,当该第一ARP请求中包含的目的IP对应的主机接收到与其相连的交换机发送的该第一ARP请求时,向相连的交换机返回ARP应答,相连的交换机将该ARP应答封装为packet-in消息向控制器上报,控制器对ARP应答进行处理,通过packet-out消息单播发送到第一交换机,第一交换机将该ARP应答向发送第一ARP请求的主机反馈,从而使得发送第一ARP请求的主机在后续的通信过程中,可基于该ARP应答中包含的ARP表项向目的主机发送报文。
实施例三
基于同一发明构思,本发明实施例三提供了另一种基于SDN的ARP实现方法,下面仍以第一交换机为例进行介绍,具体流程如图8b所示。
步骤800b:第一交换机接收与第一交换机相邻的第二交换机发送的第一ARP请求。
第一交换机在接收与第一交换机相邻的第二交换机发送的第一ARP请求之前,根据控制器下发的流表规则配置命令,将流表规则执行配置;
其中,流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将相邻的交换机发送的ARP请求泛洪,交换机在接收到相连的主机发送的ARP请求时,将相连的主机发送的ARP请求向控制器上报。
步骤810b:第一交换机直接将第一ARP请求泛洪。
具体地,第一交换机向与第一交换机相邻的、且除第二交换机之外的交换机,以及与第一交换机相连的主机发送第一ARP请求。
下面结合图6以及具体的应用场景对本发明实施例作进一步详细的描述。
实施例四
主机A在与目的主机通信之前,要根据目的IP地址获取目的MAC地址,通过ARP协议来实现。以下实施例四中,主机A与交换机S1相连,主机E与交换机S3相连,交换机S2与交换机S1和交换机S3相邻,交换机S1与交换机S3不相邻。
下面分两种场景对本发明实施例四ARP的实现流程进行详细说明。
第一种场景:控制器本地不存在目的IP地址对应的ARP表项。
参阅图9所示,第一种场景下ARP的实现流程如下。
步骤900:控制器在交换机入网时,预先配置交换机的流表规则。
其中,配置的流表规则包括:交换机在接收到来自非交换机互连端口(例如来自与交换机相连的主机)的ARP请求时,将来自非交换机互连端口的ARP请求上报控制器;交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
步骤901:主机A向相连的交换机S1发送ARP请求。
其中,ARP请求中包含主机A欲进行通信的主机(即目的主机)的IP地址,该IP地址即目的IP地址。
步骤902:交换机S1将ARP请求封装成数据包输入packet-in消息,并上报给控制器。
其中,交换机S1在收到ARP请求时,根据预先配置的流表规则,由于该ARP请求是来自非交换机互连端口的,则将该ARP请求向控制器上报。
步骤903:控制器检查本地ARP缓存表,确定不存在目的IP地址对应的ARP表项,则向交换机S1单播发送数据包输出packet-out消息,指示交换机S1将ARP请求泛洪。
步骤904:交换机S1将ARP请求泛洪的过程中,向相邻的交换机(例如,交换机S2)发送ARP请求。
此外,交换机S1还向相连的主机(例如,主机A和主机B)发送ARP请求。
步骤905:交换机S2将ARP请求泛洪的过程中,向交换机S3发送ARP请求。
具体地,交换机S2在接收到ARP请求时,根据其预配置的流表规则,向除交换机S1之外的其他相邻的交换机(例如,交换机S3),以及相连的主机(例如,主机C或主机D),均发送ARP请求。
步骤906:交换机S3将ARP请求泛洪的过程中,向相连的主机(例如,主机E)发送了ARP请求。
同样,交换机S3在接收到ARP请求时,根据其预配置的流表规则,向除交换机S2之外的其他相邻的交换机,以及相连的主机,均发送ARP请求。
假设目的IP对应的主机,即目的主机为主机E,则执行步骤907。
步骤907:主机E向交换机S3返回ARP应答。
步骤908:交换机S3将ARP应答封装为数据包输入packet-in消息,并发送给控制器。
步骤909:控制器将携带ARP应答数据包输入packet-in消息转为携带ARP应答数据包输出packet-out消息,并将携带ARP应答数据包输出packet-out消息向交换机S1单播发送。
步骤910:交换机S1将携带ARP应答数据包输出packet-out消息解析后,将ARP应答向主机A单播发送。
后续通信过程中,主机A可根据ARP应答中包含的目的MAC地址进行通信。
第二种场景:控制器本地存在目的IP地址对应的ARP表项。
参阅图10所示,第二种场景下ARP的实现流程如下。
步骤1000:控制器在交换机入网时,预先配置交换机的流表规则。
其中,配置的流表规则至少包括:交换机在接收到来自非交换机互连端口(例如来自与交换机相连的主机)的ARP请求时,将来自非交换机互连端口的ARP请求上报控制器;交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
步骤1001:主机A向相连的交换机S1发送ARP请求。
其中,ARP请求中包含主机A欲进行通信的主机(即目的主机)的IP地址,该IP地址即目的IP地址。
步骤1002:交换机S1将ARP请求封装成数据包输入packet-in消息,并上报给控制器。
其中,交换机S1在收到ARP请求时,根据预先配置的流表规则,将该ARP请求向控制器上报。
步骤1003:控制器检查本地ARP缓存表,确定存在目的IP地址对应的ARP表项,则确定目的主机(假设为主机E)相连的目的交换机(即交换机S3),并将ARP请求封装成数据包输出packet-out消息向交换机S3单播发送。
步骤1004:交换机S3将ARP请求单播发送给主机E对应的端口。
主机E在接收到ARP请求后,将ARP请求中的目的IP地址与本地最新的IP地址进行匹配,以下流程根据是否匹配分两种不同的情况,若匹配,则执行步骤1005’~1008’;若不匹配,则执行步骤1005~1012。
步骤1005’:主机E向交换机S3返回ARP应答。
步骤1006’:交换机S3将ARP应答封装为数据包输入packet-in消息向控制器发送。
步骤1007’:控制器将携带ARP应答packet-in消息转为携带ARP应答packet-out消息,并将携带ARP应答packet-out消息向交换机S1单播发送。
步骤1008’:交换机S1将携带ARP应答packet-out消息解析后,将ARP应答向主机A单播发送。
后续过程中,主机A可根据ARP应答中包含的目的MAC地址进行通信。
步骤1005:控制器超过一定时长后,未收到ARP应答,则删除本地存储的与目的IP对应的ARP表项,并执行步骤1006。
步骤1006:控制器向交换机S1单播发送packet-out消息,该packet-out消息指示交换机S1将ARP请求泛洪。
步骤1007~步骤1013与第一种场景中步骤904~步骤910相同,重复之处不再赘述。
实施例五
基于同一发明构思,参阅图11所示,本发明实施例五提供了一种基于SDN的ARP实现装置,包括:
接收单元1101,用于接收第一交换机发送的第一ARP请求,所述第一ARP请求是与所述第一交换机相连的主机向所述第一交换机发送的;
映射单元1102,用于确定本地是否存在与所述接收单元1101接收的第一ARP请求对应的ARP表项;
发送单元1103,用于在映射单元1102确定本地存在所述第一ARP请求对应的ARP表项时,向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第一指令。
结合上述实施例五,在第一种可能的实现方式中,所述第一指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
结合上述实施例五和上述实施例五的第一种可能的实现方式,在第二种可能的实现方式中,进一步包括:
配置单元,用于在所述接收单元1101在接收第一交换机发送的第一ARP请求之前,将预设的流表规则配置给所述第一交换机;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
结合上述实施例五和上述实施例五的第一种至第二种可能的实现方式中的任一种,在第三种可能的实现方式中,接收单元1101进一步用于,在发送单元1103向所述第一交换机发送所述第一指令之后,接收第一ARP应答;
发送单元1103进一步用于,向所述第一交换机转发接收单元1101接收到的第一ARP应答;
映射单元1102进一步用于,将接收单元1101接收到的第一ARP应答中的ARP表项在本地保存。
结合上述实施例五和上述实施例五的第一种至第三种可能的实现方式中的任一种,在第四种可能的实现方式中,映射单元1102进一步用于,若确定本地存在与所述第一ARP请求对应的ARP表项,则基于所述ARP表项确定目的交换机;
发送单元1103进一步用于,向映射单元1102确定的目的交换机发送所述第一ARP请求。
结合上述实施例五的第四种可能的实现方式,在第五种可能的实现方式中,在向所述目的交换机发送所述第一ARP请求之后,若接收单元1101接收到所述目的交换机返回的第二ARP应答,则发送单元1103向所述第一交换机转发所述第二ARP应答;
或,若接收单元1101在设定时长内未接收到所述目的交换机返回的ARP应答,则映射单元1102将本地保存的与所述第一ARP请求对应的ARP表项删除,以及,发送单元1103向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第二指令;
其中,所述第二指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
结合上述实施例五的第五种可能的实现方式,在第六种可能的实现方式中,在发送单元1103向所述第一交换机发送所述第二指令之后,在接收单元1101接收到第二交换机发送的第三ARP应答时,映射单元1102进一步用于,将所述第三ARP应答中包含的ARP表项在本地保存,以及
发送单元1103进一步用于,向所述第一交换机转发所述第三ARP应答。
实施例六
基于同一发明构思,参阅图12所示,本发明实施例六提供了另一种基于SDN的ARP实现装置,包括:
第一接收单元1201,用于接收与本装置相连的主机发送的第一ARP请求;
发送单元1202,用于将第一接收单元1201接收到的第一ARP请求上报给控制器;
第二接收单元1203,用于接收所述控制器根据所述第一ARP请求下发的用于指示本装置将所述第一ARP请求泛洪的指令;
泛洪单元1204,用于按照第二接收单元1203接收到的指令将所述第一ARP请求泛洪。
结合本发明实施例六,在第一种可能的实现方式中,泛洪单元1204具体用于:
按照所述指令向与本装置相邻的交换机,以及与本装置相连的主机发送所述第一ARP请求。
结合本发明实施例六和本发明实施例六的第一种可能的实现方式,在第二种可能的实现方式中,进一步包括:
配置单元1200,用于在第一接收单元1202接收与本装置相连的主机发送的第一ARP请求之前,根据控制器下发的流表规则配置命令,将流表规则执行配置;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
实施例七
基于同一发明构思,参阅图13所示,本发明实施例七提供了另一种基于SDN的ARP实现装置,包括:
接收单元1301,用于接收与本装置相邻的第二交换机发送的第一ARP请求;
泛洪单元1302,用于直接将接收单元1301接收的第一ARP请求泛洪。
结合本发明实施例七,在第一种可能的实现方式中,所述泛洪单元具体用于:
向与本装置相邻的、且除本装置之外的交换机,以及与本装置相连的主机发送所述第一ARP请求。
结合本发明实施例七和本发明实施例七的第一种可能的实现方式,在第二种可能的实现方式中,进一步包括:
配置单元1300,用于在接收与所述第一交换机相邻的第二交换机发送的第一ARP请求之前,根据控制器下发的流表规则配置命令,将流表规则执行配置;
其中,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪,交换机在接收到相连的主机发送的ARP请求时,将所述相连的主机发送的ARP请求向控制器上报。
实施例八
基于同一发明构思,参阅图14所示,本发明实施例八提供了一种控制器1400,包括收发器1401、处理器1402、存储器1403和总线1404,收发器1401、处理器1402、存储器1403均与总线1404连接,其中,存储器1403中存储一组程序,处理器1402用于调用存储器1403中存储的程序,使得控制器1400执行如本发明实施例一所述的方法。
实施例九
基于同一发明构思,参阅图15所示,本发明实施例九提供了一种交换机1500,包括收发器1501、处理器1502、存储器1503和总线1504,收发器1501、处理器1502、存储器1503均与总线1504连接,其中,存储器1503中存储一组程序,处理器1502用于调用存储器1503中存储的程序,使得交换机1500执行如本发明实施例二所述的方法。
实施例十
基于同一发明构思,参阅图16所示,本发明实施例十提供了一种交换机1600,包括收发器1601、处理器1602、存储器1603和总线1604,收发器1601、处理器1602、存储器1603均与总线1604连接,其中,存储器1603中存储一组程序,处理器1602用于调用存储器1603中存储的程序,使得交换机1600执行如本发明实施例三所述的方法。
综上所述,本发明实施例中,控制器接收第一交换机发送的ARP请求,在确定本地不存在与ARP请求对应的ARP表项时,向第一交换机发送用于指示第一交换机将ARP请求泛洪的指令。这样,通过交换机之间的消息转发,可实现ARP请求在全网中广播,由于交换机之间转发消息比控制器向交换机发送packet-out消息占用网络传输资源较少,因此,可大大减少ARP请求广播占用的网络传输资源,并提高ARP请求的广播效率,同时,由于减少了packet-out消息的发送,降低了控制器的处理负荷,避免了控制器负荷较重,成为处理瓶颈的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (23)
1.一种基于软件定义网络SDN的地址解析协议ARP实现方法,其特征在于,包括:
控制器接收第一交换机发送的第一ARP请求,所述第一ARP请求是与所述第一交换机相连的主机向所述第一交换机发送的;
所述控制器在确定本地不存在与所述第一ARP请求对应的ARP表项时,向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第一指令;
其中,在所述控制器接收第一交换机发送的第一ARP请求之前,所述方法还包括:所述控制器将预设的流表规则配置给所述控制器连接的交换机,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
2.如权利要求1所述的方法,其特征在于,所述第一指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
3.如权利要求1或2所述的方法,其特征在于,在向所述第一交换机发送所述第一指令之后,进一步包括:
接收第一ARP应答,向所述第一交换机转发所述第一ARP应答,以及,将所述第一ARP应答中的ARP表项在本地保存。
4.如权利要求1或2所述的方法,其特征在于,进一步包括:
若所述控制器确定本地存在与所述第一ARP请求对应的ARP表项,则基于所述ARP表项确定目的交换机,并向所述目的交换机发送所述第一ARP请求。
5.如权利要求4所述的方法,其特征在于,所述控制器向所述目的交换机发送所述第一ARP请求之后,进一步包括:
若接收到所述目的交换机返回的第二ARP应答,则向所述第一交换机转发所述第二ARP应答;
或,若在设定时长内未接收到所述目的交换机返回的ARP应答,则将本地保存的与所述第一ARP请求对应的ARP表项删除,并向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第二指令;
其中,所述第二指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
6.如权利要求5所述的方法,其特征在于,在向所述第一交换机发送所述第二指令之后,进一步包括:
在接收到第二交换机发送的第三ARP应答时,将所述第三ARP应答中包含的ARP表项在本地保存,以及
向所述第一交换机转发所述第三ARP应答。
7.一种基于SDN的ARP实现方法,其特征在于,包括:
第一交换机接收与所述第一交换机相连的主机发送的第一ARP请求;
所述第一交换机将所述第一ARP请求上报给控制器;
所述第一交换机接收所述控制器根据所述第一ARP请求下发的用于指示所述第一交换机将所述第一ARP请求泛洪的指令;
所述第一交换机按照所述指令将所述第一ARP请求泛洪;
其中,在所述第一交换机接收与所述第一交换机相连的主机发送的第一ARP请求之前,所述方法进一步包括:
所述第一交换机根据控制器下发的流表规则配置命令,将流表规则执行配置,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
8.如权利要求7所述的方法,其特征在于,所述第一交换机按照所述指令将所述第一ARP请求泛洪,具体包括:
所述第一交换机按照所述指令向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机发送所述第一ARP请求。
9.一种基于SDN的ARP实现方法,其特征在于,包括:
第一交换机接收与所述第一交换机相邻的第二交换机发送的第一ARP请求;
所述第一交换机直接将所述第一ARP请求泛洪;
其中,在所述第一交换机接收与所述第一交换机相邻的第二交换机发送的第一ARP请求之前,所述方法进一步包括:所述第一交换机根据控制器下发的流表规则配置命令,将流表规则执行配置;所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪,交换机在接收到相连的主机发送的ARP请求时,将所述相连的主机发送的ARP请求向控制器上报。
10.如权利要求9所述的方法,其特征在于,所述第一交换机直接将所述第一ARP请求泛洪,具体包括:
所述第一交换机向与所述第一交换机相邻的、且除所述第二交换机之外的交换机,以及与所述第一交换机相连的主机发送所述第一ARP请求。
11.一种基于SDN的ARP实现装置,其特征在于,包括:
接收单元,用于接收第一交换机发送的第一ARP请求,所述第一ARP请求是与所述第一交换机相连的主机向所述第一交换机发送的;
映射单元,用于确定本地是否存在与所述接收单元接收的第一ARP请求对应的ARP表项;
发送单元,用于在所述映射单元确定本地不存在所述第一ARP请求对应的ARP表项时,向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第一指令;
其中,所述装置还包括:配置单元,用于在所述接收单元接收第一交换机发送的第一ARP请求之前,将预设的流表规则配置给所述装置连接的交换机,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
12.如权利要求11所述的装置,其特征在于,所述第一指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
13.如权利要求11或12所述的装置,其特征在于,所述接收单元进一步用于,在所述发送单元向所述第一交换机发送所述第一指令之后,接收第一ARP应答;
所述发送单元进一步用于,向所述第一交换机转发所述接收单元接收到的第一ARP应答;
所述映射单元进一步用于,将所述接收单元接收到的第一ARP应答中的ARP表项在本地保存。
14.如权利要求11或12所述的装置,其特征在于,所述映射单元进一步用于,若确定本地存在与所述第一ARP请求对应的ARP表项,则基于所述ARP表项确定目的交换机;
所述发送单元进一步用于,向所述映射单元确定的目的交换机发送所述第一ARP请求。
15.如权利要求14所述的装置,其特征在于,在向所述目的交换机发送所述第一ARP请求之后,若所述接收单元接收到所述目的交换机返回的第二ARP应答,则所述发送单元向所述第一交换机转发所述第二ARP应答;
或,若所述接收单元在设定时长内未接收到所述目的交换机返回的ARP应答,则所述映射单元将本地保存的与所述第一ARP请求对应的ARP表项删除,以及,所述发送单元向所述第一交换机发送用于指示所述第一交换机将所述第一ARP请求泛洪的第二指令;
其中,所述第二指令用于指示所述第一交换机向与所述第一交换机相邻的交换机,以及与所述第一交换机相连的主机均发送所述第一ARP请求。
16.如权利要求15所述的装置,其特征在于,在所述发送单元向所述第一交换机发送所述第二指令之后,在所述接收单元接收到第二交换机发送的第三ARP应答时,所述映射单元进一步用于,将所述第三ARP应答中包含的ARP表项在本地保存,以及
所述发送单元进一步用于,向所述第一交换机转发所述第三ARP应答。
17.一种基于SDN的ARP实现装置,其特征在于,包括:
第一接收单元,用于接收与本装置相连的主机发送的第一ARP请求;
发送单元,用于将所述第一接收单元接收到的第一ARP请求上报给控制器;
第二接收单元,用于接收所述控制器根据所述第一ARP请求下发的用于指示本装置将所述第一ARP请求泛洪的指令;
泛洪单元,用于按照所述第二接收单元接收到的指令将所述第一ARP请求泛洪;
其中,所述装置还包括:配置单元,用于在所述第一接收单元接收与本装置相连的主机发送的第一ARP请求之前,根据控制器下发的流表规则配置命令,将流表规则执行配置,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪。
18.如权利要求17所述的装置,其特征在于,所述泛洪单元具体用于:
按照所述指令向与本装置相邻的交换机,以及与本装置相连的主机发送所述第一ARP请求。
19.一种基于SDN的ARP实现装置,其特征在于,包括:
接收单元,用于接收与本装置相邻的第二交换机发送的第一ARP请求;
泛洪单元,用于直接将所述接收单元接收的第一ARP请求泛洪;
其中,所述装置还包括:配置单元,用于在接收与本装置相邻的第二交换机发送的第一ARP请求之前,根据控制器下发的流表规则配置命令,将流表规则执行配置,所述流表规则包括:交换机在接收到相邻的交换机发送的ARP请求时,将所述相邻的交换机发送的ARP请求泛洪,交换机在接收到相连的主机发送的ARP请求时,将所述相连的主机发送的ARP请求向控制器上报。
20.如权利要求19所述的装置,其特征在于,所述泛洪单元具体用于:
向与本装置相邻的、且除本装置之外的交换机,以及与本装置相连的主机发送所述第一ARP请求。
21.一种控制器,其特征在于,包括收发器、处理器、存储器和总线,收发器、处理器、存储器均与总线连接,其中,所述存储器中存储一组程序,所述处理器用于调用所述存储器中存储的程序,使得所述控制器执行如权利要求1-6任一项所述的方法。
22.一种交换机,其特征在于,包括收发器、处理器、存储器和总线,收发器、处理器、存储器均与总线连接,其中,所述存储器中存储一组程序,所述处理器用于调用所述存储器中存储的程序,使得所述交换机执行如权利要求7或8任一项所述的方法。
23.一种交换机,其特征在于,包括收发器、处理器、存储器和总线,收发器、处理器、存储器均与总线连接,其中,所述存储器中存储一组程序,所述处理器用于调用所述存储器中存储的程序,使得所述交换机执行如权利要求9或10任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/085215 WO2017015839A1 (zh) | 2015-07-27 | 2015-07-27 | 一种基于sdn的arp实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108028801A CN108028801A (zh) | 2018-05-11 |
CN108028801B true CN108028801B (zh) | 2021-02-23 |
Family
ID=57885691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580026726.5A Active CN108028801B (zh) | 2015-07-27 | 2015-07-27 | 一种基于sdn的arp实现方法及装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10652142B2 (zh) |
EP (2) | EP3313031B1 (zh) |
JP (1) | JP6627964B2 (zh) |
KR (1) | KR102025680B1 (zh) |
CN (1) | CN108028801B (zh) |
WO (1) | WO2017015839A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547293B (zh) * | 2016-06-29 | 2020-09-08 | 新华三技术有限公司 | 一种流路径探测方法和装置 |
CN107666428B (zh) * | 2016-07-28 | 2020-03-06 | 新华三技术有限公司 | 静默设备探测方法以及装置 |
EP3504865A1 (en) * | 2016-08-24 | 2019-07-03 | British Telecommunications public limited company | Data network address sharing |
CN108632122B (zh) * | 2017-03-20 | 2022-01-07 | 中兴通讯股份有限公司 | 一种实现双控制平面的方法、装置 |
CN114760249B (zh) * | 2021-01-08 | 2023-08-04 | 大唐移动通信设备有限公司 | 一种基于sdn网络的数据处理方法和装置及设备 |
CN113382008B (zh) * | 2021-06-16 | 2022-03-25 | 桂林电子科技大学 | 一种sdn下arp协议的泛洪抑制方法 |
US11716305B2 (en) | 2021-06-29 | 2023-08-01 | Cisco Technology, Inc. | Control embedded data packet for efficient ARP query in SDA environment |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938794A (zh) * | 2012-11-14 | 2013-02-20 | 华为技术有限公司 | 地址解析协议arp消息转发方法、交换机和控制器 |
WO2013052564A2 (en) * | 2011-10-04 | 2013-04-11 | Big Switch Networks, Inc. | System and methods for managing network hardware address requests with a controller |
CN103460653A (zh) * | 2011-03-31 | 2013-12-18 | 日本电气株式会社 | 计算机系统和通信方法 |
CN103812779A (zh) * | 2012-11-08 | 2014-05-21 | 华为技术有限公司 | 拓扑分级方法、装置及洪泛的处理方法、装置 |
WO2014115157A1 (en) * | 2013-01-24 | 2014-07-31 | Hewlett-Packard Development Comany, L.P. | Address resolution in software-defined networks |
WO2015085576A1 (zh) * | 2013-12-13 | 2015-06-18 | 华为技术有限公司 | 地址解析协议消息的处理方法和转发器、控制器 |
WO2015100656A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 一种实现虚拟机通信的方法和装置 |
JP2015133556A (ja) * | 2014-01-10 | 2015-07-23 | 富士通株式会社 | 制御装置および転送制御方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US142160A (en) * | 1873-08-26 | Improvement in check-runners | ||
KR20150030099A (ko) * | 2013-09-11 | 2015-03-19 | 한국전자통신연구원 | 주소 결정 시스템 및 방법 |
US9264362B2 (en) * | 2013-10-17 | 2016-02-16 | Cisco Technology, Inc. | Proxy address resolution protocol on a controller device |
-
2015
- 2015-07-27 EP EP15899191.9A patent/EP3313031B1/en active Active
- 2015-07-27 KR KR1020187003345A patent/KR102025680B1/ko active IP Right Grant
- 2015-07-27 EP EP19191621.2A patent/EP3633934A1/en not_active Withdrawn
- 2015-07-27 CN CN201580026726.5A patent/CN108028801B/zh active Active
- 2015-07-27 JP JP2018504226A patent/JP6627964B2/ja not_active Expired - Fee Related
- 2015-07-27 WO PCT/CN2015/085215 patent/WO2017015839A1/zh unknown
-
2018
- 2018-01-17 US US15/873,895 patent/US10652142B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103460653A (zh) * | 2011-03-31 | 2013-12-18 | 日本电气株式会社 | 计算机系统和通信方法 |
WO2013052564A2 (en) * | 2011-10-04 | 2013-04-11 | Big Switch Networks, Inc. | System and methods for managing network hardware address requests with a controller |
CN103812779A (zh) * | 2012-11-08 | 2014-05-21 | 华为技术有限公司 | 拓扑分级方法、装置及洪泛的处理方法、装置 |
CN102938794A (zh) * | 2012-11-14 | 2013-02-20 | 华为技术有限公司 | 地址解析协议arp消息转发方法、交换机和控制器 |
WO2014115157A1 (en) * | 2013-01-24 | 2014-07-31 | Hewlett-Packard Development Comany, L.P. | Address resolution in software-defined networks |
WO2015085576A1 (zh) * | 2013-12-13 | 2015-06-18 | 华为技术有限公司 | 地址解析协议消息的处理方法和转发器、控制器 |
WO2015100656A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 一种实现虚拟机通信的方法和装置 |
JP2015133556A (ja) * | 2014-01-10 | 2015-07-23 | 富士通株式会社 | 制御装置および転送制御方法 |
Non-Patent Citations (1)
Title |
---|
"Minimizing ARP traffic in the AMS-IX switching platform using OpenFlow";Victor Boteanu,等;《https://arno.uva.nl/cgi/arno/show.cgi?fid=496629》;20130825;1-29 * |
Also Published As
Publication number | Publication date |
---|---|
EP3313031A4 (en) | 2018-07-11 |
US20180167313A1 (en) | 2018-06-14 |
US10652142B2 (en) | 2020-05-12 |
KR20180025944A (ko) | 2018-03-09 |
EP3313031B1 (en) | 2019-09-25 |
EP3633934A1 (en) | 2020-04-08 |
EP3313031A1 (en) | 2018-04-25 |
JP2018521599A (ja) | 2018-08-02 |
WO2017015839A1 (zh) | 2017-02-02 |
JP6627964B2 (ja) | 2020-01-08 |
KR102025680B1 (ko) | 2019-09-26 |
CN108028801A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108028801B (zh) | 一种基于sdn的arp实现方法及装置 | |
US10778464B2 (en) | NSH encapsulation for traffic steering establishing a tunnel between virtual extensible local area network (VxLAN) tunnel end points (VTEPS) using a NSH encapsulation header comprising a VxLAN header whose VNI field has been replaced by an NSH shim | |
CN113364610B (zh) | 网络设备的管理方法、装置及系统 | |
US20190068544A1 (en) | Communications Method and Apparatus for Virtual Extensible Local Area Network | |
EP2945320B1 (en) | Method, device and routing system for data transmission of network virtualization | |
EP3934183B1 (en) | Service function chain sfc-based communication methods, and apparatuses | |
CN108964940B (zh) | 消息发送方法及装置、存储介质 | |
US20190238949A1 (en) | Multicast service providing method and software defined networking controller | |
CN104954281A (zh) | 通信方法、系统、资源池管理系统、交换机和控制装置 | |
WO2014087591A1 (ja) | 通信システム、制御装置、通信制御方法、転送制御方法及び転送制御プログラム | |
CN104253698B (zh) | 报文组播的处理方法和设备 | |
WO2021143279A1 (zh) | 段路由业务处理方法和装置、路由设备及存储介质 | |
CN109547350B (zh) | 一种路由学习方法及网关设备 | |
EP3503484B1 (en) | Message transmission methods and devices | |
US8902891B2 (en) | Method of managing broadcasts and multicasts by a network device | |
EP3258654B1 (en) | Method and system for reducing pim protocol dr change | |
CN101686265B (zh) | 网络设备、网络系统以及建立数据通讯的方法 | |
CN114006780A (zh) | 报文转发的方法、设备以及系统 | |
CN104052671B (zh) | Trill网络中的组播转发表项的处理方法及路由桥 | |
CN111385215B (zh) | 传输报文的方法和装置 | |
WO2015143599A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |