云中的网络:OpenStack与SDN应用分析目录一.OpenStack与SDN应用分析..................................................21.概述...................................................................................22.Neutron的功能..................................................................23.SDN及其与OpenStack的集成...........................................34.SDN横向扩展对Neutron的影响.........................................45.总结....................................................................................9二.OpenStack和SDNController融合.......................................101.OpenStack...........................................................................102.SDNController(OpenDaylight)........................................113.使用所有的包创建网络......................................................144.架构分析.............................................................................145.应用示例:VM迁移...........................................................16三.Neutron架构.......................................................................181.架构..................................................................................182.Neutron的缺陷................................................................21四.展望.....................................................................................231.个人情怀..........................................................................232.技术实现.........................................................................233.作者信息..........................................................................24一.OpenStack与SDN应用分析1.概述软件定义网络(SDN)是一种新型的网络架构,它使用一个集中控制器来控制数据层面的数据流。这种新方案使网络管理更容易,并能够节约成本。云计算技术的进步促进了软硬件网络技术的发展。OpenStack使用网络组件Neutron提供网络虚拟化服务,允许租户创建和管理虚拟网络,并且提供标准化的插件架构,便于连接SDN控制器。但是Neutron的扩展性不好,不能满足虚拟化环境的动态特性,并且对网络资源的控制是有限的。是的,SDN可以弥补一些缺陷。为Neutron提供附加功能,如集中/分布式控制、无缝网络、多租户和网络可伸缩性、网络可视化管理等。2.Neutron的功能Neutron添加了一层虚拟的网络服务让租户(用户)构建自己的虚拟网络。它可以进一步解释为一个网络管理服务,为创建和管理虚拟网络公开了一组可扩展的API(通过创建虚拟网络为OpenStackCompute节点上的虚拟机提供网络服务)。Neutron的插件架构为开源社区或第三方服务提供API。允许添加新的插件,提供先进的网络功能。对于网络来说:二三层一般叫网络拓扑,四到七层叫网络服务(即网络应用,如防火墙,负载均衡,入侵检测系统,入侵防护,深度包检测,数据缓存,广域网加速等)。网络拓扑可以由两种技术实现,一是Overlay技术,二是新兴的OpenFlow流技术。实现上,二者在控制平面/转发平面所做的事情的思想是一样的。我们以Overlay技术举例来讲解控制平面与转发平面的实现思想。转发平面,Neutron为每一个用户提供用户隔离的网络服务,一般使用标签来隔离,如传统的vlan,但它需要修改物理交换机,部署麻烦。于是,后来一般使用overlay技术,如gre、vxlan。目前,Neutron的虚拟网络服务没有传统网络成熟。下图描述了与Neutron组件交互的代理。组成Neutron的元素如下:Neutron-server是Neutron虚拟网络运行在控制节点的主过程。Pluginagents和Neutron插件一起管理虚拟交换机,Pluginagents依赖Neutron插件。DHCPagent是Neutron的一部分,为租户的网络提供DHCP服务。L3agent负责L3和NAT转发来获得租户虚拟机的外部访问。SDNservices:这些服务为租户网络提供附加的功能,通过API与pluginagents或neutron-server进行交互。在大规模、高密度、多租户云环境中,Neutron的性能会下降。Neutron的低扩展能力还不能紧跟云环境的动态特性,但它提供了插件将SDN控制器集成到OpenStack,达到将应用程序从IP地址、VLAN和端口等网络环境中分离的目的,并且能够节省时间和降低运营成本。3.SDN及其与OpenStack的集成引入SDN主要是克服Neutron的缺陷,SDN是一种网络技术,通过集中的可编程控制平面来管理整个数据平面。这样网络运营商和供应商可以控制和管理自己的虚拟化资源和网络。SDN是一种新型的网络模式,允许硬件和操作系统之间以及物理/虚拟网元和操作系统之间通过开放API通信。SDN模型中的网络操作系统(NOS),例如OpenDaylight、RYU、Floodlight和POX,负责提供网络和其当前状态的一个完整视图。同时NOS也负责管理网络变化,并将这些变化通知到网络硬件和物理/虚拟网络应用程序中。底层网络的变化来自于运行在NOS上的网络应用程序(NeutronAPI、REST/JSON、JavaRPC),NOS通过北向API与应用程序通信,通过南向API管理和控制底层物理和虚拟硬件,使用的南向协议包括OpenFlow、OVSDB、OF-config和XMPP等。SDN控制器以插件方式集成到Neutron中并提供集中式管理,有利于OpenStack网络通过API提高网络的可编程性。SDN控制器,OpenDaylight、Ryu和Floodlight等使用各自的插件让Neutron和SDN控制器交互。下图给出了SDN集成到OpenStack的大体思路。SDN控制器使用北向RestAPI通过网络节点的二层插件与Neutron通信。使用OpenFlow与Compute节点的代理和插件交互。具体是使用OpenvSwitch数据库(OVSDB)和南向OpenFlow协议与计算节点的虚拟交换机交互。4.SDN横向扩展对Neutron的影响4.1Neutron架构软件定义网络(SDN)技术的发展与成熟,使得网络虚拟化可以不再基于物理网络设备实现,从而使网络虚拟化成为云计算网络技术的核心之一,越来越多的厂商发展网络虚拟化,并纷纷发布他们关于网络虚拟化方面的方案和产品。OpenStackNeutron架构,由以下组件构成:Neutron服务python后台服务是OpenStack网络的主要进程,一般运行于控制节点。它暴露API来加强网络模型,并且传递请求给neutron组件。插件插件可以是核心组件也可以是一项服务。核心插件实现“核心”的NeutronAPI——二层网络和IP地址管理。服务插件提供“额外”的服务,例如三层路由、负载均衡、VPN、防火墙和计费。核心组件也可以通过相关的API扩展提供这些网络服务。简而言之,组件运行在控制节点上,并且调用网络API,这些API会同Neutron服务器、数据库和代理进行交互。PluginAgent插件代理指定正在被使用的Neutron插件。他们运行于计算节点之上,并且会同Neutron插件进行交互来管理虚拟交换机。这些代理在许多部署中是可选的,而且在每个虚拟机管理程序上可执行本地虚拟交换机配置。消息队列OpenStack组件,包括Neutron,使用高级消息队列协议(AMQP)进行内部通信。例如,Neutron组件使用远程过程调用协议(RPC)与另外一个组件通信。数据库几乎所有组件都需要用数据库来维护一个持续的网络模型;因此,数据库的语法是由已配置的核心插件和服务插件来定义。DHCP代理这个代理是Neutron的一部分,给租户网络提供DHCP服务。它维护所需的DHCP配置,且在所有插件中DHCP代理是相同的(它维护所有组件中相同的DHCP配置)。三层代理三层代理负责提供三层和NAT转发功能,目的是为租户网络中的虚拟机提供外网接入。二层核心插件二层模块化(ML2)是Neutron的核心插件。ML2的引入是为了替代原有的统一插件(如,OpenvSwitch和Linux桥接-它们仅仅是插件,而不是代理)消除冗余代码,降低开发和维护成本。根据ML2作者所定义的,模块化二层组件(ML2)是一个允许OpenStackNeutron同时利用二层网络多样性技术的架构,该二层网络技术来源于实际的复杂数据中心。图:ML2组件结构ML2通过驱动模型实现模块化。如图所示,它包含了两类驱动:类型驱动和机制驱动。类型驱动(比如flat、VLAN、GRE和VXLAN等)定义了一个特殊的二层类型,每个可用网络类型由对应的类型驱动管理。该驱动维护了类型驱动具体的状态信息,实现了租户网络之间的隔离,这种隔离是由供应商网络验证过的。另一方面,机制驱动是由厂商指定的(比如说OVS,还有来自ODL、Cisco、NEC等厂家的驱动),基于功能性的类型驱动——支持创建、更新和删除网络、子网和端口资源。4.2OpenStack和SDN控制器:伟大的蓝图软件定义网络的引入不仅是为了克服Neutron的缺陷,而且还是为了提供支持多网络虚拟化技术(一个集中控制平面创建分隔的租户虚拟网络)和方法。有了SDN的集成,Neutron极有可能去支持大容量、高密度和多租户云环境的动态特性。OpenStackNeutron连同它的插件架构,提供集成SDN控制器到OpenStack的能力。这种SDN控制器使用插件集成Neutron技术提供集中式管理,并且促进OpenStack网络利用API实现可编程性。L3Gateway是所有云计算平台所共同面临的瓶颈,比如OpenStack有专门的网络节点来充当L3Gateway,用于支持租户的虚拟Router,由于所有需要路由的报文都要经过这些虚拟Router来转发,充当L3Gateway的Node就成了瓶颈。有的硬件SDN交换机可以支持这种情况下的L3Gateway,而且可以做成全分布式的,这样就不再存在性能