前言SDN的概念一直如火如荼。如果要谈概念的落地和大规模应用,肯定离不开SDN在云计算数据中心的实际应用。云数据中心对网络提出了灵活、按需、动态、隔离的需求。SDN的集中控制、控制与转发分离、应用可编程性这三大特性,恰好能够更好地匹配上述需求。SDN可以看作是软件开发和网络技术的混合领域。本文从一个云数据中心网络维护工程师的角度,分享SDN与云数据中心结合的前世今生。1、云数据中心为什么要引入SDN云计算在过去十年中引起了互联网、IT和电信行业的关注。云计算技术的快速发展和广泛应用,带来了数据中心业务形态的巨大变革。目前数据中心业务主要集中在Iaas层,即云计算数据中心利用自身的计算、存储、网络、软件平台等资源,为租户提供Iaas虚拟资源租用。典型的IaaS资源包括云主机(虚拟机)、对象存储、块存储、VPC专有网络(VPC,VirtualPrivateNetwork虚拟私有云)、公网IP、带宽、防火墙、负载均衡等产品。在网络层面,假设暂时不考虑公网IP、带宽等衍生网络产品,只使用云主机,那么对网络最基本的技术要求就是可移植性和隔离性。迁移通常意味着云主机在数据中心具有自动恢复能力。当云主机所在主机(物理服务器)宕机时,可以自动将云主机迁移到另一台正常运行的物理服务器上,IP保持不变。隔离通常可以分为两个级别。一是不同租户之间的网络隔离。出于安全考虑,不同租户的内部网络不可达;二是同一租户内不同子网(vlan)之间的隔离。大租户提供的多层网络能力。由于云主机迁移IP不可更改,网络需要处于二层环境,早期的云数据中心通常采用大二层技术进行组网。大二层技术简单理解就是整个数据中心就是一个大二层环境,云主机网关位于核心设备上。想到二层环境,肯定离不开广播风暴,遏制广播风暴的生成树协议也离不开。如果整个网络都使用生成树协议,将会阻塞很多网络链路,导致网络链路利用率不足。为了解决利用率不足的问题,CiscoVPC(这个不同于上面的VPC,virtualportchannel虚拟端口转发)技术和华为H3C的IRF堆叠技术应运而生。简单理解,以上两种技术都是在欺骗生成树协议,最终使被生成树协议阻塞的链路变为可用状态,提高链路利用率。结合大二层技术常用的租户隔离方式有两种,一种是vlan隔离,一种是VRF(VirtualRoutingForwarding)隔离。如果采用VLAN隔离,通常需要在防火墙上终结云主机网关,以满足租户之间的安全隔离需求。这种模式一般是一个租户对应一个vlan;对于同租户多子网的需求,需要在网关设备的防火墙上通过更复杂的策略来实现。如果采用VRF隔离,云主机网关通常端接在高端交换机或路由器上,一个租户对应一个VRF。对于同一租户内多个子网的需求,是VRF+多vlan的模式。受限于vlan/VRF的规模,无论是“Large2+Vlan”还是“Large2+VRF”,云数据中心都有4096个租户的限制,租户之间的IP地址段是不允许冲突的。此外,传统IP网络架构在虚拟化、灵活配置、可编程性等方面存在不足,在云数据中心网络服务业务链编排方面也存在制约因素。为了解决上述问题,出现了将SDN引入云数据中心网络的技术浪潮。2.云数据中心SDN系统架构SDN的3+2架构模型自上而下分为应用层、控制层和转发层。基于控制层定义了两个对外接口。其中,向上为应用提供自定义业务功能的API称为北向接口,向下控制底层网络资源使用的API称为南向接口。常用的北向接口标准是Restful,常用的南向接口标准是Openflow。SDN的3+2架构模型相信大家都不陌生。当考虑SDN用于云数据中心和云管理平台的整体集成时(以Openstack为例),比较常见的系统架构如下。对下图做几点说明,为什么常用这种模式:1.关于系统层次的划分:在推荐的SDN系统层次划分中,云数据中心运营管理平台和Openstak统一定义为应用层,独立的SDN控制器设备构成控制层,底层网络设备构成转发层。关于业界的Openstack数据中心系统级别,除了图中的划分方式外,还有另一种划分方式。另一种划分方式,将Openstack的Neutorn视为控制层,neutron直接与底层网络设备相连。在服务器规模较大的云数据中心,尤其是使用虚拟交换机时,控制器与网络设备(虚拟交换机)的交互流量比较大。在实际部署中,通常会参考商用版本的SDN控制器。商业版SDN控制器与Neutron的连接主要体现在Neutron插件上。Neutron是Openstack的网络管理模块。Neutron主要由Neutronserver和PluginAgent组成。NeutronServer包括守护进程Neutron-server和各种插件Neutron-*-plugin。守护进程Neutron-server对外暴露API接口,配置管理网络插件,并将API的调用请求传递给配置好的插件进行后续处理;插件Plugin分为core和additional,需要访问数据库维护各种Configuration数据和对应关系。插件代理(PluginAgent)通常位于计算服务器上,与Neutron上的插件进行通信。名称为Neutron-*-agent,通常对应Neutron上的各种插件Neutron-*-plugin。Neutron的默认核心插件是ML2。如果引入商业版的SDNcontroller,需要安装相应的coreplugin来替换ML2,同时也需要安装相应的plug-inagent。在这种情况下,SDN控制器通过Neutron核心插件与neutron服务器通信,通过控制器的南向接口管理底层网络设备,比如通过openflow发送流表。2、关于管理流量和业务流量的区分:为保证云数据中心的网络信息安全和流量有序流动,系统架构按照数据类型分为管理平面和业务平面。管理流量(云平台、控制器、网络设备之间的控制流量)运行在管理域交换设备构建的物理通道上,业务流量(所有租户的业务流量)运行在交换设备构建的物理通道上在业务领域。两个数据通道完全隔离且物理独立。上图中虚线是系统管理流量,实线是用户业务流量。管理面无特殊组网需求,仍采用传统组网方式。业务面承载数据中心所有用户数据流量,需要考虑上述虚拟机二层迁移、租户隔离、IP权限冲突等组网需求。云数据中心通常在业务面采用vxlan组网方式。需要说明的是,Openstack的Neutron支持flat、VLAN、GRE、VXLAN等多种业务面组网方式。云数据中心选择XVLAN组网主要是为了满足上述三种组网需求。vxlan,简单理解就是隧道包封装。原始以太网数据包,包括原始IP/MAC地址、vlan等头信息,成为vlxan的报文内容。vxlan包头包含vxlan隧道两端的VTEP(进行vxlan封装的网络设备)的IP/MAC地址和vxlan设备对应的vlan,与原始以太网包无关。在这里,可以选择三个网络身份。第一个是外层802.1Q,位于vxlan包的包头。就是vxlan设备对应的vlan,也叫underlay网络的vlan,也就是全局vlan。二是内层802.1Q,位于原始以太网包内部,是原始用户数据对应的vlan,也成为本地vlan,仅在连接用户虚拟机的vxlan设备内部有效。第三个是vxlan的隧道标识,也叫VNI,是区分vxlan隧道的关键。vxlan标识符有24位,即最多可以支持2^24,在数量上远胜于vlan/VRF。业务面引入vxlan组网,vxlan与租户/租户网络的关系是云数据中心组网模型的重点。以云数据中心典型租户VPC为例,分别分析vlan、VRF和vxlan组网的隔离模型。假设租户有两个子网,子网A(192.168.100.0/24)和子网B(10.100.1.0/24),二层互通,三层跨子网。在VLAN组网中,子网A和子网B分别对应两个VLAN,VLAN的网关端接在防火墙上,通过防火墙策略实现子网间通信。在VRF+vlan组网中,租户对应一个VRF,子网A和B对应两个VLAN,VRF关联两个VLAN实现三层互通。如果是在vxlan网络中,需要理解上面提到的localvlan、vxlanVNI和globalvlan这三个概念。vxlan设备是对vxlan进行封装和解封装的边缘设备,因此以vxlan设备为接口,形成全局vlan域和局部vlan隔离域。globalvlan域是业务域中vxlan设备和传统网络设备共同构建的区域。该vlan在数据中心业务域全局生效。下图就是一个例子。全局vlanID为10,是vxlan设备与传统网络互联的二层ID。一般在网络初始化的时候就确定了,以后不会再更改。Vm和vxlan设备之间存在本地隔离域,vlan只在本地生效。在不同的本地隔离域中,用户的每个子网对应一个vlan,同一子网的本地vlan标识可以相同也可以不同。如图所示,子网A在vxlan设备1构建的隔离域中对应vlan100,在vxlan设备2构建的隔离域中对应vlan200。在vxlan组网环境中,vxlan的VNI标识尤为关键。VNI标识在业务域内也是全局生效的。业界常见的做法是用户的每个子网对应一个vlxan隧道,即VNI标识。跨子网通信也对应一个vlxan隧道。如图所示,子网A内部通信的vlxanVNI为10003,子网B内部通信的vlxanVNI为10002,子网A和子网B之间通信的vlxanVNI为10001。SDN控制器需要分配并存储云数据中心用户的vpc网络与底层网络设备本地vlan/vxlan之间的正确映射关系,设计并下发合适的流表给vxlan,保证业务流量的正常访问。3、关于物理交换机和虚拟交换机的选择:在SDN云数据中心,vxlan封装可以是物理交换机,也可以是虚拟交换机。通常,基于虚拟交换机的vxlan封装称为软件方案,基于物理交换机的封装称为硬件方案。这两种方案各有优缺点,云数据中心可以根据自身的业务模型和规模进行适配和选择。在软件方案中,每台硬件服务器上都有一个虚拟交换机来承载vxlan的封装/解封装。以开源的OVS为例,虚拟交换机有br-int和br-tun两个网桥,br-tun承载了vlxan功能。还有其他商业解决方案,其中所有通信功能只有一个网桥。控制器与大量虚拟交换机的控制流量交互,是解决方案的难点。特别是当虚拟交换机有firstpacketrequest机制时,对controller的压力比较大。在硬件方案中,vlxan的封装/解封装通常由接入交换机承担。接入交换机通常连接24/48台硬件服务器,与同规模数据中心的软件方案相比,大大减少了vxlan设备数量。在一些商业解决方案中,接入交换机通常会运行bgpevpn来交换控制平面上的主机路由等关键信息。在硬件方案中,通常会用到上述localvlan/globalvxlan/globalvlan这三种隔离概念。由于vxlan设备本地隔离域非常大,用户之间的隔离和用户间互通的流量模型极其复杂。为了区分不同的用户,通常在vxlan设备中引入VRF,即一个用户对应一个VRF(VRF是全局有效的),简化了控制的复杂度。作者简介:刘颖,中国移动高级网络运维工程师,负责云数据中心SDN网络架构设计、运维、优化等工作,具有丰富的运维实践经验.
