本發(fā)明涉及通信
技術(shù)領(lǐng)域:
:,尤其涉及一種基于協(xié)議無感知轉(zhuǎn)發(fā)技術(shù)的交換機(jī)流表管理方法。
背景技術(shù):
::傳統(tǒng)網(wǎng)絡(luò)需要手動配置專用設(shè)備,過程繁瑣,易于出錯,且不能充分利用網(wǎng)絡(luò)基礎(chǔ)設(shè)施的容量,流量的控制和轉(zhuǎn)發(fā)完全依賴于路由設(shè)備,這些弱點(diǎn)使得傳統(tǒng)網(wǎng)絡(luò)受到了巨大的挑戰(zhàn)。軟件定義網(wǎng)絡(luò)(sdn,softwaredefinednetwork)被視為解決當(dāng)前網(wǎng)絡(luò)架構(gòu)問題最有前景的解決方案。軟件定義網(wǎng)絡(luò)的核心特點(diǎn)為:數(shù)據(jù)面和控制面分離;路由設(shè)備的轉(zhuǎn)發(fā)功能抽象,路由協(xié)議可編程修改。openflow是當(dāng)前最流行的sdn南向接口協(xié)議,然而openflow從1.0版本演變到現(xiàn)在的1.5版本,網(wǎng)絡(luò)的可編程性仍受限于openflow協(xié)議已有字段。因此,協(xié)議無感知轉(zhuǎn)發(fā)協(xié)議(pof,protocolobliviousforwarding)被提出用來解決上述協(xié)議依賴問題。pof根據(jù)偏移量和偏移長度來描述傳輸協(xié)議的任意匹配字段和通用指令集。傳統(tǒng)路由器采取最長前綴匹配(lpm,longestprefixmatch)規(guī)則進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā),但在軟件定義網(wǎng)絡(luò)中會有一些精確表項,如果使用lpm會造成很大的資源浪費(fèi),此外當(dāng)有多個匹配域時,如果前面的字段是有掩碼匹配而后面的字段是無掩碼匹配,lpm不再適用。同樣的,因為匹配字段可能是掩碼匹配,無法使用哈希匹配。目前已有sdn軟件交換機(jī)采取將控制器下發(fā)的流表轉(zhuǎn)化成精確流表緩存起來,加速交換機(jī)處理速度的實現(xiàn)方案,但是沒有考慮表項的熱度對交換機(jī)流表進(jìn)行動態(tài)調(diào)整,這將導(dǎo)致交換機(jī)的轉(zhuǎn)發(fā)速率依賴于流的先后順序。其他關(guān)于交換機(jī)流表管理的方案只是理論,并沒有實現(xiàn),且并不適用于pof交換機(jī),如有提出將openflow協(xié)議pipeline中熱度較高的表項從后面的表移到前面的表,然而,pipeline中的流表具有依賴關(guān)系,并不能對交換機(jī)的性能產(chǎn)生很大的提升,且pof交換機(jī)中不同的流表匹配域不同,不能將不同表中表項移到同一個表中。綜上,傳統(tǒng)的流表管理方案并不適用pof交換機(jī),sdn交換機(jī)的流表管理方案沒有根據(jù)表項的熱度對流表進(jìn)行動態(tài)調(diào)整,導(dǎo)致交換機(jī)轉(zhuǎn)發(fā)速率依賴于流的先后順序。技術(shù)實現(xiàn)要素:本發(fā)明的目的是提供一種基于協(xié)議無感知轉(zhuǎn)發(fā)技術(shù)的交換機(jī)流表管理方法,其基于熱度進(jìn)行流表管理,不僅能大大加快交換機(jī)的處理能力,同時不影響交換機(jī)處理的正確性。本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的:一種基于協(xié)議無感知轉(zhuǎn)發(fā)技術(shù)的交換機(jī)流表管理方法,包括:當(dāng)數(shù)據(jù)包到達(dá)時,首先查找ht,若查到匹配的表項,則停止查找,并根據(jù)查找到的表項對數(shù)據(jù)包執(zhí)行相應(yīng)的操作;其中,ht為按照熱度生成的流表;若沒有查到匹配的表項,則繼續(xù)查找ct,若查找到匹配的表項,且相應(yīng)表項的熱度超出閾值,則根據(jù)數(shù)據(jù)包的包頭信息和相應(yīng)表項的信息生成新的表項插入到ht中;其中,ct為用戶下發(fā)的流表。對ct中的表項按照優(yōu)先級預(yù)先進(jìn)行排序;且每隔一段時間t,檢測ct中各表項的熱度是否超出閾值η,若是,則將相應(yīng)表項的hot-flag屬性置為true。每一表項的熱度通過時間t前后計數(shù)器差值計算得到;計數(shù)器記錄著每一表項匹配到數(shù)據(jù)包的數(shù)量;所述的閾值η則采用自適應(yīng)的方式確定,其初值為ct中所有表項的熱度的平均值;之后,如果ht未滿,則用η=min(η,ε)更新閾值;如果ht已滿,則用η=ε更新閾值;其中,ε為ht中最接近90%位置的表項的熱度。查找ht中的表項時,使用哈希匹配方式;查找ct中的表項時,使用掩碼匹配。所述生成新的表項插入到ht中包括:如果ht未滿,則直接插入;如果ht已滿,則新的表項替換不多于ht中熱度較低的10%的表項。當(dāng)ct中某一表項生成新的表項插入到ht中后,ct中保留相應(yīng)的表項,并將相應(yīng)表項的hot-flag屬性置為false。由上述本發(fā)明提供的技術(shù)方案可以看出其具有如下優(yōu)點(diǎn),1)ht中表項均為精確表項,可以采取哈希匹配,而ct中表項具有掩碼只能按比特匹配,查找速度慢,將ct中熱度高的表項轉(zhuǎn)化成精確表項存儲到ht中可加快數(shù)據(jù)包查找速度。ct中表項根據(jù)優(yōu)先級進(jìn)行排序,這樣數(shù)據(jù)包匹配到一條表項就可以執(zhí)行相應(yīng)操作,而不需要遍歷所有表項,從而加快交換機(jī)的處理能力。2)在給ct中表項建立精確表項插入到ht中之后,不刪除ct中表項,因為ct中表項可能是有掩碼的,而精確表項可能只有一條,刪除ct中表項會造成錯誤。3)數(shù)據(jù)包到達(dá)交換機(jī)之后,先查找ht,在ht中查找到匹配表項后不再查找ct避免重復(fù)的查找,ct中的某一表項生成對應(yīng)的精確表項之后,我們將該表項的hot-flag置為false,避免生成重復(fù)的精確表項。附圖說明為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他附圖。圖1為本發(fā)明實施例提供的一種基于協(xié)議無感知轉(zhuǎn)發(fā)技術(shù)的交換機(jī)流表管理方法的流程圖;圖2為本發(fā)明實施例提供的基于協(xié)議無感知轉(zhuǎn)發(fā)技術(shù)的交換機(jī)流表管理架構(gòu)圖;圖3為本發(fā)明實施例提供的交換機(jī)流表動態(tài)管理過程的示意圖。具體實施方式下面結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明的保護(hù)范圍。圖1為本發(fā)明實施例提供的一種基于協(xié)議無感知轉(zhuǎn)發(fā)技術(shù)的交換機(jī)流表管理方法的流程圖。如圖1所示,其主要包括如下步驟:步驟s1、對ct中的表項按照優(yōu)先級預(yù)先進(jìn)行排序;且每隔一段時間t,檢測ct中各表項的熱度是否超出閾值η,若是,則將相應(yīng)表項的hot-flag屬性置為true。本發(fā)明實施例中,ct(coldtable)為用戶(通過控制器)下發(fā)的流表,其表項具有優(yōu)先級,計數(shù)器,hot-flag等屬性。其中,優(yōu)先級屬性是指數(shù)據(jù)包匹配時的優(yōu)先級,即當(dāng)數(shù)據(jù)包在交換機(jī)內(nèi)匹配到多條表項時選擇優(yōu)先級最高的流表,計數(shù)器用來記錄各表項匹配到的數(shù)據(jù)包的數(shù)量,hot-flag用來標(biāo)記表項是否具有較高的熱度。本發(fā)明實施例中,每一表項的熱度通過時間t前后計數(shù)器差值計算得到;閾值η則采用自適應(yīng)的方式確定,其初值為ct中所有表項的熱度的平均值;之后,如果ht未滿,則用η=min(η,ε)更新閾值;如果ht已滿,則用η=ε更新閾值;其中,ε為ht中最接近90%位置的表項的熱度。步驟s2、當(dāng)數(shù)據(jù)包到達(dá)時,首先查找ht,若查到匹配的表項,則轉(zhuǎn)入步驟s3;若沒有查到匹配的表項,則轉(zhuǎn)入步驟s4。本發(fā)明實施例中,所述ht(hottable)為按照熱度生成的精確流表;查找ht中的表項時,使用哈希匹配方式。步驟s3、停止查找,并根據(jù)查找到的表項對數(shù)據(jù)包執(zhí)行相應(yīng)的操作,再轉(zhuǎn)入步驟s8。步驟s4、繼續(xù)查找ct,若查找到匹配的表項,則轉(zhuǎn)入步驟s5;若否,則轉(zhuǎn)入步驟s8。本發(fā)明實施例中,查找ct中的表項時,使用掩碼匹配。步驟s5、若相應(yīng)表項的熱度超出閾值,則轉(zhuǎn)入步驟s6;若否,則轉(zhuǎn)入步驟s7。本步驟所述的相應(yīng)表項的熱度超出閾值也即相應(yīng)表項的hot-flag屬性為true。步驟s6、根據(jù)數(shù)據(jù)包的包頭信息和相應(yīng)表項的信息生成新的表項插入到ht中,再轉(zhuǎn)入步驟s7。本發(fā)明實施例中,向ht插入新的表項就涉及到更新ht的操作。由于ct中表項是掩碼匹配,一條表項可能匹配多條流生成多條精確表項,因此ct中熱度較高的表項生成的精確表項(即新的表項)熱度可能沒那么高,因此需要動態(tài)調(diào)整ht中表項,分為如下兩種情況:如果ht未滿,則直接插入;如果ht已滿,則新的表項替換不多于ht中熱度較低的10%的表項,即緩慢進(jìn)行更新。此外,當(dāng)ct中某一表項生成新的表項插入到ht中后,ct中保留相應(yīng)的表項,并將相應(yīng)表項的hot-flag屬性置為false,避免生成重復(fù)的精確表項。步驟s7、根據(jù)ct中查找到的表項處理數(shù)據(jù)包,再轉(zhuǎn)入步驟s8。步驟s8、結(jié)束數(shù)據(jù)包處理流程。本發(fā)明實施例上述方案主要具有如下優(yōu)點(diǎn):1)ht中表項均為精確表項,可以采取哈希匹配,而ct中表項具有掩碼只能按比特匹配,查找速度慢,將ct中熱度高的表項轉(zhuǎn)化成精確表項存儲到ht中可加快數(shù)據(jù)包查找速度。ct中表項根據(jù)優(yōu)先級進(jìn)行排序,這樣數(shù)據(jù)包匹配到一條表項就可以執(zhí)行相應(yīng)操作,而不需要遍歷所有表項,從而加快交換機(jī)的處理能力。2)在給ct中表項建立精確表項插入到ht中之后,不刪除ct中表項,因為ct中表項可能是有掩碼的,而精確表項可能只有一條,刪除ct中表項會造成錯誤。3)數(shù)據(jù)包到達(dá)交換機(jī)之后,先查找ht,在ht中查找到匹配表項后不再查找ct,避免重復(fù)的查找,ct中的某一表項生成對應(yīng)的精確表項之后,我們將該表項的hot-flag置為false,避免生成重復(fù)的精確表項另外,實現(xiàn)上述方法的架構(gòu)圖可參見圖2。圖2中,pof交換機(jī)使用數(shù)據(jù)平面開發(fā)套件dpdk(dataplanedevelopmentkit)接管端口,使數(shù)據(jù)包繞過內(nèi)核態(tài)直接在用戶態(tài)被處理,減少內(nèi)核態(tài)用戶態(tài)切換加速包轉(zhuǎn)發(fā)流程。當(dāng)dpdk端口收到數(shù)據(jù)包之后,數(shù)據(jù)包處理模塊首先查找ht,如果數(shù)據(jù)包匹配到了一個表項,交換機(jī)根據(jù)表項的指令對數(shù)據(jù)包執(zhí)行相應(yīng)的操作,否則數(shù)據(jù)包處理模塊繼續(xù)查找ct,如果在ct中也沒有查找到匹配的表項,數(shù)據(jù)包處理模塊會告知交換機(jī)控制模塊,由交換機(jī)控制模塊發(fā)送packet_in消息給控制器,如果在ct中查找到匹配的表項,并且該表項熱度較高,精確表項創(chuàng)建模塊會為該表項生成一個精確表項并插入到ht中。pof協(xié)議棧負(fù)責(zé)封裝和解析pof消息,數(shù)據(jù)庫存儲交換機(jī)的配置信息,交換機(jī)控制模塊控制交換機(jī)的各個模塊。為了便于理解,下面結(jié)合一具體的示例來介紹流表管理過程,該示例基于圖2所示的架構(gòu)實現(xiàn),可兼顧正確性和高效性;主要步驟如下:(1)對控制器下發(fā)的每條表項,在ct中對其按優(yōu)先級進(jìn)行排序。(2)每隔一段時間t,檢測ct中的每條表項的熱度是否超過閾值,如某條表項的熱度超過閾值,就將其hot-flag置為true。(3)數(shù)據(jù)包到達(dá)時,數(shù)據(jù)包處理模塊首先查找ht,如查到匹配的表項,則停止查找,根據(jù)查找到的表項對數(shù)據(jù)包執(zhí)行相應(yīng)的操作,如沒有查找到匹配的表項,則繼續(xù)查找ct,如圖3中左圖所示。(4)如果ct中也沒有查找到匹配的表項,則發(fā)送packet_in消息給控制器,結(jié)束數(shù)據(jù)包處理流程。如果在ct中查找到匹配的數(shù)據(jù)包,因為ct中表項已經(jīng)按優(yōu)先級進(jìn)行排序,因此也停止查找。(5)判斷ct中匹配的表項的hot-flag是否為true,如果為true,則精確表項創(chuàng)建模塊根據(jù)ct中表項信息和匹配的數(shù)據(jù)包的信息生成精確表項插入到ht中。(6)接下來相同的數(shù)據(jù)包能夠在ht中查找到匹配的表項,ht采用哈希匹配,可以加速數(shù)據(jù)包處理流程。(7)ht滿了之后,如果有新的表項要插入到ht中,由于我們根據(jù)ct中表項的熱度來決定是否生成精確表項,而ct中表項是有掩碼的且一條表項可能匹配多條流,因此根據(jù)ct表項生成的精確表項的熱度不大于原表項熱度,即我們只知道生成的精確表項的熱度的上限值而不知道其具體值,因此我們只更新ht中熱度較低的10%的表項,緩慢更新ht。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例可以通過軟件實現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,上述實施例的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動硬盤等)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
:的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁12當(dāng)前第1頁12