本发明涉及通信技术领域,尤其涉及地址解析协议(ARP,Address Resolution Protocol)消息的处理方法和控制器、转发器。
背景技术:
Openflow协议是软件定义网络(SDN,Software-Defined Network)中的一种典型的技术。Openflow协议中的网元包括:控制器(Openflow Controller,OF Controller)和转发器(Openflow Switch,OF Switch)。其中,控制器负责根据报文特征,确定该业务流的转发动作,并将对应的流规则下发给转发器;转发器获取并存储该流规则,对于后续符合该流规则的报文,执行对应的动作,从而实现报文的转发或处理;所述流规则包括:流匹配信息和对应执行的处理动作集。转发器将所有流匹配信息及动作集存储并安装到相应的流表中,当用户报文到来时,转发器执行流表匹配,并根据流匹配信息的匹配结果执行对应的动作,对用户报文进行处理。
ARP是一个链路层协议,在网络设备间实现IP地址和介质访问控制地址(MAC,Medium Access Control)的对应,通过发送携带有目标IP地址的ARP请求消息,来获得携带有目的MAC地址的地址解析协议响应消息,以此使网络设备获得通信对端的MAC地址。
但是现有技术中,基于Openflow模型的转发器为二层交换机设备(Switch),二层交换机不具有处理ARP消息的能力,从而导致转发器无法和与之连接的外部设备进行基于ARP机制的交互。
技术实现要素:
本发明实施例提供ARP处理方法和控制器、转发器,以解决现有技术中基于Openflow模型的转发器无法处理ARP消息的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
第一方面,本发明提供了一种地址解析协议消息的处理方法,包括:
转发器接收控制器发来的对应ARP消息的流规则;
转发器根据接收到的流规则构造ARP消息,并发送ARP消息;
其中,流规则中包括:对应ARP消息的匹配规则和对应ARP消息的动作集。
在第一方面的第一种可能的实现方式中,所述流规则包括ARP响应流规则,在该ARP响应流规则中:
所述对应ARP的匹配规则包括如下信息:消息类型为ARP消息;以及,请求地址为转发器端口绑定的IP地址;
所述对应ARP的动作集包括:构造ARP响应消息,且所述ARP响应消息的介质访问控制MAC地址为接收到的ARP请求消息所请求的IP地址对应的MAC地址;
相应的,所述转发器根据接收到的流规则构造ARP消息,并发送ARP消息具体包括:
所述转发器接收到外部设备发来的ARP请求消息;将该ARP请求消息携带的信息与ARP响应流规则中的匹配规则进行匹配,如果匹配成功,则根据ARP响应流规则中的动作集,构造ARP响应消息,在该ARP响应消息中填写接收到的ARP请求消息所请求的IP地址对应的MAC地址;然后通过ARP请求报文的入端口转发ARP响应消息。
在第一方面的第二种可能的实现方式中,所述流规则包括第一ARP请求流规则,该第一ARP请求流规则中,所述对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为预设IP地址;
所述对应ARP的动作集包括:构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为预设IP地址;转发端口号为设定转发端口号或者所有转发端口号;
相应的,所述转发器根据接收到的流规则构造ARP消息,并发送ARP消息具体包括:
所述转发器接收到用户报文,检测到缺少报文的目标IP地址对应的MAC地址,则将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第一ARP请求流规则中的动作集,构造第一ARP请求消息,其中第一ARP请求消息中的目标IP地址为所述预设IP地址,并通过设定转发端口或者所有转发端口发送该第一ARP请求消息。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一ARP请求流规则中,所述对应ARP的匹配规则还包括如下信息:掩码为第一掩码值;
相应的,所述将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配具体包括:
判断用户报文是否为IP报文,如果是,则判断用户报文中的目标IP地址与第一掩码值进行预订运算后的结果是否与所述预设IP地址与第一掩码值进行预订运算后的结果相同,如果相同,则认为匹配成功。
结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述流规则包括第二ARP请求流规则,在该第二ARP请求流规则中:
所述对应ARP的匹配规则包括如下信息:报文类型为缺少IP地址对应的MAC地址;所述对应ARP的动作集包括:转发给控制器;
相应的,在所述将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配,并且,匹配失败后,进一步包括:
所述转发器将接收到的用户报文的信息与第二ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第二ARP请求流规则中的动作集,将用户报文转发给控制器;并接收控制器下发的第三ARP请求流规则,根据该第三ARP请求流规则构造第二ARP请求消息,并发送该第二ARP请求消息, 其中,在该第三ARP请求流规则中:
所述对应ARP的匹配规则包括如下信息:匹配原因值为缺少第一IP地址对应的MAC地址;报文类型为IP报文;目标IP地址为所述第一IP地址;
所述对应ARP的动作集包括:构造第二ARP请求消息,其中第二ARP请求消息中的目标IP为所述第一IP地址;转发端口号为设定转发端口号或者所有转发端口号。
结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述发送ARP请求消息之后,进一步包括:
所述转发器接收外部设备发来的ARP响应消息,根据该ARP响应消息构建ARP封装流规则;接收用户报文所在连接上的数据报文,将该数据报文的信息与ARP封装流规则中的匹配规则进行匹配,如果匹配成功,则根据ARP封装流规则中的动作集,将ARP响应消息的目标MAC地址封装在该数据报文中,然后发送封装的数据报文;其中,所述ARP封装流规则中,对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为所述用户报文中的目标IP地址;
对应ARP的动作集包括:封装报文的目的MAC地址;目的MAC地址为ARP响应消息的目标MAC地址;转发报文;转发端口号为ARP响应消息的入端口号。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述转发器接收控制器发来的对应ARP消息的流规则,具体包括:
所述转发器接收控制器发来的携带流规则的一条Openflow消息,其中,所述一条Openflow消息中携带多条流规则。
第二方面,本发明提供了一种转发器,包括:
接收单元,用于接收控制器发来的对应ARP消息的流规则,并发送给ARP处理单元;
ARP处理单元,用于根据接收到的流规则构造ARP消息,并发送ARP消息;其中,所述流规则中包括:对应ARP消息的匹配规则和对应ARP消息的动作集。
在第二方面的第一种可能的实现方式中,所述ARP处理单元包括第一处理子单元,其中,
所述接收单元,进一步用于接收外部设备发来的ARP请求消息;将该ARP请求消息发送给第一处理子单元;
第一处理子单元,用于解析出接收到的流规则中包括ARP响应流规则;在接收到ARP请求消息后,将该ARP请求消息中携带的信息与ARP响应流规则中的匹配规则进行匹配,如果匹配成功,则根据ARP响应流规则中的动作集,构造ARP响应消息,在该ARP响应消息中填写接收到的ARP请求消息所请求的IP地址对应的MAC地址;然后通过ARP请求报文的入端口转发ARP响应消息;
其中,所述ARP响应流规则中,所述对应ARP的匹配规则包括如下信息:消息类型为ARP消息;以及,请求地址为转发器端口绑定的IP地址;所述对应ARP的动作集包括:构造ARP响应消息,且所述ARP响应消息的介质访问控制MAC地址为接收到的ARP请求消息所请求的IP地址对应的MAC地址;以及,转发ARP响应消息,且转发端口号为ARP请求报文的入端口号。
在第二方面的第二种可能的实现方式中,所述ARP处理单元包括第二处理子单元,其中,
所述接收单元,进一步用于接收用户报文,并转发给所述第二处理子单元;
所述第二处理子单元,用于解析出接收到的流规则中包括第一ARP请求流规则;在接收到用户报文后,检测到缺少报文的目标IP地址对应的MAC地址,则将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹 配,如果匹配成功,则根据第一ARP请求流规则中的动作集,构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为所述预设IP地址,并通过设定转发端口或者所有转发端口发送该第一ARP请求消息;
其中,所述第一ARP请求流规则中,所述对应ARP的匹配规则包括如下信息:报文类型为IP报文,以及目标IP地址为预设IP地址;所述对应ARP的动作集包括:构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为预设IP地址;以及转发端口号为设定转发端口号或者所有转发端口号。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第一ARP请求流规则中,所述对应ARP的匹配规则还包括如下信息:掩码为第一掩码值;
相应的,所述将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配具体包括:
判断用户报文是否为IP报文,如果是,则判断用户报文中的目标IP地址与第一掩码值进行预订运算后的结果是否与所述预设IP地址与第一掩码值进行预订运算后的结果相同,如果相同,则认为匹配成功。
结合第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第二处理子单元,进一步用于解析出所述流规则中包括第二ARP请求流规则,在根据用户报文匹配所述第一ARP请求流规则中的匹配规则,并且,匹配失败后,进一步将接收到的用户报文的信息与第二ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第二ARP请求流规则中的动作集,将用户报文转发给控制器;并接收控制器下发的包含所述用户报文中目标IP地址的第三ARP请求流规则,根据该第三ARP请求流规则构造第二ARP请求消息,并发送该第二ARP请求消息;
其中,所述第二ARP请求流规则中,所述对应ARP的匹配规则包括如下信息:报文类型为缺少IP地址对应的MAC地址;所述对应ARP的动作集包 括:转发给控制器。
结合第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式或第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,还包括:构造单元,其中,
接收单元,还用于接收外部设备发来的ARP响应消息,发送给构造单元;以及接收用户报文所在连接上的数据报文,发送给所述第二处理子单元;
构造单元,用于根据接收到的ARP响应消息构建ARP封装流规则;
所述第二处理子单元,还用于将接收到的数据报文的信息与构造单元所构造的ARP封装流规则中的匹配规则进行匹配,匹配成功后,根据ARP封装流规则中的动作集,将ARP响应消息的目标MAC地址封装在该数据报文中,然后发送封装的数据报文;其中,所述ARP封装流规则中,对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为所述用户报文中的目标IP地址;
对应ARP的动作集包括:
封装报文的目的MAC地址;目的MAC地址为ARP响应消息的目标MAC地址;转发报文;转发端口号为ARP响应消息的入端口号。
第三方面,本发明提供了一种控制器,包括:
创建单元,用于创建对应ARP的流规则,将该流规则输出至发送单元;其中,所述流规则中包括:对应ARP的匹配规则和对应ARP的动作集;
发送单元,用于将接收到的流规则发送给转发器。
在第三方面的第一种可能的实现方式中,所述创建单元,具体用于创建ARP响应流规则,该ARP响应流规则中:
所述对应ARP的匹配规则包括如下信息:消息类型为ARP消息;以及,请求地址为转发器端口绑定的IP地址;
所述对应ARP的动作集包括:构造ARP响应消息,且所述ARP响应消息的介质访问控制MAC地址为接收到的ARP请求消息所请求的IP地址对应的MAC地址;以及,转发ARP响应消息,且转发端口号为ARP请求报文的入端口号。
在第三方面的第二种可能的实现方式中,所述创建单元,具体用于创建第一ARP请求流规则,该第一ARP请求流规则中:
所述对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为预设IP地址;
所述对应ARP的动作集包括:构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为预设IP地址;转发端口号为设定转发端口号或者所有转发端口号。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述创建单元,还用于创建第二ARP请求流规则,该第二ARP请求流规则中:
所述对应ARP的匹配规则包括如下信息:报文类型为缺少IP地址对应的MAC地址;
所述对应ARP的动作集包括:转发给控制器。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述创建单元,还用于接收转发器根据所述第二ARP请求流规则发来的流表请求,创建第三ARP请求流规则,该第三ARP请求流规则中:
所述对应ARP的匹配规则包括如下信息:匹配原因值为缺少第一IP地址对应的MAC地址;报文类型为IP报文;目标IP地址为所述第一IP地址;
所述对应ARP的动作集包括:构造第二ARP请求消息,其中第二ARP请求消息中的目标IP为所述第一IP地址;转发端口号为设定转发端口号或者所有转发端口号。
本发明提出的ARP消息处理方法和控制器、转发器,能够由转发器接收控制器发来的对应ARP消息的流规则,该流规则中包括对应ARP消息的匹配规则和对应ARP消息的动作集,转发器根据接收到的流规则构造ARP消息, 并发送ARP消息,实现了与外部设备基于ARP机制的交互。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一中为实现ARP消息的处理转发器所执行的处理流程图;
图2是本发明实施例1-1中为实现ARP响应消息的处理转发器所执行的处理流程图;
图3是本发明实施例1-2中针对流规则2实现ARP请求消息的处理转发器所执行的处理流程图;
图4是本发明实施例1-3中针对流规则2~4实现ARP请求消息的处理转发器所执行的处理流程图;
图5是本发明实施例二中为实现ARP消息的处理控制器所执行的处理流程图;
图6是本发明实施例三中控制器和转发器配合实现ARP响应消息的一种处理流程图;
图7是本发明实施例四中控制器和转发器配合实现ARP响应消息的另一种处理流程图;
图8是本发明实施例五中针对流规则2控制器和转发器配合实现ARP请求消息的处理流程图;
图9是本发明实施例六中针对流规则2~4控制器和转发器配合实现ARP请求消息的处理流程图;
图10是本发明实施例七中控制器的一种结构示意图;
图11是本发明实施例七中控制器的另一种结构示意图;
图12是本发明实施例八中转发器的一种结构示意图;
图13是本发明实施例八中转发器的另一种结构示意图;
图14是本发明实施例九中转发器的一种结构示意图;
图15是本发明实施例十中控制器的一种结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
本实施例提出了一种在转发器侧实现ARP消息的处理方法,参见图1,该方法包括:
步骤101:转发器接收控制器发来的对应ARP消息的流规则,其中,每一个流规则中包括:对应ARP消息的匹配规则和对应ARP消息的动作集。
步骤102:转发器根据接收到的流规则构造ARP消息,并发送ARP消息。
本发明实施例提出的ARP消息处理方法,能够由转发器接收控制器发来的对应ARP消息的流规则,该流规则中包括对应ARP消息的匹配规则和对应ARP消息的动作集,转发器根据接收到的流规则构造ARP消息,并发送ARP消息,实现了与外部设备基于ARP机制的交互。
针对转发器接收控制器发来的不同的流规则,转发器会分别执行对应的处理过程,为便于描述,下面分为4个实施例来分别详细说明。
实施例1-1:
本实施例说明当转发器接收的流规则包括下述的流规则1即ARP响应流规则时,转发器的处理。
流规则1:ARP响应流规则。
在该ARP响应流规则中,对应ARP的匹配规则包括如下信息:消息类型为ARP消息;以及,请求地址为转发器端口绑定的IP地址。
对应ARP的动作集包括:构造ARP响应消息,且ARP响应消息的介质访问控制MAC地址为接收到的ARP请求消息所请求的IP地址对应的MAC地址。其中,可选地,ARP响应消息的介质访问控制MAC地址填写为接收到的ARP请求消息所请求的IP地址对应的MAC地址。对应ARP的动作集并不限于上述的内容,比如,在一个可行的实施例中,对应ARP的动作集还可以包括:转发ARP响应消息,且转发端口号为ARP请求报文的入端口号。
该ARP响应流规则用于指示转发器如何处理ARP响应消息,以便在外部设备将转发器作为ARP请求消息的目的接收方时,该转发器能够构造ARP响应消息,从而将自身的MAC地址发送给外部设备。
步骤102具体包括:
转发器接收到外部设备发来的ARP请求消息;将该ARP请求消息携带的信息与ARP响应流规则中的匹配规则进行匹配,如果匹配成功,则根据ARP响应流规则中的动作集,构造ARP响应消息,在该ARP响应消息中填写接收到的ARP请求消息所请求的IP地址对应的MAC地址;然后通过ARP请求报文的入端口转发ARP响应消息。
参见图2,该转发器的处理包括:
步骤201:转发器接收到控制器下发的流规则1即ARP响应流规则。
步骤202:转发器接收到外部设备发来的ARP请求消息。
步骤203:转发器将该ARP请求消息携带的信息与ARP响应流规则中的匹配规则进行匹配,如果匹配成功,执行步骤204,如果匹配失败,结束当前流程。
步骤204:转发器根据ARP响应流规则中的动作集,构造ARP响应消息,在该ARP响应消息中填写接收到的ARP请求消息所请求的IP地址对应的MAC地址;然后通过ARP请求报文的入端口转发ARP响应消息。
通过本发明实施例提供的一种地址解析协议消息的处理方法,能够处理外部设备发来的ARP请求消息,根据ARP响应流规则构建ARP响应消息,将该ARP响应消息发送给外部设备,实现与外部设备基于ARP机制的交互。
实施例1-2:
本实施例说明当转发器接收的流规则包括下述流规则2即第一ARP请求流规则时,转发器的处理。
流规则2:第一ARP请求流规则。
该第一ARP请求流规则中,对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为预设IP地址。其中,该对应ARP的匹配规则并不限于上述信息,可选地,该对应ARP的匹配规则还包括如下信息:掩码为掩码值。
对应ARP的动作集包括:构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为预设IP地址;转发端口号为设定转发端口号或者所有转发端口号。
可选地,在该第一ARP请求流规则中,对应ARP的匹配规则中还可以进一步包括:匹配原因值为缺少IP地址对应的MAC地址。
该第一ARP请求流规则用于在转发器需要向外部设备发送ARP请求消息,从而得到外部设备的MAC地址时,指示转发器构造ARP请求消息。
步骤102具体包括:
转发器接收到用户报文,检测到缺少报文的目标IP地址对应的MAC地址,则将该用户报文的信息与该第一ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第一ARP请求流规则中的动作集,构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为该预设IP地址,并通过设定转发端口或者所有转发端口发送该第一ARP请求消息。
参见图3,该转发器的处理包括:
步骤301:转发器接收到控制器下发的流规则2即第一ARP请求流规则。
步骤302:转发器接收到外部设备发来的用户报文。
步骤303:转发器检测到该用户报文缺少报文的目标IP地址对应的MAC地址。
步骤304:转发器将该用户报文的信息与第一ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则执行步骤305,如果匹配失败,结束当前流程。
可选的,在本步骤中,当该第一ARP请求流规则中:对应ARP的匹配规则还包括如下信息:掩码为第一掩码值时,转发器将该用户报文的信息与第一ARP请求流规则中的匹配规则进行匹配,具体包括:判断用户报文是否为IP报文,如果是,则判断用户报文中的目标IP地址与第一掩码值进行预订运算后的结果是否与匹配规则中的预设IP地址与第一掩码值进行预订运算后的结果相同,如果相同,则认为匹配成功。
步骤305:转发器根据第一ARP请求流规则中的动作集,构造ARP请求消息,其中ARP请求消息中的目标IP地址为匹配规则中的预设IP地址,并通过设定转发端口或者所有转发端口发送该ARP请求消息。
通过本发明实施例提供的一种地址解析协议消息的处理方法,能够处理外部设备发来的用户报文,根据第一ARP请求流规则构建ARP请求消息,将该ARP请求消息发送给外部设备,实现与外部设备基于ARP机制的交互。
实施例1-3:
本实施例说明当转发器接收的流规则同时包括流规则2即第一ARP请求流规则、流规则3即第二ARP请求流规则时,转发器的处理。
流规则3:第二ARP请求流规则。
在该第二ARP请求流规则中,对应ARP的匹配规则包括如下信息:报文类型为缺少IP地址对应的MAC地址;对应ARP的动作集包括:转发给控制器。
流规则4:第三ARP请求流规则。
在该第三ARP请求流规则中,对应ARP的匹配规则包括如下信息:匹配 原因值为缺少第一IP地址对应的MAC地址;报文类型为IP报文;目标IP地址为该第一IP地址。对应ARP的动作集包括:构造第二ARP请求消息,其中第二ARP请求消息中的目标IP为该第一IP地址;转发端口号为设定转发端口号或者所有转发端口号。
则在上述实施例中,在将该用户报文的信息与第一ARP请求流规则中的匹配规则进行匹配,并且,匹配失败后,进一步包括:
转发器将接收到的用户报文的信息与第二ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第二ARP请求流规则中的动作集,将用户报文转发给控制器;并接收控制器下发的第三ARP请求流规则,根据该第三ARP请求流规则构造第二ARP请求消息,并发送该第二ARP请求消息。
参见图4,该转发器处理包括:
步骤401:转发器接收到控制器下发的第一ARP请求流规则和第二ARP请求流规则。
本步骤中,对于第一ARP请求流规则的具体描述与上述实施例1-2中对该流规则的描述完全相同。
步骤402:转发器接收到外部设备发来的用户报文。
步骤403:转发器检测到该用户报文缺少报文的目的IP对应的MAC地址。
步骤404:转发器将该用户报文的信息与第一ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则执行步骤405,如果匹配失败,执行步骤406。
步骤405:转发器根据第一ARP请求流规则中的动作集,构造ARP请求消息,其中ARP消息中的目标IP地址为预设IP地址,并通过设定转发端口或者所有转发端口发送该ARP请求消息,结束当前流程。
步骤406:转发器将接收到的用户报文的信息与第二ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第二ARP请求流规则中的动作集,将用户报文转发给控制器。
其中,转发器根据第二ARP请求流规则向控制器发送流表请求,该请求 中携带当前需请求的目标IP地址,以使控制器查找到与流表请求中携带的当前需请求的目标IP地址对应的MAC地址后,创建第三ARP请求流规则,然后发送给转发器,以保证转发器能够构造所需的ARP请求消息。
步骤407:转发器接收控制器下发的第三ARP请求流规则,根据该第三ARP请求流规则构造ARP请求消息,并发送该ARP请求消息。
可选的,在上述实施例1-2和实施例1-3中,在转发器发送了ARP请求消息之后,还可以进一步由转发器创建ARP封装流规则,以保证转发器后续接收到相同连接上的数据报文后,能够根据该ARP封装流规则直接在数据报文中封装对应的MAC地址,具体实现包括:
转发器接收外部设备发来的ARP响应消息,根据该ARP响应消息构建ARP封装流规则;接收用户报文所在连接上的数据报文,将该数据报文的信息与ARP封装流规则中的匹配规则进行匹配,如果匹配成功后,则根据ARP封装流规则中的动作集,将ARP响应消息的目标MAC地址封装在该数据报文中,然后发送封装的数据报文;其中,
转发器创建的ARP封装流规则中,对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为所述用户报文中的目标IP地址;其中,该对应ARP的匹配规则并不限于上述信息,可选地,该对应ARP的匹配规则还包括如下信息:掩码为掩码值。
对应ARP的动作集包括:封装报文的目的MAC地址;目的MAC地址为ARP响应消息的目标MAC地址;转发报文;转发端口号为ARP响应消息的入端口号。
通过本发明实施例提供的一种地址解析协议消息的处理方法,能够处理外部设备发来的用户报文,在根据该用户报文的信息与第一ARP请求流规则中的匹配规则匹配不成功的情况下,可以与第二ARP请求流规则中的匹配规则进行匹配,将该用户报文发送给控制器,根据控制器下发的第三ARP请求流规则构造ARP请求消息,将该ARP请求消息发送给外部设备,实现与外部设 备基于ARP机制的交互。
需要说明的是:本发明实施例一中的所有转发端口号为特定的端口号标识,用于指代该转发器的所有端口。转发器接收控制器发来的对应ARP消息的流规则,具体包括:转发器接收控制器发来的携带流规则的一条Openflow消息,其中,该一条Openflow消息中携带多条流规则;或者,转发器接收控制器发来的携带流规则的多条Openflow消息,其中,该多条Openflow消息中携带多条流规则。控制器在一条Openflow消息中携带多条流规则可以节省网络资源。
实施例二:
本实施例提出了一种在控制器侧实现ARP消息的处理方法,参见图5,该方法包括:
步骤501:控制器创建对应ARP的流规则;其中,每一个流规则中包括:对应ARP的匹配规则和对应ARP的动作集。
步骤502:控制器将创建的流规则发送给转发器。
上述图5所示流程中,由于创建的每一个流规则中包括对应ARP的匹配规则和对应ARP的动作集,这样,则可以保证后续转发器根据相应的匹配规则匹配成功后,按照相应的动作集执行处理,则可以完成对ARP消息的处理。
在上述步骤501中,控制器可以根据ARP的特点,创建对应于各种ARP消息处理的流规则,比如可以创建在上述实施例一的任意一个或多个流规则。该流规则包括:流规则1:ARP响应流规则、流规则2:第一ARP请求流规则、流规则3:第二ARP请求流规则、流规则4:第三ARP请求流规则。
当然,为了保证控制器能够创建上述流规则1,控制器需要预先获取转发器的各种信息,以便创建流规则中的匹配规则和动作集。因此,在本实施例二的一种实现方式中,在上述步骤501之前,进一步包括:步骤500、控制器获取转发器的的转发器端口、端口的IP地址和MAC地址的对应关系。
该步骤500有多种实现方式,比如:
方式一、控制器根据预先的静态配置或者从第三方设备处,直接获取转发器的转发器端口、端口的IP地址和MAC地址的对应关系;
方式二、控制器根据预先的静态配置或者从第三方设备处,获取第一信息,该第一信息包括:转发器标识,转发器端口标识及对应的端口IP地址;并且,接收所述转发器上报的第二信息,该第二信息包括:所述转发器端口标识及对应的MAC地址;根据所述第一信息和第二信息,获取所述转发器标识,转发器端口标识、端口的IP地址和MAC地址的对应关系。
可选的,当控制器创建的流规则包括该流规则4即第三ARP请求流规则时,在上述图5所示流程中,在步骤502之后,还会包括如下步骤:步骤503:控制器接收转发器根据第二ARP请求流规则发来的流表请求,该请求中携带当前需请求的目标IP地址;步骤504:控制器如果查找到与流表请求中携带的当前需请求的目标IP地址对应的MAC地址,则创建上述第三ARP请求流规则,然后发送给转发器,以保证转发器能够构造所需的ARP请求消息。
通过本发明实施例提供的一种ARP消息的处理方法,能够由控制器根据ARP消息的特点,构建流规则,所构建的流规则中包括对应ARP的匹配规则和对应ARP的动作集,以使转化器实现与外部设备基于ARP机制的交互。
需要说明的是,本发明实施例二中的所有转发端口号为特定的端口号标识,用于指代该转发器的所有端口。在上述步骤501中,如果控制器创建了多条流规则,那么在上述步骤502中,控制器可以将创建的多条流规则携带在一条Openflow消息中发送给转发器;或者,控制器也可以将创建的所述多条流规分别携带在多条Openflow消息中发送给转发器。通过这种方法可以节省网络资源。
为了更加便于理解控制器和转发器配合执行的完成业务过程,下面再分4个实施例,描述控制器和转发器的配合过程。
实施例三:
本实施例针对上述流规则1即ARP响应流规则,描述控制器和转发器的 完整配合过程,以实现由转发器构建并发送ARP响应消息。
另外,本实施例采用的是上述实施例二中描述的步骤500的方式二来实现。参见图6,控制器和转发器的配合过程包括以下步骤:
步骤601:控制器获取转发器端口和IP地址的对应关系。
这里,控制器可以通过预先的静态配置获取转发器端口和IP地址的对应关系,也可以从第三方系统比如外置网关或运维系统处获取转发器端口和IP地址的对应关系。
本步骤中,控制器可以保存如下信息:
[转发器标识转发器端口号IP地址]
上述转发器标识用来标识转发器,上述转发器端口号用来标识转发器端口,上述转发器标识可以为转发器ID号或者转发器名称,或控制器可识别转发器的任何标志。
步骤602:控制器获取转发器端口和MAC地址的对应关系。
这里,可选地,转发器端口和MAC地址的对应关系可以由转发器上报给控制器。
本步骤中,控制器可以保存如下信息:
[转发器标识转发器端口号MAC地址]
上述转发器标识用来标识转发器,上述转发器端口号用来标识转发器端口,上述转发器标识可以为转发器ID号或者转发器名称,或控制器可识别转发器的任何标志。
步骤603:控制器获取转发器端口和IP地址、MAC地址的对应关系。
本步骤中,控制器可以保存如下信息:
[转发器标识转发器端口号IP地址MAC地址]
控制器通过转发器标识和转发器端口标识,获取转发器端口和IP地址、MAC地址的对应关系
上述转发器标识用来标识转发器,上述转发器端口号用来标识转发器端 口,上述转发器标识可以为转发器ID号或者转发器名称,或控制器可识别转发器的任何标志。
步骤604:控制器构建流规则1即ARP响应流规则,并向转发器下发该流规则。
该ARP响应流规则用于后续指示转发器如何处理ARP响应消息,以便在外部设备将转发器作为ARP请求消息的目的接收方时,该转发器能够构造ARP响应消息,从而将自身的MAC地址发送给外部设备。
具体的,在该ARP响应流规则中:
对应ARP的匹配规则包括但不限于:1)ARP消息类型;2)请求地址为转发器端口绑定的IP地址;
对应ARP的动作集包括但不限于:1)构造ARP响应消息,且消息的MAC地址填写为接收到的ARP请求消息所请求的IP地址对应的MAC地址;2)转发ARP响应消息,且转发端口号为ARP请求报文的入端口号。
该ARP响应流规则的一种描述实现方法如下:
<流规则安装消息>:={流匹配规则,<流表处理动作>},
流表匹配规则如下:
OXM_OF_ETH_TYPE=0x0806
OXM_OF_ARP_THA=转发器端口绑定的IP地址
对应的动作集如下:
OFPAT_CONSTRUCT_ARP=XXXX(构造ARP消息,消息中的目标MAC地址填写ARP请求消息中请求的IP地址对应的Mac地址)
OFPAT_OUTPUT=XXXX(包含的端口号为ARP请求报文的入端口号)
本步骤604中,在向转发器下发该流规则1时,在转发器具有多个端口的场景下,针对每一个端口,均创建一个对应该端口的流规则1,控制器可以向转发器下发多个上述流规则1,多个规则可以在一条Openflow消息中发送,也可以在多条Openflow消息中发送。
步骤605:转发器接收并安装ARP响应流规则。
步骤606:转发器接收到外部设备发送的ARP请求消息,用以请求转发器端口的MAC地址。
步骤607:转发器将该ARP请求消息携带的信息与ARP响应流规则中的匹配规则进行匹配,匹配成功后,根据ARP响应流规则中的动作集,构造ARP响应消息,在该ARP响应消息中填写接收到的ARP请求消息所请求的IP地址对应的MAC地址。
这里,ARP请求消息时ARP消息类型,并且,请求的地址就是转发器端口绑定的IP地址,因此,在与ARP响应流规则中对应ARP的匹配规则进行匹配后,能够匹配成功。
步骤608:转发器根据ARP响应流规则中的动作集,通过ARP请求报文的入端口号将ARP响应消息发送给外部设备。
通过本发明实施例提供的一种地址解析协议消息的处理方法,能够处理外部设备发来的ARP请求消息,根据ARP响应流规则构建ARP响应消息,将该ARP响应消息发送给外部设备,实现与外部设备基于ARP机制的交互。
实施例四:
本实施例仍然针对上述流规则1即ARP响应流规则,描述控制器和转发器的完整配合过程,以实现由转发器构建并发送ARP响应消息。
与上述实施例三的区别是:本实施例采用的是上述实施例二中描述的步骤500的方式一来实现。参见图7,控制器和转发器的配合过程包括以下步骤:
步骤701:控制器根据预先的静态配置或者从第三方设备处,直接获取转发器的转发器端口、端口的IP地址和MAC地址的对应关系。
这里,第三方系统可以是外置网关或运维系统。
本步骤中,控制器中可以保存如下信息:
[转发器标识转发器端口号IP地址MAC地址]
上述配置文件中的转发器标识用来标识转发器,上述转发器端口号用来标 识转发器端口,上述配置文件中的转发器标识可以为ID号或者转发器名称,或控制器可识别转发器的任何标志。
步骤702~步骤706与上述步骤604~步骤608的所有描述均相同。
实施例五:
本实施例针对上述流规则2即第一ARP请求流规则,描述控制器和转发器的完整配合过程,以实现由转发器构建并发送ARP请求消息。参见图8,该过程包括以下步骤:
步骤801:控制器通知转发器,缺少IP地址对应的MAC地址的状态下,匹配构造ARP流表。
本步骤为可选步骤。可以由控制器通过一条通知消息来通知转发器。
当然,本步骤也可以被替换为:转发器进行默认配置,在缺少IP地址对应的MAC地址的状态下,匹配构造ARP流表。
步骤802:控制器创建第一ARP请求流规则,并向转发器下发该流规则。
这里,第一ARP请求流规则中:
匹配规则包括:1)匹配原因值为缺少IP地址对应的MAC地址;2)报文类型为IP报文;3)目标IP地址为预设IP地址;4)掩码为第一掩码值,比如为XXXX;其中,1)项为可选项。
动作集包括:1)构造ARP请求消息,其中ARP请求消息中的目标IP为预设IP地址;2)转发端口号为设定转发端口号或者所有转发端口号。
在上述动作集2)中,转发端口号为特定转发端口号时,可以根据路由协议确定该特定转发端口号;转发端口号为所有转发端口号时,是以洪范Flood方式发送消息。
步骤803:转发器接收并安装第一ARP请求流规则。
步骤804:转发器接收到用户报文,转发器检测到缺少报文的目标IP地址对应的MAC地址,利用该用户报文的信息匹配第一ARP请求流规则中的匹配规则,匹配成功后,则根据第一ARP请求流规则中的动作集,构造ARP请求 消息,其中消息中的目标IP为匹配规则中的预设IP地址,然后执行步骤805,如果匹配失败,结束当前流程。
可选的,本步骤中,匹配成功,即:匹配原因为缺少IP地址对应的MAC地址(可选);报文类型为IP报文;报文的目标IP地址与上述第一ARP请求流规则中包含的第一掩码值进行设定运算的结果为第一ARP请求流规则中包含的目标IP与第一掩码值进行设定运算的结果。
步骤805:转发器根据第一ARP请求流规则中的动作集,通过设定转发端口或者所有转发端口发送该ARP请求消息。
步骤806:转发器接收外部设备发来的ARP响应消息。
步骤807:转发器根据步骤801的指示,根据接收到的ARP响应消息构造创建ARP封装流规则。
这里,ARP封装流规则用于保证转发器接收到相同连接上的后续数据报文后,能够根据该ARP封装流规则直接在数据报文中封装已经获取的对应的MAC地址,而无需每次都发送ARP请求消息来获取外部设备的MAC地址。
转发器创建的ARP封装流规则中:
对应ARP的匹配规则包括:1)报文类型为IP报文;2)目标IP地址为所述用户报文中的目标IP地址;3)掩码为第三掩码值;其中,3)项为可选项;
对应ARP的动作集包括:1)封装报文的目的MAC地址;2)目的MAC地址为ARP响应消息的目标MAC地址;3)转发报文;4)转发端口号为ARP响应消息的入端口号。
上述ARP封装流的一种描述实现方法如下:
<流规则安装消息>:={流匹配规则,<流表处理动作>},
流表匹配规则如下:
OXM_OF_ETH_TYPE=0x0800
OXM_OF_ENCAP_MAC=ARP响应消息的目标MAC地址
对应的动作集如下:
OFPAT_OUTPUT=XXXX(包含的端口号为ARP响应消息的入端口号)
步骤808:后续数据报文到达转发器,转发器匹配ARP封装流规则中的匹配规则,如果匹配成功,则执行ARP封装流规则中的动作集,将接收到的ARP响应消息的目标MAC地址封装为该数据报文的MAC地址,从ARP响应消息的入端口转发该数据报文。
实施例六:
本实施例针对上述流规则2~4即三种ARP请求流规则,描述控制器和转发器的完整配合过程,以实现由转发器构建并发送ARP请求消息。参见图9,该过程包括以下步骤:
步骤901~步骤902与步骤801~步骤802的所有描述均相同。
步骤903:控制器创建第二ARP请求流规则,并下发给转发器。
该第二ARP请求流规则用于在后续转发器无法从第一ARP请求流规则中匹配到对应的匹配规则,从而无法构造ARP请求消息时,指示转发器向控制器请求新的ARP请求流规则。
具体地,在该第二ARP请求流规则中:
对应ARP的匹配规则包括:1)报文类型为缺少IP地址对应的MAC地址;
对应ARP的动作集包括:1)转发给控制器。
步骤904:转发器接收并安装第一ARP请求流规则和第二ARP请求流规则。
步骤905:转发器接收到外部设备发来的用户报文,检测到该用户报文缺少报文的目的IP对应的MAC地址。
步骤906:转发器利用该用户报文的信息匹配第一ARP请求流规则中的匹配规则,如果匹配成功,则执行步骤907,如果匹配失败,执行步骤908。
第一ARP请求流规则中,对应ARP的匹配规则包括但不限于:1)报文类型为IP报文;2)目标IP地址为预设IP地址;3)掩码为第一掩码值;其中,3)项为可选项;
对应ARP的动作集包括但不限于:1)构造ARP请求消息,其中消息中的目标IP为预设IP地址;2)转发端口号为设定转发端口号或者所有转发端口号。
如果匹配成功第一ARP请求流规则中的匹配规则,则按照相应动作集进行处理。
步骤907:转发器根据第一ARP请求流规则中的动作集,构造ARP请求消息,其中消息中的目标IP为所述预设IP地址,并通过设定转发端口或者所有转发端口发送该ARP请求消息,执行步骤912。
步骤908:转发器根据接收到的用户报文的信息与第二ARP请求流规则中的匹配规则进行匹配,匹配成功后,根据第二ARP请求流规则中的动作集,将用户报文转发给控制器。
这里,第二ARP请求流规则中:
对应ARP的匹配规则包括:1)报文类型为缺少IP地址对应的MAC地址;对应ARP的动作集包括:1)转发给控制器。
步骤909:控制器接收转发器根据第二ARP请求流规则发来的用户报文,分析出该请求中携带的当前需请求的目标IP地址。
步骤910:控制器如果查找到与当前需请求的目标IP地址对应的MAC地址,则创建第三ARP请求流规则,然后发送给转发器。
步骤911:转发器接收控制器下发的第三ARP请求流规则,根据该第三ARP请求流规则构造ARP请求消息,并发送该ARP请求消息。
步骤912~步骤914与步骤806~步骤808的所有描述均相同。
通过本发明实施例提供的一种地址解析协议消息的处理方法,能够处理外部设备发来的用户报文,在根据该用户报文的信息与第一ARP请求流规则中的匹配规则匹配不成功的情况下,可以与第二ARP请求流规则中的匹配规则进行匹配,将该用户报文发送给控制器,根据控制器下发的第三ARP请求流 规则构造ARP请求消息,将该ARP请求消息发送给外部设备,实现与外部设备基于ARP机制的交互。
实施例七:
本实施例提供一种控制器,参见图10,包括:
创建单元1001,用于创建对应ARP的流规则,将该流规则输出至发送单元1002;其中,所述流规则中包括:对应ARP的匹配规则和对应ARP的动作集;
发送单元1002,用于将接收到的流规则发送给转发器。
创建单元1001,具体用于创建ARP响应流规则。
可选的,创建单元1001,具体用于创建第一ARP请求流规则。
上述创建子单元1001,进一步用于在创建了第一ARP请求流规则之后,创建第二ARP请求流规则。
可选的,创建单元1001,还用于接收转发器根据所述第二ARP请求流规则发来的流表请求,创建第三ARP请求流规则;
其中,ARP响应流规则,第一ARP请求流规则,第二ARP请求流规则,第三ARP请求流规则参见方法实施例。
本发明实施例提供的一种控制器能够创建流规则,并将流规则发送给转发器。
参见图11,在本发明实施例的一个实现方式中,控制器还可以进一步包括:信息获取单元1000,用于获取转发器的转发器端口、端口的IP地址和MAC地址的对应关系,将该对应关系信息发送给创建单元1001。
在本发明实施例的又两个实现方式中,发送单元1002包括:
第一发送子单元,用于接收所述创建单元1001发来的多条流规则,将该多条流规则携带在一条Openflow消息中发送给转发器;或者,
第二发送子单元,用于接收所述创建单元1001发来的多条流规则,将该多条流规则分别携带在多条Openflow消息中发送给转发器。
上述设备内的各单元、子单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提供的一种控制器能够创建流规则,将该多条流规则携带在一条Openflow消息中发送给转发器,可以节省网络资源。
实施例八:
本实施例提出了一种转发器,参见图12,包括:
接收单元1201,用于接收控制器发来的对应ARP消息的流规则,并发送给ARP处理单元1202;
ARP处理单元1202,用于根据接收到的流规则构造ARP消息,并发送ARP消息;其中,该流规则中包括:对应ARP消息的匹配规则和对应ARP消息的动作集。
可选的,ARP处理单元1202中可以包括第一处理子单元,其中,接收单元1201,进一步用于接收外部设备发来的ARP请求消息;将该ARP请求消息发送给第一处理子单元;
第一处理子单元,用于解析出接收到的流规则中包括ARP响应流规则,该ARP响应流规则中,对应ARP的匹配规则包括如下信息:消息类型为ARP消息;以及,请求地址为转发器端口绑定的IP地址;对应ARP的动作集包括:构造ARP响应消息,且该ARP响应消息的介质访问控制MAC地址为接收到的ARP请求消息所请求的IP地址对应的MAC地址;以及,转发ARP响应消息,且转发端口号为ARP请求报文的入端口号;接收到ARP请求消息后,将该ARP请求消息中携带的信息与ARP响应流规则中的匹配规则进行匹配,如果匹配成功,则根据ARP响应流规则中的动作集,构造ARP响应消息,在该ARP响应消息中填写接收到的ARP请求消息所请求的IP地址对应的MAC地址;然后通过ARP请求报文的入端口号转发ARP响应消息。
ARP处理单元1202中还可以包括第二处理子单元,其中,
接收单元1201,进一步用于接收用户报文,并转发给第二处理子单元;
第二处理子单元,用于解析出接收到的流规则中包括第一ARP请求流规则,该第一ARP请求流规则中:对应ARP的匹配规则包括:如下信息:报文类型为IP报文;目标IP地址为预设IP地址;对应ARP的动作集包括:构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为预设IP地址;转发端口号为设定转发端口号或者所有转发端口号;在接收到用户报文后,检测到缺少报文的目标IP地址对应的MAC地址,则将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第一ARP请求流规则中的动作集,构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为所述预设IP地址,并通过设定转发端口或者所有转发端口发送该第一ARP请求消息。
上述第一ARP请求流规则中,对应ARP的匹配规则还包括如下信息:掩码为第一掩码值;
相应的,将该用户报文的信息与第一ARP请求流规则中的匹配规则进行匹配具体包括:
判断用户报文是否为IP报文,如果是,则判断用户报文中的目标IP地址与第一掩码值进行预订运算后的结果是否与所述预设IP地址与第一掩码值进行预订运算后的结果相同,如果相同,则认为匹配成功。
可选地,第二处理子单元,还用于解析出所述流规则中包括第二ARP请求流规则,该第二ARP请求流规则中:对应ARP的匹配规则包括如下信息:报文类型为缺少IP地址对应的MAC地址;对应ARP的动作集包括:转发给控制器;在根据用户报文匹配所述第一ARP请求流规则中的匹配规则,并且,匹配失败后,进一步将接收到的用户报文的信息与第二ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第二ARP请求流规则中的动作集,将用户报文转发给控制器;并接收控制器下发的包含所述用户报文中目标IP地址的第三ARP请求流规则,根据该第三ARP请求流规则构造第二ARP请 求消息,并发送该第二ARP请求消息。
本发明实施例提出的一种转发器,能够接收控制器发来的对应ARP消息的流规则,该流规则中包括对应ARP消息的匹配规则和对应ARP消息的动作集,转发器根据接收到的流规则构造ARP消息,并发送ARP消息,实现了与外部设备基于ARP机制的交互。
参见图13,在本实施例的转发器的一个较佳实现中,转发器还可以包括:构造单元1203,其中,
接收单元1201,还用于接收外部设备发来的ARP响应消息,发送给构造单元1203;以及接收用户报文所在连接上的数据报文,发送给第二处理子单元;
构造单元1203,用于根据接收到的ARP响应消息构建ARP封装流规则;
第二处理子单元,还用于将接收到的数据报文的信息与构造单元1203所构造的ARP封装流规则中的匹配规则进行匹配,匹配成功后,根据ARP封装流规则中的动作集,将ARP响应消息的目标MAC地址封装在该数据报文中,然后发送封装的数据报文;其中,ARP封装流规则参见方法实施例。
上述设备内的各单元、子单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
实施例九:
本实施例提出了一种转发器,参见图14,采用通用计算机系统结构,计算机系统可具体是基于处理器的计算机。如图14所示,所述转发器包括至少一个处理器1401,通信总线1402,存储器1403以及至少一个通信接口1404。
处理器1401可以是一个CPU,微处理器,特定应用集成电路ASIC,或一个或多个用于控制本发明方案程序执行的集成电路。
其中,所述通信总线1402可包括一通路,在上述组件之间传送信息。所述通信接口1404,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,RAN,WLAN等。
计算机系统包括一个或多个存储器,可以是只读存储器ROM或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器EEPROM、只读光盘CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。这些存储器通过总线与处理器相连接。
其中,存储器1403用于存储执行本发明方案的应用程序代码,执行本发明方案的应用程序代码保存在存储器中,并由处理器1401来控制执行。所述处理器1401用于执行所述存储器1403中存储的应用程序。
在一种可能的实施方式中,当上述应用程序被处理器1401执行时,实现如下功能:
转发器接收控制器发来的对应ARP消息的流规则;
转发器根据接收到的流规则构造ARP消息,并发送ARP消息;
其中,流规则中包括:对应ARP消息的匹配规则和对应ARP消息的动作集。
可选的,所述流规则包括ARP响应流规则,在该ARP响应流规则中:
所述对应ARP的匹配规则包括如下信息:消息类型为ARP消息;以及,请求地址为转发器端口绑定的IP地址;
所述对应ARP的动作集包括:构造ARP响应消息,且所述ARP响应消息的介质访问控制MAC地址为接收到的ARP请求消息所请求的IP地址对应的MAC地址;
可选的,所述转发器根据接收到的流规则构造ARP消息,并发送ARP消息包括:
所述转发器接收到外部设备发来的ARP请求消息;将该ARP请求消息携 带的信息与ARP响应流规则中的匹配规则进行匹配,如果匹配成功,则根据ARP响应流规则中的动作集,构造ARP响应消息,在该ARP响应消息中填写接收到的ARP请求消息所请求的IP地址对应的MAC地址;然后通过ARP请求报文的入端口转发ARP响应消息。
可选地,所述流规则包括第一ARP请求流规则,该第一ARP请求流规则中,所述对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为预设IP地址;
所述对应ARP的动作集包括:构造第一ARP请求消息,其中第一ARP请求消息中的目标IP为预设IP地址;转发端口号为设定转发端口号或者所有转发端口号;
可选的,所述转发器根据接收到的流规则构造ARP消息,并发送ARP消息包括:
所述转发器接收到用户报文,检测到缺少报文的目标IP地址对应的MAC地址,则将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第一ARP请求流规则中的动作集,构造第一ARP请求消息,其中第一ARP请求消息中的目标IP地址为所述预设IP地址,并通过设定转发端口或者所有转发端口发送该第一ARP请求消息。
可选地,所述第一ARP请求流规则中,所述对应ARP的匹配规则还包括如下信息:掩码为第一掩码值;
可选的,所述将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配具体包括:
判断用户报文是否为IP报文,如果是,则判断用户报文中的目标IP地址与第一掩码值进行预订运算后的结果是否与所述预设IP地址与第一掩码值进行预订运算后的结果相同,如果相同,则认为匹配成功。
可选地,所述流规则包括第二ARP请求流规则,在该第二ARP请求流规则中:
所述对应ARP的匹配规则包括如下信息:报文类型为缺少IP地址对应的MAC地址;所述对应ARP的动作集包括:转发给控制器;
在所述将该用户报文的信息与所述第一ARP请求流规则中的匹配规则进行匹配,并且,匹配失败后,进一步包括:
所述转发器将接收到的用户报文的信息与第二ARP请求流规则中的匹配规则进行匹配,如果匹配成功,则根据第二ARP请求流规则中的动作集,将用户报文转发给控制器;并接收控制器下发的第三ARP请求流规则,根据该第三ARP请求流规则构造第二ARP请求消息,并发送该第二ARP请求消息,其中,在该第三ARP请求流规则中:
所述对应ARP的匹配规则包括如下信息:匹配原因值为缺少第一IP地址对应的MAC地址;报文类型为IP报文;目标IP地址为所述第一IP地址;
所述对应ARP的动作集包括:构造第二ARP请求消息,其中第二ARP请求消息中的目标IP为所述第一IP地址;转发端口号为设定转发端口号或者所有转发端口号。
可选地,在所述发送ARP请求消息之后,进一步包括:
所述转发器接收外部设备发来的ARP响应消息,根据该ARP响应消息构建ARP封装流规则;接收用户报文所在连接上的数据报文,将该数据报文的信息与ARP封装流规则中的匹配规则进行匹配,如果匹配成功,则根据ARP封装流规则中的动作集,将ARP响应消息的目标MAC地址封装在该数据报文中,然后发送封装的数据报文;其中,所述ARP封装流规则中,对应ARP的匹配规则包括如下信息:报文类型为IP报文;目标IP地址为所述用户报文中的目标IP地址;
对应ARP的动作集包括:封装报文的目的MAC地址;目的MAC地址为ARP响应消息的目标MAC地址;转发报文;转发端口号为ARP响应消息的入端口号。
可选地,所述转发器接收控制器发来的对应ARP消息的流规则,具体包 括:
所述转发器接收控制器发来的携带流规则的一条Openflow消息,其中,所述一条Openflow消息中携带多条流规则。
本实施例中,应用程序被处理器执行时,转发器与其他设备的交互方法可以参考上述方法实施例。这里不再详细描述。
本实施例提供的一种转发器接收控制器发来的对应ARP消息的流规则,该流规则中包括对应ARP消息的匹配规则和对应ARP消息的动作集,转发器根据接收到的流规则构造ARP消息,并发送ARP消息,实现了与外部设备基于ARP机制的交互。
实施例十
本实施例提出了一种控制器,参见图15,采用通用计算机系统结构,计算机系统可具体是基于处理器的计算机。如图15所示,所述控制器包括至少一个处理器1501,通信总线1502,存储器1503以及至少一个通信接口1504。
处理器1501可以是一个CPU,微处理器,特定应用集成电路ASIC,或一个或多个用于控制本发明方案程序执行的集成电路。
其中,所述通信总线1502可包括一通路,在上述组件之间传送信息。所述通信接口1504,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,RAN,WLAN等。
计算机系统包括一个或多个存储器,可以是只读存储器ROM或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器EEPROM、只读光盘CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。这些存储器通过总线与处理器相连接。
其中,存储器1503用于存储执行本发明方案的应用程序代码,执行本发明方案的应用程序代码保存在存储器中,并由处理器1501来控制执行。所述处理器1501用于执行所述存储器1503中存储的应用程序。
在一种可能的实施方式中,当上述应用程序被处理器1401执行时,实现如下功能:
控制器创建对应ARP的流规则;其中,每一个流规则中包括:对应ARP的匹配规则和对应ARP的动作集。
控制器将创建的流规则发送给转发器。
可选地,所述流规则包括ARP响应流规则,第一ARP请求流规则,第二ARP请求流规则,
可选地,在控制器创建对应ARP的流规则之前,进一步包括:控制器获取转发器的转发器端口、端口的IP地址和MAC地址的对应关系。
可选地,控制器获取转发器的转发器端口、端口的IP地址和MAC地址的对应关系,包括:
方式一、控制器根据预先的静态配置或者从第三方设备处,直接获取转发器的转发器端口、端口的IP地址和MAC地址的对应关系;
方式二、控制器根据预先的静态配置或者从第三方设备处,获取第一信息,该第一信息包括:转发器标识,转发器端口标识及对应的端口IP地址;并且,接收所述转发器上报的第二信息,该第二信息包括:转发器端口标识及对应的MAC地址;根据所述第一信息和第二信息,获取所述转发器标识,转发器端口标识、端口的IP地址和MAC地址的对应关系。
可选的,当控制器创建的流规则包括该流规则4即第三ARP请求流规则时,在控制器将创建的流规则发送给转发器之后,还会包括:控制器接收转发器根据第二ARP请求流规则发来的流表请求,该请求中携带当前需请求的目标IP地址;控制器如果查找到与流表请求中携带的当前需请求的目标IP地址对应的MAC地址,则创建上述第三ARP请求流规则,然后发送给转发器,以 保证转发器能够构造所需的ARP请求消息。
本发明实施例提供的一种控制器能够创建流规则,并将流规则发送给转发器。
实施例十一
本实施例提出了一种SDN系统,包括实施例七中任意一种结构和功能的控制器以及实施例八中任意一种结构和功能的转发器。
上述设备内的各单元、子单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提出的ARP消息处理方法和控制器、转发器至少具有如下有益效果:
1、本发明实施例提出的ARP消息处理方法和控制器、转发器,能够由转发器接收控制器发来的对应ARP消息的流规则,该流规则中包括对应ARP消息的匹配规则和对应ARP消息的动作集,转发器根据接收到的流规则构造ARP消息,并发送ARP消息,实现了与外部设备基于ARP机制的交互。
2、本发明实施例可以基于Openflow现有流表匹配处理机制实现,不需要转发器增加额外的机制实现ARP处理的能力,因此,对转发器的改动最小,更易于实现。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计 算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。