如何分析Neutron網(wǎng)絡(luò),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),江門企業(yè)網(wǎng)站建設(shè),江門品牌網(wǎng)站建設(shè),網(wǎng)站定制,江門網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,江門網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
CL210考試環(huán)境
筆者在今年參加了OpenStack CL210培訓(xùn)。但是對(duì)培訓(xùn)過程中實(shí)驗(yàn)環(huán)境的網(wǎng)絡(luò)拓?fù)洚?dāng)時(shí)沒有弄明白,后來看了一些資料,總算有了大概的了解。
書上實(shí)驗(yàn)的拓?fù)鋱D見上圖。乍一看,是不是有點(diǎn)復(fù)雜?
在實(shí)驗(yàn)中,每個(gè)人分配了一個(gè)臺(tái)式機(jī),臺(tái)式機(jī)是一個(gè)RHEL操作系統(tǒng)。通過里面的KVM虛擬化,虛擬出了兩個(gè)虛擬機(jī)Server-a和Server-b。Server-a有兩個(gè)網(wǎng)卡:eth2和eth3。后來我們做的事情,是在Server-a上以All-in-one的方式安裝OpenStack,第二個(gè)實(shí)驗(yàn)是將ServerB作為Nova-Compute加入到OpenStack中。
當(dāng)server-a上的openstack安裝好以后,創(chuàng)建的虛擬機(jī)實(shí)例就是基于servera RHEL中的KVM做的。也就是說,最終我們創(chuàng)建的openstack實(shí)例,實(shí)際上的三層嵌套虛擬化。
談到OpenStack的網(wǎng)絡(luò),很多人不是很了解細(xì)節(jié),但vSphere的網(wǎng)絡(luò)大家都比較了解,下面我們先上一張熟悉的圖:
一個(gè)標(biāo)準(zhǔn)的虛擬機(jī)交換機(jī),可以有上行鏈路或者沒有上行鏈路(Uplink)。這取決于這個(gè)VSS是否要對(duì)外通訊。而一個(gè)VSS實(shí)際是一個(gè)虛擬的二層橋接設(shè)備。
一個(gè)VSS可以接多個(gè)VM,通過不同的PortGroup可以區(qū)分vLAN。
在一個(gè)esxi上的VSS的通訊,是在VMKernel完成的。而在不同esxi上的VSS,是通過物理網(wǎng)絡(luò)來通訊的。
在vSphere中,物理網(wǎng)卡叫Nic,虛擬網(wǎng)卡叫vNIC。
接下來,我們看下面這張圖:
在上圖中,最右邊的Instance,也就是是三層嵌套下的OpenStack實(shí)例。這這個(gè)實(shí)例,要實(shí)現(xiàn)對(duì)完通訊,需要有幾個(gè)步驟。
第一步:虛擬機(jī)發(fā)出網(wǎng)絡(luò)包。虛擬機(jī)實(shí)例有一個(gè)虛擬網(wǎng)卡,叫eth0。數(shù)據(jù)包從eth0出來以后,首先連接到vnet0上。vnet0是一個(gè)tap設(shè)備。那么,什么是tap呢?
Tap實(shí)現(xiàn)連接作用,實(shí)現(xiàn)二層包通訊。在上圖中,tap連接了qbr和實(shí)例中的eth0。我們可以理解成tap將虛擬機(jī)的虛擬網(wǎng)卡和qbr設(shè)備連接到了一起。
第二步:網(wǎng)絡(luò)包到達(dá)qbr。
那么qbr是什么呢?
qbr是一個(gè)Linux網(wǎng)橋。這個(gè)網(wǎng)橋存在于server-a上。從qbr到br-ex經(jīng)過了兩個(gè)設(shè)備:qvo和qvb。這兩個(gè)設(shè)備是成對(duì)出現(xiàn)的,用于連接linux bridge和OVS bridge。qvb位于bridge側(cè),qvo位于OVS bridge側(cè)。
第三步:網(wǎng)絡(luò)包到達(dá)br-int。
那么,什么是br-int呢?br-int是由OVS虛擬出來的網(wǎng)橋,它的作用和vSphere中的VSS是類似的。(實(shí)際上,OVS在作為網(wǎng)橋功能的時(shí)候,本身與Linux Bridge類似)。Br-int的作用,就是將本KVM Hypervisor上的所有虛擬機(jī)實(shí)例都連接到這個(gè)虛擬交換機(jī)上。
我們知道,在vSphere的VSS上,可以通過portgroup區(qū)分vLAN。同樣,br-int的port也有這個(gè)功能。
Port的一個(gè)重要的方面就是VLANConfiguration,有兩種模式:
trunk port
access port
第四步:網(wǎng)絡(luò)包到達(dá)Router1
我們接著看,br-int向右連接到了qdhcp上,它的作用就是為虛擬網(wǎng)絡(luò)提供dhcp功能的。
br-int向左連接到了router1上,而router1又連接到了br-ex上。Br-init與路由器的連接,經(jīng)過了qr設(shè)備,qr提供的是從二層虛擬網(wǎng)絡(luò)到三層虛擬網(wǎng)絡(luò)的連接。
router1實(shí)現(xiàn)的是路由功能,它也是由OVS提供的。它里面包含的內(nèi)容是一系列的路由表,作用是為不同子網(wǎng)提供路由功能。路由器中還有NAT的表,負(fù)責(zé)給實(shí)例分配浮動(dòng)IP。
第五步:網(wǎng)絡(luò)包通過br-ex發(fā)出去到物理網(wǎng)絡(luò):
br-ex也是一個(gè)OVS虛擬網(wǎng)橋,br-ex實(shí)際上是混雜模式加載在物理網(wǎng)卡上,實(shí)時(shí)接收著網(wǎng)絡(luò)上的數(shù)據(jù)包。
那么有人會(huì)問,在OpenStack架構(gòu)中,既然有OVS提供bridge,為何還要用Linux網(wǎng)橋?為什么不讓虛擬機(jī)實(shí)例中的eth0(vnet0)直接連接到br-int上呢?
答案如下:
也就是說,理想情況下,本來虛擬機(jī)虛擬網(wǎng)卡連接設(shè)備tap0,直接連接br-ini應(yīng)該是可以的。但由于Openstack的安全組使用的是iptables,而OVS不支持iptables,因此才在vnet0和br-int上放了一個(gè)linux bridge,用于存放iptables規(guī)則。這算是一個(gè)折中方案。
需要指出的是,目前Neutron支持的網(wǎng)絡(luò)分為兩大類型,Provider Network和Self Network。
Provider network:管理員創(chuàng)建的和物理網(wǎng)絡(luò)有直接映射關(guān)系的虛擬網(wǎng)絡(luò)。使用Provider Network,虛擬機(jī)對(duì)外通訊不需要走Neutron中的Router。
Tenant network:租戶普通用戶創(chuàng)建的網(wǎng)絡(luò),物理網(wǎng)絡(luò)對(duì)創(chuàng)建者透明,其配置由 Neutron根據(jù)管理員在系統(tǒng)中的配置決定。這種網(wǎng)絡(luò)下,虛擬機(jī)對(duì)完通訊需要經(jīng)過Router。而Router也可以隔離租戶。
無論哪種方式,對(duì)于我們?cè)诜治鰞?nèi)部虛擬網(wǎng)絡(luò)的網(wǎng)絡(luò)包走向,區(qū)別不是很大,那么,在下圖中(Provider network),實(shí)例中的虛擬機(jī)如何將網(wǎng)絡(luò)包傳出到物理網(wǎng)絡(luò)呢?
有兩個(gè)虛擬機(jī)instance1、instance2位于同一個(gè)Hypervisor,它們的網(wǎng)卡在兩個(gè)vLAN中。instance1的網(wǎng)絡(luò)包發(fā)送的物理網(wǎng)絡(luò)需要如下幾個(gè)步驟:
第一步:網(wǎng)絡(luò)包離開instance1
第二步:網(wǎng)絡(luò)包到達(dá)qbr,也就是linux bridge
第三步:網(wǎng)絡(luò)包到達(dá)qvo以后,qvo給網(wǎng)絡(luò)包打上內(nèi)部的vlan tag。(Provider network才需要內(nèi)部和外部vLAN的轉(zhuǎn)換)
第四部:網(wǎng)絡(luò)包到達(dá)br-ex(br-eth2),內(nèi)部的vlan tag被換成真實(shí)的vlan tag。
第五步:網(wǎng)絡(luò)包通過eth2傳送到物理網(wǎng)絡(luò)。
上面的例子中,hypervisor都是一個(gè),如果多個(gè)nova節(jié)點(diǎn),顯然用一個(gè)br-int已經(jīng)無法連接兩個(gè)服務(wù)器上的VM。怎么辦呢?
在物理交換機(jī)上,可以通過級(jí)聯(lián)線級(jí)聯(lián)。在OVS bridge中則通過br-tun進(jìn)行級(jí)聯(lián),讓各個(gè)物理服務(wù)器上的br-int構(gòu)成一個(gè)統(tǒng)一的通信層。
Openvswitch支持三類Tunnel
gre
vxlan
看到vxlan,可能很多同學(xué)眼睛一亮。是的,目前業(yè)內(nèi)大多數(shù)大二層網(wǎng)絡(luò)的實(shí)現(xiàn),都是通過vxlan協(xié)議。而大二層又通常是“雙活數(shù)據(jù)中心”這個(gè)高大上名詞的基礎(chǔ)。
在NSX中,VXLAN的封包和解包是通過ESXi上的VTEP(A Virtual Tunnel End Point)完成的:
我們看一下下面這個(gè)圖:兩個(gè)實(shí)例屬于同一個(gè)子網(wǎng),但是在不同的物理服務(wù)器上,那么就需要br-tun來進(jìn)行通訊。
在Neutron中,可以實(shí)現(xiàn)對(duì)VXLAN的封包和解包的功能。但如果想提高性能,也可以與物理網(wǎng)絡(luò)設(shè)備進(jìn)行配合。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。