Cisco IGRP and EIGRP

IGRP(Interior Gateway Routing Protocol,內部閘道路由協定)
1980思科專利,優於RIP但相似
hop count:有更大限制,最大255預設100
每90秒送出路由資訊更新,或為某一自治系統廣播網路
使用autonomous-system-number來啟動
收斂比rip快
ip的PROT欄為9
IGRP內部=100

特性如下:
能自動掌控無限且複雜拓樸
能根據不同的bandwidth及delay特性,彈性地分割區段
在非常大型的網路具scalability(擴充)的能力

使用的技術包括
trigger update
hold-down timer
split horizon
poison reverse

Metric決定預設是依bandwidth,delay,也可依load,reliability ,公式如下:
metric=[k1*bandwidth+k2*bandwidth/(256-load)+k3*delay]*[k5/(reliablity+k4)]
(預設k1=k3=1,k2=k4=k5=0,所以metric=k1*bandwidth+k3*delay)
metric使用24bit權值

路徑會定期更新通告advertise:
封裝在ip封包內,若header裡的protocol欄為9則為更新通告
路徑有以下三種:
 interior routes(內部路徑):路由器介面與所連子網路間的路徑
 system routes(系統路徑):在自治系統外到達網路的路徑
 exterior routes(外部路徑):在自治系統外到達網路的路徑,且由最後閘道器連出去

用四種計時器控制效能
update timer:90sec
 時間到動作:發佈更新
invalid timer:270sec,等待某條路徑的更新資訊,收到更新則歸0sec
 時間到動作:不再相信後續更新,並宣告此路徑無效
holddown timers:280sec,指定忽略較差的路徑資訊的時間量
 時間到動作:離開holddown狀態
flush timer :630sec,等待路徑更新
 時間到動作:將路徑由路由表刪除

…………………………………………………………………………..

EIGRP(enhanced igrp,加強版IGRP)
IP的prot(通訊協定類型)為88,非TCP及UDP
update封包的multicast address為224.0.0.10,ipv6格式為ff02::a
AD:EIGRP內部=90,EIGRP外部=170,EIGRP summary=5  
ps:僅支援MD5驗證

特色
有變動或發現鄰居才發出更新通告,啟動時先同步鄰居間的路徑表,就像link state(鏈路狀態)
不傳送鏈路狀態封包,而傳送距離向量更新,就像distance vector(距離向量)

差異
和igrp相同的有:
 使用autonomous-system-number來啟動
 使用routing by rumor機制
和igrp不同的有:
 metric:計算相同,但數量要在*256,使用32bit權值
 hop count:預設100,可加大到224

優點:
透過PDM(protocol-depedent module,協定相依模式)支援多協定如TCP/IP,apple talk,ipx,各協定有各別的表記錄協定的路徑資訊
classless支援VLSM/CIDR,支援route aggregation與discontiguous subnet 
支援手動和自動route summarization(路徑匯整),預設使用自動匯整 
透過RTP通訊
使用DUAL來計算路徑,converge快
用hello有效率的發現鄰居,減少頻寬使用
比ospf簡單,限制較少
缺點:
cpu和memory使用較多

………………

IPv6 EIGRP
無automatic summarization,eigrp可以
update群播位址為ff02::a,eigrp為224.0.0.10
ps:
不會要求相鄰的ipv6鄰居介面為同一個網段,但eigrp會要求
和eigrp一樣都會通告介面上任何直連子網路,但ipv6 eigrp不會通告link local和local route
 

……………… 

hello的特點
hello訊息主要是快速偵測出新進入或死亡的鄰居
topology,neighbor,route table的產生主要透過hello訊息

hello的間隔時間
在LAN中預設hello timer 5秒,hold timer 15秒
若在hold timer預設的秒數內沒收到hello訊息,就會中止鄰居關係,並重新搜尋一次鄰居
若要加快收斂速度,可以減少hello和hold timer,建議是1比3的比例較合理
若hello timer高於hold timer,則鄰居關係會不斷的中止與恢復,而造成route flapping(路徑跳動) 
ps:低速WAN中,預設hello timer60秒,hold timer180秒

EIGRP建立運作過程 
1,會持續地multicast hello訊息與接收,探索新鄰居的加入或偵測鄰居的離開或故障
2,若發現新鄰居則透過hello訊息與它形成adjacency(緊鄰關係)
ps:成為鄰居三個條件:
 1收到hello或ack,換句話說,鄰居間在網路上的訊息要能互相扺達 
 2as相同,
 3相同的K值
ps:ospf限制各router要有相同hello間隔和dead間隔是成為鄰居必要條件,但eigrp無此限制
3,adjacency形成後,才可開始full update(完整更新)交換路徑,以宣傳他們的整個路徑表給另一部路由器
其步驟如下:
 新加入router送出hello封包給相鄰router
 相鄰router收到hello封包後回傳更新的routing information給新加入的router
 新加入router收到後回應ack確認訊息,並建立topology table,更新自己的route table 
 新加入router送出routing information給鄰近router
 鄰近router收到後回應ack確認訊息
4,所有路由器都學會後,停止更新
5,若有參數發生變化或鄰居失去連線則進行partial update,若失去連線又恢復則進行full update 
ps:
當發現neighbor消失時,動作如下
 1觸發DUAL
 2與該neighbor的adjacency關係被刪除
 3刪除從neighbor學來的route
 4若有feasible route,則使用 

EIGRP鄰居驗證
兩台設備使用MD5機制互做驗證後,才可成為EIGRP鄰居
可防止DoS攻擊
可防止非法設備加入224.0.0.10multi-address與合法鄰居建立關係 

…………… 

EIGRP維護3種table
neighbor table(鄰居表):記錄鄰居相關資訊,儲存在ram中,各PDM各有一個鄰居表
 路由器會利用序號來匹配更新封包的確認號碼,且會記錄從鄰居接收的最後一個序號,即可偵測到失序的封包
topology table(拓樸表):記錄鄰居所宣傳的相關資訊,以及各路徑,儲存在ram中,DUAL依此做運算
 topology表內含相關資訊包括FD,RD,sucessor,feasible successor
route table,儲存在ram中,會根據topology table決定route table的路徑

metric,可分以下兩種 
FD(feasible distance,可行距離):
 所有線路中最佳metric weights(衡量指標)的路徑,值越低表示該路徑越好  
RD(reported distance,報告距離)/AD(advertised distance,通告距離):
 由某鄰居報告的路徑,也就是該鄰居的路徑表衡量指標
EIGRP的metric weights(權值)公式 
=256*( 
k1(10^7/bandwidth)+
k2(10^7/bandwidth)/(256-load) +
k3(delay)+
k5/(reliability+k4) 
)
其中,
bandwidth,load,delay,reliability為權值,會使用update訊息上之參數
k1-k5為k值,且為0-255整數,預設k1,3=1,k2,4,5=0
因此簡化後公式如下
=256*( 10^7/bandwidth +delay)
ps:
在調整權值時,建議不要使用bandwidth,因為很多協定會以頻寬做為重要參數.建議使用delay,影響較小  
ps:metric以32bit表示


EIGRP路徑可分以下兩種
successor(後繼者):
 主要的路徑,該路徑也稱為sucessor route(後繼者路徑),而該路徑的下一站則稱為suceessor 
 所有路徑中,FD最小的路徑,
 sucessor會放進route table中,此路徑會被用來轉送交通
 successor會出現在route table和topology table
feasible successor(可行後繼者):
 successor的backup route(備援路徑),該路徑也稱為feasible successor route,而這些路徑的下一站則稱為feasible sucessor
 1不是FD最小的路徑,2該路徑的RD小於(也不可等於)successor的FD 
 最多可保留6條,存在topology table  
 當沒有feasible successor可用時,則該路徑會從passive變成active,並執行DUAL
ps:
EIGRP只會搜集loop-free route(無迴圈的路徑)
 

DUAL(diffusing update algorithm,擴散式更新演算法)
用來選擇與維護每個遠端網路的最佳路徑
使得eigrp成為converge時間最短的一種,
主要使用2方法
 1最佳路徑故障不用重算,直接使用備緩線路
 2備援線路尚未準備仍要重算,使用multicast請鄰居幫忙找尋

DUAL的找尋步驟如下
1router傳送query訊息到所有鄰居,詢問是否有連到該目地之route,並等待回覆直到active timer歸0
2若鄰居有loop-free route則以reply訊息回覆
若鄰居沒有,則傳送query訊息到其他鄰居,並等待其他鄰居傳回reply訊息直到active timer歸0 
3不斷重覆步驟2
4當router收到reply訊息時,有兩情況
 1該reply是鄰居query的,則傳送該reply訊息給任一鄰居 
 2該reply是自己query的,則可開始使用該loop-free route
ps:
找尋步驟所用的訊息都會在以ack訊息進行確認
ps:
在active timer的時間內,其路徑稱為SIA(stuck-in-active,陷入主動狀態)
在active timer過了一半的時間後,router會送出SIA-query訊息,若鄰居沒有回覆SIA-reply訊息則中止鄰居關係
ps:
在發生異常的情況下,
網路出現大量的SIA時,可能是CPU或memory太忙導致來不及處理這些query
某台router出現大量的SIA時,可能是query和reply遺失,或線路異常 ex:unidirectional link

query問題
在大網路等特定情況下會因query造成路徑收斂緩慢
主要有兩種解決方式
1.設定stub router:
 stub router會告訢非stub router不要傳送query給stub router,用以限制query的數量
 stub router不會去query其他router
 stub router主要設定在remote site router 
 應用:在hub-spoke架構下,hub router會連接多台spoke router,就可以在spoke router上設定stub以限制query數量 
2.設定summary routes
當router收到鄰居的query後,若query要找的route包含在summary route,則router會馬上reply,不會在query到其他鄰居 
 

… 

EIGRP使用以下的封包類型傳送訊息
hello:用來探索鄰居  
ack(acknowledgment): 1用來確認收到更新的封包,topology交換時會用到 
update: 當發生變動時用來傳遞資訊,像是router發現新鄰居,偵測到topology改變(會包含topology資訊,在topology交換時會用到) 
query: 需要1個或所有鄰居特定資訊時會用到  
reply: 回答query封包有loop-free route  
ps:除hello,ack外,其他3個都使用RTP傳輸

UPDATE訊息包含以下
1.prefix/prefix長度, ex:10.1.1.0/24
2.Metric components(權值):bandwidth, delay, reliability, load
3.Nonmetric items:hop count,MTU
UPDATE訊息的變化
update訊息經過下一個介面時,以下屬性會改變
bandwidth=選擇所有介面中頻寬最低的值做為該屬性值 
delay=將所有經過的介面之delay值加總
hop count=每經過一個介面要加1

RTP(reliable transport protocol,可靠的傳輸協定)
cisco專屬的傳輸層協定,用來管理eigrp路由器的通訊
提供可靠的機制來依序地傳送訊息,可靠性是此協定的重要考量
也提供不可靠的機制,就像hello訊息,頻繁且應保持很小
徵用多點傳播與單點傳播來快速傳送更新
ps:multicast給鄰居若無回應,會用unicast最多16次內若無回應,宣告鄰居消失
ps:若eigrp的通訊資料有問題可能會導致資料庫損毀,因此需用可靠的協定