基于sdn网络的分布式控制系统与用户流量优化方法【
技术领域:
】[0001]本发明涉及一种SDN网络的控制器,特别是涉及一种基于SDN网络的分布式控制系统。【
背景技术:
】[0002]SDN网络由SDN交换机和控制器组成,SDN交换机负责数据包的转发,控制器负责数据的控制层面,SDN交换机和控制器之间使用openflow协议进行通信。[0003]OpenFlow技术作为SDN的原型实现方式,代表了SDN控制转发分离架构的技术实现。随着SDN技术的逐渐发展和完善,严格来讲OpenFlow技术已成为SDN控制平面和数据平面之间多种通信协议之一,但实际上OpenFlow以其灵活性、规范性的优势已被看做SDN通信协议的标准,类似TCP/IP之于互联网的意义。[0004]下面将描述SDN技术关键组件及架构:[0005]OpenFlow最初作为SDN的原型提出来的时候,主要有交换机、控制器两部分组成。OpenFlow交换机(OpenFlowswitch)是根据流表来转发数据包,代表着数据转发层面;控制器(Controller)是通过全网络视图来实现管控功能,其控制逻辑表示控制平面。OpenFlow交换机负责数据转发功能,主要技术细节有三部分组成:流表(Flowtable)、安全信道(Securechannel)和OpenFlow协议(OpenFlowprotocal),如图1所不。[0006]每个OpenFlow交换机的处理单元由流表构成,每个流表由许多流表项组成,流表项则代表转发规则。进入交换机的数据包通过查询流表来取得对应的操作。为了提升流量的查询效率,目前的流表查询通过多级流表和流水线模式来获得对应操作。其中,流表项主要由匹配字段(matchfields)、计数器(counters)和操作(instruct1ns)等3部分组成。匹配字段的结构包含很多匹配项,涵盖了链路层、网络层和传输层大部分标识。随着OpenFlow规约的安全信道是连接OpenFlow交换机和控制器的接口,控制器通过这个接口,按照OpenFlow协议规定的格式来配置和管理OpenFlow交换机。目前,基于软件实现的OpenFlow交换机主要有两个版本,都部署于Linux系统:基于用户空间的软件OpenFlow交换机操作简单,便于修改,但性能较差;基于内核空间的软件OpenFlow交换机速度较快,同时提供了虚拟化功能,使得每个虚拟机能够通过多个虚拟网卡传输流量,但实际的修改和操作过程较复杂。[0007]在控制器中,网络操作系统(networkoperatingsystem,简称N0S)实现控制逻辑功能。Ν0Χ最早引入这个概念,是OpenFlow网络中对网络实现可编程控制的中央执行单元。实际上,这里的N0S指的是SDN概念中的控制软件,通过在N0S之上运行不同的应用程序能够实现不同的逻辑管控功能。在基于Ν0Χ的OpenFlow网络中,Ν0Χ是控制核心,OpenFlow交换机是操作实体,如图2所示。Ν0Χ通过维护网络视图(networkview)来维护整个网络的基本信息,如拓扑、网络单元(即网元)和提供的服务,运行在Ν0Χ之上的应用程序通过调用网络视图中的全局数据,进而操作OpenFlow交换机来对整个网络进行管理和控制。从Ν0Χ控制器完成的功能来看,Ν0Χ实现了网络基本的管控功能,为OpenFlow网络提供了通用API的基础控制平台,但在性能上并没有太大优势,没有提供充分的可靠性和灵活性来满足可扩展的需求。不过,NOX在控制器设计方面实现得最早,目前已经作为OpenFlow网络控制器平台实现的基础和模板。[0008]为了使控制器能够直接部署在真实网络中,解决多控制器对OpenFlow交换机的控制共享问题,同时满足网络虚拟化的现实需求,如图3所示,FlowVisor在控制器和OpenFlow交换机之间实现了基于OpenFlow的网络虚拟层,它使得硬件转发平面能够被多个逻辑网络切片(slice)共享,每个网络切片拥有不同的转发逻辑策略,例如包括Alice切片策略、Bob切片策略和正常流量切片策略。在这种切片模式下,多个控制器(例如包括Alice控制器、Bob控制器和正常流量控制器)能够同时管理一台交换机,多个网络实验能够同时运行在同一个真实网络中,网络管理者能够并行地控制网络,因此网络正常流量可以运行在独立的切片模式下,从而保证正常流量不受干扰。[0009]但是,SDN网络当前的控制器一般部署在局域网内,如果在广域网上使用控制器,会存在流表下发失败甚至无法联通的情况。具体来说,当前的控制器和SDN交换机是通过互联网连接,如SDN交换机分布在全球各地,控制器只有一个,无论在控制器选择在哪个地址位置都会存在控制器到某些SDN交换机的链路质量差的情况,对于质量差的这些链路,SDN交换机产生的package-1n消息需要经过几百毫秒的传输到达控制器,控制器进行路径计算后再将流表下发下去,在互联网高峰期,网络丢包现象严重的时候,会导致package-1n消息或者下发流表的数据包丢失。SDN交换机由于没有收到下发的流表会不停的产生package-1n消息,这样会大量消耗控制器和SDN交换机之间的网络资源,进一步影响其它SDN交换机和控制器的通讯,极端情况下可能出现控制器对其它SDN交换机正常的package-1n消息无法及时响应,导致用户无法联通。[0010]另外,当前的SDN网络,由于单一控制器有网络资源瓶颈、CPU计算瓶颈、以及存储瓶颈等,而这些都会影响控制器的并发处理能力,从而导致单一控制器的并发处理能力有限,流表的匹配速度和条目有限,不适宜在大数据量高并发的情况下使用。[0011]并且,在单一控制器出现的问题的时候,会导致网络中的用户新产生的流量无法正常调度,造成用户访问业务中断,而双机热备在切换的时候有时也会对用户的业务造成中断,从而对整个网络的使用产生影响。【
发明内容】[0012]因此,本发明的目的在于提供一种基于SDN网络的分布式控制系统与用户流量优化方法,以解决上述现有技术的缺陷。[0013]为了实现上述目的,本发明提供一种基于SDN网络的分布式控制系统,其特点在于,所述分布式控制系统包括分层的多个控制器,其包括位于顶层的根控制器、位于中间层的区域控制器、以及位于最底层的接入控制器,所述SDN网络包括多个区域,每一所述区域包括有与所述根控制器通讯连接的所述区域控制器、与所述区域控制器通讯连接的所述接入控制器、以及与所述接入控制器通讯连接的第一SDN交换机,其中:[0014]所述根控制器负责全局控制,其是用于管理所述SDN网络所有区域内的下一层控制器,接收下一层控制器的接入,生成所接入的控制器所负责区域的本地流表;[0015]所述区域控制器负责区域控制,其是用于管理其所负责的区域内的下一层控制器,接收下一层控制器的接入,上报接入信息到上一层控制器,与上一层控制器通信,获取其所负责区域的配置规则,生成所接入的控制器所负责区域的本地流表;[0016]所述接入控制器负责数据接入,其是用于管理其所负责的区域内的第一SDN交换机,接收其所负责的区域内的第一SDN交换机的接入,根据从上一层控制器获取到的配置规则生成所接入的第一SDN交换机所负责区域的本地流表,下发所述本地流表到接入的第一SDN交换机;[0017]所述第一SDN交换机,其是用于获取其所负责的区域所应接入的控制器,并连接上所述应接入的控制器,上报自身信息,接受所述应接入的控制器的管理,根据查询所述本地流表来转发数据包。[0018]在本发明的一实施例中,至少部分所述区域内还包括有第二SDN交换机,所述第二SDN交换机是与其所在区域内的所述区域控制器及所述第一SDN交换机通讯连接,且所述第二SDN交换机是被部署在广域网内以形成一跨广域网SDN核心网络;其中,与所述第二SDN交换机通讯连接的所述区域控制器是接收所述第二SDN交换机的接入,并管理所述第二SDN交换机,生成所接入的第二SDN交换机所负责区域的本地流表;所述第二SDN交换机是用于获取其所负责区域所应接入的区域控制器,并连接上所述应接入的区域控制器,上报自身信息,接受所述应接入的区域控制器的管理,以及接收所述第一SDN交换机的转发请求,根据查询所述本地流表来转发数据包。[0019]在本发明的一实施例中,所述根控制器包括彼此通讯连接的主根控制器和备份根控制器;其中,所述主根控制器除负责全局控制外还用于与所述备份根控制器之间的同步协商;所述备份根控制器还用于实现所述主根控制器的热备份,并监控所述主根控制器的存活状况,若超过一指定周期检测到所述主根控制器不存在,则通知所有区域内的所述区域控制器,并接管所述主根控制器的工作,自动转换为主根控制器,而原来的主根控制器则在重启后自动转换为备份根控制器。[0020]在本发明的一实施例中,所述根控制器在初始化时生成所有区域的子区域默认流表;所述区域控制器在初始化时生成其所负责区域的子区域默认流表;所述接入控制器在初始化时生成其所负责区域的本区域默认流表;所述第一SDN交换机在初始化时连接上所述接入控制器,所述接入控制器将所述本区域默认流表下发到所述第一SDN交换机上。[0021]在本发明的一实施例中,所述本地流表是随着选路结果的变化而实时变化。[0022]在本发明的一实施例中,所述第一SDN交换机是通过智能DNS获取其所负责的区域所应接入的控制器,并通过openflow协议连接上所述应接入的控制器。[0023]在本发明的一实施例中,所述接入控制器及其所负责的区域内的所述第一SDN交换机是被当前第1页1 2 3 4