EIGRP 簡介
EIGRP 的前身是 IGRP ,這兩個繞送協定是 Cisco 特有的繞送協定,只能在思科的路由器上運作。
EIGRP 綜合了距離向量(DV)和鏈路狀態(LS)兩者的優點
內部管理性距離是 90,外部管理性距離是 170。
EIGRP 總結路徑的管理性距離是 5。
特色還包括:
(1)減少頻寬佔用:
EIGRP 不會進行週期性的更新,它使用一個非常輕量的Hello協定封包去監督鄰居連線的狀態
EIGRP 只會在路徑或指標(metric)發生變化之後(例如: 鍊路加入或移除時),才會進行部分更新
當路徑資訊改變以後,DUAL只會發送發生改變的那條路徑資訊的更新,而不是發送整個路由表
這個與傳輸更新到整個區域內的所有路由器上的鏈路狀態路由協定(LS)相比節省相當多的頻寬
EIGRP 只有在路由器進行初始化時,會傳送整個路由表。
(2)快速收斂:
EIGRP 不使用 holddown 計時器,使用 Diffusing Update 演算法(DUAL)讓收斂能快速完成
並且能進行最佳路徑的選擇
使用 EIGRP 的路由器會儲存某些可到達目的地的備用路徑在拓樸表中
以便在主要路徑發生問題時,能快速調用備用路徑
也可能會沒有備用路徑,如果沒有合適的路徑或備用路徑
路由器會向它的鄰居進行查詢,以便選擇出一條替代路徑。
(3)支援多種網路層的協定:
EIGRP 透過使用協定相依模組(protocol-dependentmodules,PDMs)
可以支援 ApplleTalk、IP 和 IPX 這三種第三層的協定
(4)無縫連接第二層的協定:
EIGRP 不要求對OSI 的第二層協定進行特別的設定
EIGRP 能夠有效的工作在 LAN 及 WAN 的環境中
而且 EIGRP 保證網路不會產生迴路(loop-free),設定命令也很簡單。
(5)支援 VLSM
(6)不使用廣播,使用多播和單播,因此節省了頻寬。
(7)使用可靠傳輸協定(Reliable Transport Protocol, RTP )
用來保證 EIGRP 的封包在發送給鄰居時,是非常可靠的傳輸。
EIGRP 的運作
資料是放在最後稱為TLV(Type/Length/Values) 的欄位
在第二個欄位「IP 封包表頭」裏面,除了有來源 IP 位址,還有目的地 IP 位址、協定
目的地 IP 位址會被填入 88 ,代表的就是 EIGRP
目的地位址則被填入 224.0.0.10 的多播位址
如果是運作在乙太網路上,則會有一個乙太訊框的表頭被封裝,就是圖中第一個欄位
而其中的目的地 MAC 位址,則會被指定為多播位址 01-00-5E-00-00-0A
第三個欄位則包括了 EIGRP 使用的自治系統號碼(Autonomous System ,AS)、封包的型態及 TLV
封包的型態共有五種,以代碼方式呈現,五種封包分別為:
(1)Hello 封包 -
招呼
(2)Update 封包 -
更新
(3)Query 封包 -
查詢
(4)Reply 封包 -
回應
(5)Acknowledge(ACK) 封包 -
確認
TLV 則包括了 EIGRP 的指標,EIGRP 的指標計算有五個參數
分別是 K1 到 K5 ,預設的情況下只有 K1 (頻寬)及 K3(延遲)的數值是 1 ,其他都是 0
延遲是封包從來源到目的地之間所花費的時間,頻寬指的是到目的地的路徑上最小的頻寬
EIGRP 的路由器在運作時,會維護三張表:
neighbor table (鄰居表)、topology table (拓樸表) 和 routing table (路由表)
鄰居表保存了已經建立了鄰居關係的路由器和直接相連的路由器。
要運作EIGRP 協定的原則就是要先成為鄰居才能交換路徑,成為鄰居的條件是:
(1)收到 Hello 或 ACK
(2) AS 號碼相同
(3) K 值相同
拓樸表包含了此路由器到目的地網路的所有可能的路徑,其建立過程如下:
1. 在初始狀態時,每個路由器都會轉送一份路由表給其他鄰居路由器
2. 每個路由器會把從鄰居路由器得來的路由表儲存在自己的 EIGRP 拓樸表中
3. EIGRP 會把拓樸表中,針對每個目的地網路,選擇出一條到達該目的地網路的最佳路徑
4. 接著把所有的最佳路徑放到路由表中。每個 PDM 都有一個獨立的鄰居表、拓樸表及路由表
RTP
可靠傳輸協定(RTP,Reliable Transport Protocol) 是 EIGRP 的封包在傳送與接收時所使用的協定
EIGRP 是一個網路層的協定,但是不能使用 TCP 與UDP
因為 IPX 與 AppleTalk 不使用 TCT/IP 協定,因此 EIGRP 將 TCP 換成 RTP
但是在傳輸的過程中,RTP 有可靠與不可靠兩種封包
可靠的封包,是指發送端會需要接收端送回給發送端一個確認(Acknowledgement)的封包
不可靠的封包則是指發送端不需要確認封包
在運作的過程中,會使用224.0.0.10 的多播與單播
RTP 使用五種不同的封包,某些封包是成對出現的,下面針對不同封包進行說明:
(1)Hello 封包:
路由器使用 Hello 封包來發現鄰居以形成相鄰的關係,傳送時通常是採用多播的方式
當介面配置了 EIGRP 以後,路由器會週期性的以多播的方式向外發送 Hello 封包
當其他 EIGRP 的路由器接收到 Hello 封包以後也會送回一個 Hello 封包形成了鄰居關係
Hello 封包在不同的媒體上發送的間隔時間是不一樣的,分類如下:
1. 每 5 秒發送一次: 廣播型媒體,例如乙太網、Token Ring、FDDI)
點到點的串列鏈路中,例如 PPP、HDLC、Frame Relay、ATM
此類通常都是頻寬大於 1.5M的線路,因為頻寬較寬,允許較頻繁的發送 Hello 封包
2. 每 60 秒發送一次: 通常是頻寬小於 1.5M 的線路的多點線路
例如 ISDNBRI、某些 Frame Relay 及 ATM 。
容許等待某個鄰居路由器的 Hello 封包的時間稱為保存時間(Hold time)
保留時間一般是 Hello Time 的 3 倍
超過此時間未收到 Hello 封包,該鄰居路由器會被認為發生狀況已無法到達
(2)更新(Update)封包:
採用多播或單播(例如在點對點的鍊路)的方式發送
更新封包發生在路由器啟動時、拓撲或指標(Metric)發生變化時
(3)查詢(Query)封包:
當路由器要開始進行路徑計算需要路徑資訊時,或沒有可用的備用路徑時
就會以多播或單播的方式發送一個查詢封包給鄰居路由器,以詢問是否有到達目的地的可用路徑
並且等待所有鄰居路由器的回覆封包
(4)回覆(Reply)封包:
是以單播的方式回應給送出查詢封包的路由器。
(5)確認(Acknowledge,ACK) 封包:
確認封包是採用單播且是空的 Hello 封包
更新封包、查詢封包和回覆封包均是可靠的傳輸,所以它們都需要接收端的確認封包(ACK)
而 Hello 封包和確認封包就不需要確認封包
在下圖中以兩台路由器開機後 RTP 封包傳輸的過程進行說明:
1. 路由器 A 啟動,然後在鏈路上發送 Hello 封包。
2. 路由器 B 啟動,然後在鏈路上發送 Hello 封包。
路由器 B 接收到路由器 A 發來的 Hello 封包,於是送出更新封包給路由器 A
告訴路由器 A 它自己的所有路由表資訊,這時鄰居關係建立。
3. 接下來路由器 A 會發送 ACK 封包給路由器 B ,確認它已經收到了從路由器B 送來的更新封包
4. 路由器 A 收到更新封包,會更新自己的拓樸表
於是拓樸表中包括了所有從鄰居路由器得來的目的地資訊。
5. 路由器 A 發送完整的路徑資訊的更新封包給路由器 B 。
6. 路由器 B 收到路由器 A 發來的更新封包後,回覆 ACK 封包給路由器 A ,整個過程就完成。
DUAL
有限狀態機(FSM)擴散更新演算法(Diffusing Update Algorithm,DUAL) 是 EIGRP 使用的演算法
所有路徑計算與決定的過程是被 DUAL 的有限狀態機(Finite State Machine)完成的
有限狀態機簡單的說就是有限數量的狀態組合成的行為模型
事件的產生會讓狀態從一個轉移到另一個
宣傳距離(AD)與可用距離(FD)
假設有一條可以到達目的地網路的最佳路徑
則此條往目的地的路徑上第一個路由器(Next Hop)就是繼承者(Successor)
所有的路由器都依賴於繼承者(最佳路徑上的 Next Hop路由器)到達目的地網路
為了決定到達目的地的最佳繼承者路徑(Successor Route)和備用繼承者路徑(Feasible Successor Route)
EIGRP 使用下面兩個參數:
1.宣傳距離(AD,Advertised Distance):
是鄰居路由器到達目的地網路的指標值,又稱為報告距離(RD,Reported Distance)
2.可用距離(FD,Feasible Distance):目前路由器到達鄰居路由器的指標值加上宣傳距離
路由器會比較所有的可用距離,然後選擇可用距離的值最低者,將其放進 IP 路由表
|------------------------------可用距離-------------------------------|
|----------------宣傳距離------------------|
|----------------------------------------------|--------------------------|
目的地網路 鄰居路由器 目前的路由器
在上面顯示的是 C 路由器的 EIGRP 鄰居表、拓樸表及路由表
鄰居表裏面包含了路由器 A 和路由器 B 的資訊
在拓樸表中,路由器 A 和路由器 B 都知道如何到達網路 10.1.1.0/24
從拓樸表中也可看見路由器 A 到達目的地網路10.1.1.0/24 的宣傳距離是1000,可用距離是 2000
而路由器 B 的宣傳距離是1500,可用距離是 2500
這裡可用距離數值最低者會被挑選出來
所以路由器 A的資料項目會被放進路由表中成為到達網路 10.1.1.0/24 的最佳路徑
如果在拓樸表中一個目的地網路,有多個可用距離(FD)都是相同的最佳指標的路徑
那麼路由表中可以同時存放這多個相同最佳指標的路徑,預設可以存放 4個,最多可以存放 6 個
FS(feasible successor) 就是備用路徑,要選出備用路徑
則該路徑的宣傳距離(AD)必須比目前的最佳路徑的可用距離(FD)還要小
若最佳路徑失效,而且備用路徑存在,備用路徑將直接取代失效的最佳路徑,不需重新進行計算
EIGRP 的拓樸表可以存放多個備用路徑
若最佳路徑失效,備用路徑也不存在,那麼 EIGRP會重新計算出一個新的最佳路徑。
EIGRP 依靠鄰居路由器提供路徑資訊,如果路徑發生了問題,此路徑即進入Active 狀態
而且如果又沒有可用的備份路徑時,為了快速的收斂,EIGRP 路由器會向鄰居發送查詢(Query)封包
以尋找一條可以替代那條出了問題的路徑
查詢封包會被發送給所有的鄰居路由器,除了原先最佳路徑的那個介面
如果被查詢的路由器知道替代的路徑時,它就把這條替代路徑放進回覆(Reply)封包並送回發出Query的來源
如果收到查詢封包的路由器沒有替代路徑的資訊,它將繼續發送給它自己的其他鄰居
直到找到可以替代的路徑為止
EIGRP 使用可靠的多播來尋找替代的路由
路由器必須等到收到所有鄰居路由器的回覆封包,才能重新進行最佳繼承者路徑的計算
只要有一個路由器的回覆沒有收到,發出查詢封包的來源路由器就必須等待
預設如果在 3 分鐘內某些路由器沒有對查詢封包做出回覆,這條路徑就進入 stuck in active(SIA) 狀態
也就是一直處於 Active 的狀態,於是路由器將重新設定和這個沒有做出回覆的路由器的鄰居關係