VM-based OpenStack Neutron Framework解析

当前,Neutron的二层控制面基于ML2实现,三层以上基于Service Framework。而Neutron在大规模扩展性、稳定性的问题也更多存在在L3模块。

那么社区在这个方面的开发方向上,主要有三个:

(1)利用第三方SDN解决方案,包括OVN、Midonet、OpenDayLight等。

(2)开发DVR、L3 HA,在已有解决方案上进行修改、重构、添加所需的功能。

(3)利用第三方开源网络操作系统,比如Vyatta(闭源)、VyOS(Vyatta开源版本)、Akanda等。

在使用第三方开源网络操作系统时,由于这些NOS,功能已经完善,包括Tunnel、NAT、Port Forwarding、QoS、Monitoring、VPN、Load Balancing等等,所以一般最直接的就是将其作为Service VM,为每个租户服务。

 

那么如何实现这样的基于VM的服务框架?

(1)因为ML2框架负责计算节点间的东西向网络,如果将其应用到ML2上,势必需要每个计算节点都运行一台这样的SVM作为Local Gateway,将该计算节点上的租户VM的流量进行统一处理转发。

那么,首先带来的问题就是,CapEx将大大提高。所以,更多的,还是将其应用到Service Framework上。这样的话,ML2+OVS/Linuxbridge,这样的部署模式就需要保留。

(2)下一步我们要考虑一个复杂的依赖问题就是,谁来负责SVM的生命周期管理。

从Brocade实现的Vyatta Plugin和Akanda项目看来,都是选择了Nova,毕竟Nova本身就已经实现了虚拟机生命周期的管理,但是Nova启动的VM,还是要依赖于Neutron配置网络,这样的互相依赖在生产环境下一旦出现Bug,异常之类的问题,则有可能会导致灾难。所以,如果通过Nova来管理,更多的是创建Admin租户的Provider Network,将SVM直接连接到物理网络上,这样转发面更清晰。

这里就存在着工作量的问题,需要开发一套Health Check、Auto-Orchestration来服务这样的SVM,当前都是由Vyatta和Akanda项目自己实现的,我个人觉得,也许引入Heat是一个更好的选择。

(3)然后就是将Neutron L3/LBaaS/VPNaaS/FWaaS等服务框架的Plugin API进行实现,社区已经开发了基于Vyatta和Akanda的,并不是特别复杂的工作。所以从我的角度说,与其去研究这几个别人都实现好的项目,还不如自己基于开源的VyOS实现。

 

【1】Brocade Vyatta Plugin:https://github.com/openstack/neutron/tree/master/neutron/services/l3_router/brocade

【2】Akanda Project:https://github.com/stackforge/akanda

【3】VyOS:http://vyos.net/wiki/Main_Page

你可能感兴趣的:(SDN,云计算,OpenStack,neutron,sdn,openstack,网络,开源)