天天看點

程序交換 快速交換 CEF

路由器最基本的功能是在網絡中轉移封包,這種封包的轉移基于一張轉發表完成的。路由器對于每一種轉發封包的協定都有一張獨立的轉發表,這些協定可能包括IP,IPX,AppleTalk,MPLS等。

有3種基本的方式實作轉發:程序交換,幹擾交換,ASIC(通用內建電路)。因為我沒有查到幹擾交換的具體内容,本文不做介紹。

程序交換是所有交換方式中最慢的一種。當通過路由器交換封包的時候,CISCO IOS程序會将封包複制到CPU緩存,并在IP路由表中進行查找。查到後進行一些管理性處理,包括改TTL,重新計算CRC。整個過程由中央CPU監控,沒有其他的基于硬體的幫助。

快速轉發

快速轉發會建立一張按需轉發表,對于去往每個目的地的一個封包實行程序交換,通過中央CPU完成,然後建立一個IP快速交換路由緩存。這個緩存不是永久的,它有一些計時器管理,隻要有封包轉發,這些條目就會存在,如果經過一段時間沒有封包轉發,條目将被删除以釋放空間。

下圖就是一個IP快速交換路由緩存的示例:

程式交換 快速交換 CEF

可以看出,對于每一個prefix都有一些參數:老化時間,接口,下一跳和第二層重寫資訊。這張圖中你看到的二層資訊是0F000800。其中,0F00是表明使用HDLC封裝,0800是IPv4的協定号。

CEF交換

雖然有了快速交換,使得交換封包變的快速。但是到達每個目的的第一個封包依舊要實行程序交換,這樣就很麻煩。而且,當目的地變的多起來的時候,時間的消耗就變得非常明顯。避免這個問題的解決辦法就是預先建立交換資訊表。

這個CEF交換表就是根據路由表建立的,路由表發生變化的時候它相應的也會變化。

組成CEF的兩個元件

CEF由兩張表組成:CEF鄰接表和CEF轉發表

鄰接表:

鄰接表用于MAC或者第二層資訊的重寫。第二層資訊能通過ARP,ATM,FrameRelay的映射狀态等方式學到。下圖中就有對應的第二層字段以及這些字段是如何被學習到的。

程式交換 快速交換 CEF

CEF表:

也叫FIB,用于進行3層的轉發決策。路由表中關于轉發比較核心的内容如:IP字首,遞歸的下一跳,出站接口會記錄在CEF表中。但是非核心的東西比如管理距離和路徑成本就被CEF表忽略了。

程式交換 快速交換 CEF

當封包進入路由器的時候,路由器将封包的二層資訊剝掉。在CEF表中查找相關的IP位址,進行轉發決策。決策結果會指向鄰接表的一條條目。在鄰接表中找回二層需要重的寫資訊,建構新的二層頭部,轉發到對應的下一跳接口。通過這兩張表,CEF同時扮演了第3層查找和第2層祯重寫的角色。