路由器工作原理淺談
- 2019 年 10 月 14 日
- 筆記
路由器工作原理淺談
路由器是構建整個網路最核心的設備。比較著名的品牌為cisco、銳捷、華為、TP-LINK、H3C等等。之前工作中接觸的較多的是思科和銀河風雲,思科的主要是7609,性能十分穩定,基本上全年每天24小時工作不會出問題。銀河風雲一般,十分笨重,板卡容易壞,2M介面不穩定(進行自環不是loopback狀態),軟體有bug(一次作業中發現其以太口如果正常工作中,當將網線從以太口中拔出再插上,和對端的路由器之間路由協議的鄰居就建立不起來,必須將整個路由器進行重啟才正常工作)。
路由器其實和我們普通使用的電腦類似,有cpu、輸入輸出介面、記憶體,作業系統(思科的是ios,華為的VRP)。思科公司從來不承認自己是硬體公司,而是一直聲稱自己是軟體公司,由此可以路由器的作業系統是核心,作業系統的性能直接決定了路由器的性能。路由器和我們使用的電腦最大的不同之處就是路由器是用來進行轉發數據包的,而我們使用的電腦只是接收數據包或者發送數據包。好比我們個人只會收快遞或者發快遞,只是作為葉子節點,但是快遞中轉站則接收來自各地的快遞然後進行判斷將每個包裹從正確的路線發送出去,這個快遞中轉站就和我們的路由器很相像了。
路由器有很多介面,我們的電腦一般只有一個乙太網口。而路由器比較常見的介面有2M口、以太電口、以太光口、POS口等等,這也是為了滿足整個網路的異構性。路由器這些介面主要是做什麼用的,當然是用來接收數據包、發送數據包的。數據包大家可以看成一個個快遞包裹。比如你要通過網路給朋友發送一首mp3,一個包裹裝不下,那麼就分成1000個包裹,當然是數據包,這個工作不需要你來做,電腦自動完成了,當你朋友收到這1000個數據包後,進行檢查有沒有破損的,沒有就進行重新組裝成mp3,如果在傳送過程中有丟失則會通知你進行重新傳送,重新傳送的時候只需要重傳丟棄或進行校驗出錯的那幾個數據包即可。另外這1000個數據包到達朋友處的順序是不定的,他們各自獨立的在網路上跑向目的地,這就是分組交換,相對應的就是電路交換,電路交換就如我們打電話,進行交互之前必須提前申請好一條資源線路。
好的,路由器介面是用來接收數據包的,那麼數據包到達路由器介面會發生什麼呢?首先路由器會檢查數據幀目標地址欄位中的數據鏈路標識。(其實就是MAC地址,二層,數據鏈路層,只在單跳中有用,在網路上每進行一跳數據包頭中的目的MAC都要進行改寫才能繼續進行下一跳。這和IP地址不一樣,數據包中的目的IP地址在整個網路傳輸過程中是一直不會變化的。IP地址類似我們的地址,MAC地址類似於我們每個人的身份證號),如果它包含了路由器介面標識符或者廣播標識符,那麼說明這個數據包是給路由器 我自己的,則路由器需要將從幀中剝離出數據包並傳遞給網路層。
在網路層,路由器將檢查數據包的目的IP地址。如果目的IP地址是路由器的介面IP地址或者是所有主機的廣播地址,那麼需要進一步檢查數據包的協議欄位,然後再把被封裝的數據發送給適當的內部進程,就是說這個數據包就是給我自己的,我自己進行消化處理,不需要我再進行轉發。
除此之外,其他所有的數據包都不是給我的,都需要我進行轉發,進行轉發就要進行路由選擇,否則路由器不知道應該從哪個介面將該數據包扔出去。數據包的目的地址可能是另一個網路上的主機地址,這個網路也許和路由器直接相連、也許不直接相連。那麼路由器就需要查看自己的路由表來判斷這個數據包中指示的目的地址應該從哪個介面送出去。路由表是路由器一個最核心的資料庫,是不斷動態變化的,是路由器工作的基石,他是由一條條的路由組成的,每一條路由至少包含了兩點:目標地址、指向目標地址的指針。目標地址:這是路由器可以到達的網路地址。指向目標的指針:指針不是指向路由器的直連目標網路就是指向直連網路內的另一條路由器地址,或者是到這個鏈路的本地介面。而且數據包在進行路由匹配的時候遵循路徑選擇最長匹配原則,就是如果有多個匹配,則選擇掩碼最長的。
我們上面所說的路由表是路由器工作過程中最核心的東西,是一個動態變化的資料庫,所有數據包轉發都需要根據路由表進行匹配。而且每個路由器都有自己的路由表。那麼路由表中一條條的路由是怎麼來的呢,由靜態路由和動態路由協議得來的,靜態路由是手動設置的,動態路由協議包括RIP、EIGRP、OSPF、ISIS、BGP等,在路由器中看啟動了哪些路由協議,也即啟用了哪些進程。這些進程就像一個個的打工仔,不斷的和同樣運行該協議的鄰居路由器們進行交互、進行計算,從而找到新的路由供路由器進行選擇,路由器根據一定的策略再決定要不要將該路由加入路由表中,只有加入了路由表中的路由才是有用的。