專利名稱:基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)通信領(lǐng)域,尤其涉及一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器(TCAM)實(shí)現(xiàn)組播查表的方法及系統(tǒng)。
背景技術(shù):
隨著Internet的迅速普及與發(fā)展,在網(wǎng)絡(luò)上產(chǎn)生了許多新的高帶寬需求的多媒體應(yīng)用,譬如網(wǎng)絡(luò)音頻/視頻廣播、多媒體遠(yuǎn)程教育等,這就帶來(lái)了帶寬的急劇消耗和網(wǎng)絡(luò)擁擠問(wèn)題。為了緩解網(wǎng)絡(luò)瓶頸,人們提出了各種方案,其中,IP組播技術(shù)以其獨(dú)特的優(yōu)越性(在組播網(wǎng)絡(luò)中,即使用戶數(shù)量成倍增長(zhǎng),主干帶寬不需要隨之增加)使它成為當(dāng)前網(wǎng)絡(luò)技術(shù)中的關(guān)鍵技術(shù)和研究熱點(diǎn)之一。
PIM-SM(Protocol Independent Multicast-Sparse Mode,協(xié)議無(wú)關(guān)組播-松散模式)協(xié)議是各路由器廠商普遍支持的組播路由協(xié)議。PIM-SM通過(guò)建立組播分發(fā)樹進(jìn)行組播包的轉(zhuǎn)發(fā),組播分發(fā)樹分為兩種共享樹(RPT,RendezvousPoint Tree)和最短路徑樹(SPT,Shortest Path Tree),由此,支持PIM-SM協(xié)議的組播轉(zhuǎn)發(fā)表的表項(xiàng)需包括(*,G)和(S,G)兩種,以便于PIM-SM支持從RPT到SPT的切換,其中S代表組播包的源地址,G代表組播包的組地址。
近年來(lái),隨著各路由器廠商和眾多因特網(wǎng)服務(wù)提供商(ISP,Internet ServiceProvider)對(duì)組播的推動(dòng),路由器中實(shí)現(xiàn)對(duì)組播的支持已經(jīng)成為業(yè)界的統(tǒng)一認(rèn)識(shí)。與此同時(shí),路由器端口速率不斷提高,10Gb/s(OC-192)速率的端口已經(jīng)廣泛使用,對(duì)組播而言,這一速率要求路由器能夠每秒鐘轉(zhuǎn)發(fā)高達(dá)數(shù)千萬(wàn)個(gè)組播分組。傳統(tǒng)的基于軟件的路由查找機(jī)制已經(jīng)不能滿足轉(zhuǎn)發(fā)的速率要求。
現(xiàn)有的硬件解決方案是采用三態(tài)地址關(guān)聯(lián)存儲(chǔ)器(TCAM,Ternary ContentAddressable Memory)實(shí)現(xiàn)高速組播轉(zhuǎn)發(fā)表查找,具體的說(shuō),利用TCAM來(lái)存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)前綴,這些前綴通常是以(S,G)或者(*,G)的形式出現(xiàn),利用靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM,Static Random Access Memory)存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)結(jié)果部分,即輸出端口列表部分。其中,組播查表的次序?yàn)橄炔?S,G)表,(S,G)查表如果匹配命中,則直接按照(S,G)輸出查表結(jié)果,查表結(jié)束,否則,需要再查(*,G),如果(*,G)命中,則輸出其查表結(jié)果,如果(*,G)亦未命中,則該組播包不被轉(zhuǎn)發(fā)。
但是,隨著IPv4網(wǎng)絡(luò)到IPv6網(wǎng)絡(luò)的逐步過(guò)渡,即使采用基于TCAM實(shí)現(xiàn)的硬件查表方案,支持PIM-SM協(xié)議的路由器也將難以實(shí)現(xiàn)組播轉(zhuǎn)發(fā)表的線速查找,因?yàn)榻M播查表的速度瓶頸將主要存在于組播查表關(guān)鍵字的輸入時(shí)間。與IPv4的32位地址長(zhǎng)度相比,IPv6采用128位的地址長(zhǎng)度,這樣,組播轉(zhuǎn)發(fā)表前綴的長(zhǎng)度將達(dá)到256位,對(duì)數(shù)據(jù)總線為72位的TCAM而言,需要4個(gè)查表時(shí)鐘周期(Cycle)才能將相應(yīng)的查表關(guān)鍵字輸入至TCAM內(nèi)部。當(dāng)路由器端口速率為10Gb/s時(shí),對(duì)40字節(jié)IP包而言,包線速轉(zhuǎn)發(fā)所允許的最大處理時(shí)間單元僅為32ns,由此,要支持IPv6組播包線速查表,查表時(shí)鐘周期將必須少于8ns,即TCAM查表的時(shí)鐘頻率需至少為125Mhz。
現(xiàn)有的硬件解決方案中最差情形下組播轉(zhuǎn)發(fā)需要串行查找兩次才能得到最終結(jié)果,即首先查找(S,G)表隨后查找(*,G)才能得到查表結(jié)果,這樣將至少需要8個(gè)查表時(shí)鐘周期才能將兩個(gè)查表關(guān)鍵字輸入至TCAM內(nèi)部進(jìn)行查表。這種情況下,若要支持IPv6組播包線速查表,查表時(shí)鐘周期將必須少于4ns,即查表的時(shí)鐘頻率需至少高達(dá)250Mhz。如此高的時(shí)鐘頻率一方面需要更高性能的TCAM支持,不可避免的增大路由器硬件成本,更為重要的是它將給工程實(shí)現(xiàn)帶來(lái)很大困難。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法及系統(tǒng),利用三態(tài)地址關(guān)聯(lián)存儲(chǔ)器所具有的匹配表項(xiàng)的輸出特性一當(dāng)出現(xiàn)多個(gè)表項(xiàng)都匹配的情況時(shí),三態(tài)地址關(guān)聯(lián)存儲(chǔ)器規(guī)定在所有匹配的表項(xiàng)中選取地址最低的表項(xiàng)作為最后的查表結(jié)果輸出,實(shí)現(xiàn)了僅需一次查找即可得出正確的組播查表結(jié)果,從而實(shí)現(xiàn)組播包線速轉(zhuǎn)發(fā)。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供基于一種三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法及系統(tǒng),該方法包括a判斷轉(zhuǎn)發(fā)表中IP報(bào)頭組播是否通過(guò)逆向路徑轉(zhuǎn)發(fā)RPF檢查,如果是,則進(jìn)入步驟b;否則,結(jié)束;b在三態(tài)地址關(guān)聯(lián)存儲(chǔ)器TCAM放置協(xié)議要求的(S,G)表和(*,G)表,(S,G)表的各條表項(xiàng)從該區(qū)域的最低地址起依次放置;(*,G)表的各條表項(xiàng)從該區(qū)域的最高地址起依次放置;將(S,G)表項(xiàng)所對(duì)應(yīng)的所有比特的掩碼應(yīng)設(shè)置為全‘1’,(*,G)表項(xiàng)中的‘*’部分所對(duì)應(yīng)的所有比特的掩碼的應(yīng)設(shè)置為全‘0’,而‘G’部分所對(duì)應(yīng)的所有比特的掩碼的應(yīng)設(shè)置為全‘1’;生成TCAM的查表關(guān)鍵字按照“S&G”形式生成并輸入至TCAM內(nèi)部,而且關(guān)鍵字的輸入需一次即可;c判斷(S,G)表和(*,G)表中是否存在匹配表項(xiàng),如果是,則輸出查表結(jié)果;否則,結(jié)束。
其中,所述步驟a之前進(jìn)一步包括步驟a1判斷轉(zhuǎn)發(fā)表中IP報(bào)頭是否為組播,如果是,則取組播源地址;否則結(jié)束。
其中,所述步驟a1之前進(jìn)一步包括步驟a11判斷轉(zhuǎn)發(fā)表中IP報(bào)頭是否為有效IP包,如果是,則進(jìn)入步驟a12;否則,結(jié)束;a12對(duì)IP包進(jìn)行檢測(cè),如果檢測(cè)通過(guò),則進(jìn)入步驟a1;否則,結(jié)束。
其中,所述步驟a1之后進(jìn)一步包括判斷組播是否為直連,如果是,則按協(xié)議做處理后取組播包入接口;否則,直接取組播包入接口。
其中,所述步驟a1之后進(jìn)一步包括取組播源地址,進(jìn)行單播查表,判斷是否成功,如果是,則進(jìn)入RPF檢查;否則,結(jié)束。
其中,步驟b所述協(xié)議為協(xié)議無(wú)關(guān)組播-松散模式PIM-SM。
所述系統(tǒng)包括路由協(xié)議處理器、交換網(wǎng)絡(luò)、轉(zhuǎn)發(fā)引擎、查表電路、線卡、三態(tài)地址關(guān)聯(lián)存儲(chǔ)器、靜態(tài)隨機(jī)存儲(chǔ)器;路由協(xié)議處理器用于實(shí)現(xiàn)集中式的路由計(jì)算,生成轉(zhuǎn)發(fā)表并下發(fā)至各分布式轉(zhuǎn)發(fā)引擎的從處理器中;交換網(wǎng)絡(luò)用于完成組播包的復(fù)制;線卡用于實(shí)現(xiàn)組播包的分類及復(fù)制;轉(zhuǎn)發(fā)引擎獨(dú)立的用快速的硬件實(shí)現(xiàn)數(shù)據(jù)包的報(bào)頭處理、轉(zhuǎn)發(fā)表查找和轉(zhuǎn)發(fā);三態(tài)地址關(guān)聯(lián)存儲(chǔ)器在滿足本發(fā)明方法的TCAM結(jié)構(gòu)上用于存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)前綴;靜態(tài)隨機(jī)存取存儲(chǔ)器用于存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)結(jié)果部分,即輸出端口列表部分;從而實(shí)現(xiàn)在面向具有分布式轉(zhuǎn)發(fā)、集中式路由處理結(jié)構(gòu)的高性能路由器結(jié)構(gòu)上采用TCAM硬件查表方案實(shí)現(xiàn)數(shù)據(jù)包的報(bào)頭處理、轉(zhuǎn)發(fā)表查找和轉(zhuǎn)發(fā)。
其中,所述查表電路模塊的實(shí)現(xiàn)是基于現(xiàn)場(chǎng)可編程門陣列FPGA來(lái)實(shí)現(xiàn)的,或則基于網(wǎng)絡(luò)處理器NP、特定應(yīng)用集成電路ASIC來(lái)實(shí)現(xiàn)。
以上技術(shù)方案看出,本發(fā)明具有如下有益效果首先,在功能上,該方法等同于(S,G)表、(*,G)表兩次串行查找,實(shí)現(xiàn)了PIM-SM協(xié)議的查表功能需求;其次,在性能上,該方法僅需一次查找即可得出正確的組播查表結(jié)果,使得組播查表所需時(shí)間變?yōu)樽疃?,可更加方便的?shí)現(xiàn)組播轉(zhuǎn)發(fā)表的線速查找;同時(shí),對(duì)組播轉(zhuǎn)發(fā)表需兩次串行查找的問(wèn)題而言,常見的解決方法是利用兩個(gè)獨(dú)立的器件實(shí)現(xiàn)(S,G)表、(*,G)表分離存儲(chǔ),利用兩套獨(dú)立的組播查表電路實(shí)現(xiàn)并行查找,利用結(jié)果判斷電路實(shí)現(xiàn)對(duì)兩個(gè)并行查表結(jié)果的讀取和最終輸出結(jié)果判斷。與上述常見方法相比,本發(fā)明僅需一片TCAM、一套組播查表電路實(shí)現(xiàn)相同功能,還免除了常見方法中所需的結(jié)果判斷電路。從而使得本發(fā)明實(shí)現(xiàn)簡(jiǎn)單,成本低。
圖1是TCAM的查找結(jié)構(gòu)示意圖。
圖2是一實(shí)施例支持PIM-SM協(xié)議的組播包轉(zhuǎn)發(fā)流程圖。
圖3是基于TCAM匹配特性實(shí)現(xiàn)的線速組播查表方法的表項(xiàng)放置示意圖。
圖4是本發(fā)明系統(tǒng)圖。
具體實(shí)施例方式
本發(fā)明為一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法及系統(tǒng),利用三態(tài)地址關(guān)聯(lián)存儲(chǔ)器所具有的匹配表項(xiàng)的輸出特性—當(dāng)出現(xiàn)多個(gè)表項(xiàng)都匹配的情況時(shí),三態(tài)地址關(guān)聯(lián)存儲(chǔ)器規(guī)定在所有匹配的表項(xiàng)中選取地址最低的表項(xiàng)作為最后的查表結(jié)果輸出,實(shí)現(xiàn)了僅需一次查找即可得出正確的組播查表結(jié)果,從而實(shí)現(xiàn)組播包線速轉(zhuǎn)發(fā)。
為便于對(duì)本發(fā)明進(jìn)一步理解,現(xiàn)結(jié)合附圖對(duì)本發(fā)明方法進(jìn)行詳細(xì)描述。
請(qǐng)參閱圖1所示TCAM的查找結(jié)構(gòu)示意圖,本發(fā)明所述方法采用基于TCAM匹配表項(xiàng)的輸出特性實(shí)現(xiàn)組播查表方案,其中TCAM采用了并行查找技術(shù),無(wú)論條目數(shù)量有多大,都可以一次匹配命中,TCAM的優(yōu)點(diǎn)還在于它所保存的表項(xiàng)在長(zhǎng)度要求上非常靈活,可以在同一個(gè)TCAM芯片中保存任意長(zhǎng)度的關(guān)鍵字表項(xiàng)。TCAM中每一個(gè)表項(xiàng)都是以<地址、掩碼>序偶的形式保存,假設(shè)地址關(guān)鍵字的長(zhǎng)度范圍從1到W,那么地址和掩碼分別占用W比特。對(duì)于關(guān)鍵字長(zhǎng)度為Y(1≤Y≤W)的表項(xiàng)來(lái)說(shuō),它的掩碼前Y個(gè)比特為1,而剩下的W-Y比特為0,它的地址后W-Y個(gè)比特可以是0或者1。例如,假設(shè)W為5,那么地址前綴10*就可以用序偶<10000,11000>表示。在表項(xiàng)的匹配查找中,TCAM將查找關(guān)鍵字與其內(nèi)部存儲(chǔ)的各表項(xiàng)相匹配,判斷是否相等,如果相等表示關(guān)鍵字與該表項(xiàng)匹配;否則不匹配。
請(qǐng)參閱圖3所示本發(fā)明方法的表項(xiàng)放置示意圖,TCAM內(nèi)部組播轉(zhuǎn)發(fā)表表項(xiàng)前綴的放置是根據(jù)組播轉(zhuǎn)發(fā)表表項(xiàng)的容量需求劃定TCAM的一個(gè)區(qū)域,用來(lái)放置組播轉(zhuǎn)發(fā)表表項(xiàng)的前綴部分,該區(qū)域能夠存放M+N條組播表項(xiàng),其中地址1至地址M所對(duì)應(yīng)存儲(chǔ)區(qū)域存放的是(S,G)形式的組播表項(xiàng),共能容納M條該形式的表項(xiàng),放置時(shí)要求從地址1起依次放置,其中地址M+1至地址M+N所對(duì)應(yīng)的存儲(chǔ)區(qū)域存放的是(*,G)形式的組播表項(xiàng),共能容納N條該形式的表項(xiàng),放置時(shí)要求從地址M+N起依次放置。M和N可根據(jù)具體的需求設(shè)定。
其中,所述組播轉(zhuǎn)發(fā)表如下表所示表1
同時(shí),在(S,G)表和(*,G)表放置在TCAM內(nèi)部后,還需針對(duì)每一條表項(xiàng)放置相應(yīng)的掩碼,對(duì)應(yīng)圖3中,要求地址1至地址M所對(duì)應(yīng)存儲(chǔ)區(qū)域內(nèi)每條(S,G)表項(xiàng)的掩碼都設(shè)置為‘1’,即(S,G)表項(xiàng)所有比特位都參與TCAM內(nèi)部的并行比較;地址M+1至地址M+N所對(duì)應(yīng)存儲(chǔ)區(qū)域內(nèi)每條(*,G)表項(xiàng)中的‘*’部分所對(duì)應(yīng)的掩碼的都設(shè)置為全‘0’,而‘G’部分所對(duì)應(yīng)的掩碼的都設(shè)置為全‘1’,即(*,G)表項(xiàng)中只有‘G’部分所對(duì)應(yīng)的比特位都參與TCAM內(nèi)部的并行查找。
并且,組播查表電路在生成TCAM的查表關(guān)鍵字時(shí),無(wú)論查找的是(S,G)表或者(*,G)表情況,該方法要求關(guān)鍵字都應(yīng)按照“S&G”格式生成并輸入至TCAM內(nèi)部,而且關(guān)鍵字的輸入僅需一次,即僅需一次查表即可。其中,‘&’代表連接符,‘S’代表該組播包的源地址,‘G’代表該組播包的組地址。
在符合上述結(jié)構(gòu)的TCAM下,如圖2所示一實(shí)施例支持PIM-SM協(xié)議的組播包轉(zhuǎn)發(fā)流程圖,包括步驟201判斷IP報(bào)頭是否為有效IP包,如果是,則轉(zhuǎn)入步驟203;否則,轉(zhuǎn)入步驟202;步驟202將無(wú)效IP包根據(jù)差錯(cuò)做相應(yīng)處理;步驟203對(duì)IP包進(jìn)行安全檢測(cè)是否通過(guò),如果是,則轉(zhuǎn)入步驟205;否則,轉(zhuǎn)入步驟204;步驟204如果IP包未通過(guò)安全檢測(cè),則丟棄該IP包;步驟205對(duì)通過(guò)安全檢測(cè)的IP包,判斷是否為組播,如果是,則轉(zhuǎn)入步驟207,并取組播源地址;否則,轉(zhuǎn)入步驟206;其中,IP數(shù)據(jù)包包括單播(unicast)、廣播(broadcast)和組播(multicast)。
步驟206將不是組播的IP包按照?qǐng)?bào)文類型做相應(yīng)處理;步驟207判斷組播是否為直連,如果是,則轉(zhuǎn)入步驟211;否則,轉(zhuǎn)入步驟210;步驟208~步驟209取組播源地址后,判斷單播查表是否成功,如果是,則轉(zhuǎn)入步驟212;否則,轉(zhuǎn)入步驟214;步驟210如果組播不是直連,取組播包入接口,轉(zhuǎn)入步驟212;步驟211如果組播是直連,按協(xié)議做相應(yīng)處理后轉(zhuǎn)入步驟212;步驟212~步驟213用RPF檢查組播,判斷是否通過(guò),如果是,則轉(zhuǎn)入步驟216;否則,轉(zhuǎn)入步驟215;步驟214單播查表不成功的報(bào)文丟棄;步驟215將沒(méi)有通過(guò)逆向路徑轉(zhuǎn)發(fā)RPF檢查的組播丟棄,并按協(xié)議做相應(yīng)處理;
步驟216判斷(S,G)、(*,G)表中是否存在匹配表項(xiàng),如果是,則轉(zhuǎn)入步驟218;否則,轉(zhuǎn)入步驟217;其中,在判斷(S,G)、(*,G)表中是否存在匹配表項(xiàng)時(shí),可能會(huì)出現(xiàn)如下三種情況情況1、(S,G)表中存在匹配表項(xiàng)的情況,這種情況下,因?yàn)楸景l(fā)明TCAM內(nèi)每條(S,G)表項(xiàng)的掩碼都設(shè)置為‘1’,每條(*,G)表項(xiàng)中的‘*’部分所對(duì)應(yīng)的掩碼的都設(shè)置為全‘0’,而‘G’部分所對(duì)應(yīng)的掩碼的都設(shè)置為全‘1’,即(S,G)表項(xiàng)所有比特位都參與TCAM內(nèi)部的并行比較,而(*,G)表項(xiàng)中只有‘G’部分所對(duì)應(yīng)的比特位都參與TCAM內(nèi)部的并行查找,并且組播查表電路在生成TCAM的查表關(guān)鍵字時(shí),無(wú)論查找的是(S,G)表或者(*,G)表情況,都要求關(guān)鍵字的輸入僅需一次,因此使得TCAM中必然出現(xiàn)(S,G)表和(*,G)表都存在匹配表項(xiàng)的情況。當(dāng)出現(xiàn)多個(gè)表項(xiàng)都匹配的情況時(shí),TCAM規(guī)定在所有匹配的表項(xiàng)中選取地址最低的表項(xiàng)作為最后的查表結(jié)果輸出,這是TCAM重要的匹配特性。同時(shí)由于本發(fā)明根據(jù)組播轉(zhuǎn)發(fā)表表項(xiàng)的容量需求劃定TCAM的一個(gè)區(qū)域,用來(lái)放置組播轉(zhuǎn)發(fā)表表項(xiàng)的前綴部分,還要求在該區(qū)域內(nèi)能夠同時(shí)放置PIM-SM協(xié)議要求的(S,G)表和(*,G)表兩種組播表項(xiàng),并且(S,G)表的各條表項(xiàng)從該區(qū)域的最低地址起依次放置;(*,G)表的各條表項(xiàng)從該區(qū)域的最高地址起依次放置,這樣TCAM輸出的將是基于(S,G)表匹配表項(xiàng)的查表結(jié)果,而(*,G)表匹配表項(xiàng)的查表結(jié)果將被忽略。所以,該情況下本發(fā)明可僅需一次組播查表即能得出正確的(S,G)表的查表結(jié)果。
情況2、(S,G)表中無(wú)匹配表項(xiàng),(*,G)表中存在匹配表項(xiàng)的情況,這種情況下,因?yàn)楸景l(fā)明TCAM結(jié)構(gòu)內(nèi)每條(S,G)表項(xiàng)的掩碼都設(shè)置為‘1’,每條(*,G)表項(xiàng)中的‘*’部分所對(duì)應(yīng)的掩碼的都設(shè)置為全‘0’,而‘G’部分所對(duì)應(yīng)的掩碼的都設(shè)置為全‘1’,即(S,G)表項(xiàng)所有比特位都參與TCAM內(nèi)部的并行比較,而(*,G)表項(xiàng)中只有‘G’部分所對(duì)應(yīng)的比特位都參與TCAM內(nèi)部的并行查找,并且組播查表電路在生成TCAM的查表關(guān)鍵字時(shí),無(wú)論查找的是(S,G)表或者(*,G)表情況,都要求關(guān)鍵字的輸入僅需一次,因此使得TCAM中僅出現(xiàn)(*,G)表存在匹配的表項(xiàng),TCAM輸出的將是基于(*,G)表匹配表項(xiàng)的查表結(jié)果。因此,該情況下本發(fā)明也可僅需一次查表即能得出正確的(*,G)表的查表結(jié)果。
情況3、(S,G)表和(*,G)表中都不存在匹配表項(xiàng)的情況,這種情況下,TCAM中必然也不存在匹配的表項(xiàng),查表結(jié)束,組播包不被轉(zhuǎn)發(fā)。
步驟217對(duì)不匹配的表項(xiàng),丟棄該報(bào)文,并按協(xié)議做相應(yīng)處理;步驟218對(duì)查表得出的匹配的表項(xiàng)實(shí)現(xiàn)轉(zhuǎn)發(fā)。
利用上述所述方法,本發(fā)明還提供一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的系統(tǒng),參閱圖4所示本發(fā)明系統(tǒng)圖。
該系統(tǒng)400包括路由協(xié)議處理器401、交換網(wǎng)絡(luò)402、轉(zhuǎn)發(fā)引擎403、查表電路404、線卡405、三態(tài)地址關(guān)聯(lián)存儲(chǔ)器406、靜態(tài)隨機(jī)存儲(chǔ)器407、轉(zhuǎn)發(fā)引擎408、查表電路409、線卡410、三態(tài)地址關(guān)聯(lián)存儲(chǔ)器411、靜態(tài)隨機(jī)存儲(chǔ)器412;其中403~407單元為一個(gè)查表單元;408~412單元為另一個(gè)查表單元,這兩個(gè)查表單元是獨(dú)立的。
路由協(xié)議處理器401用于實(shí)現(xiàn)集中式的路由計(jì)算,生成轉(zhuǎn)發(fā)表并下發(fā)至各分布式轉(zhuǎn)發(fā)引擎的從處理器中;交換網(wǎng)絡(luò)402用于完成組播包的復(fù)制;轉(zhuǎn)發(fā)引擎403獨(dú)立的用快速的硬件實(shí)現(xiàn)數(shù)據(jù)包的報(bào)頭處理、轉(zhuǎn)發(fā)表查找和轉(zhuǎn)發(fā);線卡405用于實(shí)現(xiàn)組播包的分類及復(fù)制;三態(tài)地址關(guān)聯(lián)存儲(chǔ)器411在滿足本發(fā)明方法的TCAM結(jié)構(gòu)上用于存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)前綴,這些前綴通常是以(S,G)或者(*,G)的形式出現(xiàn);靜態(tài)隨機(jī)存取存儲(chǔ)器407用于存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)結(jié)果部分,即輸出端口列表部分。其中,408~412各單元與403~407各對(duì)應(yīng)單元的功能一致;從而實(shí)現(xiàn)在面向具有分布式轉(zhuǎn)發(fā)、集中式路由處理結(jié)構(gòu)的高性能路由器結(jié)構(gòu)上采用TCAM硬件查表方案實(shí)現(xiàn)數(shù)據(jù)包的報(bào)頭處理、轉(zhuǎn)發(fā)表查找和轉(zhuǎn)發(fā)。
其中,查表電路模塊409的實(shí)現(xiàn)可以是基于FPGA(Field Programable GateArray,現(xiàn)場(chǎng)可編程門陣列)來(lái)實(shí)現(xiàn)的,還可以采用基于NP(Network Processor,網(wǎng)絡(luò)處理器)、ASIC(Application Specific Integrated Circuit,特定應(yīng)用集成電路)等來(lái)實(shí)現(xiàn)。
此外,本實(shí)施例不僅適合于PIM-SM協(xié)議,而且還適合于協(xié)議無(wú)關(guān)組播源特定組播(PIM-SSM Protocol Independent Muiticast-Source Specific Multicast)協(xié)議。
以上對(duì)本發(fā)明所提供的一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員來(lái)說(shuō),依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法,其特征在于,包括步驟a判斷轉(zhuǎn)發(fā)表中IP報(bào)頭組播是否通過(guò)逆向路徑轉(zhuǎn)發(fā)RPF檢查,如果是,則進(jìn)入步驟b;否則,結(jié)束;b在三態(tài)地址關(guān)聯(lián)存儲(chǔ)器TCAM放置協(xié)議要求的(S,G)表和(*,G)表,(S,G)表的各條表項(xiàng)從該區(qū)域的最低地址起依次放置;(*,G)表的各條表項(xiàng)從該區(qū)域的最高地址起依次放置;將(S,G)表項(xiàng)所對(duì)應(yīng)的所有比特的掩碼應(yīng)設(shè)置為全‘1’,(*,G)表項(xiàng)中的‘*’部分所對(duì)應(yīng)的所有比特的掩碼的應(yīng)設(shè)置為全‘0’,而‘G’部分所對(duì)應(yīng)的所有比特的掩碼的應(yīng)設(shè)置為全‘1’;生成TCAM的查表關(guān)鍵字統(tǒng)一按照“S&G”形式生成并輸入至TCAM內(nèi)部,而且關(guān)鍵字的輸入需一次即可;c判斷(S,G)表和(*,G)表中是否存在匹配表項(xiàng),如果是,則輸出查表結(jié)果;否則,結(jié)束。
2.如權(quán)利要求1所述基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法,其特征在于,步驟a之前進(jìn)一步包括步驟a1判斷轉(zhuǎn)發(fā)表中IP報(bào)頭是否為組播,如果是,則取組播源地址;否則結(jié)束。
3.如權(quán)利要求2所述基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法,其特征在于,步驟a1之前進(jìn)一步包括步驟a11判斷轉(zhuǎn)發(fā)表中IP報(bào)頭是否為有效IP包,如果是,則進(jìn)入步驟a12;否則,結(jié)束;a12對(duì)IP包進(jìn)行安全檢測(cè),如果檢測(cè)通過(guò),則進(jìn)入步驟a1;否則,結(jié)束。
4.如權(quán)利要求2所述基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法,其特征在于,步驟a1之后進(jìn)一步包括判斷組播是否為直連,如果是,則按協(xié)議做處理后取組播包入接口;否則,直接取組播包入接口。
5.如權(quán)利要求2所述基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法,其特征在于,步驟a1之后進(jìn)一步包括取組播源地址,進(jìn)行單播查表,判斷是否成功,如果是,則進(jìn)入RPF檢查;否則,結(jié)束。
6.如權(quán)利要求1所述基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的方法,其特征在于,步驟b所述協(xié)議為協(xié)議無(wú)關(guān)組播-松散模式PIM-SM。
7.一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的系統(tǒng),其特征在于,包括路由協(xié)議處理器、交換網(wǎng)絡(luò)、轉(zhuǎn)發(fā)引擎、查表電路、線卡、三態(tài)地址關(guān)聯(lián)存儲(chǔ)器、靜態(tài)隨機(jī)存儲(chǔ)器;路由協(xié)議處理器用于實(shí)現(xiàn)集中式的路由計(jì)算,生成轉(zhuǎn)發(fā)表并下發(fā)至各分布式轉(zhuǎn)發(fā)引擎的從處理器中;交換網(wǎng)絡(luò)用于完成組播包的復(fù)制;線卡用于實(shí)現(xiàn)組播包的分類及復(fù)制;轉(zhuǎn)發(fā)引擎獨(dú)立的用快速的硬件實(shí)現(xiàn)數(shù)據(jù)包的報(bào)頭處理、轉(zhuǎn)發(fā)表查找和轉(zhuǎn)發(fā);三態(tài)地址關(guān)聯(lián)存儲(chǔ)器在滿足本發(fā)明方法的TCAM結(jié)構(gòu)上用于存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)前綴;靜態(tài)隨機(jī)存取存儲(chǔ)器用于存儲(chǔ)組播轉(zhuǎn)發(fā)表的表項(xiàng)結(jié)果部分,即輸出端口列表部分;從而實(shí)現(xiàn)在面向具有分布式轉(zhuǎn)發(fā)、集中式路由處理結(jié)構(gòu)的高性能路由器結(jié)構(gòu)上采用TCAM硬件查表方案實(shí)現(xiàn)數(shù)據(jù)包的報(bào)頭處理、轉(zhuǎn)發(fā)表查找和轉(zhuǎn)發(fā)。
8.如權(quán)利要求7所述基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器實(shí)現(xiàn)組播查表的系統(tǒng),其特征在于,查表電路模塊的實(shí)現(xiàn)是基于現(xiàn)場(chǎng)可編程門陣列FPGA來(lái)實(shí)現(xiàn)的,或則基于網(wǎng)絡(luò)處理器NP、特定應(yīng)用集成電路ASIC來(lái)實(shí)現(xiàn)。
全文摘要
本發(fā)明公開了一種基于三態(tài)地址關(guān)聯(lián)存儲(chǔ)器(TCAM)實(shí)現(xiàn)組播查表的方法及系統(tǒng),該方法包括判斷轉(zhuǎn)發(fā)表中IP報(bào)頭組播是否通過(guò)RPF檢查,如果是,則在TCAM指定區(qū)域內(nèi)放置協(xié)議要求的(S,G)表和(*,G)表,(S,G)表的各條表項(xiàng)從該區(qū)域的最低地址起依次放置;(*,G)表的各條表項(xiàng)從該區(qū)域的最高地址起依次放置;將(S,G)表項(xiàng)對(duì)應(yīng)的所有比特的掩碼設(shè)置為全“1",(*,G)表項(xiàng)中的“*”部分對(duì)應(yīng)的所有比特的掩碼的設(shè)置為全“0”,而“G”部分對(duì)應(yīng)的所有比特的掩碼的設(shè)置為全“1”;生成TCAM的查表關(guān)鍵字則統(tǒng)一按照“S&G”形式生成并輸入至TCAM內(nèi)部,而且關(guān)鍵字的輸入需一次即可;判斷(S,G)表和(*,G)表中是否存在匹配表項(xiàng),如果是,則輸出查表結(jié)果;否則,結(jié)束。
文檔編號(hào)H04L12/54GK1870564SQ20061007650
公開日2006年11月29日 申請(qǐng)日期2006年5月8日 優(yōu)先權(quán)日2006年5月8日
發(fā)明者汪斌強(qiáng), 李玉峰, 伊鵬, 王雨, 韓國(guó)棟 申請(qǐng)人:國(guó)家數(shù)字交換系統(tǒng)工程技術(shù)研究中心