文/冉靜學(xué)
在各高校逐步實(shí)施“智慧校園”和響應(yīng)國(guó)家節(jié)能減排號(hào)召的同時(shí),高校云數(shù)據(jù)中心逐步在各高校建成或升級(jí)。在云數(shù)據(jù)中心建設(shè)過(guò)程中,KVM(Kernel-based Virtual Machine)使用中遇到虛擬網(wǎng)絡(luò)如何配置并進(jìn)行優(yōu)化的問(wèn)題。針對(duì)此問(wèn)題并結(jié)合實(shí)際建設(shè)經(jīng)驗(yàn),本文給出了三套KVM云平臺(tái)vRoute虛擬網(wǎng)絡(luò)配置方案,并針對(duì)方案給出詳細(xì)的部署配置細(xì)則,為其他數(shù)據(jù)中心建設(shè)過(guò)程中提供選擇。
隨著計(jì)算機(jī)網(wǎng)絡(luò)和通信行業(yè)的發(fā)展,“智慧校園”和“綠色節(jié)能”雙目標(biāo)對(duì)高校數(shù)據(jù)中心的建設(shè)或升級(jí)改造提出了更高的要求。傳統(tǒng)高校數(shù)據(jù)中心已經(jīng)無(wú)法滿足“智慧校園”的需求,主要存在資源利用率低、運(yùn)維成本高、應(yīng)用部署緩慢和管理策略分散等方面不足。
為了解決傳統(tǒng)數(shù)據(jù)中心的缺陷,虛擬化和云計(jì)算作為一種新的共享基礎(chǔ)架構(gòu)方法,將各項(xiàng)資源進(jìn)行整合,利用數(shù)據(jù)中心網(wǎng)絡(luò)連接在一起,形成一個(gè)巨大資源池。根據(jù)業(yè)務(wù)系統(tǒng)的實(shí)際需求,統(tǒng)一分配各項(xiàng)硬件資源,并按照業(yè)務(wù)系統(tǒng)的實(shí)際運(yùn)行需求進(jìn)行調(diào)整。
云數(shù)據(jù)中心可以根據(jù)實(shí)際,提供可用、便捷、按需的系統(tǒng)資源。KVM作為開源的系統(tǒng)虛擬化模塊,在服務(wù)器虛擬化過(guò)程中得到了廣泛的應(yīng)用;vRoute虛擬路由是基于網(wǎng)絡(luò)的純軟件操作系統(tǒng),運(yùn)行于主流的虛擬平臺(tái)上。本文根據(jù)高校云數(shù)據(jù)中心的實(shí)際建設(shè)過(guò)程中發(fā)現(xiàn)的問(wèn)題,結(jié)合KVM和軟件化的虛擬路由器,搭建安全穩(wěn)定的虛擬網(wǎng)絡(luò)構(gòu)架,給出了三種KVM平臺(tái)與vRoute網(wǎng)絡(luò)互連配置方法。
KVM(Kernel-based Virtual Machine)是一個(gè)開源的系統(tǒng)虛擬化模塊,自Linux 2.6.20版本發(fā)行之后,該功能模塊都集成于Linux的各個(gè)主要發(fā)行版本中。它使用Linux自身的調(diào)度器進(jìn)行管理,相對(duì)于Xen,其核心源碼很少,因此KVM已成為學(xué)術(shù)界主流的VMM之一。
KVM虛擬化需要硬件支持,它是基于硬件的完全虛擬化。而Xen早期是基于軟件模擬的Para-Virtualization,新版本則是基于硬件支持的完全虛擬化。但是,由于Xen有自己的進(jìn)程調(diào)度器、存儲(chǔ)管理模塊等,所以代碼較為龐大,在兼容、擴(kuò)展等方面表現(xiàn)稍遜。
圖1 Linux Bridge內(nèi)部轉(zhuǎn)發(fā)流程
Linux Bridge
Linux系統(tǒng)的網(wǎng)絡(luò)功能是通過(guò)直接或間接配置系統(tǒng)文件來(lái)實(shí)現(xiàn)的。Bridge是Linux系統(tǒng)用來(lái)實(shí)現(xiàn)TCP/IP 二層協(xié)議交換的虛擬設(shè)備,功能類似于交換機(jī)。Bridge設(shè)備實(shí)例可以與Linux內(nèi)其它虛擬網(wǎng)絡(luò)設(shè)備實(shí)例互連。當(dāng)數(shù)據(jù)傳輸至Bridge時(shí),Bridge會(huì)根據(jù)報(bào)文中的MAC信息進(jìn)行廣播、轉(zhuǎn)發(fā)、丟棄處理等操作處理。
Linux Bridge內(nèi)部轉(zhuǎn)發(fā)流程如圖1所示。Bridge 的功能主要在內(nèi)核里實(shí)現(xiàn)。當(dāng)一臺(tái)邏輯設(shè)備與Bridge相互連接后,內(nèi)核程序里netdev_rx_handler_register()函數(shù)被調(diào)用,一個(gè)用于接受數(shù)據(jù)的回調(diào)函數(shù)被注冊(cè)。之后邏輯設(shè)備接收到數(shù)據(jù),通過(guò)調(diào)用該函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)至Bridge。Bridge接收到此數(shù)據(jù)時(shí),br_handle_frame()函數(shù)被調(diào)用,進(jìn)行類似交換機(jī)功能處理過(guò)程:判斷包的類別(廣播/單點(diǎn)),查找內(nèi)部MAC 端口映射表,定位目標(biāo)端口號(hào),將數(shù)據(jù)轉(zhuǎn)發(fā)到目標(biāo)端口或丟棄,自動(dòng)更新內(nèi)部 MAC 端口映射表以自我學(xué)習(xí)。
Bridge與實(shí)體二層交換機(jī)存在一個(gè)區(qū)別,圖1中左側(cè)說(shuō)明了這種區(qū)別情況:數(shù)據(jù)流是被直接發(fā)到 Bridge內(nèi),而不是從其中一個(gè)邏輯端口接受。該情況可以認(rèn)為Bridge 自身?yè)碛幸粋€(gè) MAC地址可以主動(dòng)發(fā)送報(bào)文,或者認(rèn)為Bridge自帶了一個(gè)隱藏端口和寄主Linux系統(tǒng)自動(dòng)連接,Linux系統(tǒng)內(nèi)的程序可以直接從該邏輯端口向Bridge內(nèi)的其它端口發(fā)數(shù)據(jù)。因此,當(dāng)一個(gè)Bridge與一臺(tái)邏輯網(wǎng)絡(luò)設(shè)備互連后,兩者擁有兩個(gè)有效 MAC 地址,兩者之間就可以進(jìn)行數(shù)據(jù)流傳輸。
在實(shí)際項(xiàng)目實(shí)施過(guò)程中,通過(guò)分析問(wèn)題,關(guān)于Bridge有兩點(diǎn)需要注意:
(1)當(dāng)前Bridge 的實(shí)現(xiàn)存在一個(gè)限制:當(dāng)一個(gè)邏輯設(shè)備互連至Bridge時(shí),該設(shè)備的 IP地址會(huì)失效,Linux系統(tǒng)不再使用該IP在邏輯三層接受數(shù)據(jù)。
(2)需要注意的是數(shù)據(jù)流的方向。對(duì)于一個(gè)互連到Bridge上的邏輯網(wǎng)絡(luò)設(shè)備來(lái)說(shuō),只有它收到數(shù)據(jù)時(shí),此包數(shù)據(jù)才會(huì)被轉(zhuǎn)發(fā)到Bridge上,進(jìn)而完成查表廣播等后續(xù)操作。當(dāng)請(qǐng)求是發(fā)送類型時(shí),數(shù)據(jù)是不會(huì)被轉(zhuǎn)發(fā)到Bridge上的,它會(huì)尋找下一個(gè)發(fā)送出口。這一現(xiàn)象同實(shí)體交換機(jī)是不同的。
虛擬路由器(vRoute)
vRoute虛擬路由器是基于網(wǎng)絡(luò)的純軟件操作系統(tǒng),運(yùn)行在主流的虛擬平臺(tái)上,主要用于虛擬私有云,充當(dāng)虛擬私有云網(wǎng)關(guān),提供和物理路由器相同的功能和體驗(yàn),功能主要包括路由、防火墻、VPN、QOS、及配置管理等,建立安全、統(tǒng)一、可擴(kuò)展的混合云,或用于虛擬分支,以精簡(jiǎn)分支基礎(chǔ)設(shè)施。云計(jì)算平臺(tái)虛擬化邏輯架構(gòu)如圖2所示。
圖2 云計(jì)算平臺(tái)虛擬化邏輯架構(gòu)
vRoute是部署在數(shù)據(jù)中心或容災(zāi)機(jī)房服務(wù)器虛擬機(jī)上的網(wǎng)絡(luò)連接,通過(guò)創(chuàng)建一個(gè)或多個(gè)虛擬WAN口,并通過(guò)vSwitch連接到物理廣域網(wǎng)。同時(shí)也可以創(chuàng)建一個(gè)或多個(gè)虛擬LAN口,通過(guò)vSwitch連接其它應(yīng)用系統(tǒng)虛擬機(jī)或物理局域網(wǎng)絡(luò)。
如圖3所示,VM的Bridge為一個(gè)虛擬的邏輯二層交換機(jī),其綁定的物理網(wǎng)卡作為上行口連接物理網(wǎng)絡(luò),而圖中的A、B、C和D便是虛擬交換機(jī)的下行邏輯端口,用于連接VM虛擬網(wǎng)口,Bridge主要實(shí)現(xiàn)VM與物理網(wǎng)絡(luò)之間的數(shù)據(jù)交換,vRoute的數(shù)據(jù)報(bào)文通過(guò)Bridge的上行口轉(zhuǎn)發(fā)到實(shí)際的物理網(wǎng)絡(luò)中。
圖3 KVM平臺(tái)虛擬網(wǎng)絡(luò)部署邏輯
通過(guò)研究及相關(guān)經(jīng)驗(yàn)可知,vRoute配合KVM的Bridge進(jìn)行網(wǎng)絡(luò)連接時(shí)一般情況可以使用以下三種組網(wǎng)方式:
(1)vRoute接口和主機(jī)網(wǎng)絡(luò)接口直接綁定;
(2)vRoute多個(gè)接口共用一個(gè)主機(jī)網(wǎng)絡(luò)接口(通過(guò)虛擬交換機(jī)vlan隔離);
(3)vRoute使用子接口,接收/發(fā)送帶vlan報(bào)文;
針對(duì)以上三種組網(wǎng)方案,本文給出相關(guān)應(yīng)用及配置思路。
方案1
vRoute接口和主機(jī)網(wǎng)絡(luò)接口直接綁定,主機(jī)網(wǎng)絡(luò)接口接收到的數(shù)據(jù)報(bào)文會(huì)上送到vRoute對(duì)應(yīng)的接口。典型配置組網(wǎng)如圖4所示。
圖4 VSR接口直接綁定主機(jī)網(wǎng)絡(luò)接口
vRoute的G1/0口連接到局域網(wǎng);G2/0口連接廣域網(wǎng)。
(1) vRoute虛擬網(wǎng)卡可以使用Linux Bridge方式。使用Bridge方式典型組網(wǎng)配置思路:創(chuàng)建兩個(gè)橋口br0和br1,分別橋接到物理服務(wù)器的eno3和eno4口;VSR添加兩塊虛擬網(wǎng)卡,網(wǎng)卡1綁定在橋接口br0上,網(wǎng)卡2綁定在橋接口br1上。
(2) VSR使用G1/0口通過(guò)橋口br0連接到模擬局域網(wǎng);使用G2/0口通過(guò)橋口br1連接模擬廣域網(wǎng)。
方案2
vRoute多個(gè)接口共用一個(gè)主機(jī)網(wǎng)絡(luò)接口(通過(guò)虛擬交換機(jī)vlan隔離)。
Linux KVM使用vlan接口進(jìn)行vlan隔離,處理流程如下:
綁定vlan接口的虛擬網(wǎng)卡發(fā)送報(bào)文,KVM將報(bào)文在同一個(gè)vlan中轉(zhuǎn)發(fā),并添加對(duì)應(yīng)的vlan tag后從綁定的物理接口發(fā)出;物理接口收到帶vlan tag的報(bào)文后,根據(jù)vlan tag在對(duì)應(yīng)的vlan中轉(zhuǎn)發(fā),發(fā)送時(shí)會(huì)去掉對(duì)應(yīng)的vlan tag(虛擬機(jī)連接的接口為Access口)。典型配置組網(wǎng)如圖5所示。
Vlan11為物理廣域網(wǎng)絡(luò),Vlan10為內(nèi)部局域網(wǎng)絡(luò),VSR的G2/0口連接到物理廣域網(wǎng); G1/0口連接其它虛擬機(jī)或物理局域網(wǎng)絡(luò)。
圖5 VSR多個(gè)接口共用一個(gè)主機(jī)網(wǎng)絡(luò)接口
(1)vRoute虛擬網(wǎng)卡用Bridge方式。使用Bridge方式典型配置組網(wǎng)說(shuō)明:
eno3口添加兩個(gè)vlan接口eno3.10和eno3.11,分別對(duì)應(yīng)vlan10和vlan11;創(chuàng)建兩個(gè)橋口br0.10和br0.11,分別橋接到eno3.10和eno3.11上;VSR添加兩塊虛擬網(wǎng)卡,網(wǎng)卡1綁定在橋接口br3.10上,網(wǎng)卡2綁定在橋接口br3.11上;物理交換機(jī)連接虛擬服務(wù)器的網(wǎng)口配置為trunk口,允許vlan10和vlan11通過(guò)。交換機(jī)上建立兩個(gè)vlan interface vlan-10和vlan interface vlan-11,模擬局域網(wǎng)和廣域網(wǎng)。
(2)vRoute使用G1/0口通過(guò)橋口br0.10連接到物理局域網(wǎng);使用G2/0口通過(guò)橋口br0.11連接物理廣域網(wǎng)。
方案3
vRoute使用子接口,接收/發(fā)送帶vlan報(bào)文。vRoute使用子接口時(shí)需要配置vlan終結(jié),vRoute收到帶vlan tag的報(bào)文后,根據(jù)vlan tag匹配到不同的子接口,vRoute子接口發(fā)出的報(bào)文也會(huì)攜帶相應(yīng)的vlan tag。
vRoute使用子接口時(shí),虛擬網(wǎng)卡只能使用Bridge方式,并且主機(jī)上對(duì)應(yīng)的接口不能創(chuàng)建vlan接口。這樣從物理接口接收的帶vlan tag的報(bào)文可以直接轉(zhuǎn)發(fā)到vRoute的虛擬網(wǎng)卡上,vRoute虛擬網(wǎng)卡發(fā)送的帶vlan tag的報(bào)文也可以直接通過(guò)物理接口發(fā)出。典型配置組網(wǎng)如圖6所示。
vRoute的G1/0口連接到物理局域網(wǎng),Loopback 1模擬物理廣域網(wǎng)絡(luò)。
(1)典型組網(wǎng)配置思路:創(chuàng)建一個(gè)橋口br0,橋接到eth3;VSR添加一塊虛擬網(wǎng)卡,網(wǎng)卡1綁定在橋接口br0上;物理交換機(jī)連接虛擬服務(wù)器eth1/0/11的網(wǎng)口配置為trunk口,允許vlan10和vlan11通過(guò)。
圖6 VSR使用子接口組網(wǎng)
(2)vRoute使用Gig1/0口通過(guò)橋口br0連接到局域網(wǎng);使用Loopback 1模擬廣域網(wǎng)服務(wù)器,地址配置為12.0.0.,物理局域網(wǎng)絡(luò)通過(guò)vlan劃分不同的子網(wǎng),連接Gig1/0不同的子接口。
目前,根據(jù)本文提出的第二套方案,北京幾所高校已經(jīng)通過(guò)虛擬化形成統(tǒng)一的資源池,分別應(yīng)用于學(xué)校教務(wù)系統(tǒng)、選課系統(tǒng)以及招生就業(yè)系統(tǒng)。
通過(guò)數(shù)據(jù)中心網(wǎng)管軟件監(jiān)控系統(tǒng)信息顯示,服務(wù)器CPU、內(nèi)存使用效率方面都有很大地提升,并且解決了之前該校選課期間系統(tǒng)由于高并發(fā)導(dǎo)致系統(tǒng)崩潰的現(xiàn)象,師生反映良好,現(xiàn)在選課期間系統(tǒng)運(yùn)轉(zhuǎn)順暢,不需要學(xué)生錯(cuò)峰選課。學(xué)校招生期間,無(wú)任何由于招生就業(yè)系統(tǒng)產(chǎn)生的問(wèn)題,招生工作順暢。
所以,云數(shù)據(jù)中心不僅降低了學(xué)校信息化方面的各項(xiàng)投入,簡(jiǎn)化了網(wǎng)絡(luò)運(yùn)維管理工作,提升了數(shù)據(jù)中心資源利用率,也實(shí)現(xiàn)了節(jié)能減排目標(biāo)。實(shí)踐證明,依據(jù)上述方法并根據(jù)設(shè)備情況采取最優(yōu)的配置方式,實(shí)現(xiàn)KVM云計(jì)算平臺(tái)的網(wǎng)絡(luò)最優(yōu),能提升云計(jì)算平臺(tái)的效能和穩(wěn)定性。