一种软件定义网络控制器及其恢复主机信息的方法
【技术领域】
[0001]本发明涉及网络通信技术领域,特别涉及一种软件定义网络控制器及其恢复主机信息的方法。
【背景技术】
[0002]SDN (Software Defined Network,软件定义网络)是一种新型网络创新架构,其核心思想是将网络设备的控制层面与转发层面分离,以实现对网络流量的灵活控制,为核心网络及应用的创新提供良好的平台。
[0003]在SDN网络中,目前控制器和交换机之间的标准协议为Openflow协议。控制器搜集网络拓扑信息、学习主机信息、计算转发路径,然后通过Openflow协议将指导业务流量转发的流表下发到转发路径中的各个交换机上。
[0004]SDN控制器(Controller)通过LLDP(Link Layer Discovery Protocol,链路层发现协议)报文获取到网络拓扑,通过主机发送的数据报文学习到各主机信息;SDN控制器获取到网络拓扑和主机信息后,如果主机间需要进行通信,则根据网络拓扑信息计算出要通信的主机之间的路径,然后给路径上的各SDN交换机下发流表,以使主机发出的报文通过匹配路径上各SDN交换机的流表,实现主机间的通信。
[0005]如果SDN控制器出现故障,比如断电,待故障修复后控制器上已经丢失原有的运行数据,若需要重新接管SDN网络则需要重新获取当前SDN网络的运行信息,如SDN交换机信息、拓扑信息、主机信息等,SDN交换机和拓扑信息可以通过Openflow协议获取,但网络上现有的主机信息却无法主动获取,导致SDN网络上新建业务流上送SDN控制器后因为没有目的主机信息导致无法转发。
【发明内容】
[0006]本发明的目的在于提供一种软件定义网络控制器及其恢复主机信息的方法,在目的主机不发报文的情况下,从SDN网络的运行信息中获取目的主机信息,将报文转发到目的主机。
[0007]为实现上述发明目的,本发明提供了一种软件定义网络控制器恢复主机信息的方法,该方法在SDN控制器故障修复、且网络拓扑稳定后进行,包括:获取SDN网络拓扑信息,以及与所述SDN控制器连接的各SDN交换机上的端口信息和流表信息;根据SDN交换机上的端口信息,以及SDN网络拓扑信息中与该SDN交换机相关的链路信息,确定该SDN交换机上的主机端口信息;根据该SDN交换机上的主机端口信息和流表信息,确定与主机端口信息对应的主机信息。
[0008]为实现上述发明目的,本发明还提供了一种软件定义网络控制器,包括:获取单元,用于在SDN控制器故障修复、且网络拓扑稳定后,获取SDN网络拓扑信息,以及与所述SDN控制器连接的各SDN交换机上的端口信息和流表信息;主机端口信息确认单元,用于根据SDN交换机上的端口信息,以及SDN网络拓扑信息中与该SDN交换机相关的链路信息,确定该SDN交换机上的主机端口信息;主机信息确认单元,用于根据该SDN交换机上的主机端口信息和流表信息,确定与主机端口信息对应的主机信息。
[0009]综上所述,本发明实施例的SDN控制器在目的主机不发报文的情况下,也能够主动获取目的主机信息,然后根据网络拓扑信息和主机信息直接生成转发路径,以使源主机发出的报文转发到目的主机。而且,SDN控制器主动获取主机信息中的MAC地址,当其他主机对该主机进行地址解析协议(ARP)请求时,能够实现ARP代答,直接将该主机的MAC地址回复给发出ARP请求的主机,不需要像现有技术那样在整个SDN网络中泛洪。
【附图说明】
[0010]图1为本发明提供的SDN控制器恢复主机信息的方法流程示意图。
[0011]图2本发明实施例提供软件定义网络拓扑示意图。
[0012]图3为本发明实施例提供的软件定义网络控制器的结构示意图。
【具体实施方式】
[0013]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明方案作进一步地详细说明。
[0014]本发明提供的SDN控制器恢复主机信息的方法流程示意图如图1所示,包括以下步骤:
[0015]步骤101、获取SDN网络拓扑信息,以及与所述SDN控制器连接的各SDN交换机上的端口信息和流表信息。
[0016]其中,SDN控制器通过向每一与之连接的SDN交换机发送端口状态查询请求消息,请求每一 SDN交换机上的端口信息,每一 SDN交换机上的端口信息包括主机端口信息和网络端口信息。
[0017]SDN控制器通过向每一与之连接的SDN交换机发送流表请求信息,请求每一 SDN交换机上的流表信息。
[0018]步骤102、根据SDN交换机上的端口信息,以及SDN网络拓扑信息中与该SDN交换机相关的链路信息,确定该SDN交换机上的主机端口信息。
[0019]具体方法为:将链路信息中该SDN交换机上连接其他SDN交换机的端口确定为网络端口 ;根据所确定的网络端口,将该SDN交换机上端口信息中除网络端口以外的其他端口确定为主机端口。
[0020]步骤103、根据该SDN交换机上的主机端口信息和流表信息,确定与主机端口信息对应的主机信息。
[0021]具体方法为:将查找到的流表匹配项中的源地址信息和相应的主机端口确定为该主机信息。
[0022]通过图1所示的方法,SDN控制器故障修复后可以从当前SDN网络的运行数据中立即恢复主机信息。如此,在目的主机不发报文的情况下,也能够获取目的主机信息,SDN控制器根据网络拓扑信息计算出到目的主机的路径,然后给路径上的各SDN交换机下发流表,以使源主机发出的报文通过匹配路径上各SDN交换机的流表,转发到目的主机。
[0023]为清楚说明本发明,下面列举具体场景进行详细说明。如图2所示,SDN网络中,支持openf low协议的SDN交换机和SDN控制器之间建立openf low连接。SDN交换机SW-1下挂主机设备PC-1和PC-2,SDN交换机SW-2下挂主机设备PC-3和PC-4。
[0024]在SDN控制器正常工作时,SDN控制器通过LLDP报文获取到网络拓扑,其中,链路1:SW-1-1D、port-1、port-2、SW-2-1D ;链路 2:SW-2_ID、port-2、port-1、SW-l-1D。
[0025]SDN控制器通过各个主机设备发送的数据报文学习到各主机的信息,例如主机设备PC-1的信息包括:主机PCl的IP地址,主机PC-1的MAC地址,主机PC-1接入SWl的端口 port-3,主机PC-1接入的SW ID:Sff-1IDo主机设备PC-2的信息包括:主机PC2的IP地址,主机PC-2的MAC地址,主机PC-2接入SWl的端口 port_4,主机PC-2接入的SW ID:Sff-1IDo主机设备PC-3的信息包括:主机PC3的IP地址,主机PC-3的MAC地址,主机PC-3接入SW2的端口 port-5,主机PC-2接入的SW ID:SW_2ID。主机设备PC-4的信息包括:主机PC4的IP地址,主机PC-4的MAC地址,主机PC-4接入SW2的端口 port-6,主机PC-4接入的 SW ID:Sff-2IDo
[0026]SDN控制器获取到网络拓扑和主机信息后,接收到PC-1上送的目的地址是PC-3的数据报文,计算PC-1和PC-3之间的转发路径:port3 — Sff-1-port-1-port-2 一 Sff-2 一port-5,并下发流表给SW-1和SW-2。
[0027]下发给SW-1的流表匹配项入端口为port-3,源IP为PC-1,源MAC为PC-1MAC,目的IP为PC-3,目的MAC为PC-3MAC,动作项:出接口 port-Ι ;
[0028]下发给SW-2的流表匹配项入端口为port-2,源IP为PC-1,源MAC为PC-1MAC,目的IP为PC-3,目的MAC为PC-3MAC,动作项:出接口 port-5。
[0029]接收到PC-3上送的目的地址是PC-1的数据报文,计算PC-3和PC-1之间的转发路径:port5 — Sff-2 — port-2 — port-1 一 Sff-1 一 port-3,并下发流表给 SW-1 和 SW-2。
[0030]下发给SW-2的流表匹配项入端口为port-5,源IP为PC-3,源MAC为PC-3MAC,目的IP为PC-1,目的MAC为PC-1MAC,动作项:出接口 port-2 ;
[0031]下发给SW-1的流表匹配项入端口为port-Ι,源IP为PC-3,源MAC为PC-3MAC,目的IP为PC-1,目的MAC为PC-1MAC,动作项:出接口 port-3。
[0032]当SDN控制器出现故障,待故障修复后控制器上已经丢失原有的运行数据,需要重新获取当前SDN网络的运行信息,其中SDN网络中的各主机信息,在主机不主动发报文的情况下是无法获取的。本发明利用所获取的当前SDN网络的运行信息,在网络拓扑稳定后可以立即恢复主机信息。
[0033]SDN控制器通过LLDP报文获取到网络拓扑,其中,链路I: Sff-l-1D, port-1,port-2, SW-2-1D ;链路 2:SW-2_ID、port-2、port-1、SW-l-1D。
[0034]SDN控制器通过向SW-1和SW_2发送端口状态查询请求消息,请求到SW-1上的端口信息包括:port-1、port-3、port-4 ;请求到 SW-2