專利名稱:核心路由器上支持訪問(wèn)控制列表功能的雙棧兼容路由查找器的制作方法
技術(shù)領(lǐng)域:
核心路由器中具有訪問(wèn)控制列表功能的雙棧路由查找器屬于因特網(wǎng)主干網(wǎng)核心路由器的
背景技術(shù):
如今在市場(chǎng)上的高端路由器基本上都是使用網(wǎng)絡(luò)處理芯片配合TCAM實(shí)現(xiàn)的路由查找器。各廠家的具體實(shí)現(xiàn)方式各不相同。有的使用專門定制的ASIC芯片,有的使用NP芯片,也有的使用的是FPGA。例如港灣公司的NetHammerG系列路由器使用NP結(jié)合TCAM技術(shù)處理實(shí)現(xiàn),TCAM芯片提供9M容量。
FPGA(Field Programmable Gate Array)是上世紀(jì)80年代末開始使用的大規(guī)??删幊虜?shù)字集成電路器件。它充分利用計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)進(jìn)行器件的開發(fā)與應(yīng)用。用戶借助于計(jì)算機(jī)不僅能自行設(shè)計(jì)專用集成電路芯片,還可在計(jì)算機(jī)上進(jìn)行功能仿真和實(shí)時(shí)仿真,及時(shí)發(fā)現(xiàn)問(wèn)題,調(diào)整電路,改進(jìn)設(shè)計(jì)方案。這樣,設(shè)計(jì)者不必動(dòng)手搭接電路、調(diào)試驗(yàn)證,只須在計(jì)算機(jī)上操作很短的時(shí)間,即可設(shè)計(jì)出與實(shí)際系統(tǒng)相差無(wú)幾的理想電路。而且,F(xiàn)PGA器件采用標(biāo)準(zhǔn)化結(jié)構(gòu),體積小、集成度高、功耗低、速度快,可無(wú)限次反復(fù)編程,因此,成為科研產(chǎn)品開發(fā)及其小型化的首選器件,其應(yīng)用極為廣泛。
CAM(Content Addressable Memory)是目前使用最多的用來(lái)硬件實(shí)現(xiàn)快速的路由查找的器件,CAM能夠在一個(gè)硬件時(shí)鐘周期內(nèi)完成關(guān)鍵字的精確匹配查找。我們常用的隨機(jī)存儲(chǔ)器通過(guò)輸入地址來(lái)返回該地址處所對(duì)應(yīng)的數(shù)據(jù)信息,但是CAM的訪問(wèn)方式不同,它只需要輸入關(guān)鍵字的內(nèi)容,CAM就會(huì)將此關(guān)鍵字與CAM中所有的表項(xiàng)同時(shí)進(jìn)行匹配比較,最后返回匹配表項(xiàng)在CAM中所對(duì)應(yīng)的地址為了能夠使用CAM來(lái)進(jìn)行最長(zhǎng)前綴路由的查找,我們可以為每一類可能的地址前綴長(zhǎng)度使用一個(gè)CAM,每個(gè)CAM保存對(duì)應(yīng)長(zhǎng)度的所有前綴集合。對(duì)于IPv4來(lái)說(shuō),一共需要使用32個(gè)CAM。這種方法有一個(gè)明顯的缺點(diǎn),在對(duì)地址前綴長(zhǎng)度具體分布沒有準(zhǔn)確的了解之前,為了能夠保證能夠存儲(chǔ)N個(gè)前綴表項(xiàng),每個(gè)CAM都需要有N個(gè)表項(xiàng)的空間,因此CAM存儲(chǔ)空間的利用率大大降低了。
為了能夠克服上述方法的缺點(diǎn),又提出了一種CAM實(shí)現(xiàn)機(jī)制—ternary CAM(TCAM),TCAM的優(yōu)點(diǎn)是它所保存的表項(xiàng)在長(zhǎng)度要求上非常靈活,即可以在同一個(gè)TCAM芯片中保存任意長(zhǎng)度的關(guān)鍵字表項(xiàng)。TCAM通過(guò)保存關(guān)鍵字掩碼的方式使得它可以保存任意長(zhǎng)度的關(guān)鍵字表項(xiàng),因此使用TCAM非常適合進(jìn)行最長(zhǎng)前綴路由的查找,目前不少工業(yè)界的廠商都在進(jìn)行對(duì)TCAM的設(shè)計(jì)研究。由于可能存在多個(gè)表項(xiàng)匹配的情況,因此TCAM需要在這些匹配的表項(xiàng)中選取一個(gè)表項(xiàng)作為最后的查找結(jié)果,TCAM規(guī)定在所有匹配的表項(xiàng)中選取地址最低的表項(xiàng)作為最后的結(jié)果。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一個(gè)核心路由器上支持訪問(wèn)控制列表功能的雙棧兼容路由查找器。具體的實(shí)現(xiàn)依靠的是FPGA和TCAM的技術(shù)。通過(guò)將訪問(wèn)控制列表和路由表的有機(jī)結(jié)合使TCAM得到更充分和靈活的利用,并通過(guò)FPGA內(nèi)部的流水線結(jié)構(gòu)設(shè)計(jì)保證線速度的處理能力。
本發(fā)明的特征在于它含有■包預(yù)處理電路組件,簡(jiǎn)稱PPM,它是在大規(guī)模可編程數(shù)字集成電路器件中實(shí)現(xiàn)的,它含有包輸入接口電路,它通過(guò)IP包輸入端口對(duì)IP包進(jìn)行格式轉(zhuǎn)化;包輸入隊(duì)列存儲(chǔ)器,它是一個(gè)先進(jìn)先出隊(duì)列存儲(chǔ)器,它的輸入端與上述包輸入接口電路的IP包輸出端相連,所述IP包的數(shù)據(jù)寬度為32位;包頭處理電路,它的輸入端與上述包輸入隊(duì)列存儲(chǔ)器的IP包輸出端相連;包緩存存儲(chǔ)器,它是上述大規(guī)模可編程數(shù)字集成電路器件中的雙端口靜態(tài)RAM,它的輸入端與上述包頭處理電路的IP包內(nèi)容輸出端相連,它的寫地址由上述包頭處理電路維護(hù);查詢隊(duì)列存儲(chǔ)器,它是一個(gè)先進(jìn)先出隊(duì)列存儲(chǔ)器,它有一個(gè)查找信息寫入端,該寫入端與上述包頭處理電路相應(yīng)的輸出端相應(yīng),當(dāng)包頭處理電路收到一個(gè)完整且正確的IP包后,在若干周期內(nèi)向該寫入端輸入寬度為96位的查找信息;發(fā)送信息隊(duì)列存儲(chǔ)器,它是一個(gè)先入先出隊(duì)列存儲(chǔ)器,它有一個(gè)與上述包頭處理電路相應(yīng)的輸出端相連的上述IP包的信息輸入端,上述包頭處理電路在把查找信息寫入上述查詢隊(duì)列存儲(chǔ)器的同時(shí)向所述發(fā)送信息隊(duì)列存儲(chǔ)器發(fā)送數(shù)據(jù)寬度為60位的上述IP包的信息,其中包括12位包屬性信息、8位v4屬性信息、6位v6屬性信息、2位包尾有效字信息、17位包緩存開始地址、17位包緩存終止地址,v4、v6分別為IPv4、IPv6協(xié)議的簡(jiǎn)寫;CAM接口電路,它的查找信息輸入端與上述查詢隊(duì)列存儲(chǔ)器的輸出端相連,該輸出端輸出具有下列數(shù)據(jù)結(jié)構(gòu)的信息位于第95位至72位的控制CAM接口電路的操作信息,位于第71位至第0位的要由所述CAM接口電路送交CAM數(shù)據(jù)查找總線的信息,其中包括位于第71位至第64位的這一條CAM字的表項(xiàng)類型信息以及第63位至第0位的上述IP包的數(shù)據(jù)內(nèi)容信息;CPU接口電路,它與上述CAM接口電路互連,該CAM接口電路通過(guò)CPU接口電路接收來(lái)自外部CPU的指令,并在查表間隙利用自己內(nèi)部的流水線結(jié)構(gòu)配合下述CAM的時(shí)序關(guān)系在收到所述CPU指令后對(duì)CAM中的數(shù)據(jù)進(jìn)行維護(hù);查詢結(jié)果隊(duì)列存儲(chǔ)器,它的查詢結(jié)果信息輸入端與上述CAM接口電路的相應(yīng)輸出端相連,并接收上述CAM接口電路數(shù)據(jù)結(jié)合上述查詢隊(duì)列存儲(chǔ)器中讀出數(shù)據(jù)的第95位至第72位的控制信息而得到的145位查詢結(jié)果信息,該查詢結(jié)果信息具有下列數(shù)據(jù)結(jié)構(gòu)4位數(shù)據(jù)處理方式信息、5位內(nèi)部協(xié)議信息、8位發(fā)送接口卡號(hào)端口號(hào)以及128位下一跳IP地址;包發(fā)送電路,它的發(fā)送信息輸入端與上述發(fā)送信息隊(duì)列存儲(chǔ)器的相應(yīng)輸出端相連;它的查詢結(jié)果信息輸入端與上述查詢結(jié)果隊(duì)列存儲(chǔ)器相應(yīng)輸出端相連;他的數(shù)據(jù)輸入端在所述包發(fā)送電路收到上述發(fā)送信息和查詢結(jié)果信息后從上述包緩存存儲(chǔ)器的數(shù)據(jù)輸出端讀出數(shù)據(jù);它的數(shù)據(jù)包輸出端與外部的交換網(wǎng)絡(luò)的上述IP包輸入端相連;上交包存儲(chǔ)器,它的輸入端與上述包發(fā)送電路的上述IP包輸出端相連;它的上交IP包輸出端與上述CPU接口電路上交包輸入端相連;在所述的包預(yù)處理電路組件中,所述的包頭處理電路是一個(gè)電路組件,它包含輸入IP包數(shù)據(jù)寄存器,它的輸入端與上述包輸入隊(duì)列存儲(chǔ)器的輸出端相連;32位目的IP地址寄存器v4、32位源IP地址寄存器v4、16位源協(xié)議端口寄存器v4、16位目的協(xié)議端口寄存器v4、8位協(xié)議域寄存器v4、以及4位數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v4,他們的數(shù)據(jù)輸入端分別與上述輸入IP包數(shù)據(jù)寄存器的輸出端相連;路由查詢信息寄存器v4,它的數(shù)據(jù)輸入端與上述目的IP地址寄存器v4的相應(yīng)輸出端相連;訪問(wèn)控制列表即ACL的查詢信息寄存器v4,它的各個(gè)數(shù)據(jù)輸入端分別與上述目的IP地址寄存器v4、源IP地址寄存器v4、源協(xié)議域端口寄存器v4、目的協(xié)議端口寄存器v4、協(xié)議域寄存器v4、數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v4的各相應(yīng)輸出端相連;128位目的IP地址寄存器v6、128位源IP地址寄存器v6、20位流標(biāo)號(hào)寄存器以及4位數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v6,他們的各數(shù)據(jù)輸入端分別與上述輸入IP包數(shù)據(jù)寄存器的各相應(yīng)輸出端相連;路由查詢信息寄存器v6,它的數(shù)據(jù)輸入端與上述目的IP地址寄存器的輸出端相連;ACL查詢信息寄存器v6,它的各輸入端分別與上述源IP地址寄存器v6、流標(biāo)號(hào)寄存器v6、數(shù)據(jù)包進(jìn)入端口號(hào)寄存器v6的相應(yīng)輸出端相連;
查詢信息寄存器,它的各數(shù)據(jù)輸入端分別與上述路由查詢寄存器v4、ACL查詢信息寄存器v4、路由查詢信息寄存器v6、ACL查詢信息寄存器v6的各相應(yīng)輸出端相連;它的查詢信息輸出端與上述查詢隊(duì)列存儲(chǔ)器的相應(yīng)輸入端相連;包附加信息寄存器,它的數(shù)據(jù)輸入端與上述輸入IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;輸出IP包數(shù)據(jù)寄存器,它的數(shù)據(jù)輸入端與上述輸入IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的數(shù)據(jù)輸出端與上述包緩存存儲(chǔ)器的相應(yīng)輸入端相連;包緩存寄存器寫地址寄存器,它的寫地址輸入端與上述輸出IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的地址輸出端與上述包緩存存儲(chǔ)器的相應(yīng)輸入端相連;包緩存起始、終止地址寄存器,它的起始、終止地址輸入端與上述包緩存存儲(chǔ)器的寫地址寄存器的相應(yīng)輸出端相連;內(nèi)部控制狀態(tài)機(jī),它的控制信息輸入端與上述輸入IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的各控制信號(hào)輸出端分別與上述包附加信息寄存器、包緩存起始終止地址寄存器、目的IP地址寄存器v4、源IP地址寄存器v4、源協(xié)議端口寄存器v4、目的協(xié)議端口寄存器v4、協(xié)議域寄存器v4、數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v4、路由查詢信息寄存器v4、ACL查詢信息寄存器v4、目的IP地址寄存器v6、源IP地址寄存器v6、流標(biāo)號(hào)寄存器v6、數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v6、路由查詢信息寄存器v6、ACL查詢信息寄存器v6、查詢信息寄存器的相應(yīng)輸入端相連;發(fā)送信息寄存器,它的各數(shù)據(jù)輸入端分別與上述包附加信息寄存器、包緩存起始、終止地址寄存器的相應(yīng)輸出端相連;它的控制信號(hào)輸入端與上述內(nèi)部控制狀態(tài)機(jī)的相應(yīng)輸出端相連;它的發(fā)送信息輸出端與上述發(fā)送信息隊(duì)列存儲(chǔ)器相應(yīng)輸入端相連;在所述的包預(yù)處理電路組件中,所述的包發(fā)送電路是一個(gè)電路組件,它包含包發(fā)送信息寄存器,它的輸入端與上述發(fā)送信息隊(duì)列寄存器的輸出端相連;包存儲(chǔ)器起始地址寄存器,它的起始地址輸入端與上述包發(fā)送信息寄存器的相應(yīng)輸出端相連;包發(fā)送端口號(hào)寄存器,它的包發(fā)送端口號(hào)輸入端與上述包發(fā)送信息寄存器的相應(yīng)輸出端相連;包存儲(chǔ)器終止地址寄存器,它的終止地址輸入端與上述包發(fā)送信息寄存器的相應(yīng)輸出端相連;附加數(shù)據(jù)寄存器,它的附加數(shù)據(jù)輸入端與上述包發(fā)送端口號(hào)寄存器的相應(yīng)輸出端相連;存儲(chǔ)器下一地址寄存器;比較器,它的兩個(gè)輸入端分別與上述存儲(chǔ)器下一地址寄存器的下一地址輸出端以及上述包存儲(chǔ)器終止地址寄存器的終止地址輸出端相連;第一多路數(shù)據(jù)選擇器,它的各個(gè)數(shù)據(jù)輸入端分別與上述包存儲(chǔ)器起始地址寄存器、附加數(shù)據(jù)寄存器、比較器、存儲(chǔ)器下一地址寄存器的各輸出端相連;包存儲(chǔ)器讀地址寄存器,它的讀地址輸入端與上述第一多路數(shù)據(jù)選擇器的相應(yīng)輸出端相連;它的讀地址輸出端與上述包緩存存儲(chǔ)器的相應(yīng)輸入端相連;+1計(jì)數(shù)器,它的輸入端與上述包存儲(chǔ)器讀地址寄存器的讀地址輸出端相連;它的計(jì)數(shù)輸出端與上述存儲(chǔ)器下一地址寄存器的輸入端相連;IP包數(shù)據(jù)寄存器,它的IP包數(shù)據(jù)輸入端與上述包緩存存儲(chǔ)器的相應(yīng)輸出端相連;第二多路數(shù)據(jù)選擇器,它的兩個(gè)數(shù)據(jù)輸入端分別與上述附加數(shù)據(jù)寄存器、IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的兩個(gè)數(shù)據(jù)輸出端分別與上述上交包存儲(chǔ)器、外部交換協(xié)處理FPGA的數(shù)據(jù)寄存器的輸入端相連;查詢結(jié)果信息寄存器,它的輸入端與上述查詢結(jié)果隊(duì)列寄存器的查詢結(jié)果信息輸出端相連;內(nèi)部控制狀態(tài)機(jī),它的兩個(gè)控制信息輸入端分別與上述查詢結(jié)果信息寄存器和比較器的相應(yīng)輸出端相連;它的三個(gè)控制信號(hào)輸出端分別與上述包發(fā)送信息寄存器、第一多路數(shù)據(jù)選擇器的相應(yīng)輸入端和第二多路數(shù)據(jù)選擇器的相應(yīng)輸入端相連;在所述的包預(yù)處理電路組件中,所述的CAM接口電路是一個(gè)電路組件,它包含查詢信息寄存器、查詢隊(duì)列狀態(tài)寄存器,它們各自的數(shù)據(jù)輸入端分別與上述查詢隊(duì)列存儲(chǔ)器的相應(yīng)輸出端相連;維護(hù)信息寄存器、維護(hù)隊(duì)列狀態(tài)寄存器,它們的指令輸入端分別與上述CPU接口電路輸出端相連;第一多路選擇器,它的兩個(gè)數(shù)據(jù)輸入端分別與上述查詢信息寄存器、維護(hù)信息寄存器的相應(yīng)輸出端相連;CPU讀出數(shù)據(jù)寄存器,它的數(shù)據(jù)輸出端與上述CPU接口電路的相應(yīng)輸入端相連;查詢結(jié)果寄存器,它的查詢結(jié)果信息輸出端與上述查詢結(jié)果隊(duì)列存儲(chǔ)器的相應(yīng)輸入端相連;第二多路選擇器,它的數(shù)據(jù)輸出端與上述CPU讀出數(shù)據(jù)寄存器的數(shù)據(jù)輸入端相連;內(nèi)部控制狀態(tài)機(jī),它的兩個(gè)數(shù)據(jù)輸入端分別與上述查詢隊(duì)列狀態(tài)寄存器、維護(hù)隊(duì)列狀態(tài)寄存器的相應(yīng)輸出端相連;它的各控制信號(hào)輸出端分別與上述第一多路選擇器、第二多路選擇器的相應(yīng)輸入端相連;CAM指令信息寄存器,它的CAM指令信息輸入端與上述第一多路選擇器的相應(yīng)輸出端相連;CAM指令寄存器,它的指令輸入端與上述CAM指令信息寄存器的相應(yīng)輸出端相連;CAM寫入數(shù)據(jù)寄存器,它的CAM寫入數(shù)據(jù)輸入端與上述CAM指令信息寄存器的相應(yīng)輸出端相連;
CAM讀出數(shù)據(jù)寄存器,它的讀出數(shù)據(jù)輸出端與上述第二多路選擇器相應(yīng)輸入端相連;SRAM寫入數(shù)據(jù)寄存器,它的數(shù)據(jù)輸入端與上述CAM指令信息寄存器的相應(yīng)輸出端相連;SRAM讀出數(shù)據(jù)寄存器,它的讀出數(shù)據(jù)輸出端與上述第二多路選擇器的相應(yīng)輸入端相連;它的另一個(gè)讀出數(shù)據(jù)輸出端與上述查詢結(jié)果寄存器的相應(yīng)輸入端相連;CAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元,它的輸入端與上述CAM寫入數(shù)據(jù)寄存器的輸出端相連;它的輸出端與上述CAM讀出數(shù)據(jù)寄存器的輸入端相連;SRAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元,它的輸入端與上述SRAM寫入數(shù)據(jù)寄存器的輸出端相連;它的輸出端與上述SRAM讀出數(shù)據(jù)寄存器的輸入端相連;上述CAM指令信息寄存器、CAM指令寄存器、CAM寫入數(shù)據(jù)寄存器、CAM讀出數(shù)據(jù)寄存器、SRAM寫入數(shù)據(jù)寄存器、SRAM讀出數(shù)據(jù)寄存器、CAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元、SRAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元的各控制信號(hào)輸入端分別與上述內(nèi)部控制狀態(tài)機(jī)的相應(yīng)輸出端相連;同時(shí),上述查詢信息寄存器、維護(hù)信息寄存器、查詢隊(duì)列狀態(tài)寄存器、維護(hù)隊(duì)列狀態(tài)寄存器、CPU讀出數(shù)據(jù)寄存器、查詢結(jié)果寄存器的各控制信號(hào)輸入端分別與上述內(nèi)部控制狀態(tài)機(jī)的各相應(yīng)輸出端相連;在所述的包預(yù)處理電路組件中,所述的CPU接口電路是一個(gè)電路組件,它包含CPU接口電路寫寄存器,它的輸出端與上述CAM接口電路的輸入端相連;CPU接口電路讀寄存器,它的輸入端與上述CAM接口電路的相應(yīng)輸出端相連;上交包存儲(chǔ)器緩存寄存器,它的輸入端與上述上交包存儲(chǔ)器輸出端相連;內(nèi)部控制狀態(tài)機(jī),它的各控制信號(hào)輸出端分別與上述CAM接口電路寫寄存器、CAM接口電路讀寄存器,、上交包存儲(chǔ)器緩存寄存器的相應(yīng)輸入端相連;CPU數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元,它的兩個(gè)數(shù)據(jù)輸入端分別與上述CAM接口電路讀寄存器、上交包存儲(chǔ)器緩存器的輸出端相連;它的數(shù)據(jù)輸出端與上述CAM接口電路寫寄存器的輸入端相連;它同時(shí)又與外部CPU互連;CPU控制信號(hào)寄存器,它的兩個(gè)CPU控制信號(hào)輸出端分別與上述內(nèi)部控制狀態(tài)機(jī)、CPU數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元的相應(yīng)輸入端相連;CPU地址寄存器,它的CPU地址輸入端與上述內(nèi)部控制狀態(tài)機(jī)的相應(yīng)輸入端相連;該CPU地址寄存器又與外部CPU互連;CAM即內(nèi)容可尋址存儲(chǔ)器,它是一個(gè)三態(tài)內(nèi)容可尋址存儲(chǔ)器,即TCAM,它同時(shí)存儲(chǔ)雙棧路由表項(xiàng)和ACL表項(xiàng),每一條表項(xiàng)都僅使用64位的整數(shù)倍來(lái)表示數(shù)據(jù)包的內(nèi)容,剩下的位用于表示此表項(xiàng)的類型;它的一個(gè)輸入端與上述CAM接口電路中的CAM指令寄存器的輸出端相連,而另一個(gè)輸入端與上述CAM接口電路中的CAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元互連;SRAM,它的一個(gè)輸入端與上述CAM的輸出端相連,而另一個(gè)輸入端與上述CAM接口電路中的SRAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元互連。
所述包預(yù)處理電路組件是由一片F(xiàn)PGA構(gòu)成的。
所述的CAM和SRAM分別由兩片IDT75k62100芯片和兩片IDT71t75602芯片構(gòu)成。
實(shí)驗(yàn)效果通過(guò)利用TCAM系統(tǒng)來(lái)構(gòu)造一個(gè)路由和ACL表項(xiàng)并存的查找表,支持表項(xiàng)條數(shù)的動(dòng)態(tài)分配。系統(tǒng)同時(shí)支持IP包的v4/v6雙棧路由查找和IP包的v4/v6雙棧ACL查找。系統(tǒng)不僅保證線速度處理,而且可以在配置使用ACL的情況下幾乎不影響轉(zhuǎn)發(fā)性能。
通過(guò)上述方法,使用一片EP1S25780(FPGA)和級(jí)聯(lián)兩片IDT75k62100(CAM)構(gòu)建的路由查找器最大分別支持256k條v4路由表項(xiàng),128k條v6路由表項(xiàng),128k條v4ACL表項(xiàng)或64k條V6ACL表項(xiàng)。
該路由查找器使用于OC48線路接口卡上可以處理最小32字節(jié)最大32k字節(jié)數(shù)據(jù)包,達(dá)到線速度處理不丟包的性能。路由查找器中ACL查找功能可以被啟動(dòng)或是被屏蔽,當(dāng)啟動(dòng)ACL時(shí)不會(huì)對(duì)路由查找的性能產(chǎn)生不良影響。
圖1 系統(tǒng)方框2 CAM中v4路由表項(xiàng)的數(shù)據(jù)結(jié)構(gòu)圖3 CAM中v6路由表項(xiàng)的數(shù)據(jù)結(jié)構(gòu)圖4 CAM中v4的ACL表項(xiàng)的數(shù)據(jù)結(jié)構(gòu)圖5 CAM中v6的ACL表項(xiàng)的數(shù)據(jù)結(jié)構(gòu)圖6 PPM內(nèi)部功能模塊7 發(fā)送信息隊(duì)列存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)圖8 包頭處理電路內(nèi)部結(jié)構(gòu)9 查詢隊(duì)列存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)圖10 CAM接口電路內(nèi)部結(jié)構(gòu)11 查詢結(jié)果隊(duì)列存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)圖12 包發(fā)送電路內(nèi)部結(jié)構(gòu)13 CPU接口電路內(nèi)部結(jié)構(gòu)圖具體實(shí)施方式
核心路由器中支持訪問(wèn)控制列表功能的雙棧兼容路由查找器的實(shí)現(xiàn)主要在線路接口卡上完成的,這一部分功能是由一片命名為PPM的FPGA配合一組TCAM和一組SRAM芯片完成的。
(1)、PPM及周邊芯片連接關(guān)系。
PPM是Packet Preprocessing Module的簡(jiǎn)寫,意為“包預(yù)處理電路組件”。該電路組件主要功能是提取IP包頭并進(jìn)行分析和處理,PPM接收從高速網(wǎng)絡(luò)接口收到的數(shù)據(jù)包,針對(duì)包類型進(jìn)行處理,提取路由查找所需要的信息及ACL過(guò)濾所需要的信息送交TCAM系統(tǒng)進(jìn)行查找。PPM收到TCAM系統(tǒng)(TCAM+SRAM)返回的查找結(jié)果,根據(jù)結(jié)果決定對(duì)IP包的處理方式(丟棄、轉(zhuǎn)發(fā)或是上交CPU),對(duì)于轉(zhuǎn)發(fā)的數(shù)據(jù)包,PPM完成將該數(shù)據(jù)包送交交換網(wǎng)絡(luò)的功能。此外PPM還負(fù)責(zé)TCAM系統(tǒng)的配置及維護(hù)。
(2)、TCAM的配置。
系統(tǒng)上電后,必須先對(duì)TCAM進(jìn)行初始化,才能使TCAM開始正常工作。由于TCAM本身可以工作在不同的查找寬度下,所以需要對(duì)TCAM進(jìn)行相應(yīng)的設(shè)置。這一點(diǎn)對(duì)于實(shí)現(xiàn)路由和ACL并存的表結(jié)構(gòu)至關(guān)重要。TCAM芯片內(nèi)由多個(gè)bank組成。每個(gè)bank的查找模式都是可配置的。比如bank可配置成72位查找(IPv4路由查找),也可配置成144位查找(IPv6路由查找,或IPv4的ACL查找)或是288位查找(IPv6的ACL查找)。對(duì)于TCAM每個(gè)bank的設(shè)置可以在系統(tǒng)運(yùn)行過(guò)程中動(dòng)態(tài)調(diào)整。
(3)、添加TCAM表項(xiàng)由于在一組TCAM內(nèi)要同時(shí)存儲(chǔ)雙棧路由表項(xiàng)和ACL表項(xiàng),而利用各種表項(xiàng)的表項(xiàng)長(zhǎng)度不同來(lái)進(jìn)行區(qū)分會(huì)帶來(lái)極大的局限性,因?yàn)槟菢訉⒁蟛煌愋偷谋眄?xiàng)必須長(zhǎng)度不同。所以設(shè)計(jì)中采用另外的機(jī)制來(lái)區(qū)分表項(xiàng)的類型。系統(tǒng)使用的TCAM支持的表項(xiàng)長(zhǎng)度是72bit的整數(shù)倍,而在FPGA內(nèi)部處理數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu)是以32bit作為一個(gè)數(shù)據(jù)字,因此系統(tǒng)對(duì)于每一條表項(xiàng)都僅使用64bit的整數(shù)倍來(lái)表示數(shù)據(jù)包的內(nèi)容。剩下的位用于表示表項(xiàng)的類型。
(4)、PPM流水線處理機(jī)制由于PPM的功能是配合TCAM系統(tǒng)來(lái)完成ACL查找和路由查找,并根據(jù)查找的結(jié)果來(lái)對(duì)收到的數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)、丟棄或是上交。因此PPM內(nèi)部處理機(jī)制直接決定著系統(tǒng)的處理能力。在PPM設(shè)計(jì)中,巧妙利用流水線處理技術(shù)從而保證線速度的處理能力,并將加上ACL查找后對(duì)路由查找性能的影響盡量減小。
在核心路由器中具有訪問(wèn)控制列表功能的雙棧路由查找器的實(shí)現(xiàn)中,PPM是最為關(guān)鍵的器件,它完成配合TCAM系統(tǒng)進(jìn)行查找的功能。圖1表示了PPM及其周邊器件的連接關(guān)系。圖6表示的是PPM內(nèi)部的功能模塊圖。
從圖中我們看到,一個(gè)IP包進(jìn)入PPM,首先是由包輸入接口電路進(jìn)行處理。這一電路組件的功能是進(jìn)行數(shù)據(jù)包格式的轉(zhuǎn)化,由于PPM需要配合不同類型的高速網(wǎng)絡(luò)接口,而各種接口的時(shí)序關(guān)系和數(shù)據(jù)結(jié)構(gòu)略有區(qū)別,所以需要一個(gè)電路組件進(jìn)行這方面的處理工作。這一部分功能與路由查找及ACL查找沒有太大的關(guān)系。包輸入接口電路完成對(duì)數(shù)據(jù)包的處理后將IP包寫入數(shù)據(jù)寬度為32位的包輸入隊(duì)列存儲(chǔ)器(先入先出隊(duì)列存儲(chǔ)器)中。
為了能夠?qū)崿F(xiàn)對(duì)IP包的快速處理,PPM內(nèi)部采用流水線和整包緩存的處理機(jī)制,具體過(guò)程如下包頭處理電路從包輸入隊(duì)列存儲(chǔ)器中接收數(shù)據(jù)包,將包的內(nèi)容寫入包緩存存儲(chǔ)器中。包緩存存儲(chǔ)器是一片F(xiàn)PGA內(nèi)部的雙端口靜態(tài)RAM。包頭處理電路在內(nèi)部維護(hù)包緩存存儲(chǔ)器的寫地址。當(dāng)包頭處理電路收到一個(gè)完整并正確的數(shù)據(jù)包后,包頭處理電路會(huì)在之后的若干時(shí)鐘周期內(nèi)將查找信息寫入查詢隊(duì)列存儲(chǔ)器(先入先出隊(duì)列存儲(chǔ)器)中,同時(shí)將該數(shù)據(jù)包的一些信息(包括該包存儲(chǔ)在包緩存存儲(chǔ)器中的起始地址、終止地址等)寫入一個(gè)數(shù)據(jù)寬度為60位的發(fā)送信息隊(duì)列存儲(chǔ)器(先入先出隊(duì)列存儲(chǔ)器)中,具體數(shù)據(jù)結(jié)構(gòu)如圖7。
數(shù)據(jù)包進(jìn)入包頭處理電路后,包頭處理電路將分析IP包頭,提取IP包頭中查找相關(guān)的信息。對(duì)于IPv4數(shù)據(jù)包,ACL查找相關(guān)的信息包括源IP地址(32bit),目的IP地址(32bit),協(xié)議號(hào)(8bit),源端口(16bit),目的端口(16bit),數(shù)據(jù)包進(jìn)入接口卡的接口號(hào)(4bit),共108bit;路由查找關(guān)心的信息是下一跳IP(32bit)。對(duì)于IPv6數(shù)據(jù)包,ACL查找關(guān)心的信息包括源IP地址(128bit)和流標(biāo)號(hào)(20bit),數(shù)據(jù)包進(jìn)入接口卡的接口號(hào)(4bit),共計(jì)152bit;路由查找關(guān)心的信息是下一跳IP(128bit)。這就需要按照一定的方式來(lái)對(duì)TCAM的內(nèi)容進(jìn)行安排。系統(tǒng)中使用的TCAM芯片是IDT75k62100,它是IDT公司生產(chǎn)的TCAM芯片,支持72位,144位,288位和576位的查找。TCAM芯片內(nèi)由多個(gè)bank組成。每個(gè)bank的查找模式都是可配置的。比如bank可配置成72位查找(IPv4路由查找),也可配置成144位查找(IPv6路由查找、IPv4的ACL查找)或是288位查找(IPv6的ACL查找)。
包頭處理電路除提取查找信息外,還要生成送交CAM接口電路的查找數(shù)據(jù)結(jié)構(gòu)。包頭處理電路與CAM接口電路之間通過(guò)寬度為96bit的查詢隊(duì)列存儲(chǔ)器相連,包頭處理電路將查找信息寫入查詢隊(duì)列存儲(chǔ)器中。查詢隊(duì)列存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)如圖9所示。從數(shù)據(jù)結(jié)構(gòu)中可以看出,它包含了兩部分的內(nèi)容bit95-bit72表示的是控制CAM接口電路的操作信息,bit71-bit0表示的是由CAM接口電路送交CAM數(shù)據(jù)總線查找的內(nèi)容。其中bit71-bit0又可以細(xì)分成兩部分bit71-bit64表示的是這一條CAM字的類型,bit63-bit0表示的是IP包的數(shù)據(jù)內(nèi)容。這是與CAM內(nèi)存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)相一致的。圖2、圖3、圖4、圖5分別表示了CAM中存儲(chǔ)的v4路由表項(xiàng)、v6路由表項(xiàng)、v4的ACL表項(xiàng)、v6的ACL表項(xiàng)的數(shù)據(jù)結(jié)構(gòu)。這里對(duì)查詢隊(duì)列存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)按位進(jìn)行簡(jiǎn)單解釋Bit94給CAM數(shù)據(jù)總線輸出有效Bit89給CAM的REQSTBBit88-bit85 給CAM的INSTBit84-bit82 給CAM的LTINBit81-bit78 給CAM的SEGSELBit77-bit72 給CAM的GMASKBit91查找的版本號(hào)
Bit92 ACL查找Bit90 路由查找Bit93 將結(jié)果寫入查詢結(jié)果隊(duì)列存儲(chǔ)器中Bit71 CAM字有效(0表示無(wú)效,1表示有效)Bit70 該表項(xiàng)的版本(0表示v4,1表示v6)Bit69 該表項(xiàng)的類型(0表示路由表項(xiàng),1表示ACL表項(xiàng))Bit63-bit0 IP包中的相關(guān)內(nèi)容數(shù)據(jù)結(jié)構(gòu)中沒有在上面列出來(lái)的位的功能保留。
從上面的數(shù)據(jù)結(jié)構(gòu)中我們可以看出,包頭處理電路已經(jīng)針對(duì)CAM接口時(shí)序設(shè)計(jì)了數(shù)據(jù)結(jié)構(gòu),這就使CAM接口電路變得很簡(jiǎn)練。
在PPM中,CAM接口電路除了要讀出查詢隊(duì)列存儲(chǔ)器中的數(shù)據(jù),完成查找功能外,還要能夠接收來(lái)自CPU的指令對(duì)CAM中的數(shù)據(jù)進(jìn)行維護(hù)。由于數(shù)據(jù)轉(zhuǎn)發(fā)過(guò)程中寫入查詢隊(duì)列存儲(chǔ)器中的數(shù)據(jù)不足以造成CAM一直繁忙,因此可以利用查表的間隙來(lái)完成對(duì)CAM表項(xiàng)維護(hù)工作。CAM接口電路內(nèi)部采用流水線結(jié)構(gòu),它會(huì)配合CAM的時(shí)序關(guān)系完成查表工作,并根據(jù)查詢隊(duì)列存儲(chǔ)器中讀出數(shù)據(jù)的bit95-bit72的控制信息來(lái)完成更新查找結(jié)果和將查找結(jié)果寫入145bit的查詢結(jié)果隊(duì)列存儲(chǔ)器中的工作,其數(shù)據(jù)結(jié)構(gòu)見圖11。
包發(fā)送電路是PPM中完成包發(fā)送的電路組件,它的功能是從發(fā)送信息隊(duì)列存儲(chǔ)器中讀出包頭處理電路發(fā)來(lái)的發(fā)送信息,同時(shí)從查詢結(jié)果隊(duì)列存儲(chǔ)器中讀出查CAM所得的結(jié)果信息,并根據(jù)這些信息來(lái)從包緩存存儲(chǔ)器中讀出數(shù)據(jù),完成將數(shù)據(jù)包上交給軟件的工作或是送交交換網(wǎng)絡(luò)進(jìn)行轉(zhuǎn)發(fā)的工作。
CPU接口電路完成PPM內(nèi)部其他電路組件與線路接口卡上的CPU通訊的功能。在PPM中,CPU接口電路除了要實(shí)現(xiàn)CPU與CAM接口電路的通訊功能外還要實(shí)現(xiàn)CPU讀取PPM內(nèi)部上交給CPU的數(shù)據(jù)包的數(shù)據(jù)通道。
為了能夠保證流水線和整包緩存機(jī)制的正確性,必須對(duì)PPM內(nèi)部的包緩存存儲(chǔ)器的容量及各個(gè)隊(duì)列存儲(chǔ)器的深度進(jìn)行限制。為了能夠使PPM處理最小21字節(jié),最大32k字節(jié)的數(shù)據(jù)包。包緩存存儲(chǔ)器必須保證至少存儲(chǔ)兩個(gè)最大包的空間,也就是64k字節(jié)。此外,PPM內(nèi)部對(duì)于21字節(jié)包的處理需要6(數(shù)據(jù)包以32bit寬度進(jìn)行處理是6個(gè)32位字)+3(PPM內(nèi)部處理開銷)個(gè)時(shí)鐘周期,對(duì)于32k包的處理需要8k+3個(gè)時(shí)鐘周期。這樣包發(fā)送電路在處理一個(gè)32k數(shù)據(jù)包的過(guò)程中,包頭處理電路最多處理(8k+3)/(6+3)個(gè)數(shù)據(jù)包。所以發(fā)送信息隊(duì)列存儲(chǔ)器的深度取1k就可以滿足需求。又因?yàn)镃AM接口電路是采用流水線處理方式,所以查詢結(jié)果隊(duì)列存儲(chǔ)器的深度也應(yīng)該取1k以滿足需求。
權(quán)利要求
1.核心路由器中具有訪問(wèn)控制列表功能的雙棧路由查找器,其特征在于它含有包預(yù)處理電路組件,簡(jiǎn)稱PPM,它是在大規(guī)??删幊虜?shù)字集成電路器件中實(shí)現(xiàn)的,它含有◆包輸入接口電路,它通過(guò)IP包輸入端口對(duì)IP包進(jìn)行格式轉(zhuǎn)化;◆包輸入隊(duì)列存儲(chǔ)器,它是一個(gè)先進(jìn)先出隊(duì)列存儲(chǔ)器,它的輸入端與上述包輸入接口電路的IP包輸出端相連,所述IP包的數(shù)據(jù)寬度為32位;◆包頭處理電路,它的輸入端與上述包輸入隊(duì)列存儲(chǔ)器的IP包輸出端相連;◆包緩存存儲(chǔ)器,它是上述大規(guī)??删幊虜?shù)字集成電路器件中的雙端口靜態(tài)RAM,它的輸入端與上述包頭處理電路的IP包內(nèi)容輸出端相連,它的寫地址由上述包頭處理電路維護(hù);◆查詢隊(duì)列存儲(chǔ)器,它是一個(gè)先進(jìn)先出隊(duì)列存儲(chǔ)器,它有一個(gè)查找信息寫入端,該寫入端與上述包頭處理電路相應(yīng)的輸出端相應(yīng),當(dāng)包頭處理電路收到一個(gè)完整且正確的IP包后,在若干周期內(nèi)向該寫入端輸入寬度為96位的查找信息;◆發(fā)送信息隊(duì)列存儲(chǔ)器,它是一個(gè)先入先出隊(duì)列存儲(chǔ)器,它有一個(gè)與上述包頭處理電路相應(yīng)的輸出端相連的上述IP包的信息輸入端,上述包頭處理電路在把查找信息寫入上述查詢隊(duì)列存儲(chǔ)器的同時(shí)向所述發(fā)送信息隊(duì)列存儲(chǔ)器發(fā)送數(shù)據(jù)寬度為60位的上述IP包的信息,其中包括12位包屬性信息、8位v4屬性信息、6位v6屬性信息、2位包尾有效字信息、17位包緩存開始地址、17位包緩存終止地址,v4、v6分別為IPv4、IPv6協(xié)議的簡(jiǎn)寫;◆CAM接口電路,它的查找信息輸入端與上述查詢隊(duì)列存儲(chǔ)器的輸出端相連,該輸出端輸出具有下列數(shù)據(jù)結(jié)構(gòu)的信息位于第95位至72位的控制CAM接口電路的操作信息,位于第71位至第0位的要由所述CAM接口電路送交CAM數(shù)據(jù)查找總線的信息,其中包括位于第71位至第64位的這一條CAM字的表項(xiàng)類型信息以及第63位至第0位的上述IP包的數(shù)據(jù)內(nèi)容信息;◆CPU接口電路,它與上述CAM接口電路互連,該CAM接口電路通過(guò)CPU接口電路接收來(lái)自外部CPU的指令,并在查表間隙利用自己內(nèi)部的流水線結(jié)構(gòu)配合下述CAM的時(shí)序關(guān)系在收到所述CPU指令后對(duì)CAM中的數(shù)據(jù)進(jìn)行維護(hù);◆查詢結(jié)果隊(duì)列存儲(chǔ)器,它的查詢結(jié)果信息輸入端與上述CAM接口電路的相應(yīng)輸出端相連,并接收上述CAM接口電路數(shù)據(jù)結(jié)合上述查詢隊(duì)列存儲(chǔ)器中讀出數(shù)據(jù)的第95位至第72位的控制信息而得到的145位查詢結(jié)果信息,該查詢結(jié)果信息具有下列數(shù)據(jù)結(jié)構(gòu)4位數(shù)據(jù)處理方式信息、5位內(nèi)部協(xié)議信息、8位發(fā)送接口卡號(hào)端口號(hào)以及128位下一跳IP地址;◆包發(fā)送電路,它的發(fā)送信息輸入端與上述發(fā)送信息隊(duì)列存儲(chǔ)器的相應(yīng)輸出端相連;它的查詢結(jié)果信息輸入端與上述查詢結(jié)果隊(duì)列存儲(chǔ)器相應(yīng)輸出端相連;他的數(shù)據(jù)輸入端在所述包發(fā)送電路收到上述發(fā)送信息和查詢結(jié)果信息后從上述包緩存存儲(chǔ)器的數(shù)據(jù)輸出端讀出數(shù)據(jù);它的數(shù)據(jù)包輸出端與外部的交換網(wǎng)絡(luò)的上述IP包輸入端相連;◆上交包存儲(chǔ)器,它的輸入端與上述包發(fā)送電路的上述IP包輸出端相連;它的上交IP包輸出端與上述CPU接口電路上交包輸入端相連;◆在所述的包預(yù)處理電路組件中,所述的包頭處理電路是一個(gè)電路組件,它包含●輸入IP包數(shù)據(jù)寄存器,它的輸入端與上述包輸入隊(duì)列存儲(chǔ)器的輸出端相連;●32位目的IP地址寄存器v4、32位源IP地址寄存器v4、16位源協(xié)議端口寄存器v4、16位目的協(xié)議端口寄存器v4、8位協(xié)議域寄存器v4、以及4位數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v4,他們的數(shù)據(jù)輸入端分別與上述輸入IP包數(shù)據(jù)寄存器的輸出端相連;●路由查詢信息寄存器v4,它的數(shù)據(jù)輸入端與上述目的IP地址寄存器v4的相應(yīng)輸出端相連;●訪問(wèn)控制列表即ACL的查詢信息寄存器v4,它的各個(gè)數(shù)據(jù)輸入端分別與上述目的IP地址寄存器v4、源IP地址寄存器v4、源協(xié)議域端口寄存器v4、目的協(xié)議端口寄存器v4、協(xié)議域寄存器v4、數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v4的各相應(yīng)輸出端相連;●128位目的IP地址寄存器v6、128位源IP地址寄存器v6、20位流標(biāo)號(hào)寄存器以及4位數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v6,他們的各數(shù)據(jù)輸入端分別與上述輸入IP包數(shù)據(jù)寄存器的各相應(yīng)輸出端相連;●路由查詢信息寄存器v6,它的數(shù)據(jù)輸入端與上述目的IP地址寄存器的輸出端相連;●ACL查詢信息寄存器v6,它的各輸入端分別與上述源IP地址寄存器v6、流標(biāo)號(hào)寄存器v6、數(shù)據(jù)包進(jìn)入端口號(hào)寄存器v6的相應(yīng)輸出端相連;●查詢信息寄存器,它的各數(shù)據(jù)輸入端分別與上述路由查詢寄存器v4、ACL查詢信息寄存器v4、路由查詢信息寄存器v6、ACL查詢信息寄存器v6的各相應(yīng)輸出端相連;它的查詢信息輸出端與上述查詢隊(duì)列存儲(chǔ)器的相應(yīng)輸入端相連;●包附加信息寄存器,它的數(shù)據(jù)輸入端與上述輸入IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;●輸出IP包數(shù)據(jù)寄存器,它的數(shù)據(jù)輸入端與上述輸入IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的數(shù)據(jù)輸出端與上述包緩存存儲(chǔ)器的相應(yīng)輸入端相連;●包緩存寄存器寫地址寄存器,它的寫地址輸入端與上述輸出IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的地址輸出端與上述包緩存存儲(chǔ)器的相應(yīng)輸入端相連;●包緩存起始、終止地址寄存器,它的起始、終止地址輸入端與上述包緩存存儲(chǔ)器的寫地址寄存器的相應(yīng)輸出端相連;●內(nèi)部控制狀態(tài)機(jī),它的控制信息輸入端與上述輸入IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的各控制信號(hào)輸出端分別與上述包附加信息寄存器、包緩存起始終止地址寄存器、目的IP地址寄存器v4、源IP地址寄存器v4、源協(xié)議端口寄存器v4、目的協(xié)議端口寄存器v4、協(xié)議域寄存器v4、數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v4、路由查詢信息寄存器v4、ACL查詢信息寄存器v4、目的IP地址寄存器v6、源IP地址寄存器v6、流標(biāo)號(hào)寄存器v6、數(shù)據(jù)包進(jìn)入接口號(hào)寄存器v6、路由查詢信息寄存器v6、ACL查詢信息寄存器v6、查詢信息寄存器的相應(yīng)輸入端相連;●發(fā)送信息寄存器,它的各數(shù)據(jù)輸入端分別與上述包附加信息寄存器、包緩存起始、終止地址寄存器的相應(yīng)輸出端相連;它的控制信號(hào)輸入端與上述內(nèi)部控制狀態(tài)機(jī)的相應(yīng)輸出端相連;它的發(fā)送信息輸出端與上述發(fā)送信息隊(duì)列存儲(chǔ)器相應(yīng)輸入端相連;◆在所述的包預(yù)處理電路組件中,所述的包發(fā)送電路是一個(gè)電路組件,它包含●包發(fā)送信息寄存器,它的輸入端與上述發(fā)送信息隊(duì)列寄存器的輸出端相連;●包存儲(chǔ)器起始地址寄存器,它的起始地址輸入端與上述包發(fā)送信息寄存器的相應(yīng)輸出端相連;●包發(fā)送端口號(hào)寄存器,它的包發(fā)送端口號(hào)輸入端與上述包發(fā)送信息寄存器的相應(yīng)輸出端相連;●包存儲(chǔ)器終止地址寄存器,它的終止地址輸入端與上述包發(fā)送信息寄存器的相應(yīng)輸出端相連;●附加數(shù)據(jù)寄存器,它的附加數(shù)據(jù)輸入端與上述包發(fā)送端口號(hào)寄存器的相應(yīng)輸出端相連;●存儲(chǔ)器下一地址寄存器;●比較器,它的兩個(gè)輸入端分別與上述存儲(chǔ)器下一地址寄存器的下一地址輸出端以及上述包存儲(chǔ)器終止地址寄存器的終止地址輸出端相連;●第一多路數(shù)據(jù)選擇器,它的各個(gè)數(shù)據(jù)輸入端分別與上述包存儲(chǔ)器起始地址寄存器、附加數(shù)據(jù)寄存器、比較器、存儲(chǔ)器下一地址寄存器的各輸出端相連;●包存儲(chǔ)器讀地址寄存器,它的讀地址輸入端與上述第一多路數(shù)據(jù)選擇器的相應(yīng)輸出端相連;它的讀地址輸出端與上述包緩存存儲(chǔ)器的相應(yīng)輸入端相連;●+1計(jì)數(shù)器,它的輸入端與上述包存儲(chǔ)器讀地址寄存器的讀地址輸出端相連;它的計(jì)數(shù)輸出端與上述存儲(chǔ)器下一地址寄存器的輸入端相連;●IP包數(shù)據(jù)寄存器,它的IP包數(shù)據(jù)輸入端與上述包緩存存儲(chǔ)器的相應(yīng)輸出端相連;●第二多路數(shù)據(jù)選擇器,它的兩個(gè)數(shù)據(jù)輸入端分別與上述附加數(shù)據(jù)寄存器、IP包數(shù)據(jù)寄存器的相應(yīng)輸出端相連;它的兩個(gè)數(shù)據(jù)輸出端分別與上述上交包存儲(chǔ)器、外部交換協(xié)處理FPGA的數(shù)據(jù)寄存器的輸入端相連;●查詢結(jié)果信息寄存器,它的輸入端與上述查詢結(jié)果隊(duì)列寄存器的查詢結(jié)果信息輸出端相連;●內(nèi)部控制狀態(tài)機(jī),它的兩個(gè)控制信息輸入端分別與上述查詢結(jié)果信息寄存器和比較器的相應(yīng)輸出端相連;它的三個(gè)控制信號(hào)輸出端分別與上述包發(fā)送信息寄存器、第一多路數(shù)據(jù)選擇器的相應(yīng)輸入端和第二多路數(shù)據(jù)選擇器的相應(yīng)輸入端相連;◆在所述的包預(yù)處理電路組件中,所述的CAM接口電路是一個(gè)電路組件,它包含●查詢信息寄存器、查詢隊(duì)列狀態(tài)寄存器,它們各自的數(shù)據(jù)輸入端分別與上述查詢隊(duì)列存儲(chǔ)器的相應(yīng)輸出端相連;●維護(hù)信息寄存器、維護(hù)隊(duì)列狀態(tài)寄存器,它們的指令輸入端分別與上述CPU接口電路輸出端相連;●第一多路選擇器,它的兩個(gè)數(shù)據(jù)輸入端分別與上述查詢信息寄存器、維護(hù)信息寄存器的相應(yīng)輸出端相連;●CPU讀出數(shù)據(jù)寄存器,它的數(shù)據(jù)輸出端與上述CPU接口電路的相應(yīng)輸入端相連;●查詢結(jié)果寄存器,它的查詢結(jié)果信息輸出端與上述查詢結(jié)果隊(duì)列存儲(chǔ)器的相應(yīng)輸入端相連;●第二多路選擇器,它的數(shù)據(jù)輸出端與上述CPU讀出數(shù)據(jù)寄存器的數(shù)據(jù)輸入端相連;●內(nèi)部控制狀態(tài)機(jī),它的兩個(gè)數(shù)據(jù)輸入端分別與上述查詢隊(duì)列狀態(tài)寄存器、維護(hù)隊(duì)列狀態(tài)寄存器的相應(yīng)輸出端相連;它的各控制信號(hào)輸出端分別與上述第一多路選擇器、第二多路選擇器的相應(yīng)輸入端相連;●CAM指令信息寄存器,它的CAM指令信息輸入端與上述第一多路選擇器的相應(yīng)輸出端相連;●CAM指令寄存器,它的指令輸入端與上述CAM指令信息寄存器的相應(yīng)輸出端相連;●CAM寫入數(shù)據(jù)寄存器,它的CAM寫入數(shù)據(jù)輸入端與上述CAM指令信息寄存器的相應(yīng)輸出端相連;●CAM讀出數(shù)據(jù)寄存器,它的讀出數(shù)據(jù)輸出端與上述第二多路選擇器相應(yīng)輸入端相連;●SRAM寫入數(shù)據(jù)寄存器,它的數(shù)據(jù)輸入端與上述CAM指令信息寄存器的相應(yīng)輸出端相連;●SRAM讀出數(shù)據(jù)寄存器,它的讀出數(shù)據(jù)輸出端與上述第二多路選擇器的相應(yīng)輸入端相連;它的另一個(gè)讀出數(shù)據(jù)輸出端與上述查詢結(jié)果寄存器的相應(yīng)輸入端相連;●CAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元,它的輸入端與上述CAM寫入數(shù)據(jù)寄存器的輸出端相連;它的輸出端與上述CAM讀出數(shù)據(jù)寄存器的輸入端相連;●SRAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元,它的輸入端與上述SRAM寫入數(shù)據(jù)寄存器的輸出端相連;它的輸出端與上述SRAM讀出數(shù)據(jù)寄存器的輸入端相連;●上述CAM指令信息寄存器、CAM指令寄存器、CAM寫入數(shù)據(jù)寄存器、CAM讀出數(shù)據(jù)寄存器、SRAM寫入數(shù)據(jù)寄存器、SRAM讀出數(shù)據(jù)寄存器、CAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元、SRAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元的各控制信號(hào)輸入端分別與上述內(nèi)部控制狀態(tài)機(jī)的相應(yīng)輸出端相連;同時(shí),上述查詢信息寄存器、維護(hù)信息寄存器、查詢隊(duì)列狀態(tài)寄存器、維護(hù)隊(duì)列狀態(tài)寄存器、CPU讀出數(shù)據(jù)寄存器、查詢結(jié)果寄存器的各控制信號(hào)輸入端分別與上述內(nèi)部控制狀態(tài)機(jī)的各相應(yīng)輸出端相連;◆在所述的包預(yù)處理電路組件中,所述的CPU接口電路是一個(gè)電路組件,它包含●CPU接口電路寫寄存器,它的輸出端與上述CAM接口電路的輸入端相連;●CPU接口電路讀寄存器,它的輸入端與上述CAM接口電路的相應(yīng)輸出端相連;●上交包存儲(chǔ)器緩存寄存器,它的輸入端與上述上交包存儲(chǔ)器輸出端相連;●內(nèi)部控制狀態(tài)機(jī),它的各控制信號(hào)輸出端分別與上述CAM接口電路寫寄存器、CAM接口電路讀寄存器,、上交包存儲(chǔ)器緩存寄存器的相應(yīng)輸入端相連;●CPU數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元,它的兩個(gè)數(shù)據(jù)輸入端分別與上述CAM接口電路讀寄存器、上交包存儲(chǔ)器緩存器的輸出端相連;它的數(shù)據(jù)輸出端與上述CAM接口電路寫寄存器的輸入端相連;它同時(shí)又與外部CPU互連;●CPU控制信號(hào)寄存器,它的兩個(gè)CPU控制信號(hào)輸出端分別與上述內(nèi)部控制狀態(tài)機(jī)、CPU數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元的相應(yīng)輸入端相連;●CPU地址寄存器,它的CPU地址輸入端與上述內(nèi)部控制狀態(tài)機(jī)的相應(yīng)輸入端相連;該CPU地址寄存器又與外部CPU互連;■CAM即內(nèi)容可尋址存儲(chǔ)器,它是一個(gè)三態(tài)內(nèi)容可尋址存儲(chǔ)器,即TCAM,它同時(shí)存儲(chǔ)雙棧路由表項(xiàng)和ACL表項(xiàng),每一條表項(xiàng)都僅使用64位的整數(shù)倍來(lái)表示數(shù)據(jù)包的內(nèi)容,剩下的位用于表示此表項(xiàng)的類型;它的一個(gè)輸入端與上述CAM接口電路中的CAM指令寄存器的輸出端相連,而另一個(gè)輸入端與上述CAM接口電路中的CAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元互連;■SRAM,它的一個(gè)輸入端與上述CAM的輸出端相連,而另一個(gè)輸入端與上述CAM接口電路中的SRAM數(shù)據(jù)總線三態(tài)調(diào)度邏輯單元互連。
2.根據(jù)權(quán)利要求1所述的核心路由器上支持訪問(wèn)控制列表功能的雙棧兼容路由查找器,其特征在于所述包預(yù)處理電路組件是由一片F(xiàn)PGA構(gòu)成的。
3.根據(jù)權(quán)利要求1所述的核心路由器上支持訪問(wèn)控制列表功能的雙棧兼容路由查找器,其特征在于所述的CAM和SRAM分別由兩片IDT75k62100芯片和兩片IDT71t75602芯片構(gòu)成。
全文摘要
核心路由器上支持訪問(wèn)控制列表功能的雙棧兼容路由查找器屬于因特網(wǎng)主干網(wǎng)核心路由器硬件技術(shù)領(lǐng)域。其特征在于它是由一片F(xiàn)PGA構(gòu)成的包預(yù)處理電路組件和級(jí)聯(lián)兩片CAM和SRAM構(gòu)成的,它通過(guò)利用TCAM系統(tǒng)來(lái)構(gòu)造一個(gè)路由和ACL表項(xiàng)共存的查找表,支持表項(xiàng)條數(shù)的動(dòng)態(tài)分配;包預(yù)處理電路組件接收數(shù)據(jù)包后對(duì)包類型進(jìn)行處理,提取路由查找所需要信息及ACL過(guò)濾所需要信息,送交TCAM系統(tǒng)進(jìn)行查找,再根據(jù)返回的查找結(jié)果決定處理包的方式,對(duì)于轉(zhuǎn)發(fā)的數(shù)據(jù)包,則送交交換網(wǎng)絡(luò),同時(shí)他還負(fù)責(zé)TCAM系統(tǒng)的讀寫及維護(hù)功能。系統(tǒng)不僅保證線速度處理,而且在使用ACL的情況下幾乎不影響轉(zhuǎn)發(fā)性能。
文檔編號(hào)H04L12/56GK1655534SQ20051001135
公開日2005年8月17日 申請(qǐng)日期2005年2月25日 優(yōu)先權(quán)日2005年2月25日
發(fā)明者趙有健, 關(guān)洪濤, 吳建平, 張小平, 樂祖暉 申請(qǐng)人:清華大學(xué)