本文將對(duì)VLAN(VirtualLocalAreaNetwork,虛擬局域網(wǎng))和VxLAN(VirtualeXtentialLAN,虛擬可拓展局域網(wǎng))進(jìn)行探究。值得一提的是,雖然VLAN和VxLAN這兩個(gè)名字非常接近,不過(guò)其解決的問(wèn)題范疇是不同。
純物理的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)具有良好的性能,但是這種寫(xiě)死在電路里的拓?fù)浣Y(jié)構(gòu)不易修改,所能承載的業(yè)務(wù)需求也非常有限,因此有必要通過(guò)軟件化的方式來(lái)對(duì)網(wǎng)絡(luò)拓?fù)溥M(jìn)行改良,賦予其靈活性。
在設(shè)計(jì)物理網(wǎng)絡(luò)拓?fù)鋾r(shí),很難把需求一一對(duì)應(yīng)到拓?fù)湓O(shè)計(jì)中,即使花了大力氣按業(yè)務(wù)需求或組織架構(gòu)把網(wǎng)絡(luò)搭建起來(lái),未來(lái)也非常大概率需求會(huì)發(fā)生變化或組織架構(gòu)發(fā)生變化。這時(shí)候如果單一依靠物理網(wǎng)絡(luò)拓?fù)渚吞y為網(wǎng)絡(luò)架構(gòu)師了。
如上圖所示,在網(wǎng)絡(luò)搭建之初,通過(guò)交換機(jī)堆疊或級(jí)聯(lián)方式形成了一個(gè)大的二層網(wǎng)絡(luò),里面包含了PCwitheth0-1~8共8個(gè)主機(jī);后來(lái)業(yè)務(wù)需求發(fā)生了變化,同時(shí)為了安全和性能上的考慮,需要把這些連接在同一個(gè)二層網(wǎng)絡(luò)的機(jī)器區(qū)分開(kāi)來(lái),比如把eth0-1,6,7,8劃分為vlan-1子網(wǎng),把eth0-2,3,4,5劃分為vlan-2子網(wǎng)。當(dāng)eth0-1發(fā)送訊息時(shí),它首先向交換機(jī)獲取節(jié)點(diǎn)列表,這時(shí)候交換機(jī)返回給它的是eth0-6,7,8三個(gè)節(jié)點(diǎn),其他的eth0-2~5則不會(huì)返回;也就是說(shuō),雖然這8個(gè)節(jié)點(diǎn)是連接在同一個(gè)物理層面的二層交換機(jī)群,但是邏輯上已經(jīng)被分成了兩個(gè)交換機(jī)網(wǎng)絡(luò),即兩個(gè)VLAN網(wǎng)絡(luò)。
那么,如何讓上圖中展示的vlan-1中的機(jī)器與vlan-2中的節(jié)點(diǎn)互相通信呢?既然已經(jīng)可以看做是兩個(gè)分離的交換機(jī)網(wǎng)絡(luò)了,必須通過(guò)設(shè)定IP并配置網(wǎng)關(guān)的方式才能讓這兩個(gè)子網(wǎng)里的節(jié)點(diǎn)連通。
從原理上,可以把VLAN中節(jié)點(diǎn)的互通按照同一個(gè)交換機(jī)互通和跨交換機(jī)互通分別討論。
在一臺(tái)未設(shè)置任何VLAN的二層交換機(jī)上,任何廣播幀都會(huì)被轉(zhuǎn)發(fā)給除接收端口外的所有其他端口(Flooding)。為了實(shí)現(xiàn)VLAN,
①我們可以寫(xiě)一個(gè)配置文件,直接告訴交換機(jī)哪些端口屬于VLAN-1,哪些端口屬于VLAN-2。如果交換機(jī)比較高級(jí),
②我們還可以通過(guò)Mac地址、IP地址或其他用戶(hù)信息來(lái)動(dòng)態(tài)劃分VLAN,告訴交換機(jī)根據(jù)掛載到端口的節(jié)點(diǎn)的某個(gè)信息來(lái)動(dòng)態(tài)地調(diào)整哪些節(jié)點(diǎn)屬于VLAN-1,哪些節(jié)點(diǎn)屬于VLAN-2。
如果僅是同一個(gè)交換機(jī),因?yàn)榕渲眯畔⒍紝?xiě)入了系統(tǒng)存儲(chǔ),決策哪個(gè)端口屬于哪個(gè)VLAN是非常方便的。但是,一旦涉及到跨交換機(jī),問(wèn)題就變成了在多個(gè)大腦參與決策的情況下,如何實(shí)現(xiàn)信息的同步的問(wèn)題。比如PCwitheth0-2向交換機(jī)-a詢(xún)問(wèn)vlan-2網(wǎng)絡(luò)里的機(jī)器列表時(shí),交換機(jī)-a除了要返回自己身上掛載的節(jié)點(diǎn)外,還需要告知交換機(jī)-b它期望得到vlan-2網(wǎng)絡(luò)里的節(jié)點(diǎn)(而不是所有連通到交換機(jī)-b的節(jié)點(diǎn))。換句話(huà)說(shuō),勢(shì)必要通過(guò)某種方式把得到vlan-2網(wǎng)絡(luò)里的節(jié)點(diǎn)而不是所有節(jié)點(diǎn)這個(gè)信息在各交換機(jī)之間同步,否則就談不上vlan-2是虛擬局域網(wǎng)了。(題外話(huà),此刻應(yīng)該能感受到合作的首要條件是信息同步?。。。?/p>
進(jìn)一步地,
①我們可以在每當(dāng)多劃分出一個(gè)VLAN網(wǎng)絡(luò)時(shí)各交換機(jī)之間就多拉出一條線出來(lái)(通過(guò)交換機(jī)上的訪問(wèn)連接);比如在交換機(jī)-a與交換機(jī)-b之間拉起兩條線,一條專(zhuān)門(mén)用于彼此獲取vlan-1的節(jié)點(diǎn)列表,另一條專(zhuān)門(mén)用于彼此獲取vlan-2的節(jié)點(diǎn)列表。這種方式對(duì)交換機(jī)的要求比較低,不過(guò)顯然可擴(kuò)展性低,試想如果我們此刻多了一個(gè)vlan-3網(wǎng)絡(luò),那豈不是還要再多拉一條線。因此有了另一種方式,
②通過(guò)匯聚鏈接(只需一條線)把各個(gè)交換機(jī)連通起來(lái),在不同交換機(jī)間獲取節(jié)點(diǎn)列表時(shí)只需把特定vlan的信息加上;比如交換機(jī)-a向交換機(jī)-b發(fā)請(qǐng)求前,在請(qǐng)求中添加一個(gè)標(biāo)識(shí),標(biāo)明當(dāng)前請(qǐng)求索要的是vlan-1的節(jié)點(diǎn),當(dāng)交換機(jī)-b接收到請(qǐng)求后,看到標(biāo)識(shí)位是vlan-1,于是向所有的vlan-1中的節(jié)點(diǎn)發(fā)起廣播,從而只給交換機(jī)-a傳回vlan-1中的節(jié)點(diǎn)列表。
對(duì)于多臺(tái)交換機(jī)之間的VLAN的實(shí)現(xiàn),業(yè)界有兩個(gè)具有代表性的協(xié)議:1)一個(gè)是IEEE802.1Q,俗稱(chēng)“DotOneQ”,是經(jīng)過(guò)IEEE認(rèn)證的對(duì)數(shù)據(jù)幀附加VLAN識(shí)別信息的協(xié)議;2)另一個(gè)是ISL(InterSwitchLink),是Cisco產(chǎn)品支持的一種與IEEE802.1Q類(lèi)似的、用于在匯聚鏈路上附加VLAN信息的協(xié)議。(可以看出來(lái)為啥Cisco牛x了吧,有實(shí)力制定底層基礎(chǔ)設(shè)施的協(xié)議?。┚唧w協(xié)議的實(shí)現(xiàn)細(xì)節(jié)大家可以自行去搜索,這里就不詳細(xì)描述了。
十年前對(duì)云計(jì)算的論道,BAT三家給出了不同的看法,并且各家在各自的執(zhí)念中成長(zhǎng)與發(fā)展(基于此是否可以認(rèn)為一個(gè)人未來(lái)變成什么樣子與Ta能向前看多遠(yuǎn)有正相關(guān)的關(guān)系?);其實(shí)更早時(shí)間,Amazon已經(jīng)發(fā)力在做云計(jì)算的產(chǎn)品并被業(yè)界視為典范了。那么什么是云計(jì)算呢?
假如我想自己搭建一個(gè)網(wǎng)站,于是隨便到一家云計(jì)算平臺(tái)(Amazon、阿里云、華為云、騰訊云,等等)購(gòu)買(mǎi)一臺(tái)2CPU核1G內(nèi)存的主機(jī);云計(jì)算平臺(tái)在我下單后馬上就給了我一臺(tái)云主機(jī),而且CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤(pán)等都是購(gòu)物單子里填好的參數(shù)!我上線了網(wǎng)站以后,發(fā)現(xiàn)流量比較大,覺(jué)得有必要再擴(kuò)一臺(tái)主機(jī)來(lái)承載業(yè)務(wù),于是又買(mǎi)了一臺(tái)4CPU核8G內(nèi)存的主機(jī),交完錢(qián)立馬就獲得了另一個(gè)期望配置的云主機(jī),CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤(pán)都是預(yù)期的配置,尤其新機(jī)器的網(wǎng)絡(luò)與我的第一臺(tái)主機(jī)在同一個(gè)網(wǎng)段里,方便我讓兩臺(tái)主機(jī)之間進(jìn)行耦合。后來(lái)有一天,云計(jì)算平臺(tái)電源故障,我的其中一個(gè)云主機(jī)正好在故障的物理機(jī)柜上面,云計(jì)算平臺(tái)的運(yùn)維第一時(shí)間聯(lián)系到我,跟我說(shuō)已經(jīng)把我的云主機(jī)遷移到了另一個(gè)機(jī)房,理論上服務(wù)不會(huì)感知到,可能部分請(qǐng)求會(huì)出現(xiàn)超時(shí)。
上面描述的就是云計(jì)算的一種應(yīng)用場(chǎng)景了。
云計(jì)算能夠提供穩(wěn)定的服務(wù),給客戶(hù)非常好的體驗(yàn)。不過(guò)云主機(jī)動(dòng)態(tài)實(shí)例化并且能夠幾近零故障地在物理機(jī)上漂來(lái)漂去,它的網(wǎng)絡(luò)該如何架構(gòu)才能滿(mǎn)足需求呢?
既然我們已經(jīng)知道是通過(guò)虛擬技術(shù)實(shí)現(xiàn)的,那么可以畫(huà)一張上圖所示的架構(gòu)圖示意云計(jì)算中的網(wǎng)絡(luò)架構(gòu);其中物理層就是《夢(mèng)回課堂——重溫基礎(chǔ)網(wǎng)絡(luò)拓?fù)湓怼芬约氨疚摹熬W(wǎng)絡(luò)虛擬技術(shù)——VLAN”涉及到的技術(shù)所在的層(雖然VLAN也是一種虛擬技術(shù),不過(guò)它確實(shí)在物理層工作),虛擬層是云主機(jī)所在的層,也就是云計(jì)算平臺(tái)給客戶(hù)的交付物。
假如vm-1和vm-2是我申請(qǐng)到的兩臺(tái)云主機(jī),從圖上可以看到它們兩個(gè)是運(yùn)行在不同的宿主機(jī)上面的(前者在host-1上面,后者在host-2上面)。那么當(dāng)vm-1上的服務(wù)想要訪問(wèn)vm-2上的服務(wù)的時(shí)候,網(wǎng)絡(luò)應(yīng)該怎么走呢?必然要基于物理網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)!也就是圖中紅色虛線所示意的網(wǎng)路:vm-1《=》host-1《=》交換機(jī)+路由器《=》host-3《=》vm-2。從圖中還可以看到,vm-1的IP被分配為172.0.1.1/24,vm-2的IP被分配為172.0.1.2/24,假如這個(gè)時(shí)候host-1出現(xiàn)了故障,vm-1漂到了host-2到了vm-1‘的位置,網(wǎng)路變成了vm-1’《=》host-2《=》交換機(jī)+路由器《=》host-3《=》vm-2,但是為了保證云主機(jī)上服務(wù)的正常,需要保證vm-1‘的IP依然為172.0.1.1/24。
由上面的描述可以知道,在虛擬層里的云主機(jī)是感知不到物理層的存在的,這樣才能保證自己的完整性;也就是說(shuō),上圖(虛擬網(wǎng)絡(luò)架構(gòu)圖)中的vm-1只能看到網(wǎng)路中存在一個(gè)vm-2,但是無(wú)法知道自己運(yùn)行在哪一臺(tái)宿主機(jī)上,更不知道宿主機(jī)在什么樣的網(wǎng)絡(luò)環(huán)境中。業(yè)界把能夠滿(mǎn)足這種網(wǎng)絡(luò)需求的技術(shù)叫做overlay網(wǎng)絡(luò),而VxLAN是overlay網(wǎng)絡(luò)的一種具體的技術(shù)實(shí)現(xiàn),所以VxLAN也沒(méi)什么神秘的。
不過(guò)既然物理層是透明的,那么虛擬層勢(shì)必要在自己的層虛擬出交換機(jī)、路由器等基礎(chǔ)設(shè)置,也就是上圖中虛擬層基礎(chǔ)設(shè)施層所包含的組件,從而保證虛擬層中的虛擬機(jī)集群正常工作。我們可以想象,這不是一件簡(jiǎn)單的工程實(shí)現(xiàn)。不過(guò)既然協(xié)議是分層的,那么我們可以參考OSI模型以及TCP/IP協(xié)議族的實(shí)現(xiàn)方式,給虛擬機(jī)之間的網(wǎng)絡(luò)請(qǐng)求再封裝一層VxLAN的協(xié)議來(lái)實(shí)現(xiàn)這一切。
如果對(duì)TCP/IP協(xié)議比較熟悉,從報(bào)文里可以比較容易地看出來(lái)VxLAN的實(shí)現(xiàn)原理。這里我以虛擬網(wǎng)絡(luò)架構(gòu)圖中vm-1與vm-2之間的通信為例描述一下數(shù)據(jù)封包的過(guò)程:1)vm-1向vm-2發(fā)起請(qǐng)求,由于二者在同一個(gè)虛擬網(wǎng)段中,因此vm-1與vm-2互相知道彼此的IP地址和MAC地址,因此原始請(qǐng)求(假設(shè)為A)中包含了這些信息。2)由于vm-1與vm-2是運(yùn)行在虛擬層的云主機(jī),其請(qǐng)求歸根結(jié)底還是要通過(guò)底層的物理網(wǎng)絡(luò)進(jìn)行傳輸?shù)?,因此?qǐng)求A是無(wú)法進(jìn)行傳遞的;但為了實(shí)現(xiàn)信息傳遞,在請(qǐng)求A經(jīng)過(guò)時(shí),虛擬層基礎(chǔ)設(shè)施層勢(shì)必會(huì)去一個(gè)全局的表里查找vm-1與vm-2各自對(duì)應(yīng)的宿主機(jī)信息,并根據(jù)這個(gè)信息以及宿主機(jī)具體的網(wǎng)絡(luò)環(huán)境把請(qǐng)求A在物理層的網(wǎng)路“畫(huà)”出來(lái),給請(qǐng)求A封裝一層VxLAN的協(xié)議,然后就拋給物理層去處理了。3)物理層根據(jù)VxLAN協(xié)議封裝的信息把請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的宿主機(jī)host-3,然后經(jīng)過(guò)虛擬層基礎(chǔ)設(shè)施層解包后,把請(qǐng)求A發(fā)給vm-2。vm-2回復(fù)vm-1時(shí)會(huì)走一遍相似的過(guò)程,如此vm-1與vm-2便實(shí)現(xiàn)了通信。
從上面的描述來(lái)看,虛擬層基礎(chǔ)設(shè)施層是VxLAN中的關(guān)鍵實(shí)現(xiàn)。如果我們拋開(kāi)物理層的細(xì)節(jié),把物理層抽象成為多臺(tái)物理機(jī),那么虛擬層基礎(chǔ)設(shè)施層需要在這些物理機(jī)上面重新實(shí)現(xiàn)一套二層網(wǎng)絡(luò)(交換機(jī)所在層)。同時(shí)由于這個(gè)網(wǎng)絡(luò)需要整合所有物理機(jī)的資源,因此虛擬層基礎(chǔ)設(shè)施層需要對(duì)所有的物理機(jī)擁有管理權(quán)限,至少有所有物理機(jī)的特定狀態(tài)的知情權(quán)。
舉個(gè)例子,當(dāng)vm-1與vm-2添加到同一個(gè)網(wǎng)段的時(shí)候,理論上他們需要獲取彼此的MAC信息,這個(gè)時(shí)候vm-1發(fā)起廣播,這個(gè)時(shí)候就需要虛擬層基礎(chǔ)設(shè)施層用“魔法”把廣播的信息發(fā)送到vm-2去。更實(shí)際一點(diǎn),假如這個(gè)時(shí)候虛擬層基礎(chǔ)設(shè)施層還不知道該怎么傳遞信息,它將不得不給所有的物理機(jī)發(fā)送請(qǐng)求,遍歷所有物理機(jī)上的所有虛擬機(jī)直到找到需要的所有虛擬機(jī)的列表為止(當(dāng)然為了避免未來(lái)做重復(fù)的事情,或許會(huì)有緩存機(jī)制)。
再舉個(gè)例子,由于虛擬機(jī)可能運(yùn)行在任何一臺(tái)物理機(jī)上面,因此虛擬層基礎(chǔ)設(shè)施層中的網(wǎng)關(guān)需要有權(quán)限獲取所有的物理機(jī)上的虛擬機(jī)信息,這樣才能在對(duì)的時(shí)間把請(qǐng)求路由到對(duì)的虛擬機(jī)。這也隱含著另外一層信息,假如虛擬層基礎(chǔ)設(shè)施層需要把虛擬層以及物理層的復(fù)雜拓?fù)浣Y(jié)構(gòu)保存起來(lái),存儲(chǔ)數(shù)據(jù)的地方應(yīng)該是一個(gè)集中化的數(shù)據(jù)庫(kù)(比如ETCD),這樣的話(huà)它的性能及穩(wěn)定性就要考慮了。
本文對(duì)VLAN和VxLAN技術(shù)進(jìn)行了探究。VLAN技術(shù)的實(shí)現(xiàn)主要依托于交換機(jī),在物理的二層網(wǎng)絡(luò)上虛擬出邏輯上的二層網(wǎng)絡(luò);VxLAN技術(shù)則在物理的三層和四層網(wǎng)絡(luò)上虛擬出邏輯上的二層網(wǎng)絡(luò)。了解完這兩個(gè)概念及其原理以后,后面再去探究Docker以及Kubernetes的網(wǎng)絡(luò)模型應(yīng)該就不難了。
責(zé)任編輯人:CC
-
VLAN
+關(guān)注
關(guān)注
1文章
286瀏覽量
36552 -
網(wǎng)絡(luò)虛擬
+關(guān)注
關(guān)注
0文章
5瀏覽量
6677 -
VxLAN
+關(guān)注
關(guān)注
0文章
24瀏覽量
4019
發(fā)布評(píng)論請(qǐng)先 登錄
虛擬局域網(wǎng)(VLAN)路由配置手冊(cè)

虛擬局域網(wǎng)vlan的好處及優(yōu)點(diǎn)分析

一文讀懂VLAN和VXLAN技術(shù)

VXLAN是什么,VXLAN 解決了??什么問(wèn)題
一文詳解VXLAN網(wǎng)關(guān)技術(shù)
什么是VXLAN?為什么需要VXLAN?
VXLAN如何滿(mǎn)足虛擬機(jī)動(dòng)態(tài)遷移時(shí)對(duì)網(wǎng)絡(luò)的要求?VXLAN和VLAN有何不同?
什么是VXLAN中的VTEP和VNI?VXLAN隧道是如何建立的?
VXLAN網(wǎng)關(guān)有哪些種類(lèi)?VXLAN網(wǎng)絡(luò)中報(bào)文是如何轉(zhuǎn)發(fā)的?
VXLAN相比VLAN有什么優(yōu)勢(shì)?靜態(tài)vlan和動(dòng)態(tài)vlan區(qū)別
VLAN是什么技術(shù) wlan常用的vlan技術(shù)包括哪些
如何使用 VLAN 進(jìn)行網(wǎng)絡(luò)隔離
一文看懂VLAN和VXLAN

VXLAN與VLAN的區(qū)別:從原理到應(yīng)用的全面解析

評(píng)論