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

一種訪問控制列表實(shí)現(xiàn)方法及裝置的制作方法

文檔序號(hào):7767112閱讀:493來源:國知局
專利名稱:一種訪問控制列表實(shí)現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及一種訪問控制列表實(shí)現(xiàn)方法及裝置。
背景技術(shù)
根據(jù)數(shù)據(jù)包特定關(guān)鍵字段將數(shù)據(jù)包分成不同的流,例如根據(jù)數(shù)據(jù)包的源 IP (internet protocol,因特網(wǎng)協(xié)議)地址和目的IP地址進(jìn)行分類,同一類數(shù)據(jù)包稱之為一條流。分成流后,可以針對(duì)該流進(jìn)行各種處理,例如丟棄或轉(zhuǎn)發(fā)、限速、重新分配優(yōu)先級(jí)等,這種處理稱之為動(dòng)作。通常一個(gè)規(guī)則加上對(duì)應(yīng)的動(dòng)作稱之為一個(gè)ACL (Access Control List,訪問控制列表)條目。根據(jù)一般業(yè)界標(biāo)準(zhǔn)組成規(guī)則的關(guān)鍵字段有5個(gè),通常也稱5元組,這5個(gè)關(guān)鍵字是IP報(bào)文的源地址、IP報(bào)文的目的地址、IP報(bào)文的承載協(xié)議類型、TCP (Transmission Control Protocol,傳輸層控制協(xié)議)或UDP⑴ser Data Protocol,用戶數(shù)據(jù)協(xié)議)源端口號(hào)、TCP或UDP的目的端口號(hào)。在具體實(shí)現(xiàn)中,使用的關(guān)鍵字還可以有其他擴(kuò)展C0S (Class Of Service,服務(wù)等級(jí))、TOS (Type Of Service,服務(wù)類型)、DSCP (Differentiated Service Code Point,差分服務(wù)編碼)、虛擬局域網(wǎng)索引VLAN ID、源和目的MAC (Media Access Control,介質(zhì)訪問控制)地址等,以上各個(gè)關(guān)鍵字可以任意組合,并且可以設(shè)置范圍限制,例如一個(gè)規(guī)則可以是=TCP端口 1000 2000+IP地址255. 122. 122. *(*代表不關(guān)心的位)。對(duì)于PTNPacket Transport Network,分組傳送網(wǎng))設(shè)備,其組成規(guī)則的關(guān)鍵字可能還需要包括MPLS (多協(xié)議標(biāo)簽交換)數(shù)據(jù)包中的隧道標(biāo)識(shí)ID或偽線標(biāo)識(shí)ID等,其具體的規(guī)則根據(jù)實(shí)際應(yīng)用確定。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,越來越多的網(wǎng)絡(luò)設(shè)備需要支持快速準(zhǔn)確的報(bào)文分類,如安全網(wǎng)關(guān)、邊緣路由器、核心路由器等。未來網(wǎng)絡(luò)的發(fā)展趨勢需要為用戶提供更好的服務(wù)質(zhì)量,而諸如防火墻、區(qū)分服務(wù)、虛擬專網(wǎng)VPN、基于策略的路由等提高服務(wù)質(zhì)量的機(jī)制都是基于高效訪問控制列表技術(shù)之上的。此外,隨著光纖通信技術(shù)的發(fā)展,鏈路帶寬和傳輸速率已不再成為問題,路由轉(zhuǎn)發(fā)設(shè)備正在成為網(wǎng)絡(luò)瓶頸,而訪問控制列表更是關(guān)鍵之關(guān)鍵。因此高效快速的訪問控制列表實(shí)現(xiàn)方法對(duì)于未來互聯(lián)網(wǎng)的發(fā)展具有極其重要的意義?,F(xiàn)行分組傳輸設(shè)備采用 TCAM(Ternary Content Addressable Memory,三態(tài)內(nèi)容尋址存儲(chǔ)器)實(shí)現(xiàn)訪問控制列表。采用TCAM實(shí)現(xiàn)訪問控制列表的優(yōu)點(diǎn)在于實(shí)現(xiàn)簡單,但是 TCAM也有許多不足的地方。首先TCAM在同一時(shí)鐘周期內(nèi)將待查找的關(guān)鍵字和TCAM的每一個(gè)條目進(jìn)行比較,所以功耗較大;第二是TCAM器件成本較高,價(jià)格昂貴;第三是由于TCAM 器件實(shí)現(xiàn)的原因,采用TCAM實(shí)現(xiàn)的規(guī)則庫不能太大。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)中存在的上述缺陷,提出一種成本和功耗較低的訪問控制列表實(shí)現(xiàn)方法和裝置。本發(fā)明采用的技術(shù)方案包括
一種訪問控制列表實(shí)現(xiàn)裝置,包括訪問控制列表生成模塊、存儲(chǔ)器和訪問控制列表查找模塊其中,所述訪問控制列表生成模塊用于,將同一維的各規(guī)則區(qū)間映射到一個(gè)數(shù)軸上,分別得到各規(guī)則區(qū)間在該數(shù)軸上的端點(diǎn),并以所述以各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的端點(diǎn)為葉子節(jié)點(diǎn),建立起樹形數(shù)據(jù)結(jié)構(gòu),所述端點(diǎn)指左端點(diǎn)和右端點(diǎn)之一;所述存儲(chǔ)器用于存儲(chǔ)所述樹形數(shù)據(jù)結(jié)構(gòu);所述訪問控制列表查找模塊用于,提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找所述樹形數(shù)據(jù)結(jié)構(gòu),獲取所述待查找數(shù)據(jù)包對(duì)應(yīng)的規(guī)則。進(jìn)一步地,所述樹形數(shù)據(jù)結(jié)構(gòu)指2-3樹結(jié)構(gòu)。進(jìn)一步地,所述樹形數(shù)據(jù)結(jié)構(gòu)指二叉樹結(jié)構(gòu)。進(jìn)一步地,所述訪問控制列表生成模塊還用于,為所述樹形數(shù)據(jù)結(jié)構(gòu)建立備份,并將其保存于所述存儲(chǔ)器中。進(jìn)一步地,所述以各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的端點(diǎn)為葉子節(jié)點(diǎn),建立起樹形數(shù)據(jù)結(jié)構(gòu), 是指分別對(duì)各個(gè)葉子節(jié)點(diǎn)的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,將運(yùn)算結(jié)果相同的葉子節(jié)點(diǎn)組成一個(gè)樹形數(shù)據(jù)結(jié)構(gòu),從而得到一個(gè)以上的樹形數(shù)據(jù)結(jié)構(gòu);所述提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找所述樹形數(shù)據(jù)結(jié)構(gòu),是指對(duì)所述關(guān)鍵字的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,根據(jù)運(yùn)算結(jié)果找到對(duì)應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找;0 < M < N,N為規(guī)則的寬度。優(yōu)選地,0 < M < N/3。進(jìn)一步地,本發(fā)明所述訪問控制列表實(shí)現(xiàn)裝置還包括多維規(guī)則處理模塊,該模塊用于,如果所述待查找數(shù)據(jù)包的規(guī)則為多維,則首先將其規(guī)則分解為多個(gè)一維規(guī)則,對(duì)于其中任一個(gè)一維規(guī)則,交由所述訪問控制列表生成模塊和訪問控制列表查找模塊執(zhí)行,然后將得到的所述待查找數(shù)據(jù)包對(duì)應(yīng)的該一維規(guī)則,最后將所述待查找數(shù)據(jù)包對(duì)應(yīng)的多個(gè)一維規(guī)則進(jìn)行合并得到所述待查找數(shù)據(jù)包對(duì)應(yīng)的多維規(guī)則;多維指二維及二維以上。一種訪問控制列表實(shí)現(xiàn)方法,包括如下步驟A、將同一維的各規(guī)則區(qū)間映射到一個(gè)數(shù)軸上,分別得到各規(guī)則區(qū)間在該數(shù)軸上的端點(diǎn),并以各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的端點(diǎn)為葉子節(jié)點(diǎn),建立樹形數(shù)據(jù)結(jié)構(gòu),并保存所述樹形數(shù)據(jù)結(jié)構(gòu);B、提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找所述樹形數(shù)據(jù)結(jié)構(gòu),獲取所述待查找數(shù)據(jù)包對(duì)應(yīng)的規(guī)則;所述端點(diǎn)指左端點(diǎn)和右端點(diǎn)之一。進(jìn)一步地,為了提高查找的效率,在步驟A中,分別對(duì)各個(gè)葉子節(jié)點(diǎn)的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,將運(yùn)算結(jié)果相同的葉子節(jié)點(diǎn)組成一個(gè)樹形數(shù)據(jù)結(jié)構(gòu),從而得到一個(gè)以上的樹形數(shù)據(jù)結(jié)構(gòu);步驟B中,對(duì)所述關(guān)鍵字的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,根據(jù)運(yùn)算結(jié)果找到對(duì)應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找;0 < M < N,N為規(guī)則的寬度,也即所述關(guān)鍵字的寬度。優(yōu)選地,0 < M < N/3。進(jìn)一步地,如果所述待查找數(shù)據(jù)包的規(guī)則為多維,則首先將其規(guī)則分解為多個(gè)一維規(guī)則,對(duì)于其中任一個(gè)一維規(guī)則,執(zhí)行所述步驟A和步驟B,得到所述待查找數(shù)據(jù)包對(duì)應(yīng)的該一維規(guī)則,然后進(jìn)行規(guī)則合并,得到所述待查找數(shù)據(jù)包對(duì)應(yīng)的多維規(guī)則;多維指二維及二維以上。
本發(fā)明的有益效果為本發(fā)明通過建立樹形數(shù)據(jù)結(jié)構(gòu)對(duì)規(guī)則進(jìn)行存儲(chǔ),當(dāng)查找規(guī)則的時(shí)候,通過模糊匹配的方式即能夠查找對(duì)對(duì)應(yīng)的規(guī)則,不再需要采用如TCAM的查找方式,在同一時(shí)鐘周期內(nèi)將待查找的關(guān)鍵字和TCAM的每一個(gè)條目進(jìn)行比較,因此能夠顯著節(jié)省功耗。并且,對(duì)于多維規(guī)則,本發(fā)明首先將其分解為多個(gè)一維規(guī)則,并分別采用樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行規(guī)則存儲(chǔ)和查找,然后將查找得到的多個(gè)一維規(guī)則進(jìn)行合并,得到待查找數(shù)據(jù)包對(duì)應(yīng)的多維規(guī)則,因此本發(fā)明能夠擴(kuò)展到任意維數(shù)的ACL規(guī)則表。本發(fā)明提供的訪問控制列表實(shí)現(xiàn)方法和裝置還具有成本低,技術(shù)方案簡便易于實(shí)現(xiàn)的優(yōu)點(diǎn)。


圖1為本發(fā)明訪問控制列表實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖;圖2為一個(gè)具體實(shí)施例的本發(fā)明訪問控制列表實(shí)現(xiàn)裝置的電路結(jié)構(gòu)示意圖。圖3為2-3樹數(shù)據(jù)結(jié)構(gòu)示例圖;圖4為ACL表的數(shù)據(jù)結(jié)構(gòu)示例圖;圖5為本發(fā)明訪問控制列表實(shí)現(xiàn)方法流程示意圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。圖1為本發(fā)明訪問控制列表實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖,如圖所示,本發(fā)明訪問控制列表實(shí)現(xiàn)裝置包括訪問控制列表生成模塊、存儲(chǔ)器、訪問控制列表查找模塊和多維規(guī)則處理模塊。其中,訪問控制列表生成模塊用于,以各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的左端點(diǎn)為葉子節(jié)點(diǎn) (也可以右端點(diǎn)為葉子節(jié)點(diǎn),但必須統(tǒng)一為左端點(diǎn),或統(tǒng)一為右端點(diǎn)),建立樹形數(shù)據(jù)結(jié)構(gòu), 并對(duì)該樹形數(shù)據(jù)結(jié)構(gòu)建立備份,該樹形數(shù)據(jù)結(jié)構(gòu)可以為任意樹形數(shù)據(jù)結(jié)構(gòu),例如2-3樹結(jié)構(gòu),又例如二叉樹或多叉樹結(jié)構(gòu)。為了提高查找的效率,分別對(duì)各個(gè)葉子節(jié)點(diǎn)的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,將運(yùn)算結(jié)果相同的葉子節(jié)點(diǎn)組成一個(gè)樹形數(shù)據(jù)結(jié)構(gòu),從而得到一個(gè)以上的樹形數(shù)據(jù)結(jié)構(gòu)。其中0 < M < N,優(yōu)選0 < M < N/3,N為規(guī)則的寬度,也即關(guān)鍵字的寬度。存儲(chǔ)器用于對(duì)生成的樹形數(shù)據(jù)結(jié)構(gòu)以及備份樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行保存。訪問控制列表查找模塊用于,提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找樹形數(shù)據(jù)結(jié)構(gòu),獲取待查找數(shù)據(jù)包對(duì)應(yīng)的規(guī)則。為了提高效率,對(duì)應(yīng)于上面訪問控制列表生產(chǎn)模塊采用的優(yōu)化方案,對(duì)關(guān)鍵字的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,根據(jù)運(yùn)算結(jié)果找到對(duì)應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找。多維規(guī)則處理模塊用于,如果待查找數(shù)據(jù)包的規(guī)則為多維,則首先將其規(guī)則分解為多個(gè)一維規(guī)則,對(duì)于其中任一個(gè)一維規(guī)則,交由訪問控制列表生成模塊和訪問控制列表查找模塊執(zhí)行,然后將得到的待查找數(shù)據(jù)包對(duì)應(yīng)的該一維規(guī)則進(jìn)行規(guī)則合并,得到待查找數(shù)據(jù)包對(duì)應(yīng)的多維規(guī)則。由于信息爆炸性的增長,所以網(wǎng)絡(luò)流量也迅速增大,為了使交換設(shè)備能夠適應(yīng)網(wǎng)絡(luò)流量的需要,交換設(shè)備應(yīng)該達(dá)到線速交換處理能力,因此設(shè)備ACL分類器也需要能夠達(dá)到線速處理能力。如果單個(gè)引擎無法滿足設(shè)備線速處理能力,在實(shí)現(xiàn)的時(shí)候可以復(fù)制多個(gè)查找引擎,在某個(gè)時(shí)間內(nèi)同時(shí)處理多個(gè)數(shù)據(jù)包使分類器達(dá)到線速處理能力。需要復(fù)制的份數(shù)取決于交換設(shè)備需要達(dá)到的交換能力和存儲(chǔ)器的帶寬,其結(jié)構(gòu)如圖2所示。圖2為一個(gè)具體實(shí)施例的本發(fā)明訪問控制列表實(shí)現(xiàn)裝置的電路結(jié)構(gòu)示意圖,如圖所示,本發(fā)明訪問控制列表實(shí)現(xiàn)裝置的電路結(jié)構(gòu)包括規(guī)則表模塊為存儲(chǔ)塊,用于存儲(chǔ)軟件配置數(shù)據(jù),其數(shù)據(jù)結(jié)構(gòu)如3所示。備份規(guī)則表和規(guī)則表是完全一樣的。數(shù)據(jù)包分發(fā)器用于將總線上的數(shù)據(jù)包根據(jù)各個(gè)通路上搜索引擎工作狀態(tài)分發(fā)數(shù)
據(jù)包。首先公平輪詢1......L個(gè)通道,如果輪詢到的通道空閑則將數(shù)據(jù)包的描述信息發(fā)送
到對(duì)應(yīng)的通道上,如果輪詢到的通道忙,則輪詢下一個(gè)通道,周而復(fù)始。搜索引擎接收數(shù)據(jù)包分發(fā)器發(fā)送過來的包描述信息,根據(jù)寄存器的配置提出相應(yīng)的關(guān)鍵字。用關(guān)鍵字根據(jù)專利描述的ACL查找步驟到規(guī)則表中搜索對(duì)應(yīng)的條目。將查找到條目對(duì)應(yīng)的規(guī)則結(jié)果發(fā)送給規(guī)則合并器。規(guī)則合并器將1到K個(gè)搜索引擎查找結(jié)果進(jìn)行合并,得出數(shù)據(jù)包最后結(jié)果,即 QoS,丟棄標(biāo)識(shí),限速標(biāo)識(shí)等信息。RR(round robin,公平輪詢)輪詢從1到L挨個(gè)輪詢每個(gè)通道的搜索引擎的工作狀態(tài),如果該通道上1到K個(gè)搜索引擎都完成了查表,RR輪詢模塊取出最后合并結(jié)果發(fā)送到總線上。如果該通道還沒有完成查找和處于等待數(shù)據(jù)包狀態(tài)則輪詢下一個(gè)通道。本發(fā)明所設(shè)計(jì)的電路結(jié)構(gòu)簡單且可擴(kuò)展性好,可以擴(kuò)展到任意維ACL規(guī)則表;可重用性高,電路中的搜索引擎的電路結(jié)構(gòu)都是一致的,設(shè)計(jì)只需要例化搜索引擎模塊即可; 實(shí)現(xiàn)成本低,本發(fā)明實(shí)現(xiàn)不需要使用TCAM,大大降低了設(shè)備的成本;可配置性強(qiáng),設(shè)備的K 個(gè)規(guī)則表可支持1到K維ACL規(guī)則,極限情況下將K個(gè)規(guī)則表配置成同一種規(guī)則,此時(shí)只支持一維ACL規(guī)則,但是能夠支持的規(guī)則數(shù)是原來的K倍。下面以一個(gè)具體實(shí)例的方式對(duì)2-3樹的生成和查找做進(jìn)一步說明ACL規(guī)則生成例如我們需要配置的規(guī)則為VLAN ID。Rl (規(guī)則 1) =VLAN ID 為 1 4 ;R2 =VLAN ID 為 5 6 ;R3 :VLAN ID 為 7 8 ;...Rn-I =VLAN ID 為 60 62 ;Rn =VLAN ID 為 63 無窮大。第一步、提取各個(gè)規(guī)則的區(qū)間的左端點(diǎn),分別是1,5,7,9,......,63;第二步、將各個(gè)區(qū)間的左端點(diǎn)按照從小到大排序,排序后的結(jié)果是1,5,7,9, 63 ;第三步、取各個(gè)端點(diǎn)高M(jìn)比特做hash計(jì)算,例如hash函數(shù)為取端點(diǎn)的高4比特作
為hash結(jié)果,那么1,5,7,9,......,63的hash結(jié)果都是0(假設(shè)1,5,7,9,......,63都是
32位的整數(shù));第四步、將數(shù)組1,5,7,9,......,63組織成一棵2_3樹,如圖3所示數(shù)組a的索引從 0 開始,BP a
=1,a[l] = 5, a[2] = 7 ;2-3樹的最底層為第一層,從底向上依次為第二層,第三層。那么第二層第一個(gè)節(jié)點(diǎn)左邊數(shù)據(jù)為a [2+6*n],右邊數(shù)據(jù)為a [4+6*n],(η = 0......(N_4)/6 取整數(shù));那么第三層第一個(gè)節(jié)點(diǎn)左邊數(shù)據(jù)為aW+18*n],右邊的數(shù)據(jù)為a[12+18*n],(n = 0......(Ν-12)/18 取整數(shù));其他的層次依次類推。第五步、將生成的樹表寫到規(guī)則表中。其數(shù)據(jù)在規(guī)則表存儲(chǔ)內(nèi)的格式如圖4所示, 因?yàn)閔ash結(jié)果為0,所以樹根節(jié)點(diǎn)寫在表的0地址上。第六步、軟件將規(guī)則表對(duì)應(yīng)的動(dòng)作寫入到規(guī)則動(dòng)作表中,每個(gè)條目包括但不限于 ACL規(guī)則(例如指示接收還是丟棄數(shù)據(jù)包)、ACL規(guī)則在該維上的優(yōu)先級(jí)、該維對(duì)應(yīng)的QoS和 QoS優(yōu)先級(jí)、限速標(biāo)識(shí)和限速標(biāo)識(shí)優(yōu)先級(jí)。查找過程例如芯片接收到一個(gè)數(shù)據(jù),其VLAN ID為12。第一步、根據(jù)寄存器的配置從數(shù)據(jù)包提取關(guān)鍵字,例如寄存器配置為提取數(shù)據(jù)包的VLAN ID。那么硬件直接將數(shù)據(jù)包中的VLAN ID取出來作為待查找關(guān)鍵字12。第二步、將待查找關(guān)鍵字取高4比特作為hash結(jié)果,即得到hashjdx = 0。搜索引擎根據(jù)hash_idX = 0讀取規(guī)則表第0地址的條目。第三步、將12和規(guī)則表1第0地址的條目(17,41)進(jìn)行比較,該條目為樹根節(jié)點(diǎn) (中間節(jié)點(diǎn)),12比17小,所以根據(jù)左指針讀取條目(7,11)節(jié)點(diǎn)。第四步、判斷條目(7,11)為中間節(jié)點(diǎn),比較12大于11,所以根據(jù)該節(jié)點(diǎn)的右指針讀取下一個(gè)條目。第五步、判斷條目(11,14)為葉子節(jié)點(diǎn),比較12大于11但是小于14,所以根據(jù)節(jié)點(diǎn)(11,14)rule5_idx為地址讀取規(guī)則動(dòng)作表,最后得到了本次查找的結(jié)果。圖5為本發(fā)明訪問控制列表實(shí)現(xiàn)方法流程示意圖,如圖所示,本發(fā)明訪問控制列表實(shí)現(xiàn)方法具體包括如下步驟1、以網(wǎng)管設(shè)置的各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的左端點(diǎn)為葉子節(jié)點(diǎn)(也可以右端點(diǎn)為葉子節(jié)點(diǎn),但必須統(tǒng)一為左端點(diǎn),或統(tǒng)一為右端點(diǎn)),建立樹形數(shù)據(jù)結(jié)構(gòu),并對(duì)該樹形數(shù)據(jù)結(jié)構(gòu)建立備份,該樹形數(shù)據(jù)結(jié)構(gòu)可以為任意樹形數(shù)據(jù)結(jié)構(gòu),例如2-3樹結(jié)構(gòu),又例如二叉樹或多叉樹結(jié)構(gòu)。2、提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找樹形數(shù)據(jù)結(jié)構(gòu),獲取該待查找數(shù)據(jù)包對(duì)應(yīng)的規(guī)則。3、當(dāng)對(duì)規(guī)則進(jìn)行變更時(shí),首先對(duì)備份樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改,然后再對(duì)樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改。為了提高查找的效率,在步驟1中,分別對(duì)各個(gè)葉子節(jié)點(diǎn)的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,將運(yùn)算結(jié)果相同的葉子節(jié)點(diǎn)組成一個(gè)樹形數(shù)據(jù)結(jié)構(gòu),從而得到一個(gè)以上的樹形數(shù)據(jù)結(jié)構(gòu);相應(yīng)地,步驟2中,對(duì)關(guān)鍵字的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,根據(jù)運(yùn)算結(jié)果找到對(duì)應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找;其中0 < M < N,優(yōu)選0 < M < N/3, N為規(guī)則的寬度,也即關(guān)鍵字的寬度。
如果待查找數(shù)據(jù)包的規(guī)則為多維,則首先將其規(guī)則分解為多個(gè)一維規(guī)則,對(duì)于其中任一個(gè)一維規(guī)則,執(zhí)行步驟1和步驟2,得到該數(shù)據(jù)包對(duì)應(yīng)的該一維規(guī)則,然后進(jìn)行規(guī)則合并,得到該數(shù)據(jù)包對(duì)應(yīng)的多維規(guī)則。即將多維規(guī)則分解成多個(gè)一維規(guī)則,然后將其投影到數(shù)軸上并將各個(gè)區(qū)間的左端點(diǎn)組織成2-3樹結(jié)構(gòu),然后通過一個(gè)搜索引擎陣列將數(shù)據(jù)包對(duì)應(yīng)關(guān)鍵字和規(guī)則表進(jìn)行匹配,最后查找的結(jié)果根據(jù)配置的規(guī)則優(yōu)先級(jí)進(jìn)行合并。下面以一個(gè)具體實(shí)施例對(duì)本發(fā)明方法做進(jìn)一步詳細(xì)說明,該實(shí)施例中,網(wǎng)管配置的規(guī)則為多維,建立的樹形數(shù)據(jù)結(jié)構(gòu)為2-3樹結(jié)構(gòu)。下面分三部分進(jìn)行說明第一部分ACL規(guī)則表生成步驟1、根據(jù)幾何投影將多維規(guī)則分解成多個(gè)一維規(guī)則,其中每個(gè)規(guī)則除了 ACL 規(guī)則外,還有ACL規(guī)則在該維上的優(yōu)先級(jí),除此之外還有該維對(duì)應(yīng)的QoS(QUality of krvice,服務(wù)質(zhì)量)和QoS優(yōu)先級(jí)、限速標(biāo)識(shí)和限速標(biāo)識(shí)優(yōu)先級(jí)等。步驟2、將同一維規(guī)則區(qū)間映射到對(duì)應(yīng)的數(shù)軸上,即將同一維的各規(guī)則對(duì)應(yīng)的區(qū)間均映射到一個(gè)數(shù)軸上,獲取各個(gè)區(qū)間的左端點(diǎn)及其對(duì)應(yīng)的規(guī)則。步驟3、將同一維規(guī)則的各個(gè)區(qū)間左端點(diǎn)按照大小排序。步驟4、取每個(gè)端點(diǎn)的高M(jìn)比特(假設(shè)每個(gè)端點(diǎn)為N比特的數(shù)據(jù),那么0 < M < N, 優(yōu)選取0 < M < N/3)做hash (哈希)運(yùn)算,得到hash結(jié)果hash_idx,將所有hash_idx相同的端點(diǎn)組成一棵2-3樹,得到一個(gè)以上(即一個(gè)或多于一個(gè))的2-3樹,本發(fā)明不限于 2-3樹,還可以為二叉樹和多叉樹等其它任意的樹形數(shù)據(jù)結(jié)構(gòu),并且該樹和普通數(shù)據(jù)結(jié)構(gòu)上的樹不一樣,關(guān)鍵字除了用于確定匹配的規(guī)則外還用于確定搜索路徑,如圖2所示,每個(gè)樹節(jié)點(diǎn)上包括一比特用于指示是中間節(jié)點(diǎn)還是葉子節(jié)點(diǎn),規(guī)則關(guān)鍵字1和規(guī)則關(guān)鍵字2 ;如果是中間節(jié)點(diǎn)(包括根節(jié)點(diǎn))則包含左指針、中間指針和右指針;如果是葉子節(jié)點(diǎn)則包含規(guī)則關(guān)鍵字1對(duì)應(yīng)的規(guī)則索引1,關(guān)鍵字2對(duì)應(yīng)的規(guī)則索引2。2-3樹的生成方法如下1、將hashjdx相同的規(guī)則區(qū)間的左端點(diǎn)按照從小到大排序,然后放在一個(gè)數(shù)組中,記為a [η],其中η為起始端點(diǎn)個(gè)數(shù)減1。2、2_3樹的最底層為葉子層,記為第一層;葉子層的上一層為第二層,依次遞增。 那么第二層每個(gè)節(jié)點(diǎn)的左右端點(diǎn)數(shù)據(jù)從數(shù)組a[n]中提取,從左到右第i個(gè)節(jié)點(diǎn)的左端點(diǎn)為
a[2+6 Xi],右端點(diǎn)為 44+6 Xi],其中 0< log3·^^· 。如果 4+6 X i > n,那么取最
后一個(gè)端點(diǎn)a[n],如圖3所示。3、第三層每個(gè)節(jié)點(diǎn)的左右端點(diǎn)的數(shù)據(jù)從數(shù)組a[n]中提取,從左到右第j個(gè)節(jié)點(diǎn)的左端點(diǎn)為a[6+18 X j],右端點(diǎn)為a[12+18 X j],其中0 S < L1Og3wJ"1, m為第二層總節(jié)點(diǎn)數(shù)。4、第ρ層的每個(gè)節(jié)點(diǎn)的左右端點(diǎn)的數(shù)據(jù)從數(shù)組a[n]中提取,從左到右第k個(gè)節(jié)點(diǎn)的左端點(diǎn)為a[2X 3 (p-幻+2X 3 (p-1) Xk],右端點(diǎn)為3 (p-幻+2X 3 (p_l) Xk],其中 0<k< Llog3^J-I,t為第P-I層總節(jié)點(diǎn)數(shù)。依次類推,直到只有一個(gè)節(jié)點(diǎn)為止。二叉樹和多叉樹的生成方法和2-3樹類似,都是從數(shù)組a[n]提取出相應(yīng)的數(shù)據(jù)組成樹形結(jié)構(gòu)。步驟5、軟件將生成的樹表寫入到硬件對(duì)應(yīng)的規(guī)則表存儲(chǔ)區(qū)中,同時(shí)寫入到對(duì)應(yīng)的備份規(guī)則表存儲(chǔ)區(qū)中,規(guī)則表在存儲(chǔ)區(qū)中的數(shù)據(jù)結(jié)構(gòu)如圖4所示。步驟6、軟件將規(guī)則表對(duì)應(yīng)的動(dòng)作寫入到規(guī)則動(dòng)作表中,每個(gè)條目包括但不限于 ACL規(guī)則(例如指示接收還是丟棄數(shù)據(jù)包)、ACL規(guī)則在該維上的優(yōu)先級(jí)、該維對(duì)應(yīng)的QoS和 QoS優(yōu)先級(jí)、限速標(biāo)識(shí)和限速標(biāo)識(shí)優(yōu)先級(jí)。第二部分ACL規(guī)則的查找步驟1、硬件根據(jù)寄存器的配置提取數(shù)據(jù)包的關(guān)鍵字段組合成待查找關(guān)鍵字,例如提取數(shù)據(jù)包中的輸入端口、目的IP地址和IP優(yōu)先級(jí)TOS組合成{輸入端口,目的IP地址, IP優(yōu)先級(jí)T0S},如果合成的待查找關(guān)鍵字位寬小于N位,可以在關(guān)鍵字的前面補(bǔ)零使其達(dá)到規(guī)則表規(guī)定的位寬。步驟2、取待查找關(guān)鍵字的高M(jìn)比特進(jìn)行hash運(yùn)算,得到一個(gè)索引hashjdx,用該索引找到對(duì)應(yīng)的2-3樹,并用該索引作為規(guī)則表的地址讀取對(duì)應(yīng)的條目。步驟3、判斷該條目是否是葉子節(jié)點(diǎn),如果不是則執(zhí)行步驟4,如果是葉子節(jié)點(diǎn)則執(zhí)行步驟5。步驟4、將待查找關(guān)鍵字和條目中關(guān)鍵字1進(jìn)行比較,如果小于關(guān)鍵字1,則取出該條目的左指針,讀取左指針對(duì)應(yīng)的條目,執(zhí)行步驟3的操作。如果大于或等于關(guān)鍵字1但是小于關(guān)鍵字2,則取出該條目的中間指針,讀取該指針對(duì)應(yīng)的條目,執(zhí)行步驟3的操作。如果待查找關(guān)鍵字大于或等于關(guān)鍵字2,則取出該條目的右指針讀取對(duì)應(yīng)條目并執(zhí)行步驟3的操作。步驟5、如果待查找關(guān)鍵字和葉子節(jié)點(diǎn)的關(guān)鍵字1相等,則數(shù)據(jù)包待查找的關(guān)鍵字和關(guān)鍵字1對(duì)應(yīng)的規(guī)則精確匹配上,否則比較葉子節(jié)點(diǎn)的關(guān)鍵字2是否相等,如果相等則和關(guān)鍵字2對(duì)應(yīng)的規(guī)則精確匹配上,這兩種情況都是完全匹配;如果不相等則查看待查找的關(guān)鍵字是否落在關(guān)鍵字1和關(guān)鍵字2之間,如果是則取該區(qū)間(即關(guān)鍵字1和關(guān)鍵字2之間)對(duì)應(yīng)的規(guī)則作為數(shù)據(jù)包待查找關(guān)鍵字的最長前綴匹配的結(jié)果,如果不是則取大于關(guān)鍵字2的對(duì)應(yīng)規(guī)則作為最長前綴匹配的結(jié)果。步驟6、根據(jù)匹配結(jié)果得到規(guī)則動(dòng)作表的索引,用該索引作為地址讀取規(guī)則動(dòng)作表?xiàng)l目得到對(duì)應(yīng)的規(guī)則。上述描述了數(shù)據(jù)包的一維規(guī)則的匹配過程,對(duì)于多維的匹配(例如輸入端口,目的IP地址和IP優(yōu)先級(jí)TOS組成待查找關(guān)鍵字;輸入端口,源IP地址和IP優(yōu)先級(jí)TOS組成帶查找關(guān)鍵字;輸入端口,VLAN ID和VLAN優(yōu)先級(jí)COS組成待查找關(guān)鍵字;輸入端口,隧道標(biāo)識(shí)ID和隧道優(yōu)先級(jí)EXP組成待查找關(guān)鍵字;輸入端口,偽線標(biāo)識(shí)ID和偽線優(yōu)先級(jí)EXP組成待查找關(guān)鍵字),可以分解為多個(gè)一維規(guī)則的匹配,其匹配的過程和上述描述的匹配方法一致。最后將多個(gè)一維匹配結(jié)果進(jìn)行歸并能夠得到數(shù)據(jù)包對(duì)應(yīng)的多維匹配ACL結(jié)果。多個(gè) (例如K個(gè))ACL規(guī)則表可以配置成同一種規(guī)則,此時(shí)設(shè)備支持的規(guī)則數(shù)是原來的多倍(例如K倍)。第三部分ACL規(guī)則的更新,包括修改、增加和刪除電信級(jí)交換設(shè)備需要能夠連續(xù)不間斷工作并且達(dá)到一個(gè)較小的丟包率,即使在更新ACL規(guī)則表的時(shí)候也不允許丟包,所以本發(fā)明方法引入了規(guī)則備份表。為每一種規(guī)則表提供一個(gè)數(shù)據(jù)結(jié)構(gòu)完全相同的備份表。當(dāng)需要進(jìn)行規(guī)則更新,刪除或增加的時(shí)候,先修改規(guī)則備份表,然后請(qǐng)求硬件查找邏輯切換到備份規(guī)則表中進(jìn)行查找,硬件電路完成切換后通過中斷上報(bào)CPU切換完成,這個(gè)時(shí)候CPU可以更新規(guī)則表。更新完成后將邏輯電路切換回原來的規(guī)則表。其具體方法包括步驟1、根據(jù)新的配置規(guī)則調(diào)整樹表的數(shù)據(jù)結(jié)構(gòu)。步驟2、CPU開始根據(jù)新的樹表配置備份規(guī)則表。步驟3、完成備份規(guī)則表更新后CPU請(qǐng)求硬件切換到備份規(guī)則表上查找。步驟4、硬件完成切換后上報(bào)中斷給CPU,CPU接收到中斷后開始更新規(guī)則表。步驟5、CPU更新完規(guī)則表后請(qǐng)求硬件切切換到規(guī)則表上查找。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)注意的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求記載的技術(shù)方案及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種訪問控制列表實(shí)現(xiàn)裝置,其特征在于,包括訪問控制列表生成模塊、存儲(chǔ)器和訪問控制列表查找模塊其中,所述訪問控制列表生成模塊用于,將同一維的各規(guī)則區(qū)間映射到一個(gè)數(shù)軸上, 分別得到各規(guī)則區(qū)間在該數(shù)軸上的端點(diǎn),并以所述以各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的端點(diǎn)為葉子節(jié)點(diǎn),建立起樹形數(shù)據(jù)結(jié)構(gòu),所述端點(diǎn)指左端點(diǎn)和右端點(diǎn)之一;所述存儲(chǔ)器用于存儲(chǔ)所述樹形數(shù)據(jù)結(jié)構(gòu);所述訪問控制列表查找模塊用于,提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找所述樹形數(shù)據(jù)結(jié)構(gòu),獲取所述待查找數(shù)據(jù)包對(duì)應(yīng)的規(guī)則。
2.根據(jù)權(quán)利要求1所述的訪問控制列表實(shí)現(xiàn)裝置,其特征在于,所述樹形數(shù)據(jù)結(jié)構(gòu)指 2-3樹結(jié)構(gòu)。
3.根據(jù)權(quán)利要求1所述的訪問控制列表實(shí)現(xiàn)裝置,其特征在于,所述樹形數(shù)據(jù)結(jié)構(gòu)指二叉樹結(jié)構(gòu)。
4.根據(jù)權(quán)利要求1所述的訪問控制列表實(shí)現(xiàn)裝置,其特征在于,所述訪問控制列表生成模塊還用于,為所述樹形數(shù)據(jù)結(jié)構(gòu)建立備份,并將其保存于所述存儲(chǔ)器中。
5.根據(jù)權(quán)利要求1所述的訪問控制列表實(shí)現(xiàn)裝置,其特征在于所述以各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的端點(diǎn)為葉子節(jié)點(diǎn),建立起樹形數(shù)據(jù)結(jié)構(gòu),是指分別對(duì)各個(gè)葉子節(jié)點(diǎn)的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,將運(yùn)算結(jié)果相同的葉子節(jié)點(diǎn)組成一個(gè)樹形數(shù)據(jù)結(jié)構(gòu),從而得到一個(gè)以上的樹形數(shù)據(jù)結(jié)構(gòu);所述提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找所述樹形數(shù)據(jù)結(jié)構(gòu),是指對(duì)所述關(guān)鍵字的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,根據(jù)運(yùn)算結(jié)果找到對(duì)應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找;0 <M< N,N為規(guī)則的寬度。
6.根據(jù)權(quán)利要求5所述的訪問控制列表實(shí)現(xiàn)裝置,其特征在于,0< M < N/3。
7.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的訪問控制列表實(shí)現(xiàn)裝置,其特征在于,還包括多維規(guī)則處理模塊;所述多維規(guī)則處理模塊用于,如果所述待查找數(shù)據(jù)包的規(guī)則為多維,則首先將其規(guī)則分解為多個(gè)一維規(guī)則,對(duì)于其中任一個(gè)一維規(guī)則,交由所述訪問控制列表生成模塊和訪問控制列表查找模塊執(zhí)行,然后將得到的所述待查找數(shù)據(jù)包對(duì)應(yīng)的該一維規(guī)則進(jìn)行規(guī)則合并,得到所述待查找數(shù)據(jù)包對(duì)應(yīng)的多維規(guī)則;多維指二維及二維以上。
8.一種訪問控制列表實(shí)現(xiàn)方法,其特征在于,包括如下步驟A、將同一維的各規(guī)則區(qū)間映射到一個(gè)數(shù)軸上,分別得到各規(guī)則區(qū)間在該數(shù)軸上的端點(diǎn),并以各個(gè)規(guī)則對(duì)應(yīng)的區(qū)間的端點(diǎn)為葉子節(jié)點(diǎn),建立樹形數(shù)據(jù)結(jié)構(gòu),并保存所述樹形數(shù)據(jù)結(jié)構(gòu);B、提取待查找數(shù)據(jù)包的關(guān)鍵字,以之查找所述樹形數(shù)據(jù)結(jié)構(gòu),獲取所述待查找數(shù)據(jù)包對(duì)應(yīng)的規(guī)則;所述端點(diǎn)指左端點(diǎn)和右端點(diǎn)之一。
9.根據(jù)權(quán)利要求8所述的訪問控制列表實(shí)現(xiàn)方法,其特征在于,在步驟A中,分別對(duì)各個(gè)葉子節(jié)點(diǎn)的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,將運(yùn)算結(jié)果相同的葉子節(jié)點(diǎn)組成一個(gè)樹形數(shù)據(jù)結(jié)構(gòu),從而得到一個(gè)以上的樹形數(shù)據(jù)結(jié)構(gòu);步驟B中,對(duì)所述關(guān)鍵字的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,根據(jù)運(yùn)算結(jié)果找到對(duì)應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找;0 < M < N,N為規(guī)則的寬度。
10.根據(jù)權(quán)利要求8或9所述的訪問控制列表實(shí)現(xiàn)方法,其特征在于,如果所述待查找數(shù)據(jù)包的規(guī)則為多維,則首先將其規(guī)則分解為多個(gè)一維規(guī)則,對(duì)于其中任一個(gè)一維規(guī)則,執(zhí)行所述步驟A和步驟B,得到所述待查找數(shù)據(jù)包對(duì)應(yīng)的該一維規(guī)則,然后進(jìn)行規(guī)則合并,得到所述待查找數(shù)據(jù)包對(duì)應(yīng)的多維規(guī)則;多維指二維及二維以上。
全文摘要
本發(fā)明公開了一種成本和功耗低的訪問控制列表實(shí)現(xiàn)裝置,包括訪問控制列表生成模塊、存儲(chǔ)器、訪問控制列表查找模塊和多維規(guī)則處理模塊。訪問控制列表生成模塊用于,分別對(duì)各個(gè)規(guī)則區(qū)間左端點(diǎn)的高M(jìn)比特部分進(jìn)行哈希運(yùn)算,將運(yùn)算結(jié)果相同的端點(diǎn)作為葉子節(jié)點(diǎn)組成同一個(gè)樹形數(shù)據(jù)結(jié)構(gòu),得到若干樹形數(shù)據(jù)結(jié)構(gòu)并存儲(chǔ)在存儲(chǔ)器中;訪問控制列表查找模塊用于,提取待查找數(shù)據(jù)包的關(guān)鍵字,對(duì)高M(jìn)比特部分進(jìn)行哈希運(yùn)算,找到對(duì)應(yīng)的樹形數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找,獲取對(duì)應(yīng)的規(guī)則,其中,0<M<N,N為規(guī)則的寬度;多維規(guī)則處理模塊用于,將多維規(guī)則分解為多個(gè)一維規(guī)則,分別查找其規(guī)則,然后將多個(gè)一維規(guī)則進(jìn)行合并。本發(fā)明還相應(yīng)公開了一種訪問控制列表實(shí)現(xiàn)方法。
文檔編號(hào)H04L29/06GK102487374SQ201010567890
公開日2012年6月6日 申請(qǐng)日期2010年12月1日 優(yōu)先權(quán)日2010年12月1日
發(fā)明者陳欽樹 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
视频| 余江县| 民县| 景东| 慈利县| 乐平市| 桐柏县| 瑞昌市| 彩票| 塘沽区| 双江| 政和县| 富源县| 德保县| 崇明县| 清新县| 巩留县| 澄江县| 宿松县| 林口县| 锦屏县| 临泉县| 洛南县| 阳谷县| 临沂市| 察隅县| 扎鲁特旗| 乌拉特前旗| 博白县| 德令哈市| 黔西县| 阜宁县| 铅山县| 德令哈市| 江永县| 观塘区| 云林县| 大城县| 西充县| 历史| 鄂伦春自治旗|