CEF小記

CEF簡介

CEF是專門爲高性能、高伸縮性的IP骨幹網絡設計的一種高速交換方式。在大規模的動態IP網絡中,CEF能夠提供前所未有的交換的一致性和穩定性。它能夠有效彌補快速交換的高速緩存條目頻繁失效的缺陷,採用dCEF分佈式交換可使每個線路卡進行完全的交換,提供更優越的性能;CEF比快速交換的路由高速緩存佔用內存要少,並能提供負載平衡,網絡記賬等功能。藉助CEF特快交換技術和其它一些革命性的創新技術,Cisco的GSR路由器在全球取得了巨大的成功,在中國互聯網基礎設施建設中發揮着極其重要的作用。
 

CEF名詞解釋

CEF(Cisco快速轉發)――CEF是一種第三層交換技術,CEF有兩種模式:集中模式和分佈模式,集中模式允許一個路由處理器執行快速轉發。
DCEF(分佈式CEF)――分佈式CEF允許路由器的多個線路卡在端口適配器間分別運行快速轉發。
FIB(轉發數據庫)――CEF的一個組件。它是路由器決定目標交換的查找表,是一個包含IP路由表中轉發信息的鏡像。
GSR(千兆交換路由器)――思科12000系列路由器。
線路卡――Cisco產品線中廣泛應用的接口處理器的總稱,例如:VIP就是7500系列路由器中的一種線路卡。
前綴――可以指出IP地址中的網絡地址部分,它是IP地址和子網掩碼的組合。子網掩碼可以指出IP地址中有多少比特是網絡比特。前綴的格式是:IP地址 /子網掩碼。例如:10.0.0.0/16意味着IP地址中的前面16比特被標記了,它可以過濾出網絡地址和主機地址,此例中網絡地址是10.0。
route processor(路由模塊/處理器)――Cisco7000或者Cisco7500路由器上路由處理模塊的總稱。
RP(路由模塊/處理器)――Cisco7000系列路由器上的路由處理模塊,它包含CPU、系統軟件和路由器中的大部分內存組件。
RSP(路由交換模塊/處理器)――Cisco7500系列路由器中結合路由模塊(RP)和交換模塊(SP)功能的模塊。交換模塊(SP)在Cisco7000系列路由器中扮演管理所有數據總線活動的管理員的角色。
VIP(通用接口模塊)――Cisco7000和7500系列路由器使用的接口卡。VIP可以提供多層交換和CiscoIOS軟件的運行。最新的版本是VIP和VIP2。
IPC(模塊通訊)――這是一種機制,它可以確保在使用分散CEF模式時,RSP和線路卡的轉發數據庫(FIB)和鄰接表信息同步。

CEF由來

    路由器和交換機其最主要的目的有兩個:一是如何準確的把數據包(幀)從源地址送到目標地址,二是如何更快速的送達。
    一般來說對於一個路由器會有以下三步:
       查看這個包的目標地址是否可達
       決定目標地址的下一跳和接口。
       改寫MAC的包頭使得它可以成功的到達下一跳。

   以上三步是路由器包交換的根本,到現在爲止所有衍生出來的包交換方法都必須完成以上三個過程。
到目前爲止,包交換的方法有N種,其重要的有兩類,第一個就是進程交換,而第二類名字叫做“Interrupt Context Switching”
   進程交換,顧名思義,就是要創建進程,我們知道處理器在工作的時候是按照schedule(計劃)進行工作的,而進程交換就是這樣的,它會創建一個名 爲“IP_INPUT”(假設討論的是IP包),然後放入到處理器的SCHEDULE中等待,什麼時候排到了什麼時候執行這個進程。
   Interrupt Context Switching跟進程交換的區別之一就是“不排隊”,只要有包過來就先 處理它,等它處理完了,處理器再回去幹它SCHEDULE中的工作。另外一個不同點,就是增加了“緩存”,處理器在查找目標地址可達、下一跳這些信息的時候不是直接去查找路由表而是去查找緩存。即通過中斷與緩存來實現。
   根據緩存的技術不同又有了fast switching、optimum switching、CEF


fast switchig


這也是快速交換中的緩存數據結構,快速交換把外出接口信息和需要重寫的MAC地址放到二叉樹中相應的節點上,而需要轉發到的目的地址就是二叉樹上節點所代表的地址。如果這是一個真實的IPV4地址的話,我們最多需要32次查找便可以找到我們需要的網段。鑑於IPV4地址的長度原因,快速交換的二叉樹深度是32。但不足是:
1、由於這個快速緩存是憑空建立的,並沒有和路由表以及MAC緩存建立聯繫,所以當我們想應用快速交換進行查找的時候必須要先進行一次完整的過程交換。
2、由於在快速緩存中一個節點對應着一個地址,而且沒有指針可以鏈接各個節點,所以無法實現遞歸查詢。
不過這並不影響路由器使用遞歸查詢,因爲當每一個新的數據包進來之後都要進行一次進程交換,其間已經完成了遞歸查詢。
3、由於節點信息的建立是由路由表和ARP緩存而來,當路由表或者是ARP緩存刷新時,對應的節點應該無效,這時就必須重新建立一個二叉樹,在這個過程中 快速交換是無法使用的,只能用傳統的進程交換,試想如果這是一個非常大的網絡,其網絡狀態不斷變化,這將會大大影響快速交換的效率。


optimum switching

主要就是改進了快速交換的數據結構,它重新構造了一個多枝(256-way mtree),如圖所示,這樣一來它最多只需要四次查找就可以達到目的,而一般來說只需要一到三次查找就可以了。

CEF

 

 

CEF是在快速交換和Optimum Switching的基礎上發展起來的第三代基於 Interrupt Context Switching的交換方式,它很好的克服了前兩種方法帶來的弊端。爲了更快速的找到目的地址可達性信息,它依舊採用了Optimum Switching的mtree方式,唯一有區別的是CEF構建的mtree節點中並沒有包含外出接口MAC地址這些信息,而是變成了一個指針,指向一個單獨建立的表。

路由交換算法簡史

過程交換
最初的Cisco路由器採用集中式CPU包交換,所有的包通過共享總線傳到CPU,經路由表查找,CRC重算,再通過共享總線把包傳到適當的線路卡上。
快速交換
到達某特定目的地址的IP包通常會引起數據包流,即假設交換過到特定目標的包之後,另一個很可能不久也會到達。通過構建最近交換目標的高速緩存,可以減少包在全路由表中查找同一目標的次數,這種“一次路由,然後交換”的方式稱爲快速交換,快速交換大大提高了路由器的包轉發速率,因而成爲Cisco路由器平臺上缺省的交換機制。但有一點需要注意,IP路由表的改變會使得高速緩存無效,在路由狀況不斷變化的環境中,路由高速緩存的優勢將受到很大限制。
自治交換
自治交換的特點是從CPU中卸載了一些交換功能。在效果上,將路由高速緩存功能從CPU移到輔助交換處理器上,線路卡上的接收包先在交換處理器中完成本地路由高速緩存目標的查找,若查找失敗時才中斷CPU執行路由表查找。在此,Cisco將週期性計算路由的CPU改名爲路由處理器,把輔助交換處理器改名爲交換處理器。Cisco 7000系列的路由器上執行自治交換,可使吞吐量等性能進一步提高。
分佈式交換
隨着VIP(Versatile Interface Processor,通用接口處理器)卡引入,路由器的交換體系逐漸向對等多處理器結構發展。每個VIP卡都包含RISC處理器,維護最新的由路由交換處理器產生的快速交換高速緩存的拷貝,並能獨立實現路由交換的功能,高速完成兩種類型的交換---本地VIP的交換和VIP之間的交換。
CEF特快交換
如前所述,快速交換的高速緩存機制在Internet之類的高速動態路由選擇環境(經常存在網絡拓撲變化,路由改變、路由震盪等)中不能很好地伸縮,路由的改變導致高速緩存無效,而重建高速緩存(即執行“過程交換”的過程)在計算上開銷很大;同時,隨着互聯網及其業務的迅猛發展,基於WEB的各種應用和交互式業務使得通信次數多而通信時間短的實時數據流大量增加,快速交換的高速緩存內容處於不斷變化之中,重建高速緩存的負擔加大,從而導致路由器性能的降低。CEF特快交換技術正是針對上述不足而設計提出的。

CEF原理

CEF的組件

CEF鄰接表
鄰接表用於MAC或者第二層信息的重寫。第二層信息能通過ARP,ATM,FrameRelay的映射狀態等方式學到。下圖中就有對應的第二層字段以及這些字段是如何被學習到的。

CEF轉發表(FBI)

用於進行3層的轉發決策。路由表中關於轉發比較核心的內容如:IP前綴,遞歸的下一跳,出站接口會記錄在CEF表中。但是非核心的東西比如管理距離和度量值就被CEF表忽略了。

當報文進入路由器的時候,路由器將報文的二層信息剝掉。在CEF表中查找相關的IP地址,進行轉發決策。決策結果會指向鄰接表的一條條目。在鄰接表中找回二層需要重的寫信息,構建新的二層頭部,轉發到對應的下一跳接口。通過這兩張表,CEF同時扮演了第3層查找和第2層禎重寫的角色。

CEF轉發過程

 

3層包從TCAM開始查找;進行最長匹配,得到鄰居信息,改寫原有二層數據幀(下一跳MAC地址)並轉發。 CEF表是從路由表得來,鄰居表是使用ARP解析得來的。

如果目的IP地址的MAC不在鄰居表內,則SW將使用ARP進行解析,以得到目的地址的MAC地址。

ARP Throttling(ARP抑制):在未獲得目的MAC地址並且進行ARP解析時,除非ARP解析完成並且在鄰居表體現出來外,在解析期間,所有發往目的主機的包,將被丟棄.FIB最多支持6個到達同一目的的鄰居條目。

CEF操作模式

  集中式 允許一個路由處理模塊運行特快交換,即FIB和鄰接表駐留在路由處理模塊中,當線路卡不可用或不具備分散CEF交換的功能時,就可使用集中CEF交換模式。   

   分佈式(一般記作dCEF)允許路由器的多個線路卡(VIP)分別運行特快交換功能,前提是線路是VIP線路卡或GSR線路卡。中央路由處理器完成系統管理/路由選擇和轉發表計算等功能,並把CEF表分佈到單個線路卡;每個線路卡維護着一個FIB和鄰接表的相同的拷貝。線路卡在端口適配器之間執行快速轉發,這樣,交換操作就無需路由交換模塊的參與了。DCEF採用一種“內部過程通信”機制來保證路由處理器和接口卡之間FIB和鄰接表的同步。   Cisco 12000系列路由器只運行dCEF模式,由線路卡執行交換功能。在其它路由器中,可以在同一個路由器中混合使用各種類型的接口卡,如果一個不支持CEF的接口卡收到數據包後,將把數據包轉發到路由處理器來進行處理,或把該數據包轉發到下一個網絡段處理。   CEF在路由器上是全局激活的,但可在每個接口(或VIP的底板)上啓用/禁用CEF;CEF和快速交換模式也可同時運行,但不推薦這樣使用,因爲會佔用大量的系統維護資源。

基於CEF的負載平衡的實現

  當到達某一目的IP地址存在多條路徑時,每條路徑都有一個反映其代價的metric值,路由協議通過計算獲得到達目的地址的具有最短metric值的路徑,數據包通過該路徑到達目的地址。負載平衡的目的則是要把流量分配到多條路徑中,這樣可優化資源的使用。CEF特快交換支持兩種類型的負載平衡---按目的地配置的負載平衡和按數據包配置的負載平衡。

1.按目的地配置負載平衡

  基本原理是:對於給定的一對源/目的IP地下,即使有多個路徑可用,也可保證數據包採用同一路徑;通往不同源/目的IP地址的數據流則傾向於採用不同的路徑。通過採用按目的地負載平衡的方法,可以保證對某個源/目的IP地址對的數據包以一定的次序到達。當啓用CEF時,按目的地配置的負載平衡被默認啓用。

2.按數據包配置負載平衡

  基本原理是:採用輪轉法確定各個數據包按哪條路徑到達目的地。這種負載平衡方法可使路由器在路徑上連續發送數據包,即保證路徑的使用狀況比較好,但針對一個源/目的IP地址對的數據包可能會採用不同的路徑,從而導致目的端對數據包的重新排序。這種類型的負載平衡對某些類型的數據流傳送不是很合適(如VoIP數據流)。當然,若在某一源/目的IP地址對之間有大量的數據流,通過並行鏈路傳送,如果按目的地負載平衡方式,將會使某條鏈路負擔過重,而其他鏈路上的數據流很少,此時採用按數據包的負載平衡是合理的。

CEF與快速交換的比較

  與快速交換相似,CEF也使用自己建立的數據結構(而不是路由表)來執行交換操作。快速交換通過生成並查找路由高速緩存交換數據包,該路由高速緩存交換數據包,該路收高速緩存的條目(包括目的IP地址,輸出接口,MAC地址頭信息等)是在第一個數據包到來時,對整個路由表執行最長匹配查找算法獲得下一跳IP地址,然後查找ARP緩存獲得第二層的MAC地址信息,並寫入路由高速緩存,之後的數據包則根據已經生成的高速緩存的條目直接重寫MAC頭信息完成交換操作。   CEF通過FIB和鄰接表對數據包進行交換,但FIB和鄰接表是在數據包到來以前,由CPU根據路由表生成並定時更新的,因此到達路由器的第一個數據包也無須執行查找路由表的過程,直接由FIB和鄰接表獲得新的MAC頭信和盧,就可進行交換了,對於擁有大容量路由表的路由器來說,這種預先建立交換查找條目的方式能夠有效地提高交換性能。

CEF配置命令 

 

啓用標準CEF模式 ip cef switch

禁用標準CEF模式 no ip cef switc

啓用dCEF模式    ip cef distributed switch

禁用dCEF模式    no ip cef distributed switch

在某個接口上禁用CEF或dCEF,可以在接口配置模式:    no ip route-cache cef

爾後又想重新啓用CEF,在接口配置模式下,可以使用: ip route-cache cef

 

基於數據包的負載均衡:

當啓用基於數據包的負載均衡功能時,必須先禁用基於目的地的負載均衡功能。

爲了禁用基於目的地的負載均衡功能,可以在接口配置模式下,

no ip load-sharing per-destination

要啓用基於數據包的負載均衡功能,可以在接口配置模式下,

ip load-sharing per-packet

 

爲CEF配置網絡記賬功能

啓用收集被快速轉發到某個目的地的數據包個數和字節數

ip cef accounting per-prefix

啓用收集通過某個目的地被快速轉發的數據包的個數

ip cef accounting non-recursive

查看網絡記帳信息 show ip cef

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章