▲
cisco路由器通常才使用兩種類型的mtrie結(jié)構(gòu):
1、8-8-8-8:這種格式也被稱為256-way mtrie,因?yàn)?個(gè)八位組的IPv4地址被映射到4個(gè)8bit的結(jié)構(gòu)中,例如上圖。這種格式用在大多數(shù)cisco路由器中。
2、16-8-8:這是一個(gè)3級的mtrie,它的根級有65536個(gè)表項(xiàng)。因此,一條前最的最大查找次數(shù)是3次,換句話說,第一次查找解析了前面的兩個(gè)八位組,接著最多在需要兩次查找就可以確定。這種格式只用于cisco 12000系列路由器。
FIB和鄰接表都被優(yōu)化提供進(jìn)行轉(zhuǎn)發(fā)決定所需的信息,而沒有更多的其他信息,如果FIB表已滿,后續(xù)表項(xiàng)將和現(xiàn)有表項(xiàng)比較,并以犧牲不詳細(xì)表項(xiàng)的代價(jià)來保存更詳細(xì)的表項(xiàng)。
FIB表的好處:
1、可以被硬件ASIC調(diào)用
2、解決遞歸路由問題,直接找到下一跳
3、擴(kuò)展性,應(yīng)用于MPLS
FIB內(nèi)容可通過show ip cef 命令來查看:
列舉出一下幾種FIB表項(xiàng):
1、附接的(attached):這種前綴被配置為可以通過借口直接到達(dá),不需要由IP下一跳來創(chuàng)建林接管,這種前綴是指路由器本地接口所屬的網(wǎng)絡(luò)。
2、連接的(connected):由IP address address mask 配置命令來配置的
3、收到(receive):這種前綴是一個(gè)32位掩碼的主機(jī)地址。每個(gè)接口通常有3種這樣的地址:實(shí)際的接口地址、主機(jī)位全0的網(wǎng)絡(luò)地址和全1的廣播地址
4、遞歸的(recursive):當(dāng)前綴的輸出接口不能通過路由選擇協(xié)議或靜態(tài)配置指定時(shí),它就被標(biāo)記為遞歸的。
鄰接表是由ARP實(shí)現(xiàn)的,將第2層地址映射到相應(yīng)的第3層地址上。路由器能從路由選擇更新中發(fā)現(xiàn)下一跳路由器,并相應(yīng)的在臨街表中增加表項(xiàng)。這個(gè)處理讓路由器構(gòu)建了第3層分組轉(zhuǎn)發(fā)所需的下一跳重寫信息。
僅有路由器上的CEF轉(zhuǎn)發(fā)機(jī)制才可以關(guān)閉基于CEF的轉(zhuǎn)發(fā)。CEF默認(rèn)啟用,在路由器初始化時(shí),會根據(jù)路由器中的路由選擇協(xié)議構(gòu)建一張路由選擇表,構(gòu)建完成后,CPU自動創(chuàng)建 FIB表和鄰接表。與基于流的流緩存轉(zhuǎn)發(fā)不同,CEF表是基于網(wǎng)絡(luò)拓?fù)?。?dāng)一個(gè)分組進(jìn)入交換機(jī)時(shí),交換機(jī)的第3層轉(zhuǎn)發(fā)引擎ASIC根據(jù)目的網(wǎng)絡(luò)和最詳細(xì)的網(wǎng)絡(luò)掩碼進(jìn)行最長匹配查找。
MSFC:多層交換功能卡
基于CEF的Catalyst交換機(jī),支持下面兩種3層硬件交換方法:
1、集中式交換:在一個(gè)專用的ASIC上作出轉(zhuǎn)發(fā)決策,該ASIC是第3層交換機(jī)中所有接口的樞紐。所有需要路由或交換的數(shù)據(jù)包都必須經(jīng)過總線或交換矩陣進(jìn)入中央引擎。使用該交換方式,硬件交換性能取決于中央交換引擎和交換機(jī)矩陣/總線體系結(jié)構(gòu)。用于catalyst 6500和catalyst4000系列
2、分布式交換:第3層交換機(jī)的接口或線路模塊獨(dú)立地做出轉(zhuǎn)發(fā)決策。采用分布式交換的交換機(jī)將CEF FIB和鄰接表的副本放在線路模塊或接口中,供其路由選擇和轉(zhuǎn)發(fā)數(shù)據(jù)幀。系統(tǒng)性能為所有轉(zhuǎn)發(fā)引擎之和。用于catalyst 3550 和catalyst帶DFC(分布轉(zhuǎn)發(fā)卡)的6500
基于CEF的多層交換:
▲
CEF的兩種負(fù)載均衡方式:
1、基于每個(gè)會話的負(fù)載均衡(per-session load sharing)
基于每個(gè)會話的負(fù)載均衡允許路由器使用多條路徑分發(fā)流量。對于一個(gè)給定的源—目的主機(jī)對,即使有多條路徑可用,路由器也會保證該會話的數(shù)據(jù)包走相同的路徑。不同的會話采用不同的路徑,使用負(fù)載均衡,基于每個(gè)會話的負(fù)載均衡再激活CEF的時(shí)候缺省的也被激活。由于基于每個(gè)會話的負(fù)載均衡依賴于流量的統(tǒng)計(jì)分發(fā),因而在會話數(shù)增加的情況下更有效率。
基于每個(gè)會話的負(fù)載均衡能夠確保導(dǎo)向給定的源—目的對的數(shù)據(jù)包按序到達(dá),因?yàn)閷?dǎo)向相同主機(jī)對的所有數(shù)據(jù)包都被路由到相同的鏈路上。
2、 基于每個(gè)數(shù)據(jù)包的負(fù)載均衡
基于每個(gè)數(shù)據(jù)包的負(fù)載均衡使得路由器可以把連續(xù)的數(shù)據(jù)包發(fā)送到不同的路徑上,而不必關(guān)心個(gè)別的主機(jī)或用戶會話,使用輪轉(zhuǎn)的方法來確定每一個(gè)數(shù)據(jù)包選擇哪條路徑到達(dá)目的地。
當(dāng)大量數(shù)據(jù)通過單個(gè)會話的多條并行鏈路時(shí),基于每個(gè)數(shù)據(jù)包的負(fù)載均衡顯得更加有效。在這種情況下,基于每個(gè)會話的負(fù)載均衡將會過載其中一條鏈路,而其他鏈路幾乎沒有什么流量。
但基于每個(gè)數(shù)據(jù)包的負(fù)載均衡會導(dǎo)致針對某一個(gè)會話來說,數(shù)據(jù)包可能走不同的路徑,這會引起數(shù)據(jù)包的重新排序,對于某些數(shù)據(jù)流量類型來說是不合適的,必須對于IP語音流量來說。
當(dāng)啟用基于數(shù)據(jù)包的負(fù)載均衡功能時(shí),必須先禁用基于目的地的負(fù)載均衡功能。為了禁用基于目的地的負(fù)載均衡功能,可以在接口配置模式下,
no ip load-sharing per-destination
使用基于數(shù)據(jù)包的負(fù)載均衡,路由器可以在路徑上連續(xù)發(fā)送數(shù)據(jù)包,而不用考慮具體的主機(jī)或用戶情況。這種負(fù)載均衡機(jī)制采用輪轉(zhuǎn)辦法來確定每個(gè)數(shù)據(jù)包采用哪條路徑到達(dá)目的地?;跀?shù)據(jù)包的負(fù)載均衡可以保證在多條鏈路上進(jìn)行負(fù)載均衡。要啟用基于數(shù)據(jù)包的負(fù)載均衡功能,可以在接口配置模式下
ip load-sharing per-packet
為CEF配置網(wǎng)絡(luò)記賬功能
啟用收集被快速轉(zhuǎn)發(fā)到某個(gè)目的地的數(shù)據(jù)包個(gè)數(shù)和字節(jié)數(shù)
ip cef accounting per-prefix
啟用收集通過某個(gè)目的地被快速轉(zhuǎn)發(fā)的數(shù)據(jù)包的個(gè)數(shù)
ip cef accounting non-recursive
在全局配置模式中為CEF啟用網(wǎng)絡(luò)記賬功能后,相應(yīng)的路由處理器會收集記賬信息。當(dāng)用戶為dCEF啟用網(wǎng)絡(luò)記賬功能后,線路卡上會收集記帳信息。
查看網(wǎng)絡(luò)記帳信息
show ip cef
為CEF配置跨隧道的交換
CEF支持跨隧道的交換,例如GRE隧道。當(dāng)你啟用CEF或者dCEF模式時(shí),跨隧道的交換會被自動啟用,所以您無需再執(zhí)行任何附加操作來啟用跨隧道的交換。有時(shí)候,在某個(gè)接口配置了一項(xiàng)功能,而CEF或dCEF并不支持該功能,這時(shí)您就可能需要在這個(gè)特定的接口上禁止CEF或dCEF。例如,策略路由和CEF就不能一起使用。您可能想讓一個(gè)接口支持策略路由,而讓其他的接口支持 CEF。在這種情況下,可以按全局模式啟用CEF,而在那個(gè)打算配置策略路由的接口上禁用CEF。這樣,除了那一個(gè)接口外,在其他所有接口上都啟用了快速轉(zhuǎn)發(fā)。在某個(gè)接口上禁用CEF 或dCEF,可以在接口配置模式
no ip route-cache cef
爾后又想重新啟用CEF,在接口配置模式下,可以使用:
ip route-cache cef 在Cisco12000
系列路由器上,您不可以在某個(gè)接口上禁用dCEF模式。
▲