openstack 網絡發展簡史
研究openstack有2個月的時間,這段時間從網上擷取N多寶貴資料,對我的學習有很大幫助,在加上我自己的研究,終于對openstack整個網絡體系有了個淺顯的認識,寫幾篇文章,一個是對以往資料的總結,二來也希望的我的總結能為更多學習openstack的朋友們提供幫助。廢話到這,進入正題。
nova-network:openstack最開始網絡元件叫nova-network,其代碼也都在nova中,支援的插件隻有Linux bridge,網絡拓撲包括flat和vlan。
quantum:後來為了支援更多的插件,更多的網絡拓撲,與nova互動更靈活,出現了quantum工程,quantum相比與nova-network,主要多出如下功能:
支援更多的插件:Linux bridge、ovs、其它商業公司的插件(bigswitch、brocade plugin、cisco、hyper-v、midonet、NEC openflow、plumgrid、ryu、VMware nsx),非官方統計,linux bridge 31%、ovs 39%、cisco 11%、other 19%,可以看出網絡插件大家更傾向于Linux bridge和ovs,至于bridge和ovs的優缺點,後面會專門讨論;
支援隧道技術gre、vxlan;
多出l3-agent和dhcp-agent,l3-agent用于路由和nat(iptables)、dhcp-agent用于fixed ip的dhcp配置設定(基于dnsmasq實作);
neutron:quantum由于與一家公司重名,在Havana版本中更名為neutron。neutron相比于quantum,多出來的最主要的功能是公共插件ml2。ml2主要功能如下:
實作一種類型的插件一般包括兩個部分,一 部分與資料庫db打交道的*-plugin,一部分是調用具體的網絡裝置真正幹活的*-agent,由于衆多插件,其與db打交道的代碼都是重複的,抽出重複代碼則形成了ml2-plugin
MechanismDriver,實作多個插件共存,比如Linux bridge和ovs共存,MechanismDriver的作用是将agent的類型agent_type和vif_type關聯,這樣vif_type就可以直接通過擴充api靈活設定了,是以想用 linux bridge,就在vif_type裡,将port綁定成linux bridge,想用ovs,将port綁定成ovs。
在配置檔案ml2_conf.ini可以将不同網絡拓撲(flat/vlan/gre/vxlan)共存。
以上就是目前openstack 網絡發展簡史,在這個過程中,我們不得不思考一個問題,在實際網絡部署時,nova-network和neutron的選擇、插件bridge和ovs的選擇、網絡拓撲flat、vlan、gre、vxlan的選擇,這些類别的優缺點在後續blog中會進一步展開讨論。