欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

預(yù)處理cache的路由快速查找方法與流程

文檔序號(hào):11279196閱讀:887來(lái)源:國(guó)知局

本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù),具體涉及路由技術(shù)。



背景技術(shù):

為了提高路由查找效率以及實(shí)現(xiàn)按流負(fù)載均衡,設(shè)計(jì)了路由cache機(jī)制,把已經(jīng)查過(guò)路由的目的ip地址及其查到的路由結(jié)果用哈希表的形式緩存起來(lái)。這樣下次針對(duì)同樣的目的地址,可以直接從上述哈希表(即cache)中找到路由結(jié)果,而無(wú)需再查路由表,畢竟路由表一般以二叉樹(shù)的形式組織,查詢比較慢。

然而,這種做法針對(duì)同一個(gè)目的地址,只有第二次及以后的查詢會(huì)快,第一次查詢?nèi)匀恍枰槁酚杀恚酚傻牟樵兯俣冗€是比較慢的。

由此可見(jiàn),路由的查找速度往往成為設(shè)備的性能瓶頸,雖然cache的加入大大緩解了這個(gè)問(wèn)題,但僅限于流量穩(wěn)定之后(如針對(duì)同一個(gè)目的地址,第二次及以后的查詢);因此如何提高流量首次進(jìn)入時(shí)(第一次查詢)的路由查找速度,是本領(lǐng)域亟需解決的問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

名詞解釋?zhuān)?/p>

cache-緩存;

cidr-無(wú)類(lèi)域間路由。

針對(duì)現(xiàn)有路由查找技術(shù)所存在的問(wèn)題,需要一種能夠高效的路由快速查找方案。

為此,本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種預(yù)處理cache的路由快速查找方法。

為了解決上述技術(shù)問(wèn)題,本發(fā)明提供的預(yù)處理cache的路由快速查找方法,其將路由信息直接寫(xiě)入cache,創(chuàng)建cache。

在本方案中,在添加路由時(shí)就直接把路由信息預(yù)同步到cache里。

在本方案中,在創(chuàng)建cache時(shí),將掩碼長(zhǎng)度也引入cache,每增加一條路由,直接同步創(chuàng)建一條帶有掩碼長(zhǎng)度的cache。

在本方案中,被同一子網(wǎng)覆蓋的所有目的地址共享同一個(gè)cache條目。

在本方案中,在cache表里用有序數(shù)組代替鏈表。

在本方案中,所述數(shù)組每一項(xiàng)是個(gè)結(jié)構(gòu)體,至少要保存目的地址、掩碼長(zhǎng)度和指向cache結(jié)構(gòu)的指針這三項(xiàng),按掩碼長(zhǎng)度由長(zhǎng)到短排序。

在本方案中,配置一輔助表來(lái)預(yù)測(cè)最終匹配到的掩碼長(zhǎng)度,輔助表在更新路由時(shí)同步更新,統(tǒng)計(jì)具有相同掩碼長(zhǎng)度的路由的個(gè)數(shù)。

在本方案中,所述輔助表有256個(gè)表項(xiàng),以目的地址的前8位為索引,保存掩碼長(zhǎng)度與路由相對(duì)應(yīng)的信息。

在本方案中,在查cache之前,先用目的地址的前8位為索引查輔助表,得到可能的最長(zhǎng)掩碼,再與目的地址相與后再計(jì)算哈希值查cache。

在本方案中,所述輔助表的每一項(xiàng)還有一個(gè)指針指向二叉樹(shù)形式的路由表的相應(yīng)節(jié)點(diǎn),該節(jié)點(diǎn)通常為輔助表這一項(xiàng)所對(duì)應(yīng)的子樹(shù)的頭結(jié)點(diǎn)。

使用本方案可以做到只查cache就能得到路由結(jié)果,避免了較慢的路由表查找,最大限度的優(yōu)化了查找效率,提升了轉(zhuǎn)發(fā)報(bào)文的性能。

附圖說(shuō)明

以下結(jié)合附圖和具體實(shí)施方式來(lái)進(jìn)一步說(shuō)明本發(fā)明。

圖1為本發(fā)明實(shí)例中預(yù)處理cache加快路由查找的原理圖。

具體實(shí)施方式

為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。

本實(shí)例方案通過(guò)路由信息直接寫(xiě)入cache,實(shí)現(xiàn)在添加路由時(shí)創(chuàng)建cache,即將創(chuàng)建cache的時(shí)機(jī)由轉(zhuǎn)發(fā)時(shí)提前到了添加路由時(shí),這樣就不會(huì)占用轉(zhuǎn)發(fā)時(shí)的時(shí)間,轉(zhuǎn)發(fā)時(shí)只需做哈希查詢操作即可,大大提升了轉(zhuǎn)發(fā)性能。

具體的,本實(shí)例方案在現(xiàn)有的路由cache基礎(chǔ)上進(jìn)行擴(kuò)展,在添加路由時(shí)就直接將路由信息預(yù)同步到cache里,無(wú)需等到轉(zhuǎn)發(fā)報(bào)文時(shí)。這樣實(shí)現(xiàn)在第一次查路由時(shí),也可以直接從cache中獲得結(jié)果,不必查路由表,有效提高第一次查路由的查詢速度,解決了第一次查詢慢的問(wèn)題。

進(jìn)一步的,本實(shí)例方案相對(duì)于傳統(tǒng)的cache機(jī)制需要對(duì)每個(gè)不同的目的地址創(chuàng)建一個(gè)獨(dú)立的cache條目,本方案讓被同一子網(wǎng)覆蓋的所有目的地址共享同一個(gè)cache條目,由此來(lái)大大節(jié)約內(nèi)存。

再者,本方案還進(jìn)一步用數(shù)組代替鏈表來(lái)解決哈希沖突,這樣能夠減少仿存次數(shù),提高查找效率。

以下說(shuō)明一下本實(shí)例方案的具體實(shí)現(xiàn)過(guò)程:

傳統(tǒng)的cache機(jī)制中,剛開(kāi)始打流時(shí)是不存在cache的,需要做“查cache失敗->查路由表->創(chuàng)建cache->cache與路由關(guān)聯(lián)”這一系列動(dòng)作,這一過(guò)程比較慢。對(duì)此,本實(shí)例方案從此處著手,在打流之前預(yù)先建好cache,實(shí)現(xiàn)絕大多數(shù)查找都在cache里進(jìn)行,最大限度減少查路由的動(dòng)作。

由于傳統(tǒng)的cache都是以32位目的地址為索引的,在實(shí)際打流之前完全無(wú)法預(yù)計(jì)哪些目的地址的報(bào)文會(huì)沖過(guò)來(lái)。據(jù)此,為了能夠預(yù)先創(chuàng)建好cache,本實(shí)例方案將掩碼長(zhǎng)度也引入cache,每增加一條路由,直接同步創(chuàng)建一條帶有掩碼長(zhǎng)度的cache,即這一種特殊的cache,是與路由相對(duì)應(yīng)的,而非與流相對(duì)應(yīng)。

由于cache的哈希算法,只能進(jìn)行精確匹配,無(wú)法進(jìn)行最長(zhǎng)掩碼匹配。在此基礎(chǔ)上,為能夠有效實(shí)現(xiàn)查找,本實(shí)例方案進(jìn)一步增加一個(gè)輔助表來(lái)幫助“預(yù)測(cè)”最終匹配到的掩碼長(zhǎng)度。輔助表有256個(gè)表項(xiàng),以目的地址的前8位為索引,保存了掩碼長(zhǎng)度與路由相對(duì)應(yīng)的信息(即“在哪些掩碼長(zhǎng)度上有路由”的信息)。查cache之前,要先用目的地址的前8位為索引查輔助表,得到可能的最長(zhǎng)掩碼,與目的地址相與后再計(jì)算哈希值查cache。

由于一個(gè)正常的路由表,往往只有少數(shù)幾種掩碼長(zhǎng)度,在此情況下,可以通過(guò)少數(shù)幾次查cache表的操作找到最佳匹配的cache條目。如果所有可能的前綴長(zhǎng)度都被試過(guò)也找不到,則說(shuō)明不存在匹配的路由,也無(wú)需再查路由表了,因?yàn)樗新酚杀硇畔⒍家呀?jīng)被完整地保存到cache表中。這就大大緩解了那些查不到路由的背景流量對(duì)cpu的沖擊。

本實(shí)例方案中,根據(jù)路由創(chuàng)建cache與根據(jù)流創(chuàng)建cache,二者可以同時(shí)存在。比如對(duì)于直連路由(非點(diǎn)到點(diǎn))和等價(jià)路由,就需要根據(jù)流創(chuàng)建cache,對(duì)于以太網(wǎng)直連路由,cache可以減少arp查找的開(kāi)銷(xiāo);對(duì)于等價(jià)路由,cache可以實(shí)現(xiàn)按流負(fù)載均衡。

在本實(shí)例方案的基礎(chǔ)上,對(duì)于多個(gè)掩碼長(zhǎng)度同時(shí)存在的情況,此時(shí)也需要根據(jù)流創(chuàng)建cache,以加速下一次查找。對(duì)于其它情況,查到cache就可以直接轉(zhuǎn)發(fā)了,不用再創(chuàng)建32位掩碼的cache了,節(jié)約了時(shí)間和內(nèi)存。

由于同一設(shè)備端口個(gè)數(shù)有限,所有路由的下一跳存在大量重復(fù),由此使得與下一跳有關(guān)聯(lián)的cache內(nèi)容將會(huì)存在重復(fù)。對(duì)此,本實(shí)例方案將被同一子網(wǎng)覆蓋的所有目的地址共享同一個(gè)cache條目,使得相同的cache內(nèi)容只保存一份,通過(guò)指針共享,不但能大大節(jié)省內(nèi)存,還將因更可能駐留在cpu緩存里而提高性能。

對(duì)于cache表里的哈希沖突,本實(shí)例方案用有序數(shù)組代替鏈表,這樣一次訪存可以比較更多沖突項(xiàng),以減少訪存次數(shù)。

該數(shù)組每一項(xiàng)是個(gè)結(jié)構(gòu)體,至少要保存目的地址、掩碼長(zhǎng)度和指向cache結(jié)構(gòu)的指針這三項(xiàng),按掩碼長(zhǎng)度由長(zhǎng)到短排序。

針對(duì)上述的具體實(shí)現(xiàn)方案通過(guò)一具體應(yīng)用實(shí)例來(lái)說(shuō)明。

參見(jiàn)圖1,其所示為基于預(yù)處理cache來(lái)加快路由查找的實(shí)現(xiàn)原理圖。

由圖可知,本方案在添加路由時(shí)就直接將路由信息預(yù)同步到cache里,同時(shí)將掩碼長(zhǎng)度也引入cache,每增加一條路由,直接同步創(chuàng)建一條帶有掩碼長(zhǎng)度的cache,并且增加一個(gè)輔助表來(lái)幫助“預(yù)測(cè)”最終匹配到的掩碼長(zhǎng)度。

該輔助表以目的地址的前8位為索引,共256個(gè)表項(xiàng),這樣可以進(jìn)一步細(xì)分路由表,盡可能減少每個(gè)表項(xiàng)對(duì)應(yīng)的掩碼長(zhǎng)度個(gè)數(shù),尤其是對(duì)于沒(méi)有應(yīng)用cidr的傳統(tǒng)路由分布,效果更好。

每個(gè)表項(xiàng)中的壓縮掩碼是一個(gè)32位無(wú)符號(hào)整數(shù)(對(duì)應(yīng)ipv4地址的32位),每一位表示該位對(duì)應(yīng)的掩碼長(zhǎng)度上有無(wú)路由,對(duì)于掩碼長(zhǎng)度小于8的路由需要特殊處理;而壓縮掩碼實(shí)質(zhì)就是掩碼長(zhǎng)度統(tǒng)計(jì)表的壓縮存儲(chǔ)形式,統(tǒng)計(jì)表中更詳細(xì)的記錄了每種掩碼長(zhǎng)度的個(gè)數(shù),個(gè)數(shù)非0時(shí)對(duì)應(yīng)的壓縮掩碼位為1,否則為0,查cache時(shí)讀入壓縮掩碼即可,無(wú)需再查掩碼長(zhǎng)度統(tǒng)計(jì)表,以減少訪存次數(shù)。每次路由更新時(shí),除了cache需要同步之外,輔助表里的統(tǒng)計(jì)值和壓縮掩碼也需要同步更新。

據(jù)此,每次查cache時(shí)需要先以目的地址的前8位為索引查輔助表,得到壓縮掩碼,然后結(jié)合壓縮掩碼的末位1的位置得出用于查cache表的目的地址(將原目的地址截取到該位為止,后面的位全部清0),再查cache表,若查不到,則結(jié)合壓縮掩碼的倒數(shù)第二個(gè)1的位置得到新的查cache表的目的地址······以此類(lèi)推,直到所有可能的掩碼長(zhǎng)度都被試過(guò)。

例如,需要查路由的目的地址為192.168.3.3,查輔助表得到索引192對(duì)應(yīng)的壓縮掩碼為0x00010100,則表明第一字節(jié)為192的所有路由有16和24兩種掩碼長(zhǎng)度,先用24位掩碼與初始目的地址相與,得到192.168.3.0,再用192.168.3.0作為目的地址計(jì)算哈希值去查cache,如果查到了cache則繼續(xù)走轉(zhuǎn)發(fā)流程,否則再用16位掩碼重復(fù)上述步驟,若還查不到,則說(shuō)明沒(méi)有相應(yīng)的路由,丟包即可。

另外,針對(duì)輔助表,其中的每一項(xiàng)還有一個(gè)指針指向二叉樹(shù)形式的路由表的某個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)通常為輔助表這一項(xiàng)所對(duì)應(yīng)的子樹(shù)的頭結(jié)點(diǎn),可用于添加刪除路由時(shí)盡快定位相關(guān)節(jié)點(diǎn)。

由上實(shí)例可知,通過(guò)本實(shí)例方案即可實(shí)現(xiàn)只查cache就能得到路由結(jié)果,避免了較慢的路由表查找,最大限度的優(yōu)化了查找效率,提升了轉(zhuǎn)發(fā)報(bào)文的性能。

以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書(shū)中描述的只是說(shuō)明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書(shū)及其等效物界定。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
犍为县| 韶关市| 周至县| 惠州市| 河源市| 会理县| 旬邑县| 宾川县| 安国市| 乡城县| 炉霍县| 松滋市| 柯坪县| 周宁县| 瑞金市| 东丽区| 玉门市| 盱眙县| 平顺县| 通化市| 南平市| 綦江县| 大悟县| 建德市| 汶川县| 隆回县| 潜江市| 高邮市| 沁阳市| 长武县| 宝山区| 卢湾区| 固镇县| 温州市| 石门县| 鹤庆县| 红原县| 朔州市| 三台县| 普定县| 临澧县|