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