專利名稱:一種路由查找方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及路由查找技術(shù)領(lǐng)域。
背景技術(shù):
現(xiàn)有的路由查找技術(shù),包括普通路由算法查找方式和TCAM(三態(tài)內(nèi)容可尋址寄存器)查找方式。
現(xiàn)有的路由查找,如圖1所示,在通過(guò)普通路由算法查找或TCAM查找獲得路由表索引后,網(wǎng)絡(luò)處理器都要根據(jù)路由表索引從外部?jī)?nèi)存中讀取路由表內(nèi)容。由于網(wǎng)路處理器(比如Intel IXP2800)對(duì)于外部?jī)?nèi)存的讀寫(xiě)訪問(wèn)次數(shù)非常敏感,該操作對(duì)于網(wǎng)絡(luò)處理器的10G甚至更高速率的路由器來(lái)說(shuō)都是一次很大的性能損耗,從而造成現(xiàn)有技術(shù)中的路由查找時(shí)間長(zhǎng),效率低。
發(fā)明內(nèi)容
本發(fā)明提供了一種路由查找方法及系統(tǒng),達(dá)到縮短路由查找時(shí)間、提高路由查找效率的目的。
本發(fā)明提供了一種路由查找方法,預(yù)設(shè)定包含路由表索引和路由表ID的查找鍵值,所述方法包括根據(jù)所述查找鍵值進(jìn)行內(nèi)容尋址儲(chǔ)存器CAM的匹配查找,并返回包含命中標(biāo)記和入口號(hào)的查找結(jié)果;所述入口號(hào)與緩存在微引擎內(nèi)部快速緩存中的路由條目相對(duì)應(yīng);根據(jù)所述查找結(jié)果中的命中標(biāo)記進(jìn)行判斷,如果查找命中,根據(jù)所述查找結(jié)果中的入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目;否則,根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系。
在執(zhí)行所述方法之前還包括對(duì)CAM進(jìn)行初始化,清除緩存在其中的路由條目。
其中,所述根據(jù)所述入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目的步驟具體包括根據(jù)查找結(jié)果獲取入口號(hào);保存微引擎內(nèi)部快速緩存指針;根據(jù)入口號(hào)設(shè)置所述微引擎內(nèi)部快速緩存指針,定位到微引擎內(nèi)部快速緩存中存儲(chǔ)的路由條目,并讀取所述路由條目的內(nèi)容信息。
所述根據(jù)所述入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目的步驟還包括恢復(fù)微引擎內(nèi)部快速緩存指針,并定期清除保存在CAM中的所述入口號(hào)和所述查找鍵值的映射關(guān)系。
所述根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系的步驟具體包括根據(jù)所述路由表索引讀取外部?jī)?nèi)存中的路由條目,并讀取所述路由條目的內(nèi)容信息;保存所述微引擎內(nèi)部快速緩存指針,根據(jù)所述入口號(hào)定位到微引擎內(nèi)部快速緩存,將所述路由條目復(fù)制到所述微引擎內(nèi)部快速緩存中。
所述根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系的步驟還包括恢復(fù)微引擎內(nèi)部快速緩存指針,并定期清除保存在CAM中的所述入口號(hào)和所述查找鍵值的映射關(guān)系。
本發(fā)明又提供了一種路由查找系統(tǒng),包括內(nèi)容尋址存儲(chǔ)器CAM,用于根據(jù)預(yù)設(shè)定包含路由表索引和路由表ID的查找鍵值進(jìn)行匹配查找,并返回包含命中標(biāo)記和入口號(hào)的查找結(jié)果;微引擎內(nèi)部快速緩存單元,用于緩存路由條目,所述緩存在微引擎內(nèi)部快速緩存中的路由條目與所述入口號(hào)相對(duì)應(yīng);查找處理單元,用于根據(jù)所述查找結(jié)果中的命中標(biāo)記進(jìn)行判斷,如果查找命中,根據(jù)所述查找結(jié)果中的入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目;否則,根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系。
所述系統(tǒng)還包括CAM初始化單元,用于對(duì)CAM進(jìn)行初始化,清除緩存在其中的路由條目。
綜上所述,本發(fā)明提供了一種路由查找方法及系統(tǒng),當(dāng)CAM查找命中時(shí),可以根據(jù)查找結(jié)果中的入口號(hào)直接讀取緩存在微引擎內(nèi)部快速緩存中的路由表項(xiàng)內(nèi)容,這樣就減少了從外部?jī)?nèi)存讀取路由表項(xiàng)的次數(shù),從而達(dá)到縮短路由查找時(shí)間、提高路由查找效率的目的。
圖1為現(xiàn)有技術(shù)中路由查找的過(guò)程示意圖;圖2為本發(fā)明實(shí)施例所述方法的原理示意圖;圖3為本發(fā)明實(shí)施例所述方法的流程示意圖;圖4為本發(fā)明實(shí)施例所述系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例所述方法及系統(tǒng)進(jìn)行詳細(xì)闡述。
首先結(jié)合附圖2和附圖3對(duì)本發(fā)明實(shí)施例所述方法進(jìn)行說(shuō)明。
如圖2所示,本發(fā)明的主要原理是通過(guò)查找路由表?xiàng)l目和入口號(hào)的映射關(guān)系,當(dāng)CAM(Content Addressing Memory,內(nèi)容尋址存儲(chǔ)器)匹配查找命中時(shí),可以直接讀取微引擎內(nèi)部快速緩存中的路由表內(nèi)容進(jìn)行轉(zhuǎn)發(fā),不命中時(shí)才去訪問(wèn)外部?jī)?nèi)存,這樣,就減少了訪問(wèn)外部?jī)?nèi)存的次數(shù),從而達(dá)到在不增加成本的前提下,減少路由查找時(shí)間、提高路由查找效率的目的。
如圖3所示,本發(fā)明實(shí)施例所述方法在具體實(shí)施過(guò)程中可以包括以下步驟步驟301使用特定指令初始化CAM;步驟302針對(duì)要查找的路由表的類型,設(shè)定路由表ID(表號(hào)),在本發(fā)明實(shí)施例的具體實(shí)現(xiàn)過(guò)程中可以包括3種類型的路由表V4路由,V6路由,標(biāo)簽路由;步驟303根據(jù)獲得的路由表索引和路由表ID構(gòu)造查找鍵值;所述路由表索引可以通過(guò)普通路由算法查找或TCAM查找等方式獲得到,由于現(xiàn)有技術(shù)中對(duì)于路由表索引的獲得已有成熟解決方案,此處不再贅述;步驟304使用tag(查找鍵值)進(jìn)行CAM表的匹配查找,返回結(jié)果為result,所述返回結(jié)果result包括命中標(biāo)記、與查找鍵值對(duì)應(yīng)的微引擎本地快速緩存中的entry_num(入口號(hào));具體的說(shuō)就是,所述CAM表的映射關(guān)系為CAM表索引<->內(nèi)容Content,CAM映射是CAM表索引和Content(內(nèi)容)的雙向映射,即,可以通過(guò)CAM表索引得到內(nèi)容,也可以通過(guò)內(nèi)容得到索引,利用這種特性,可以把查找鍵值中的路由表索引號(hào)作為內(nèi)容去和CAM中存儲(chǔ)的CAM表索引號(hào)進(jìn)行比較,如果查找到,說(shuō)明查找命中,命中標(biāo)記可以設(shè)置為1,否則說(shuō)明查找不命中,命中標(biāo)記可以設(shè)置為0;具體匹配查找過(guò)程現(xiàn)有技術(shù)中已有成熟解決方案,此處不再贅述;所述微引擎本地快速緩存中的入口號(hào)為微引擎本地快速緩存中存儲(chǔ)的路由條目的地址;步驟305根據(jù)返回結(jié)果result中的命中標(biāo)記位判斷前一步是否查找命中,如果命中(比如命中標(biāo)記為1),轉(zhuǎn)步驟306;如果不命中(比如命中標(biāo)記為0),轉(zhuǎn)步驟309;
步驟306從返回結(jié)果result中獲取所述微引擎本地快速緩存中的入口號(hào);步驟307保存所述微引擎本地快速緩存指針,該指針用于將所述微引擎本地快速緩存內(nèi)容進(jìn)行定位,保存的目的是為了在所述微引擎本地快速緩存的路由條目讀取完畢之后進(jìn)行指針恢復(fù);步驟308根據(jù)設(shè)置本地內(nèi)存指針,定位到微引擎本地快速緩存中存儲(chǔ)的路由表內(nèi)容,讀取該路由表內(nèi)容信息(該信息等同于根據(jù)路由表索引從外部?jī)?nèi)存讀取的路由條目信息),轉(zhuǎn)312;步驟309查找不命中,則需要通過(guò)路由表索引重新讀取存儲(chǔ)在外部?jī)?nèi)存中的路由表?xiàng)l目信息;步驟310保存本地快速內(nèi)存指針,根據(jù)入口號(hào)定位到所述微引擎本地快速緩存,并將309讀取的路由條目信息拷貝到所述微引擎本地快速緩存中;步驟311建立入口號(hào)和查找鍵值的映射關(guān)系,用于以后針對(duì)該搜索的匹配查找;步驟312在讀取到路由條目信息后,統(tǒng)一恢復(fù)本地內(nèi)存指針,然后便可進(jìn)行路由轉(zhuǎn)發(fā)的后續(xù)處理工作;步驟313定時(shí)清除保存在CAM中的入口號(hào)和查找鍵值的映射關(guān)系,防止當(dāng)路由條目發(fā)生變化時(shí),路由器仍然按照錯(cuò)誤的轉(zhuǎn)發(fā)條目進(jìn)行轉(zhuǎn)發(fā)。
下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例所述系統(tǒng)進(jìn)行詳細(xì)說(shuō)明。
如圖4所示,本發(fā)明實(shí)施例所述系統(tǒng)具體包括CAM初始化單元,用于對(duì)CAM進(jìn)行初始化,清除緩存在其中的路由條目。
內(nèi)容尋址存儲(chǔ)器CAM,用于根據(jù)預(yù)設(shè)定包含路由表索引和路由表ID的查找鍵值進(jìn)行匹配查找,并返回包含命中標(biāo)記和入口號(hào)的查找結(jié)果;具體的說(shuō)就是,CAM是一種專用存儲(chǔ)器件,可以進(jìn)行快遞大量的并行搜索,其中,CAM表的映射關(guān)系為CAM表索引<->內(nèi)容Content,CAM映射是CAM表索引和Content(內(nèi)容)的雙向映射,即,可以通過(guò)CAM表索引得到內(nèi)容,也可以通過(guò)內(nèi)容得到索引,利用這種特性,可以把查找鍵值中的路由表索引號(hào)作為內(nèi)容去和CAM中存儲(chǔ)的CAM表索引號(hào)進(jìn)行比較,如果查找到,說(shuō)明查找命中,命中標(biāo)記可以設(shè)置為1,否則說(shuō)明查找不命中,命中標(biāo)記可以設(shè)置為0;微引擎內(nèi)部快速緩存單元,用于緩存路由條目,所述緩存在微引擎內(nèi)部快速緩存中的路由條目與所述入口號(hào)相對(duì)應(yīng);查找處理單元,用于根據(jù)CAM返回的查找結(jié)果中的命中標(biāo)記進(jìn)行判斷,如果查找命中,保存所述微引擎本地快速緩存指針,該指針用于將所述微引擎本地快速緩存內(nèi)容進(jìn)行定位,保存的目的是為了在所述微引擎本地快速緩存的路由條目讀取完畢之后進(jìn)行指針恢復(fù);然后根據(jù)設(shè)置本地內(nèi)存指針,定位到微引擎本地快速緩存中存儲(chǔ)的路由表內(nèi)容,讀取該路由表內(nèi)容信息根據(jù)所述查找結(jié)果中的入口號(hào),定位到微引擎內(nèi)部快速緩存單元中的路由條目;如果查找沒(méi)有命中,則需要通過(guò)路由表索引重新讀取存儲(chǔ)在外部?jī)?nèi)存中的路由表?xiàng)l目信息;保存本地快速內(nèi)存指針,根據(jù)入口號(hào)定位到所述微引擎本地快速緩存,并將讀取的路由條目信息拷貝到所述微引擎本地快速緩存中,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系。
所述查找處理單元在本發(fā)明實(shí)施例的具體實(shí)施過(guò)程中,可以作為一個(gè)單獨(dú)的軟將功能模塊,串行加載在路由索引查找完畢之后,即使不使用也可以卸載,不會(huì)對(duì)其他功能模塊產(chǎn)生影響,靈活方便。
綜上所述,本發(fā)明實(shí)施例提供了一種路由查找方法及系統(tǒng),通過(guò)查找路由表?xiàng)l目和入口號(hào)的映射關(guān)系,當(dāng)CAM匹配查找命中時(shí),可以直接讀取微引擎內(nèi)部快速緩存中的路由表內(nèi)容進(jìn)行轉(zhuǎn)發(fā),不命中時(shí)才去訪問(wèn)外部?jī)?nèi)存,這樣,就減少了訪問(wèn)外部?jī)?nèi)存的次數(shù),從而達(dá)到在不增加成本的前提下,減少路由查找時(shí)間、提高路由查找效率的目的。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種路由查找方法,其特征在于,預(yù)設(shè)定包含路由表索引和路由表ID的查找鍵值,所述方法包括根據(jù)所述查找鍵值進(jìn)行內(nèi)容尋址儲(chǔ)存器CAM的匹配查找,并返回包含命中標(biāo)記和入口號(hào)的查找結(jié)果;所述入口號(hào)與緩存在微引擎內(nèi)部快速緩存中的路由條目相對(duì)應(yīng);根據(jù)所述查找結(jié)果中的命中標(biāo)記進(jìn)行判斷,如果查找命中,根據(jù)所述查找結(jié)果中的入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目;否則,根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系。
2.如權(quán)利要求1所述的方法,其特征在于,在執(zhí)行所述方法之前還包括對(duì)CAM進(jìn)行初始化,清除緩存在其中的路由條目。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述根據(jù)所述入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目的步驟具體包括根據(jù)查找結(jié)果獲取入口號(hào);保存微引擎內(nèi)部快速緩存指針;根據(jù)入口號(hào)設(shè)置所述微引擎內(nèi)部快速緩存指針,定位到微引擎內(nèi)部快速緩存中存儲(chǔ)的路由條目,并讀取所述路由條目的內(nèi)容信息。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目的步驟還包括恢復(fù)微引擎內(nèi)部快速緩存指針,并定期清除保存在CAM中的所述入口號(hào)和所述查找鍵值的映射關(guān)系。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系的步驟具體包括根據(jù)所述路由表索引讀取外部?jī)?nèi)存中的路由條目,并讀取所述路由條目的內(nèi)容信息;保存所述微引擎內(nèi)部快速緩存指針,根據(jù)所述入口號(hào)定位到微引擎內(nèi)部快速緩存,將所述路由條目復(fù)制到所述微引擎內(nèi)部快速緩存中。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系的步驟還包括恢復(fù)微引擎內(nèi)部快速緩存指針,并定期清除保存在CAM中的所述入口號(hào)和所述查找鍵值的映射關(guān)系。
7.一種路由查找系統(tǒng),其特征在于,包括內(nèi)容尋址存儲(chǔ)器CAM,用于根據(jù)預(yù)設(shè)定包含路由表索引和路由表ID的查找鍵值進(jìn)行匹配查找,并返回包含命中標(biāo)記和入口號(hào)的查找結(jié)果;微引擎內(nèi)部快速緩存單元,用于緩存路由條目,所述緩存在微引擎內(nèi)部快速緩存中的路由條目與所述入口號(hào)相對(duì)應(yīng);查找處理單元,用于根據(jù)所述查找結(jié)果中的命中標(biāo)記進(jìn)行判斷,如果查找命中,根據(jù)所述查找結(jié)果中的入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目;否則,根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括CAM初始化單元,用于對(duì)CAM進(jìn)行初始化,清除緩存在其中的路由條目。
全文摘要
本發(fā)明公開(kāi)了一種路由查找方法,預(yù)設(shè)定包含路由表索引和路由表ID的查找鍵值,所述方法包括根據(jù)所述查找鍵值進(jìn)行內(nèi)容尋址儲(chǔ)存器CAM的匹配查找,并返回包含命中標(biāo)記和入口號(hào)的查找結(jié)果;所述入口號(hào)與緩存在微引擎內(nèi)部快速緩存中的路由條目相對(duì)應(yīng);根據(jù)所述查找結(jié)果中的命中標(biāo)記進(jìn)行判斷,如果查找命中,根據(jù)所述查找結(jié)果中的入口號(hào),定位到存儲(chǔ)在微引擎內(nèi)部快速緩存中的路由條目;否則,根據(jù)所述路由表索引定位到外部?jī)?nèi)存中的路由條目,并建立所述入口號(hào)和所述查找鍵值的映射關(guān)系。本發(fā)明通過(guò)查找結(jié)果中的入口號(hào)直接讀取緩存在微引擎內(nèi)部快速緩存中的路由表項(xiàng)內(nèi)容,從而達(dá)到縮短路由查找時(shí)間、提高路由查找效率的目的。
文檔編號(hào)G06F17/30GK101079817SQ20071012292
公開(kāi)日2007年11月28日 申請(qǐng)日期2007年7月4日 優(yōu)先權(quán)日2007年7月4日
發(fā)明者錢小龍, 王俊川, 邵慶華, 周文明, 李斌 申請(qǐng)人:中興通訊股份有限公司