云計(jì)算之虛擬網(wǎng)絡(luò)背后的技術(shù)

1、SDN
傳統(tǒng)的網(wǎng)絡(luò)設(shè)備是分布式和去中心化的,每臺(tái)設(shè)備可以通過自主學(xué)習(xí)和人工配置,可以知道如何轉(zhuǎn)發(fā)數(shù)據(jù)包,而不需要一個(gè)集中式的控制設(shè)備。
SDN這個(gè)詞本身就是軟件定義網(wǎng)絡(luò)(Software?Defined?Network),在虛擬網(wǎng)絡(luò)里,vSwitch和vRouter這些設(shè)備,通常都不用登錄上去敲命令(雖然也可以這么做),而是通過云平臺(tái)配置。云平臺(tái)通過API和SDN控制器交互,SDN控制器計(jì)算并下發(fā)轉(zhuǎn)發(fā)表到vSwitch和vRouter,完成配置。

SDN原理示意
所謂Overlay,是在傳統(tǒng)的物理網(wǎng)絡(luò)(Underlay)基礎(chǔ)之上,構(gòu)建出一個(gè)虛擬的邏輯網(wǎng)絡(luò)。從技術(shù)上講,Overlay的二層數(shù)據(jù)包封裝在物理網(wǎng)絡(luò)的三層報(bào)文中傳輸,到達(dá)目的地之后再解封裝得到Overlay的二層報(bào)文。實(shí)際上,這就是一種“L2 over L3”的隧道封裝技術(shù)。這方面的協(xié)議比較多,主要有VxLAN(L2 over UDP)、NVGRE(L2 over GRE)、STT(L2 over TCP)等。
2、VxLAN
VxLAN(Virtual eXtensible Local Area Network,虛擬可擴(kuò)展局域網(wǎng))是實(shí)現(xiàn)Overlay網(wǎng)絡(luò)的主流技術(shù),正是通過VxLAN,才實(shí)現(xiàn)了VPC(包括子網(wǎng))的完美隔離。
大體而言,就是VM之間交互的數(shù)據(jù)包,在離開vSwitch時(shí)會(huì)加上封裝,形成隧道,不同子網(wǎng)帶有不同的隧道號(hào)標(biāo)識(shí)。解隧道封裝的時(shí)候,看到隧道號(hào)不對(duì),就會(huì)拋棄,這樣不同子網(wǎng)內(nèi)的虛擬機(jī)無法進(jìn)行直接通信(除非做了路由),這就實(shí)現(xiàn)了隔離。
VxLAN不僅解決了隔離的問題,還解決了傳統(tǒng)二層技術(shù)(如VLAN)難以解決的大規(guī)模二層互連的問題,由于通過三層傳輸,虛機(jī)的部署和遷移就不受二層物理網(wǎng)絡(luò)限制了。VxLAN是怎么將L2 over在L3之上呢,答案是:將以太網(wǎng)幀封裝在UDP包中。

VxLAN的包結(jié)構(gòu)
如上圖所示,Overlay的二層數(shù)據(jù)幀被封裝在三層的IP包中(精確的說,是四層的UDP報(bào)文中),封裝的頭部是VxLAN Header,里面的主要內(nèi)容就是24bit的VNI(VxLAN ID),每個(gè)子網(wǎng)都有一個(gè)VNI,這樣即便是同一臺(tái)主機(jī)上的兩臺(tái)VM,即便處于同一IP段,只要他們?cè)诓煌淖泳W(wǎng),就無法通信,因?yàn)樽泳W(wǎng)的OVS看見不同的VNI就會(huì)拋棄掉。
做封裝和解封裝的端點(diǎn)被稱為VTEP,它同時(shí)也就是VxLAN隧道的起點(diǎn)和終點(diǎn)。VTEP通常是由OVS實(shí)現(xiàn)的,子網(wǎng)中VM向外發(fā)出的二層報(bào)文,會(huì)由OVS進(jìn)行封裝,做成UDP包發(fā)出;同時(shí)OVS會(huì)在UDP特定端口監(jiān)聽,收到VxLAN報(bào)文后,如果VNI正確,則去掉封裝,將封裝前的二層報(bào)文轉(zhuǎn)發(fā)給相應(yīng)的VM。
對(duì)于裸金屬(云管理的物理機(jī))而言,由于它沒有OVS,它的Overlay通信要通過VxLAN網(wǎng)關(guān)(承擔(dān)VTEP功能)實(shí)現(xiàn),或者可以在物理機(jī)上插一塊智能網(wǎng)卡,由智能網(wǎng)卡做VTEP。
VTEP有軟件和硬件兩種,前面講的OVS就是軟件VTEP,也有用硬件交換機(jī)做VTEP的。如果VTEP由軟件完成,這種Overlay就叫Host Overlay;如果由硬件設(shè)備完成,就叫Network Overlay;如果都有,就叫混合Overlay。
對(duì)于Host Overlay而言,物理交換機(jī)網(wǎng)絡(luò)中的Leaf和Spine僅進(jìn)行IP報(bào)文的高速轉(zhuǎn)發(fā),不處理VxLAN報(bào)文。

Overlay和Underlay示意
上圖中,VM1和VM2要通信的話(無論是否在同一子網(wǎng)),由OVS封裝成VxLAN報(bào)文,由leaf和spine交換機(jī)進(jìn)行物理傳輸;對(duì)于在同一臺(tái)宿主機(jī)上的VM3和VM4,如果它們?cè)谕籚PC的同一子網(wǎng),OVS就直接轉(zhuǎn)發(fā)了(不走VxLAN);如果是同一VPC的不同子網(wǎng),也不用走VxLAN,由vRouter和OVS轉(zhuǎn)發(fā);但如果在不同VPC,就也要走VxLAN,因?yàn)椴煌琕PC的隔離就是靠VxLAN實(shí)現(xiàn)的。
















 
 
 


 
 
 
 