Routing Protocol

routing protocol(路由協定):
路由協定在路由器間移動,同時可時路由器間互相溝通,並更新維護路由表的資訊,決定路徑
ex:rip,ospf,igrp,eigrp,…等
ps:
routed protocol(可被繞送協定)
協定提供了足夠的訊息,讓封包根據定址機制,從某主機傳遞到另一主機上
ex:tcp/ip,ipx/spx,decnet,icmp,arp,appletalk,…等
ps:
不支援routed protocol的有netbeui

……………..

routing need to do
1知道目地位置
2那些學習來源
3發現可能路徑
4依ad值選擇最佳路徑
5維護檢驗路徑資訊
6讓收斂convergence時間(歷經改變後所有路由器更新路由表所需的時間,算是處理負載平衡的時間)變快
ps:從一路由器到另一路由器的路徑的路由資訊並不提供回傳路徑的路由資訊
ps:在許多情況下,雖然封包到達目的地,但遠端網路並不知道路徑的資訊,而無法將回應給傳送者

ad(administrative distance,管理距離)
選最佳路徑時,ad值越低越優先
相連介面ad值為0,靜態路由(手動設定的路徑)ad值為1
協定提供的動態路徑ad值如下
bgp:20
內部eigrp:90
igrp:100
ospf :110
is-is:115
rip:120
egp:140
外部的eigrp:170
內部的bgp:200
未知:255
ps:若到同網路之2路徑具相同ad,則決定最佳路徑依routing metric
ps:若到同網路之2路徑具相同ad和相同routing metric,則遶送協定會去平衡兩條的負載

常使用的routing metric有
bandwidth(頻寬),delay(延遲),load(負戴),reliability(可靠性),hop count(跳躍次數),cost(成本)

………….. 

routing protocol依運作方法方三種:
distance vector(距離向量):斷線要重算,演算法用bellman-ford或ford-fulkerson
 router只知道與鄰近節點的位址以及連線的cost
 原理:將選徑資訊/路由表廣播到所有相鄰路由器,鄰居收到後將沒有或更好的路徑加入路由表,也稱routing by rumor(根據傳言之路由)
 優點:簡單
 缺點:收斂速度不快,容易產生routing loops及counting to infinity(無限大)
 特點:good new travels fast, bad news travels slow  
 有RIPv1,IGRP,RIPv2
link state(連結狀態):依連線狀態進行調整,斷線要重算,演算法用dijkstra的spf(最短路徑優先)
 每個router都知道整個網路的狀態及topology(拓樸)
 原理:會送出更新路由資訊至網路上的路由器,鄰居收到後畫出自己對整個網路拓樸圖,在使用dijkstra計算各目地最短路徑
 優點:對網路改變有快速之反應,網路變化時會啟動更新要求
 缺點:為了要儲存傳送同步資訊,會使用較多bandwidth,processing,memory,…等
 有OSPF,IS-IS,NLSP
hybrid routing(混合式路由):使用distance vector判斷目的地網路的最佳路徑,並利用拓樸的改變驅動資料庫更新
 可快速收斂,且使用了較少的頻寬,記憶體,處理器負擔
 有EIGRP


routing protocol依AS分為:
IGP,interior gateway protocol:AS內部路由,用metric值來判斷最佳路徑,可在細分三類: 
 distance vector
 link state
 hybrid routing
ex:RIP、IGRP、EIGRP、OSPF、IS-IS
EGP,exterior gateway protocol:AS之間路由,具彈性訊務較低,可設定網路策略限制條件 
 BGP(boarder gateway protocol):classless,使用tcp179,可分interior和exterior的bgp
 IDRP(Inter Domain Routing Protocol) 
ps:
大部份大型的ISP都是採用IS-IS(Intermediate System-to-Intermediate System protocol)

ps: 
AS(autonomous system,自制區系統):
一堆一堆的net,同一區路由會互相交換資訊,再經由某路由器將匯整後資訊傳給其他AS
為統一管理下共用單一共同路由原則的網路或網路集合,對外而言是單一個體 ex:cisco.com網域,tanet 
為一個16bit的數字,由ARIN(美洲internet號碼註冊署)負責
各自治系統有管理機構分配的唯一編號:1到65411是注冊的互聯網編號,65412到65535是專用網路編號

 

選徑架構分為:
flag(平面式):全體都知道所有路徑
ex:rip
Hierarchical(階層式):藉由將拓樸切割為階層,以減少routing table(路由表)的大小
某些路徑給該路由器處理,ex:ospf
階層數過多也會造成負擔成本增加,理想的階層數應為3

………………………….

迴圈產生原因:
收斂緩慢,導致網路或路由拓樸的改變而使得資料不一致時
不正確的資訊送回路由器,且與其自身傳送的正確資訊相扺觸時

ex:
count-to-infinity 
假設網路為netA-R1-netB-R2-netC
router1和router2連接network A、B、C,且routing table為steady state
當netA和R1斷線
R1不知如何到netA,而R2會告訢鄰居(R1),R2到netA距離為2
R1的next hop改為R2,且距離為3,並告訢鄰居(R2),R1到netA距離為3
R2就會將距離改為4,而R2會告訢鄰居(R1),R2到netA距離為4
R1就會將距離改為5,…omit… 

routing protocol常見技術有:
split horizon(水平切割):路徑資訊不可傳回當初更新傳來的方向,可解決簡單loop狀況,被設計試圖解決無止境計數問題
ex:設router.a連結x,y兩網段,router.b連結y,z兩網段
router.a會將x網段告訢router.b,與是router.b知道x網段,接著router.b會有以下兩種可能行為:
若split horizon有開,則router.b會把x網路告訴除了router.a的所有router
若split horizon關閉,則router.b會把x網路靠訢所有router,而且也會告訢router.a
triggered update(觸發式更新):不必等待更新時間,一有變動就能送出更新
route poisoning(路徑毒害):將cost設定無限大使該路徑不被使用
 若該router發現相鄰網路異常時會將此網路cost設成無限大,並將此資訊傳給其他router
 許多不同的距離向量協定用來解決大型路由迴圈問題
poison reverse:將posion資訊傳回
 也稱反向抑制水平切割
 常router收到其他router的poison的資訊,會先更新自己的route table,然後在將此資訊回傳
holddown timer(保持計時器):在此時間內不接受任何訊息,可避免發生漸增至無窮大現象的問題,減少loops問題
 主要用來解決故障資訊比正當資訊傳送慢的問題,原理是讓故障資訊有較充足時間傳送
 作法是當收到網路無法到達的資訊時,在時間內不接受關於此網路的路徑資訊
 此技術可讓網路設備有充份的時間來接收網路故障的資訊,以免誤收到過時的訊息
 若鄰居送來比原來更好的衡量指標更新路徑,則離開holddown狀態,時間歸0
 ps:若關閉則可加速收斂
hop count:定義最大數限制數量,可解決count to infinity
ex:rip的hop count=16

常見routing protocol比較

特性rip1/2igrpeigrp(內部)ospf
協定類型距離向量距離向量混合式鏈結狀態
無級別支援無/有
vlsm支援無/有
自動總結
手動總結無/有
支援非連續網路無/有
路徑計算bellman-fordbellman-fordbellman-forddijkstra
更新路徑表更新路徑表更新事件觸發事件觸發
路徑的散播每30秒broadcast每90秒broadcast異動時multicast異動時multicast
路徑衡量指標hop countbandwidth,delaybandwidth,delaybandwidth
hop count限制15255224
收斂速度排名4213
階層式網路使用as使用as使用area及as
對等節點的認證無/有  

……………. 

3種路徑散播(routing protocol傳送資訊)的方式
unicast routing:將封包從到單一目的節點的服務
broadcast routing:將封包傳送給網路中所有節點的服務
multicast routing:將封包傳送給網路中特定節點的服務

… 

multicast routing:
參考https://systw.net/note/af/sblog/more.php?id=324 

broadcast routing 2種手法
由來源端進行複製:
 也稱N-way unicast(N路單播)
 透過單播方式將封包送到所有目地, 達到broadcast效果
 實作簡單
 效率很差,如果來源只透過單一連結到目地,就會有N份相同封包經過此連結
在網路中進行複製
 將單一封包傳到相鄰節點,在由相鄰節點重複此行為,讓封包傳到所有節點
 常見以下三種方式
 flooding(溢出): 節點的方式,但如果節點間存在迴圈,會引發廣播風暴
 控制過的flooding,可解決廣播風暴問題,但會多餘廣播封包問題,有以下2手法
  sequence number-controlled flooding(以序號控制的溢出):
  RFP(reverse path forwarding,反向路徑轉送)
 spanning-tree flooding:可解決廣播風暴問題和多餘廣播封包問題

 …

sequence number-controlled flooding
來源節點會將id(IP或識別碼)和序號放入封包中傳送給相鄰節點
節點會維護一份己接收,複製,轉送過的清單,並透過此清單決定要送給那些相鄰節點

RFP
也稱為RFB(reverse path broadcast)
當節點收到不同來源的廣播封包時,只有經過節點最少的封包,會被接收並轉送
ex: 當a送封包到鄰居b和鄰居c, c又送封包到鄰居b,
此時b看到2個封包進來,一個是a->b,一個是a->b->c,
經過節點最少的封包是a->b這個,所以此封包會被轉送


spanning-tree flooding
做法:
1先在節點間建立spanning tree
2發送廣播封包時只能順著spanning tree的路徑傳送到每個節點
優點:不會有多餘廣播封包
缺點:spanning tree建立和維護不易

…………… 

ipv6的IGP如下 
RIPng:  rfc2080
OSPFv3: RFC5340
MP-BGP4: RFC4760
IPv6 EIGRP:cisco專屬


ipv6 IGP共同點
驗證使用ipv6的ah/esp 
不會要求相鄰的ipv6鄰居介面為同一個網段,
使用link local ipv6做為next hop