計算機網路 04 網路路由

2021-10-14 18:17:10 字數 4597 閱讀 6245

給每次資料傳輸確定乙個端到端的路徑,通常是找到兩點之間的最小代價路徑,儲存在路由器的**表fib中

基於分布式計算

網路模型用無向圖表示,節點是網路裝置(路由器),節點間鏈路是帶權重的邊,權重即鏈路開銷,可以是延遲、擁塞程度、花銷等等

目標是找到兩點之間的最小代價**路徑

對於乙個單一節點來說,到其他節點的最短路徑會構成乙個樹

路由計算的方法包括集中式方法和分布式方法

集中式方法適用於小規模網路,集中收集拓撲資訊,使用最短路徑演算法計算,並下發給各個節點

分布式方法適用範圍更廣,包括距離向量演算法dv和鏈路狀態演算法ls

基本思想是任何時刻節點都儲存到目的節點的已知最優路徑開銷和下一跳節點,如果不可達則開銷用∞表示

初始化只有到相鄰節點的開銷和下一跳資訊

然後**給鄰居節點,鄰居收到後計算對比選擇更優的開銷,並更新自己的路由**表

本質上是乙個分布式的bellman-ford最短路徑演算法

網路拓撲發生變化時節點檢測到相鄰鏈路頻寬發生變化,更新自己的**表並通知鄰居

但是存在問題:節點開銷增大時會造成更新一直迭代(因為都傾向於選小的,但是小的這時候已經不存在了,相當於選擇保留了過時的資訊)。開銷增大的時候要過很久網路才能穩定下來,在這個過程中會存在路由環路。稱為count-to-infinity

解決方法:水平分割和反向抑制

水平分割的方法是節點a不向節點b通告經過節點b的路徑(告訴人家幹啥啊……人家自己清楚的很),需要等待超時才能穩定(因為a沒主動告訴人家b)

反向抑制的方法是節點a告訴節點b「我到c是不可達的,你不要試圖經過我到c」(不需要等待超時,是主動告知的)

rip路由狀態協議,最早的ip路由協議,特點是每一跳的開銷都是1,最大跳數小於16

初始化是問鄰居節點要當前的路由表副本,週期性是每30秒向鄰居節點發自己的路由表副本,觸發性是當自己的表發生變化的時候立即通告鄰居

基本思想是每個節點都獲得整個網路的完整拓撲,各節點廣播擴散拓撲關係,每個節點單獨計算到其他節點的最短路徑

獲得完整網路拓撲的方法

建立鏈路狀態lsp,包括該lsp的節點標識id(標記這是誰的lsp),鄰居節點和對應開銷,還有序列號和生存週期

擴散的時候發給鄰居,鄰居收到以後,如果發現之前沒有儲存過這個id的lsp,就存乙份,如果之前存過但是新的序列號更大(更新),就存乙份,然後更新,繼續向外擴散,構成可靠泛洪

最短路徑計算

dij演算法,在未訪問節點中選擇離已訪問節點最大的那個,最終生成的是一棵最短路徑樹

ls演算法可能存在瞬時環路

rip改進:ospf

開放最短路徑演算法

鏈路開銷可以自定義,比rip收斂速度更快,適應範圍更廣

更大規模網路中

區域內每個節點單獨計算,區域間節點只知道到其他區域的路由路徑,先發到邊界路由器再說,別的不管

所以區域間的路徑可能不是最短路徑(沒事

訊息數目方面,dv是相鄰節點之間交換資訊,ls是所有節點之間都需要交換資訊(可靠泛洪方式交換)

空間開銷方面,dv只儲存鄰居節點,小;ls儲存區域網內所有節點,大

收斂速度方面,dv慢,ls快

可擴充套件性方面,dv差,ls好

路由環路方面,dv會存在count-to-infinity路由環路;ls可能存在瞬時環路

路由協議方面,dv有rip,bgp;ls有ospf,is-is

自治系統as

單一實體管轄的路由器集合

內部使用內部閘道器協議和度量標準**資料報,對外使用外部閘道器協議將資料報路由到其他as

每個as都有自己的標識

不能把域內路由協議直接應用到域間路由協議,因為域內的是效能為導向的,全網同一目標;域間的是策略為導向的,不同的as目標不同

域間路由的難點:不同as的度量指標不同,擴充套件性差,乙個as的錯誤配置可能導致下游好多as故障

選距離向量的話,收斂慢,還會有路由環路

選鏈路狀態的話,每個系統度量指標不一樣,可能有環路,狀態資料庫太大,而且還會把自己的路由策略暴露給其他人

bgp邊際閘道器協議

使用的是路徑向量而不是距離向量,攜帶了整個路徑的資訊

as在收到通告之後,檢查自己在不在這個路徑裡頭,如果在的話就直接扔了,如果不在再把自己加到路徑裡面,然後通告

這樣避免形成環路,而且指標也不需要做全域性統一

多連線as可以:不幫別人**、全幫別人**、看情況幫一部分人**不幫一部分人**

路由訊息交換可以使用tcp,簡化了路由協議設計,不需要等著別人的確認,不需要定時更新,連線斷開前一直有效,可以批量更新,但是鏈路負載很高的時候路由協議效能會受影響

路由更新訊息包括撤銷路由、路徑屬性、網路層可達資訊,同一訊息中通告的所有字首都有相同的路徑屬性

內部bgp和外部bgp(ibgp和ebgp)

乙個as中的邊界閘道器路由器之間建立連線,學習路由,稱為ibgp,這個東西不能再通告其他節點(可能會引起路由環路)

不同as中的邊界閘道器路由器之間建立連線,學習路由,成為ebgp,這個東西可以通告給其他節點

總結提供了分層的路由機制(as內和as間),有一定可擴充套件性,是策略決定的路由

路徑向量機制(帶路徑的距離向量)可以快速檢測環路,避免暴露自己的策略給其他as

移動主機的ip經常變,但是伺服器不知道,還是堅持把東西發到原來的ip,而ip協議假設了主機位置不變,我按照ip發過去了那就是收到了

但是移動使用者希望能夠不感知到在不同網路的切換,資料傳輸過程中也不更換ip位址(不然我啥也收不到了)

如果嘗試通告新ip位址(告訴對方我變了,讓他把資料發到新位址),但這樣會有安全問題,攻擊者可以冒充移動端傳送通告,進行中間人攻擊

解決方法:假設主機有乙個永久的ip位址,稱為本機位址,作為identifier,和移動前的網路有相同字首;移動到新網路後獲得乙個新的ip,作為locator,兩個位址共存,locater負責接收資料,identifier負責解復用資料

構成主要包括移動主機、本地**、外地**、轉交位址和對端主機

對端主機:伺服器

傳送過程

本地**擷取目標為移動主機的資料

資料肯定會先到本地**所在的網路,本地**模擬移動主機收取資料

本地**把這些資料發給外地**

本地**使用轉交位址將資料封裝,發給外地**,外地**剝離封裝的ip頭,獲取原始資料

外地**把資料發給移動主機

外地**查詢原始資料的ip位址,通過mac位址傳送給移動主機

移動端加入過程

告訴外地**我想加→外地**向本地**申請對映,本地**說可→外地**告訴移動主機說可→完成

移動主機註冊資訊

mobility binding table記錄移動主機的本地位址和外地**的轉交位址,由本地**維護;visitor list記錄移動主機的本地位址、本地**的位址、移動主機的mac位址,由外地**維護

存在的問題

**三角路由:**繞路問題,因為資料報都是對端主機→本地**→外地**→移動端 或 移動端→外地**→本地**→對端主機,但有時候移動主機到對端主機比到本地**還近,繞路了。解決方法是由本地**告知對端主機,移動端對應的轉交位址,讓對端主機和外地**直接通訊(跳過本地**)。

**單點失效:**本地**壞了就無了。解決方法是多ha機制

主機一直動,頻繁向ha註冊:解決方法是多個ha協同構成ha組

安全問題balabala

因為編址必須基於拓撲結構,所以可擴充套件性好,但是拓撲不是靜止不變的,所以位址不能永久標識主機身份

主要問題還是那個,ip位址混合了網路位址+主機標識,但主機移動之後ip會發生變化,但網路應用在連線過程中ip又不能變化

扁平化標識

rofl

設計目標:基於扁平化標識的可擴充套件路由

設計思路:基於dht/chord路由,維護到後繼節點、指取節點的源路由,使得不需要聚合就可以提供可擴充套件的網路路由

本質上是乙個全域性的扁平標識到節點的對映和查詢

使用的技術手段:

一致性hash

把一組檔案儲存到n個節點上,考慮節點的離開和新節點的加入

使用大型稀疏標識空間(比如128位),構成環形:

把檔案按名字均勻hash到標識空間,為object_id,把節點也均勻hash到標識空間,為node_id

對於object_id,順時針遍歷,遇到第乙個node_id,就把它存到這個節點裡

節點加入時後乙個節點的內容移到新結點中,節點離開時裡面存的東西往後移乙個節點

chord

只支援一種操作:給乙個名字,查詢獨贏的儲存節點

分布式、去中心化的名字到節點的查詢服務,考慮了節點的離開和加入,能夠快速對應名字和節點

可應用於扁平化路由、p2p檔案儲存定位

所有節點通過後繼結點指標形成環形單鏈表,給定key值,從任一節點開始依次遍歷查詢節點是否儲存key值,只能保證正確但不能保證效率,最壞情況下要找遍歷所有n個節點

加速查詢:所有節點維護乙個指取表,從任一節點開始遍歷,如果節點中儲存相應key值就結束查詢,否則在指取表中找包含對應object_id的區間,跳轉到相應的後繼節點查詢

特性:可證明的正確性和效能,每個節點只需要維護到少數幾個節點的路由資訊,通過向其他節點傳送訊息進行迭代/遞迴查詢,當節點加入或離開時更新路由資訊

總結基於扁平化標識而非層次化位址

利用chord技術實現可擴充套件性較好的路由機制

在新型網路傳輸正規化中有較大優勢

需要實現新的標識空間,難以直接替換現有ip架構

計算機網路04 網路層

路由器中的子網掩碼目的是告訴使用者網路是哪一部分。比如網路是10.0.0.0,其中子網掩碼是255.0.0.0,則子網掩碼中的255表示網路是10部分,同樣子網掩碼格式的網段必須相同。在客戶端和伺服器之間傳輸資料的模型 其中mac位址是決定方式 使用自己的子網掩碼,判斷自己在哪個網段,判斷目標位址在...

計算機網路 04 網路層

目錄資料鏈路層 網路層應用層 路由與 擁塞控制 擁塞控制 方法閉環控制 動態鏈路狀態演算法 首部長度 標誌第一位保留 未用 第二位為 不分片 do not fragment 第三位位 還有分片 more fragment 分片偏移 這個13位欄位表示的是分片在整個資料報中的相對位置。這是資料在原始資...

計算機網路 15 網路層之路由

e f是路由器 所以需要乙個好的演算法去解決這些事情 請看拓撲 一般轉化為圖 對網際網路進行劃分 回憶網路層次 主幹isp可以理解為主幹的as,地區的isp就可以理解為地區的as 路由器在收到乙個資料報之後用其目的位址查詢路由表 routing tables 得到下一跳,再把該資料報 給下一跳。路由...