两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

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

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

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

[0013]本發(fā)明的目的是為了克服上述【背景技術(shù)】的不足,提供一種支持多核處理器的SDN多級(jí)流表并行查找的系統(tǒng)及方法,對(duì)多級(jí)流表的組織結(jié)構(gòu)重新設(shè)計(jì),增加基于數(shù)據(jù)流關(guān)鍵字的快表,將傳統(tǒng)SDN多級(jí)流表中進(jìn)行的多次匹配轉(zhuǎn)化為快表中的單次匹配,能夠提高查找效率,提高多核處理器在SDN多級(jí)流表中的執(zhí)行效率。
[0014]本發(fā)明提供一種支持多核處理器的SDN多級(jí)流表并行查找的系統(tǒng),該系統(tǒng)包括快表建立單元、表項(xiàng)設(shè)計(jì)單元、流表表項(xiàng)刪除單元、流表表項(xiàng)添加單元,其中:
[0015]快表建立單元用于:前期的數(shù)據(jù)流進(jìn)入多級(jí)流表查找時(shí),自動(dòng)在多級(jí)流表中增設(shè)一個(gè)基于數(shù)據(jù)流關(guān)鍵字的快表,記錄每一級(jí)流表匹配的表項(xiàng)結(jié)果,將各類輸入數(shù)據(jù)包頭部的關(guān)鍵字哈希到眾多快表上,進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)規(guī)則獲取和轉(zhuǎn)發(fā),優(yōu)化多核處理器的并行執(zhí)行;數(shù)據(jù)流通過快表直接與SDN設(shè)備中的多級(jí)流表的表項(xiàng)關(guān)聯(lián)起來;后期的數(shù)據(jù)流從快表中直接獲取多級(jí)流表中的轉(zhuǎn)發(fā)規(guī)則信息,直接通過快表找到多級(jí)流表中待匹配的表項(xiàng)和執(zhí)行的動(dòng)作,將SDN多級(jí)流表中進(jìn)行的多次匹配轉(zhuǎn)化為快表中的單次匹配;
[0016]表項(xiàng)設(shè)計(jì)單元用于:在多級(jí)流表匹配數(shù)據(jù)流的過程中,在快表表項(xiàng)中建立數(shù)據(jù)流的快表信息;在每一個(gè)多級(jí)流表的尾端增加一條默認(rèn)表項(xiàng);
[0017]流表表項(xiàng)刪除單元用于:刪除流表表項(xiàng)時(shí),讓原本關(guān)聯(lián)到默認(rèn)表項(xiàng)的快表感知多級(jí)流表的表項(xiàng)發(fā)生變更,自動(dòng)解除流表與默認(rèn)表項(xiàng)的關(guān)聯(lián),讓快表表項(xiàng)重新去關(guān)聯(lián)沒有被刪除的流表表項(xiàng);
[0018]流表表項(xiàng)添加單元用于:添加流表表項(xiàng)時(shí),讓原本關(guān)聯(lián)到默認(rèn)表項(xiàng)的快表感知多級(jí)流表的表項(xiàng)發(fā)生變更,自動(dòng)解除流表與默認(rèn)表項(xiàng)的關(guān)聯(lián),重新綁定新增的流表表項(xiàng)。
[0019]在上述技術(shù)方案的基礎(chǔ)上,所述快表的表項(xiàng)成員中包括三個(gè)用于記錄數(shù)據(jù)流匹配的多級(jí)表項(xiàng)指針,每個(gè)輸入的數(shù)據(jù)報(bào)文提取報(bào)文頭部的關(guān)鍵字,進(jìn)行哈希運(yùn)算,根據(jù)哈希值的不同將數(shù)據(jù)包劃分到不同的快表表項(xiàng)桶Bucket中,每個(gè)Bucket中含有8個(gè)表項(xiàng)成員,根據(jù)表項(xiàng)中的指針地址找到匹配的表項(xiàng),執(zhí)行相關(guān)的動(dòng)作;
[0020]所述表項(xiàng)設(shè)計(jì)單元定義以下名詞:
[0021]關(guān)鍵字的集合Key = {k[l],k[2],k[3],…,k[n]},k[n]屬于集合Key,k表示關(guān)鍵字的字段,字段有多個(gè),根據(jù)SDN的版本不同有所區(qū)別,η是變量,k[n]是一條表項(xiàng)中的關(guān)鍵字字段第η個(gè)匹配字段,k[n]是數(shù)據(jù)報(bào)文中IP頭部、用戶數(shù)據(jù)報(bào)協(xié)議UDP頭部信息或傳輸控制協(xié)議TCP頭部信息;
[0022]關(guān)鍵字掩碼的集合Mask= {m[l], m[2], m[3],…,m[n]},m[n]屬于集合Mask,m表示掩碼,字段對(duì)應(yīng)的掩碼有多個(gè),η是變量,m[n]是一條表項(xiàng)中的條件字段第η個(gè)匹配字段的掩碼;
[0023]動(dòng)作的集合Act1n = {a[l],a[2],a[3],…,a[i]},a[i]屬于集合 Act1n,a 表示執(zhí)行的動(dòng)作,執(zhí)行的動(dòng)作有多個(gè),i是變量,a[i]是一條流表表項(xiàng)中第i個(gè)需要執(zhí)行的動(dòng)作;
[0024]流表的集合L[X] = {r[l], r[2], r[3],…,r[j]},L是流表的集合,X是變量,L[x]表示第X張流表;r表示流表的表項(xiàng),j是變量,r[j]屬于流表集合L[X],r[j]是流表第x張流表L的第j條表項(xiàng);
[0025]快表的集合F= {b [I],b [2],b [3],...,b [η]},F(xiàn)表不快表的集合,b表不快表表項(xiàng),η是變量,b [η]屬于快表集合F,b [η]是快表F的第η條表項(xiàng),快表表項(xiàng)Bucket的最大值Bucket_MaX,表示快表F中容納的最大表項(xiàng)數(shù);
[0026]網(wǎng)絡(luò)上所有可能的出現(xiàn)的數(shù)據(jù)包的集合P = {p [I],P [2],P [3],…,P [ j]},P表示數(shù)據(jù)報(bào)文的集合,j是變量,P [j]表示具有同一特征類型的數(shù)據(jù)報(bào)文;
[0027]所述表項(xiàng)設(shè)計(jì)單元設(shè)計(jì)快表表項(xiàng)時(shí),為快表表項(xiàng)的每個(gè)成員設(shè)計(jì)以下數(shù)據(jù)域:
[0028]Validl:第一有效位,用于表示該條表項(xiàng)的有效性;
[0029]Pending:狀態(tài)位,用于表示該條表項(xiàng)的可用性;
[0030]Key:關(guān)鍵字,表項(xiàng)的關(guān)鍵字字段,是該表項(xiàng)的特征值;
[0031]Flag:標(biāo)志位,表示后面數(shù)據(jù)域三個(gè)指針的有效性;
[0032]Ptrl:第一指針,用于指向第一級(jí)流表表項(xiàng)的指針;
[0033]Ptr2:第二指針,用于指向第二級(jí)流表表項(xiàng)的指針;
[0034]Ptr3:第三指針,用于指向第三級(jí)流表表項(xiàng)的指針;
[0035]流表的表項(xiàng)包括:
[0036]Prev:鏈表前向指針,用于指向前一個(gè)表項(xiàng)結(jié)構(gòu)體的指針;
[0037]Pr1:優(yōu)先級(jí)字段,表示該表項(xiàng)的優(yōu)先級(jí)高低,數(shù)值越大優(yōu)先級(jí)越高,反之越??;
[0038]Key:關(guān)鍵字;
[0039]Mask:掩碼,表示訪問控制列表的表項(xiàng)中的掩碼,用于與數(shù)據(jù)流信息的條件字段進(jìn)行與運(yùn)算;
[0040]Ref:引用計(jì)數(shù),用于記錄當(dāng)前正在使用該表項(xiàng)的成員個(gè)數(shù);
[0041]Vali
當(dāng)前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
连云港市| 玉门市| 临洮县| 万载县| 嘉黎县| 井研县| 武城县| 湖州市| 湘潭市| 阿合奇县| 永嘉县| 正安县| 桂阳县| 中江县| 东平县| 平阳县| 依兰县| 多伦县| 青岛市| 安徽省| 绥化市| 苏尼特左旗| 巴彦县| 威海市| 光山县| 惠安县| 芷江| 陆川县| 永德县| 建平县| 遂昌县| 达尔| 兰溪市| 天长市| 且末县| 阿拉善盟| 招远市| 霞浦县| 恭城| 五常市| 綦江县|