Cisco快速轉發(CEF)應用
Cisco快速轉發(Cisco Express Forwarding,CEF)是一種高級的第三層IP交換技術。CEF的優勢有哪些?如何更好使用CEF,本博文將詳細為您介紹。
可以在網絡的任何地方使用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
記賬信息中詳細描述了路由器轉發數據包的情況,可以由此了解路由器的負載情況,從而決定如何優化路由器的配置,最大限度地發揮路由器的性能。