,無論是源MAC、目的MAC、VLAN ID等傳統(tǒng)的二層網(wǎng)絡(luò)信息,還是源IP,目的IP等三層信息,或者是源TCP/UDP端口號、目的TCP/UDP端口號等4層信息,都被統(tǒng)一封裝在流表中。
[0041]流表項由三部分組成:包頭域(用于數(shù)據(jù)包匹配),計數(shù)器(用于統(tǒng)計匹配數(shù)據(jù)包個數(shù)),動作(用于展示匹配的數(shù)據(jù)包如何處理)。以O(shè)penFlow標準為例,在OpenFlow交換機協(xié)議標準1.1版中定義了包頭域具有12個域,到1.3版增至40個域。其中包括了常規(guī)的交換機端口號、源/目的MAC地址、源/目的IP地址、TCP/UDP端口號、協(xié)議類型、VLAN號等。
[0042]由于本實施方式強調(diào)在迀移虛擬機時需要獲取空閑網(wǎng)絡(luò)地址作為迀移目標,因此要對控制器上的流表項進行IP地址匹配。
[0043]S102:基于所述規(guī)則集Ra從處于空閑狀態(tài)的IP地址中查詢最優(yōu)的迀移目標地址;
[0044]在步驟SlOl中已經(jīng)獲取了與待迀移的虛擬機相匹配的規(guī)則集Ra。本步驟中需要從眾多空閑IP地址中查詢最優(yōu)的迀移目標地址。這里,定義的最佳迀移地址滿足如下特性:
[0045](I)、對于迀移目標地址IPz,有對應(yīng)的關(guān)聯(lián)規(guī)則集Rz,對于任何一條屬于Rz的規(guī)貝1J,都能在^中找到與之對應(yīng)的規(guī)則,使得匹配域的通配長度相同,且非匹配域完全相同。如果具有兩個匹配域,則必須有一個域完全相同。
[0046](2)、規(guī)則集Rz的規(guī)則數(shù)量小于等于規(guī)則集Ra的規(guī)則數(shù)量。
[0047](3)、不存在另一個規(guī)則集Rz+,在滿足上述特性的同時,規(guī)則集元素個數(shù)大于Rz。
[0048](4)、Rz不具有唯一性,即存在另外一個規(guī)則集Rzil,在滿足上述特性的同時,規(guī)則集的規(guī)則數(shù)量等于Rz。
[0049]S103:根據(jù)所述迀移目標地址的網(wǎng)絡(luò)配置環(huán)境對所述規(guī)則集Ra中的規(guī)則進行重配置。
[0050]本實施方式從流表中獲取與待迀移虛擬機相匹配的規(guī)則集Ra,基于所述規(guī)則集Ra從處于空閑狀態(tài)的IP地址中查詢最優(yōu)的迀移目標地址,根據(jù)所述迀移目標地址的網(wǎng)絡(luò)配置環(huán)境對所述規(guī)則集Ra中的規(guī)則進行重配置,無需人工參與的情況下即可實現(xiàn)策略配置,有效降低了策略空間由于虛擬機迀移操作而產(chǎn)生的增長,減少了新增的碎片策略數(shù)目,進一步提高了控制器及網(wǎng)絡(luò)設(shè)備的查詢轉(zhuǎn)發(fā)效率,并且易于實現(xiàn)、算法復(fù)雜度低。
[0051]圖2是本發(fā)明一種實施例的虛擬機策略迀移配置方法的流程圖;參照圖2,所述方法包括:
[0052]S201:將流表中各流表項分別作為規(guī)則,將各規(guī)則的IP地址依次與待迀移虛擬機的IP地址進行匹配;
[0053]為了降低匹配過程中的比較次數(shù),不需要對源IP、目的IP都進行比較,只要有一個匹配項滿足,則認為該規(guī)則與迀移前的IP相關(guān)聯(lián),放入匹配的規(guī)則集中,直接進行下一條流表項的比較。本實施例按照控制器流表默認順序依次進行匹配的方式,遍歷全部的流表項從而生成與待迀移的虛擬機相關(guān)聯(lián)的規(guī)則集。
[0054]S202:判斷規(guī)則中匹配的IP地址段是否為全網(wǎng)絡(luò)網(wǎng)段,若否,則將該規(guī)則添加至規(guī)則集Ra中;
[0055]由于在判斷規(guī)則是否關(guān)聯(lián)時,不僅需要判斷源/目的IP是否能夠匹配,還要保證規(guī)則的有效性。匹配的IP地址段必須是非全網(wǎng)絡(luò)網(wǎng)段(即非通配網(wǎng)內(nèi)所有IP地址)的,否則視為無效規(guī)則,不添加到匹配的規(guī)則集^中。
[0056]如:假定虛擬機IP為10.0.5.120,流表項匹配的源IP地址為:0.0.0.0/0,目的IP地址為10.0.2.0/24,則該規(guī)則屬于無效規(guī)則。因為源IP為全網(wǎng)絡(luò)網(wǎng)段匹配,而目的IP不能匹配虛擬機地址。
[0057]S203:將源地址或目的地址作為匹配域,將所述流表中的各規(guī)則按照所述匹配域進行劃分,直至劃分的各子規(guī)則集中的規(guī)則數(shù)量均未超過預(yù)設(shè)閾值;
[0058]為便于對所述規(guī)則進行劃分,本實施例中通過規(guī)則樹的形式來實現(xiàn),參照圖3,即按照某一特定維度X (即源IP地址或目的IP地址)的規(guī)則分布情況劃分成多個區(qū)域,劃分方式不唯一,每一個區(qū)域包含了匹配該區(qū)域IP的規(guī)則集。當規(guī)則集中元素個數(shù)過多時,進行深一層的劃分,直到每個Leaf節(jié)點的規(guī)則集元素個數(shù)保持在一定范圍。Node節(jié)點為劃分過程中的過度節(jié)點,記錄了劃分方式并指向下一層的Leaf或Node節(jié)點。子葉節(jié)點表示Leaf節(jié)點所覆蓋到的IP,包括了空閑IP及已經(jīng)被使用的IP(用填充加以區(qū)分)。通過分區(qū),可以降低查詢時的匹配次數(shù),不同的劃分方式會導致不同的查詢性能。
[0059]本實施例中的分區(qū)流程具體為:
[0060](I)統(tǒng)計所有待匹配規(guī)則的匹配域(即對應(yīng)上述特定維度,可理解為規(guī)則中用于匹配的區(qū)域)的邊界點,并將統(tǒng)計的邊界點組成一個點集;
[0061]可理解的是,由于規(guī)則中的匹配域(例如:源IP地址)可能包括一段連續(xù)的IP地址,故而,每個規(guī)則中均可能包括兩個邊界點。
[0062](2)將點集內(nèi)的邊界點從小到大排列,按照所述點集內(nèi)邊界點的數(shù)量將點集平均分為4組子點集,并將對應(yīng)的規(guī)則集按照點集的分組方式,同樣分為4組子規(guī)則集;
[0063](3)針對每一個子規(guī)則集,如果其規(guī)則數(shù)量大于預(yù)設(shè)閾值,則對該子規(guī)則集繼續(xù)分組;
[0064](4)對于規(guī)則數(shù)量均不大于(即未超過)預(yù)設(shè)閾值的子規(guī)則集,按照匹配域邊界點劃分成若干個子集,使每個子集中除最大值和最小值外不包含其他邊界點;
[0065](5)對于每個劃分好的子規(guī)則集,統(tǒng)計該區(qū)域內(nèi)所有IP地址的使用情況,以確定各IP地址處于空閑狀態(tài),還是占用狀態(tài)。
[0066]S204:遍歷各子規(guī)則集,在遍歷到的當前子規(guī)則集中的規(guī)則數(shù)量大于所述規(guī)則集^時,直接遍歷下一子規(guī)則集;
[0067]由于本實施例中針對各子規(guī)則集建立了規(guī)則樹,故而在遍歷各子規(guī)則集時,則可采用遍歷規(guī)則樹中Leaf節(jié)點的方式。
[0068]S205:在所述當前子規(guī)則集中的各規(guī)則均能在所述規(guī)則集Ra中找到對應(yīng)規(guī)則時,則將所述當前子規(guī)則集加入結(jié)果集,所述對應(yīng)規(guī)則為除匹配域外其他信息均相同的規(guī)則;
[0069]S206:從所述結(jié)果集中找出包含規(guī)則數(shù)量最多的子規(guī)則集,從該子規(guī)則集中找出一個處于空閑狀態(tài)的IP地址IPz,并將所述IPz作為最優(yōu)的迀移目標地址;
[0070]需要說明的是,由于步驟S203中分別按照源IP地址及目的IP地址兩個維度來建立了規(guī)則樹,故而,本步驟中的結(jié)果集中包括了兩個維度的遍歷結(jié)果。
[0071]S207:獲取所述迀移目標地址IPz對應(yīng)的規(guī)則集R z;
[0072]S208:遍歷所述規(guī)則集^中的規(guī)則,判斷是否能在所述規(guī)則集1^中找到與遍歷到的規(guī)則^對應(yīng)的規(guī)則r ,,所述規(guī)則&除匹配域外其他信息均與規(guī)則r i相同;
[0073]S209:當能在所述規(guī)則集&中找到與遍歷到的規(guī)則r i對應(yīng)的規(guī)則r ^寸,判斷規(guī)則A的作用域內(nèi)是否還存在正常工作的虛擬機,若存在,則保留該規(guī)則^,若不存在,則回收該規(guī)則r1;
[0074]也就是說,當能在所述規(guī)則集&中找到與遍歷到的規(guī)則r i對應(yīng)的規(guī)則r.,時,無需額外處理,進一步判定規(guī)則^是否需要回收;
[0075]S210:當不能在所述規(guī)則集&中找到與遍歷到的規(guī)則r i對應(yīng)的規(guī)則r.,時,判斷所述規(guī)則巧的匹配域是否為值匹配(即判斷是否僅匹配單個規(guī)則),若是,則將所述規(guī)則r ^勺匹配域的值修改為IPZ,若否,則添加規(guī)則A對應(yīng)的新規(guī)則,將所述新規(guī)則的匹配域的值設(shè)為IPz,將所述新規(guī)則的其他信息設(shè)為與規(guī)則A相同。
[0076]與現(xiàn)有方法相比,本實施例的方法有如下特性:
[0077]首先,綜合考慮了整個SDN策略空間的變化情況,從根本上降低了新增的碎片策略數(shù)目,能夠通過對流表項信息的擴展,實現(xiàn)對已過期或不再被調(diào)用的規(guī)則的回收,盡可能保障策略空間中規(guī)則數(shù)目的穩(wěn)定性;
[0078]其次,采用了通過篩選得到的最佳迀移地址,該地址盡可能利用了空閑IP所關(guān)聯(lián)的已有規(guī)則,將虛擬機迀移至該地址上,可以以最少的空間增長代價完成控制器上流表的更新,從而減少了新增規(guī)則導致的下發(fā)及交換機上流表的更新;
[0079]最后,通過策略配置算法,計算出所需要修改、添加或回收的規(guī)則集,依據(jù)迀移地址所處的網(wǎng)絡(luò)配置環(huán)境進行更新,結(jié)合虛擬機迀移技術(shù)完成整個迀移過程。采用本實施例不僅從控制器的角度上解決了規(guī)則碎片問題,減少了查詢及