一种SDN体系架构中协调层的构建方法与流程

文档序号:11156396阅读:417来源:国知局
一种SDN体系架构中协调层的构建方法与制造工艺

本发明涉及一种SDN体系架构中协调层的构建方法,属于计算机应用技术领域。



背景技术:

随着“大物移云”,即大数据、物联网、移动互联网和云计算的时代到来,传统的底层网络架构已经无法满足管理者的需求,设备繁杂配置麻烦迭代缓慢,各种问题层出不穷。下一代网络,需要的是可编程按需定制、集中式统一管理、动态流量监管、自动化部署等。这些都是软件定义网络(SDN)的出发点。

SDN最大的特点是控制和转发完全分离,其中控制层实现集中式控制、软件可编程、可视化、自动化等,转发层通过硬件实现高速转发。但直接对接SDN的控制层和转发层很难满足实际网络中的需求。这体现在以下两方面:

一方面,在控制层中,不同北向控制器之间应用功能的成熟度存在差异,例如有的北向控制器防火墙功能较为成熟,而有的北向控制器负载均衡器功能较为成熟,导致底层网络的管理者在控制层部署不同北向控制器的成熟应用对转发层设备进行控制。此外,即使北向控制器相同,不同转发层设备需要的网络功能也存在差异,导致控制不同转发层设备的北向控制器也需要提供不同的应用。实际上来自转发层的网络请求需要由多种不同的北向控制器应用来处理,因此直接对接SDN的控制层和转发层很难满足这一需求,这要求转发层和应用异构型的控制层之间具有针对不同应用实现OpenFlow消息调度的能力。

另一方面,由于单个北向控制器节点的处理能力有限,随着接入层和转发层网络规模的扩大,单个北向控制器将无法满足控制层的处理性能要求,这要求转发层和应用异构型的控制层之间具有弹性部署北向控制器的能力,直接对接SDN的控制层和转发层也很难满足这一需求。

综上所述,SDN的控制层与转发层架构存在缺陷,直接对接SDN的控制层和转发层很难满足实际网络中的需求。



技术实现要素:

为了应对上述挑战,本发明提出了一种SDN体系架构中协调层的构建方法。该方法在控制层和转发层之间添加了一层集中式的协调层,即OpenFlow协调器,使得控制层中的多个SDN北向控制器彼此合作分担控制层业务负载,实现OpenFlow控制流在多个应用异构型北向控制器间灵活调度,从而满足管理者在实际网络中的需求,提升整个SDN系统的可用性和可靠性。

本发明的技术方案:

一种SDN体系架构中协调层的构建方法,逻辑功能上由南向交换机信道管理,北向控制器信道管理,以及OFPT_PACKET_IN消息分发三部分组成。

其中,南向交换机信道管理是协调器访问转发层的桥梁,涉及南向交换机信道管理的工作有:一、接收到由南向交换机发起的信道建立请求后,处理对应的OpenFlow握手流程,并根据握手过程中的OFPT_FEATURES_REPLY和OFPST_DESC消息在协调器中为每个南向交换机建立对应的物理交换机对象,协调器通过建立的物理交换机对象既可以向对应的南向交换机发送OpenFlow消息,也可以处理对应的南向交换机发送的OpenFlow消息;二、进行基于LLDP与BDDP协议的拓扑链路发现任务以及基于OFPT_STATS_REPLY的统计信息收集任务,将获取的网络状态信息存储在协调器中,供北向控制器访问。

北向控制器信道管理是协调器访问控制层的桥梁,涉及北向控制器信道管理的工作有:一、接收到控制层变容的请求后,向新增的北向控制器发起信道建立请求,处理对应的OpenFlow握手流程,在协调器中为每个控制信道建立对应的虚拟交换机对象,协调器通过建立的虚拟交换机对象既可以向对应的北向控制器发送OpenFlow消息,也可以处理对应的北向控制器发送的OpenFlow消息;二、根据存储在协调器中的网络状态信息处理北向控制器对于拓扑链路和统计信息的OpenFlow请求消息。

OFPT_PACKET_IN消息分发是协调器实现OpenFlow控制流在多个应用异构型北向控制器间灵活调度的核心与基础,涉及OFPT_PACKET_IN消息分发的工作有:一、为每个北向控制器设置单独的OFPT_PACKET_IN消息队列,用于反映当前北向控制器对于OpenFlow消息的处理情况;二、当物理交换机对象接收到对应南向交换机向控制层发送的OFPT_PACKET_IN消息时,会根据北向控制器提供的服务种类以及消息队列的情况进行消息分发,将消息分发给合适的虚拟交换机对象对应的控制信道,并把消息的标识加入对应北向控制器的消息队列,代表消息正在被北向控制器处理;三、北向控制器处理完毕请求后发送OFPT_PACKET_OUT、OFPT_FLOW_MOD以及OFPT_PORT_MOD消息给虚拟交换机对象,虚拟交换机对象将消息发送给物理交换机对象对应的南向交换机,并把消息的标识弹出对应北向控制器的消息队列,代表消息已被北向控制器处理完毕。

本发明的有益效果:

1.支持应用异构型的SDN控制层。允许管理者在控制层部署提供不同功能和服务的应用异构型北向控制器,组成一个北向控制器集群对转发层设备进行集中管控。

2.支持动态的SDN控制层变容。允许管理者在SDN系统上线运行的过程中,在控制层弹性部署SDN北向控制器,分担原有控制层的业务负载。

附图说明

图1是本发明的整体架构图。

图2是本发明的物理交换机模块OpenFlow消息处理状态机图。

图3是本发明的物理交换机模块网络状态维护图。

图4是本发明的虚拟交换机模块OpenFlow消息处理状态机图。

图5(a)是本发明的消息队列模块南向业务流程图。

图5(b)是本发明的消息队列模块北向业务流程图。

图6是本发明的远程管理模块架构图。

图7是本发明的远程管理模块业务流程图。

具体实施方式

以下结合附图和技术方案,进一步说明本发明的具体实施方式。

一种SDN体系架构中协调层的构建方法,如图1所示,整体架构中协调层即OpenFlow协调器,位于应用异构型的SDN控制层和转发层之间;在OpenFlow协调器中,物理交换机对象负责与南向交换机建立连接,使得OpenFlow协调器对于转发层来说是一个集中的北向控制器,它的最终决策来源于应用异构型的SDN控制层,而虚拟交换机对象负责与北向控制器建立连接,使得OpenFlow协调器对于控制层来说是一个交换机的集合,它的最终转发由转发层完成;

OpenFlow协调器划分为物理交换机模块、虚拟交换机模块、消息队列模块以及远程管理模块;

物理交换机模块,在OpenFlow协调器上线后被启动,在协调器对应的主机IP地址和端口上建立Socket,与之绑定的消息管道处理器有OpenFlow消息编解码器、管道空闲处理器、读超时处理器、OpenFlow握手超时处理器、管道线程池处理器以及OpenFlow消息处理器;消息管道的处理流程分为Socket读流程和Socket写流程;Socket读流程涉及的处理器依次是:OpenFlow消息解码器、管道空闲处理器、读超时处理器、OpenFlow握手超时处理器、管道线程池处理器以及OpenFlow消息处理器。Socket写流程涉及的处理器依次是OpenFlow消息处理器、管道线程池处理器以及OpenFlow消息编码器。

物理交换机模块中,OpenFlow消息解码器根据OpenFlow协议栈将OpenFlow消息部分从管道消息的数据部分读取出来,而OpenFlow消息编码器将OpenFlow消息写入管道消息的数据部分;管道空闲处理器用于管理心跳机制,检测远端是否存活;读超时处理器用于控制读取数据时发生的超时情况,如果一段时间内没有数据读取就引发读超时,并关闭当前的消息管道;OpenFlow握手超时处理器用于控制OpenFlow握手流程中发生的超时情况,从握手流程开始时计算一段时间内如果没有握手成功就引发OpenFlow握手超时,并关闭当前的消息管道;管道线程池处理器用于转发管道消息给线程池执行多线程操作,提升消息处理的并发性;OpenFlow消息处理器用于处理南向交换机发送的OpenFlow消息,如图2所示,OpenFlow消息的处理过程定义为状态机,在不同的状态下,对OpenFlow消息采取不同的处理方式,接收到特定消息后根据OpenFlow协议,进行状态转移;

物理交换机模块同远端南向交换机建立连接后,状态机的初始状态从INIT转移到WAIT HELLO,并发起OpenFlow握手流程,根据OpenFlow协议标准,转移到中间状态WAIT FT_REP、WAIT CONFIG_REP和WAIT DESC_STATS。发生握手超时后,从当前状态转移到CHANNEL CLOSED,并中断握手流程。当状态成功转移到ACTIVE时,物理交换机模块同南向交换机间的OpenFlow握手成功,物理交换机模块为南向交换机在协调器中建立对应的物理交换机对象,开始ECHO REPLY,并启动新建物理交换机对象中的拓扑链路发现和统计信息收集网络状态维护功能。如图3所示,网络状态维护由定时发送LLDP和BDDP 以及定时发送OFPT_STATS_REQUEST两部分构成。南向交换机向控制层发送的OpenFlow消息通过物理交换机对象进行处理。接收到LLDP、BDDP以及OFPT_STATS_REPLY后,根据网络状态维护功能更新网络状态,将发现的链路加入拓扑,并存储收集的统计信息,供控制层访问。接收到OFPT_PACKET_IN后,请求消息队列模块,经由合适的虚拟交换机对象发送给对应的北向控制器。远端南向交换机同物理交换机模块断开连接时,状态机的状态转移到CHANNEL CLOSED,物理交换机模块关闭对应的消息管道,回收管道处理器资源。

虚拟交换机模块,在物理交换机模块上线后被启动,接收到控制层变容的请求后,针对每个已存在的物理交换机对象,同新加入北向控制器对应的主机IP地址和端口建立Socket,并建立对应的虚拟交换机对象,与之绑定的消息管道处理器有:重连接处理器、OpenFlow消息编解码器、管道空闲处理器、读超时处理器、OpenFlow握手超时处理器、管道线程池处理器以及OpenFlow消息处理器。消息管道的处理流程可分为Socket读流程和Socket写流程。Socket读流程涉及的处理器依次是:重连接处理器、OpenFlow消息解码器、管道空闲处理器、读超时处理器、OpenFlow握手超时处理器、管道线程池处理器以及OpenFlow消息处理器。Socket写流程涉及的处理器依次是OpenFlow消息处理器、管道线程池处理器、OpenFlow消息编码器以及重连接处理器。

虚拟交换机模块中,OpenFlow消息编解码器、管道空闲处理器、读超时处理器、OpenFlow握手超时处理器、管道线程池处理器的作用与物理交换机模块中相同。重连接处理器用于消息管道断开时的重连接操作,连接断开时等待一段时间后与远端重新建立连接。OpenFlow消息处理器用于处理北向控制器发送的OpenFlow消息,如图4所示,OpenFlow消息的处理过程定义为状态机,在不同的状态下,对OpenFlow消息采取不同的处理方式,接收到特定消息后根据OpenFlow协议,进行状态转移。

虚拟交换机模块同远端北向控制器建立连接后,状态机的初始状态从INIT转移到WAIT HELLO,并发起OpenFlow握手流程,检测OpenFlow协议兼容性,根据OpenFlow协议标准,转移到中间状态WAIT FT_REQ,虚拟交换机模块依据对应的物理交换机对象信息构建FT_REP。当OpenFlow协议不兼容或握手超时后,从当前状态转移到CHANNEL CLOSED,并中断握手流程。当状态成功转移到ACTIVE时,虚拟交换机模块同北向控制器间的OpenFlow握手成功,开始ECHO REQUEST和ECHO REPLY,北向控制器向转发层发送的OpenFlow消息通过虚拟交换机对象进行处理。虚拟交换机模块接收到LLDP、BDDP以及OFPT_STATS_REQUEST后,根据已存储的网络状态对北向控制器进行回复。接收到OFPT_PACKET_OUT、OFPT_FLOW_MOD以及OFPT_PORT_MOD后,请求消息队列模块,经由合适的物理交换机对象发送给对应的南向交换机。北向控制器同虚拟交换机模块断开连接时,状态机的状态转移到CHANNEL CLOSED,虚拟交换机模块尝试重连接北向控制器,重连接成功后,恢复对应的消息管道处理,重连接失败后,虚拟交换机模块关闭对应的消息管道,回收管道处理器资源。

消息队列模块,在虚拟交换机模块上线后被启动,为OpenFlow控制流的转发提供策略;提供不同功能的南向交换机需求不同的控制层服务,将提供对应服务的北向控制器加入相对应的服务分组,即南向交换机的需求与北向控制器提供的服务是相互对应;为北向控制器创建消息队列时,将北向控制器的服务分组作为消息队列的属性,同时该属性也存在于物理交换机对象中;北向控制器各自拥有独立的消息队列,消息队列的更新操作分为入队操作和出队操作,入队操作将转发层发送的OFPT_PACKET_IN消息的buffer_id字段作为消息的标识加入队列,令队列长度自增,出队操作将控制层发送的OFPT_PACKET_OUT消息的buffer_id字段作为消息的标识从队列中弹出,令队列长度自减,消息队列中的入队以及出队操作具有原子性。

如图5(a)所示,当物理交换机模块收到转发层发送的OpenFlow请求时,向消息队列模块请求合适的北向控制器。消息队列模块收到请求,根据物理交换机对象的服务分组属性,查询对应服务分组内的消息队列,并选择其中负载因子最小,即队列长度与负载权重乘积最小的消息队列,负载权重是一个介于0和1之间的实数,类型为double,根据组织者设置的转发策略确定,消息队列模块将OpenFlow请求入队,并返回相应的北向控制器接口,供物理交换机模块进行请求转发。

如图5(b)所示,当虚拟交换机模块收到控制层发送的OpenFlow决策时,请求消息队列模块将相应的OpenFlow请求出队。北向控制器各自的消息队列中反映的是当前北向控制器对于OpenFlow请求的处理情况。

远程管理模块,在消息队列模块上线后被启动,为协调器的管理提供远程接口。如图6所示,来自外部的控制请求由RPC服务器接收并进行处理,RPC服务器提供两种WebSocket,分别是HTTP WebSocket和HTTPS WebSocket,其中HTTPS WebSocket提供基于SSL证书认证的加密数据传输的连接。WebSocket的处理绑定了两种服务组件,要求处理前进行请求身份的认证,不同的请求身份拥有不同的服务组件的访问权限,其中监控者身份仅可以访问监控服务组件,管理员身份除了可以访问监控服务组件,还可以访问管理服务组件。监控服务组件提供三种监控服务的接口,分别是查询网络状态,查询消息队列以及查询资源列表。其中查询网络状态用于读取保存在协调器中的由物理交换机对象负责维护的网络状态,包括转发层的拓扑链路以及统计信息,查询消息队列用于读取消息队列模块负责维护的各个北向控制器的消息队列状态,查询资源列表用于读取保存在协调器中的物理交换机对象、虚拟交换机对象、北向控制器列表以及三者之间的映射关系。管理服务组件提供三种管理服务的接口,分别是控制层变容,设置转发策略以及设置服务分组。其中控制层变容用于弹性的增加或减少控制层中的北向控制器,创建或删除虚拟交换机对象以及同北向控制器的连接,设置转发策略用于更新消息队列模块中的负载权重,设置服务分组用于更新物理交换机对象和消息队列中的服务分组属性。远程管理模块的业务流程如图7所示。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1