同濟(jì)大學(xué)電子與信息工程學(xué)院 周德江
?
基于Serval的廣域網(wǎng)下虛擬機(jī)在線遷移系統(tǒng)
同濟(jì)大學(xué)電子與信息工程學(xué)院周德江
【摘要】隨著互聯(lián)網(wǎng)的不斷發(fā)展,TCP/IP網(wǎng)絡(luò)架構(gòu)暴露出越來越多的問題,優(yōu)化TCP/IP網(wǎng)絡(luò)的研究逐漸引起了學(xué)術(shù)界的關(guān)注。普林斯頓大學(xué)(Princeton University)提出的Serval網(wǎng)絡(luò)架構(gòu)在網(wǎng)絡(luò)層之上添加一個(gè)新的服務(wù)控制層來解耦服務(wù)層的控制平面和數(shù)據(jù)平面。在Serval的基礎(chǔ)之上,本文提出了一種虛擬機(jī)在線遷移通信恢復(fù)的方法,保證虛擬機(jī)在遷移結(jié)束之前已經(jīng)建立的通信能夠正常工作。相對(duì)于傳統(tǒng)的虛擬機(jī)在線遷移通信恢復(fù)的方法,該方法更加的簡(jiǎn)單,方便,并且不會(huì)產(chǎn)生額外的開銷。
【關(guān)鍵詞】網(wǎng)絡(luò);Serval架構(gòu);虛擬機(jī)在線遷移
TCP/IP網(wǎng)絡(luò)奠定了今天Internet的基礎(chǔ),但隨著互聯(lián)網(wǎng)的普及和計(jì)算機(jī)的大范圍的使用,現(xiàn)有的TCP/IP網(wǎng)絡(luò)架構(gòu)逐漸暴露出越來越多的缺點(diǎn)。為了改變目前的困境,學(xué)術(shù)界主要有兩條思路,一是,完全摒棄現(xiàn)有的TCP/IP架構(gòu),研究并部署全新的網(wǎng)絡(luò)體系,比如卡耐基梅隆大學(xué)主導(dǎo)研究的XIA[1]和加利福尼亞大學(xué)洛杉磯分校主導(dǎo)研究的命名數(shù)據(jù)網(wǎng)絡(luò)NDN[2]。這一類的研究旨在研發(fā)出全新的網(wǎng)絡(luò)架構(gòu),并取代現(xiàn)有的TCP/IP架構(gòu)。二是改良和完善現(xiàn)有的TCP/IP架構(gòu)。相對(duì)于第一條思路,第二條思路的優(yōu)勢(shì)在于能夠較為快速的完成實(shí)驗(yàn)室到實(shí)際應(yīng)用的轉(zhuǎn)換,并能夠迅速的接受到實(shí)際的檢驗(yàn),并根據(jù)反饋進(jìn)行進(jìn)一步的優(yōu)化。普林斯頓大學(xué)提出的Serval架構(gòu)正是在現(xiàn)有的TCP/IP的基礎(chǔ)上的一次改進(jìn)。
高效合理地對(duì)云上資源的分配和管理是云計(jì)算技術(shù)中必須要解決的一個(gè)問題。虛擬機(jī)在線遷移正是一種能夠高效管理虛擬化的資源的技術(shù),具有很大的研究?jī)r(jià)值。通過虛擬機(jī)在線遷移,可以進(jìn)行負(fù)載均衡,能量管理[3],災(zāi)難恢復(fù)[4]等。在TCP/IP網(wǎng)絡(luò)中,局域網(wǎng)下的虛擬機(jī)在線遷移,遷移之后通信可以自動(dòng)地恢復(fù),但是,在廣域網(wǎng)下,因?yàn)樵械腎P地址無法在新的網(wǎng)絡(luò)中使用,所以通信無法進(jìn)行自動(dòng)地恢復(fù)。現(xiàn)有的方案包括創(chuàng)建一個(gè)隧道[5],ARP代理[6],移動(dòng)IP等方案。這些方案要么比較復(fù)雜,需要新的配置或者節(jié)點(diǎn)機(jī)器。要么產(chǎn)生額外的流量,比如移動(dòng)IP的三角路由。
1.1通信恢復(fù)原理
Serval通過在TCP/IP的傳輸層和網(wǎng)絡(luò)層之間添加一個(gè)新的層SAL(Service Access Layer)構(gòu)建一個(gè)以服務(wù)為中心的網(wǎng)絡(luò)[7]。服務(wù)訪問層包含兩個(gè)重要的表,流表和服務(wù)表。
流表中記錄了連接的源流標(biāo)識(shí)符,目的流標(biāo)識(shí)符,源IP地址,目的IP地址以及下一跳的網(wǎng)卡。當(dāng)IP地址發(fā)生變化之后,只需要修改Serval中的流表即可以恢復(fù)通信。在Serval中具有遷移流的功能,即將流從一張網(wǎng)卡遷移到另外一張網(wǎng)卡中。遷移流將修改通信雙方的流表中的源IP地址和目的IP地址。為了實(shí)現(xiàn)虛擬機(jī)在線遷移通信的自動(dòng)恢復(fù),遷移完成之后,首先需要給虛擬機(jī)一個(gè)新的IP地址,然后采用Serval中遷移流的功能,特殊點(diǎn)在于遷移前后流的網(wǎng)卡是同一張,但是會(huì)觸發(fā)修改修改流表的操作,從而達(dá)到修改流表中虛擬機(jī)IP地址的目的。哲學(xué)角度來說,IP地址修改之后的網(wǎng)卡與IP地址修改之前的網(wǎng)卡并不是同一張網(wǎng)卡,遷移流將流從修改IP前的網(wǎng)卡遷移到修改IP后的網(wǎng)卡上。
1.2系統(tǒng)模塊
1.2.1數(shù)據(jù)傳輸模塊
實(shí)驗(yàn)采用的虛擬機(jī)是QEMU-KVM,通過分析QEMU-KVM的源程序可知,KVM虛擬機(jī)提供TCP、EXEC、UNIX和FD四種虛擬機(jī)遷移的方式,其中,TCP方式,通過在兩臺(tái)主機(jī)間建立TCP連接進(jìn)行遷移數(shù)據(jù)的傳輸;EXEC方式,源主機(jī)上將遷移數(shù)據(jù)作為一個(gè)輸入流發(fā)送給本地遷移發(fā)送進(jìn)程,目的主機(jī)的遷移發(fā)送進(jìn)程接收到遷移數(shù)據(jù)之后將其作為一個(gè)輸出流發(fā)送給KVM,遷移發(fā)送進(jìn)程和遷移接收進(jìn)程可以由用戶自定義。因?yàn)镾erval采用的是新的通信模式,所以EXEC方式可以用于Serval網(wǎng)絡(luò)虛擬機(jī)在線遷移。
1.2.2自適應(yīng)目的主機(jī)網(wǎng)絡(luò)環(huán)境模塊
虛擬機(jī)進(jìn)入到一個(gè)新的網(wǎng)絡(luò)環(huán)境中,原有的IP地址以及網(wǎng)關(guān)信息已經(jīng)無法使用,必須要進(jìn)行更新。在原始套接字的基礎(chǔ)上,定義了一個(gè)新的網(wǎng)絡(luò)狀態(tài)更新協(xié)議和以太網(wǎng)報(bào)文,用于保證虛擬機(jī)能夠適應(yīng)新的網(wǎng)絡(luò)環(huán)境。更新協(xié)議及其報(bào)文格式將在1.3節(jié)介紹?;謴?fù)運(yùn)行之后,虛擬機(jī)根據(jù)接收到的更新網(wǎng)絡(luò)狀態(tài)的報(bào)文,虛擬機(jī)更新自己的網(wǎng)絡(luò)狀態(tài),采用新的IP地址和網(wǎng)關(guān)。
1.2.3流狀態(tài)更新模塊
遍歷虛擬機(jī)中的流表,根據(jù)每一條流的源流標(biāo)識(shí)符,使用serval中遷移流的功能,將流遷移到擁有了新網(wǎng)絡(luò)地址的網(wǎng)卡上。
1.2.4性能測(cè)試模塊
該模塊用于驗(yàn)證虛擬機(jī)在線遷移是否是無縫的。
1.3網(wǎng)絡(luò)狀態(tài)更新協(xié)議及其報(bào)文

圖1 虛擬機(jī)網(wǎng)絡(luò)狀態(tài)更新報(bào)文
遷移數(shù)據(jù)接收完成之后,遷移接受進(jìn)程推出之前發(fā)送一個(gè)消息給本地的一個(gè)守護(hù)進(jìn)程P,該守護(hù)進(jìn)程P接收到這個(gè)消息之后周期性地發(fā)送虛擬機(jī)恢復(fù)運(yùn)行探測(cè)報(bào)文,該報(bào)文在虛擬機(jī)恢復(fù)運(yùn)行之后會(huì)得到一個(gè)確認(rèn)消息,守護(hù)進(jìn)程P接收到確認(rèn)消息之后構(gòu)造虛擬機(jī)網(wǎng)絡(luò)狀態(tài)更新報(bào)文,該報(bào)文包含了虛擬機(jī)新的網(wǎng)絡(luò)地址以及新的網(wǎng)關(guān)地址,報(bào)文格式如圖2所示。虛擬機(jī)完成了狀態(tài)更新之后發(fā)送確認(rèn)消息給宿主主機(jī)的守護(hù)進(jìn)程P,守護(hù)進(jìn)程P接收到確認(rèn)數(shù)據(jù)包之后退出。如果守護(hù)進(jìn)程P超過一定時(shí)間仍未接收到確認(rèn),再次發(fā)送網(wǎng)絡(luò)狀態(tài)更新報(bào)文,嘗試三次之后,報(bào)告失敗信息。圖2中,協(xié)議字段包含兩種情況,0x0001表示宿主主機(jī)發(fā)送的網(wǎng)絡(luò)狀態(tài)更新報(bào)文,0x0002表示虛擬機(jī)發(fā)送給宿主主機(jī)的確認(rèn)報(bào)文。
1.4停機(jī)時(shí)間測(cè)量方案及其誤差分析
總遷移時(shí)間(Total migration time)和停機(jī)時(shí)間(Downtime)是虛擬機(jī)在線遷移中兩種重要的性能評(píng)價(jià)參數(shù)[8]。停機(jī)時(shí)間是指虛擬機(jī)在源宿主主機(jī)掛起之后到在目的主機(jī)通信恢復(fù)之后的一段時(shí)間間隔。相對(duì)于停機(jī)時(shí)間,總遷移時(shí)間容易測(cè)量,本文不做討論。
在TCP/IP網(wǎng)絡(luò)中,ping通常是作為一個(gè)網(wǎng)絡(luò)連通性檢測(cè)的工具。Serval中也可以實(shí)現(xiàn)類型ping的應(yīng)用,根據(jù)Serval的套接口,本文實(shí)現(xiàn)了Serval-ping,利用Servalping工具也可以用來估算虛擬機(jī)在線遷移的停機(jī)時(shí)間。在虛擬機(jī)停機(jī)期間不斷發(fā)送Serval-ping包給虛擬機(jī),記錄下丟失的Serval-ping的個(gè)數(shù)。例如,如果Serval-ping在虛擬機(jī)遷移的停機(jī)時(shí)間內(nèi)有n個(gè)未收到回應(yīng),且Serval-ping的時(shí)間間隔為△t,那么即可估算出停機(jī)時(shí)間約為n*△t。
實(shí)驗(yàn)測(cè)試床如圖2所示。其中HOST_A和HOST_B分別指定SR1和SR2作為其默認(rèn)的服務(wù)路由器。虛擬機(jī)從HOST_A遷移到HOST_B。HOST_VM上也安裝了Serval網(wǎng)絡(luò)環(huán)境,其中,HOST_VM的服務(wù)路由器設(shè)置成SR1。

圖2 基于Serval的廣域網(wǎng)下虛擬機(jī)在線遷移實(shí)驗(yàn)測(cè)試床
一方面通過Serval下的Serval-ping應(yīng)用測(cè)試遷移結(jié)束之后是否可以得到Serval-ping應(yīng)答以及測(cè)量停機(jī)時(shí)間,另一方面通過運(yùn)行兩種不同類型的負(fù)載,CPU密集型和I/O密集型,比較不同的負(fù)載下遷移性能的差別。其實(shí)驗(yàn)結(jié)果如表1所示,Serval的確可以很方便的實(shí)現(xiàn)虛擬機(jī)在線遷移中通信的恢復(fù)。此外,對(duì)比可以發(fā)現(xiàn),I/O密集型的負(fù)載,遷移的總時(shí)間和停機(jī)時(shí)間都比較長(zhǎng)。這是由于在遷移過程中,I/O密集型的負(fù)載會(huì)影響宿主主機(jī)的數(shù)據(jù)傳輸。虛擬機(jī)在線遷移數(shù)據(jù)傳輸過程相對(duì)于宿主主機(jī)而言是一種I/O密集性負(fù)載,會(huì)與虛擬機(jī)的I/O操作形成資源的競(jìng)爭(zhēng),因此遷移總時(shí)間和停機(jī)時(shí)間更長(zhǎng)。

表1 基于Serval的廣域網(wǎng)下虛擬機(jī)在線遷移實(shí)驗(yàn)結(jié)果
本文提出了一種基于Serval的廣域網(wǎng)下虛擬機(jī)在線遷移通信恢復(fù)方案。主要?jiǎng)?chuàng)新點(diǎn)在于提出了一種網(wǎng)絡(luò)狀態(tài)更新及其報(bào)文格式;通過遷移流的方法完成Serval的流表中IP地址的更新;通過一種類似于ping的應(yīng)用Serval-ping進(jìn)行停機(jī)時(shí)間的測(cè)量,針對(duì)不同負(fù)載帶來的性能差異進(jìn)行了分析。
參考文獻(xiàn)
[1]Han D,Anand A,Dogar F R,et al.XIA:Efficient Support for Evolvable Internetworking.9th USENIX conference on Networked Systems Design and Implementation,2012,Vol.12:309-322.
[2]Zhang and D.Estrin and J.Burke.Named data networking(ndn)project.Technical report,PARC;2010.
[3]C.Clark,K.Fraser,S.Hand,J.G.Hansen,E.Jul,C.Limpach,et al.Live migration of virtual machines.Symposium on Networked Systems Design & Implementation;2005:273-286.
[4]Comer D.A future Internet architecture that supports Cloud Computing[C].In:Proceedings of the 6th International Conference on Future Internet Technologies.ACM;2011:79-83.
[5]R.Bradford,E.Kotsovinos,A.Feldmann and H.Schioberg. Live Wide-Area Migration of Virtual Machines Including Local Persistent State.VEE;2007:169-179.
[6]E.Silvera,G.Sharaby,D.Lorenz and I.Shapira.IP Mobility to Support Live Migration of Virtual Machines across Subnets.SYSTOR;2009.
[7]Nordstr?m E,Shue D,Gopalan P,et al.Serval:An End-Host Stack for Service-Centric Networking[J].Proc Usenix Nsdi,2012.
[8]Zhang J,Ren F,Lin C.Delay Guaranteed Live Migration of Virtual Machines.INFOCOMM’2014.IEEE.2014:574-582.
周德江(1991—),江蘇鹽城人,研究生,現(xiàn)就讀于同濟(jì)大學(xué)。
作者簡(jiǎn)介: