CEF及其使用

Cisco快速轉發(Cisco Express Forwarding,CEF)是一種高級的第三層IP交換技術。可以在網絡的任何地方使用CEF,特別是在企業骨幹網的交換方面。此外,CEF可以優化像Internet這樣帶有大規模的、動態數據流的網絡的性能和伸縮性。在網絡核心中,骨幹路由器上的CEF提供了高性能和伸縮性,用來對付網絡規模的不斷加大和穩定增長的數據流量。CEF是一種分散式交換機制,它隨着接口卡數量和安裝在路由器中帶寬的變化而線性地變化。

一、CEF的優勢

---- CEF可以通過大規模的動態通訊方式優化網絡的性能和伸縮性,它的優點如下。

---- 1.改善路由器效率
---- 和常規的快速交換路由相比較,CEF可以使用較少的內存容量來實現數據包的轉發,這樣,就可以節省更多處理器的資源,使得處理器能夠專用於第三層的服務,比如提高服務質量(QoS)和加密功能等。

---- 2.良好的伸縮性
---- 當啓用分散式CEF模式時,CEF的每個線路卡上維護着一個與轉發信息庫 (Forwarding Information Base,FIB)和鄰接表相同的拷貝,它能獨自提供完全的交換能力。

---- 3.提高網絡性能
---- 在大規模的動態網絡中,CEF能提供了更好的交換的一致性和穩定性。在動態網絡中,因爲路由的改變會導致快速交換高速緩存條目頻繁地失效,這些變化可能的結果就是要通過路由表對數據進行過程交換,而不是通過路由高速緩存進行快速交換。因爲FIB查閱表中包含所有路由表中已知的路由,這樣就不用維護路由高速緩存了,也不用採用快速交換和過程交換相互轉換這種轉發方案了。CEF能夠比典型的高速緩存技術更有效地交換數據流。

---- 儘管CEF是一種高級IP交換技術,支持很多通訊媒體,但它並不是支持所有的通訊方式,目前CEF支持ATM/AAL5snap、ATM/AAL5mux、ATM/AAL5nlpid、幀中繼、以太網、FDDI、PPP、HDLC和隧道(tunnel)等。

二、CEF操作使用的部件

---- 爲了實現CEF的交換功能,CEF將常規路由器中存儲在路由高速緩存中的信息轉而存儲到幾種爲CEF專門設計的數據結構中。爲了有效地進行數據包轉發,這種數據結構要保證能進行優化的查詢。CEF的2種主要部件如下。

---- 1.轉發信息庫
---- CEF利用轉發信息庫(FIB)來進行基於IP目的地前綴的交換決策。FIB從概念上講類似於路由表或信息庫,它維護着一個IP路由表中包含的轉發信息的鏡像。當網絡中路由或拓撲結構發生了變化時,IP路由表就被更新,而這些變化也將反映在FIB中。FIB基於IP路由表中的信息,維護着下一網絡段的地址信息。

---- 因爲在FIB條目和路由表條目之間有一一對應的關係,所以FIB中包含了所有已知的路由,這樣就不用維護路由高速緩存了,而先前的交換路徑(比如快速交換和最優交換)都要維護路由高速緩存。

---- 2.鄰接表(Adjacency Table)
---- 如果網絡中的網絡節點只通過單獨一個網絡段就可以穿越鏈路層而彼此到達對方,那麼它們是鄰接的。除了FIB外,CEF還利用鄰接表來提供第二層的尋址信息。鄰接表爲所有FIB條目維護第二層的下一網段地址。當路由器發現存在鄰接時就增加在鄰接表中,每次生成一個鄰接條目,CEF會爲那個鄰接節點預先計算一個鏈路層頭標信息,並把這個頭標信息存儲在鄰接表中。當決定路由時,它就會指向下一網絡段以及相應的鄰接條目,隨後即在對數據包進行CEF交換時用它來進行封裝。

三、CEF操作模式

---- CEF的操作模式有2種,即集中CEF模式和分散CEF模式。可以通過其中的任意一種來啓用CEF,同一時刻用戶只能使用其一種模式,但並不是所有的 Cisco路由器都支持這2種模式,必須查閱所使用的產品資料,以確定它是否支持集中CEF模式或分散CEF模式,比如在Cisco 7200系列路由器上就不支持分散式CEF模式。

---- 1.集中CEF模式
---- 當啓用集中CEF模式時,CEF的FIB和鄰接表駐留在路由處理器中,路由處理器來執行快速轉發,見圖1。對於CEF交換來說,當線路卡不可用時,或者需要使用的功能與分散CEF交換不兼容時,就可以使用CEF模式



2.分散CEF模式
---- 當啓用分散式CEF(dCEF)時,線路卡(例如VIP線路卡或者GSR線路卡)維護着一個與FIB和鄰接表相同的拷貝。線路卡在端口適配器之間執行快速轉發,這樣,在進行交換操作時就無須RSP的參與了。dCEF使用一個“內部過程通信”(Inter Process Communication,IPC)機制,在路由處理器和線路卡上,保證FIB和鄰接表的同步,如圖2所示。


四、CEF的應用

---- CEF在Cisco路由器中改善了路由器的性能,優化了路由交換,但它的使用卻並不複雜,用戶只需要配置啓用或禁止CEF/dCEF即可實現Cisco快速轉發。當然,爲了更好地使用CEF,需要對它做進一步的配置,如負載均衡功能等。其他常見的CEF命令見附表。



1.啓用或禁止CEF
---- 如果用戶的Cisco路由器中有接口處理器支持CEF時,就可以啓用CEF。爲了啓用或禁止CEF,在全局配置模式下,利用下面的命令進行。

---- (1) 啓用標準的CEF模式
---- 命令如下:
---- ip cef

---- (2) 禁止標準的CEF模式
---- 命令如下:
---- no ip cef

---- 2.啓用或禁止dCEF
---- 當用戶想讓其線路卡執行快速轉發時,則啓用dCEF,這樣,路由處理器就可以處理路由協議。爲了啓用或禁止dCEF操作,在全局配置模式下,利用下面的命令進行。

---- (1) 啓用dCEF模式
---- 命令如下:
---- ip cef distributed

---- (2) 禁止dCEF模式
---- 命令如下:
---- no ip cef distributed

---- 當用戶按全局模式啓用CEF或dCEF時,所有支持CEF的接口都被默認地啓用了。

---- 3.在特定的接口上啓用或禁止CEF/ dCEF
---- 有時候,在某個接口配置了一項功能,而CEF或dCEF並不支持該功能。這時用戶就可能需要在這個特定的接口上禁止CEF或dCEF。例如,策略路由和 CEF就不能一起使用。用戶可能想讓一個接口支持策略路由,而讓其他的接口支持CEF。在這種情況下,可以按全局模式啓用CEF,而在那個打算配置策略路由的接口上禁用CEF。這樣,除了那一個接口外,在其他所有接口上都啓用快速轉發。爲了在某個接口上禁止CEF或dCEF,可以在接口配置模式下,使用下面的命令實現:

---- no ip route-cache cef
---- 當禁用了CEF或dCEF後,Cisco IOS自動使用下一個最快的交換路徑來交換數據包。對於dCEF而言,下一個最快的交換路徑是在路由處理器上的CEF。如果用戶在某個接口上禁用了CEF 或dCEF操作,爾後又想重新啓用它,那麼在接口配置模式下,可以使用下面的命令實現:

---- ip route_cache cef
---- 在Cisco 12000系列路由器上,dCEF被默認啓用。沒有用來啓用dCEF的命令。而且,配置文件中並沒有列出在路由器上啓用了dCEF,也不要在Cisco 12000系列路由器接口上禁用dCEF。

---- 4.爲CEF配置負載均衡功能
---- 負載均衡要依據源頭數據包和目的地數據包信息的組合來進行。爲了把數據傳送到一個目的地,Cisco可以把數據分配到多條路徑中,從而優化資源的使用。用戶可以以目的地爲單位,也可以以數據包爲單位,來配置負載均衡。負載均衡決策機制要在數據出發的接口上做出,它分爲以下2種方式。

---- (1) 按目的地配置負載均衡
---- 配置按目的地進行負載均衡功能後,路由器將使用多條路徑來均衡負載,對於某一源頭/目的地主機,數據包轉發採用同一路徑,即使有多個路徑可用,也將這樣處理,對於到達不同目的地的數據包則可以採用不同的路徑。當啓用CEF時,按目的地配置負載均衡的功能默認被啓用。大多數情況下,都採用這種負載均衡方法。按目的地配置負載均衡時,要依賴於數據流的統計分佈信息,所以隨着源頭/目的地對個數的增加,負載的平分會變得更爲有效。你可以採用按目的地負載均衡的辦法,來保證針對某個給定的源頭/目的地主機對的數據包依一定的次序到達。

---- 由於啓用CEF後,也就默認啓用了按目的地進行負載均衡功能,爲了利用按目的地進行負載均衡的功能,用戶就不需要再執行任何其他操作了。

---- 爲了禁止按目的地進行負載均衡的功能,在接口配置模式下,利用下面的命令進行:
---- no ip load-sharing per-destination

---- (2) 按數據包配置負載均衡
---- 通過按數據包進行負載均衡,使得路由器可以在路徑上連續發送數據包,而不用考慮具體的主機或用戶情況。這種負載均衡機制採用輪轉的辦法確定每個數據包採用哪條路徑到達目的地。這種機制可以保證在多個連接上進行負載均衡,有助於保證任何單個源頭/目的地對的路徑都不會變得負擔過重。如果有大量的、通過並行鏈路的數據是針對某單個源頭/目的地主機對,那麼如果按目的地進行負載均衡,將會使那個鏈路負擔過重,而其他鏈路上的數據流卻很少。啓用按數據包進行負載均衡,用戶就可以利用不同的路徑到達同一個繁忙的目的地。

---- 利用按數據包進行負載均衡使得路徑的使用情況變得合理。但是這種機制的直接後果就是對於一對給定的源頭/目的地主機對的數據包可能會採用不同的路徑到達,使得在目的地一端要對數據包重新排序,正是因爲這個原因,這種類型的負載均衡對有些類型的數據流可能就不適應了。比如通過IP進行語音傳送,由於這種類型的傳送要求數據包按照順序依次到達目的地。

---- 爲了啓用按數據包進行負載均衡功能,在接口配置模式下,利用下面的命令進行:
---- ip load-sharing(per-packet)

---- 當然,針對某個特定目的地啓用按數據包進行負載均衡,則在所有可以向該目的地轉發數據包的接口上,都必須啓用按數據包進行負載均衡的功能。

---- 5.爲CEF配置網絡記賬功能
---- 用戶可能需要收集統計信息,以便更好地理解和使用網絡中的CEF模式的功能。例如可能想收集這樣的信息: 交換到某個目的地的數據包的個數和字節數,或者通過某個目的地交換的數據包的個數。爲了給CEF收集網絡記賬信息,可以在全局配置模式中,利用下面的命令進行。

---- (1) 開始收集被快速轉發到某個目的地的數據包個數和字節數
---- 命令如下:
---- ip cef accounting per-prefix

---- (2) 開始收集通過某個目的地被快速轉發的數據包的個數
---- 命令如下:
---- ip cef accounting non-recursive

---- 當用戶爲CEF啓用網絡記賬功能後,就在相應的路由處理器中收集記賬信息。當用戶爲dCEF啓用網絡記賬功能時,就在線路卡上收集信息。

---- 用戶可以查看被收集的記賬信息。爲此在EXEC模式下,使用下面的命令進行:
---- show ip cef

---- 記賬信息中詳細描述了路由器轉發數據包的情況,可以由此瞭解路由器的負載情況,從而決定如何優化路由器的配置,最大限度地發揮路由器的性能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章