一種基于快、慢表的路由器查表方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明主要涉及到路由器技術(shù)領(lǐng)域,特指一種基于快、慢表的路由器查表方法。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和用戶需求的日益豐富,傳統(tǒng)的網(wǎng)絡(luò)基礎(chǔ)設(shè)施管理模式已經(jīng)無力應(yīng)對(duì)當(dāng)前局面,比如新業(yè)務(wù)快速部署、基礎(chǔ)設(shè)施資源統(tǒng)籌管理以及軟件與硬件松耦合特性等。以軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)和網(wǎng)絡(luò)功能虛擬化(NetworkFunct1n Virtualizat1n,NFV)為代表的新的設(shè)計(jì)理念和新的技術(shù)手段誕生,為網(wǎng)絡(luò)基礎(chǔ)設(shè)施的管理提供了一種基于實(shí)時(shí)任務(wù)的虛擬化技術(shù)的云架構(gòu)模式。其中,SDN將網(wǎng)絡(luò)架構(gòu)劃分為控制面和數(shù)據(jù)面,從而加快新業(yè)務(wù)部署速度;NFV目的在于實(shí)現(xiàn)軟件和硬件的解耦,利用通用的網(wǎng)絡(luò)基礎(chǔ)設(shè)施部署網(wǎng)絡(luò)服務(wù)以及按需編排業(yè)務(wù)。而路由器作為網(wǎng)絡(luò)基礎(chǔ)設(shè)施的重要組成部分,如何確保其在通用的網(wǎng)絡(luò)基礎(chǔ)設(shè)施具有較高的轉(zhuǎn)發(fā)性能是研究的熱點(diǎn)。
[0003]關(guān)于提升軟件路由器的性能研究主要集中以DPDK、Netmap、PaCket Batching等代表1/0優(yōu)化、采用多核和多線程機(jī)制加速報(bào)文處理能力以及優(yōu)化路由查表的速度等方面。在路由器設(shè)備中,除了查找轉(zhuǎn)發(fā)表確定報(bào)文的下一跳之外,它仍要查詢一類基于報(bào)文分類的安全控制策略,即訪問控制列表(Access Control List,ACL),通過與報(bào)文對(duì)應(yīng)字段進(jìn)行匹配,根據(jù)預(yù)定策略決定報(bào)文的執(zhí)行方式,比如放行或阻止。路由器通過查找轉(zhuǎn)發(fā)表和ACL表共同決定報(bào)文的轉(zhuǎn)發(fā)行為。轉(zhuǎn)發(fā)表通常由控制平面的路由協(xié)議自動(dòng)生成,ACL表則是管理員根據(jù)網(wǎng)絡(luò)管理的需求手動(dòng)配置的,它們都是通過管控通道下發(fā)至數(shù)據(jù)平面。目前,商用路由器通常采用硬件方式查找轉(zhuǎn)發(fā)表和ACL表,從而確保查表性能與路由器性能相匹配。然而通用平臺(tái)往往不具備TCAM存儲(chǔ)器,無法對(duì)硬件查表方式提供支撐。根據(jù)相關(guān)研究,軟件查表速度通常會(huì)成為嚴(yán)重路由器性能的因素之一。
[0004]目前,轉(zhuǎn)發(fā)表軟件查找算法主要包括二叉樹查找算法、24-8樹查找算法、Bitmap查找算法等;ACL軟件搜索算法主要包括RFC(Recursive Flow Classificat1n)、分層查找樹算法、集合歸并查找樹算法、應(yīng)用決策樹算法、Bit Vector等。有關(guān)轉(zhuǎn)發(fā)表查找性能優(yōu)化與ACL表查找性能優(yōu)化是兩個(gè)相互并行、互不交叉的研究課題。由于轉(zhuǎn)發(fā)表中表項(xiàng)的前綴信息與ACL表的規(guī)則項(xiàng)的目的IP前綴信息存在相關(guān)性,可以通過查找ACL表優(yōu)化轉(zhuǎn)發(fā)表的查找或者通過查找轉(zhuǎn)發(fā)表優(yōu)化ACL表的查找。
[0005]綜上所述,目前數(shù)據(jù)平面中ACL表和轉(zhuǎn)發(fā)表查表兩種割裂的查表組織方式不利于數(shù)據(jù)平面處理能力的提升,因而提供一種結(jié)合ACL表和轉(zhuǎn)發(fā)表關(guān)聯(lián)性來達(dá)到優(yōu)化數(shù)據(jù)平面查表任務(wù)是目前亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種實(shí)現(xiàn)簡單、性能優(yōu)化明顯、可提升路由器轉(zhuǎn)發(fā)性能的基于快、慢表的路由器查表方法。
[0007]為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案: 一種基于快、慢表的路由器查表方法,步驟為:
S1:控制平面中表項(xiàng)更新引起表項(xiàng)計(jì)算并向數(shù)據(jù)平面下發(fā)表項(xiàng);
S2:數(shù)據(jù)平面接收到控制平面的表項(xiàng)更新消息,并更新本地的表項(xiàng);
S3:數(shù)據(jù)平面利用控制平面下發(fā)的表項(xiàng)進(jìn)行查表操作用于決定報(bào)文的轉(zhuǎn)發(fā)行為;
S4:當(dāng)數(shù)據(jù)平面完成當(dāng)前任務(wù)時(shí),檢查是否管控通道有下發(fā)的表項(xiàng)更新消息;如果檢查到存在表項(xiàng)更新的消息,轉(zhuǎn)至步驟S2,進(jìn)行表項(xiàng)更新與安裝操作;否則,轉(zhuǎn)至步驟S3,查找轉(zhuǎn)發(fā)表并決定報(bào)文轉(zhuǎn)發(fā)行為。
[0008]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟SI的具體流程為:
SlOl:當(dāng)控制平面中ACL表配置程序配置ACL表或路由表計(jì)算程序更新路由表時(shí),分別對(duì)存儲(chǔ)在本地控制平面中ACL表和轉(zhuǎn)發(fā)表進(jìn)行更新操作;
S102:控制平面中快表計(jì)算程序接收到表項(xiàng)更新操作,計(jì)算出表項(xiàng)屬于哪種類型;同時(shí),快表計(jì)算程序計(jì)算出哪些ACL表項(xiàng)或轉(zhuǎn)發(fā)表項(xiàng)受到此表項(xiàng)更新的影響,對(duì)本地的ACL表、路由表、通配ACL表、無重疊路由表進(jìn)行更新操作;快表計(jì)算程序?qū)⒏卤眄?xiàng)以及受影響的表項(xiàng)操作通過管控通道下發(fā)至數(shù)據(jù)平面。
[0009]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S2的具體流程為:
S201:數(shù)據(jù)平面通過管控通道接收到控制平面的表項(xiàng)操作消息,解析表項(xiàng)操作消息,并對(duì)數(shù)據(jù)平面的快表查表部件中通配ACL表和非重疊轉(zhuǎn)發(fā)表以及慢表查表部件中重疊轉(zhuǎn)發(fā)表和非通配ACL表進(jìn)行更新操作;
S202:通過管控通道向控制平面發(fā)送應(yīng)答消息,表明控制平面向數(shù)據(jù)平面完成表項(xiàng)更新操作后,數(shù)據(jù)平面的表項(xiàng)與控制平面的表項(xiàng)是一致的,轉(zhuǎn)至步驟S4。
[0010]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S3的具體流程為:
S301:快表查表部件接收到報(bào)文,并將其與通配ACL表匹配;如果匹配成功且ACL表中動(dòng)作行為是拒絕,則丟棄該報(bào)文,轉(zhuǎn)至步驟S4;否則,繼續(xù)執(zhí)行;
S302:與快表查表部件中非重疊轉(zhuǎn)發(fā)表進(jìn)行匹配;如果匹配成功,則直接將報(bào)文從指定接口轉(zhuǎn)發(fā)出去,轉(zhuǎn)至步驟S4;否則,將報(bào)文傳遞到慢表查表部件;
S302:慢表查表部件查找重疊轉(zhuǎn)發(fā)表,確定報(bào)文的轉(zhuǎn)發(fā)接口 ;
S304:慢表查表部件查找非通配ACL表;如果匹配成功且ACL表中動(dòng)作行為是拒絕,則將報(bào)文丟棄;否則,將報(bào)文從指定接口發(fā)送出去。
[0011]作為本發(fā)明的進(jìn)一步改進(jìn):所述控制平面與數(shù)據(jù)平面根據(jù)接入拓?fù)湟?guī)劃是互連關(guān)系;所述控制平面與數(shù)據(jù)平面通過統(tǒng)一的協(xié)議進(jìn)行數(shù)據(jù)的傳輸、解析與封裝。
[0012]作為本發(fā)明的進(jìn)一步改進(jìn):所述數(shù)據(jù)平面的表項(xiàng)查找系統(tǒng)包括管控通道、快表查表部件和慢表查表部件;所述管控通道是用于控制平面與數(shù)據(jù)平面進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ?;所述快表查表部件用于確定報(bào)文的轉(zhuǎn)發(fā)行為,它包括通配ACL表和非重疊轉(zhuǎn)發(fā)表;所述慢表查表部件同樣用于確定報(bào)文的轉(zhuǎn)發(fā)行為,它包括重疊轉(zhuǎn)發(fā)表和非通配ACL表,只有快表查表部件無法找到結(jié)果時(shí),才會(huì)進(jìn)一步查找慢表查表部件。
[0013]作為本發(fā)明的進(jìn)一步改進(jìn):所述控制平面的表項(xiàng)計(jì)算系統(tǒng)包括管控通道、通配ACL表、無重疊路由表、快表計(jì)算程序、ACL表配置程序、ACL表、路由表計(jì)算程序、路由表;所述管控通道是用于控制平面與數(shù)據(jù)平面進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ?所述通配ACL表是存儲(chǔ)在控制平面的通配ACL表的表項(xiàng);所述無重疊路由表是指存儲(chǔ)在控制平面的無重疊路由表的表項(xiàng);所述快表計(jì)算程序是控制平面中用于計(jì)算轉(zhuǎn)發(fā)表或ACL的表項(xiàng)屬于哪種類型的表項(xiàng);所述ACL表配置程序用于為用戶提供添加、刪除、修改ACL表的表項(xiàng)的通道;所述ACL表是指存儲(chǔ)在控制平面的ACL表的表項(xiàng),由ACL表配置程序生成的ACL表;所述路由表計(jì)算程序是指路由協(xié)議更新路由表的應(yīng)用;所述路由表是指存儲(chǔ)在控制平面的路由表的表項(xiàng),由路由表計(jì)算程序計(jì)算出的路由表。
[0014]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:本發(fā)明的基于快、慢表的路由器查表方法,實(shí)現(xiàn)簡單、性能優(yōu)化明顯,通過ACL查表與轉(zhuǎn)發(fā)表查表相結(jié)合的方法,利用轉(zhuǎn)發(fā)表查找優(yōu)化ACL表搜索算法,查找大多數(shù)轉(zhuǎn)發(fā)表與少量的ACL表來決定報(bào)文轉(zhuǎn)發(fā)行為。其中,控制平面的表項(xiàng)計(jì)算負(fù)責(zé)實(shí)時(shí)地更新數(shù)據(jù)平面中表項(xiàng),確保報(bào)文的轉(zhuǎn)發(fā)行為與用戶預(yù)期是一致的;同時(shí),數(shù)據(jù)平面的查表任務(wù)是基于結(jié)合ACL表和轉(zhuǎn)發(fā)表的關(guān)聯(lián)性實(shí)現(xiàn)的,達(dá)到優(yōu)化數(shù)據(jù)平面的處理能力的目的。為此,本發(fā)明能夠確保數(shù)據(jù)平面的查表任務(wù)具有良好的處理性能,能夠有效地提升路由器數(shù)據(jù)平面查表速率,從而達(dá)到提升路由器轉(zhuǎn)發(fā)性能的目的。
【附圖說明】
[0015]圖1是本發(fā)明在具體應(yīng)用實(shí)例中數(shù)據(jù)平面查表任務(wù)邏輯結(jié)構(gòu)示意圖。
[0016]圖2是本發(fā)明在具體應(yīng)用實(shí)例中控制平面的表項(xiàng)計(jì)算邏輯結(jié)構(gòu)示意圖。
[0017]圖3是本發(fā)明方法的流程示意圖。
【具體實(shí)施方式】
[0018]以下將結(jié)合說明書附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
[0019]在路由器中控制報(bào)文轉(zhuǎn)發(fā)行為的系統(tǒng)包括控制平面的表項(xiàng)計(jì)算和數(shù)據(jù)平面的表項(xiàng)查表,可以實(shí)現(xiàn)表項(xiàng)的更新操作、報(bào)文查找表項(xiàng)的功能等特性,確保數(shù)據(jù)平面的報(bào)文轉(zhuǎn)發(fā)行為與用戶預(yù)期是一致的。在本發(fā)明中,控制平面的表項(xiàng)計(jì)算負(fù)責(zé)實(shí)時(shí)地更新數(shù)據(jù)平面中表項(xiàng),確保報(bào)文的轉(zhuǎn)發(fā)行為與用戶預(yù)期是一致的;同時(shí),數(shù)據(jù)平面的查表任務(wù)是基于結(jié)合ACL表和轉(zhuǎn)發(fā)表的關(guān)聯(lián)性實(shí)現(xiàn)的,從而達(dá)到優(yōu)化數(shù)據(jù)平面的處理能力的目的。
[0020]如圖3所示,本發(fā)明的基于快、慢表的路由器查表方法,其步驟為:
S1:控制平面中表項(xiàng)更新引起表項(xiàng)計(jì)算并向數(shù)據(jù)平面下發(fā)表項(xiàng);
在具體應(yīng)用實(shí)例中,表項(xiàng)更新與下發(fā)過程如下:
SlOl:當(dāng)控制平面中ACL表配置程序配置ACL表或路由表計(jì)算程序更新路由表時(shí),分別對(duì)存儲(chǔ)在本地控制平面中ACL表和轉(zhuǎn)發(fā)表進(jìn)行更新操作;
S102:控制平面中快表計(jì)算程序接收到表項(xiàng)更新操作,計(jì)算出表項(xiàng)屬于哪種類型。同時(shí),快表計(jì)算程序還需要計(jì)算出哪些ACL表項(xiàng)或轉(zhuǎn)發(fā)表項(xiàng)受到此表項(xiàng)更新的影響,對(duì)本地的ACL表、路由表、通配ACL表、無重疊路由表進(jìn)行更新操作??毂碛?jì)算程序?qū)⒏卤眄?xiàng)以及受影響的表項(xiàng)操作通過管控通道下發(fā)至數(shù)據(jù)平面;
S2:數(shù)據(jù)平面接收到控制平面的表項(xiàng)更新消息,并更新本地的表項(xiàng);
在具體應(yīng)用實(shí)例中,表項(xiàng)更新與安裝過程如下:
S