一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流遷移方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提出一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流遷移方法,該方法包括在源網(wǎng)絡(luò)功能處與目標(biāo)網(wǎng)絡(luò)功能處分別部署源流遷移處理單元與目標(biāo)流處理單元,并通過(guò)所述的源流遷移處理單元與網(wǎng)絡(luò)交換設(shè)備在數(shù)據(jù)包包頭內(nèi)設(shè)置兩位標(biāo)簽,將數(shù)據(jù)包標(biāo)記為四類,包括normal類、in?fly類、last in?fly類、redirect類,所述的目標(biāo)流遷移處理單元使用基于標(biāo)簽的分類器將所述的normal類、in?fly類、last in?fly類、redirect類數(shù)據(jù)包進(jìn)行分類;在所述流遷移處理單元中部署狀態(tài)機(jī),記錄當(dāng)前遷移狀態(tài),源狀態(tài)機(jī)根據(jù)遷移狀態(tài)對(duì)數(shù)據(jù)包進(jìn)行標(biāo)記與轉(zhuǎn)發(fā),所述目標(biāo)狀態(tài)機(jī)根據(jù)遷移狀態(tài)與包處理規(guī)則將所述四類數(shù)據(jù)包分別放置于目標(biāo)流處理單元中的默認(rèn)緩存,in?fly環(huán)形緩存與redirect環(huán)形緩存,最終通過(guò)默認(rèn)緩存交付目標(biāo)網(wǎng)絡(luò)功能處。
【專利說(shuō)明】
一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流遷移方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)功能虛擬化領(lǐng)域,軟件定義網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法及系統(tǒng)?!颈尘凹夹g(shù)】
[0002]隨著網(wǎng)絡(luò)體系結(jié)構(gòu)演進(jìn)與業(yè)務(wù)持續(xù)發(fā)展,網(wǎng)絡(luò)中部署越來(lái)越多的專用設(shè)備,例如防火墻、入侵檢測(cè)、接入認(rèn)證等安全設(shè)備,負(fù)載均衡、TCP加速等性能提升設(shè)備,這些設(shè)備部署數(shù)量甚至與路由交換設(shè)備同一量級(jí)。這些專用設(shè)備大量部署不僅增加購(gòu)買與運(yùn)營(yíng)成本, 提升管理運(yùn)維難度,而且研發(fā)周期長(zhǎng),無(wú)法滿足網(wǎng)絡(luò)及應(yīng)用的快速創(chuàng)新與動(dòng)態(tài)部署要求。網(wǎng)絡(luò)功能虛擬化(Network Funct1ns Virtualizat1n,NFV)通過(guò)在軟件實(shí)現(xiàn)在通用服務(wù)器虛擬機(jī)(Virtual Machine,VM)動(dòng)態(tài)按需部署專用設(shè)備功能,引起工業(yè)界與學(xué)術(shù)界的廣泛關(guān)注。
[0003]NFV支持網(wǎng)絡(luò)功能基于通用硬件的軟件化部署,相比于傳統(tǒng)專用硬件的網(wǎng)絡(luò)功能 (Middlebox),其優(yōu)勢(shì)是服務(wù)鏈和處理資源的按需分配與靈活調(diào)度,從而降低建設(shè)成本并提高服務(wù)能力,例如,當(dāng)防火墻處理流量過(guò)載時(shí),可將其負(fù)載(處理的流)動(dòng)態(tài)、實(shí)時(shí)地分配到其他通用資源進(jìn)行處理(scale out操作);當(dāng)多個(gè)網(wǎng)絡(luò)功能負(fù)載較輕存在資源碎片時(shí),可將其合并從而降低能耗(scale in操作),在NFV中,大多數(shù)網(wǎng)絡(luò)功能對(duì)數(shù)據(jù)包的處理是基于流狀態(tài)的,而某些數(shù)據(jù)包也會(huì)觸發(fā)流狀態(tài)的更新,這就要求在進(jìn)行流迀移時(shí),源和目標(biāo)網(wǎng)絡(luò)功能的相關(guān)流狀態(tài)保持一致,從而確保迀移后目標(biāo)網(wǎng)絡(luò)功能對(duì)流處理的正確性。
[0004] 為解決流迀移狀態(tài)一致性問(wèn)題,一種被動(dòng)的方法(Gember A,Krishnamurthy A, John S S,et al.Stratos:A network-aware orchestrat1n layer for middleboxes in the cloud[R].Technical Report,2013.)是僅僅在網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備(Switch)處對(duì)新流進(jìn)行重定向,從而進(jìn)行scale out的操作,或者等待源網(wǎng)絡(luò)功能處理的流全部結(jié)束后進(jìn)行銷毀從而實(shí)現(xiàn)scale in操作,但這種方式無(wú)法迅速的緩解已經(jīng)過(guò)載的網(wǎng)絡(luò)功能,另一種方式 (Rajagopalan S,ffilliams D, Jamjoom H,et al.Split/merge: System support for elastic execut1n in virtual middleboxes[C]//Presented as part of the 10th USENIX Symposium on Networked Systems Design and Implementat1n(NSDI 13).2013: 227-240.)是主動(dòng)迀移正在被過(guò)載網(wǎng)絡(luò)功能處理的流和相關(guān)的流狀態(tài),在短時(shí)間內(nèi)實(shí)現(xiàn)流迀移,狀態(tài)迀移可通過(guò)標(biāo)準(zhǔn)的南向接口實(shí)現(xiàn),然而在狀態(tài)迀移過(guò)程中,迀移流的數(shù)據(jù)包會(huì)持續(xù)的到達(dá)源網(wǎng)絡(luò)功能或者目標(biāo)網(wǎng)絡(luò)功能,導(dǎo)致源、目標(biāo)狀態(tài)的不一致和部分?jǐn)?shù)據(jù)包沒(méi)有被正確的處理,其根本原因是狀態(tài)的迀移和流的迀移存在競(jìng)爭(zhēng)關(guān)系,〇penNF(Gember-Jacobson A,Viswanathan R,Prakash C,et al.0penNF:Enabling innovat1n in network funct1n control[J].ACM SIGC0MM Computer Communicat1n Review,2015,44(4):163-174.)使用SDN控制器集中地緩存與處理狀態(tài)迀移過(guò)程中到達(dá)的數(shù)據(jù)包,解決狀態(tài)迀移和流迀移的競(jìng)爭(zhēng)問(wèn)題,然而,集中式的系統(tǒng)架構(gòu)嚴(yán)重的限制了其可擴(kuò)展性和性能。
[0005]目前解決NFV負(fù)載迀移的系統(tǒng)主要包括:
[0006]Split/Merge(Rajagopalan S,ffi11iams D,Jamjoom H,et al.Split/merge: System support for elastic execut1n in virtual middleboxes[C]//Presented as part of the 10th USENIX Symposium on Networked Systems Design and Implementat1n(NSDI 13) ? 2013: 227-240 ?):當(dāng)遷移開始時(shí),控制器命令Switch立刻將要迀移流的數(shù)據(jù)包轉(zhuǎn)發(fā)到控制器進(jìn)行集中緩存,之后控制器將源網(wǎng)絡(luò)功能中要迀移的流的相關(guān)狀態(tài)拷貝到目標(biāo)網(wǎng)絡(luò)功能中,這個(gè)過(guò)程中,所有迀移流的數(shù)據(jù)包都會(huì)緩存在控制器中,當(dāng)狀態(tài)拷貝完成后,控制器釋放所有緩存的數(shù)據(jù)包給目標(biāo)網(wǎng)絡(luò)功能,并命令switch直接將數(shù)據(jù)包轉(zhuǎn)發(fā)給目標(biāo)網(wǎng)絡(luò)功能,整個(gè)過(guò)程實(shí)現(xiàn)了流和相關(guān)狀態(tài)的迀移,然而其存在兩個(gè)問(wèn)題,首先從控制器釋放的包和被switch直接轉(zhuǎn)發(fā)的包會(huì)亂序地被目標(biāo)網(wǎng)絡(luò)功能處理,亂序會(huì)造成網(wǎng)絡(luò)功能的錯(cuò)誤處理,其次,當(dāng)開始迀移在源網(wǎng)絡(luò)功能中相關(guān)的流狀態(tài)時(shí),仍有一些數(shù)據(jù)包已經(jīng)被Switch轉(zhuǎn)發(fā)但還沒(méi)被源網(wǎng)絡(luò)功能處理,這些包可能會(huì)更新流狀態(tài),但這些狀態(tài)的更新會(huì)永遠(yuǎn)不會(huì)在目標(biāo)網(wǎng)絡(luò)功能中反應(yīng),導(dǎo)致流的狀態(tài)在源、目標(biāo)網(wǎng)絡(luò)功能不一致。
[0007]OpenNF:當(dāng)迀移開始時(shí),直接從源網(wǎng)絡(luò)功能中拷貝流狀態(tài),此時(shí)源網(wǎng)絡(luò)功能會(huì)將收到迀移流數(shù)據(jù)包轉(zhuǎn)發(fā)給控制器進(jìn)行緩存,當(dāng)狀態(tài)拷貝完成后,控制器釋放所有緩存的包, Switch也直接將包轉(zhuǎn)發(fā)給目標(biāo)網(wǎng)絡(luò)功能,但此時(shí)目標(biāo)網(wǎng)絡(luò)功能會(huì)先緩存所有來(lái)自于Switch 的數(shù)據(jù)包,等所有從控制器釋放的數(shù)據(jù)包處理完成后在進(jìn)行處理,通過(guò)這種精巧的設(shè)計(jì)可以解決Split/Merge的狀態(tài)不一致問(wèn)題和包亂序的問(wèn)題,然而,這是一種集中式的系統(tǒng),當(dāng)迀移規(guī)模較大時(shí),控制器會(huì)成為整個(gè)系統(tǒng)的瓶頸(單點(diǎn)處理和緩存所有的迀移數(shù)據(jù)包),此夕卜,迀移數(shù)據(jù)包經(jīng)由控制器傳送給目標(biāo)網(wǎng)絡(luò)功能的方式引入了額外的轉(zhuǎn)發(fā)。[00〇8] Improved OpenNF與OpenNF不同,源網(wǎng)絡(luò)功能僅僅將升級(jí)流狀態(tài)的包轉(zhuǎn)發(fā)給控制器進(jìn)行緩存,在保證狀態(tài)一致性的情況下大幅降低了控制器的緩存壓力,然而,這種方式仍是一種集中式控制,沒(méi)有從根本上解決瓶頸問(wèn)題,此外,這種方式無(wú)法保證數(shù)據(jù)包無(wú)亂序的到達(dá)目標(biāo)網(wǎng)絡(luò)功能。
[0009]如圖1所示,現(xiàn)有技術(shù)在狀態(tài)一致性,迀移效率,集中式緩存需求和網(wǎng)絡(luò)功能的額外開銷等方面都存在缺陷。
【發(fā)明內(nèi)容】
[0010]針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法及系統(tǒng)。
[0011]本發(fā)明提出一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法,包括
[0012]步驟1,在源網(wǎng)絡(luò)功能處與目標(biāo)網(wǎng)絡(luò)功能處分別部署源流迀移處理單元與目標(biāo)流處理單元,并通過(guò)所述的源流迀移處理單元與網(wǎng)絡(luò)交換設(shè)備在數(shù)據(jù)包包頭內(nèi)設(shè)置兩位標(biāo)簽,將數(shù)據(jù)包標(biāo)記為四類,包括normal類、in-fly類、last in-fly類、redirect類,所述的目標(biāo)流迀移處理單元使用基于所述標(biāo)簽的分類器將所述的normal類、in-fly類、last in-fly 類、redirect類數(shù)據(jù)包進(jìn)行分類;[〇〇13]步驟2,在所述源流迀移處理單元與所述目標(biāo)迀移處理單元中分別部署源狀態(tài)機(jī)與目標(biāo)狀態(tài)機(jī),獲取并記錄當(dāng)前迀移狀態(tài),所述源狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)對(duì)數(shù)據(jù)包進(jìn)行標(biāo)記與轉(zhuǎn)發(fā),所述目標(biāo)狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)與包處理規(guī)則將所述normal類、 in-fly類、last in-fly類、redirect類數(shù)據(jù)包分別放置于所述目標(biāo)流處理單元中的默認(rèn)緩存,in-fly類的環(huán)形緩存與redirect類的環(huán)形緩存,最終通過(guò)默認(rèn)緩存交付于目標(biāo)網(wǎng)絡(luò)功能處。[0〇14] 所述normal類是默認(rèn)值的數(shù)據(jù)包、所述in-fly類與所述last in-fly類是由源網(wǎng)絡(luò)功能處的流迀移處理單元標(biāo)記的數(shù)據(jù)包,redirect類是由網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備進(jìn)行標(biāo)記的數(shù)據(jù)包。[〇〇15]所述步驟2包括:當(dāng)所述目標(biāo)狀態(tài)機(jī)處于“正?!睜顟B(tài)時(shí):所述“正?!睜顟B(tài)下,當(dāng)收至IJ “流迀移開始命令事件”時(shí),狀態(tài)變?yōu)椤癕l”,執(zhí)行的操作是創(chuàng)建redirect類和in-fly類的環(huán)形緩存,打開包分類器,并將所有類型的數(shù)據(jù)包放入到默認(rèn)緩存中并發(fā)送給目標(biāo)網(wǎng)絡(luò)功能處。
[0016]所述步驟2還包括“Ml”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“Ml”狀態(tài)迀移為 “MSI”狀態(tài),執(zhí)行操作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放infly 類的環(huán)形緩存; 當(dāng)收到 redirect 類的數(shù)據(jù)包時(shí),所述 “Ml” 狀態(tài)迀移為“M2” 狀態(tài),執(zhí)行操作為升級(jí)流表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;
[0017]“M2”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M2”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類的環(huán)形緩存;當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“M2”狀態(tài)迀移為“M3”狀態(tài),執(zhí)行操作為丟棄 last in-fly類的數(shù)據(jù)包,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;[〇〇18]“M3”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M3”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行操作為將in-fly類與redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly 類與redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。
[0019]“MSI”狀態(tài):當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“MSI”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為升級(jí)流表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;
[0020]“MS2”狀態(tài):當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“MS2”狀態(tài)迀移為“MS3”狀態(tài), 執(zhí)行操作為將redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;[0021 ]“MS3”狀態(tài):在所述“MS3”狀態(tài)時(shí),所述“MS3”狀態(tài)迀移為“正常”狀態(tài),執(zhí)行操作為關(guān)閉包分類功能,并且迀移結(jié)束,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。
[0022]本發(fā)明還提出一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng),包括
[0023]分類模塊,用于在源網(wǎng)絡(luò)功能處與目標(biāo)網(wǎng)絡(luò)功能處分別部署源流迀移處理單元與目標(biāo)流處理單元,并通過(guò)所述的源流迀移處理單元與網(wǎng)絡(luò)交換設(shè)備在數(shù)據(jù)包包頭內(nèi)設(shè)置兩位標(biāo)簽,將數(shù)據(jù)包標(biāo)記為四類,包括normal類、in-fly類、last in-fly類、redirect類,所述的目標(biāo)流迀移處理單元使用基于所述標(biāo)簽的分類器將所述的normal類、in-fly類、last in-fly類、redirect類數(shù)據(jù)包進(jìn)行分類;[〇〇24]迀移模塊,用于在所述源流迀移處理單元與所述目標(biāo)迀移處理單元中分別部署源狀態(tài)機(jī)與目標(biāo)狀態(tài)機(jī),獲取并記錄當(dāng)前迀移狀態(tài),所述源狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)對(duì)數(shù)據(jù)包進(jìn)行標(biāo)記與轉(zhuǎn)發(fā),所述目標(biāo)狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)與包處理規(guī)則將所述 normal類、in-fly類、last in-fly類、redirect類數(shù)據(jù)包分別放置于所述目標(biāo)流處理單元中的默認(rèn)緩存,in-fly類的環(huán)形緩存與redirect類的環(huán)形緩存,最終通過(guò)默認(rèn)緩存交付于目標(biāo)網(wǎng)絡(luò)功能處。[0〇25] 所述normal類是默認(rèn)值的數(shù)據(jù)包、所述in-fly類與所述last in-fly類是由源網(wǎng)絡(luò)功能處的流迀移處理單元標(biāo)記的數(shù)據(jù)包,redirect類是由網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備進(jìn)行標(biāo)記的數(shù)據(jù)包。[〇〇26]所述迀移模塊包括:當(dāng)所述目標(biāo)狀態(tài)機(jī)處于“正常”狀態(tài)時(shí):所述“正?!睜顟B(tài)下,當(dāng)收到“流迀移開始命令事件”時(shí),狀態(tài)變?yōu)椤癕l”,執(zhí)行的操作是創(chuàng)建redirect類和in-fly類的環(huán)形緩存,打開包分類器,并將所有類型的數(shù)據(jù)包放入到默認(rèn)緩存中并發(fā)送給目標(biāo)網(wǎng)絡(luò)功能處。
[0027]所述迀移模塊還包括“Ml”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“Ml”狀態(tài)迀移為“MSI”狀態(tài),執(zhí)行操作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放 in-fly類的環(huán)形緩存;當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“Ml”狀態(tài)迀移為“M2”狀態(tài),執(zhí)行操作為升級(jí)流表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;
[0028]“M2”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M2”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類的環(huán)形緩存;當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“M2”狀態(tài)迀移為“M3”狀態(tài),執(zhí)行操作為丟棄 last in-fly類的數(shù)據(jù)包,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;[〇〇29]“M3”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M3”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行操作為將in-fly類與redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly 類與redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。
[0030]“MSI”狀態(tài):當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“MSI”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為升級(jí)流表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;[〇〇31]“MS2”狀態(tài):當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“MS2”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行操作為將redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;[〇〇32]“MS3”狀態(tài):在所述“MS3”狀態(tài)時(shí),所述“MS3”狀態(tài)迀移為“正?!睜顟B(tài),執(zhí)行操作為關(guān)閉包分類功能,并且迀移結(jié)束,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。
[0033]由以上方案可知,本發(fā)明的優(yōu)點(diǎn)在于:
[0034]本發(fā)明能夠保證在迀移開始時(shí),迀移的數(shù)據(jù)包可以立刻被轉(zhuǎn)發(fā)到分布式的流迀移處理單元中進(jìn)行處理與緩存(不依賴狀態(tài)迀移操作),數(shù)據(jù)包的迀移和狀態(tài)的迀移可以并發(fā)進(jìn)行,目標(biāo)流迀移處理單元通過(guò)自身狀態(tài)和各類事件生成相應(yīng)的包處理規(guī)則處理收到的各類數(shù)據(jù)包,最終將數(shù)據(jù)包無(wú)丟失的、按序的遞交給目標(biāo)網(wǎng)絡(luò)功能,從而實(shí)現(xiàn)高效的、透明的、 無(wú)丟包和無(wú)亂序的流迀移操作,發(fā)明人基于本發(fā)明實(shí)現(xiàn)并部署了流迀移原型系統(tǒng)(TFM),并與目前最先進(jìn)的系統(tǒng)OpenNF進(jìn)行對(duì)比,試驗(yàn)結(jié)果和效果如下所示:[〇〇35](1)迀移效率:如圖2-4所示,TFM在迀移單條和100條流時(shí)所用的時(shí)間分別為24毫秒和77毫秒,其迀移效率比OpenNF分別提高了 3倍到36倍,且優(yōu)化程度會(huì)隨著迀移流的數(shù)量不斷提升;
[0036](2)對(duì)迀移流的影響:流的迀移會(huì)引入額外的包延遲,這對(duì)流的傳輸效率有巨大影響,如圖2-5所示,TFM中流迀移引入的包延遲為18毫秒,且不會(huì)受到流速率的影響,延遲相比于OpenNF降低了 6-8倍;[〇〇37](3)緩存需求:現(xiàn)有技術(shù)采用的是集中式緩存,對(duì)單點(diǎn)的緩存要求如圖2-6所示,迀移100條流時(shí)OpenNF需200Mbytes(126980個(gè)包)的緩存,且此需求會(huì)隨著迀移流數(shù)不斷上升,TFM迀移相同數(shù)量的流僅需要14MbyteS(10044個(gè)包)的緩存?!靖綀D說(shuō)明】
[0038]圖1為基于Click實(shí)現(xiàn)的流迀移處理單元:模塊配置與編排圖;[〇〇39] 圖2-1為TFM系統(tǒng)架構(gòu)圖;[〇〇4〇]圖2-2為流迀移處理單元設(shè)計(jì)架構(gòu)圖;[0041 ]圖2-3為流迀移處理單元狀態(tài)機(jī)設(shè)計(jì)與實(shí)現(xiàn);[〇〇42] 圖2-4為迀移效率(迀移時(shí)間)對(duì)比圖;[〇〇43] 圖2-5為包延遲對(duì)比圖;
[0044]圖2-6為需緩存的包數(shù)量對(duì)比圖;
[0045]圖3為本發(fā)明系統(tǒng)TFM控制器流迀移偽代碼圖?!揪唧w實(shí)施方式】
[0046]為了解決現(xiàn)有技術(shù)在NFV中進(jìn)行負(fù)載迀移時(shí)存在的狀態(tài)不一致性、迀移效率低、控制器瓶頸和網(wǎng)絡(luò)功能額外開銷等問(wèn)題,本發(fā)明設(shè)計(jì)并實(shí)現(xiàn)了基于分布式的架構(gòu)的流迀移系統(tǒng)(Transparent Flow Migrat1n,TFM),如圖2-1 所不,各遷移單元(TFM Box,圖2-2)基于由多事件觸發(fā)的狀態(tài)機(jī)(圖2-3)判斷迀移狀態(tài),并生成數(shù)據(jù)包處理規(guī)則,實(shí)現(xiàn)對(duì)數(shù)據(jù)包分布式的協(xié)同分類與處理進(jìn)而完成數(shù)據(jù)包的迀移,此外,迀移單元狀態(tài)機(jī)可支持各類事件的亂序到達(dá)(異步處理機(jī)制),從而解耦狀態(tài)迀移和數(shù)據(jù)包迀移兩個(gè)操作;TFM控制器向應(yīng)用提供北向迀移接口,定義迀移流和源、目標(biāo)網(wǎng)絡(luò)功能(在哪兩個(gè)網(wǎng)絡(luò)功能間迀移哪些流),控制器包括四個(gè)模塊:狀態(tài)管理器調(diào)用源、目標(biāo)網(wǎng)絡(luò)功能提供的流狀態(tài)導(dǎo)出/導(dǎo)入南向接口,實(shí)現(xiàn)流狀態(tài)在多個(gè)網(wǎng)絡(luò)功能間的迀移;流迀移管理器控制分布式的流迀移處理單元,實(shí)現(xiàn)無(wú)丟包、無(wú)亂序的數(shù)據(jù)包迀移;網(wǎng)路管理器負(fù)責(zé)控制網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備,使得流能在源、目標(biāo)網(wǎng)絡(luò)功能間進(jìn)行轉(zhuǎn)發(fā)與迀移;流迀移調(diào)度器負(fù)責(zé)解析北向接口參數(shù)并向下協(xié)調(diào)與調(diào)度上述的三個(gè)模塊。
[0047]本發(fā)明提出一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法,包括
[0048]步驟1,在源網(wǎng)絡(luò)功能處與目標(biāo)網(wǎng)絡(luò)功能處分別部署源流迀移處理單元與目標(biāo)流處理單元,并通過(guò)所述的源流迀移處理單元與網(wǎng)絡(luò)交換設(shè)備在數(shù)據(jù)包包頭內(nèi)設(shè)置兩位標(biāo)簽,將數(shù)據(jù)包標(biāo)記為四類,包括normal類、in-fly類、last in-fly類、redirect類,所述的目標(biāo)流迀移處理單元使用基于所述標(biāo)簽的分類器將所述的normal類、in-fly類、last in-fly類、redirect類數(shù)據(jù)包進(jìn)行分類;[〇〇49]步驟2,在所述源流迀移處理單元與所述目標(biāo)迀移處理單元中分別部署源狀態(tài)機(jī)與目標(biāo)狀態(tài)機(jī),獲取并記錄當(dāng)前迀移狀態(tài),所述源狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)對(duì)數(shù)據(jù)包進(jìn)行標(biāo)記與轉(zhuǎn)發(fā),所述目標(biāo)狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)與包處理規(guī)則將所述normal類、 in-fly類、last in-fly類、redirect類數(shù)據(jù)包分別放置于所述目標(biāo)流處理單元中的默認(rèn)緩存,in-fly類的環(huán)形緩存與redirect類的環(huán)形緩存,最終通過(guò)默認(rèn)緩存交付于目標(biāo)網(wǎng)絡(luò)功能處。
[0050]為了便于對(duì)本發(fā)明進(jìn)行解釋說(shuō)明,以下為本發(fā)明方法的實(shí)施例,如下所示:
[0051]步驟1,本發(fā)明采用分布式的流迀移架構(gòu),在靠近目標(biāo)網(wǎng)絡(luò)功能處部署流迀移處理單元,其可以是一個(gè)單獨(dú)的代理器或者在網(wǎng)絡(luò)功能所屬的虛擬交換機(jī)中實(shí)現(xiàn),實(shí)現(xiàn)架構(gòu)和組件如圖2-2所示,包含一個(gè)兩級(jí)包分類組件、三個(gè)環(huán)形緩存隊(duì)列、一個(gè)標(biāo)簽器和一個(gè)轉(zhuǎn)發(fā)組件,其中在源網(wǎng)絡(luò)功能處,流迀移處理單元將分類的數(shù)據(jù)包打上不同的標(biāo)簽,并轉(zhuǎn)發(fā)給目標(biāo)網(wǎng)絡(luò)功能處的流迀移處理單元,其根據(jù)包頭的標(biāo)簽位將數(shù)據(jù)包依照步驟3分為四類,其中 in-fly和redirect類型的數(shù)據(jù)包分別按照先進(jìn)先出(FIFO)的方式存儲(chǔ)到in-fly和 redirect環(huán)形隊(duì)列中,normal類型數(shù)據(jù)包存儲(chǔ)到默認(rèn)緩存中;同時(shí),in-fly和redirect隊(duì)列中的數(shù)據(jù)包會(huì)在不同的迀移階段(步驟2)輸出到默認(rèn)緩存中,默認(rèn)緩存作為唯一的出口向網(wǎng)絡(luò)功能輸出數(shù)據(jù)包;[〇〇52]步驟2,在每個(gè)流迀移處理單元中實(shí)現(xiàn)狀態(tài)機(jī),該狀態(tài)機(jī)有兩個(gè)作用,一是確定流迀移進(jìn)行到什么階段,二是確定在該迀移階段對(duì)不同類型的數(shù)據(jù)包進(jìn)行怎樣的處理,如圖 2-3所示,狀態(tài)機(jī)包括源和目標(biāo)兩種類型,首先看較為復(fù)雜的目標(biāo)狀態(tài)機(jī),其包括7個(gè)狀態(tài) (一個(gè)正常狀態(tài)和六個(gè)迀移狀態(tài)),當(dāng)狀態(tài)迀移開始時(shí),狀態(tài)機(jī)從“正常”狀態(tài)迀移到“Ml”狀態(tài),此時(shí)進(jìn)入迀移階段,隨著迀移的進(jìn)行,狀態(tài)機(jī)會(huì)在中間的六個(gè)狀態(tài)間進(jìn)行迀移,最終隨著迀移結(jié)束又回到“正常”狀態(tài)(圖中右下角狀態(tài)),整個(gè)流程有兩個(gè)關(guān)鍵點(diǎn),一是狀態(tài)機(jī)的狀態(tài)迀移是如何觸發(fā)的,二是每個(gè)狀態(tài)下對(duì)不同類型的包如何處理,具體如下所示:
[0053](1)首先狀態(tài)機(jī)的狀態(tài)迀移是通過(guò)事件觸發(fā)的,狀態(tài)機(jī)事件包括四類包事件(收到數(shù)據(jù)包)和三類控制事件(迀移開始,狀態(tài)安裝結(jié)束,迀移結(jié)束),其中,控制事件和部分包事件(第一個(gè)redirect類的數(shù)據(jù)包和last infly類的數(shù)據(jù)包到達(dá)事件)可以觸發(fā)狀態(tài)機(jī)的狀態(tài)變迀,稱該類事件為關(guān)鍵事件,關(guān)鍵事件與相應(yīng)的操作如圖2_3(a)中有向?qū)嵕€所示;除了關(guān)鍵事件外,其他類型的事件不會(huì)產(chǎn)生狀態(tài)的迀移(虛箭頭表示),我們稱之為閉環(huán)事件,該類事件全部為包事件,所有事件都包含匹配域和操作域兩個(gè)域,匹配域定義了該事件的特征(如來(lái)自控制器的某個(gè)命令或者某種類型的數(shù)據(jù)包),操作域定義了該事件達(dá)到后除了可能觸發(fā)狀態(tài)變迀(關(guān)鍵事件)外,還需要采取哪些操作,這些特征和操作將在隨后進(jìn)行詳細(xì)描述。[〇〇54](2)狀態(tài)機(jī)的每個(gè)狀態(tài)下會(huì)對(duì)四類數(shù)據(jù)包定義不同的包處理規(guī)則,所有的閉環(huán)事件(非關(guān)鍵事件)定義了不同狀態(tài)下包的處理規(guī)則,如圖2_3(b)所示,規(guī)則也包括匹配域和操作域,命中匹配域的數(shù)據(jù)包會(huì)執(zhí)行該規(guī)則操作域的操作(包括緩存和丟棄兩種);
[0055]下面分別介紹源、目標(biāo)流迀移處理單元狀態(tài)變迀和各狀態(tài)下包處理規(guī)則,如圖2-3 (a)所示,目標(biāo)狀態(tài)機(jī):
[0056](1) “正常”狀態(tài):該狀態(tài)下,當(dāng)收到來(lái)自控制器的“流迀移開始命令事件”時(shí),狀態(tài)變?yōu)椤癕1”,執(zhí)行的操作是創(chuàng)建redirect和in-fly環(huán)形緩存,打開包分類器,由于該狀態(tài)下沒(méi)有閉環(huán)事件(虛線),所以其包處理規(guī)則如2_3(b)默認(rèn)規(guī)則所示,即將所有類型的數(shù)據(jù)包放入到默認(rèn)緩存中發(fā)送給目標(biāo)網(wǎng)絡(luò)功能。[〇〇57](2) “Ml”狀態(tài):該狀態(tài)下有兩個(gè)關(guān)鍵事件,一是收到控制器“狀態(tài)安裝完成事件”,此時(shí)狀態(tài)向右迀移為“MSI”,執(zhí)行操作為將in-fly緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly緩存;二是收到redirect數(shù)據(jù)包,此時(shí)狀態(tài)向下迀移為“M2”,執(zhí)行操作為通知控制器升級(jí)流表。該狀態(tài)下的數(shù)據(jù)包操作如圖(b)中LR1規(guī)則所示,in-fly和redirect數(shù)據(jù)包分別緩存到各自隊(duì)列中。[〇〇58](3) “M2”狀態(tài):該狀態(tài)下有兩個(gè)關(guān)鍵事件,一是收到控制器“狀態(tài)安裝完成事件”,此時(shí)狀態(tài)向右迀移為“MS2”,執(zhí)行操作為將in-fly緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly緩存;二是收到last in-fly數(shù)據(jù)包,此時(shí)狀態(tài)向下迀移為“M3”,執(zhí)行操作為丟棄該數(shù)據(jù)包。該狀態(tài)下的數(shù)據(jù)包操作如圖(b)中LR2規(guī)則所示,in-fly和redirect數(shù)據(jù)包分別緩存到各自隊(duì)列中。
[0059](4) “M3”狀態(tài):該狀態(tài)關(guān)鍵事件是收到控制器“狀態(tài)安裝完成事件”,此時(shí)狀態(tài)向右迀移為“MS3”,執(zhí)行操作為將in-fly和redirect緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放 in-fly和redirect緩存;該狀態(tài)下的數(shù)據(jù)包操作如圖(b)中LR3規(guī)則所示,in-fly和 redirect數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly數(shù)據(jù)包。
[0060](5) “MSI”狀態(tài):該狀態(tài)關(guān)鍵事件是收到redirect數(shù)據(jù)包,此時(shí)狀態(tài)向下迀移為 “MS2”,執(zhí)行操作為通知控制器升級(jí)流表;該狀態(tài)下的數(shù)據(jù)包操作如圖(b)中LRS1規(guī)則所示, in-fly和redirect數(shù)據(jù)包分別緩存到各自隊(duì)列中。
[0061](6)“MS2”狀態(tài):該狀態(tài)關(guān)鍵事件是收到last in-fly數(shù)據(jù)包,此時(shí)狀態(tài)向下迀移為 “MS3”,執(zhí)行操作為將redirect緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放redirect緩存; 該狀態(tài)下的數(shù)據(jù)包操作如圖(b)中LRS2規(guī)則所示,in-fly和redirect數(shù)據(jù)包分別緩存到各自隊(duì)列中。
[0062](7) “MS3”狀態(tài):任何事件在該狀態(tài)下都為關(guān)鍵事件,此時(shí)狀態(tài)向下迀移為“正常”, 執(zhí)行操作為關(guān)閉包分類功能,通知控制器迀移結(jié)束;該狀態(tài)下的數(shù)據(jù)包操作如圖(b)中LRS3 規(guī)則所示,in-fly和redirect數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly數(shù)據(jù)包。 [〇〇63]源流迀移處理單元的兩個(gè)狀態(tài)描述為:[〇〇64](1) “正常”狀態(tài):該狀態(tài)下,當(dāng)收到來(lái)自控制器的“流迀移開始命令事件”時(shí),狀態(tài)向右變?yōu)椤癕”,執(zhí)行的操作是打開包分類器。由于該狀態(tài)下沒(méi)有閉環(huán)事件(虛線),所以其包處理規(guī)則如2-3(b)默認(rèn)規(guī)則所示,即將所有類型的數(shù)據(jù)包放入到默認(rèn)緩存中發(fā)送給目標(biāo)網(wǎng)絡(luò)功能。
[0065](2) “M”狀態(tài):該狀態(tài)下,當(dāng)收到來(lái)自控制器的“流迀移結(jié)束命令事件”時(shí),狀態(tài)向左變?yōu)椤罢!保瑘?zhí)行的操作是關(guān)閉包分類器。該狀態(tài)下的包處理規(guī)則是收到“normal”數(shù)據(jù)包時(shí),包頭打入in-fly標(biāo)簽,并轉(zhuǎn)發(fā)給目標(biāo)流迀移處理單元;收到“redirect”數(shù)據(jù)包時(shí),包頭打入last in-fly標(biāo)簽,并轉(zhuǎn)發(fā)給目標(biāo)流迀移處理單元;[〇〇66]源、目標(biāo)狀態(tài)機(jī)通過(guò)一系列的事件觸發(fā)狀態(tài)迀移,并最終回到“正?!睜顟B(tài),完成一次流迀移操作。
[0067]步驟3,TFM使用帶內(nèi)的方式標(biāo)記不同類型的數(shù)據(jù)包和傳遞控制信息,具體實(shí)現(xiàn)是使用數(shù)據(jù)包包頭中的兩位標(biāo)記迀移過(guò)程中的四類數(shù)據(jù)包(normal,in-fly,redirect,last in-fly):n〇rmal是默認(rèn)數(shù)據(jù)包,迀移過(guò)程中,有些新的流會(huì)直接被分配到目標(biāo)網(wǎng)絡(luò)功能中進(jìn)行處理,該類流的數(shù)據(jù)包并沒(méi)有涉及到迀移操作;in-fly:迀移開始時(shí),首先將原網(wǎng)絡(luò)功能中的流狀態(tài)迀移(安裝)到目標(biāo)網(wǎng)絡(luò)功能中,同時(shí),我們需要升級(jí)流表將要迀移的數(shù)據(jù)包直接轉(zhuǎn)發(fā)給目標(biāo)網(wǎng)絡(luò)功能,而在升級(jí)流表時(shí)刻之前,某些數(shù)據(jù)包已經(jīng)被發(fā)給原網(wǎng)絡(luò)功能且還沒(méi)有被處理,為了避免數(shù)據(jù)包的丟失和狀態(tài)不一致問(wèn)題,原迀移單元需要將該類型的數(shù)據(jù)包打上in-fly的標(biāo)簽并轉(zhuǎn)發(fā)給目標(biāo)流迀移處理單元;redirect,流表升級(jí)之前發(fā)給原網(wǎng)絡(luò)功能的數(shù)據(jù)包為in-fly類型,流表升級(jí)之后直接發(fā)給目標(biāo)網(wǎng)絡(luò)功能的數(shù)據(jù)包為 redirect,該標(biāo)簽由交換機(jī)打入;last in-fly,為了保證迀移過(guò)程中數(shù)據(jù)包沒(méi)有亂序,目標(biāo)單元需要先處理所有的in-fly的數(shù)據(jù)包,再處理redirect的數(shù)據(jù)包,而此時(shí)目標(biāo)單元需要確定哪個(gè)數(shù)據(jù)包是最后一個(gè)in-fly數(shù)據(jù)包,即last in-fly類型包,該包由源流迀移處理單元進(jìn)行標(biāo)記。其技術(shù)效果為:目標(biāo)流迀移處理單元能夠依靠不同的標(biāo)記對(duì)包進(jìn)行分類,從而進(jìn)行正確的處理,此外,redirect和last in-fly數(shù)據(jù)包還帶有控制信息,能夠觸發(fā)目標(biāo)迀移單元升級(jí)流表和釋放緩存,如附圖2-2所示,實(shí)現(xiàn)了高效的控制機(jī)制與協(xié)同機(jī)制。
[0068]本發(fā)明基于上述關(guān)鍵技術(shù)和機(jī)制,實(shí)現(xiàn)并部署了本發(fā)明的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng)TFM,系統(tǒng)相關(guān)組件如圖2-1所示,包含TFM控制器和TFM box(流迀移處理單元)兩個(gè)部分:
[0069]流迀移處理單元:TFM box基于Click實(shí)現(xiàn),其中tagclassifier模塊根據(jù)包的tag (步驟3)進(jìn)行包分類并轉(zhuǎn)交給模塊tfm,其根據(jù)內(nèi)置狀態(tài)機(jī)生成的包處理規(guī)則(步驟2)緩存、 丟棄或者轉(zhuǎn)發(fā)該數(shù)據(jù)包,最終由NFclassifier模塊將數(shù)據(jù)包遞交給網(wǎng)絡(luò)功能。此外, ControlSocket模塊向控制器提供了基于telnet的配置調(diào)用接口,允許控制器遠(yuǎn)程實(shí)時(shí)配置。
[0070]流迀移控制器:如圖2-1所示,控制器包含狀態(tài)管理器、流迀移控制器和網(wǎng)絡(luò)管理器。在迀移開始時(shí),狀態(tài)管理器通過(guò)gson的方式調(diào)用網(wǎng)絡(luò)功能提供的標(biāo)準(zhǔn)的南向接口,進(jìn)行流狀態(tài)的導(dǎo)出和導(dǎo)入;網(wǎng)絡(luò)控制器有java實(shí)現(xiàn),調(diào)用OpenFlow的控制器Floodlight控制網(wǎng)絡(luò)轉(zhuǎn)發(fā)行為;流迀移器通過(guò)telnet向TFM box下發(fā)控制命令??刂破鞯牟僮髋c調(diào)度如附圖3 所示。
[0071]本發(fā)明還提出一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng),包括
[0072]分類模塊,用于在源網(wǎng)絡(luò)功能處與目標(biāo)網(wǎng)絡(luò)功能處分別部署源流迀移處理單元與目標(biāo)流處理單元,并通過(guò)所述的源流迀移處理單元與網(wǎng)絡(luò)交換設(shè)備在數(shù)據(jù)包包頭內(nèi)設(shè)置兩位標(biāo)簽,將數(shù)據(jù)包標(biāo)記為四類,包括normal類、in-fly類、last in-fly類、redirect類,所述的目標(biāo)流迀移處理單元使用基于所述標(biāo)簽的分類器將所述的normal類、in-fly類、last in-fly類、redirect類數(shù)據(jù)包進(jìn)行分類;[〇〇73]迀移模塊,用于在所述源流迀移處理單元與所述目標(biāo)迀移處理單元中分別部署源狀態(tài)機(jī)與目標(biāo)狀態(tài)機(jī),獲取并記錄當(dāng)前迀移狀態(tài),所述源狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)對(duì)數(shù)據(jù)包進(jìn)行標(biāo)記與轉(zhuǎn)發(fā),所述目標(biāo)狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)與包處理規(guī)則將所述 normal類、in-fly類、last in-fly類、redirect類數(shù)據(jù)包分別放置于所述目標(biāo)流處理單元中的默認(rèn)緩存,in-fly類的環(huán)形緩存與redirect類的環(huán)形緩存,最終通過(guò)默認(rèn)緩存交付于目標(biāo)網(wǎng)絡(luò)功能處。[0〇74] 所述normal類是默認(rèn)值的數(shù)據(jù)包、所述in-fly類與所述last in-fly類是由源網(wǎng)絡(luò)功能處的流迀移處理單元標(biāo)記的數(shù)據(jù)包,redirect類是由網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備進(jìn)行標(biāo)記的數(shù)據(jù)包。[〇〇75]所述迀移模塊包括:當(dāng)所述目標(biāo)狀態(tài)機(jī)處于“正?!睜顟B(tài)時(shí):所述“正?!睜顟B(tài)下,當(dāng)收到“流迀移開始命令事件”時(shí),狀態(tài)變?yōu)椤癕l”,執(zhí)行的操作是創(chuàng)建redirect類和in-fly類的環(huán)形緩存,打開包分類器,并將所有類型的數(shù)據(jù)包放入到默認(rèn)緩存中并發(fā)送給目標(biāo)網(wǎng)絡(luò)功能處。
[0076]所述迀移模塊還包括“Ml”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“Ml”狀態(tài)迀移為“MSI”狀態(tài),執(zhí)行操作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放 in-fly類的環(huán)形緩存;當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“Ml”狀態(tài)迀移為“M2”狀態(tài),執(zhí)行操作為升級(jí)流表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;
[0077]“M2”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M2”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類的環(huán)形緩存;當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“M2”狀態(tài)迀移為“M3”狀態(tài),執(zhí)行操作為丟棄 last in-fly類的數(shù)據(jù)包,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;[〇〇78]“M3”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M3”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行操作為將in-fly類與redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly 類與redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。
[0079]“MSI”狀態(tài):當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“MSI”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為升級(jí)流表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;
[0080]“MS2”狀態(tài):當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“MS2”狀態(tài)迀移為“MS3”狀態(tài), 執(zhí)行操作為將redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;[0081 ]“MS3”狀態(tài):在所述“MS3”狀態(tài)時(shí),所述“MS3”狀態(tài)迀移為“正?!睜顟B(tài),執(zhí)行操作為關(guān)閉包分類功能,并且迀移結(jié)束,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。
【主權(quán)項(xiàng)】
1.一種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法,其特征在于,包括步驟1,在源網(wǎng)絡(luò)功能處與目標(biāo)網(wǎng)絡(luò)功能處分別部署源流迀移處理單元與目標(biāo)流處理 單元,并通過(guò)所述的源流迀移處理單元與網(wǎng)絡(luò)交換設(shè)備在數(shù)據(jù)包包頭內(nèi)設(shè)置兩位標(biāo)簽,將 數(shù)據(jù)包標(biāo)記為四類,包括normal類、in-fly類、last in-fly類、redirect類,所述的目標(biāo)流 迀移處理單元使用基于所述標(biāo)簽的分類器將所述的normal類、in-fly類、last in-fly類、 redirect類數(shù)據(jù)包進(jìn)行分類;步驟2,在所述源流迀移處理單元與所述目標(biāo)迀移處理單元中分別部署源狀態(tài)機(jī)與目 標(biāo)狀態(tài)機(jī),獲取并記錄當(dāng)前迀移狀態(tài),所述源狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)對(duì)數(shù)據(jù)包進(jìn)行 標(biāo)記與轉(zhuǎn)發(fā),所述目標(biāo)狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)與包處理規(guī)則將所述normal類、in-fly 類、 last in-fly 類、 redirect 類數(shù)據(jù)包分別放置于所述目標(biāo)流處理單元中的默認(rèn)緩存, in-fly類的環(huán)形緩存與redirect類的環(huán)形緩存,最終通過(guò)默認(rèn)緩存交付于目標(biāo)網(wǎng)絡(luò)功能 處。2.如權(quán)利要求1所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法,其特征在于,所述 normal類是默認(rèn)值的數(shù)據(jù)包、所述in-fly類與所述last in-fly類是由源網(wǎng)絡(luò)功能處的流 迀移處理單元標(biāo)記的數(shù)據(jù)包,redirect類是由網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備進(jìn)行標(biāo)記的數(shù)據(jù)包。3.如權(quán)利要求1所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法,其特征在于,所述步驟 2包括:當(dāng)所述目標(biāo)狀態(tài)機(jī)處于“正常”狀態(tài)時(shí):所述“正?!睜顟B(tài)下,當(dāng)收到“流迀移開始命令 事件”時(shí),狀態(tài)變?yōu)椤癕l”,執(zhí)行的操作是創(chuàng)建redirect類和in-fly類的環(huán)形緩存,打開包分 類器,并將所有類型的數(shù)據(jù)包放入到默認(rèn)緩存中并發(fā)送給目標(biāo)網(wǎng)絡(luò)功能處。4.如權(quán)利要求3所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法,其特征在于,所述步驟 2還包括“Ml”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“Ml”狀態(tài)迀移為“MS 1”狀態(tài),執(zhí)行操 作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類的環(huán)形緩存; 當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“Ml”狀態(tài)迀移為“M2”狀態(tài),執(zhí)行操作為升級(jí)流表,并將 in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“M2”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M2”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作 為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類的環(huán)形緩存;當(dāng) 收到last in-fly類的數(shù)據(jù)包時(shí),所述“M2”狀態(tài)迀移為“M3”狀態(tài),執(zhí)行操作為丟棄last infly 類的數(shù)據(jù)包,并將 in-fly 類的數(shù)據(jù)包與 redirect 類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“M3”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M3”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行操作 為將in-fly類與redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類與 redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì) 列中,并丟棄last in-fly類的數(shù)據(jù)包。5.如權(quán)利要求4所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移方法,其特征在于,“MSI”狀 態(tài):當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“MSI”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為升級(jí)流 表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“MS2”狀態(tài):當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“MS2”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行 操作為將redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放redirect類的環(huán)形 緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“MS3”狀態(tài):在所述“MS3”狀態(tài)時(shí),所述“MS3”狀態(tài)迀移為“正?!睜顟B(tài),執(zhí)行操作為關(guān)閉包分類功能,并且迀移結(jié)束,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各 自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。6.—種基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng),其特征在于,包括分類模塊,用于在源網(wǎng)絡(luò)功能處與目標(biāo)網(wǎng)絡(luò)功能處分別部署源流迀移處理單元與目標(biāo) 流處理單元,并通過(guò)所述的源流迀移處理單元與網(wǎng)絡(luò)交換設(shè)備在數(shù)據(jù)包包頭內(nèi)設(shè)置兩位標(biāo) 簽,將數(shù)據(jù)包標(biāo)記為四類,包括normal類、in-fly類、last in-fly類、redirect類,所述的目 標(biāo)流迀移處理單元使用基于所述標(biāo)簽的分類器將所述的normal類、in-fly類、last in-fly 類、redirect類數(shù)據(jù)包進(jìn)行分類;迀移模塊,用于在所述源流迀移處理單元與所述目標(biāo)迀移處理單元中分別部署源狀態(tài) 機(jī)與目標(biāo)狀態(tài)機(jī),獲取并記錄當(dāng)前迀移狀態(tài),所述源狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)對(duì)數(shù)據(jù) 包進(jìn)行標(biāo)記與轉(zhuǎn)發(fā),所述目標(biāo)狀態(tài)機(jī)根據(jù)所述當(dāng)前迀移狀態(tài)與包處理規(guī)則將所述normal 類、in-fly類、last in-fly類、redirect類數(shù)據(jù)包分別放置于所述目標(biāo)流處理單元中的默 認(rèn)緩存,in-fly類的環(huán)形緩存與redirect類的環(huán)形緩存,最終通過(guò)默認(rèn)緩存交付于目標(biāo)網(wǎng) 絡(luò)功能處。7.如權(quán)利要求6所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng),其特征在于,所述 normal類是默認(rèn)值的數(shù)據(jù)包、所述in-fly類與所述last in-fly類是由源網(wǎng)絡(luò)功能處的流 迀移處理單元標(biāo)記的數(shù)據(jù)包,redirect類是由網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備進(jìn)行標(biāo)記的數(shù)據(jù)包。8.如權(quán)利要求6所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng),其特征在于,所述迀移 模塊包括:當(dāng)所述目標(biāo)狀態(tài)機(jī)處于“正?!睜顟B(tài)時(shí):所述“正常”狀態(tài)下,當(dāng)收到“流迀移開始 命令事件”時(shí),狀態(tài)變?yōu)椤癕l”,執(zhí)行的操作是創(chuàng)建redirect類和in-fly類的環(huán)形緩存,打開 包分類器,并將所有類型的數(shù)據(jù)包放入到默認(rèn)緩存中并發(fā)送給目標(biāo)網(wǎng)絡(luò)功能處。9.如權(quán)利要求8所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng),其特征在于,所述迀移 模塊還包括“Ml”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“Ml”狀態(tài)迀移為“MSI”狀態(tài),執(zhí) 行操作為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類的環(huán)形緩 存;當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“Ml”狀態(tài)迀移為“M2”狀態(tài),執(zhí)行操作為升級(jí)流表, 并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“M2”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M2”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作 為將in-fly類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類的環(huán)形緩存;當(dāng) 收到last in-fly類的數(shù)據(jù)包時(shí),所述“M2”狀態(tài)迀移為“M3”狀態(tài),執(zhí)行操作為丟棄last infly 類的數(shù)據(jù)包,并將 in-fly 類的數(shù)據(jù)包與 redirect 類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“M3”狀態(tài):當(dāng)收到“狀態(tài)安裝完成事件”時(shí),所述“M3”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行操作 為將in-fly類與redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放in-fly類與 redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì) 列中,并丟棄last in-fly類的數(shù)據(jù)包。10.如權(quán)利要求9所述的基于網(wǎng)絡(luò)功能虛擬化場(chǎng)景的流迀移系統(tǒng),其特征在于,“MSI”狀 態(tài):當(dāng)收到redirect類的數(shù)據(jù)包時(shí),所述“MSI”狀態(tài)迀移為“MS2”狀態(tài),執(zhí)行操作為升級(jí)流 表,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“MS2”狀態(tài):當(dāng)收到last in-fly類的數(shù)據(jù)包時(shí),所述“MS2”狀態(tài)迀移為“MS3”狀態(tài),執(zhí)行 操作為將redirect類的環(huán)形緩存中的數(shù)據(jù)包推送到默認(rèn)緩存中,并釋放redirect類的環(huán)形緩存,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各自隊(duì)列中;“MS3”狀態(tài):在所述“MS3”狀態(tài)時(shí),所述“MS3”狀態(tài)迀移為“正?!睜顟B(tài),執(zhí)行操作為關(guān)閉 包分類功能,并且迀移結(jié)束,并將in-fly類的數(shù)據(jù)包與redirect類的數(shù)據(jù)包分別緩存到各 自隊(duì)列中,并丟棄last in-fly類的數(shù)據(jù)包。
【文檔編號(hào)】H04L12/803GK105978952SQ201610273970
【公開日】2016年9月28日
【申請(qǐng)日】2016年4月28日
【發(fā)明人】王陽(yáng), 李振宇, 賀鵬, 謝高崗
【申請(qǐng)人】中國(guó)科學(xué)院計(jì)算技術(shù)研究所