計算機網絡:路由器和路由選擇協議

一、路由器和路由類型

1.什麼是路由器

路由器用於連接多個邏輯上分開的網絡,所謂邏輯網絡是代表一個單獨的網絡或者一個子網。當數據從一個子網傳輸到另一個子網時,可以通過路由器的路由功能來完成。

因此,路由器具有判斷網絡地址和選擇IP路徑的功能,它能在多網絡互聯環境中,建立靈活的連接,並可用完全不同的數據分組和介質訪問方法連接各種子網。

路由器只接受源站或其他路由器的信息,屬於網絡層的一種互聯設備,它雖與各個子網使用的硬件設備無關,但要求其運行與網絡層協議相一致的軟件。

如圖3-14所示。路由器一般由硬件和軟件組成,其功能類似一臺計算機。路由器硬件主要由中央處理器CPU、內存、接口、控制端口等物理硬件和電路組成;軟件主要由路由器的IOS操作系統組成。路由器的CPU負責路由器的配置管理和數據包的轉發工作,如維護路由器所需的各種表格以及路由運算等,路由器對數據包的處理速度在很大程度上取決於CPU的類型和性能。

圖3-14路由器

所有路由器都有接口,每個接口都有自己的名字和編號。一個接口的全名稱由它的類型標誌與數字編號構成,編號從0開始。對於如Cisco 2500系列接口固定的路由器或如Cisco 4700系列採用模塊化接口的路由器,在接口的全名稱中,只採用一個數字,並根據它們在路由器的物理順序進行編號,例如Ethernet0表示第1個以太網接口,Serial1表示第2個串口。

2.路由選擇

路由器是互聯網的主要節點設備,通過路由決定數據的轉發。轉發策略稱爲路由選擇,這也是路由器名稱的由來。

路由器執行兩個基本功能:路徑選擇和數據轉發。

無論使用何種協議,包括IP、IPX和Appletalk等,路由器的目標就是將信息從一個地方轉發到另一個地方。當接收到一個數據報時,路由器先查詢它的路由表,以找到下一跳地址,之後通過相應接口向外進行轉發。

路由選擇協議運行在路由器上,提供將數據報從源地址轉發到目的地址的路徑選擇策略。爲了完成路由轉發功能,路由器需要檢查數據報的目的地址,確定目的網絡號,查看路由表,並將分組轉發到對應的出口。路由選擇表即路由表,包含目的網絡號、網絡狀態、下一跳地址等信息。

3.路由表的建立

路由表的建立有靜態手動配置和動態自動學習兩種方式。

1)靜態路由

路由器建立靜態路由有以下兩種方式:

查看其活動接口和檢查接口的配置地址,確定相應的網絡號,根據該信息生成路由器的路由表,這種路由叫直連路由。

手動配置一個特殊的靜態路由,也稱爲默認路由。如果在路由表中沒有找到指定接收站的路徑,則分組通過默認路由轉發。默認路由的IP地址和子網掩碼均爲0.0.0.0,通常表示爲0.0.0.0/0。默認路由常用於出口路由器,指向ISP。

2)動態路由

動態路由協議包括RIP(Router Information Protocol)、OSPF(Open Shortest Path First)和BGP(Border Gateway Protocol)等,路由器可以從運行在相同路由選擇協議的其他路由器中學習並建立路由。動態路由協議共享路由器已知的網絡號和相關的可達性信息,通過這一過程,最終路由器將學習到網絡中所有可到達的網絡和子網號,並建立自己的路由表。

二、RIP路由協議

1.RIP的概念

RIP(Router Information Protocol)屬於距離向量路由協議,採用跳數衡量路由距離以決定最優路徑,跳數指數據報從源地址到目的地址所經過的路由器數目。

RIP路由表中的每一項均包含目的地址、下一跳IP地址和距離。如果數據報目的地址與當前路由器端口的地址在同一網段內,則直接交付;否則,根據路由表所示的下一跳地址,把數據報轉發給下一個路由器,由下一個路由器再進行數據報的轉發。

RIP把跳數作爲其度量值,若從源地址到目的地址之間存在兩條鏈路,且鏈路上經過的路由器的數目相同,而帶寬和速率不同,則RIP認爲這兩條鏈路具有同等優先級。RIP支持的最大跳數爲15條,即從源地址到達目的地址所經過的路由器數目最多爲15個,若超過15個則丟棄數據報,所以RIP協議只能應用於小型網絡中。

如圖3-15所示,數據報由路由器R1發送到路由器R5,其中路由器R1到達路由器R5有兩條路徑,一條經過路由器R2到達路由器R5,鏈路帶寬爲10Mbps;另一條經過路由器R3和路由器R4到達路由器R5,鏈路帶寬均爲100Mbps。第二條路徑的帶寬高於第一條路徑的帶寬,但RIP選擇第一條路徑作爲其最優路徑。

圖3-15 RIP最優路徑選擇

2.RIP路由表的更新

RIP路由表的更新是通過路由器廣播來交換路由信息的,默認情況下,路由器每隔30秒向其所有相鄰路由器廣播全部路由信息。每經過一臺路由器,相應的路由條目的跳數將增加1。接收到路由更新的路由器,選擇跳數最小的路由條目加入路由表中。通過這種方式,每個路由器都能夠獲取全網的路由信息。

路由器會把接收到的更新信息和自己路由表的信息進行對比,進而產生新的路由表。

對比路由信息採用的策略主要包括三個方面:

1)如果路由更新中的路由條目是新的,路由器則將新的路由連同通告路由器的地址(作爲路由的下一跳地址)一起加入到自己的路由表中,這裏通告路由器的地址可以從更新數據報的源地址字段中讀取。

2)如果目的網絡的RIP路由已經在路由表中,那麼只有在新的路由擁有更小的跳數時,才能替換原來存在的路由條目。

3)如果目的網絡的RIP路由已經在路由表中,但是路由更新通告的跳數大於或等於路由表中已記錄的跳數,這時RIP路由器將判斷這條更新是否來自於自已記錄條目的下一跳路由器(也就是來自於同一個通告路由器)。若是來自同一個通告路由器,則路由器接受這個路由條目,更新自己的路由表,重置更新計時器;否則,這條路由將被忽略。

RIP廣播更新週期由更新計數器控制,廣播的信息是整個路由表。如圖3-16所示爲一個採用RIP作爲路由選擇的網絡,每臺路由器初始的路由表中只有自己的直連路由,用大寫字母C表示,跳數均設爲0。若路由器R1的更新計時器超時,則向外廣播自己的路由表。路由器R1發出的路由更新信息中僅有直連網段的路由,即172.16.1.0/24和12.1.1.0/24,並把其跳數設爲l。

圖3-16某網絡中的路由器

該路由更新信息經過鏈路傳輸到達路由器R2,由於R2沒有與172.16.1.0網段直連,所以它會將此條路由加入路由表中,跳數仍然爲1,用RIP的第一個大寫字母R表示。若路由器R2的更新計數器超時,則它會向網絡廣播自己的路由表,這條路由廣播信息不僅包含了R2的直連路由12.1.1.0和23.1.1.0,其跳數爲1,也包含了從R1學到的新路由172.16.1.0,其跳數爲2,如圖3-17所示。

圖3-17 RIP路由器發送路由更新

路由更新信息172.16.1.0、12.1.1.0和23.1.1.0在到達路由器R3後,由於它的路由表中不存在前兩條路由,所以會先將它們加入到路由表中,跳數分別是2和1。路由器R1也會接收到此路由的更新信息,會將路由表和更新路由信息進行對比,路由器R1與172.16.1.0網段直連,它的跳數小於從R2傳送的172.16.1.0的跳數,因此不會對原路由表172.16.1.0進行更改。23.1.1.0是路由表中沒有的條目,需將網絡23.1.1.0加入到路由表中,設置跳數爲1。

若路由器R3的更新計時器超時,那麼,它就將自己的路由表信息廣播出去,如圖3-18所示。路由器R2收到的路由更新消息中,到達網段23.1.1.0和192.168.1.0的跳數爲1,到達網段12.1.1.0的跳數爲2,而到達網段172.16.1.0的跳數則增加爲3。

圖3-18 RIP路由器C發送路由更新

路由器R2接着會將路由更新消息與路由表進行對比,若路由表中不存在192.168.1.0網段,則將此網段添加到路由表中。由於其他的路由條目已經存在,並且跳數都小於更新的跳數,所以忽略其他幾個路由條目。若路由器R2的下一個更新計時器超時,則將新的路由表廣播給路由器R1和R3。這時,路由器R3發現這個更新信息已存在其路由表中,則忽略這個更新信息;而路由器R1發現路由條目192.168.1.0不在路由表中,便會將網段192.168.1.0添加到路由表中,並設置跳數爲2。

經過上述過程後,路由器R1、R2和R3的路由表信息同步完成,網絡的所有路由已經更新成功,如圖3-19所示。在此後的路由更新時間中,若拓撲結構沒有被改變,則路由器R1、R2和R3以後每次更新發送的路由信息都將是完全相同的。

圖3-19 更新後的路由表

上述實例中,假設網絡拓撲結構中僅存在三個路由器,而每次路由更新條目並不是很多,但是在實際網絡環境中,RIP網絡自治系統中有可能會存在較多的路由器。如果每臺路由器的更新時間均不相同,則網絡鏈路就不會發生擁塞;若存在多個路由器的更新時間相同,此時當它們同時發送路由更新信息時,就將產生較大的數據流量,會導致普通數據流量的延時甚至數據包的丟失。爲了防止出現這種情況,在路由器啓動或復位時,更新時間會產生一個在25秒和35秒之間的隨機秒數,這樣可以讓不同的路由器具有不同的更新時間,以減少數據突發流量的情況發生。

三、OSPF路由協議

1.OSPF的概念

OSPF(Open Shortest Path First)是一種鏈路狀態動態路由協議,不同於距離矢量協議(RIP),其路由收斂快,佔用網絡資源少,可以保證整個網絡拓撲結構中沒有路由環路,支持VLSM和CIDR,支持大型網絡。

OSPF作爲一種內部網關協議,在同一個自治區域(AS,Autonomous System)中的路由器之間更新路由信息。運行OSPF的每一臺路由器都維護一個描述自治系統拓撲結構的統一的數據庫,該數據庫存儲本自制系統中的每一個路由器的可用的接口信息和鄰居信息等鏈路狀態信息、路由器相連的網絡狀態信息和自治系統的外部路由狀態信息等。

所有的路由器根據各自路由器的拓撲數據庫,運行最短路徑優先算法(SPF,Shortest Path First),構造出以它爲根結點的最短路徑樹,該最短路徑樹的葉子節點是自治系統內部的其他路由器。

2.有關概念

1)路由器ID

2)鄰居

3)鄰接

4)鏈路狀態

5)鏈路開銷

6)鄰居表、拓撲表、路由表OSPF路由協議維護三張表:鄰居表、拓撲表和路由表。

7)指定路由器(Designative router,DR)。

8)備份指定路由器BDR(Backup Designative router,BDR)。

9)區域。OSPF可用於大型網絡環境,是由於其引入分層路由的概念,將整個網絡拓撲分割成相互獨立的部分。每一獨立的部分被稱爲“區域”(Area)。

10)路由器的類型

根據路由器在區域中的位置不同,路由器可分爲如下4種類型,如圖3-20所示。

①內部路由器:所有端口在同一區域的路由器,維護一個鏈路狀態數據庫,如R4、R5、R6和R7都屬於內部路由器。

②主幹路由器:具有連接主幹區域端口的路由器,如R3、R4、R5、R6、R7、R8和R9都屬於主幹路由器。

③區域邊界路由器:具有連接多區域端口的路由器,一般作爲一個區域的出口。區域邊界路由器爲每一個所連接的區域建立鏈路狀態數據庫,負責將所連接區域的路由摘要信息發送到主幹區域,而主幹區域上的區域邊界路由器負責將這些信息發送到各個區域,如R3、R8和R9都屬於邊界路由器。

④自治域系統邊界路由器:至少擁有一個連接外部自治域網絡端口的路由器,負責將非OSPF網絡信息傳入OSPF網絡,如R8就屬於自治域系統邊界路由器。

圖3-20 路由器的類型示意圖

11)OSPF數據報

OSPF包含如下5種類型的數據報。

①Hello數據報,與相鄰的路由器建立鄰居關係;

②鏈路狀態描述包,發送路由器的鏈路狀態數據庫聚合數據報;

③鏈路狀態請求包,請求鏈路狀態數據庫中某一條目的完整信息;

④鏈路狀態更新包,給出鏈路狀態數據庫中某一條目的完整信息;

⑤鏈路狀態確認包,收到一個鏈路狀態更新包後的確認。

3.OSPF的工作過程

運行OSPF協議的路由器首先通過互相發送Hello數據報建立鄰居關係,接着發送鏈路狀態信息詢問信息包和接受鏈路狀態更新信息包。OSPF將鏈路狀態更新信息包中的鏈路狀態信息存放在本地鏈路狀態數據庫中。經過一段時間的路由器間數據報交互,全網每個路由器的鏈路狀態數據庫信息相一致,每一個OSPF路由器以自己爲根結點,用單源最短路徑算法構造出到其他結點的最短路徑樹SPF,從而構造出自己的路由表。

OSPF的具體工作流程步驟如下:

第l步:建立路由器的鄰居關係。

第2步:進行必要的DR/BDR選舉。

第3步:同步鏈路狀態數據庫。

第4步:產生路由表。

第5步:維護路由信息。

以點到點的網絡爲例,如圖3-21和圖3-22所示。由於路由器R1和路由器R2通過交換Hello分組選擇路由器R1爲主路由器,路由器R2爲從路由器。路由器R1發送鏈路狀態描述包。路由器R2收到鏈路狀態描述包後,向路由器R1發送鏈路狀態確認包,並檢查自己的鏈路狀態數據庫。如果發現鏈路狀態數據庫裏沒有某些項,則添加它們並將這些項加到鏈路狀態請求列表中,並向路由器R2發送鏈路狀態請求包。當路由器R1收到鏈路狀態請求包時,發出鏈路狀態更新包,進行鏈路狀態的更新。路由器R2收到鏈路狀態更新包後發出確認包,確認並表示收到該更新包,否則路由器A就在重發定時器的啓動下進行重複發送。之後,路由器R2和路由器R1與之前的行爲正好相反,最終路由器R2也學到了路由器R1的鏈路狀態數據庫信息。

當所有的數據庫請求包都已被路由器R1處理後,路由器R1和路由器R2也就進入了鄰接完成狀態。

圖3-21鏈路狀態數據庫同步過程一

圖3-22鏈路狀態數據庫同步過程二

同理,在多路訪問網絡中,當指定路由器與整個區域內所有的路由器都完成鄰接關係後,整個區域中所有路由器的數據庫也就同步了,進入了鄰接完成狀態。

四、BGP路由協議

1.BGP的特點

BGP邊界網關協議(Border Gateway Protocol),是用來連接Internet上獨立系統的路由選擇協議。BGP是一種外部路由協議,目前正在使用的BGP協議版本號爲4,即BGP4。BGP4支持CIDR尋址方案,該方案增加了Internet上的可用IP地址數量。BGP是爲取代最初的外部網關協議EGP設計的,它也被認爲是一個路徑矢量協議。不同於RIP路由協議和OSPF路由協議,BGP邊界網關協議用於不同自治系統間的可達性信息交換。

可達性信息是到達某個網絡要經過的自治系統序列,BGP路由器通過可達性信息交換,生成關於各個自治系統連通性的結構圖。當兩個自治系統需要交換可達性信息時,每個自治系統都必須在系統中指定一個路由器運行BGP,這兩個運行BGP的路由器稱爲對等端或BGP發言人。兩個對等端在建立BGP會話後,可達性信息交換就可以開始進行了。BGP支持基於策略的路由選擇, BGP協議尋找的路由不一定是到達目的網絡的最優路由。

BGP協議具有如下特點:

1)BGP協議是一種外部路由協議,屬於距離矢量協議。

2)BGP報文采用AS路徑作爲關鍵屬性,並解決了路由循環問題。

3)BGP協議使用TCP協議傳輸報文,可靠性較高。

4)BGP在更新路由時,只更新發生變化的路由表項,降低了網絡的帶寬開銷,適合在Internet上大規模傳播路由信息。

2.BGP報文格式

如圖3-23所示,BGP報文由首部和報文主體組成。其中,首部包含標記、長度和類型3個字段,長度依次爲16個字節、2個字節和1個字節。

圖3-23 BGP報文格式

1)標記字段:用於標記BGP報文的開始。

2)長度字段:用於表示BGP報文的長度,單位爲字節。在BGP協議中,允許的最短報文長度爲19字節,即報文主體爲空;允許的最長報文長度爲4096字節。

3)類型字段:取值範圍在1~4,對應BGP報文的類型。

BGP報文可分爲4種類型:

1)打開報文。

BGP協議使用TCP協議傳輸報文,在TCP連接建立後,發送打開報文,建立兩個對等端之間的BGP會話連接。

2)更新報文。

在對等端路由器之間,使用更新報文發佈新路由或撤銷已發佈的路由。發佈新路由的信息和撤銷路由的信息可存在於同一條更新報文中,但是一次只允許發佈一條新路由信息,撤銷路由的信息則可發佈多條。更新報文由待撤銷的不可達路由信息、路徑屬性和網絡層可達性信息(NLRI,Network Layer Reachability Information)組成。

3)保持激活報文。

在對等端路由器建立會話連接時,使用保持激活報文作爲打開報文的應答。在連接建立後,使用保持激活報文來維持連接。

4)通知報文。

在檢測到網絡故障後,BGP路由器向所連接的對等端路由器發送通知報文,告知所檢測到的差錯,並關閉相應BGP會話連接。

3.BGP的工作原理

如圖所示,BGP路由器具有IBGP(Internal BGP)和EBGP(External BGP)兩種工作模式。當BGP路由器運行在同一自治系統內部時,稱爲IBGP工作模式;當BGP路由器運行在不同的自治系統中時,稱爲EBGP工作模式。

圖3-24 IBGP和EBGP

BGP的工作流程可分爲兩個步驟:

1)BGP邊界路由器初始化。

BGP使用TCP協議傳輸報文,在兩個路由器開始BGP會話前,必須首先建立TCP連接。其次,由一個路由器發送打開報文,確定此次會話所使用的BGP協議版本號、所在自治系統的AS號和BGP標識等信息。若另一個路由器同意進行BGP會話,則迴應一條保持激活報文,BGP會話連接建立。爲保持會話連接,通常要求週期性地發送保持激活報文。BGP會話的第一步爲交換BGP路由表,BGP路由表項的格式爲:

(目的網絡IP地址前綴,下一跳路由器,到達目的網絡所經過的AS序列)

2)路由更新。

BGP路由表交換完成後,路由器僅在路由條目變化或失效時,才通過更新報文進行路由更新操作。在更新過程中,不再交換整個路由表,而只是更新發生變化的路由表項,這有利於降低網絡的帶寬開銷和路由器的處理開銷。

更新報文中的路徑屬性是一組記錄了BGP路由信息的參數,用於路由的選擇和過濾。目前,在BGP協議中共定義了16種路徑屬性,其中,AS路徑爲關鍵屬性,其保存了從源AS到目的AS所經過的AS序列。BGP路由器在發佈路由時,會在AS路徑中附加自己所在的AS號。

如圖3-25所示,網絡10.1.0.0/17和10.1.128.0/17同屬於AS4,從AS2可直接到達AS4, AS2中的BGP路由器可能向AS1中的對等端路由器發送目的網絡爲10.1.0.0/17,AS路徑爲的更新報文。在AS1中的BGP路由器更新路由後,又可能發送目的網絡爲10.1.0.0/17,AS路徑爲<AS1,AS2>的更新報文。同理,AS1中的BGP路由器還可能發送目的網絡爲192.4.16.0/20,AS路徑爲<AS1,AS3>的更新報文。

然而,BGP路由器也可能重複、循環地更新路由,產生目的網絡爲10.1.0.0/17,AS路徑爲<AS1,AS2,AS1,AS2……AS1,AS2>的更新報文。爲避免這一情況的發生,BGP協議規定,在接收到更新報文後檢查AS路徑屬性,若發現包含自己的AS號,則將報文丟棄。例如,目的網絡爲192.4.16.0/20,AS路徑爲<AS1,AS3>的更新報文不會被AS3中的BGP路由器接收。

圖3-25 BGP路由更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章