OpenStack商用需要跨越的坎 -- 2. SDN方案的选择和实现

来源:互联网 发布:源码出售001zhan 编辑:程序博客网 时间:2024/05/29 19:41

说到云计算,就不能不提SDN(软件定义网络)。所有搞IT基础架构的人都清楚,网络是一个数据中心最核心的部分。而进入云计算时代,网络的重要性和复杂性更显突出。所谓重要性是因为如果没有网络的深度参与,云计算解决方案就只能称其为虚拟化+方案,也就是传统的计算、存储、二层网络的虚拟化再加上其它高级功能,这个功能可以是热迁移、应用自动化部署、监控、高可用,资源动态调度、分布式虚拟交换机等。具体的产品案例可以参考VMware的vSphere产品,Citrix的XenServer或者华为FusionSphere 5.0之前的产品。如果没有SDN,这个虚拟化+平台的发展就会受到极大的限制,因为它必须使用硬件网络上规划好的网段、负载均衡、防火墙、路由器、流量控制等。而传统的硬件网络是刚性的,规划配置好以后改动起来非常麻烦。云计算的精髓是根据租户的需要,快捷地为租户量身定做所需要的一切IT资源,刚性的硬件网络显然是无法满足这个要求的。


此外,说到SDN,很多人根据字面意思,就理解为必须是纯软件定义的网络。这个理解是有偏颇的,SDN的本质是实现可编程控制(定义)的网络。对最终用户来说,SDN网络要像我们获取虚拟机那样,在控制台上点击个按钮,输入一些简单参数就可以得到我们需要的网络资源。目前OpenStack的SDN实现是通过Neutron以纯软件的方式实现,主要被人诟病的地方就是性能和高可用性。其实这是目前纯软件SDN普遍的问题。


那么,SDN应该以什么样的方式融合到云计算当中。VMware的方案是以纯软件的方式来实现所有的SDN网络设备(控制器,交换机,路由器,防火墙,负载均衡,VPN等),而传统的企业网巨头是怎么做的呢?思科抛开OpenFlow,另起炉灶搞了OpFlex协议,并根据OpFlex协议搞了一个自家的ACI(Application Centric Infrastructure),用集中的控制器来控制虚拟交换机和物理网络设备,只是这里的物理网络设备只能是用思科自己芯片的设备。华为也推出了自己的AC(Agile Controller)控制器,来集中控制遵循OpenFlow协议的虚拟交换机和的物理网络设备,同时号称也能控制传统的非OpenFlow协议网络设备。另一家企业网大鳄华三也是类似,和华为一样遵循OpenFlow协议。这三家基本都是从网络硬件的思维出发,以硬件为主来实现SDN。


纯软件的解决方案好处是不依赖于物理网络,不需要对物理网络做任何的改造,当然它的缺点也很明显,就是规模大了以后性能会变差,此外就是网络的可视性比较差,因为物理交换机无法对虚拟交换机发出的做过Tunnel封装的数据包做统计。


最早的软件SDN方案需要将所有的路由、防火墙、负载均衡功能都集中在一个服务器上,具体可以参考Juno版本之前的OpenStack Neutron架构,如下:



这种架构的性能瓶颈非常明显,就是集中的网络处理节点。VMware为了解决这个问题,推出的分布式路由(DVR)的NSX方案,使得网络处理节点的压力得到缓解。OpenStack从Juno版本开始也推出了DVR的方案。DVR方案的原理是将原来的网络节点承担的L3路由和防火墙功能直接部署到计算节点上,网络节点依然保留所有的功能,整体架构如下:



上面是来自VMware NSX的一个架构示意图,可以看到分布式逻辑路由和防火墙都部署在计算节点,但是网络节点(也就是NSX Edge)仍然保留有FW, NAT, VPN, LB等功能。OpenStack DVR的设计架构基本和NSX是一致的,唯一的不确定的地方是OpenStack DVR是通过Linux network namespace来实现多租户隔离,但是NSX是如何实现的并不清楚,感觉采用namespace的可能性也很大。如下是OpenStack DVR的实现细节架构图:


在这种DVR的架构里,计算节点上的虚机如果分配了浮动IP,就可以通过L3 agent的路由直接访问外网,同时也可以使用L3 agent提供的防火墙功能。如果虚机没有分配浮动IP,就需要网络节点的SNAT访问外网,这也是为什么LB(负载均衡)服务必须放在网络节点的原因。LB里在添加成员虚机时只能使用成员虚机的私网IP,无法使用浮动IP。只有LB的VIP才能和浮动IP绑定。这就导致LB必须放在网络节点实现。


分布式路由(DVR)虽然一定程度上缓解了网络节点的压力,但是并没有从根本上解决网络性能隐患,在数据中心规模和网络压力增大的情况下还是会暴露出问题。总体来说,纯软件SDN的性能瓶颈主要出现在如下几个地方,而且很难仅仅通过软件的方式来解决:

1. 虚拟交换机(Neutron里的br-tun)在做Tunnel封装和解封时,需要在内存中移动数据报文,影响数据报文转发性能。

2. 被Tunnel封装的数据报文无法使用网卡的TSO功能,因为网卡认为它不是TCP报文。TSO就是允许操作系统将大的超过MSS的数据包直接发送给网卡,由网卡来做切片处理再发送到网络上,从而较少了系统的负载,并提高了网络处理性能。

3. 数据中心规模较大的情况下,虚拟交换机的流表数量也会大大增加,软件的查询方式效率低下。

4. 以iptables为基础实现的L3,NAT和负载均衡等网络功能(主要是OpenStack,NSX实现方式不确定)效率低下。

5. 即使采用分布式路由,单一的网络节点依然是一个瓶颈,因为负载均衡等数据流量较大的模块依然位于网络节点。


于是,基于硬件的SDN方案就出现了。思科、华为、华三在这方面投入了很多,推出了自己的控制器,SDN交换机以及网关设备。这些设备目前主要做的事情如下:

1. 去掉做Tunnel封装、解封的虚拟交换机,将功能移植到物理交换机上(主要是位于边缘的TOR交换机),这样不但可以利用上物理网卡的TSO功能,而且虚拟网络对物理网络就可见了。虚拟化平台仅仅需要保留2层的虚拟交换机即可。

2. 增加专用的Tunnel网关,用于Tunnel网络到外部网络的流量转发。

3. 通过集中的网络控制器实现对所有物理和虚拟网络的控制,实现SDN。


此外,华为还提出了Dragon Flow开源项目来替代现有的OpenStack Neutron DVR(分布式路由),其本质是通过流表的方式实现L2/L3功能,丢弃namespace和iptables。该项目目前仍然处于孵化期。


以华为的SDN方案为例,大体的架构图如下:


其中的VTEP就是处理Tunnel的TOR交换机,这里用到的Tunnel协议是VxLAN,GW用于Tunnel网络和外部网络的数据转发,Agile Controller是SDN控制器,能够对Tunnel交换机,网关和虚拟交换机(EVS)进行控制。


好吧,看到这是不是感觉还缺少了一些什么。上述的硬件SDN方案仅仅实现了把虚拟的Tunnel交换机功能用硬件交换机替代,并且使所有物理和虚拟网络可见。当然,还有其它一些高级功能,比如策略跟随什么的。但是那些虚拟网络组件(路由器、防火墙、负载均衡、VPN、NAT)都哪去了?硬件SDN方案里没有提到这些啊。到这里,就进入了SDN的深水区,下一步该怎么走呢?


华三的方案是所有的虚拟网络组件(路由器、防火墙、负载均衡等)由安装在虚拟机上的网络虚拟软件来实现,并且可以被SDN控制器所控制,如下所示:


因为华三的虚拟网络组件用的是自己的网络虚拟软件实现,所以只能做成集中式,就像之前所说的,这个集中式的网络节点将会成为一个瓶颈。而对于类似VMware NSX的分布式路由,如果能和这种硬件SDN相结合,性能将会更好一些。比如青云最近推出的SDN 2.0就是采用了分布式路由的方式分散网络负载。


华为、思科也和华三类似,没有把虚拟网络组件集成到硬件交换机里,而是依托于云管理软件或者虚拟化管理软件来实现虚拟网络组件。比较有意思的是一家规模小一些的网络公司盛科(Cintec),提出了一个纯硬件SDN的解决方案,把所有的网络功能都集中在硬件交换机里实现,架构如下:


这个架构的主要局限是受交换机设备硬件限制,负载均衡只能做到L2-L4。它的一个优势是SDN部分不受虚拟化平台的限制,理论上可以支持所有主流的云或者虚拟化平台,比如OpenStack,VMware, PowerVM, Xen, Hyper-V等。只需要这些虚拟化平台提供一个2层的虚拟交换机做转发即可。


到这里,目前所有的SDN实现方式就说完了,下面是总结的部分:

1. 纯软件SDN的优点是灵活,不需要改变底层物理网络。缺点是大规模、大负载的情况下性能比较差,以及虚拟网络对物理网络的不可见。性能这块可以通过分布式路由(DVR)、以及类似Dragon FLow这样的项目来优化,但是依然无法达到硬件的性能。负载均衡这一块还是需要集中到网络节点处理,容易出现性能瓶颈。把负载均衡做成一个分布式集群是一个思路,这方面青云新推出的SDN 2.0好像解决了,具体实现细节没有在公开资料上找到。


2. 华为,华三,思科三大网络厂商目前的方案更像是软、硬结合的思路。即Overlay网络(Tunnel网络)都由硬件来实现,但是虚拟网络设备(路由器、防火墙,负载均衡等)都还依赖于纯软件实现。这个方案只能说提升了Overlay网络的性能,并使得虚拟网络和物理网络可统一管理,并不是一个纯的硬件SDN解决方案。


3. 一些厂商(比如盛科)提出了纯硬件SDN的解决方案,很好了解决网络性能和可视性的问题,但是在负载均衡这一块只能做到L2-L4。功能这块的实现对网络厂商应该比较容易,但是云计算需要的多租户这块是如何实现的,现在还不得而知。


4. 未来SDN方案展望:对于规模较小的云数据中心,纯软件SDN的实现已经可以满足需求。对于规模较大的云数据中心,目前的趋势是软、硬件结合的混合SDN解决方案,越来越多的公有云公司开始寻求硬件网络厂商的帮助,私有云供应商包括微软,VMware也开始和硬件网络厂商合作,以解决大规模数据中心下SDN的发展瓶颈。未来不排除纯硬件的SDN解决方案,前提是混合SDN方案遇到一些无法克服的困难,这也需要网络厂商的共同推进。

0 0
原创粉丝点击