SDN跟网络虚拟化的完美结合
之前说过,所谓的“SDN最适合的领域是数据中心”的说法,笔者认为更准确的说法应该是SDN最适合的领域是数据中心中的网络虚拟化应用。为什么说SDN 非常适合用在网络虚拟化中呢?因为出于自动化部署的需求,网络虚拟化的架构本身就是集中式控制,而且是软件应用控制整个虚拟网络,这跟SDN的特征非常吻 合。网络虚拟化主要用在提供云服务的网络中。
在云服务网络的实际部署中,有使用虚拟交换机来做Tunnel Overlay网络终结的方案,也有出于性能考虑使用硬件交换机做Tunnel Overlay网络终结的方案。
当然我们知道,云服务网络部署是一个系统工程,涉及很多方面,管理员直接接触到的既不是交换机,也不是网络虚拟化工具,而是一个云服务管理平台,或者叫云 计算平台,比如OpenStack、CloudStack或者云服务提供商自己设计的私有的平台。这个云计算平台负责管理很多资源,包括计算、存储、网络 等。
云计算平台本身的基础架构中,所用到的网络功能相对简单,就是普通的桥接技术,但是一般都会有跟第三方应用服务程序的接口,比如OpenStack就可以 通过插件(plug-in)的方式集成第三方的程序,第三方公司开发的专业的网络虚拟化平台一旦集成到云计算平台中,就可以大大增强云计算平台网络自动化 部署的能力。通常这些网络虚拟化平台都会集成一个Controller,比如Nicira的NVP,就有自己的Controller集群。云计算平台要部 署网络服务的时候,就会通过插件向这些网络虚拟化平台内置的Controller发消息,比如要在两个Hypervisor之间创建Tunnel,并将一 些VM绑定到这个Tunnel上去,以及配置一些网络安全策略或者QoS策略等。
Controller自己自然不会去做这些事情,它就通过Controller跟交换机(虚拟交换机或者硬件交换机)之间的南向接口,比如 OpenFlow或者OF-Config、NetConf或者别的公有或私有的接口,向交换机发消息去配置交换机。云计算平台要求集中化控制,网络虚拟化 要求集中化控制,SDN要求集中化控制,三者想不结合在一起都很难,而且这种结合是水到渠成,轻而易举的,只需要一些接口和插件就可以做到。所有的这一切 都是为了自动化部署。
盛科网络跟国内的云服务提供商九州云联合开发了OpenStack+硬件网络虚拟化+SDN的方案。之前九州云的数据中心里面用的是 OpenStack+OVS的纯软件方案,后来遭受了严重的性能问题,因为一台服务器里面虚拟机一多,随着网络流量的增大,网络交换部分带给CPU的压力 就很大了。在盛科和九州云的联合方案中,通过最小的改动,用盛科的SDN交换机V350代替了OVS,将Tunnel加解封装,安全过滤,基于VM的 QoS策略等网络功能放到了硬件交换机中,性能得到大幅度提升。而且这个方案充分考虑了之前云网络管理员的管理习惯,并没有将服务器跟网络分隔开来,对云 网络的管理员来说,他并没感知到现在用的是虚拟交换机还是硬件交换机。
图7-3该方案的架构图,其中用了开源的Ryu Controller,Tunnel是NvGRE,总共可以支持32KB VM以及12KB的Tunnel。转发面全部是基于纯粹的OpenFlow。
本文节选自《深度解析SDN——利益、战略、技术、实践》
张卫峰 编著
电子工业出版社出版