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