本發(fā)明涉及軟件定義網(wǎng)絡(luò)sdn和網(wǎng)絡(luò)功能虛擬化nfv領(lǐng)域,尤其涉及一種輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)及其虛擬化方法。
背景技術(shù):
::網(wǎng)絡(luò)功能虛擬化是指通過通用軟件替代專用物理設(shè)備的技術(shù)。以云操作系統(tǒng)openstack中neutron模塊的初始網(wǎng)絡(luò)模型為例,模型中虛擬路由器和nat這兩種網(wǎng)絡(luò)功能被部署在了一個單獨(dú)的物理結(jié)點(diǎn)上,作為網(wǎng)絡(luò)節(jié)點(diǎn),所有的通訊都必須通過網(wǎng)絡(luò)結(jié)點(diǎn)(也可以部署在虛擬機(jī)中,只是性能更差)。在該網(wǎng)絡(luò)模型中,不同網(wǎng)段之間的通訊需要通過虛擬路由器,同時相同網(wǎng)段之間的通訊也需要通過虛擬路由器,這導(dǎo)致網(wǎng)絡(luò)節(jié)點(diǎn)的負(fù)載太高,由軟件實現(xiàn)的虛擬路由器完全成為了性能瓶頸。后來對neutron模塊的優(yōu)化也都致力于消除網(wǎng)絡(luò)結(jié)點(diǎn)的性能瓶頸,社區(qū)的dvr解決方案,華為的dragonflow解決方案及ovn解決方案等等都是如此。其實不僅僅是使用最為頻繁的虛擬路由器會成為網(wǎng)絡(luò)瓶頸,只要特定的服務(wù)功能鏈(servicefunctionchain,以下簡稱為sfc)使用比較頻繁,在該條sfc中由軟件實現(xiàn)的虛擬網(wǎng)絡(luò)功能均可能成為性能瓶頸,所以如果上面的網(wǎng)絡(luò)模型能夠找到一個行之有效的解決方案,對其他的虛擬網(wǎng)絡(luò)功能均有借鑒意義。技術(shù)實現(xiàn)要素:發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)及其虛擬化方法,作為一套通用的輕量級的nfv(networkfunctionvirtualization)框架,以目前數(shù)據(jù)中心中流行的虛擬交換機(jī)管道技術(shù)為基礎(chǔ),采用開源項目networking-ovn,軟件版本為924b74b,為目前大多數(shù)的vnf(virtualnetworkfunction)提供了簡便通用的api,本發(fā)明框架簡稱為dfi。技術(shù)方案:為實現(xiàn)上述目的,本發(fā)明中的一種輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng),基于虛擬交換機(jī)管道技術(shù),包括:通用api模塊,提供虛擬網(wǎng)絡(luò)功能的函數(shù)調(diào)用接口;所述虛擬網(wǎng)絡(luò)功能分解為若干個子功能;心跳檢測模塊,檢測虛擬網(wǎng)絡(luò)功能的子功能是否失效,若失效則刪除該子功能的相關(guān)規(guī)則;生命周期管理器,生成子功能規(guī)則的持續(xù)時間參數(shù);規(guī)則產(chǎn)生器,根據(jù)所述心跳檢測模塊和所述生命周期管理器產(chǎn)生子功能的流規(guī)則;流規(guī)則注入器,將規(guī)則產(chǎn)生器產(chǎn)生的流規(guī)則根據(jù)ovsdb協(xié)議翻譯成南向數(shù)據(jù)庫能夠識別的規(guī)則,并寫入數(shù)據(jù)庫中;所述函數(shù)調(diào)用接口實現(xiàn)對所述心跳檢測模塊、生命周期管理器、規(guī)則產(chǎn)生器和流規(guī)則注入器的調(diào)用。相應(yīng)地,本發(fā)明采用上述的輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng),還公開了一種輕量級網(wǎng)絡(luò)功能虛擬化方法,該方法包括以下步驟:(1)對于服務(wù)功能鏈中的每一個網(wǎng)絡(luò)功能,抽象出其所有能夠虛擬化的基本操作作為該網(wǎng)絡(luò)功能的子功能,將這些基本操作按照調(diào)用順序形成操作鏈;(2)按照操作鏈的順序依次調(diào)用所述通用api模塊中各子功能對應(yīng)的api接口,api接口調(diào)用所述規(guī)則產(chǎn)生器按照openflow規(guī)則生成相應(yīng)的操作規(guī)則;(3)api接口向心跳檢測模塊注冊所生成的操作規(guī)則,以便后期失效時自動刪除;(4)對于某一基本操作,api接口從所述生命周期管理器中獲取該條基本操作的操作規(guī)則的持續(xù)時間參數(shù)后,調(diào)用流規(guī)則注入器將所生成的操作規(guī)則寫入南向數(shù)據(jù)庫;(5)將該網(wǎng)絡(luò)功能的所有操作規(guī)則流注入到計算機(jī)節(jié)點(diǎn)控制器的管道流表中,完成了該網(wǎng)絡(luò)功能的虛擬化。其中,所述網(wǎng)絡(luò)功能的子功能包括標(biāo)記、阻塞、acl和路由重定向功能。具體地,對于某一子功能,生成相應(yīng)的操作規(guī)則并將其操作規(guī)則流注入到計算機(jī)節(jié)點(diǎn)控制器的管道流表中,具體為:(1)所述通用api模塊通過jsonrpc調(diào)用獲取該子功能數(shù)據(jù)報文的基本信息,并通過ovsdb協(xié)議向數(shù)據(jù)庫中獲取注入流的必要信息,所述必要信息包括待注入管道的唯一標(biāo)識uuid,所述標(biāo)識uuid用于確定管道的位置;(2)通用api模塊調(diào)取所述心跳檢測模塊獲取失效信息以及調(diào)取生命周期管理器獲取持續(xù)時間信息,再調(diào)取所述規(guī)則產(chǎn)生器填充該子功能所涉及的所有相關(guān)信息生成相應(yīng)的流規(guī)則,最后再調(diào)用所述流規(guī)則注入器對流規(guī)則進(jìn)一步封裝后通過ovsdb協(xié)議寫入南向數(shù)據(jù)庫;(3)計算機(jī)節(jié)點(diǎn)的控制器檢測到所述南向數(shù)據(jù)庫的變化,自動獲取更新的規(guī)則,寫入相應(yīng)的管道中的規(guī)則表中使得該計算機(jī)節(jié)點(diǎn)的管道規(guī)則表中具備了該子功能的規(guī)則。有益效果:本發(fā)明中的輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)以及相應(yīng)的虛擬化方法,以目前數(shù)據(jù)中心中流行的虛擬交換機(jī)管道(ovspipeline)技術(shù)為基礎(chǔ),為目前大多數(shù)的vnf提供了簡便通用的api,vnf通過jsonrpc遠(yuǎn)程調(diào)用api,能夠?qū)崿F(xiàn)對本地sdn流表的直接控制,從而能夠進(jìn)一步向其寫入vnf的部分功能,最終實現(xiàn)了vnf部分功能本地完成,避免將網(wǎng)絡(luò)流量全部導(dǎo)入遠(yuǎn)程的vnf處理。通過該系統(tǒng)vnf部分功能能夠直接本地完成,不需要再經(jīng)vnf結(jié)點(diǎn)處理,減輕了vnf負(fù)載;同時部分流量不再導(dǎo)入遠(yuǎn)程vnf,減緩了網(wǎng)絡(luò)的負(fù)載,同時縮短了通訊時延。附圖說明圖1為本發(fā)明中輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)的結(jié)構(gòu)圖;圖2為本發(fā)明中輕量級網(wǎng)絡(luò)功能虛擬化方法的流程圖;圖3為標(biāo)記功能的業(yè)務(wù)流圖;圖4為fw-ips服務(wù)鏈對比效果圖,圖4(a)為現(xiàn)有技術(shù)中fw-ips服務(wù)的通訊路徑示意圖,圖4(b)為采用本發(fā)明方法后fw-ips服務(wù)的通訊路徑示意圖。具體實施方式以下結(jié)合具體實施例與附圖對本發(fā)明進(jìn)行詳細(xì)描述。如圖1所示,本發(fā)明中輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)(簡稱dfi),應(yīng)用在兩個計算節(jié)點(diǎn)之間,實現(xiàn)部分網(wǎng)絡(luò)功能的虛擬機(jī)化,包括:通用api模塊(apis)、心跳檢測模塊(hearttest)、生命周期管理器(lifecyclemanager)和規(guī)則產(chǎn)生器(rulegenerator)以及流規(guī)則注入器(flowinjector)。本系統(tǒng)可以安裝在任意的機(jī)器上,需要由兼容的虛擬網(wǎng)絡(luò)功能配合,完成部分網(wǎng)絡(luò)功能本地化,即網(wǎng)絡(luò)功能虛擬化指的是在通用計算機(jī)上實現(xiàn)(如圖1的計算節(jié)點(diǎn))以前在專用物理設(shè)備實現(xiàn)的功能,各模塊的功能介紹如下:通用api模塊(apis):用于提供給各個網(wǎng)絡(luò)功能調(diào)用的函數(shù)接口,采用jsonrpc以超文本傳輸協(xié)議(hypertexttransportprotocol,簡稱為http協(xié)議)完成;絕大數(shù)的復(fù)雜網(wǎng)絡(luò)功能可以分解成基本的子功能,這些子功能包括標(biāo)記、阻塞、acl和路由重定向功能等。標(biāo)記子功能是指對數(shù)據(jù)流的特定字段進(jìn)行標(biāo)記,即對數(shù)據(jù)流進(jìn)行差分服務(wù)代碼點(diǎn)標(biāo)記(differentiatedservicescodepoint,以下簡稱為dscp);阻塞是指對某些流的數(shù)據(jù)包執(zhí)行丟棄,即阻止數(shù)據(jù)流進(jìn)入數(shù)據(jù)中心;acl(accesscontrollist)是網(wǎng)絡(luò)功能端口的管理,即對數(shù)據(jù)流進(jìn)行接入接出控制;路由重定向是指修改數(shù)據(jù)報文的目的地址,使其轉(zhuǎn)發(fā)到特定的目的地,將數(shù)據(jù)流重新導(dǎo)向到下一個網(wǎng)絡(luò)節(jié)點(diǎn)。虛擬網(wǎng)絡(luò)功能本地化實現(xiàn)就是通過組合調(diào)用通用子功能api完成的。心跳檢測模塊(hearttest):檢測虛擬網(wǎng)絡(luò)功能的子功能是否失效,如果失效需要刪除該虛擬網(wǎng)絡(luò)功能相關(guān)的規(guī)則,防止失效的規(guī)則仍然生效。生命周期管理器(lifecyclemanager):用于生成子功能規(guī)則的持續(xù)時間參數(shù),規(guī)則的持續(xù)時間需要智能的進(jìn)行學(xué)習(xí),臨時的規(guī)則需要設(shè)置小的持續(xù)時間,以便及時更新;長久的規(guī)則需要設(shè)置大的持續(xù)時間,避免重新生成規(guī)則造成時延;規(guī)則產(chǎn)生器(rulegenerator):根據(jù)心跳檢測模塊和生命周期管理器產(chǎn)生具體的流規(guī)則,完成各種虛擬網(wǎng)絡(luò)功能的子功能;流規(guī)則注入器(flowinjector):將規(guī)則產(chǎn)生器產(chǎn)生的規(guī)則根據(jù)ovsdb(rfc7047)協(xié)議翻譯成南向數(shù)據(jù)庫能夠識別的規(guī)則,最終寫入數(shù)據(jù)庫中。下面以圖1中的兩個計算節(jié)點(diǎn)之間的通訊為例,具體介紹如何利用本發(fā)明中的輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)(簡稱dfi)實現(xiàn)網(wǎng)絡(luò)功能的虛擬化。如圖1所示,兩個計算節(jié)點(diǎn)上均運(yùn)行著兩個虛擬機(jī),圖左邊的計算節(jié)點(diǎn)1上的虛擬機(jī)分別運(yùn)行著軟件應(yīng)用1和網(wǎng)絡(luò)功能防火墻;圖右邊的計算節(jié)點(diǎn)2上的虛擬機(jī)分別運(yùn)行著軟件應(yīng)用2和網(wǎng)絡(luò)功能入侵檢測系統(tǒng)。假設(shè)應(yīng)用1需要與應(yīng)用2通訊,如果不使用本發(fā)明中的dfi,常規(guī)的數(shù)據(jù)流可能需要經(jīng)過的路徑為:應(yīng)用1<-->管道1<-->物理網(wǎng)絡(luò)<-->管道2<-->入侵檢測系統(tǒng)<-->管道2<-->物理網(wǎng)絡(luò)<-->管道1<-->防火墻<-->管道1<-->物理網(wǎng)絡(luò)<-->管道2<-->應(yīng)用2(這是一個雙向通訊過程)。但是如果使用本發(fā)明中的輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng),同樣的數(shù)據(jù)流的路徑則為:應(yīng)用1<-->管道1<-->物理網(wǎng)絡(luò)<-->管道2<-->應(yīng)用2??梢钥吹絛fi大大的縮短了通訊路徑長度,從而縮短了通訊時延,同樣也降低了原本防火墻和入侵檢測系統(tǒng)的負(fù)載。之所以能夠產(chǎn)生這樣效果,歸功于dfi系統(tǒng)將防火墻和入侵檢測系統(tǒng)的部分功能實現(xiàn)在管道1和管道2處。管道1和管道2是虛擬交換機(jī)管道,為ovs的多級流表。圖1的例子中數(shù)據(jù)流需要經(jīng)過防火墻和入侵檢測系統(tǒng)這兩個虛擬網(wǎng)絡(luò)功能組成了一條簡單的服務(wù)功能鏈,可以看做分別對應(yīng)圖2中的虛擬網(wǎng)絡(luò)功能1和虛擬網(wǎng)絡(luò)功能2。其中入侵檢測系統(tǒng)除了能夠檢測數(shù)據(jù)流是否含有惡意攻擊,還能作為流分析器使用,它能夠?qū)Σ煌悇e的數(shù)據(jù)流進(jìn)行標(biāo)記,然后導(dǎo)出到不同的應(yīng)用進(jìn)行處理。所以這里假設(shè)入侵檢測系統(tǒng)可以分解為三個子功能:標(biāo)記、阻塞和重定向。不同虛擬網(wǎng)絡(luò)功能的子功能共同組合成了圖2中的操作鏈。如圖2所示,本發(fā)明中的輕量級網(wǎng)絡(luò)功能虛擬化方法,采用圖1中介紹的系統(tǒng)實現(xiàn)網(wǎng)絡(luò)功能的虛擬化,包括以下步驟:(1)對于服務(wù)功能鏈中的每一個網(wǎng)絡(luò)功能,抽象出其所有能夠虛擬化的基本操作作為該網(wǎng)絡(luò)功能的子功能,將這些基本操作按照調(diào)用順序形成操作鏈;(2)按照操作鏈的順序依次調(diào)用所述通用api模塊中各子功能對應(yīng)的api接口,api接口調(diào)用所述規(guī)則產(chǎn)生器按照openflow規(guī)則生成相應(yīng)的操作規(guī)則;(3)api接口向心跳檢測模塊注冊所生成的操作規(guī)則,以便后期失效時自動刪除;(4)對于某一基本操作,api接口從所述生命周期管理器中獲取該條基本操作的操作規(guī)則的持續(xù)時間參數(shù)后,調(diào)用流規(guī)則注入器將所生成的操作規(guī)則寫入南向數(shù)據(jù)庫;(5)將該網(wǎng)絡(luò)功能的所有操作規(guī)則流注入到計算機(jī)節(jié)點(diǎn)控制器的管道流表中,完成了該網(wǎng)絡(luò)功能的虛擬化。圖2中的流表則是虛擬交換機(jī)管道的基本組件,下面以將入侵檢測系統(tǒng)的標(biāo)記子功能(操作)為例,闡述將操作鏈中的每一個操作注入到管道流表的基本步驟:(1)入侵檢測系統(tǒng),作為實現(xiàn)網(wǎng)絡(luò)功能的一種專用物理設(shè)備,正常接受數(shù)據(jù)流,分析其類型,發(fā)現(xiàn)需要對流進(jìn)行dscp標(biāo)記(標(biāo)記子功能),因為需要將該子功能注入到管道中,所以入侵檢測系統(tǒng)收集數(shù)據(jù)報文的源ip地址,源端口號,目的ip地址,目的端口和剛剛標(biāo)記的dscp號等基本信息,通過jsonrpc調(diào)用,向本發(fā)明中的輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)dfi發(fā)送需要的信息;(2)輕量級網(wǎng)絡(luò)功能虛擬化系統(tǒng)(dfi)中的通用api模塊通過jsonrpc調(diào)用獲取該子功能數(shù)據(jù)報文的基本信息,并通過ovsdb(rfc7047)協(xié)議向數(shù)據(jù)庫中獲取注入流的必要信息,這些信息主要是指即將要注入管道的唯一標(biāo)識(uuid),因為不同計算節(jié)點(diǎn)上的管道具有不同的唯一標(biāo)識,dfi需要根據(jù)源ip地址從數(shù)據(jù)庫中確定管道標(biāo)識,即確定管道的位置;(3)通用api模塊調(diào)用心跳檢測模塊和生命周期管理器獲取失效信息和持續(xù)時間信息后,通用api模塊調(diào)用規(guī)則生成器填充標(biāo)記功能所涉及的所有信息,包括源ip地址號,源端口地址,目的ip地址,目的端口號以及標(biāo)記的dscp號,持續(xù)時間,openflow協(xié)議操作為標(biāo)記,最后封裝后通過流規(guī)則注入器利用ovsdb協(xié)議寫入數(shù)據(jù)庫;(4)計算節(jié)點(diǎn)1的控制器檢測數(shù)據(jù)庫的變化,自動獲取更新的規(guī)則,寫入相應(yīng)的管道中的規(guī)則表中,此時計算節(jié)點(diǎn)1的管道規(guī)則表中具備了標(biāo)記規(guī)則,也就是說該管道具備入侵檢測系統(tǒng)的標(biāo)記子功能。(5)最終所有的流標(biāo)記工作則由地方的管道完成,然后直接導(dǎo)向目的地,不再經(jīng)過入侵檢測系統(tǒng)。對于操作鏈中的每一個操作(子功能),均按照與上述類似的方式注入到對應(yīng)管道中,區(qū)別的地方僅在對于不同子功能,所填充的信息不太相同,從而最終完成服務(wù)功能鏈的網(wǎng)絡(luò)功能虛擬化。若該子功能為阻塞功能,則該子功能所涉及的所有相關(guān)信息包括:所述數(shù)據(jù)報文的基本信息以及設(shè)置openflow協(xié)議操作的內(nèi)容為拒絕;所述數(shù)據(jù)報文的基本信息包括:源ip地址和源端口地址。若該子功能為acl功能,則該子功能所涉及的所有相關(guān)信息包括:所述數(shù)據(jù)報文的基本信息以及根據(jù)具體流中的操作信息設(shè)置openflow協(xié)議操作的內(nèi)容;所述數(shù)據(jù)報文的基本信息包括:源ip地址,源端口地址,目的ip地址和目的端口號,目的端口和所標(biāo)記的dscp號。若該子功能為路由重定向功能,步驟(2)中該子功能所涉及的所有相關(guān)信息包括:所述數(shù)據(jù)報文的基本信息以及設(shè)置openflow協(xié)議操作的內(nèi)容為允許;所述數(shù)據(jù)報文的基本信息包括:源ip地址,源端口地址,目的ip地址和目的端口號。在上面已經(jīng)闡述了一個具體的子功能(操作)注入到管道的大致過程,而每個子功能(操作)對應(yīng)了通用api模塊中每個基本api(如marking,acl,blocking和routing等),其最終的實現(xiàn)則是通過一系列的函數(shù)調(diào)用來完成的,下面將闡述這部分細(xì)節(jié)。首先基本的函數(shù)包括:(1)get_metadata();(2)inject_flow();(3)updata_flow();(4)delete_flow();(5)is_injectable();(6)is_success()。這些代碼均是本系統(tǒng)采用python程序設(shè)計語言自行編寫的。這里同樣以入侵檢測系統(tǒng)的標(biāo)記子功能為例,結(jié)合圖3進(jìn)行函數(shù)代碼細(xì)節(jié)闡述:(1)首先dfi獲取遠(yuǎn)程入侵檢測系統(tǒng)發(fā)來的關(guān)于數(shù)據(jù)流的基本信息(同上文所述);(2)使用get_metadata()函數(shù)獲取即將要注入管道的唯一標(biāo)識(uuid),以便dfi根據(jù)基本信息中的源ip地址從數(shù)據(jù)庫中確定管道標(biāo)識,從而確定管道的位置;(3)使用is_success()函數(shù)確定是否成功獲取管道信息,失敗返回異常;成功繼續(xù)執(zhí)行下述的步驟;(4)使用is_injectable()函數(shù)判斷目的管道目前是否處于正常工作狀態(tài),失敗返回異常;成功繼續(xù)執(zhí)行下述的步驟;(5)然后使用inject_flow()封裝填充標(biāo)記規(guī)則的所有信息,包括ip地址信息,端口信息等,封裝后通過ovsdb協(xié)議寫入數(shù)據(jù)庫;(6)最后同樣使用is_success()函數(shù)確定是否成功完成規(guī)則注入,失敗返回異常;成功則正常結(jié)束本函數(shù);另外兩個基本函數(shù)updata_flow()和delete_flow()主要用于更新管道的規(guī)則以及刪除過期的規(guī)則。阻塞、acl和路由重定向的基本函數(shù)調(diào)用流程與標(biāo)記基本一致,不同的是,inject_flow()函數(shù)中對不同子功能的處理有所不同:對于阻塞子功能,本函數(shù)僅需要填寫源ip地址和源端口地址,openflow協(xié)議操作為拒絕;對于acl子功能,本函數(shù)需要填寫源ip地址,源端口地址,目的ip地址和目的端口號,openflow協(xié)議操作根據(jù)具體原本流中的操作信息而定;對于路由重定向子功能,本函數(shù)需要填寫源ip地址,源端口地址,目的ip地址和目的端口號,openflow協(xié)議操作為允許。圖4是fw-ids服務(wù)鏈效果圖,圖中展示的服務(wù)功能鏈主要有兩個防火墻(fw)和入侵檢測系統(tǒng)(ids),此時受感染的虛擬機(jī)1嘗試對虛擬機(jī)2進(jìn)行攻擊,但在經(jīng)過入侵檢測系統(tǒng)時被發(fā)現(xiàn),同時被阻塞。原先的通訊路徑為:受感染的虛擬機(jī)1<-->管道1<-->物理交換機(jī)2<-->防火墻<-->物理交換機(jī)2<-->物理交換機(jī)4<-->虛擬交換5<-->入侵檢測系統(tǒng)。此后攻擊流仍然需要經(jīng)過上述的路徑后才能被阻塞,這占用了大量鏈路帶寬,加重了防火墻和入侵檢測系統(tǒng)的負(fù)擔(dān)。然而使用了本系統(tǒng)dfi后,一旦確定數(shù)據(jù)流需要阻塞時,入侵檢測系統(tǒng)和防火墻會調(diào)用dfi的通用api模塊,按照前文所述的步驟向管道1中注入阻塞規(guī)則,這樣攻擊流在管道1就被阻塞,無用的數(shù)據(jù)流不用在鏈路上傳輸,極大的降低了網(wǎng)絡(luò)鏈路和網(wǎng)絡(luò)功能的負(fù)載,因為傳輸?shù)穆窂娇s短了,同時也降低了服務(wù)的傳輸時延。以上詳細(xì)描述了本發(fā)明的優(yōu)選實施方式,但是,本發(fā)明并不限于上述實施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對本發(fā)明的技術(shù)方案進(jìn)行多種等同變換,這些等同變換均屬于本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12當(dāng)前第1頁12