switching is the process of mapping layer 2 to layer 3 addresses and forwarding to a destination interface.
switching mode 有很多種,每種模式都有其特別的針對性,理解它們的不同對于我們合理的應用有著非常重要的意義。另外還有些QOS和Security技術需要特定的Switching mode.具體分析如下:
1 Process Switching(進程交換)
這是一種最基本的交換模式,在這種模式下,一條數據流(flow)中的第一個包(packet)將被置入系統緩存(system buffer)。其目的地址將會拿到路由表中去查詢比對,路由器的處理器(CPU or Processer)同時將進行CRC校驗,檢查包是否正確。然后數據包的二層MAC地址將會被重寫,替換為下一跳接口的MAC地址。
這樣的過程將會繼續,對這條數據流(flow)中的第2個、第3個數據包……相同的操作,包括查詢路由表、重寫MAC地址,CRC校驗等。
這種方式無疑是延遲最大的,因為它要利用system buffer以及processor去處理每個收到的包。但是我們仍然有機會使用這種交換方式,比如在進行基于每個包的負載分擔時,或是debug ip packet時。
提了這么多,如何打開process switching?因為默認情況下,思科路由器會啟用fast switching或optimum switching或是cef switching,而不是process switching,所以我們只能通過:no ip route-cache來禁用fast switching,這在另一種意義上正是開啟process switching.
2 Fash Switching
快速交換要優于process switching,它采用了route cache(路由緩存)來存儲關于某條數據流(flow)的特定信息,當然會包括諸如目的MAC地址,目的接口等內容。這時我們只需要對一條數據流 (flow)中的第一個包做process switching,并把信息存入cache,所有后續數據包,可以不必再中斷system processor去執行查詢等操作,直接從cache中提取目的接口,目的MAC地址等,這樣大大加速了包轉發速度。
fast switching在某些資料上可能被稱為route-cache switching
思科1600、1700、2500、2600系列路由器的ethernet、fast ethernet、serial接口默認采用的就是fast switching.
我們可以用ip route-cache命令,在接口上啟用fast switching
show ip cache來檢查fast switching的相關信息。
3 Optimum and Distributed Switching
這兩種交換模式,從原理上來講都與fast switching極為相似,比如optimum switching其實采用了一種經過優化的交換緩存(optimumed switching cache),它的速度要較平常cache要快。
distributed switching mode需要使用Versatile Interface Card這種硬件卡,又稱VIP card.它會自已保存一份route cache,這樣在查詢時就不必要等待使用共享的系統緩存了(shared system buffer),無論相對于fast switching還是optimum switching來講,都是比較快的。
這兩種模式一般只在思科高端設備上有所應用,比如7200系列路由器。或者12000系列路由器。
命令:ip route-cache optimum show ip cache optimum
4 Netflow switching
這種模式是最值得參考的,它完全基于其它switching mode,重點在于對流經的數據包進行計費、監控、網管。但不得不提的是,這種模式因為也要存儲相關信息,經過統計,大致65536條數據流(flow)會耗費4MB的system buffer.
相關命令:
ip route-cache flow
show ip cache flow
ip flow-export 將NETFLOW審計的數據包轉發到指定設備。
5 Cisco Express Forwarding
思科CEF是最為高效的一種三層協議,很多人容易對CEF產生誤解,所以我們仍然要說明它的來原。
CEF采用了基于硬件的平臺,它不僅僅是將數據都存入system buffer,而是將整個路由表、拓撲表,以及所有的下一跳地址、MAC地址全部進行"預存",只要路由表、拓撲表中存在的條目,無論是否有數據請求發往其目的地址,都會提前預讀取,預設置緩存。這樣,當有新的數據請求發送時,就不需要CPU去查詢目的接口,目的MAC地址等等信息,而是直接從緩存中讀取,從而使轉發速度得以大大提高。
相關命令:ip route-cache cef
show ip cef
show ip cef detail