通信网理论基础
通信網
文章目錄
- 通信網
- 1. 圖論
- 1.1 圖
- 1.2 樹
- 1.2.1 破圈法求生成樹
- 1.2.2 避圈法求生成樹
- 1.3 圖的割集
- 1.3.1 基本割集的求法
- 1.3.2 無向圖與有向圖矩陣表示
- 1.4 避圈法求最小生成樹
- 1.4.1 避圈法-K算法
- 1.4.2 避圈法-P算法
- 1.5 求最短路徑問題
- 1.5.1 最短路徑- Dijkstra算法
- 1.5.2 最短路徑-Floyd算法
- 2. 流量分配
- 2.1 流量優化的一般性問題
- 2.2 最大流問題
- 2.2.1 標志算法(M算法)
- 2.3 最佳流問題
- 2.3.1 負價環算法(N算法)
- 2.3.2 負價環算法的原理
- 2.3.3 例題
- 3. 路由技術
- 3.1 路由的概念和來源
- 3.2 路由協議
- 3.3 RIP路由協議
- 3.3.1 路由環路
- 3.3.2 解除路由環路的方法
- 3.4 OSPF路由協議
- 3.4.1 OSPF區域
- 3.5 IS-IS路由協議
- 3.6 OSPF與IS-IS的異同對比
- 3.7 關于RIP協議例題
- 4. 排隊論及其應用
1. 圖論
1.1 圖
-
圖的概念:由端點集V和邊集E組成的圖G,稱為圖,記為G={V,E}
-
端點集:圖中所有的節點組成的集合
-
邊集:圖中所有的端點之間的連接邊組成的集合
-
有向圖:表示端點與端點之間的傳遞是有方向的
-
有權圖:表示有向圖的方向上面有相應的權值
-
端的度數:與某一端點相關聯的邊數,記為d(vi)
-
端的出度:有向圖中,離開或者從端Vi射出的邊數
-
端的入度:有向圖中,進入或射入端Vi的邊數
有向圖中,端的度數=入度+出度
-
子圖的概念:跟子集概念一樣,例如G’邊集和端點集都屬于G,則G’是G的子圖
-
真子圖:G‘屬于G,但是邊集并不是一一對等的,簡單來說就是屬于但是不等于就是真子圖
-
生成子圖:包含原圖所有端點的子圖
最大連通子圖:若G’是圖G的一個連通子圖,若再加上屬于原圖G中的任何一個其他元素,圖G’就失去了連通性,成為非連通圖,則G’為圖G的最大連通子圖
1.2 樹
- 樹:任意兩端間有且只有一條徑的圖稱為數。
- 樹枝:樹中的邊。
- 樹干:樹枝的兩個端點都至少與兩條邊相關聯
- 樹尖:樹枝的一個端點,也就是樹葉
1.2.1 破圈法求生成樹
破圈法:見圈破圈,即看到圖中有圈,則選擇去掉一條邊,重復過程,直到圖中無圈為止。1.2.2 避圈法求生成樹
先把邊按照權值由小到大排列,依次挑選盡可能小的邊構造成樹,首先選擇權值最小的邊,再從其余剩余的邊中選擇出不能與此邊構成圈的權值最小的邊,添加邊,按照上述的步驟,直到不存在合適的邊停止,此時得到最小生成樹。1.3 圖的割集
圖的聯結度:最小割端集中的端數。
最小割端集:聯結圖去掉部分端之后,部分數增加,這些端的集合稱為割端集。
一般是去掉部分端以后圖變為非連通子圖。
圖的聯合度:最小割集的邊數。
割集:割邊集的真子集。
割邊集是去除部分邊之后圖變為非連通子圖。
1.3.1 基本割集的求法
1.利用破圈法求生成樹 2.求解連枝集,連枝集=G-T(除去破圈的邊之外的邊的集合,也稱為樹枝) 3.基本割集:生成樹中每條樹枝+某些連枝 4.判斷組合的去除之后,原來的圖是否是非連通子圖,如果是連通子圖,可以判定此組合為非割集如果是非連通組合,此時可以判定組合為割邊集。 5.對于割邊集,前面也說了,割集是割邊集的真子集,要判斷割集,則就要判斷此割邊集中真子集是否是割邊集。 6.如果判斷的割邊集中的真子集都不是割邊集,可以得到此組合為割集!上述的判斷是根據去掉這個邊,原圖能夠稱為--非連通子圖--的則為割邊集!1.3.2 無向圖與有向圖矩陣表示
無向圖只要此邊是屬于兩個端點之間的,則兩個端點都對其負責,矩陣中都為1
有向圖分為流入和流出,對于流入的為-1,不需要自己負責,流出的為1,需要自己負責
1.4 避圈法求最小生成樹
避圈法的主要思想是:首先選一條權最小的邊,以后每一步,在未選的邊中,選擇一條權最小且與已選的邊不構成圈的邊。每一步中,如果有兩條或兩條以上的邊都是權值最小的邊,則從中任選一條,此時最小生成樹不唯一。1.4.1 避圈法-K算法
步驟: 1. 首先將給定的賦權圖G中所有的邊按照權值大小排序,從小到大排序,記為e1,e2....em 2. 將e1納入規劃中,也就是將e1放入T(樹枝集) 3. 考慮e2,如果加入e2不會產生回路,則加入,如果產生回路則考慮e3,重復此選擇過程,直到無邊可選。此時得出的T 就是G的最小生成樹 4. 算法執行的次數:n端點數,n-1執行次數1.4.2 避圈法-P算法
步驟: G = {V,E}帶權無向連通圖 T = {Vt, Et}為G的最小生成樹 1. 初始化,任意選擇一個節點vi,將其加入到Vt中,判斷與其關聯的所有邊,選擇權值最小的那條邊,將這條邊連接的 另外一個節點加入到Vt中 2. 重復執行上述步驟n-1次,直到Vt=V截止上述步驟注意,一旦此結點進入到Vt中,不可二次加入!
P算法的每一步得到的都是一個圖,不用考慮回路問題。
1.5 求最短路徑問題
定義:在一個賦權圖G中,任給兩點u,v,從u到v可能有多條路,其中所帶的權和最小的那條路稱為圖G中從u到v的最短路徑。u到v的最短路徑上每條邊所帶的權和稱為u到v的距離。在賦權圖中求給定兩個頂點之間最短路徑的問題稱為最短路問題。
1.5.1 最短路徑- Dijkstra算法
算法思想: 1. 設置兩個頂點集合S,T。S存放已確定的最短路徑的頂點,集合T存放尚未確定為最短路徑的頂點,初始時,S中只有起 始起點v 2. 按照最短路徑遞增的順序逐個將集合T中的頂點加入到S中,直到從v出發可以到達所有的頂點都加入到S中結束,這一 過程稱為頂點迭代上述算法的主要思想是按照最短的路徑先來,此路徑的結點沒有接入的時候,與其相關的需要轉接的結點都處于不可達狀態,不可計算路徑,只有接入以后才可以計算,最先被定義的路徑長度,后續如果長度有變小的趨勢才可以更新路徑長度。
以上圖為例子,計算a到所有結點的最短路徑。
上述步驟描述:注意(*)表示該結點接入下一步迭代退出 1.初始化,a為0,其余距離都是無窮 2.a加入以后,b可達,c可達,標出路徑長度 3.此時b路徑較小,b接入,此時發現c的路徑經過b轉接路徑距離變小,更新c路徑長度,此時e可達,更新路徑 4.c距離較小,接入,此時其余路徑長度不能經過c變小,所有都不變,f在c的接入下,還是不可到達,所以不變 5.e距離較小接入,此時f可達,更新f的路徑長度。 6. ........最后可以得到a到每一個點的最短路徑1.5.2 最短路徑-Floyd算法
F算法與D算法原理相同,只是F算法使用矩陣來表示,并有一個系統化的運算。
主要的不同是因為F算法中有W徑長矩陣和R轉接路由矩陣
這個計算過程比較復雜,每次經過一個點轉接就需要計算一次的轉接路由矩陣,且每次計算的時候都要從第一個點判讀是否距離有減少,減少的才可以進行更新,同時路由矩陣也需要改變。
**需要注意:**R轉接路由矩陣中的值是根據轉接點的下標來定。
2. 流量分配
2.1 流量優化的一般性問題
G={V,E}表示一個通信網,V表示端集,E表示邊集
邊的容量:每條邊能通過的最大的流量被稱為容量。使用cij表示
? 每條邊的實際流量用fij表示
可行流:滿足非負性、有限性、連續性條件的流。不同的流量分配可以得到不同的可行流。
兩種可行流的優化問題:
- 最大流問題:變更可行流中fij值,使流量F最大
- 最佳流問題(最小費用流問題):在規定的費用aij下,對于給定的總流量F,合理分配fij使得總費用最少
2.2 最大流問題
概念:
前向邊:與割集方向一致的邊。
后向邊:與割集方向相反的邊。
割量:定義割集的前向邊容量之和為割量。
對于前向邊而言:
飽和邊:fij=cij 一個是邊的實際流量,一個是邊的最大流量
非飽和邊:fij<cij
可增流:表示前向邊都是非飽和的,后向邊都是非零流量的
性質:在可增流路上,所有正向邊上的流量可增加。
最大流量-最小割量定理: 當源宿端的流量達到最大的時候,每個割集(X,X_)中的前向流量f+(X,X_)都等最大流量Fmax 并且總存在這樣一個割集(X,X_),其每條正向邊都是飽和的,其割量在各個割集中達到最小值,且也等于Fmax 即:最大流量等于最小割量2.2.1 標志算法(M算法)
算法的目的:求解最大流量
算法思路:具體的思路我就不照搬照抄了。
核心的要點:M算法就是來求最大流量的,而且這個求出的最大流量還是一定正確的。下面舉個例子:
需要求解上述最大的流量:
求解步驟: 1. 首先看Vs-V1這條路,從V1-Vt傳輸的是8,而實際Vs-V1只有4的流量,即fs1=4此時可知道自己沒又達到標準8,需 要其他線路的支援,V1等待支援中....... 2. 然后看V2,V2直接是到不了Vt的,此時它需要尋求其他運輸線幫忙運輸自己的流量,此時看V2-V1,總流量為5,可是 Vs-V2只有3,即fs2=3,f21=3,此時3就被支援到了V1,此時f1t也就是V1-Vt實際流量f1t=4+3=7,還是沒有到8, 此時仍需要支援.... 3. 看Vs-V4,傳送的為9,但是運輸到Vt的軌道只能傳輸3的流量,此時V4到V1支援1,所以fs4=4,f4t=3,此時被支援f1t = 7+1=8,此時不需要支援了。 4. 看Vs-V3,V3-Vt最大能傳輸的是4,得到fs3=4,f3t=4綜上我們可以得到最大的的可行流為: fs1=4, fs2=3, fs3=4, fs4=4 f21=3, f41=1 f1t=8, f3t=4, f4t=3最大總流量為: Ftmax = f1t + f3t + f4t = fs1 + fs2 + fs3 + fs4 = 152.3 最佳流問題
問題:如果每條邊eij都有自己的費用函數aij,當總流量Fst相同時,如何找到滿足條件的,最小費用的可行流。
目的:達到流量的最佳分配
2.3.1 負價環算法(N算法)
先舉例子:圖中數字按照cij,aij(容量,費用)
1.尋找此圖的最佳流
圖a2.找到一組可行流
圖b此時的總流量為Fst=6
總費用為Cost=69
3.根據圖a做出圖b的補圖
圖c4.根據補圖尋找負價環
圖d5.根據負價環做相應的計算
此時的負價環為v1-v2-v3-v1, 負價環的單位流費用為:2+1-6=-3
表明每增加一個單位流費用減少3
取環中最小的流也就是2作為增流的量:此時節省的費用為:-3x2 = -6
此時總費用Cost=69-6=63
6.得出新的可行流
圖e2.3.2 負價環算法的原理
負價環算法的原理: 1、在圖中找到任一滿足總流量Fst的可行流 2、根據原圖和可行流的圖做出補圖 3、補圖的做法:Cij>Fij,表示未達到最大的容量,此時需要作出一條新的邊eij,容量為Cij-Fij,費用為aij若Fij>0,需要做邊eji,容量為fij, 費用為-aij 4、找負價環,然后計算負價環單位流量費用,根據環中流最小的那個來增流 5、修改原有的邊的流,得到新的可行流。如果沒有負價環的話,算法終止。2.3.3 例題
1.求解此圖需要的總流量為Fst=9,求最佳流
圖a2.在圖上找滿足9的可行流
此時的總費用為Cost = 102
圖b3.根據圖a做出圖b的補圖
圖c4.找負價環
圖c5.計算
此時得到負價環為v2-v3-v4-v2
負價環增流的單位費用:-6+1+3=2
最小的增流量為:min{3,4,3}= 3
此時的費用:Cost = 102 - 3x2 = 96
6.得出最佳的可行流
圖d7.根據圖a和圖d做補圖
圖e8.找負價環
已找不出負價環,此時算法結束。最佳流分配如圖d,費用為96
3. 路由技術
3.1 路由的概念和來源
路由:指導IP報文發送的路徑信息
路由來源分類:
- 鏈路層協議發現路由
- 由網絡管理員手工配置的靜態路由
- 動態路由協議發現的路由
| 由網絡管理員手工指定的路由 | 路由器使用路由協議從其他路由器那獲取的路由 |
| 當網絡拓撲發生變化時,管理員需要手動更新靜態路由 | 當網絡拓撲結構發生變化時,路由器自動更新信息 |
3.2 路由協議
路由協議是路由器之間交互信息的一種語言。路由協議定義了一套路由器之間通信時使用的規則,路由協議維護路由表、提供最佳轉發路徑。
常見的動態路由協議
- 路由信息協議:RIP(Routing Information Protocol)
- 開放式最短路徑優先協議:OSPF(Open Shortest Path First)
- 中間系統到中間系統協議:IS-IS(Intermediate System-to-Intermediate System)
- 邊界網關協議:BGP(Border Gateway Protocol)
路由協議算法:
- 距離矢量路由選擇協議(RIP/BGP)
- 含義:采用距離向量算法來決定報文交換的路勁。
- 鏈路狀態路由選擇協議(OSPF/IS-IS)
- 含義:基于Dijkstra算法,使用洪泛法更新路由信息。
3.3 RIP路由協議
1.RIP協議是一種分布式的基于距離向量的內部路由選擇協議。
2.RIP協議是通過“距離”的定義,來實現對最短路徑的尋找。它認為一個好的路由就是它通過的路由器的數目少, 即“距離短”。
3.使用無連接的UDP進行路由信息的交互
4.RIP支持:水平分割、毒性逆轉、觸發更新(都是用來解除RIP環路的機制)
RIP協議的工作流程: 1.向周圍路由發送請求報文 2.等待周圍路由器的響應 3.路由器收到響應后,修改本地路由 4.向周圍路由廣播路由修改信息 5.一連串的廣播后,所有連著的路由信息都被更改 6.老化機制對超時的路由進行老化處理,實時更新注意:
- RIP 協議要求網絡中的每一個路由器都要維護從它自己到其他每一個目的網絡的距離記錄。
- 把從一路由器到直接連接的網絡的距離定義為 1。規定“距離”最大值為16,相當于不可達。
3.3.1 路由環路
首先需要知道什么是路由環路
路由環路:數據包不斷的在網絡中傳輸,卻始終到達不了目的地,導致掉線或者網絡癱瘓。
流程:
路由環路就是路由器C將11.4.0.0設置為不可達,準備在自己更新周期來的時候通知B,但是B的更新周期提前到來,B更新的時候導致C從B處知道了從B可以到11.4.0.0,于是C-B-C就跳數為2,后面真的到了C的更新周期,由于此時在這里的信息是路由器C知道自己不能到達11.4.0.0,但是可以從B處到達11.4.0.0,于是B認為可以通過C到達此IP地址,于是更新跳數為3,于是就不斷循環C認為B可以,B認為C可以,其實從第一次開始的時候就錯了!這就形成了一個環路!
3.3.2 解除路由環路的方法
1.水平分割
實現:水平分割技術不反向通告任何從終端收到的路由更新信息,而只通告那些不會由于計數到無窮而清除的路由。原理就是路由器從某個接口接收到的更新信息不允許再從這個接口發回去。
2.觸發更新
實現:一般的更新都是需要等待一個周期時間的,但是觸發更新不用,當11.4.0.0不可達的時候,C立即向B報告并將其到達11.4.0.0的metric標為16,此時B收到消息之后將到達11.4.0.0的路徑表metric標為16,表示路徑失效不可達,然后通知A,做同樣的事情,依次毒化各個路由器。環路解除。
3.抑制時間
實現:路由環路的生成是因為B更新周期先來,現在抑制一個時間片之后讓B更新,可以避免環路的產生,原理:當路由器從鄰居接收到以前能夠訪問的網絡現在不能訪問的更新后,就將該路由標記為不可訪問,并啟動一個抑制計時器,如果再次收到從鄰居發送來的更新信息,包含一個比原來路徑具有更好度量值的路由,就標記為可以訪問,并取消抑制計時器。
4.抑制時間結合觸發更新
實現:這個對于避免環路產生的準確率更高。
5.路由抑制(路由毒化)
實現:當網絡11.4.0.0出現故障無法訪問的時候,路由器C便向鄰居路由發送相關的更新信息,并將到達該網絡的度量值標為無窮大,告訴他們11.4.0.0不可達,路由器B接收到這個消息以后將該鏈路路由表標記為無窮大,表示此路徑已經失效,并向A通告更新消息,依次毒化各個路由器,通知11.4.0.0已經失效,從而避免環路的產生。上圖中的B通告C這是毒性反轉的一個例子,即B知道11.4.0.0的度量值為無窮大的時候,就發送一個毒性反轉的消息給C,表明11.4.0.0不可達,這樣保證了所有的路由器都被毒化。
3.4 OSPF路由協議
OSPF屬于IGP內部網關路由協議,運行于IP協議之上,基于鏈路狀態算法
開放式最短路徑優先;“開放”表明它是公開發表的;
“最短路徑優先”是因為使用了 Dijkstra 提出的最短路徑算法SPF。
是一種分布式的鏈路狀態協議,基于鏈路狀態來選擇最佳路線,使用洪泛法向本自治系統中所有路由器發送信息。
**鏈路狀態算法的路由計算過程,圖中顯示的是獲取拓撲信息的方式,還需要生成最短路徑樹,再計算路由,具體: **發送一個hello報文,周圍節點接收到hello報文之后給出自己的地址返回給發送方表示我是你周圍的臨界點。發送方再發送echo報文,接收方收到echo立刻返回,根據時間戳就可以測出鏈路成本了。然后這個路由器就可以用相鄰鏈路成本用LS算法計算自己的路由表信息。
路由器之間通過交換鏈路狀態來生成網絡拓撲信息
3.4.1 OSPF區域
區域是一組路由器與網絡的集合
單區域:是指所有運行OSPF協議的路由器被劃分到同一區域
多區域:是指所有運行OSPF協議的路由器被劃分到不同的區域
自治系統:是指同一個技術管理機構使用統一選路策略的一些路由器的集合
為什么需要劃分多區域?
單區域LSDB龐大,SPF計算復雜;拓撲結構變化的概率增大,造成網絡中大量的OSPF協議報文在傳遞,降低了網絡的帶寬利用率
3.5 IS-IS路由協議
IS-IS直接運行于鏈路層之上,在鏈路層的幀頭之后直接封裝IS-IS數據
集成IS-IS協議是中基于鏈路狀態算法的IGP協議,可以在CLNP和IP環境中運行,采用TLV設計,擴展性好,目前在大型ISP的網絡中被廣泛部署。
3.6 OSPF與IS-IS的異同對比
參考博客----https://blog.csdn.net/achejq/article/details/19400885
共同之處:
1 都是鏈路狀態路由協議,都要求區域內的路由器交換鏈路狀態信息,鏈路狀態信息被收集到鏈路狀態數據庫中
2 都是用了一種實現路由選擇信息交換相似機制
3 都在廣播網絡中選擇指定路由器來控制擴散并降低這類介質中多對多鄰接的系統資源需求
4 都是基于鏈路狀態庫中的信息,采用幾乎相同的算法-SPF算法來計算最佳路由
5 都支持兩個分層路由選擇
6 都支持IP前綴的無類路由選擇(支持VSLM)
不同之處:
| 1 | ISIS支持ISOCLNP和IP兩種網絡 | 僅支持IP網絡 |
| 2 | ISIS報文封裝在數據鏈路層幀中 | 封裝在IP包中 |
| 3 | SIS路由器通告包含直連鄰居及路由信息的TLV的LSP,使用LSP承載所有的路由選擇信息 | OSPF使用不同類型的LSA承載不同的路由信息,LSA被封裝進LSU通告給鄰居 |
| 4 | ISIS數據包利用TLV字段承載所有易于擴散的信息 | OSPF只有LSA可擴展,而LSA擴展性太差 |
| 5 | ISIS路由器只屬于一個特定區域。 | OSPF基于接口劃分區域,路由器可屬于不同的區域。 |
| 6 | 對于所有實際應用,ISIS僅支持廣播和點對點鏈路。不支持NBMA鏈路。在NBMA環境下,可配置為p2p子接口或者廣播鏈路(如果是全互聯的連接方式)。 | OSPF支持如下網絡類型:p2p、廣播、NMBA、點到多點和按需鏈路。 |
| 7 | 區域的邊界在鏈路 | 區域的邊界在路由器上。 |
| 8 | 僅僅在廣播鏈路實現3步鄰接關系,IETF正在努力指定點到點鏈路的3步進程。 | OSPF鄰接關系的建立涉及到一個更加復雜的過程。 |
| 9 | 由于ISIS區域中IP前綴是SPF數的葉子,故部分路由計算(PRC)較多,通常這就意味著在一個大的區域中路由處理器的負載較低。 | 部分SPF被限制用于域間和外部路由,任何要求較小的區域和分層拓撲擴展引起的域間鏈路動蕩導致完全的SPF計算。 |
| 10 | 最初數據庫同步在鄰接關系建立后進行。 | 最初數據庫同步在鄰接關系形成前進行。 |
3.7 關于RIP協議例題
題目:R3是R1鄰居路由,按照下列信息更新路由表
上面的例子是要更新到所有目標網絡的跳數,也就是更新R1的路由表: 1.N2,R1到N2下一跳是R2,由于R3中沒有更少的跳數,所以不更新 2.N5,R1到N5下一跳是R3,由于RIP協議中的規定,下一跳是鄰居路由無論跳數增大還是減少都必須跳,所以R3到N5的跳 數為4,R1經過R3,跳數變為5.更新 3.N6,R1到N6經過R2跳數為5,但是R3到N6跳數只有3,即使R1先到R3再到N6,也只要跳數4,所以更新N6,4,下一跳 R3 4.N8,R1到N8經過R4跳數為2,R3到不了,所以不更新 5.N9,R1到N9直接到是到不了,只有根據R3轉,所以跳數為3,下一跳為R3,更新4. 排隊論及其應用
排隊系統:
- 拒絕系統
- 非拒絕系統
排隊系統的組成:
- 輸入過程
- 排隊規則
- 服務機構
排隊系統的三個基本參數:
- m參數:稱為窗口數或服務員數目,表征系統的資源量。它表示系統中有多少服務設施可同時向顧客提供服務。
- λ\lambdaλ參數:顧客到達率或系統到達率,即單位時間內到達系統的平均顧客數。其單位為個/ 時間或份 / 時間。
- μ\muμ參數:是一個服務員(或窗口)的服務速率,即單位時間內由一個服務員(或窗口)進行服務所離開系統的平均顧客數。
ρ\rhoρ=λ/m\lambda/mλ/m\mu :排隊強度,也叫作穩定性參數。
排隊論中常用的兩個分布:
具體參照:
排隊論文檔
總結
- 上一篇: 《快学Scala》第6章 对象 练习
- 下一篇: leetcode13