Cisco快速轉(zhuǎn)發(fā)(CEF)應用
Cisco快速轉(zhuǎn)發(fā)(Cisco Express Forwarding,CEF)是一種高級的第三層IP交換技術(shù)。CEF的優(yōu)勢有哪些?如何更好使用CEF,本博文將詳細為您介紹。
可以在網(wǎng)絡的任何地方使用CEF,特別是在企業(yè)骨干網(wǎng)的交換方面。此外,CEF可以優(yōu)化像Internet這樣帶有大規(guī)模的、動態(tài)數(shù)據(jù)流的網(wǎng)絡的性能和伸縮性。在網(wǎng)絡核心中,骨干路由器上的CEF提供了高性能和伸縮性,用來對付網(wǎng)絡規(guī)模的不斷加大和穩(wěn)定增長的數(shù)據(jù)流量。CEF是一種分散式交換機制,它隨著接口卡數(shù)量和安裝在路由器中帶寬的變化而線性地變化。
一、CEF的優(yōu)勢
CEF可以通過大規(guī)模的動態(tài)通訊方式優(yōu)化網(wǎng)絡的性能和伸縮性,它的優(yōu)點如下。
1.改善路由器效率
和常規(guī)的快速交換路由相比較,CEF可以使用較少的內(nèi)存容量來實現(xiàn)數(shù)據(jù)包的轉(zhuǎn)發(fā),這樣,就可以節(jié)省更多處理器的資源,使得處理器能夠?qū)S糜诘谌龑拥姆眨热缣岣叻召|(zhì)量(QoS)和加密功能等。
2.良好的伸縮性
當啟用分散式CEF模式時,CEF的每個線路卡上維護著一個與轉(zhuǎn)發(fā)信息庫 (Forwarding Information Base,F(xiàn)IB)和鄰接表相同的拷貝,它能獨自提供完全的交換能力。
3.提高網(wǎng)絡性能
在大規(guī)模的動態(tài)網(wǎng)絡中,CEF能提供了更好的交換的一致性和穩(wěn)定性。在動態(tài)網(wǎng)絡中,因為路由的改變會導致快速交換高速緩存條目頻繁地失效,這些變化可能的結(jié)果就是要通過路由表對數(shù)據(jù)進行過程交換,而不是通過路由高速緩存進行快速交換。因為FIB查閱表中包含所有路由表中已知的路由,這樣就不用維護路由高速緩存了,也不用采用快速交換和過程交換相互轉(zhuǎn)換這種轉(zhuǎn)發(fā)方案了。CEF能夠比典型的高速緩存技術(shù)更有效地交換數(shù)據(jù)流。
---- 盡管CEF是一種高級IP交換技術(shù),支持很多通訊媒體,但它并不是支持所有的通訊方式,目前CEF支持ATM/AAL5snap、ATM/AAL5mux、ATM/AAL5nlpid、幀中繼、以太網(wǎng)、FDDI、PPP、HDLC和隧道(tunnel)等。
二、CEF操作使用的部件
為了實現(xiàn)CEF的交換功能,CEF將常規(guī)路由器中存儲在路由高速緩存中的信息轉(zhuǎn)而存儲到幾種為CEF專門設計的數(shù)據(jù)結(jié)構(gòu)中。為了有效地進行數(shù)據(jù)包轉(zhuǎn)發(fā),這種數(shù)據(jù)結(jié)構(gòu)要保證能進行優(yōu)化的查詢。CEF的2種主要部件如下。
1.轉(zhuǎn)發(fā)信息庫
CEF利用轉(zhuǎn)發(fā)信息庫(FIB)來進行基于IP目的地前綴的交換決策。FIB從概念上講類似于路由表或信息庫,它維護著一個IP路由表中包含的轉(zhuǎn)發(fā)信息的鏡像。當網(wǎng)絡中路由或拓撲結(jié)構(gòu)發(fā)生了變化時,IP路由表就被更新,而這些變化也將反映在FIB中。FIB基于IP路由表中的信息,維護著下一網(wǎng)絡段的地址信息。
因為在FIB條目和路由表條目之間有一一對應的關(guān)系,所以FIB中包含了所有已知的路由,這樣就不用維護路由高速緩存了,而先前的交換路徑(比如快速交換和最優(yōu)交換)都要維護路由高速緩存。
2.鄰接表(Adjacency Table)
如果網(wǎng)絡中的網(wǎng)絡節(jié)點只通過單獨一個網(wǎng)絡段就可以穿越鏈路層而彼此到達對方,那么它們是鄰接的。除了FIB外,CEF還利用鄰接表來提供第二層的尋址信息。鄰接表為所有FIB條目維護第二層的下一網(wǎng)段地址。當路由器發(fā)現(xiàn)存在鄰接時就增加在鄰接表中,每次生成一個鄰接條目,CEF會為那個鄰接節(jié)點預先計算一個鏈路層頭標信息,并把這個頭標信息存儲在鄰接表中。當決定路由時,它就會指向下一網(wǎng)絡段以及相應的鄰接條目,隨后即在對數(shù)據(jù)包進行CEF交換時用它來進行封裝。
三、CEF操作模式
CEF的操作模式有2種,即集中CEF模式和分散CEF模式。可以通過其中的任意一種來啟用CEF,同一時刻用戶只能使用其一種模式,但并不是所有的Cisco路由器都支持這2種模式,必須查閱所使用的產(chǎn)品資料,以確定它是否支持集中CEF模式或分散CEF模式,比如在Cisco 7200系列路由器上就不支持分散式CEF模式。
1.集中CEF模式
當啟用集中CEF模式時,CEF的FIB和鄰接表駐留在路由處理器中,路由處理器來執(zhí)行快速轉(zhuǎn)發(fā),見圖1。對于CEF交換來說,當線路卡不可用時,或者需要使用的功能與分散CEF交換不兼容時,就可以使用CEF模式。
2.分散CEF模式
當啟用分散式CEF(dCEF)時,線路卡(例如VIP線路卡或者GSR線路卡)維護著一個與FIB和鄰接表相同的拷貝。線路卡在端口適配器之間執(zhí)行快速轉(zhuǎn)發(fā),這樣,在進行交換操作時就無須RSP的參與了。dCEF使用一個“內(nèi)部過程通信”(Inter Process Communication,IPC)機制,在路由處理器和線路卡上,保證FIB和鄰接表的同步,如圖2所示。
四、CEF的應用
CEF在Cisco路由器中改善了路由器的性能,優(yōu)化了路由交換,但它的使用卻并不復雜,用戶只需要配置啟用或禁止CEF/dCEF即可實現(xiàn)Cisco快速轉(zhuǎn)發(fā)。當然,為了更好地使用CEF,需要對它做進一步的配置,如負載均衡功能等。其他常見的CEF命令見附表。
1.啟用或禁止CEF
如果用戶的Cisco路由器中有接口處理器支持CEF時,就可以啟用CEF。為了啟用或禁止CEF,在全局配置模式下,利用下面的命令進行。
(1) 啟用標準的CEF模式
命令如下:
ip cef
(2) 禁止標準的CEF模式
命令如下:
no ip cef
2.啟用或禁止dCEF
當用戶想讓其線路卡執(zhí)行快速轉(zhuǎn)發(fā)時,則啟用dCEF,這樣,路由處理器就可以處理路由協(xié)議。為了啟用或禁止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。這樣,除了那一個接口外,在其他所有接口上都啟用快速轉(zhuǎn)發(fā)。為了在某個接口上禁止CEF或dCEF,可以在接口配置模式下,使用下面的命令實現(xiàn):
no ip route-cache cef
當禁用了CEF或dCEF后,Cisco IOS自動使用下一個最快的交換路徑來交換數(shù)據(jù)包。對于dCEF而言,下一個最快的交換路徑是在路由處理器上的CEF。如果用戶在某個接口上禁用了CEF或dCEF操作,爾后又想重新啟用它,那么在接口配置模式下,可以使用下面的命令實現(xiàn):
ip route_cache cef
---- 在Cisco 12000系列路由器上,dCEF被默認啟用。沒有用來啟用dCEF的命令。而且,配置文件中并沒有列出在路由器上啟用了dCEF,也不要在Cisco 12000系列路由器接口上禁用dCEF。
4.為CEF配置負載均衡功能
負載均衡要依據(jù)源頭數(shù)據(jù)包和目的地數(shù)據(jù)包信息的組合來進行。為了把數(shù)據(jù)傳送到一個目的地,Cisco可以把數(shù)據(jù)分配到多條路徑中,從而優(yōu)化資源的使用。用戶可以以目的地為單位,也可以以數(shù)據(jù)包為單位,來配置負載均衡。負載均衡決策機制要在數(shù)據(jù)出發(fā)的接口上做出,它分為以下2種方式。
(1) 按目的地配置負載均衡
配置按目的地進行負載均衡功能后,路由器將使用多條路徑來均衡負載,對于某一源頭/目的地主機,數(shù)據(jù)包轉(zhuǎn)發(fā)采用同一路徑,即使有多個路徑可用,也將這樣處理,對于到達不同目的地的數(shù)據(jù)包則可以采用不同的路徑。當啟用CEF時,按目的地配置負載均衡的功能默認被啟用。大多數(shù)情況下,都采用這種負載均衡方法。按目的地配置負載均衡時,要依賴于數(shù)據(jù)流的統(tǒng)計分布信息,所以隨著源頭/目的地對個數(shù)的增加,負載的平分會變得更為有效。你可以采用按目的地負載均衡的辦法,來保證針對某個給定的源頭/目的地主機對的數(shù)據(jù)包依一定的次序到達。
由于啟用CEF后,也就默認啟用了按目的地進行負載均衡功能,為了利用按目的地進行負載均衡的功能,用戶就不需要再執(zhí)行任何其他操作了。
為了禁止按目的地進行負載均衡的功能,在接口配置模式下,利用下面的命令進行:
no ip load-sharing per-destination
(2) 按數(shù)據(jù)包配置負載均衡
通過按數(shù)據(jù)包進行負載均衡,使得路由器可以在路徑上連續(xù)發(fā)送數(shù)據(jù)包,而不用考慮具體的主機或用戶情況。這種負載均衡機制采用輪轉(zhuǎn)的辦法確定每個數(shù)據(jù)包采用哪條路徑到達目的地。這種機制可以保證在多個連接上進行負載均衡,有助于保證任何單個源頭/目的地對的路徑都不會變得負擔過重。如果有大量的、通過并行鏈路的數(shù)據(jù)是針對某單個源頭/目的地主機對,那么如果按目的地進行負載均衡,將會使那個鏈路負擔過重,而其他鏈路上的數(shù)據(jù)流卻很少。啟用按數(shù)據(jù)包進行負載均衡,用戶就可以利用不同的路徑到達同一個繁忙的目的地。
利用按數(shù)據(jù)包進行負載均衡使得路徑的使用情況變得合理。但是這種機制的直接后果就是對于一對給定的源頭/目的地主機對的數(shù)據(jù)包可能會采用不同的路徑到達,使得在目的地一端要對數(shù)據(jù)包重新排序,正是因為這個原因,這種類型的負載均衡對有些類型的數(shù)據(jù)流可能就不適應了。比如通過IP進行語音傳送,由于這種類型的傳送要求數(shù)據(jù)包按照順序依次到達目的地。
為了啟用按數(shù)據(jù)包進行負載均衡功能,在接口配置模式下,利用下面的命令進行:
ip load-sharing(per-packet)
當然,針對某個特定目的地啟用按數(shù)據(jù)包進行負載均衡,則在所有可以向該目的地轉(zhuǎn)發(fā)數(shù)據(jù)包的接口上,都必須啟用按數(shù)據(jù)包進行負載均衡的功能。
5.為CEF配置網(wǎng)絡記賬功能
用戶可能需要收集統(tǒng)計信息,以便更好地理解和使用網(wǎng)絡中的CEF模式的功能。例如可能想收集這樣的信息: 交換到某個目的地的數(shù)據(jù)包的個數(shù)和字節(jié)數(shù),或者通過某個目的地交換的數(shù)據(jù)包的個數(shù)。為了給CEF收集網(wǎng)絡記賬信息,可以在全局配置模式中,利用下面的命令進行。
(1) 開始收集被快速轉(zhuǎn)發(fā)到某個目的地的數(shù)據(jù)包個數(shù)和字節(jié)數(shù)
命令如下:
ip cef accounting per-prefix
(2) 開始收集通過某個目的地被快速轉(zhuǎn)發(fā)的數(shù)據(jù)包的個數(shù)
命令如下:
ip cef accounting non-recursive
當用戶為CEF啟用網(wǎng)絡記賬功能后,就在相應的路由處理器中收集記賬信息。當用戶為dCEF啟用網(wǎng)絡記賬功能時,就在線路卡上收集信息。
用戶可以查看被收集的記賬信息。為此在EXEC模式下,使用下面的命令進行:
show ip cef
記賬信息中詳細描述了路由器轉(zhuǎn)發(fā)數(shù)據(jù)包的情況,可以由此了解路由器的負載情況,從而決定如何優(yōu)化路由器的配置,最大限度地發(fā)揮路由器的性能。

















