本發(fā)明涉及數(shù)據(jù)通信領域,尤指一種實現(xiàn)路由查找的方法及裝置。
背景技術:
在數(shù)據(jù)通信領域,隨著應用場景越來越復雜,路由器的路由查找基于需求的不同,路由查找實現(xiàn)種類多樣。
高端路由器多采用基于三態(tài)內(nèi)容尋址存儲器(TCAM)的高速路由查找方法。處理器采用單對單的方式訪問TCAM芯片,通過包含有關鍵字(KEY)的路由查找命令查找命中相應的索引(INDEX),處理器根據(jù)索引從DDR中獲得路由查找所需要的數(shù)據(jù)(DATA),以完成路由查找。高端路由器包含有多個處理器的網(wǎng)絡,按照單對單的方式需要為路由查找配置與處理器個數(shù)相同的多個TCAM芯片,且針對各處理器的路由查找均需分配相應的帶寬資源。
現(xiàn)有的高端路由器的路由查找采用多個TCAM芯片,浪費了TCAM的工作性能,每一處理器均需要分配相應的網(wǎng)絡帶寬,造成了帶寬資源的浪費;另外,多個TCAM芯片的引入造成設備引腳過多,影響工業(yè)生產(chǎn),及多個TCAM芯片也帶來成本過高的問題。
技術實現(xiàn)要素:
為了解決上述技術問題,本發(fā)明提供一種實現(xiàn)路由查找的方法及裝置,能夠合理利用TCAM芯片性能,節(jié)省網(wǎng)絡帶寬。
為了達到本發(fā)明目的,本發(fā)明提供了一種實現(xiàn)路由查找的方法,包括:
接收并存儲來自各處理器的路由查找命令;
根據(jù)預設的優(yōu)先級逐個讀取存儲的路由查找命令;
將讀取的路由查找命令通過預設的路由查找的有效帶寬訪問共用的三態(tài) 內(nèi)容尋址存儲器TCAM芯片,以進行路由查找。
進一步地,接收并存儲各處理器的路由查找命令具體包括:
通過現(xiàn)場可編程門陣列FPGA上的預先設置的接口分別與高端路由器上各所述處理器分別連接后,接收各所述處理器的所述路由查找命令;
對接收的來自各處理器的所述路由查找命令,以隊列的形式在FPGA的存儲介質(zhì)上分別存儲。
進一步地,預先設置的接口為:
四倍數(shù)據(jù)速率靜態(tài)隨機存取存儲器QDR接口、雙倍速率同步動態(tài)隨機存儲器DDR接口或TCAM接口。
進一步地,接收并存儲來自各處理器的路由查找命令具體包括:
對各處理器,分別通過所述預先設置的接口接收路由查找命令;
按照預設倍數(shù)緩存接收的路由查找命令后,對緩存的路由查找命令進行有效數(shù)據(jù)提取后,得到所述存儲的路由查找命令。
進一步地,該方法還包括:
判斷所述存儲的路由查找命令是否是路由查找的有效帶寬的整數(shù)倍,對不是路由查找的有效帶寬的整數(shù)倍的部分進行補零處理。
進一步地,讀取存儲的路由查找命令具體包括:
以路由查找的有效帶寬為單位從高位到低位讀取所述存儲的路由查找命令至一個或一個以上的數(shù)據(jù)總線的數(shù)據(jù)位寬的高位和低位。
進一步地,當所述存儲的路由查找命令的最低位被讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的高位時,該方法還包括:
則按照所述預設的優(yōu)先級讀取下一個路由查找命令,將讀取的下一個路由查找命令的最高位,以路由查找的有效帶寬的大小為單位讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的低位部分進行拼接;
對未讀取的部分,繼續(xù)以路由查找的有效帶寬為單位從高位到低位進行讀取。
進一步地,將讀取的路由查找命令訪問共用的TCAM芯片具體包括:
將讀取的所述路由查找命令,通過所述TCAM芯片接口訪問所述共用的TCAM芯片。
進一步地,該方法還包括:
將完成路由查找的所述路由查找命令按照處理器進行區(qū)分后,分別存儲在相應的預先設置的命令存儲隊列中。
另一方面,本申請還提供一種實現(xiàn)路由查找的裝置,包括:接收存儲單元、讀取單元及共用訪問單元;其中,
接收存儲單元,用于接收并存儲來自各處理器的路由查找命令;
讀取單元,用于根據(jù)預設的優(yōu)先級逐個讀取存儲的路由查找命令;
共用訪問單元,用于將讀取的路由查找命令通過預設的路由查找的有效帶寬訪問共用的三態(tài)內(nèi)容尋址存儲器TCAM芯片,以進行路由查找。
進一步地,接收存儲單元具體用于,通過FPGA上的預先設置的接口分別與高端路由器上各處理器分別連接后,接收各處理器的所述路由查找命令;
對接收的來自各處理器的路由查找命令,以隊列的形式在FPGA的存儲介質(zhì)上分別存儲。
進一步地,共用訪問單元具體用于,將讀取的路由查找命令,通過TCAM芯片接口訪問所述共用的TCAM芯片。
進一步地,接收存儲單元具體用于,
對各處理器,分別通過FPGA所述預先設置的接口接收路由查找命令;
按照預設倍數(shù)緩存接收的路由查找命令后,對緩存的路由查找命令進行有效數(shù)據(jù)提取后,以隊列的形式在FPGA的存儲介質(zhì)上分別存儲,得到所述存儲的路由查找命令。
進一步地,接收存儲單元還用于,判斷所述存儲的路由查找命令是否是路由查找的有效帶寬的整數(shù)倍,對不是路由查找的有效帶寬的整數(shù)倍的部分進行補零處理。
進一步地,讀取單元具體用于,
根據(jù)預設的優(yōu)先級逐個
以路由查找的有效帶寬為單位從高位到低位讀取所述存儲的路由查找命令至一個或一個以上的數(shù)據(jù)總線的數(shù)據(jù)位寬的高位和低位。
進一步地,讀取單元還用于,
當所述存儲的路由查找命令的最低位被讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的高位時,按照所述預設的優(yōu)先級讀取下一個路由查找命令,將讀取的下一個路由查找命令的最高位,以路由查找的有效帶寬的大小為單位讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的低位部分進行拼接;
對未讀取的部分,繼續(xù)以路由查找的有效帶寬為單位從高位到低位進行讀取。
進一步地,該裝置還包括存儲單元,用于,將完成路由查找的所述路由查找命令按照處理器進行區(qū)分后,分別存儲在相應的預先設置的命令存儲隊列中。
與現(xiàn)有技術相比,本申請技術方案包括:接收并存儲來自各處理器的路由查找命令;根據(jù)預設的優(yōu)先級逐個讀取存儲的路由查找命令;將讀取的路由查找命令通過預設的路由查找的有效帶寬訪問共用的三態(tài)內(nèi)容尋址存儲器(TCAM)芯片,以進行路由查找。本發(fā)明方法通過對各處理器的路由查找命令進行接收存儲后,按照優(yōu)先級進行逐個讀取,以訪問共用的TCAM芯片實現(xiàn)路由查找,避免了以單對單方式進行路由查找造成的寬帶資源浪費和成本問題。進一步的,通過路由查找命令的拼接,進一步提高了帶寬資源的利用率。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
圖1為本發(fā)明實現(xiàn)路由查找的方法的流程圖;
圖2為本發(fā)明實現(xiàn)路由查找的裝置的結構程圖;
圖3為本發(fā)明第一實施例的方法流程圖;
圖4為本發(fā)明第一實施例方法路由查找命令的反饋流程圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,下文中將結合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
圖1為本發(fā)明實現(xiàn)路由查找的方法的流程圖,如圖1所示,包括:
步驟100、接收并存儲來自各處理器的路由查找命令;
接收并存儲各處理器的路由查找命令具體包括:
通過現(xiàn)場可編程門陣列(FPGA)上的預先設置的接口分別與高端路由器上各處理器分別連接后,接收各處理器的路由查找命令;
對接收的來自各處理器的路由查找命令,以隊列的形式在FPGA的存儲介質(zhì)上分別存儲。
優(yōu)選的,預先設置的接口為:
四倍數(shù)據(jù)速率靜態(tài)隨機存取存儲器(QDR)接口、雙倍速率同步動態(tài)隨機存儲器(DDR)接口或TCAM接口。
需要說明的是,路由查找的有效帶寬主要根據(jù)預先設置的接口進行設置,針對接口的不同,設置的路由查找的有效帶寬的具體大小的設置為本領域技術人員的慣用技術手段。
通過FPGA可以實現(xiàn)預先設置的接口根據(jù)處理器個數(shù)進行擴展,利用FPGA性能可以實現(xiàn)路由查找命令的接收及查找處理,也便于后續(xù)的讀取拼接的處理。如果存在其他方式可以在擴展性和處理能力上均滿足路由查找命令的接收、存儲、讀取及拼接等性能要求,則也可采用相關方法進行處理。另外,預先設置的接口的選擇主要根據(jù)處理器上所擁有的擴展接口進行設置,一般的,如果處理器上包含可用的QDR接口或DDR接口,則一般選擇QDR接口或DDR接口進行連接,如果不包含時,則選擇上述三種接口任意之一即可。
優(yōu)選的,接收并存儲來自各處理器的路由查找命令具體包括:
對各處理器,分別通過所述預先設置的接口接收路由查找命令;
按照預設倍數(shù)緩存接收的路由查找命令后,對緩存的路由查找命令進行有效數(shù)據(jù)提取后,得到所述存儲的路由查找命令。
需要說明的是,通過預先設置的接口接收路由查找命令主要是指根據(jù)預先設置的接口的接口類型確定接收路由查找命令的帶寬,需要說明的是,在進行路由查找命令接收時,一般會添加校驗位,接收完成后,再去除校驗位。假設,數(shù)據(jù)總線的數(shù)據(jù)位寬為36比特,預先設置的接口為QDR接口,每個管腳支持18比特的數(shù)據(jù)傳輸,則根據(jù)QDR接口接收的路由查找命令為36比特,這里,可以設置包含有4個比特的校驗位。預設倍數(shù)根據(jù)本領域技術人員經(jīng)驗進行設定,一般的取值為8。
本發(fā)明方法還包括:
判斷所述存儲的路由查找命令是否是路由查找的有效帶寬的整數(shù)倍,對不是路由查找的有效帶寬的整數(shù)倍的部分進行補零處理。
步驟101、根據(jù)預設的優(yōu)先級逐個讀取存儲的路由查找命令;
需要說明的是,預先設置的優(yōu)先級為本領域技術人員根據(jù)經(jīng)驗確定的讀取路由查找命令的優(yōu)先級,例如、根據(jù)各處理器的路由查找命令個數(shù)的多少,以各處理器存儲的路由查找命令占所有存儲的路由查找命令的百分比大小,確定百分比較大的作為優(yōu)先級較大的進行路由查找命令的讀取,百分比大小可以實時更新也可以周期性更新。又或者,技術人員根據(jù)處理器的重要程度進行優(yōu)先級設定,例如、某處理器路由查找與系統(tǒng)關鍵事件相關,應該進行優(yōu)先讀取,則可以設置該處理器優(yōu)先級最高,只要有路由查找命令就立即進行讀取處理。
本步驟中,讀取存儲的路由查找命令具體包括:
以路由查找的有效帶寬為單位從高位到低位讀取所述存儲的路由查找命令至一個或一個以上的數(shù)據(jù)總線的數(shù)據(jù)位寬的高位和低位。
當所述存儲的路由查找命令的最低位被讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的高位時,本發(fā)明方法還包括:
則按照所述預設的優(yōu)先級讀取下一個路由查找命令,將讀取的下一個路 由查找命令的最高位,以路由查找的有效帶寬的大小為單位讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的低位部分進行拼接;
對未讀取的部分,繼續(xù)以路由查找的有效帶寬為單位從高位到低位進行讀取。
需要說明的是,通過路由查找命令的拼接,對預先設置的網(wǎng)絡帶寬進行充分的利用,提高了網(wǎng)絡帶寬的資源利用率。另外,這里的下一個是相對而言,一旦讀取路由查找命令完成,下一次讀取的路由查找命令就應該進行更新。
步驟102、將讀取的路由查找命令通過預設的網(wǎng)絡帶寬訪問共用的三態(tài)內(nèi)容尋址存儲器TCAM芯片,以進行路由查找;這里,共用的TCAM芯片是指同一高端路由器上所有處理器共用的TCAM芯片。
本步驟中,將讀取的路由查找命令訪問共用的TCAM芯片具體包括:
將讀取的路由查找命令,通過TCAM芯片接口訪問共用的TCAM芯片。
本發(fā)明方法還包括:
將完成路由查找的路由查找命令按照處理器進行區(qū)分后,分別存儲在相應的預先設置的命令存儲隊列中。
本發(fā)明方法通過對各處理器的路由查找命令進行接收存儲后,按照優(yōu)先級進行逐個讀取,以訪問共用的TCAM芯片實現(xiàn)路由查找,避免了以單對單方式進行路由查找造成的寬帶資源浪費和成本問題。進一步的,通過路由查找命令的拼接,進一步提高了帶寬資源的利用率。
圖2為本發(fā)明實現(xiàn)路由查找的裝置的結構程圖,如圖2所示,包括:接收存儲單元、讀取單元及共用訪問單元;其中,
接收存儲單元,用于接收并存儲來自各處理器的路由查找命令;
接收存儲單元具體用于,通過FPGA上的預先設置的接口分別與高端路由器上各處理器分別連接后,接收各處理器的路由查找命令;
對接收的來自各處理器的路由查找命令,以隊列的形式在FPGA的存儲介質(zhì)上分別存儲。
優(yōu)選的,接收存儲單元具體用于,
對各處理器,分別通過FPGA所述預先設置的接口接收路由查找命令;
按照預設倍數(shù)緩存接收的路由查找命令后,對緩存的路由查找命令進行有效數(shù)據(jù)提取后,以隊列的形式在FPGA的存儲介質(zhì)上分別存儲,得到所述存儲的路由查找命令。
接收存儲單元還用于,判斷所述存儲的路由查找命令是否是路由查找的有效帶寬的整數(shù)倍,對不是路由查找的有效帶寬的整數(shù)倍的部分進行補零處理。
讀取單元,用于根據(jù)預設的優(yōu)先級逐個讀取存儲的路由查找命令。
讀取單元具體用于,
根據(jù)預設的優(yōu)先級逐個
以路由查找的有效帶寬為單位從高位到低位讀取所述存儲的路由查找命令至一個或一個以上的數(shù)據(jù)總線的數(shù)據(jù)位寬的高位和低位。
讀取單元還用于,
當所述存儲的路由查找命令的最低位被讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的高位時,按照所述預設的優(yōu)先級讀取下一個路由查找命令,將讀取的下一個路由查找命令的最高位,以路由查找的有效帶寬的大小為單位讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的低位部分進行拼接;
對未讀取的部分,繼續(xù)以路由查找的有效帶寬為單位從高位到低位進行讀取。
共用訪問單元,用于將讀取的路由查找命令通過預設的路由查找的有效帶寬訪問共用的三態(tài)內(nèi)容尋址存儲器TCAM芯片,以進行路由查找;
共用的TCAM芯片為所有處理器共用的TCAM芯片。
共用訪問單元具體用于,將讀取的路由查找命令,通過共用的TCAM芯片的接口訪問共用的TCAM芯片。
本發(fā)明裝置還包括存儲單元,用于,將完成路由查找的路由查找命令按照處理器進行區(qū)分后,分別存儲在相應的預先設置的命令存儲隊列中。
以下通過具體實施例對本發(fā)明方法進行清楚詳細的說明,實施例僅用于陳述本發(fā)明,并不用于限制本發(fā)明方法的保護范圍。
實施例1
本實施例在實施之前需要進行接口擴展和設置,將高端路由器上的各處理器分別通過FPGA上QDR接口、DDR接口或TCAM接口。
圖3為本發(fā)明第一實施例的方法流程圖,如圖3所示,包括:
步驟300、通過FPGA上預先設置的接口,接收高端路由器上各處理器的路由查找命令。
步驟301、將接收的路由查找命令按照處理器不同,分別以命令隊列的形式進行存儲。一般的路由查找命令按照現(xiàn)有順序存儲的命令隊列中。
步驟302、按照預先設置的優(yōu)先級讀取路由查找命令。本步驟具體包括:
根據(jù)預設的優(yōu)先級逐個
以路由查找的有效帶寬為單位從高位到低位讀取所述存儲的路由查找命令至一個或一個以上的數(shù)據(jù)總線的數(shù)據(jù)位寬的高位和低位。
當所述存儲的路由查找命令的最低位被讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的高位時,按照所述預設的優(yōu)先級讀取下一個路由查找命令,將讀取的下一個路由查找命令的最高位,以路由查找的有效帶寬的大小為單位讀取至數(shù)據(jù)總線的數(shù)據(jù)位寬的低位部分進行拼接;
對未讀取的部分,繼續(xù)以路由查找的有效帶寬為單位從高位到低位進行讀取。
步驟303、將讀取的路由查找命令通過預設的路由查找的有效帶寬訪問共用的三態(tài)內(nèi)容尋址存儲器TCAM芯片,以進行路由查找。
需要說明的是,訪問TCAM芯片時,路由查找命令按照TCAM標準命令格式發(fā)送。
步驟304、將完成路由查找的路由查找命令按照處理器進行區(qū)分后,分別存儲在相應的預先設置的命令存儲隊列中。
圖4為本發(fā)明第一實施例方法路由查找命令的反饋流程圖,如圖4所示, 包括:
步驟400、接收路由查找命令的路由查找結果;
步驟401、將路由查找命令匹配返回不同通道的路由查找結果;
步驟402、按照匹配返回的不同通道,將路由查找結果反饋給處理器。
雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容僅為便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬領域內(nèi)的技術人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式及細節(jié)上進行任何的修改與變化,但本發(fā)明的專利保護范圍,仍須以所附的權利要求書所界定的范圍為準。