天天看點

CISCO CEF(Cisco Express Forwarding,Cisco特快交換) 詳解

CEF采用一個4級每級256條通道結構的轉發表來指明轉發條目的位置,轉發表有next hop等資訊,涵蓋了整個IPv4的位址範圍,并有指針指向另一個鄰接表。轉發條目(MAC位址之類)都存儲在一個單獨的鄰接表上。這兩個表包括了所有的 轉發資訊,而這些轉發資訊是根據路由表和ARP來構造的。

CEF簡化了查詢的步驟,提高了機關時間的工作效率。而且從整體上來看,路由資訊和轉發資訊是分離的,資料包的轉發隻根據轉發資訊而不用參照路由資訊,可以充分利用專用硬體的功能來達到線速轉發,而不受路由變化或者其他因素的幹擾,保證了轉發的高速高效。

CISCO CEF(Cisco Express Forwarding,Cisco特快交換) 詳解

CEF轉發提供3張表

1>FIB:從路由選擇表中拷貝過來的轉發資訊,包括路由選擇表中用于轉發路由分組所必須的最少資訊。

2>鄰接表:維護一個鄰接節點以及他們相關的2層MAC重寫或吓一跳資訊資料庫

3>NetFlow Table:用于統計網絡資料等

需要指出的是,

CEF的轉發資訊不是存儲在cache裡的,是以也不存在過期廢棄或定時重新整理,隻有根據路由表的變化而進行的更改

, 通常很穩定。而且轉發資訊是從路由資訊經過一定處理後轉換過來的,也就是說,如果在轉發資訊裡找不到某個資料包的轉發資訊,那麼也不用費心到路由那裡去 了,因為那裡肯定也沒有。這個資料包的下場不是被扔掉就是轉到其他轉發線程中去,轉發資訊等于是路由資訊針對于硬體轉發的一個變形。

這樣的結構布局保證了路由功能和交換功能的分離(軟體上)。

路 由功能隻處理三層以上資訊,如路由資訊處理、政策等,然後形成一個路由表,再根據這個路由表生成相應的轉發資訊。轉發功能很明确,就是根據這些轉發資訊來 工作,沒有相關資訊就拒絕。而不象MLS那樣,遇到不認識的還得回頭找路由問明白,那樣降低了轉發效率。 CEF在軟體形式上實作了路由和交換功能的分離,而并不意味着路由器實體結構上的分離,是以它也可以在一些多層交換機和低端的路由器上實施。

它的高速表現在以下兩個方面:

1>在查詢方式上簡化了步驟,提高了速度;

2>在分離了路由和轉發功能。

支援CEF的硬體平台

Cisco首先在高端路由器平台實作CEF,此後,Catalyst交換機也支援CEF的轉發,但是還存在一些差别,但均提供如下特性:

1. 基于“最長位址比對”查找的高速轉發

2. 等價路徑的負載均衡

3. 逆向路徑轉發檢查(RPF)

4. 不詳路由的無效

有些CEF特性僅在路由器上實作

1. 關閉基于CEF的轉發能力

2. 每個字首和每個字首長度的CEF統計

3. 從負載共享路徑統計資料

4. 基于每個分組的負載均衡

當您在網絡中使用CEF時,請先考慮以下項目:

加載目前完整的Internet路由資訊的平台所需的最小記憶體(推薦):

- 集中路由子產品上需要128MB

- 每個線路卡上需要64MB

CEF不能在一個線路卡上和VIP-分布式快速交換同時運作。

預設情況下,如果Cisco IOS軟體在交換資料報時遇到CEF不支援的功能和封裝類型,它将采用其他交換方法(如最優交換、快速交換、過程交換)。

目前CEF不支援以下功能:

- 政策路由

- 網絡位址翻譯(NAT)

- 路由交換子產品上的通路控制清單

- 多點PPP封裝

- SMDS

- 令牌環

- ATM

- ISL封裝

以下平台支援CEF功能:

Cisco7000系列路由器(需要裝備RSP7000)

Cisco7200系列

Cisco7500系列

Cisco12000系列

第二代接口子產品(VIP2-20、VIP2-40、VIP2-50)支援CEF。

在 不同的路由器平台上,硬體對CEF的支援可能會有所不同,這要由路由器中安裝的路由子產品和其他硬體所決定。例如在Cisco12000系列路由器上,所有 的線路卡都支援CEF交換;在Cisco7500系列路由器上,要實作CEF交換,需要有RSP子產品和VIP線路卡的支援。每個接口卡用自己的引擎獨立地 運作CEF去轉發資料包,并且都獨自擁有一個對FIB表的拷貝。每個接口卡獨立的去交換資料包,減輕了中心路由處理子產品的負擔。

CEF操作

要了解CEF,必須先了解Supervisor的處理結構 Cisco Supervisor2結構如下

CISCO CEF(Cisco Express Forwarding,Cisco特快交換) 詳解

底闆:

主要提供交換矩陣,32Gbit/s的總線,多點傳播複制ASIC,網絡管理處理器,還有基于GBIC的2個接口。此外還提供PFC2和MSFC2子闆的連接配接器

PFC2:

提供一組ASIC進行所有基于硬體的轉發。

通常CEF就是在這個卡上實作的。

他提供基于3層的轉發引擎。提供各種3層表,如FIB,鄰接表等。此外,PFC還包口基于硬體的通路控制清單和Qos機制的ASIC。

MSFC2:

MSFC2 提供一個處理所有3層控制闆活動的cpu 。控制闆是處理路由計算的硬體體系結構的一部分。MSFC2負責處理不能由PFC2硬體元素處理的功能,以及所有路由選擇協定活動的處理,比如OSPF和 BGP的路由選擇更新。MSFC2 也負責形成lP路由選擇表、FIB 表和鄰近表。

在這3個元件中,監控底闆和PFC2是強制構件,而MSFC2元件是可選的(盡管它是第3層交換十分需要的)

, 因為它包括形成CEF表的CPU. MSFC2子卡上的CPU運作任何所配置的路由選擇協定需要的所有執行個體。此外,CPU還處理不能用硬體處理的分組。MSFC2是基于cisco IOS軟體的路由器,并以同樣方式配置。配置參數與Cisco 7200 系列路由器上的一樣。CEF同Supervisor一起預設啟用。事實上,它不能關閉。

對于大多數通用的CEF功能,不需要特别地配置來啟用CEF ,除了路由選擇協定、網絡接口位址等的标準配置。

在路由器初始化時,會根據路由器軟體配置中的資訊建構一張路由選擇表(如靜态路由、直連路由,以及通過路由選擇協定交換動态學習到的路由)。在建構了路由選擇表之後,CPU自動建立FIB和鄰近表。FIB 和鄰近表顯示了按照最佳轉發方式進行的出現在路由選擇表中的資料。

與基于通信流的流緩存不同,cEF表是基于網絡拓撲。

當 一個分組進入交換機時,交換機的第3層轉發引擎ASIC根據目的網絡和最詳細的網絡掩碼澎于最長比對查找。例如,PFC2不是基于目的位址 172.31.10.3進行交換,而是查找網絡172.31.10.0/24 并交換到連接配接該網絡的接口上。并且不涉及除路由選擇表和預先建立的FIB 表之外的任何軟體。此外,一旦路由選擇表中發生了變化,所有的cEF 表會立即更新。這使得這個方法是高效的,緩存不會由于路由翻動而無效。CEF 更加适應網絡拓撲的變化。

CEF表

1.CEF轉發資訊庫:

CEF 利用轉發資料庫(FIB)來進行基于IP目的地字首的交換決策。從概念上講,FIB類似于一個路由表或資訊庫,它維護着一個包含IP路由表轉發資訊的鏡 像。當網絡中路由或拓撲結構發生了變化時,IP路由表就被更新,而這些變化也将反映在FIB中。基于IP路由表中的資訊,FIB維護着下一跳的位址資訊。 因為FIB條目和路由表條目之間有一一對應的關系,是以FIB中包含了所有已知的路由,這樣就不用維護路由高速緩存了,而先前的交換方法(比如快速交換和 最優交換)都要維護路由高速緩存。

CISCO CEF(Cisco Express Forwarding,Cisco特快交換) 詳解

CEF FIB 表由一棵4級層次的樹組成,如圖所示。4 級來源于IP 議所使用的犯比特位址。層次的每一級是基于32比特中的8 位。CEF 依賴最長比對轉發算法,這意味着按降序搜尋整棵樹直到“最長比對”,即比對最大比特數。FIB 樹分層表示,樹的頂端是最不詳細的位址,底端是最詳細的位址。每個葉以8比特為邊界,按降序排列更詳細的表項。這棵樹(通常被認為是一個256 路的分支樹)提供了一種用于快速查找的高效機制,確定查找過程中産生最少的延遲。這棵樹也提供一個高擴充性的體系結構,因為它能以相比與表效率來說最小的 性能開銷完全統計IPv4 編址。每個樹葉提供了一個到鄰近表中相應下一跳表項的指針。

2.鄰接表(Adjacency Table)

如果網絡中的網絡節點隻通過一跳就可以穿越鍊路層而彼此到達對方,那麼它們是鄰接的。除了FIB外,CEF還利用鄰接表來提供第二層的尋址資訊。鄰接表為所有FIB條目維護第二層的下一網段位址。

鄰接的發現

當路由器發現存在鄰接時就增加在鄰接表中,每次生成一個鄰接條目(就像ARP協定一樣),CEF會為那個鄰接節點預先計算一個鍊路層頭标資訊,并把這個頭 标資訊存儲在鄰接表中。當決定路由時,它就會指向下一跳以及相應的鄰接條目。随後,在對資料包進行CEF交換時,用預先生成的頭标資訊來對資料包進行封 裝。

分解鄰接

一個路由表中也許存在多條到達目标網絡的路徑,例如:當路由器被配置成允許備援路徑和允許負載均衡時。對于每一個被分解的轉發路徑,鄰接條目會被附加一個頭标資訊訓示出那條路徑的下一跳位址。這種機制可以用來在多條路徑上實作負載均衡。

需要作特殊處理的鄰接類型

另外,因為鄰接條目和下一跳位址相關聯,是以一些特殊的鄰接類型可以被用來加速交換過程。字首被定義後,當存在以下被緩存的鄰接條目存在時,字首需要作特殊處理。空鄰接一個以Null0接口為目标位址的包會被抛棄,在通路過濾器時,這可以被用作一種有效的機制。

鄰接歸納

當路由器直接和幾台主機相連時,FIB表中維持的是這個子網的字首,而不是各個主機的字首。這個子網字首是一個鄰接的歸納。當要轉發某個資料包到某個具體主機時,鄰接資料庫使用這個被歸納的鄰接。

轉出鄰接

當遇到某些作特殊處理的功能或者CEF不支援的功能時,路由器将采用更進階别的交換方法處理資料包。

丢棄鄰接

資料包被丢棄。這種鄰接類型僅僅在Cisco12000系列路由器上出現。

釋放鄰接

資料包被釋放,但是字首仍然有效。

沒有被分解的鄰接

當鍊路層頭标資訊被附加到資料包上時,FIB需要頭标指出下一跳的位址。如果FIB表中建立了一個鄰接,但是并沒有找到第二層的尋址資訊,比如沒有通過ARP發現第二層的尋址資訊,這個鄰接就被認為是不完整的。這個資料包就會交給路由子產品處理,鄰接關系由ARP來決定。

CEF轉發過程

CEF的兩個表:

CISCO CEF(Cisco Express Forwarding,Cisco特快交換) 詳解

3層包從TCAM開始查找;進行最長比對,得到鄰居資訊,改寫原有二層資料幀(下一跳MAC位址)并轉發。

CEF表是從路由表得來,鄰居表是使用ARP解析得來的。

CEF多層交換的過程:

CISCO CEF(Cisco Express Forwarding,Cisco特快交換) 詳解

左側MAC-M(MAC位址)是SW。右側的MAC-M是SW。

如果目的IP位址的MAC不在鄰居表内,則SW将使用ARP進行解析,以得到目的位址的MAC位址。

ARP Throttling(ARP抑制):在未獲得目的MAC位址并且進行ARP解析時,除非ARP解析完成并且在鄰居表展現出來外,在解析期間,所有發往目的主機的包,将被丢棄,這就是ARP抑制。

CISCO CEF(Cisco Express Forwarding,Cisco特快交換) 詳解

FIB最多支援6個到達同一目的的鄰居條目。

CEF模式

CEF的操作模式有2種,即集中CEF模式和分散CEF模式。

可以通過其中的任意一種來啟用CEF,同一時刻使用者隻能使用其一種模式。

集中CEF模式

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

分布CEF模式

當啟用分布式CEF(dCEF)時,線路卡(例如VIP線路卡或者GSR線路卡)維護着一個與FIB和鄰接表相同的拷貝。線路卡在端口擴充卡之間執行快速 轉發,這樣,在進行交換操作時就無須RSP的參與了。dCEF使用一個“内部過程通信”(Inter Process Communication,IPC)機制,在路由處理子產品和線路卡上,保證FIB和鄰接表的同步。

在Cisco12000系列路由器中,線路卡負責執行CEF交換。在其他路由器中,或許您使用的不是同一種類型的線路卡,有可能某個接口卡不支援CEF交換。

當某個不支援CEF交換的線路卡收到資料包時,她将資料包轉發給更高的交換層(比如路由處理子產品)或者把資料包轉發給下一跳處理。這種機制允許舊的接口子產品和新的接口子產品并存。

1.Cisco12000系列千兆交換路由器上隻運作dCEF模式。

2.一個V國際電話預付卡上不允許同時運作分布式CEF交換和分布式快速交換。

3.Cisco7200系列路由器不支援分布式CEF交換。

附加的新功能 在配置集中模式CEF和分布模式CEF時,您還可以配置以下功能:

1>分布式CEF支援通路控制清單

2>分布式CEF支援幀中繼包

3>分布式CEF支援資料包分片

4>支援基于每一個包或者每一個目标的負載均衡

5>支援網絡計費,可以收集資料包的個數和位元組數

6>分布式CEF支援跨隧道的交換

發給下一跳處理。這種機制允許舊的接口子產品和新的接口子產品并存。

1 Cisco12000系列千兆交換路由器上隻運作dCEF模式。

2 一個V國際電話預付卡上不允許同時運作分布式CEF交換和分布式快速交換。

3 Cisco7200系列路由器不支援分布式CEF交換。

附加的新功能

在配置集中模式CEF和分布模式CEF時,您還可以配置以下功能:

CEF:

如果使用者的Cisco路由器中有接口處理器支援CEF時,就可以啟用CEF。

為了啟用或禁用CEF,可以在

全局配置模式

下利用下面的指令進行配置。

啟用标準CEF模式

ip cef switch

禁用标準CEF模式

no ip cef switch

dCEF:

當線路卡執行快速轉發時,則啟用dCEF,這樣,路由處理子產品就可以處理路由協定或者負責交換從舊的接口子產品(不支援CEF交換的子產品)過來的資料包。

在Cisco12000系列路由器上,dCEF模式是預設啟用的。

是以啟用dCEF的指令(ip cef switch)在Cisco12000系列路由器上是沒有意義的,在配置清單上也不會列出dCEF模式被啟用。

為了啟用或禁止dCEF操作,可以在

啟用dCEF模式

ip cef distributed switch

禁用dCEF模式

no ip cef distributed switch

有 時候,在某個接口配置了一項功能,而CEF或dCEF并不支援該功能,這時您就可能需要在這個特定的接口上禁止CEF或dCEF。例如,政策路由和CEF 就不能一起使用。您可能想讓一個接口支援政策路由,而讓其他的接口支援CEF。在這種情況下,可以按全局模式啟用CEF,而在那個打算配置政策路由的接口 上禁用CEF。這樣,除了那一個接口外,在其他所有接口上都啟用了快速轉發。

在某個接口上禁用CEF或dCEF,可以在接口配置模式:

no ip route-cache cef

爾後又想重新啟用CEF,在接口配置模式下,可以使用:

ip route-cache cef

在Cisco12000系列路由器上,您不可以在某個接口上禁用dCEF模式。

CEF負載均衡

基于目的地的負責均衡:

基于目的地的負載均衡允許路由器将使用多條路徑來均衡負載。對于某一源/目标主機,資料包轉發采用同一路徑,即使有多個路徑可用,也将這樣處理。對于到達不同目的地的資料包則可以采用不同的路徑。

當啟用CEF時,基于目的地的負載均衡功能預設被啟用。大多數情況下,都采用這種負載均衡方法。

因為基于目的地的負載均衡是依賴于對資料流的統計來分布資訊的,是以随着“源/目的地對”個數的增加,負載均衡會變得更加有效。

基于資料包的負載均衡:

當啟用基于資料包的負載均衡功能時,必須先禁用基于目的地的負載均衡功能。為了禁用基于目的地的負載均衡功能,可以在接口配置模式下,

no ip load-sharing per-destination

使用基于資料包的負載均衡,路由器可以在路徑上連續發送資料包,而不用考慮具體的主機或使用者情況。這種負載均衡機制采用輪轉辦法來确定每個資料包采用哪條路徑到達目的地。基于資料包的負載均衡可以保證在多條鍊路上進行負載均衡。

要啟用基于資料包的負載均衡功能,可以在接口配置模式下,

ip load-sharing per-packet

為CEF配置網絡記賬功能

啟用收集被快速轉發到某個目的地的資料包個數和位元組數

ip cef accounting per-prefix

啟用收集通過某個目的地被快速轉發的資料包的個數

ip cef accounting non-recursive

在全局配置模式中為CEF啟用網絡記賬功能後,相應的路由處理器會收集記賬資訊。當使用者為dCEF啟用網絡記賬功能後,線路卡上會收集記帳資訊。

檢視網絡記帳資訊

show ip cef

為CEF配置跨隧道的交換

CEF支援跨隧道的交換,例如GRE隧道。當你啟用CEF或者dCEF模式時,跨隧道的交換會被自動啟用,是以您無需再執行任何附加操作來啟用跨隧道的交換。

CEF檢驗

Cisco7505#

sh ip cef detail

IP CEF with switching (Table Version 5), flags=0x0

5 routes, 0 reresolve, 0 unresolved (0 old, 0 new), peak 0

5 leaves, 8 nodes, 9080 bytes, 10 inserts, 5 invalidations

0 load sharing elements, 0 bytes, 0 references

universal per-destination load sharing algorithm, id 9466A8C7

3(0) CEF resets, 0 revisions of existing leaves

Resolution Timer: Exponential (currently 1s, peak 1s)

0 in-place/0 aborted modifications

refcounts: 2311 leaf, 2304 node

Table epoch: 0 (5 entries at this epoch)

0.0.0.0/0, version 0, epoch 0, attached, default route handler

0 packets, 0 bytes

via 0.0.0.0, 0 dependencies

valid no route adjacency

0.0.0.0/32, version 1, epoch 0, receive

224.0.0.0/4, version 4, epoch 0

next hop 0.0.0.0

valid drop adjacency

224.0.0.0/24, version 3, epoch 0, receive

255.255.255.255/32, version 2, epoch 0, receive

MSFC2#

sh ip cef summary

IP CEF with switching (table Version 477965)

445 routes , 0 reresolve, 0 unresolved ( 0 old, 9 new)

446 leaves, 76 nodes, 132560 bytes, 477966 inserts,

477520 invalidations

0 load sharing elements , 0 bytes, 0 references

繼續閱讀