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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章