您好,登錄后才能下訂單哦!
如何分析Neutron網絡,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
CL210考試環(huán)境
筆者在今年參加了OpenStack CL210培訓。但是對培訓過程中實驗環(huán)境的網絡拓撲當時沒有弄明白,后來看了一些資料,總算有了大概的了解。
書上實驗的拓撲圖見上圖。乍一看,是不是有點復雜?
在實驗中,每個人分配了一個臺式機,臺式機是一個RHEL操作系統。通過里面的KVM虛擬化,虛擬出了兩個虛擬機Server-a和Server-b。Server-a有兩個網卡:eth2和eth3。后來我們做的事情,是在Server-a上以All-in-one的方式安裝OpenStack,第二個實驗是將ServerB作為Nova-Compute加入到OpenStack中。
當server-a上的openstack安裝好以后,創(chuàng)建的虛擬機實例就是基于servera RHEL中的KVM做的。也就是說,最終我們創(chuàng)建的openstack實例,實際上的三層嵌套虛擬化。
談到OpenStack的網絡,很多人不是很了解細節(jié),但vSphere的網絡大家都比較了解,下面我們先上一張熟悉的圖:
一個標準的虛擬機交換機,可以有上行鏈路或者沒有上行鏈路(Uplink)。這取決于這個VSS是否要對外通訊。而一個VSS實際是一個虛擬的二層橋接設備。
一個VSS可以接多個VM,通過不同的PortGroup可以區(qū)分vLAN。
在一個esxi上的VSS的通訊,是在VMKernel完成的。而在不同esxi上的VSS,是通過物理網絡來通訊的。
在vSphere中,物理網卡叫Nic,虛擬網卡叫vNIC。
接下來,我們看下面這張圖:
在上圖中,最右邊的Instance,也就是是三層嵌套下的OpenStack實例。這這個實例,要實現對完通訊,需要有幾個步驟。
第一步:虛擬機發(fā)出網絡包。虛擬機實例有一個虛擬網卡,叫eth0。數據包從eth0出來以后,首先連接到vnet0上。vnet0是一個tap設備。那么,什么是tap呢?
Tap實現連接作用,實現二層包通訊。在上圖中,tap連接了qbr和實例中的eth0。我們可以理解成tap將虛擬機的虛擬網卡和qbr設備連接到了一起。
第二步:網絡包到達qbr。
那么qbr是什么呢?
qbr是一個Linux網橋。這個網橋存在于server-a上。從qbr到br-ex經過了兩個設備:qvo和qvb。這兩個設備是成對出現的,用于連接linux bridge和OVS bridge。qvb位于bridge側,qvo位于OVS bridge側。
第三步:網絡包到達br-int。
那么,什么是br-int呢?br-int是由OVS虛擬出來的網橋,它的作用和vSphere中的VSS是類似的。(實際上,OVS在作為網橋功能的時候,本身與Linux Bridge類似)。Br-int的作用,就是將本KVM Hypervisor上的所有虛擬機實例都連接到這個虛擬交換機上。
我們知道,在vSphere的VSS上,可以通過portgroup區(qū)分vLAN。同樣,br-int的port也有這個功能。
Port的一個重要的方面就是VLANConfiguration,有兩種模式:
trunk port
access port
第四步:網絡包到達Router1
我們接著看,br-int向右連接到了qdhcp上,它的作用就是為虛擬網絡提供dhcp功能的。
br-int向左連接到了router1上,而router1又連接到了br-ex上。Br-init與路由器的連接,經過了qr設備,qr提供的是從二層虛擬網絡到三層虛擬網絡的連接。
router1實現的是路由功能,它也是由OVS提供的。它里面包含的內容是一系列的路由表,作用是為不同子網提供路由功能。路由器中還有NAT的表,負責給實例分配浮動IP。
第五步:網絡包通過br-ex發(fā)出去到物理網絡:
br-ex也是一個OVS虛擬網橋,br-ex實際上是混雜模式加載在物理網卡上,實時接收著網絡上的數據包。
那么有人會問,在OpenStack架構中,既然有OVS提供bridge,為何還要用Linux網橋?為什么不讓虛擬機實例中的eth0(vnet0)直接連接到br-int上呢?
答案如下:
也就是說,理想情況下,本來虛擬機虛擬網卡連接設備tap0,直接連接br-ini應該是可以的。但由于Openstack的安全組使用的是iptables,而OVS不支持iptables,因此才在vnet0和br-int上放了一個linux bridge,用于存放iptables規(guī)則。這算是一個折中方案。
需要指出的是,目前Neutron支持的網絡分為兩大類型,Provider Network和Self Network。
Provider network:管理員創(chuàng)建的和物理網絡有直接映射關系的虛擬網絡。使用Provider Network,虛擬機對外通訊不需要走Neutron中的Router。
Tenant network:租戶普通用戶創(chuàng)建的網絡,物理網絡對創(chuàng)建者透明,其配置由 Neutron根據管理員在系統中的配置決定。這種網絡下,虛擬機對完通訊需要經過Router。而Router也可以隔離租戶。
無論哪種方式,對于我們在分析內部虛擬網絡的網絡包走向,區(qū)別不是很大,那么,在下圖中(Provider network),實例中的虛擬機如何將網絡包傳出到物理網絡呢?
有兩個虛擬機instance1、instance2位于同一個Hypervisor,它們的網卡在兩個vLAN中。instance1的網絡包發(fā)送的物理網絡需要如下幾個步驟:
第一步:網絡包離開instance1
第二步:網絡包到達qbr,也就是linux bridge
第三步:網絡包到達qvo以后,qvo給網絡包打上內部的vlan tag。(Provider network才需要內部和外部vLAN的轉換)
第四部:網絡包到達br-ex(br-eth2),內部的vlan tag被換成真實的vlan tag。
第五步:網絡包通過eth2傳送到物理網絡。
上面的例子中,hypervisor都是一個,如果多個nova節(jié)點,顯然用一個br-int已經無法連接兩個服務器上的VM。怎么辦呢?
在物理交換機上,可以通過級聯線級聯。在OVS bridge中則通過br-tun進行級聯,讓各個物理服務器上的br-int構成一個統一的通信層。
Openvswitch支持三類Tunnel
gre
vxlan
看到vxlan,可能很多同學眼睛一亮。是的,目前業(yè)內大多數大二層網絡的實現,都是通過vxlan協議。而大二層又通常是“雙活數據中心”這個高大上名詞的基礎。
在NSX中,VXLAN的封包和解包是通過ESXi上的VTEP(A Virtual Tunnel End Point)完成的:
我們看一下下面這個圖:兩個實例屬于同一個子網,但是在不同的物理服務器上,那么就需要br-tun來進行通訊。
在Neutron中,可以實現對VXLAN的封包和解包的功能。但如果想提高性能,也可以與物理網絡設備進行配合。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。