1、路由控制的定義
<br>1.1.IP地址與路由控制 file:///var/folders/pz/cy11_lpd5rqfs66s778032580000gn/T/51.html
互聯網是由路由器連接的網絡組合而成的。為了能讓數據包正確地到達目標主機,路由器必須在途中進行正確地轉發。這種向“正確的方法”轉發數據所進行的處理就叫做路由控制或路由
路由器根據路由控制表(Routing Table)轉發數據包。它根據所收到的數據包中目標主機的IP地址與路由控制表的比較得出下一個應該接收的路由器。因此,這個過程中路由控制表的記錄一定要正確無誤。但凡出現錯誤,數據包就有可能無法到達目標。
1.2.靜態路由與動態路由
是誰又是怎樣制作和管理路由控制表的呢?路由控制分靜態(Static Routing)和動態(Dynamic Routing)兩種類型。
| 靜態路由:事先設置好路由器和主機中並將路由信息固定的一種方法 動態路由:讓路由協議在運行過程中自動地設置路由控制信息的一種方法。 |
靜態路由的設置通常是由使用者手工操作完成的。缺點:1).每增加一個新網絡,就需要將這個被追加的網絡信息設置在之前所有的路由器上。2).一旦某個路由器發生故障,基本只能由管理員手工設置以后才能恢復正常。
使用動態路由,管理員必須設置好路由協議,其設定過程的復雜程度與具體要設置路由協議的類型有直接關系。如RIP就簡單,而OSPF就復雜。動態路由能避免靜態的1,2點問題,缺點:1).路由器為能夠定期相互交換必要的路由控制信息,會與相鄰的路由器之間互發消息,這些互換的消息會給網絡帶來一定程序的負荷,特別是環路情況下,需要特別注意。
不管是靜態路由還是動態路由,不要只使用其中一種,可以將它們組合起來使用。
2.路由控制范圍
隨着IP網絡的發展,想要對所有網絡統一管理是不可能的事。因此,人們根據路由控制的范圍使用IGP(Interior Gatewary Protocol:外部網關協議)和EGP(Exterior Gateway Protocol:內部網關協議)兩種類型的路由協議。
互聯網中各種組織機構沒有管理者,也沒有被管理者,每個組織之間保持平等的關系。
2.1.IGP與EGP
路由協議大致分為兩大類,一類是外部網關協議EGP,另一類是內部網關協議IGP.
IP地址分為網絡部分和主機部分,EGP和IGP的關系與IP地址類似,EGP類似IP的網絡部分,可以根據EGP在區域網絡之間(或ISP之間)進行路由選擇;IGP類似Ip的主機部分,根據IGP在區域網絡內部(或ISP內部)進行主機識別。
由此,路由協議被分為EGP和IGP兩個層次,沒有EGP就不可能有世界上各個不同組織機構之間的通信,沒有IGP機構內部也就不可能進行通信。
IGP中還可能使用RIP,RIP2,OSPF等眾多協議 ,EGP使用的是BGP協議。
2.2.自治系統與路由協議
制定自己的路由策略,並以此為准在一個或多個網絡群體中采用的小型單位叫做自治系統(AS: Autonomous System)或路由選擇域(Routing Domain)
3.路由算法
路由控制有各種各樣的算法,其中最具代表性的有兩種,是距離向量算法和鏈路狀態算法
3.1.距離向量算法
距離向量算法(Distance-Vector)是指根據距離(代價:相當於所要經過的路由器的個數)和方向決定目標網絡或目標主機位置的一種方法。
路由器之間可以互換目標網絡的方向及其距離的相關信息,並以這些信息為基礎制作路由器由控制表。這種方法在處理上比較簡單,不過由於只有距離和方向的信息,所以當網絡變得分外復雜時,在獲得穩定的路由信息之前需要消耗一定時間(也叫路由收斂),也極易發生路由循環等問題。
3.2.鏈路狀態算法
鏈路狀態算法(Link-State)是路由器在了解網絡整體連接狀態的基礎上生成路由控制表的一種方法。該方法中,每個路由器必須保持同樣的信息才能進行正確的路由選擇。
距離向量算法中每個路由器掌握的信息都不相同,通往每個網絡所耗的距離(代價)也根據路由器的不同而不同,因此,該算法的一個缺點就是不太容易判斷每個路由器的信息是否正確。
而鏈路狀態算法中所有路由器持有相同的信息,對於任何一台路由器,網絡拓撲都完全一樣。因此,只要某一台路由器與其他路由器保持同樣的路由控制信息,就意味着該路由器上的路由信息是正確的,只要每個路由器盡快地與其他路由器同步路由信息,就可以使路由信息達到一個穩定的狀態。因此,即使網絡結構變得復雜,每個路由器也能夠保持正確的路由信息、進行穩定的路由選擇,這也是該算法的一個優點。
為了實現上述機制,鏈路狀態算法付出的代價就是如何從網絡代理獲取路由信息表,這一過程相當復雜。
4.RIP
RIP(Routing Information Protocol)是距離向量型的一種路由協議,廣泛用於LAN。
4.1.廣播路由控制信息
RIP將路由控制信息定期(30s一次)向全網廣播,由於可能丟包,因此RIP規定等待5次,如果等了6次(180S)仍未收到路由信息,才會真正關閉連接。
過程:
1).30S一次,將自己所知道的路由信息廣播出去。
2).將已知的路由信息經過一跳之后繼續廣播。
3).以此類推,逐步傳播路由信息。
4.2.根據距離向量確定路由
RIP基於距離向量算法決定路徑,距離的單位為“跳數”,跳數是指所經過的路由器的個數。RIP希望盡可能少通過路由器將數據包轉了到目標IP地址。根據距離向量生成距離向量表,再抽出較小的路由生成最終的路由控制表。
4.3.使用子網掩碼時的RIP處理
RIP雖然不交換子網掩碼信息,但可以用於使用子網掩碼的網絡環境。采用RIP進行路由控制的范圍內必須注意兩點:
1).因IP地址的分類而產生不同的網絡地址時
2).構造網絡地址長度不同的網絡環境時
4.4.RIP中路由變更時的處理
RIP的基本行為可歸納為如下兩點:
1).將自己所知道的路由信息定期進行廣播
2).一旦認為網絡被斷開,數據將無法流過此路由器,其他路由器也就可以得知網絡已經斷開。
不過,這兩點不論哪種方式都存在一些問題。
如:在非環路的情況下,路由器A將網絡A的連接信息發送給路由器B,路由器B又將自己掌握的路由信息在原來的基礎上加1跳后發送給路由器A和路由器C,假定這時路由器A與網絡A的連接發生了故障。路由器A雖然覺察到自己與網絡A的連接已經斷開,無法將網絡A的信息發送給路由器,但它會收到路由器B曾經獲知的信息,這就使得路由器A誤認為自己的信息還可以通過路由器B到達網絡A。
像這樣收到自己發出去的消息,這個問題被稱為無限計數。為了解決這個問題可以采取以下兩種方法:
1).最長距離不超過16.由此即使發生無限計數的問題,也可以從時間上進行控制
"距離為16"這個信息只會被保留120秒,一旦超過這個時間,信息將會被刪除,無法發送,這個時間由一個叫垃圾收集計時器的工具進行管理。
2).規定路由器不再把所收到的路由器由消息原路返還給發送端,這也被稱作水平分割(Split Horizon)
然而這咱方法對有些網絡來說是無法解決問題的,在網絡本身就有環路的情況下。為了解決這個問題,人們提出了”毒性逆轉“和”轉發更新“
毒性逆轉:指當網絡中發生鏈路被斷開的時候,不是不再發送這個消息,而是將這個無法通信的消息轉播出去,即發一個距離為16的消息。
觸發更新:指當路由信息發生變化時,不等待30S而是立刻發送出去的一種方法。
有了這兩種方法,在鏈路不通時,可以迅速傳送消息以使路由信息盡快收斂。
在一個具有眾多環路的復雜的網絡環境中,路由信息想要達到一個穩定的狀態是需要花一段時間,為了解決這個問題,必須明確地掌握網絡結構,在了解究竟哪個鏈路斷開后再進行路由控制非常重要。為此,可以采用OSPF.
4.5.RIP2
新的特點:
1).作用多播
2).支持子網掩碼
3).路由選擇域
4).外部路由標志
5).身份驗證密鑰
5.OSPF
OSPF(Open Shortest Path First)是根據OSI的IS-IS協議而提出的一種鏈路狀態型路由協議。由於采用鏈路狀態類型,所以即使網絡中有環路,也能夠進行穩定的路由控制。
另外,OSPF支持子網掩碼,曾經在RIP中無法實現的可變長度子網構造的網絡路由控制成為現實。
為了減少網絡流量,OSPF還引入了“區域”這一概念。區域是將一個自治網絡划分為若干個更小的范圍,由此,可以減少路由協議之間不必要的交換。
OSPF可以針對IP首部中的區分服務(TOS)字段,生成多個路由控制表。不過也會出現已經實現了OSPF功能的路由器無法支持這個TOS的情況。
5.1.OSPF是鏈路狀態型路由協議
OSPF為鏈路狀態型路由協議。路由器之間交換鏈路狀態生成網絡拓撲信息,然后再根據這個拓撲信息生成路由控制表。
RIP的路由選擇,要求途中所經過的路由器個數越少越好。與之相比,OSPF可以給每條鏈路賦予一個權重(也可以叫做代價, 這個代價只用於發送端,接收凋不需要考慮),並始終選擇一個權重最小的路徑作為最終路由。也就是說OSPF以每個鏈路上的代價為度量標准,始終選擇一個總的代價最小的一條路徑。
5.2.OSPF基礎知識
在OSPF中,把連接到同一個鏈路的路由器稱相鄰路由器(Neighboring Router)。在一個相對簡單的網絡結構中,例如每個路由器僅跟一個路由器相互連接時(在專線網絡中,路由器之間采用PPP相連),相鄰路由器之間可以交換路由信息。但是在一個比較復雜的網絡中,例如在同一個鏈路中加入以太網或FDDI等路由器時,就不需要在所有相鄰的路由器之間都進行控制信息的交換,而是確定一個指定路由器(Designated Router),並以它為中心交換路由信息即可。
RIP中包的類型只有一種,它利用路由控制信息,一邊確認是否連接了網絡,一邊傳送網絡信息。但是這種方式,有一個嚴重的缺點,那就是,網絡個數越多,每次所要交換的路由控制信息就越大,而且當網絡已經處於比較穩定的、沒有什么變化的狀態時,還是要定期交換相同的路由控制信息,這在一定程序浪費了網絡帶寬。
而在OSPF中,根據作用不同可以分為5種類型的包:
通過發送問候(HELLO)包確認是否連接,每個路由器為了同步路由控制信息,利用數據庫描述包相互發送路由摘要信息和版本信息
如果版本較老,則首先發出一個鏈路狀態請求包(Link State Request)請求路由控制信息,然后由鏈路狀態更新包接收路由狀態信息
然后由鏈路狀態更新包(Link State Update)接收路由狀態信息,
最后再通過鏈路狀態確認包(Link State ACK Packet)通知大家本地已經接收到路由控制信息。
有了這樣的機制后,OSPF不僅可以大大減少網絡流量,還可以達到迅速更新路由信息的目的。
5.3.OSPF工作原理
OSPF中進行連接確認的協議叫做HELLO協議
LAN中每10S發送一個HELLO包,沒有HELLO包沒有到達,則進行連接是否斷開的判斷,具體為:允許空等3次,直到第4次(40S后)仍無任何反饋就認為連接已經斷開。之后在進行連接斷開或恢復連接操作時,由於鏈路狀態發生了變化,路由器會發送一個鏈路狀態更新包(Link State Update)通知其他路由器網絡狀態的變化。
鏈路狀態更新包所要傳送的消息大致分為兩類:一是網絡LSA(Network Link State Advertisement), 另一個是路由器LSA(Router Link State Advertisement).
網絡LSA是以網絡為中心生成的信息,表示這個網絡都與哪些路由器相連接;而路由器LSA是以路由器為中心生成的信息,表示這個路由器與哪些網絡相連接。
如果這兩種信息(除這兩種信息外還有網絡匯總LSA和自治系統外部信息)主要采用OSPF發送,每個路由器就都可以生成一個可以表示網絡結構的鏈路狀態數據庫。可以根據這個數據庫,采用Dijkstra算法(最短路徑優先算法)生成相應的路由控制表。
相比距離向量,由上述過程生成的路由控制表更加清晰不容易混淆,還可以有效地降低無線循環問題的發生。不過,當網絡規模逐漸變大時,最短路徑優先算法的處理時間就會變得越長,對CPU和內存的消耗也就越大。
5.4.將區域分層化進行細分管理
鏈路狀態型路由的問題在於:當網絡規模越來越大時,表示鏈路狀態的拓撲數據庫就變得越來越大,路由控制信息的計算也就越困難。OSPF為減少計算負荷,引入了區域的概念。
區域:指將連接在一起的網絡和主機划分成小組,使一個自治系統(AS)內可以擁有多個區域。不過具有多個區域的自治系統必須要有一個主干區域(Backbone Area),並且所有其他區域必須都與這個主干區域相連接。
區域邊界路由器:連接區域與主干區域的路由器,
內部路由器:區域內部的路由器
主干路由器:只與主干區域內連接的路由器
AS邊界路由器:與外部相連接的路由器。
每個區域內的路由器都持有本區域網絡拓撲的數據庫,然而,關於區域之外的路徑信息,只能從區域邊界路由器那里獲知它們的距離。區域邊界路由器也不會將區域內的鏈路狀態信息全部原樣發送給其他區域,只會發送自己到達這些路由器的距離信息,內部路由器所持有的網絡拓撲數據庫就會明顯變小。
換句話,就是指內部路由器只了解區域內部的鏈路狀態信息,並在該信息的基礎上計算出路由控制表。這種機制不僅可以有效地減少路由控制信息,還能減輕處理的負擔。
此外,作為區域出口的區域邊界路由器若只有一個的話叫做末端區域,末端區域內不需要發送區域外的路由信息。它的區域邊界路由器將成為默認路徑傳送路由信息即可。因此,由於不需要了解到達其他各個網絡的距離,所以它可以減少一定地路由信息。
要想在OSPF中構造一個穩定的網絡,物理設計和區域設計同樣重要,如果區域設計不合理,就有可能無法充分發揮OSPF的優勢。
6、BGP
BGP(Border Gateway Protocol),邊界網關協議是連接不同組織機構(或者說連接不同自治系統)的一種協議。因此,它屬於外部網關協議(EGP),具體划分,它主要用於ISP之間相連接的部分。只有BGP、RIP和OSPF共同進行路由控制,才能夠進行整個互聯網的路由控制。
6.1.BGP和AS號
在RIP和OSPF中利用IP的網絡地址部分進行着路由控制,然而BGP則需要放眼整個互聯網進行路由控制。BGP的最終路由控制表由網絡地址和下一站的路由器組來表示,不過它會根據所要經過的AS個數進行路由控制。
ISP、區域網絡等會將每個網絡域編配成一個個自治系統(AS: Autonomous System)進行管理。它們為每個自治系統分配一個16比特的AS編號。BGP就是根據這個編號進行相應的路由控制。
AS之間是否要進行數據中轉由它們自己決定。如果進行中轉,就意味着網絡負荷的加重以及成本的提升,因此,這種中轉合約通常都會涉及中轉費用。
以下我們將假定這兩者都允許中轉來介紹BGP
6.2.BGP是路徑向量協議
BGP揚聲器:根據BGP交換路由控制信息的路由器。BGP揚聲器為了在AS之間交換BGP信息,必須與所有AS建立對等的BGP連接。而如果AS內部有多個BGP揚聲器,為了使AS內部也可以交換BGP信息,就需要建立BGP連接。
AS路徑信息訪問列表(AS Path List):BGP中數據包送達目標網絡時,會生成一個中途經過所有AS的編號列表。如果針對同一個目標地址出現多條路徑時,BGP會從AS路徑信息訪問列表中選擇一個較短的路由。
在做路由選擇時使用的度量,RIP中表示為路由器個數,OSPF表示為每個子網的成本,而BGP則用AS進行度量標准。RIP和OSPF本着提高轉發效率為目的,考慮到了網絡的跳數和網絡的帶寬。BGP則基於AS之間的合約進行數據包的轉發。BGP一般選擇AS數量少的路徑,不過仍然要遵循各個AS之間簽約的細節進行更細粒度的路由選擇。
在AS路徑信息訪問列表中不僅包含轉發方向和距離,還涵蓋了途徑所有AS的編號,因此它不是一個距離向量型協議。此處對網絡構造僅用一元化表示,因此也不屬於鏈路狀態型協議。像BGP這種根據所要經過的路徑信息訪問列表進行路由控制的協議屬於路徑向量型協議。作為距離向量型的RIP協議,因為無法檢測出環路,所以可能發生無限計數的問題。而路徑向量型由於能夠檢測出環路,避免了無線計數的問題,所以令網絡更容易進入一個穩定的狀態。同時,它還支持策略路由(指在發送數據包時,可以選擇或指定所要通過的AS的意思)的優勢。
7.MPLS
現如今,在轉發IP數據包的過程中除了使用路由技術時,還在使用標記交換技術。路由技術基於IP地址中最長匹配原則進行轉發,而標記交換則對每個IP包都設定一個叫做“標記”的值,然后根據這個“標記”再進行轉發。標記交換技術中最具代表性的當屬多協議標記交換技術,即MPIS(Multi Protocol Label Switching)。
MPLS的標記不像MAC地址直接對應到硬件設備,因此,MPLS不需要具備以太網或ATM等數據鏈路層協議的作用,而只需要關注它與下面一層IP層之間的功能和協議即可。
由於基於標記的轉發通常無法在路由器上進行,所以MPLS也就無法被整個互聯網采用。它的轉發處理方式甚至與IP網也有所不同。
7.1.MPLS的網絡基本動作
標記交換路由器(LSR: Label Switching Router):MPLS網絡中實現MPLS功能的路由器。特別是與外部網絡連接的那部分LSR叫做標記邊緣路由器(LER: Label Edge Router)。MPLS正是在LER上對數據包進行追加標記和刪除標記的操作。
在一個數據包上附加標記是一個及其簡單的動作。如果數據鏈路本來就有一個相當於標記的信息,那么可以直接進行映射。如果數據鏈路中沒有攜帶任何相當於標記的信息(最典型的就是以太網),那么就需要追加一個全新的墊片頭(Shim Header)。這個墊片頭中就包含標記信息(介於IP首部與數據鏈路首部之間)。
如圖展示了數據從以太網的Ip網開始經過MPLS網再發給其他Ip網的整個轉發過程。數據包在進入MPLS時,在其IP首部的前面被追加了32比特的墊片頭(其中包含20比特的標記值)。MPLS網絡內,根據墊片頭中的標記進一步進行轉發。當數據離開MPLS時,墊片頭就被去除。在此我們稱附加標記轉發的動作為Push,替換標記轉發的動作為Swap,去掉標記轉發的動作為Pop
MPLS中目標地址和數據包都要通過由標記決定的同一個路徑,這個路徑叫標記交換路徑(LSP, Label Switch Path)。LSP又可以划分為:
1)一對一連接的點對點LSP,
2)一對多綁定的合並LSP兩類。
擴展LSP有兩種方式。可以通過各個LSP向自己鄰接的LSR分配MPLS標記,也可以由路由協議載着標記信息進行交互。LSP屬於單方向的通路,如果需要雙向的通信則需要兩個LSP。
7.2.MPLS的優點
MPLS的優勢可歸納為兩點:
1).轉發速度快。
路由器轉發IP數據包時,先對目標地址和路由控制表中可變長的網絡地址進行比較,然后從中選出最長匹配的路徑才能進行轉發。
MPLS則不然,它使用固定長度的標記信息,使得處理更加簡單,可以通過高速的硬件實現轉發。
此外,相比互聯網中的主干路由器需要保存大量路由表才能進行處理的現狀,MPLS只需要設置必要的幾處信息即可,所要處理的數據量也大幅度減少。
而且,除了IPv4, IPv6之外,針對其他協議,MPLS仍然可以實現高速轉發。
2).利用標記生成虛擬的路徑,並在它的上面實現IP等數據包的通信。
基於這些特點,“盡力而為”的IP網也可以提供基於MPLS的通信質量控制、帶寬保證和VPN等功能。
