欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

支持多核處理器的sdn多級流表并行查找的系統(tǒng)及方法

文檔序號:9471527閱讀:1036來源:國知局
支持多核處理器的sdn多級流表并行查找的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體是涉及一種支持多核處理器的SDN多級流表并行查找的系統(tǒng)及方法。
【背景技術(shù)】
[0002]SDN(Software Defined Network,軟件定義網(wǎng)絡(luò))對現(xiàn)有網(wǎng)絡(luò)提出了革命性的改變,將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離出來,從而實(shí)現(xiàn)了網(wǎng)絡(luò)流量的靈活控制,為核心網(wǎng)絡(luò)提供了統(tǒng)一的管理化平臺。SDN中數(shù)據(jù)平面的轉(zhuǎn)發(fā)區(qū)別于傳統(tǒng)二層網(wǎng)絡(luò)基于MAC(MediumAccess Control,介質(zhì)訪問控制)地址查找、三層網(wǎng)絡(luò)基于IP (Internet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議)地址查找和MPLS (Mult1-Protocol Label Switching,多協(xié)議標(biāo)簽交換)網(wǎng)絡(luò)基于標(biāo)簽(Lable)查找的單一方式,采用以流為單位對數(shù)據(jù)報文進(jìn)行分類處理和轉(zhuǎn)發(fā),流表是決定數(shù)據(jù)流轉(zhuǎn)發(fā)的核心,流表的設(shè)計是SDN設(shè)備的關(guān)鍵技術(shù)。
[0003]當(dāng)前隨著SDN的快速發(fā)展,流表中需要匹配的字段在不斷增加,數(shù)據(jù)流在轉(zhuǎn)發(fā)過程中需要執(zhí)行的轉(zhuǎn)發(fā)行為也在不斷豐富,為了給用戶提供更加靈活多變的配置方式,多級流表已在SDN新的協(xié)議規(guī)范中被提出。多級流表的設(shè)計需求對SDN傳統(tǒng)ASIC (Applicat1nSpecific Integrated Circuit,專用集成電路)硬件平臺提出了很多挑戰(zhàn)。
[0004]現(xiàn)有的ASIC架構(gòu)芯片(如網(wǎng)絡(luò)處理器、交換芯片)由于報文解析、流表查找、邏輯處理都只能依據(jù)嚴(yán)格的邏輯模式進(jìn)行,靈活性較差,通常只能使用TCAMCTernary ContentAddressable Memory,三態(tài)內(nèi)容尋址存儲器)來實(shí)現(xiàn)流表的存儲和查找。TCAM專用芯片面積大、功耗大,價格高昂,如果芯片內(nèi)置則表項大小很少,外擴(kuò)成本和功耗都很大,同時TCAM支持的表項寬度有限,對于當(dāng)前SDN多關(guān)鍵字的表項在存儲與查找方面都難以滿足。ASIC芯片所具有的設(shè)計方式和硬件本身的特性與SDN越來越靈活的功能需求形成明顯的矛盾。
[0005]在新的需求下,高性能的多核處理器在數(shù)據(jù)處理過程中能夠?qū)崿F(xiàn)并行處理,網(wǎng)絡(luò)延時小,數(shù)據(jù)吞吐量大,并且流程設(shè)計靈活,硬件約束小,在當(dāng)前網(wǎng)絡(luò)設(shè)備中已有著廣泛的應(yīng)用,SDN數(shù)據(jù)平面的硬件平臺也在向多核處理器方向迀移。在多核處理器的應(yīng)用過程中,存儲都是 SDRAM (Synchronous Dynamic Random Access Memory,同步動態(tài)隨機(jī)存取存儲器)為主,相對TCAM,多核處理器的優(yōu)點(diǎn)是大容量和低價格,表項的格式根據(jù)用戶需求可以自由設(shè)計,沒有位寬限制,可以包含任意多個關(guān)鍵字。表項的查找方式依據(jù)表項的存儲數(shù)據(jù)結(jié)構(gòu)來決定,完全是用軟件算法來實(shí)現(xiàn),區(qū)別于TCAM的硬件查找,由此可以看出基于多核平臺的SDN設(shè)備性能由表項的查找算法決定。
[0006]當(dāng)前基于SDRAM的流表查找主要有線性查找算法、樹形查找算法、幾何查找算法和遞歸查找算法等,但是上述傳統(tǒng)算法在多核處理器中對可并行執(zhí)行、快速命中等性能方面的要求顯得不足,主要表現(xiàn)在以下方面:
[0007]線性查找算法基于線性鏈表的數(shù)據(jù)組織方式,流表表項以鏈表的方式存儲在SDRAM中,數(shù)據(jù)報文進(jìn)行表項查找時需要對鏈表上的表項逐條匹配。該算法數(shù)據(jù)結(jié)構(gòu)簡單,容易實(shí)現(xiàn),但是在表項存儲量較大的情況下,鏈表的深度較大,設(shè)備端口上通過的每個數(shù)據(jù)報需要和鏈表上的表項進(jìn)行匹配的平均次數(shù)增大,匹配的次數(shù)最壞情況下是表項的整個表項總數(shù),所以在表項較多情況下算法的執(zhí)行效率較低。在流表表項數(shù)目較多的情況下,單純依靠線性查找算法是不可取的,線性查找算法只適用于流表表項較少的應(yīng)用場合。
[0008]樹形查找算法、幾何查找算法和遞歸查找算法都是在查找次數(shù)上進(jìn)行優(yōu)化和改進(jìn),通過數(shù)據(jù)結(jié)構(gòu)的優(yōu)化,將表項的存儲分散成樹或圖的數(shù)據(jù)結(jié)構(gòu),避免單純的線性存儲方式。樹形查找算法、幾何查找算法和遞歸查找算法從一定程度上降低了表項的存儲深度,減少了平均查找的次數(shù),優(yōu)化了查找的性能,但是這三種算法相對于線性查找算法數(shù)據(jù)結(jié)構(gòu)組織復(fù)雜,在掩碼查找上支持的能力較弱,同時在并行查找和頻繁表項更新等環(huán)境中算法的運(yùn)行效率不高,這三種算法一般只適用于單核處理器和表項結(jié)構(gòu)較為穩(wěn)定的設(shè)備環(huán)境中,并且在容量較大的情況下樹或圖的層次不可能控制在幾層范圍內(nèi),也很難實(shí)現(xiàn)表項的快速匹配查找。
[0009]上述算法分別適合不同的環(huán)境,每種算法適用不同的場合,需要結(jié)合具體的環(huán)境才能發(fā)揮其較好的性能優(yōu)勢,但是在基于多核處理器的SDN設(shè)備中,要求支持多級流表表項的并行查找、大容量表項存儲、頻繁表項更新等操作,單純的應(yīng)用上述傳統(tǒng)算法難以滿足實(shí)際應(yīng)用的需求,并且造成多核處理器處理性能瓶頸,對硬件資源造成浪費(fèi)。
[0010]SDN設(shè)備由ASIC芯片向多核處理器平臺迀移的過程中,之前的表項設(shè)計方式和基于TCAM的硬件查找方式已經(jīng)不再具有借鑒意義。新的多核平臺在芯片內(nèi)部集成的核數(shù)多達(dá)32個、64個,對算法的并行執(zhí)行效率提出了更大的挑戰(zhàn),如果設(shè)計的算法難以滿足其并行執(zhí)行的要求,嚴(yán)重情況下將造成多核處理器平臺的技術(shù)瓶頸,使得多核芯片的處理性能難以發(fā)揮到應(yīng)有的水平。
[0011]傳統(tǒng)的線性查找算法、樹形查找算法、幾何查找算法和遞歸查找算法等實(shí)現(xiàn)的多級流表查找算法,由于其數(shù)據(jù)結(jié)構(gòu)和算法組織方式的局限性,難以在網(wǎng)絡(luò)數(shù)據(jù)設(shè)備多核處理器平臺下實(shí)現(xiàn)大容量的并行快速查找,給平臺造成技術(shù)瓶頸,使得多核處理器的并行處理能力不能完全得以發(fā)揮,造成極大的資源浪費(fèi)。
[0012]參見圖1所示,傳統(tǒng)的多級流表采用完全獨(dú)立流表依次串聯(lián)的設(shè)計方案,以三級流表為例,每個數(shù)據(jù)報文(Packet)依次查找表I (Table 1)、表2(Table 2)、表3(Table 3)中的表項。每張表中的表項越多,數(shù)據(jù)報文需要匹配的平均次數(shù)就越多;多級串聯(lián)的流表數(shù)量越多,數(shù)據(jù)報文需要匹配的平均次數(shù)也越多,可見現(xiàn)有的多級流表算法整體的平均匹配次數(shù)與表項數(shù)目和表的大小成正比。無論采用上述那種算法,算法的性能與流表的級數(shù)成反比,每增加一級流表就意味著算法需要增加更多的匹配次數(shù),花費(fèi)更多的查找時間。多級流表依次查找,算法性能表現(xiàn)對SDN流表的級數(shù)和表項條目數(shù)極為敏感,隨著流表級數(shù)和表項數(shù)目的增加,算法性能也隨之下降。出于對性能的考慮,傳統(tǒng)多級流表的設(shè)計往往控制在幾層范圍內(nèi),這在一定程度上限制了 SDN流程設(shè)計的靈活性和SDN功能設(shè)計的完善性。

【發(fā)明內(nèi)容】

[0013]本發(fā)明的目的是為了克服上述【背景技術(shù)】的不足,提供一種支持多核處理器的SDN多級流表并行查找的系統(tǒng)及方法,對多級流表的組織結(jié)構(gòu)重新設(shè)計,增加基于數(shù)據(jù)流關(guān)鍵字的快表,將傳統(tǒng)SDN多級流表中進(jìn)行的多次匹配轉(zhuǎn)化為快表中的單次匹配,能夠提高查找效率,提高多核處理器在SDN多級流表中的執(zhí)行效率。
[0014]本發(fā)明提供一種支持多核處理器的SDN多級流表并行查找的系統(tǒng),該系統(tǒng)包括快表建立單元、表項設(shè)計單元、流表表項刪除單元、流表表項添加單元,其中:
[0015]快表建立單元用于:前期的數(shù)據(jù)流進(jìn)入多級流表查找時,自動在多級流表中增設(shè)一個基于數(shù)據(jù)流關(guān)鍵字的快表,記錄每一級流表匹配的表項結(jié)果,將各類輸入數(shù)據(jù)包頭部的關(guān)鍵字哈希到眾多快表上,進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)規(guī)則獲取和轉(zhuǎn)發(fā),優(yōu)化多核處理器的并行執(zhí)行;數(shù)據(jù)流通過快表直接與SDN設(shè)備中的多級流表的表項關(guān)聯(lián)起來;后期的數(shù)據(jù)流從快表中直接獲取多級流表中的轉(zhuǎn)發(fā)規(guī)則信息,直接通過快表找到多級流表中待匹配的表項和執(zhí)行的動作,將SDN多級流表中進(jìn)行的多次匹配轉(zhuǎn)化為快表中的單次匹配;
[0016]表項設(shè)計單元用于:在多級流表匹配數(shù)據(jù)流的過程中,在快表表項中建立數(shù)據(jù)流的快表信息;在每一個多級流表的尾端增加一條默認(rèn)表項;
[0017]流表表項刪除單元用于:刪除流表表項時,讓原本關(guān)聯(lián)到默認(rèn)表項的快表感知多級流表的表項發(fā)生變更,自動解除流表與默認(rèn)表項的關(guān)聯(lián),讓快表表項重新去關(guān)聯(lián)沒有被刪除的流表表項;
[0018]流表表項添加單元用于:添加流表表項時,讓原本關(guān)聯(lián)到默認(rèn)表項的快表感知多級流表的表項發(fā)生變更,自動解除流表與默認(rèn)表項的關(guān)聯(lián),重新綁定新增的流表表項。
[0019]在上述技術(shù)方案的基礎(chǔ)上,所述快表的表項成員中包括三個用于記錄數(shù)據(jù)流匹配的多級表項指針,每個輸入的數(shù)據(jù)報文提取報文頭部的關(guān)鍵字,進(jìn)行哈希運(yùn)算,根據(jù)哈希值的不同將數(shù)據(jù)包劃分到不同的快表表項桶Bucket中,每個Bucket中含有8個表項成員,根據(jù)表項中的指針地址找到匹配的表項,執(zhí)行相關(guān)的動作;
[0020]所述表項設(shè)計單元定義以下名詞:
[0021]關(guān)鍵字的集合Key = {k[l],k[2],k[3],…,k[n]},k[n]屬于集合Key,k表示關(guān)鍵字的字段,字段有多個,根據(jù)SDN的版本不同有所區(qū)別,η是變量,k[n]是一條表項中的關(guān)鍵字字段第η個匹配字段,k[n]是數(shù)據(jù)報文中IP頭部、用戶數(shù)據(jù)報協(xié)議UDP頭部信息或傳輸控制協(xié)議TCP頭部信息;
[0022]關(guān)鍵字掩碼的集合Mask= {m[l], m[2], m[3],…,m[n]},m[n]屬于集合Mask,m表示掩碼,字段對應(yīng)的掩碼有多個,η是變量,m[n]是一條表項中的條件字段第η個匹配字段的掩碼;
[0023]動作的集合Act1n = {a[l],a[2],a[3],…,a[i]},a[i]屬于集合 Act1n,a 表示執(zhí)行的動作,執(zhí)行的動作有多個,i是變量,a[i]是一條流表表項中第i個需要執(zhí)行的動作;
[0024]流表的集合L[X] = {r[l], r[2], r[3],…,r[j]},L是流表的集合,X是變量,L[x]表示第X張流表;r表示流表的表項,j是變量,r[j]屬于流表集合L[X],r[j]是流表第x張流表L的第j條表項;
[0025]快表的集合F= {b [I],b [2],b [3],...,b [η]},F(xiàn)表不快表的集合,b表不快表表項,η是變量,b [η]屬于快表集合F,b [η]是快表F的第η條表項,快表表項Bucket的最大值Bucket_MaX,表示快表F中容納的最大表項數(shù);
[0026]網(wǎng)絡(luò)上所有可能的出現(xiàn)的數(shù)據(jù)包的集合P = {p [I],P [2],P [3],…,P [ j]},P表示數(shù)據(jù)報文的集合,j是變量,P [j]表示具有同一特征類型的數(shù)據(jù)報文;
[0027]所述表項設(shè)計單元設(shè)計快表表項時,為快表表項的每個成員設(shè)計以下數(shù)據(jù)域:
[0028]Validl:第一有效位,用于表示該條表項的有效性;
[0029]Pending:狀態(tài)位,用于表示該條表項的可用性;
[0030]Key:關(guān)鍵字,表項的關(guān)鍵字字段,是該表項的特征值;
[0031]Flag:標(biāo)志位,表示后面數(shù)據(jù)域三個指針的有效性;
[0032]Ptrl:第一指針,用于指向第一級流表表項的指針;
[0033]Ptr2:第二指針,用于指向第二級流表表項的指針;
[0034]Ptr3:第三指針,用于指向第三級流表表項的指針;
[0035]流表的表項包括:
[0036]Prev:鏈表前向指針,用于指向前一個表項結(jié)構(gòu)體的指針;
[0037]Pr1:優(yōu)先級字段,表示該表項的優(yōu)先級高低,數(shù)值越大優(yōu)先級越高,反之越小;
[0038]Key:關(guān)鍵字;
[0039]Mask:掩碼,表示訪問控制列表的表項中的掩碼,用于與數(shù)據(jù)流信息的條件字段進(jìn)行與運(yùn)算;
[0040]Ref:引用計數(shù),用于記錄當(dāng)前正在使用該表項的成員個數(shù);
[0041]Vali
當(dāng)前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
贡山| 星子县| 长葛市| 常德市| 苗栗市| 乡城县| 逊克县| 城固县| 育儿| 清苑县| 兴和县| 伊宁市| 长汀县| 商洛市| 涞水县| 郸城县| 鸡泽县| 新巴尔虎左旗| 岢岚县| 蓬安县| 湟中县| 高雄县| 南江县| 奉新县| 德钦县| 香格里拉县| 芒康县| 溧水县| 如东县| 海原县| 青河县| 永川市| 永泰县| 清原| 额尔古纳市| 米林县| 新乐市| 天柱县| 迭部县| 洪洞县| 桐庐县|