OpenStack Neutron淺析(二)

計算、存儲和網絡,奠定了當今雲計算格局的三足鼎立之勢。

計算通過虛擬化CPU、disk、Memory等硬件來獲得高效的應用;存儲通過分佈式的文件系統,提供了衆多特性的功能。而相對於,計算和存儲兩方面的成熟與穩定,網絡一直以其在穩定、效率、設計等方面,而備受人們愛之、痛之。

隨着物聯網和雲計算的蓬勃發展,網絡作爲信息傳輸的橋樑,其地位和重要性只會愈加凸顯。從另一種角度而言,鑑於Neutron的高度複雜性。我們將陸續由淺入深的予以闡述和講解Neutron。

同時,自己也在學習過程中,深感水平有限,如有不當之處,懇請指正,乃不勝感激。

注意

  1. 學習Neutron,你可能需要網絡方面的基礎理解。
  2. 本篇,我們主要從下面出自官網(Neutron VXLAN模式)的圖,講解Neutron世界中虛擬出來的各種“網橋”;以及Compute節點上的VM,是如何歷經千山萬水,到達Network節點上和外網握手的。
  3. 記憶與理解下圖後,將有助於理解Neurton機制。
    在這裏插入圖片描述

從這張架構圖中,我們可以明顯的看到有兩個物理主機,計算節點和網絡節點。

計算節點:虛擬機網絡

在上面的高清圖中,我們先來看看A、B、C這三段的流程。A就是虛擬機VM1的虛擬網卡,首先來說,它是一個以tapxxxx命名的網絡設備。和它相連的B也是一個TAP設備,通常是以tap開頭的一段名稱,它掛載在Linux Bridge qbr-XXXX上面。

OK,現在我們有點暈頭了。

什麼是TAP設備呢?Linux 中的虛擬網絡給出了這樣的解釋:

TAP是一個虛擬網絡的內核驅動,該驅動實現了Ethernet設備(網卡),並在Ethernet框架級別操作。TAP驅動提供了Ethernet “tap”,訪問Ethernet框架能夠通過它進行通信。

總而言之,TAP設備其實就是一個Linux內核虛擬化出來的一個網絡接口。OK,我們現在簡單粗暴的知道了TAP設備,如果還是不明白可以Google之TAP的具體定義。

接下來就是qbr了,這在上面有提到,這是一個Linux Bridge,很是奇怪,我們在OpenStack中,明明已經使用了OpenvSwitch來實現虛擬二層交換設備的,爲什麼又會出現Linux Bridge呢?

所謂,存在即合理。這是因爲OpenvSwitch不支持現在的OpenStack 部分高級網絡功能的實現方式(至少目前還是這樣的)。因爲OpenStack把iptables規則丟在了TAP設備中,以此實現了安全組功能。沒辦法,所以用了一個折衷的方式,在虛擬機到OpenvSwitch的中間加了一層,用Linux Bridge來實現吧,這樣,就莫名其妙的多了一個qbr網橋。在qbr上面還存在另一個設備C,這也是一個TAP設備。C通常以qvb開頭,C和OpenvSwitch之br-int上的D連接在了一起,形成了一個連接通道,使得qbr和br-int之間可以順暢通信。

計算節點:集成網橋(br-int)的網絡

剛纔說到D(這也是一個TAP設備)在br-int上面,現在輪到br-int出場了,br-int是由OpenvSwitch虛擬化出來的網橋,但事實上它纔是充當了一個真正虛擬交換機的功能。

br-int的主要職責就是把它所在的計算節點上的VM都連接到它這個虛擬交換機上面,然後利用下面要介紹的br-tun的穿透功能,實現不同計算節點上的VM連接在同一個邏輯虛擬交換機上面的功能。這個似乎有點拗口,其實就是在管理員看來,所有的VM都是連接在一個虛擬交換機上面的,但事實上這些VM又都是分佈在不同的物理主機上面。

OK,回到D上面,D通常以qvo開頭。在上面還有另一個端口E,它總是以patch-tun的形式出現,從字面上就可以看出它是用來連接br-tun的。

計算節點:通道網橋(br-tun)的網絡

br-tun在上面已經提及了,這同樣是OpenvSwitch虛擬化出來的網橋,但是它不是用來充當虛擬交換機的,它的存在只是用來充當一個通道層,通過它上面的設備G與其他物理機上的br-tun通信,構成一個統一的通信層。

這樣的話,網絡節點和計算節點、計算節點和計算節點之間就會點對點的形成一個以GRE(使用通用路由封裝協議來實現)、VXLAN(主要是將二層的MAC封裝在三層的UDP協議中來實現)爲模式的Neutron通信網絡,互相之間通過這個網絡進行大量的數據交換。這樣,網絡節點和計算節點之間的通信就此打通了。而圖中的G、H描畫的正是這一通信。

網絡節點:通道網橋(br-tun)的網絡

正如前面所說,網絡節點上也是存在一個br-tun的,它的作用同計算節點上的br-tun如出一轍,都是爲了在整個系統中構建一個統一的通信層而存在的。所以,這一部分的網絡同計算節點上的網絡功能是一致的,因此,這裏將走過。

網絡節點:集成網橋(br-int)的網絡

網絡節點上的br-int也是起了一個虛擬交換機的作用,它通過I、J與br-tun連接在一起。

最重要的是,在這個虛擬交換機上,還有其他兩個重要的tap設備M、O,它們分別同N、P相連,而N、P作爲tap設備則是分別歸屬兩個NameSpace,即router和dhcp,沒錯,正如這兩個NameSpace的名稱所示,它們承擔的就是router和dhcp的功能。

這個router是由l3-agent根據網絡管理的需要而創建的,然後,該router用於和特定的租戶子網綁定在一起,用於實現該子網內的IP地址的路由轉換功能。router實現路由功能,則是依靠在Linux namespace中的iptables實現的(關於iptables,我們將在後續文章中予以剖析)。

dhcp則也是l3-agent根據需要針對特定的子網創建的,在這個namespace中,l3-agent會啓動一個dnsmasq的進程,由它來實際掌管該子網的dhcp功能。由於這兩個namespace都是針對特定的子網創建的,因而在現有的OpenStack系統中,它們常常是成對出現的。

網絡節點:外部網橋(br-ex)的網絡

當數據從router中路由出來後,就會通過L、K傳送到br-ex這個虛擬網橋上,而br-ex實際上是混雜模式加載在物理網卡上的,實時接收着網絡上的數據包。至此,我們的計算節點上的VM就可以與外部的網絡進行自由的通信了。當然,前提是我們已經給這個VM已經分配了floating-ip。

至此,關於OpenStack Neutron網橋的概念性分析大致描述到此。

原文鏈接:http://trystack.cn/Articles/OpenStack-Neutron.html

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