二維路由

二維路由

二維路由為更靈活地控制轉發分組,將源地址加入路由體系,使轉發表表項結構變為Pd,Ps,action,轉發時先匹配目的前綴保證可達性。

二維路由概念

為滿足線速轉發,轉發表採用二維Patricia Trie結構,即在構造好的”目的Patricia樹”各節點下再構造相應”源Patricia樹”,實現基於多維度的轉發。

二維路由的優勢

負載均衡

傳統網路基於單一目的地址路由,路由器區分不同流的粒度比較粗。在二維路由中,網路基於源和目的地址同時路由,可以細粒度地區分不同的流。當某條鏈路上去往同一個目的地的流量過於集中時,可以利用源地址,將流量均衡到其它鏈路上去,從而實現網路負載均衡。

多宿主技術

傳統網路使用與網路提供商無關的地址(Provider IndependentAddress),而PI地址由於無法聚合,使得網路中的路由表急劇膨脹。為了解決這個問題,與網路提供商相關的地址(Provider-AggregatableAddress)被提出來,但是PA地址使得網路管理者的配置變得極為複雜。當通往一個提供商的鏈路出現故障以後,網路需要重新收斂,才能計算出另外一條新的路徑。利有二維路由,主機利用多個PA地址,可以同時擁有通往不同網路提供商的多條路徑,當一條路徑出現故障後,可以馬上切換到另外一條路徑上來。

網路診斷

在傳統網路中,在進行網路診斷時,由於無法或者很難知道網路中的具體情況,這使得診斷經常出現錯誤。比如當網路中進行流量工程時,會將沿最短路徑傳送的報文導向其它的路徑,複雜的配置使得網路管理者即使傳送探測報文,也很難知道探測報文的真實路徑。利用二維路由,可以顯式地指定探測報文行走的路徑,從而很容易診斷路徑上的設備的狀態。

可靠性

在網路路由中,故障基本每天都會發生。利用二維路徑,朝同一個目的地,根據源的不同,可以有多條路徑。路由器可以通過預先計算某條路徑,或者節點的保護路徑,當探測到故障時,路由器可以馬上切換到保護路徑上去。儘管傳統路由也支持快速重路由,但二維路徑本身就支持它,不需要對路由器進行過多改動。

多路徑路由

眾所周知,利用多路徑,網路路由將變得更有效率。但是傳統網路基於目的地址只提供單條路徑,所以需要利用MPLS,隧道或者是覆蓋網路來提供多路徑,而這些附加的方案都給網路帶來了額外的管理和控制開銷。利用二維路由,當主機擁有多個IP位址時,網路可以很容易地對這台主機朝同一目的地址,提供多條路徑。

策略路由

當ISP想讓從源地址A發往目的地址B的流量經過路由器C時,傳統網路很難靈活實現這樣的策略。利用二維路由,路由器可以很容易認出源地址A和目的地址B,從而將這部分流量發往路由器C就行。

網路安全

傳統網路大多都把安全檢查功能放在邊界路由器上。但是,對於越來越大規模的網路攻擊,邊界路由器的資源顯得越來越緊缺。利用二維路由,源地址檢查功能可以部署在網路的中間,即中間的路由器也可以參與到安全檢查的過程中來,這使得整個網路抵禦攻擊的能力變強。

二維轉發表結構

研究現有的基於目的地址的轉發表,以及layer-4包分類時採用的轉髮結構。設計新的轉發表結構,研究路由查找,路由更新的方式,使得路由器能夠線速匹配到達的報文,路由更新時路由器的性能不受影響,並且使得現有的存儲技術能夠滿足新的二維轉發表所需要的存儲大小。

二維路由轉發表設計

和傳統轉發表不同,二維轉發表存儲了一個規則集合,每個規則是一個(目的前綴,源前綴,下一跳)三元組,當某個報文到達時,匹配的規則是:首先按目的前綴最長前綴匹配,得到一個與這個目的前綴相關聯的規則的子集合,然後再在這個子集合里按源前綴最長前綴匹配,得到某個規則,輸出這個規則的下一跳即可。

二維路由需要在路由的時候查找兩個地址。將兩個地址合併,利用傳統的TCAM可以在單位時間內完成查找,但是簡單的合併將引起轉發表爆炸的問題,由於TCAM資源的稀缺(目前最大的TCAM能存儲一百萬條表項),我們需要設計新的存儲結構,使得查找速度能與線速匹配,並且存儲空間小於現有存儲技術能夠提供的最大存儲空間。

我們提出一個新型二維路由轉發表結構FIST(FIB Structure for TwoD-IP),它能達到線速轉發並節省存儲空間。FIST由兩個存儲在TCAM中的表,和兩個存儲在SRAM中的表組成,如下圖所示:

二維路由 二維路由

目的表:在TCAM中的一個表格,存儲目的前綴;

源表:在TCAM中的一個表格,存儲源前綴;

二維表:在SRAM中的一個二維表格,存儲經過索引的下一跳信息;

映射表:在SRAM中的一個表格,存儲索引號和下一跳信息之前的映射信息。

對於每一條規則(目的前綴,源前綴,下一跳),目的前綴存儲在目的表中,源前綴存儲在源表中。通過目的前綴,目的表會輸出一個行號,通過源前綴,源表會輸出一個列號。通過行號和列號,我們可以訪問二維表中的一個單元格(和們用(目的前綴,源前綴)來表示一個單元格),並且二維表會輸出一個索引號。通過索引號查找映射表,可以得到下一跳信息。

如上圖,對於規則(100*,111*,1.0.0.2),目的前綴100*存儲在目的表中並對應第一行(以0行為基數),源前綴111*存儲在源表並對應第1列。在二維表中,第一行、第一列的那個單元格的索引號為2。在映射表中,索引號2對應的下一跳信息為1.0.0.2。

為了提供更好的連通性,每一個目的前綴都對應一個默認下一跳。如果一個報文沒有匹配任何源前綴,則它會被轉發到匹配的目的前綴對應的默認下一跳去。默認下一跳可以看成是全通配符(如****)的源前綴。這樣對於每一個報文,都至少有一個源前綴與其匹配。

相關詞條

相關搜尋

熱門詞條

聯絡我們