標籤:
1.為什麼還需要linux bridge的部署方式?
2.哪一個橋接器起著交換器的作用?
3.neutron如何?私人網路的隔離
==================================================
很久之前寫了一篇關於OpenStack Neutron解析的文章,那時只是粗略的寫了一下把Neutorn的整體架構分析了一下,後來一直忙於其他事情,也就忘了去詳細分析一下Neutron的架構。這次這篇算是完成未完之事,同時也是對之前的一個知識的總結及恢複。
OpenStack的Neutron自從由nova-network從Nova中分離出來之後,一直感覺十分的不穩定,而且初期其結構也是十分的複雜。很多人剛剛接觸Neutron,甚至剛剛接觸OpenStack的時候,都是被困在Neutron異常複雜的機制。尤其當我們部署了一套由Neutron管理網路的OpenStack環境時,會發現很多時候都是在解決各種莫名奇妙的問題,但我們糾察問題時,總是會涉及Neutron。所以,我總是一直認為在實際的生產環境中,如果不是對於網路真的有著很特殊的需求,直接部署OpenStack的Essex版本,別人問我,我也是如是的回答。但是,我們如果是想研究OpenStack的話,Neturon的可玩性還是很大的,尤其是其支援SDN等一些很前瞻性的特性。所以,對於Neturon我們有必要深入的研究一番。
接著上次的那篇文章,我們再來重新回顧一下Neutron的架構,從物理上劃分的話,我們的Neutron主要部署在兩類節點上:Compute節點和Network節點,而至於Controller節點,那不是主要的所在,因為幾乎所有的組件都要在部署一個server服務在Controller節點上。從網路分層上來看,主要分為二層網路L2-Agent,三層網路L3-Agent,以及DHCP-Agent。借用官網上幾張圖片,按照物理劃分的方式,大致分析一下Neutron架構。
Compute節點
這張圖摘自官網,為Compute節點的網路架構及流程分析圖。這張圖中,我們可以清楚的看到網路相關的一些裝置(其實就是一些進程或者系統介面)被分為四類:TAP device,veth pair,Linux Bridge,Open vSwitch,這裡其實用的Open vSwitch的方式部署Neutron,而我之前也一直使用Open vSwitch部署的,但是這裡卻也是有著Linux Bridge的,正如之前文章所言,這個是為了實現安全性群組功能,但Open vSwitch暫不支援OpenStack的實現方式,所以只好用Linux Bridge實現qbr橋接器作為一個折衷方案。接下來就是最為大頭的Open vSwitch,它在Neutron中構建了一個虛擬交換器,而這個虛擬交換器由L2-Agent控制著,最終所有Compute節點中的虛擬交換器統一構成一個巨大的虛擬交換器,統一控制虛擬機器在二層網路的資料交換和接入功能。我們可以看出每個Compute節點有兩個Open vSwitch橋接器,其實br-int才是真正扮演交換器角色的,而br-eth1則是通過GRE通道在所有節點之間構成一個統一的通訊層,實現各個Compute節點上虛擬機器之間的通訊。
Network節點
接下來就是看看Network節點上的情況,下面的是Network節點的原理圖:
這張圖上,我們可以清楚看到Network節點被分為三大部分:Configured by L2-Agent,Configured by L3-Agent,Configured by DHCP-Agent,而L2-Agent那部分和我們在Compute節點討論的是一致的,所以此處就忽略了。接著我們看L3-Agent,在Neutron中,出現了私人網路這一概念,當然也是實際存在的。而依據以前的nova-network,是無法實現這一功能的,nova-network頂多能使用VLAN技術實現網路隔離,而無法實現真正的私人網路。在物理網路中,我們要想實現一個私人網路,那麼就必須有個路由器才行,而L3-Agent正是Neutron中實現這個路由器而存在的(事實上,我們在Havana版本中部署的環境中,網路拓撲圖中就很形象的顯示了這些routers),L3-Agent的底層實現採用的是Linux系統內建的iptables技術,通過動態組建組態iptables規則,實現網路的路由功能以及floatip功能。而每個使用者都要一個私人網路的話,一個路由肯定是不夠用的,接著就是Linux中namespace技術的用武之地了,事實上,Neutron為每個私人網路都配置一個router和dnsmasq,而這個就是依靠namespace進行規則和配置的隔離。如所示:
現在,每個私人網路可以建立了,但是我們總不能為每個虛擬機器手動設定私人ip的,所以這時候DHCP-Agent就顯示了其用處,DHCP-Agent通過控制dnsmasq實現了DHCP功能,這樣每個虛擬機器在啟動的時候就可以動態擷取私人ip了。
-----------------
轉載自:
http://www.aboutyun.com/thread-8716-1-1.html
http://panpei.net.cn/2014/05/22/openstack-neutron-analyse/
[轉]OpenStack Neutron解析