rip,ospf屬於應用層協議,但是路由器只是工作在下三層啊,網路層,數據鏈路層,以及物理層,這怎麼解釋啊?

正在學習計算機網路這門課。


路由器在轉發流量時,工作在IP層,即檢查IP頭,做最長匹配,尋找出介面,完成二層封裝,發送出介面。

但是運行BGP等路由協議時,它和普通主機沒有任何區別,有自己TCP/IP協議棧,有運行在協議棧上的BGP應用程序。

更詳細內容看下面的解釋:
路由器工作分為控制層面和數據層面

控制層面的協議:
比如RIP,OSPF,BGP,LDP,全是工作在IP層以上,這個時候路由器和普通的主機沒有什麼區別,都是靠CPU來處理這些協議,而且路由器還可以提供如HTTP server 的功能,這也是CPU來處理。控制層面的流量有一個特徵:即目的IP地址是路由器的介面IP,路由器發現是自己的,就會punt上來,給TCP/IP協議棧來處理,然後在通知各個control plane protocol 來最終處理。我們一般還稱之為: For_Us traffic , Local traffic

數據層面:
當控制層面建立成功,即路由收斂完成,路由器一般把這些路由表項下發到硬體,可以完成硬體轉發,這個時候如果有IP包從這裡過路,會檢查IP頭裡的destination IP,和路由表進行匹配,找到出介面,然後完成二層封裝,再從介面發送出去。數據層面的流量我們一般稱其為過路流量,即 目的IP地址不是本路由器的任何介面的IP。

我們還稱這種流量為: Non_Us traffic ,transit traffic ,這種靠硬體轉發的流量基本上對RP (Routing Processor )CPU影響很小,一般是由FP(Forwarding Processor )來處理,但如果硬體轉發表里沒有匹配到(會有這種情況發生)一個表相,這種流量也會punt 上來給RP CPU處理,對CPU的影響就會很大,影響control plane protocol的工作,極端情況會造成CPU資源利用率超過&>99%,這個時候就需要分析什麼樣的流量造成的,然後採取措施來解決問題,比如刷新一下受影響的路由表項,讓路由表和轉發表完全同步,可以避免這個問題。

現代路由器完成了control plane 和data plane 的分離,硬體分離,即RP處理控制層面的流量,FP處理數據層面的流量。正是因為物理分離,可以用兩塊RP來完成冗餘備份,FP也可以多塊來負載均衡、負載備份。


這個問題要講起來很複雜,包括現代路由器的硬體架構和軟體架構。
硬體架構比如line card, fabric card, routing processor, switch fabric以及multi-chassis,到具體line card內部的構架都要深入了解。
軟體架構像基於Linux的IOS XR, microkernel 特點,IPC通信,進程管理等。


路由器工作在下三層是指路由器在處理用戶的流量的時候只在這三個層處理。ospf和rip是路由協議,不是用戶流量。為了方便管理路由器還支持http訪問呢。這些都不是用戶流量。


rip是七層協議我懂。
OSPF不是網路層協議么。怎麼變成七層了。。。
難倒我一直學的是錯的?


rip,ospf,在osi的模型中什麼時候跑到應用層去了?本來就是網路層的協議啊!


這麼理解吧。路由器作為一台網路設備,有硬體(cpu,內存,轉發晶元,輸入輸出介面),有bios(boot loader),有操作系統( ios)組成。其中,操作系統內置了大量的應用程序與功能,有靜態路由,有策略路由,有rip,有ospf等。在路由器內部,rip和ospf運行在應用層。然後看動態路由協議的功能,是分析ip數據報的目的地址,然後選擇路徑轉發。所以我們說動態路由協議運行在osi參考模型的第三層。

若有不對,歡迎指正,就醬。


推薦閱讀:

關於IP分組的分段是什麼原理?
ipconfig下的IPv4地址是什麼意思?
IP層接收到比MTU大的數據包會先分片再重組,隨後在傳遞給上層協議(比如UDP)處理嗎?
TCP協議的滑動窗口具體是怎樣控制流量的?
為什麼路由器明明隔離廣播域,仍然可以全網廣播比如ARP協議?

TAG:計算機網路 | 網路傳輸協議 | TCPIP |