專利名稱:基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法及路由器體系結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及到路由器體系結(jié)構(gòu)的設(shè)計(jì)領(lǐng)域,特指一種基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法及路由器體系結(jié)構(gòu)。
背景技術(shù):
隨著Internet鏈路速率和IP前綴數(shù)目的不斷增長(zhǎng),對(duì)Internet互聯(lián)的核心設(shè)備-路由器提出了越來(lái)越高的要求。新一代高性能路由器面臨著幾個(gè)方面的挑戰(zhàn)鏈路速率越來(lái)越高,目前已經(jīng)從OC192(10Gb/s)向OC768(40Gb/s)甚至OC3072(160Gb/s)發(fā)展;路由表規(guī)模越來(lái)越大,目前路由表中的前綴數(shù)目已經(jīng)達(dá)到50萬(wàn)條并且仍在繼續(xù)增長(zhǎng),不久的將來(lái)將達(dá)到100萬(wàn)條;隨著IPv6協(xié)議的應(yīng)用,路由表中的前綴長(zhǎng)度將從32位增長(zhǎng)到128位。上述發(fā)展趨勢(shì)對(duì)于路由器的轉(zhuǎn)發(fā)和交換能力提出了嚴(yán)峻的挑戰(zhàn)。
目前已有的路由器體系結(jié)構(gòu)是基于精確轉(zhuǎn)發(fā)、集中式交換的體系結(jié)構(gòu),即首先由轉(zhuǎn)發(fā)部件對(duì)報(bào)文進(jìn)行精確查表確定其轉(zhuǎn)發(fā)決策,然后由集中式的交換網(wǎng)絡(luò)將報(bào)文交換至目的端口。在這種傳統(tǒng)的路由器體系結(jié)構(gòu)中,轉(zhuǎn)發(fā)部件難以滿足大規(guī)模路由轉(zhuǎn)發(fā)表的存儲(chǔ)需求和線速查表的速度需求,而集中式的交換網(wǎng)絡(luò)難以滿足端口速率和端口數(shù)目的需求。更重要的是,在固有的路由器體系結(jié)構(gòu)下,路由器轉(zhuǎn)發(fā)和交換能力受限于存儲(chǔ)和邏輯器件工藝水平的發(fā)展速度遠(yuǎn)遠(yuǎn)落后于鏈路速率的增長(zhǎng)速度。目前國(guó)內(nèi)外研究界也認(rèn)識(shí)到僅僅對(duì)路由器的轉(zhuǎn)發(fā)技術(shù)和交換技術(shù)進(jìn)行研究和改進(jìn),已經(jīng)難以滿足未來(lái)互聯(lián)網(wǎng)發(fā)展的需要,必須在路由器體系結(jié)構(gòu)上尋求創(chuàng)新和突破,并在新型路由器體系結(jié)構(gòu)下研究新的報(bào)文轉(zhuǎn)發(fā)技術(shù)和交換技術(shù),這也是近年來(lái)國(guó)內(nèi)外對(duì)路由器技術(shù)進(jìn)行研究的熱點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題就在于針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問(wèn)題,本發(fā)明提供一種通過(guò)開(kāi)發(fā)轉(zhuǎn)發(fā)和交換操作的并行度,以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換,從而降低對(duì)單個(gè)轉(zhuǎn)發(fā)交換部件的要求,提高路由器的整體轉(zhuǎn)發(fā)和交換能力的基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法及路由器體系結(jié)構(gòu)。
為解決上述技術(shù)問(wèn)題,本發(fā)明提出的解決方案為一種基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法,其特征在于步驟為
(1)路由轉(zhuǎn)發(fā)表的分解將原始的IP路由轉(zhuǎn)發(fā)表自上而下分解成S層,S等于路由器流水線的級(jí)數(shù),構(gòu)成路由轉(zhuǎn)發(fā)表的最小單位為子樹(shù),路由轉(zhuǎn)發(fā)表經(jīng)分解后成為上下關(guān)聯(lián)的子樹(shù)結(jié)構(gòu);子樹(shù)的輸出端口集合為在原始的IP查找樹(shù)結(jié)構(gòu)中,該子樹(shù)的根結(jié)點(diǎn)可到達(dá)的所有前綴結(jié)點(diǎn)對(duì)應(yīng)的輸出端口集合;(2)子樹(shù)到轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的映射將路由表分割后得到的子樹(shù)映射到轉(zhuǎn)發(fā)交換結(jié)點(diǎn),每個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)具有獨(dú)立的轉(zhuǎn)發(fā)交換功能,能夠獨(dú)立執(zhí)行報(bào)文轉(zhuǎn)發(fā)并根據(jù)轉(zhuǎn)發(fā)結(jié)果將報(bào)文發(fā)送到正確的輸出端口而不依賴于其它任何轉(zhuǎn)發(fā)交換操作,數(shù)個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)組成多級(jí)流水線結(jié)構(gòu),以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換;(3)基于子樹(shù)查找的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的確定報(bào)文到達(dá)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)時(shí),根據(jù)其目的IP地址相應(yīng)的位信息搜索子樹(shù),決定其交換路徑。
在步驟(2)中,將第i層的第j′棵子樹(shù)記做STij′,其輸出端口集合表示為STOij′,1≤i≤S,j′=1,2,3,...;轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的輸出端口集合則定義為位于第i級(jí)的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)可通過(guò)第i+1級(jí)…第N級(jí)的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)交換可達(dá)的輸出端口集合,第i級(jí)的第j個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)記做Fij,其輸出端口集合表示為FOij,1≤j≤K,K為每級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的個(gè)數(shù),從第i級(jí)開(kāi)始執(zhí)行以下步驟,直到i=S,變量i初始化為1(1)對(duì)于第i級(jí)的每一個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)Fij,將那些輸出端口集合STOij包含于FOij的子樹(shù)映射到Fij,第i層所有子樹(shù)的集合表示為Ωi,映射到Fij的子樹(shù)集合表示為Ωij;如果ΩiΩi1∪...∪ΩiK則映射成功,將變量i加1返回到步驟(1);否則第i層存在不能映射到第i級(jí)任何轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的子樹(shù),跳轉(zhuǎn)至步驟(2);(2)采取子樹(shù)遷移的辦法來(lái)解決映射失敗的問(wèn)題將不能映射的子樹(shù)遷移到其父子樹(shù)所在的轉(zhuǎn)發(fā)交換節(jié)點(diǎn),由于在原始的IP查找樹(shù)中,子樹(shù)的輸出端口集合具有可包含性,即任何子樹(shù)的輸出端口集合必定包含其孩子子樹(shù)的輸出端口集合,因此父子樹(shù)所在的轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的輸出端口集合也一定包含被遷移的孩子子樹(shù)的輸出端口集合,故該遷移操作符合子樹(shù)的映射條件a)將被遷移的孩子子樹(shù)從第i層的子樹(shù)集合Ω1中刪除;b)將被遷移子樹(shù)的所有后代子樹(shù)添加到其上一層的子樹(shù)集合,變量i加1返回到步驟(1)。
所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的部分轉(zhuǎn)發(fā)引擎對(duì)到達(dá)報(bào)文進(jìn)行部分查表的處理過(guò)程為(1)報(bào)文是否附有目的端口?“是”,則轉(zhuǎn)下述步驟(3),“否”則轉(zhuǎn)下述步驟(2);
(2)提取報(bào)文目的IP地址對(duì)應(yīng)的位信息,查找子樹(shù)表,如果匹配前綴結(jié)點(diǎn),則為報(bào)文附上目的端口;如果匹配邊界結(jié)點(diǎn),則從邊界結(jié)點(diǎn)可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合中選擇負(fù)載較輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果同時(shí)匹配前綴結(jié)點(diǎn)和邊界結(jié)點(diǎn),則記錄所匹配前綴的下一跳信息,同時(shí)為報(bào)文選擇輕負(fù)載的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果未匹配任何結(jié)點(diǎn),則判定是否存在最近匹配的前綴信息,若存在則將其作為最長(zhǎng)匹配前綴,為報(bào)文附上路由標(biāo)簽,否則為報(bào)文附上缺省目的端口;為了獲得最長(zhǎng)匹配前綴,只記錄最近匹配的前綴,當(dāng)查找失敗時(shí),最近匹配前綴就是最長(zhǎng)匹配前綴;(3)交換部件處理。
所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的交換部件對(duì)輸入報(bào)文的處理過(guò)程為(1)交換請(qǐng)求含目的端口?“是”則轉(zhuǎn)下述步驟(2),“否”則轉(zhuǎn)下述步驟(4);(2)根據(jù)目的端口查找交換表,得到所有匹配目的端口的下一級(jí)可用轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合;(3)從全部可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)中選擇負(fù)載最輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為報(bào)文的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);(4)根據(jù)目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)標(biāo)識(shí)將報(bào)文緩沖到對(duì)應(yīng)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的輸出隊(duì)列。
一種基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu),其特征在于它包括數(shù)個(gè)具有獨(dú)立的轉(zhuǎn)發(fā)交換功能,能夠獨(dú)立執(zhí)行報(bào)文轉(zhuǎn)發(fā)并根據(jù)轉(zhuǎn)發(fā)結(jié)果將報(bào)文發(fā)送到正確的輸出端口的轉(zhuǎn)發(fā)交換結(jié)點(diǎn),每個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)僅完成報(bào)文的部分轉(zhuǎn)發(fā)操作,直至出口結(jié)點(diǎn)才能得到報(bào)文的最終轉(zhuǎn)發(fā)決策;數(shù)個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)組成多級(jí)流水線結(jié)構(gòu),以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換。
所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的部分轉(zhuǎn)發(fā)引擎對(duì)到達(dá)報(bào)文進(jìn)行部分查表的處理過(guò)程為(1)報(bào)文是否附有目的端口?“是”,則轉(zhuǎn)下述步驟(3),“否”則轉(zhuǎn)下述步驟(2);(2)提取報(bào)文目的IP地址對(duì)應(yīng)的位信息,查找子樹(shù)表,如果匹配前綴結(jié)點(diǎn),則為報(bào)文附上目的端口;如果匹配邊界結(jié)點(diǎn),則從邊界結(jié)點(diǎn)可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合中選擇負(fù)載較輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果同時(shí)匹配前綴結(jié)點(diǎn)和邊界結(jié)點(diǎn),則記錄所匹配前綴的下一跳信息,同時(shí)為報(bào)文選擇輕負(fù)載的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果未匹配任何結(jié)點(diǎn),則判定是否存在最近匹配的前綴信息,若存在則將其作為最長(zhǎng)匹配前綴,為報(bào)文附上路由標(biāo)簽,否則為報(bào)文附上缺省目的端口;為了獲得最長(zhǎng)匹配前綴,只記錄最近匹配的前綴,當(dāng)查找失敗時(shí),最近匹配前綴就是最長(zhǎng)匹配前綴;(3)交換部件處理。
所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的交換部件對(duì)輸入報(bào)文的處理過(guò)程為(1)交換請(qǐng)求含目的端口?“是”則轉(zhuǎn)下述步驟(2),“否”則轉(zhuǎn)下述步驟(4);(2)根據(jù)目的端口查找交換表,得到所有匹配目的端口的下一級(jí)可用轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合;(3)從全部可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)中選擇負(fù)載最輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為報(bào)文的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);(4)根據(jù)目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)標(biāo)識(shí)將報(bào)文緩沖到對(duì)應(yīng)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的輸出隊(duì)列。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)就在于1、降低了報(bào)文查表交換的硬件實(shí)現(xiàn)復(fù)雜度。本發(fā)明將分解后的路由表分散在各個(gè)FSN結(jié)點(diǎn),降低了單個(gè)轉(zhuǎn)發(fā)結(jié)點(diǎn)IP路由查找的復(fù)雜度以及對(duì)路由表存儲(chǔ)空間的要求,緩解了高鏈路速率和大容量轉(zhuǎn)發(fā)表在路由器體系結(jié)構(gòu)設(shè)計(jì)中的尖銳矛盾;FSN結(jié)點(diǎn)直接對(duì)變長(zhǎng)報(bào)文進(jìn)行交換,消除了對(duì)報(bào)文的分割和重組操作,報(bào)文調(diào)度過(guò)程簡(jiǎn)單,消除了系統(tǒng)加速的必要性,降低了交換操作的復(fù)雜度,易于低成本的硬件實(shí)現(xiàn)并獲得較高性能;2、復(fù)用多個(gè)低速FSN結(jié)點(diǎn)構(gòu)成多級(jí)流水線結(jié)構(gòu),以低成本的執(zhí)行部件獲得更高的交換性能和IP查找速率;3、報(bào)文轉(zhuǎn)發(fā)交換流水線的深度、資源復(fù)用度(每一級(jí)FSN結(jié)點(diǎn)的個(gè)數(shù))、FSN結(jié)點(diǎn)端口數(shù)目均可自由配置,因而具有很好的靈活度和可擴(kuò)展性;4、充分利用路由器多路徑轉(zhuǎn)發(fā)的優(yōu)點(diǎn)。報(bào)文最終的輸出端口在整個(gè)流水交換的過(guò)程中都不會(huì)被確定。FSN結(jié)點(diǎn)根據(jù)多個(gè)輸出端口對(duì)應(yīng)的下一級(jí)可用的FSN結(jié)點(diǎn)的負(fù)載狀況,為報(bào)文選擇輕負(fù)載的交換路徑;直到最后一級(jí)FSN結(jié)點(diǎn)根據(jù)輸出鏈路的忙閑狀況為報(bào)文選擇最終的輸出端口。
圖1是本發(fā)明中基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu);圖2是本發(fā)明將原始IP查找樹(shù)分解后得到的子樹(shù)結(jié)構(gòu);圖3是本發(fā)明中將圖2中的子樹(shù)映射到圖1所示的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)后得到的映射結(jié)果;圖4是本發(fā)明中子樹(shù)映射失敗時(shí),子樹(shù)遷移示意圖;圖5是FSN結(jié)點(diǎn)的部分轉(zhuǎn)發(fā)引擎對(duì)到達(dá)報(bào)文進(jìn)行部分查表處理的流程示意圖;圖6是FSN結(jié)點(diǎn)的交換部件對(duì)輸入報(bào)文處理的流程示意圖。
具體實(shí)施例方式
以下將結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
參見(jiàn)圖1、圖2、圖3和圖4所示,本發(fā)明的基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu),它包括數(shù)個(gè)具有獨(dú)立的轉(zhuǎn)發(fā)交換功能,能夠獨(dú)立執(zhí)行報(bào)文轉(zhuǎn)發(fā)并根據(jù)轉(zhuǎn)發(fā)結(jié)果將報(bào)文發(fā)送到正確的輸出端口的轉(zhuǎn)發(fā)交換結(jié)點(diǎn),我們稱之為轉(zhuǎn)發(fā)交換結(jié)點(diǎn)FSN(Forwardingand Switching Node)。每個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)僅完成報(bào)文的部分轉(zhuǎn)發(fā)操作,直至出口結(jié)點(diǎn)才能得到報(bào)文的最終轉(zhuǎn)發(fā)決策;數(shù)個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)組成多級(jí)流水線結(jié)構(gòu),以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換。如圖1所示,基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu)實(shí)例中,共由4級(jí)2×2的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)FSN構(gòu)成,到達(dá)的報(bào)文被分派到兩個(gè)FSN結(jié)點(diǎn)并行處理,每個(gè)FSN結(jié)點(diǎn)執(zhí)行部分IP查找之后確定下一級(jí)可用的FSN集合,將報(bào)文緩沖到相應(yīng)的輸出隊(duì)列中等待交換到下一級(jí)FSN結(jié)點(diǎn)。
本發(fā)明的路由器體系結(jié)構(gòu)采用的轉(zhuǎn)發(fā)交換方法為(1)路由轉(zhuǎn)發(fā)表的分解將原始的IP路由轉(zhuǎn)發(fā)表自上而下分解成S層,S等于路由器流水線的級(jí)數(shù),構(gòu)成路由轉(zhuǎn)發(fā)表的最小單位為子樹(shù),路由轉(zhuǎn)發(fā)表經(jīng)分解后成為上下關(guān)聯(lián)的子樹(shù)結(jié)構(gòu);子樹(shù)的輸出端口集合為在原始的IP查找樹(shù)結(jié)構(gòu)中,該子樹(shù)的根結(jié)點(diǎn)可到達(dá)的所有前綴結(jié)點(diǎn)對(duì)應(yīng)的輸出端口集合;(2)子樹(shù)到轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的映射將路由表分割后得到的子樹(shù)映射到轉(zhuǎn)發(fā)交換結(jié)點(diǎn),每個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)具有獨(dú)立的轉(zhuǎn)發(fā)交換功能,能夠獨(dú)立執(zhí)行報(bào)文轉(zhuǎn)發(fā)并根據(jù)轉(zhuǎn)發(fā)結(jié)果將報(bào)文發(fā)送到正確的輸出端口而不依賴于其它任何轉(zhuǎn)發(fā)交換操作,數(shù)個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)組成多級(jí)流水線結(jié)構(gòu),以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換;(3)基于子樹(shù)查找的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的確定報(bào)文到達(dá)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)時(shí),根據(jù)其目的IP地址相應(yīng)的位信息搜索子樹(shù),決定其交換路徑。報(bào)文到達(dá)FSN結(jié)點(diǎn)時(shí),根據(jù)其目的IP地址相應(yīng)的位信息搜索子樹(shù),決定其交換路徑。每棵子樹(shù)包含有效前綴的下一跳信息以及下一級(jí)可用的FSN結(jié)點(diǎn)信息。
在步驟(2)中,將第i層的第j′棵子樹(shù)記做STij′,其輸出端口集合表示為STOij′,1≤i≤S,j′=1,2,3,...;轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的輸出端口集合則定義為位于第i級(jí)的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)可通過(guò)第i+1級(jí)…第N級(jí)的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)交換可達(dá)的輸出端口集合,第i級(jí)的第j個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)記做Fij,其輸出端口集合表示為FOij,1≤j≤K,K為每級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的個(gè)數(shù),從第i級(jí)開(kāi)始執(zhí)行以下步驟,直到i=S,變量i初始化為1(1)對(duì)于第i級(jí)的每一個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)Fij,將那些輸出端口集合STOij包含于FOij的子樹(shù)映射到Fij,第i層所有子樹(shù)的集合表示為Ωi,映射到Fij的子樹(shù)集合表示為Ωij;如果ΩiΩi1∪...∪ΩiK則映射成功,將變量i加1返回到步驟(1);否則第i層存在不能映射到第i級(jí)任何轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的子樹(shù),跳轉(zhuǎn)至步驟(2);(2)采取子樹(shù)遷移的辦法來(lái)解決映射失敗的問(wèn)題將不能映射的子樹(shù)遷移到其父子樹(shù)所在的轉(zhuǎn)發(fā)交換節(jié)點(diǎn),由于在原始的IP查找樹(shù)中,子樹(shù)的輸出端口集合具有可包含性,即任何子樹(shù)的輸出端口集合必定包含其孩子子樹(shù)的輸出端口集合,因此父子樹(shù)所在的轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的輸出端口集合也一定包含被遷移的孩子子樹(shù)的輸出端口集合,故該遷移操作符合子樹(shù)的映射條件a)將被遷移的孩子子樹(shù)從第i層的子樹(shù)集合Ωi中刪除;b)將被遷移子樹(shù)的所有后代子樹(shù)添加到其上一層的子樹(shù)集合,變量i加1返回到步驟(1)。
被遷移的孩子子樹(shù)并不作為獨(dú)立的子樹(shù)而存在,也不為其分配子樹(shù)標(biāo)識(shí),父子樹(shù)和所有被遷移的孩子子樹(shù)作為一個(gè)整體構(gòu)成一棵新的子樹(shù)。因?yàn)槿魏尾檎疫^(guò)程都只會(huì)先訪問(wèn)父子樹(shù),由相應(yīng)的后繼IP目的地址的位信息來(lái)觸發(fā)對(duì)孩子子樹(shù)的訪問(wèn),父子樹(shù)中保存指向孩子子樹(shù)塊的指針。
參見(jiàn)圖5所示,轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的部分轉(zhuǎn)發(fā)引擎對(duì)到達(dá)報(bào)文進(jìn)行部分查表的處理過(guò)程為報(bào)文是否附有目的端口?“是”,則轉(zhuǎn)下述步驟(3),“否”則轉(zhuǎn)下述步驟(2);(2)提取報(bào)文目的IP地址對(duì)應(yīng)的位信息,查找子樹(shù)表,如果匹配前綴結(jié)點(diǎn),則為報(bào)文附上目的端口;如果匹配邊界結(jié)點(diǎn),則從邊界結(jié)點(diǎn)可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合中選擇負(fù)載較輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果同時(shí)匹配前綴結(jié)點(diǎn)和邊界結(jié)點(diǎn),則記錄所匹配前綴的下一跳信息,同時(shí)為報(bào)文選擇輕負(fù)載的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果未匹配任何結(jié)點(diǎn),則判定是否存在最近匹配的前綴信息,若存在則將其作為最長(zhǎng)匹配前綴,為報(bào)文附上路由標(biāo)簽,否則為報(bào)文附上缺省目的端口;為了獲得最長(zhǎng)匹配前綴,只記錄最近匹配的前綴,當(dāng)查找失敗時(shí),最近匹配前綴就是最長(zhǎng)匹配前綴;(3)交換部件處理。
參見(jiàn)圖6所示,轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的交換部件對(duì)輸入報(bào)文的處理過(guò)程為(1)交換請(qǐng)求含目的端口?“是”則轉(zhuǎn)下述步驟(2),“否”則轉(zhuǎn)下述步驟(4);(2)根據(jù)目的端口查找交換表,得到所有匹配目的端口的下一級(jí)可用轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合;(3)從全部可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)中選擇負(fù)載最輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為報(bào)文的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);(4)根據(jù)目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)標(biāo)識(shí)將報(bào)文緩沖到對(duì)應(yīng)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的輸出隊(duì)列。
下面以一個(gè)實(shí)例進(jìn)一步對(duì)本發(fā)明做詳細(xì)說(shuō)明。圖2顯示了將一個(gè)帶有10個(gè)前綴的原始IP查找樹(shù)分解后得到的子樹(shù)結(jié)構(gòu),按照自上而下、從左到右的順序?yàn)槊恳豢米訕?shù)分配唯一的標(biāo)識(shí)符,作為訪問(wèn)子樹(shù)的地址。子樹(shù)到轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的映射算法必須能夠保證每個(gè)報(bào)文能被交換到正確的目的端口,故而采用一種基于輸出端口集合的子樹(shù)映射算法。圖3(a)顯示了圖2中用虛線勾勒的子樹(shù)的輸出端口集合,圖3(b)則顯示了圖1中每一級(jí)FSN結(jié)點(diǎn)的輸出端口集合。首先STO11包含于第1級(jí)每一個(gè)FSN結(jié)點(diǎn)的輸出端口集合中,即STO11={1,2,3,4}FO11,F(xiàn)O12,F(xiàn)O13,F(xiàn)O14,故將子樹(shù)ST11映射到第一級(jí)全部的FSN結(jié)點(diǎn)中。又因?yàn)镾TO21={2,3,4)FO21={1,2,3,4),將子樹(shù)ST21映射到FSN結(jié)點(diǎn)F21,即ST21∈Ω21;同理,由STO22={1,2,3,4)FO21={1,2,3,4}得到ST22∈Ω21,從而得到Ω21={ST21,ST22),同理可得Ω22,Ω23,Ω24,如圖3(c)所示,由Ω22={ST21,ST22}Ω21∪Ω22∪Ω23∪Ω24知第二層子樹(shù)映射成功,映射算法推進(jìn)到第3級(jí)。第3級(jí)的子樹(shù)映射結(jié)果如圖3(c)的陰影部分所示,Ω3={ST31,ST32,ST33} Ω31∪Ω32∪Ω33∪Ω34,由于STO33={1,3}不能被映射到第3級(jí)的任何轉(zhuǎn)發(fā)交換結(jié)點(diǎn),因此進(jìn)入子樹(shù)的遷移步驟。圖4顯示了映射失敗的子樹(shù)ST33遷移到其父子樹(shù)ST22所在的FSN結(jié)點(diǎn)后,與父子樹(shù)作為一個(gè)整體構(gòu)成一個(gè)新的子樹(shù)ST22。執(zhí)行子樹(shù)塊查找時(shí),先訪問(wèn)父子樹(shù),當(dāng)搜索到達(dá)孩子子樹(shù)根結(jié)點(diǎn)時(shí),根據(jù)父子樹(shù)保存的指針信息,訪問(wèn)孩子子樹(shù)。這樣,第三層中映射失敗的子樹(shù)ST33經(jīng)過(guò)遷移后,從子樹(shù)集合Ω3中刪除,其孩子子樹(shù)ST43加入到子樹(shù)集合Ω3,最終得到如圖3(c′)所示的映射結(jié)果,圖3(a′)顯示了遷移操作之后STO集合的變化。
在基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu)中,根據(jù)子樹(shù)的搜索結(jié)果來(lái)決策報(bào)文的交換路徑。每一棵子樹(shù)包括前綴的下一跳信息及其孩子子樹(shù)在下一級(jí)FSN結(jié)點(diǎn)的分布信息。因此包含路由信息的結(jié)點(diǎn)分為兩種前綴結(jié)點(diǎn)以及孩子子樹(shù)的根結(jié)點(diǎn)我們稱之為邊界結(jié)點(diǎn)。前綴結(jié)點(diǎn)保存其下一跳信息;邊界結(jié)點(diǎn)保存其孩子子樹(shù)在下一級(jí)FSN結(jié)點(diǎn)的分布信息,即包含該孩子子樹(shù)拷貝的FSN結(jié)點(diǎn)集合。這些信息從子樹(shù)映射階段得到。
在報(bào)文流水轉(zhuǎn)發(fā)的過(guò)程中,一旦匹配最長(zhǎng)前綴,則根據(jù)最長(zhǎng)匹配前綴的下一跳信息為報(bào)文附上目的端口,后繼FSN結(jié)點(diǎn)根據(jù)報(bào)文的目的端口交換報(bào)文,無(wú)須再進(jìn)行子樹(shù)查找操作。目的端口對(duì)應(yīng)的下一級(jí)可用FSN結(jié)點(diǎn)就是那些輸出端口集合中包含了該輸出端口的下一級(jí)FSN結(jié)點(diǎn),這些路由信息完全由FSN結(jié)點(diǎn)的互聯(lián)拓?fù)浣Y(jié)構(gòu)決定,與子樹(shù)的映射結(jié)果無(wú)關(guān)。為了確保報(bào)文能夠被發(fā)送到正確的目的端口,F(xiàn)SN結(jié)點(diǎn)需保存其輸出端口集合中每個(gè)輸出端口的下一級(jí)可用FSN結(jié)點(diǎn)集合,這些和輸出端口相關(guān)的路由信息保存在FSN結(jié)點(diǎn)交換部件的交換表中;而那些和子樹(shù)相關(guān)的路由信息,即有效前綴的下一跳信息以及邊界結(jié)點(diǎn)對(duì)應(yīng)的下一級(jí)可用FSN結(jié)點(diǎn)集合則保存在部分轉(zhuǎn)發(fā)引擎的子樹(shù)表里。
權(quán)利要求
1.一種基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法,其特征在于步驟為(1)路由轉(zhuǎn)發(fā)表的分解將原始的IP路由轉(zhuǎn)發(fā)表自上而下分解成S層,S等于路由器流水線的級(jí)數(shù),構(gòu)成路由轉(zhuǎn)發(fā)表的最小單位為子樹(shù),路由轉(zhuǎn)發(fā)表經(jīng)分解后成為上下關(guān)聯(lián)的子樹(shù)結(jié)構(gòu);子樹(shù)的輸出端口集合為在原始的IP查找樹(shù)結(jié)構(gòu)中,該子樹(shù)的根結(jié)點(diǎn)可到達(dá)的所有前綴結(jié)點(diǎn)對(duì)應(yīng)的輸出端口集合;(2)子樹(shù)到轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的映射將路由表分割后得到的子樹(shù)映射到轉(zhuǎn)發(fā)交換結(jié)點(diǎn),每個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)具有獨(dú)立的轉(zhuǎn)發(fā)交換功能,能夠獨(dú)立執(zhí)行報(bào)文轉(zhuǎn)發(fā)并根據(jù)轉(zhuǎn)發(fā)結(jié)果將報(bào)文發(fā)送到正確的輸出端口而不依賴于其它任何轉(zhuǎn)發(fā)交換操作,數(shù)個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)組成多級(jí)流水線結(jié)構(gòu),以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換(3)基于子樹(shù)查找的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的確定報(bào)文到達(dá)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)時(shí),根據(jù)其目的IP地址相應(yīng)的位信息搜索子樹(shù),決定其交換路徑。
2.根據(jù)權(quán)利要求l所述的基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法,其特征在于在步驟(2)中,將第i層的第j′棵子樹(shù)記做STij′,其輸出端口集合表示為。STOij′,1≤i≤S,j’=1,2,3,...;轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的輸出端口集合則定義為位于第i級(jí)的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)可通過(guò)第i+1級(jí)…第N級(jí)的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)交換可達(dá)的輸出端口集合,第i級(jí)的第j個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)記做Fij,其輸出端口集合表示為FOij,1≤j≤K,K為每級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的個(gè)數(shù),從第i級(jí)開(kāi)始執(zhí)行以下步驟,直到i=S,變量i初始化為1(1)對(duì)于第i級(jí)的每一個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)Fij,將那些輸出端口集合STOij,包含于FOij的子樹(shù)映射到Fij,第i層所有子樹(shù)的集合表示為Ωi,映射到Fij的子樹(shù)集合表示為Ωij;如果ΩiΩi1∪...∪ΩiK則映射成功,將變量i加1返回到步驟(1);否則第i層存在不能映射到第i級(jí)任何轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的子樹(shù),跳轉(zhuǎn)至步驟(2);(2)采取子樹(shù)遷移的辦法來(lái)解決映射失敗的問(wèn)題將不能映射的子樹(shù)遷移到其父子樹(shù)所在的轉(zhuǎn)發(fā)交換節(jié)點(diǎn),由于在原始的IP查找樹(shù)中,子樹(shù)的輸出端口集合具有可包含性,即任何子樹(shù)的輸出端口集合必定包含其孩子子樹(shù)的輸出端口集合,因此父子樹(shù)所在的轉(zhuǎn)發(fā)交換節(jié)點(diǎn)的輸出端口集合也一定包含被遷移的孩子子樹(shù)的輸出端口集合,故該遷移操作符合子樹(shù)的映射條件a)將被遷移的孩子子樹(shù)從第i層的子樹(shù)集合Ωi中刪除;b)將被遷移子樹(shù)的所有后代子樹(shù)添加到其上一層的子樹(shù)集合,變量i加1返回到步驟(1)。
3.根據(jù)權(quán)利要求1或2所述的基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法,其特征在于所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的部分轉(zhuǎn)發(fā)引擎對(duì)到達(dá)報(bào)文進(jìn)行部分查表的處理過(guò)程為(1)報(bào)文是否附有目的端口?“是”,則轉(zhuǎn)下述步驟(3),“否”則轉(zhuǎn)下述步驟(2);(2)提取報(bào)文目的IP地址對(duì)應(yīng)的位信息,查找子樹(shù)表,如果匹配前綴結(jié)點(diǎn),則為報(bào)文附上目的端口;如果匹配邊界結(jié)點(diǎn),則從邊界結(jié)點(diǎn)可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合中選擇負(fù)載較輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果同時(shí)匹配前綴結(jié)點(diǎn)和邊界結(jié)點(diǎn),則記錄所匹配前綴的下一跳信息,同時(shí)為報(bào)文選擇輕負(fù)載的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果未匹配任何結(jié)點(diǎn),則判定是否存在最近匹配的前綴信息,若存在則將其作為最長(zhǎng)匹配前綴,為報(bào)文附上路由標(biāo)簽,否則為報(bào)文附上缺省目的端口;為了獲得最長(zhǎng)匹配前綴,只記錄最近匹配的前綴,當(dāng)查找失敗時(shí),最近匹配前綴就是最長(zhǎng)匹配前綴;(3)交換部件處理。
4.根據(jù)權(quán)利要求1或2所述的基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法,其特征在于所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的交換部件對(duì)輸入報(bào)文的處理過(guò)程為(1)交換請(qǐng)求含目的端口?“是”則轉(zhuǎn)下述步驟(2),“否”則轉(zhuǎn)下述步驟(4);(2)根據(jù)目的端口查找交換表,得到所有匹配目的端口的下一級(jí)可用轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合;(3)從全部可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)中選擇負(fù)載最輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為報(bào)文的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);(4)根據(jù)目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)標(biāo)識(shí)將報(bào)文緩沖到對(duì)應(yīng)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的輸出隊(duì)列。
5.一種基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu),其特征在于它包括數(shù)個(gè)具有獨(dú)立的轉(zhuǎn)發(fā)交換功能,能夠獨(dú)立執(zhí)行報(bào)文轉(zhuǎn)發(fā)并根據(jù)轉(zhuǎn)發(fā)結(jié)果將報(bào)文發(fā)送到正確的輸出端口的轉(zhuǎn)發(fā)交換結(jié)點(diǎn),每個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)僅完成報(bào)文的部分轉(zhuǎn)發(fā)操作,直至出口結(jié)點(diǎn)才能得到報(bào)文的最終轉(zhuǎn)發(fā)決策;數(shù)個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)組成多級(jí)流水線結(jié)構(gòu),以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換。
6.根據(jù)權(quán)利要求5所述的基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu),其特征在于所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的部分轉(zhuǎn)發(fā)引擎對(duì)到達(dá)報(bào)文進(jìn)行部分查表的處理過(guò)程為(1)報(bào)文是否附有目的端口?“是”,則轉(zhuǎn)下述步驟(3),“否”則轉(zhuǎn)下述步驟(2);(2)提取報(bào)文目的IP地址對(duì)應(yīng)的位信息,查找子樹(shù)表,如果匹配前綴結(jié)點(diǎn),則為報(bào)文附上目的端口;如果匹配邊界結(jié)點(diǎn),則從邊界結(jié)點(diǎn)可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合中選擇負(fù)載較輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果同時(shí)匹配前綴結(jié)點(diǎn)和邊界結(jié)點(diǎn),則記錄所匹配前綴的下一跳信息,同時(shí)為報(bào)文選擇輕負(fù)載的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);如果未匹配任何結(jié)點(diǎn),則判定是否存在最近匹配的前綴信息,若存在則將其作為最長(zhǎng)匹配前綴,為報(bào)文附上路由標(biāo)簽,否則為報(bào)文附上缺省目的端口;為了獲得最長(zhǎng)匹配前綴,只記錄最近匹配的前綴,當(dāng)查找失敗時(shí),最近匹配前綴就是最長(zhǎng)匹配前綴;(3)交換部件處理。
7.根據(jù)權(quán)利要求5所述的基于部分轉(zhuǎn)發(fā)流水交換的路由器體系結(jié)構(gòu),其特征在于所述轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的交換部件對(duì)輸入報(bào)文的處理過(guò)程為(1)交換請(qǐng)求含目的端口?“是”則轉(zhuǎn)下述步驟(2),“否”則轉(zhuǎn)下述步驟(4);(2)根據(jù)目的端口查找交換表,得到所有匹配目的端口的下一級(jí)可用轉(zhuǎn)發(fā)交換結(jié)點(diǎn)集合;(3)從全部可用的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)中選擇負(fù)載最輕的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)作為報(bào)文的目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn);(4)根據(jù)目的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)標(biāo)識(shí)將報(bào)文緩沖到對(duì)應(yīng)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的輸出隊(duì)列。
全文摘要
本發(fā)明公開(kāi)了一種基于部分轉(zhuǎn)發(fā)流水交換的轉(zhuǎn)發(fā)交換方法及路由器體系結(jié)構(gòu)。在這種體系結(jié)構(gòu)下,路由器包括數(shù)個(gè)具有獨(dú)立的轉(zhuǎn)發(fā)交換功能,能夠獨(dú)立執(zhí)行報(bào)文轉(zhuǎn)發(fā)并根據(jù)轉(zhuǎn)發(fā)結(jié)果交換報(bào)文的轉(zhuǎn)發(fā)交換結(jié)點(diǎn)。每個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)僅完成報(bào)文的部分轉(zhuǎn)發(fā)操作,直至出口結(jié)點(diǎn)才能得到報(bào)文的最終轉(zhuǎn)發(fā)決策;數(shù)個(gè)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)組成多級(jí)流水線結(jié)構(gòu),以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換。其轉(zhuǎn)發(fā)交換方法為路由轉(zhuǎn)發(fā)表的分解→子樹(shù)到轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的映射→基于子樹(shù)查找的下一級(jí)轉(zhuǎn)發(fā)交換結(jié)點(diǎn)的確定。本發(fā)明通過(guò)開(kāi)發(fā)轉(zhuǎn)發(fā)和交換操作的并行度,以流水的方式執(zhí)行報(bào)文轉(zhuǎn)發(fā)和交換,從而降低對(duì)單個(gè)轉(zhuǎn)發(fā)交換部件的要求,提高路由器的整體轉(zhuǎn)發(fā)和交換能力。
文檔編號(hào)H04L12/56GK101018202SQ20071003440
公開(kāi)日2007年8月15日 申請(qǐng)日期2007年2月9日 優(yōu)先權(quán)日2007年2月9日
發(fā)明者孫志剛, 戴藝, 管劍波, 時(shí)向泉, 陳一驕, 呂高峰 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)