Protocol_ISIS

集成ISIS協議

做者:Danbo 2015-7-5node

ISIS的意思是表示中間系統,而且是爲OSI無鏈接網絡協議(OSI Conectionless Network Protocol,CLNP)設計的路由選擇協議。爲了支持從TCP/IP協議向OSI協議可預見的轉換,又提出了一個了擴展的ISIS協議,稱爲集成ISIS協議。提出集成ISIS協議的目的是爲了把它做爲一個具備雙重功能的ISIS協議,即利用單個路由選擇協議同時爲CLNS協議和IP協議提供路由選擇的能力。這個協議能夠設計用來在一個單純的CLNS換進,一個單純的IP環境,或者一個CLNS/IP的混合換進中運行。

與一個子網相連的接口稱爲子網鏈接點(Subnetwork Point of Attackment,SNPA),SNPA有一些概念化,由於它時間上是定義了一個提供子網服務的「點」,而不是一個實際的物理接口。SNPA的基本概念特徵和子網自己的基本概念特徵是相符的,它能夠由數據鏈路交換的多個數據鏈路組成。
從一個節點的OSI層到另外一個節點對等的OSI層的數據單元稱爲協議數據單元(Protocol Data Unit,PDU)。可是與LSA不一樣,LSA是封裝在OSPF頭部以後的,都被封裝在一個IP數據包內,而一個LSP自己就是一個數據包。redis


ISIS區域

全部的路由器都徹底處在一個區域內部,而且區域的邊界是在鏈路上,而不是在路由器上,ISIS骨幹區域是第2層區域,而非骨幹區域是第1層區域。
ISIS區域是可重疊的。
缺省條件下,L1/L2路由器不須要通告L2類型的網絡給L1類型的路由器。所以一臺L1路由器沒法知曉它本身所在區域以外的目的路由。在這個意義上一L1區域相似與OSPF的Stub區域,一次爲了轉發數據包到其餘的區域,L1路由器都必需要轉發到最近的一臺L1/L2路由器上,當L1/L2路由器發送它的L1的LSP進入一個區域時,它將經過在LSP中設置一個成爲「區域關聯位(Attached,ATT)」的二進制來通知其餘L1路由器它能夠到達其餘的區域。
咱們討論一下ISIS與OSPF的區別:OSPF協議能夠設置豐富的區域工具和特徵,是企業網路選用的協議。另外一方面,多區域的ISIS運行更爲複雜,所以不多在企業網中出現。運行商和ISP運行的是基於BGP協議的大型網絡,他們的IGP協議主要用來尋找BGP的會話點。所以,他們但願IGP更爲簡單--一般會把他們整個路由選擇域做爲單個IGP區域,ISIS協議在不少方面無疑比OSPF協議更加簡單,這對於「單個大型區域」這種類型的應用過來講根據有可擴展性。
因爲一條ISIS路由器能夠徹底地處於一個單一的區域內,所以區域ID將和整個路由器相關聯,而不是和某一個接口相關聯。ISIS協議最多有3個區域地址,咱們能夠經過:max-area-address來修改。算法

NET地址

SysID:相似於OSPF協議中的RID,在一臺ISIS路由器上能夠經過一個單一的地址同時定義區域ID和系統ID,這個地址就是網絡實體標題(Network Entity Title,NET)
6byte的SysID:這個系統ID的長度6個八位組字節,而且常常是這臺設備上的某個接口MAC地址。
1byte的NSEL:在全部的狀況下,這個1個八位組字節都被設置爲0x00.一個網絡服務接入端(NSAP)所描述的都是和某個節點的網絡層上的一種特有服務相關。於是,在一個ISO地址中,SEL設置爲大於0x00的某些值時,這個地址就是一臺NSAP地址。這種狀況和一個IP數據包內的IP目的地址與IP協議號的組合有些相似,它代表一臺具體設備的TCP/IP協議棧的網絡層上的一個具體服務。而在一個ISO地址的SEL設置爲0x00時,這個地址就是一個NET地址,指明瞭某個節點網絡層自己的地址。
1-13字節的區域(可變長)。經常使用的包含:AFI和IDI部分。數據庫

ISIS的功能結構

像ISO模型同樣,之因此有一個分層的網絡體系結構:是爲了使每一層的功能都獨立與它下面的一層。好比OSI網絡層有兩個子層組成:1.子網獨立自稱(subnetwork independent sublayer):爲傳輸層提供了一致的和統一的網絡服務;爲了子網獨立子層的功能層面隱藏掉不一樣種類數據鏈路(子網)的特徵。2.子網依賴子層(Subnetwork dependent sublayer):則爲子網獨立子層的需求而去存取數據鏈路層提供的服務。網絡

ISIS Hello數據包每隔10s傳送一次,可經過isis hello-interval來改變。而後,ISIS在造成鄰接關係方面沒有OSPF那樣嚴格。
一旦鄰接關係創建,Hello Packet將擔任keepalive功能,每一臺路由器都在它的Hello數據包中發送一個抑制時間(hold time),用途通知宣告鄰居路由器無效以前,應該等待多長時間去偵聽下一個Hello數據包:isis hello-multiplier來改變。less

兩臺路由器一旦創建雙向通訊就認爲造成了鄰接關係,但直到數據庫完成同步才認爲造成了徹底的鄰接關係。而只要他們之間可以交換Hello數據包就認爲它們造成了鄰接關係。經過show clns is-neighbor來查看鄰居狀態。ide

Circuit ID,這是一個八位組字節的數字,路由器用它來惟一地標識ISIS接口。若是該接口是和一個廣播型多路訪問網絡相連的,那麼這個電路ID是和該網絡上的指定路由器的SysID相連的,並把這個徹底的數字稱爲LAN ID,咱們應該把電路ID稱爲僞節點ID(Pseudonode ID)工具

與OSPF不一樣,與廣播型多路訪問網絡相連的ISIS了路由器要與網絡上的全部鄰居創建鄰接關係,而不只僅是指定路由器。每一臺路由器將以組播方式發送它的LSP數據包給它的全部鄰居路由器,而且指定路由器使用一個稱爲序列號PDU(Sequence Number PDU,SNP)的數據包來確保LSP的泛洪是可靠的。ui

每一個接口都有L1的優先級和L2的優先級,範圍:0~127,默認是64,可經過isis priority來改變這個值,優先級爲0的僅表明優先級最低,並不表示不能參與於指定路由器的選擇。若是優先級同樣,那麼擁有最高的MAC地址的接口的路由器將成爲一臺指定路由器。編碼

LSP的更新過程

每一個LSP數據包都包含一個老化時間、一個序列號、一個校驗和。剩餘時間是從最大1200s(20min)減到最小,ISIS的MaxAge是1200s,而ISIS的刷新時間間隔是15min減去一個最大不超過25%的隨機抖動變量。若是剩餘時間爲0,那麼這個過時的LSP將還會在路由器的鏈路狀態數據庫中保存60s,這個時間成爲零老化生存時間(ZeroAgeLifetime)
MaxAge默認1200s,能夠經過:max-lsp-lifetime更改,刷新時間能夠經過lsp-refresh-interval設置。原來狀況下若是一臺路由器收到錯誤的LSP,他會將該LSP的生存時間設置爲0而後泛洪出去,不過這樣會增長LSP的流量,能夠經過ignore-lsp-errors來忽略這個行爲,目前則是直接丟棄錯誤的LSP。這點與OSPF不一樣,OSPF協議裏只有始發路由器才能清除這個LSA。
序列號:若是LSP的序列號增長到最大值,那麼ISIS必須失效21min(Maxagelifetime+Zeroagelifetime)。

ISIS協議使用序列號數據包(SNP)來了解LSP的接收狀況和維護鏈路狀態數據庫的同步狀況。在這裏有兩種類型的SNP:1.部分序列號報文(PSNP)2.徹底序列號報文(CSNP)。在點到點的子網上,路由器使用PSNP來明確地確認每個LSP數據包是否收到。
每當一臺路由器在一個點到點子網上發送一條LSP時,它會設置一個週期爲minimumLSPTransmissionInterval的計時器,路由器尚未收到這個LSP的PSNP(相似與ACK)確認數據包,那麼將會發送一個新的LS數據包。默認時間爲5s,能夠經過isis retransmit-interval來更改。

在廣播型子網上,指定路由器將會週期低以組播方式發送CSNP(DBD),用來描述鏈路狀態數據庫中每個LSP。週期爲10s,咱們能夠經過:isis csnp-interval來更改。同時其餘路由器發送PSNP(LSR)去請求最新的LSP,而後指定路由器組播返回LSP,而後其餘路由器收到後,返回PSNP(ACK)。

ISIS路由設置過載位(Overlaod,OL)。OL位用來指示可能不能再進行正確的路由決策了,由於它的鏈路狀態數據庫已經再也不完整,其餘路由器仍會轉發數據包到這臺過載路由器的直連網絡上,可是在這臺路由器發送清除OL位以前,其餘路由器不會再利用這臺路由器轉發通過它傳送的數據流了。所以設置了OL位能夠避免過載的路由器被用做一條路由的下一跳,所以這位又常稱做hipity(hippity-hop)。通常狀況下內存會平均分配給L1和L2的數據庫,路由器可以在其中一個內存過載時而保證其餘曾的內存處於正常的狀態。

 如今假設有一臺新增的路由器某個網絡上,而且IGP已經收斂但BGP尚未收斂。若是另外一臺路由器根據收斂的IGP路由確認這臺新增的路由是到達BGP下一跳的最優路徑,那麼他將把下一跳地址轉發的數據包轉發到這臺路由器上,可是,若是BGP尚未在新的路由器上完成收斂,那麼就就會造成路由黑洞。

咱們可使用set-overload-bit on-startup能夠指定一個秒數,用來講明子在ISIS啓動後須要設置OL位的時間。如若咱們想確保BGP在OL位被清除前完成BGP的收斂,可使用set-overload-bit on-startup wait-for-bgp,可是這有一個新的問題,若是BGP因爲某些緣由沒法收斂,那麼OL位永遠不會被清除掉,所以咱們的一般的作法仍是設置一個超時時間。

ISIS協議:
-缺省度量(Default)--這個每一臺ISIS路由器都必須支持和理解的度量
-時延度量(Delay)--這是一個可選的,反映一個子網的傳輸時延。
-代價度量(Expense)--這是一個可選項,反映一個子網的成本代價。
-差錯度量(Error)--這是一個可選項,反映一個子網的出錯的機率,相似於IGRP/EIGRP協議中的可靠度量。

在思科路由器上,全部的接口Cost的值都是10,經過isis metric進行修改,咱們也能夠僅針對L1或者L2分別進行修改。ISIS最大的度量值是1023。咱們能夠經過命令:metric-style wide設置擴展度量,具備32bit的度量。

ISIS的路由泄露

若是有多個L1/L2路由器,咱們但願會選擇達到最近的L1/L2路由器,而不是選擇所在區域裏離出口最近的那臺路由器。爲了達到這個目的,L1路由器必須擁有相應前綴的必要信息和它們在本地區域外的路徑代價;這也覺得着必須把這個前綴從L2區域通告到L1區域。ISIS稱之爲:「路由泄漏(路由泄漏(route leaking))」

提升SPF的效率
-遞增SPF(Incremental SPF,iSPF);
-部分路由計算(Paritial Route Calculations,PRC)

iSPF:iSPF只根據拓撲改變程度的大小而運行SPF計算。iSPF也可以限制SPF計算的範圍,也就是說,若是一個變化值影響拓撲的有限部分,那麼iSPF就能夠把SPF的從新計算限制在拓撲變化的範圍內。
PRC:prc-interval應用於部分路由計算。並非收到任意一個LSP都進行SPF計算,而是運行SPF計算採用了相似抑制LSP生成的指數補償算法。
這裏可能致使存在潛在的問題:路由環路:若是在L1區域內具備多臺L1/L2路由器--這極可能是讀者起初爲何從L2區域向L1區域泄漏路由的緣由,這可能會引發潛在的區域間路由選擇環路。然而因爲這套前綴信息是在L1LSP中擴散的,路由器沒辦法知道泄漏的路由是起L1區域外部的前綴。所以,這臺路由上將會經過一條L2的LSP將這條前綴信息通告回了L2區域。這樣,在L2路由器上就存在路由選擇環路,L2路由認爲到達前綴的路徑存在L1區域內。
而OSPF協議不存在這種問題,由於在OSPF協議中,對於骨幹區域外部的前綴是經過Type-3 LSA通告的。在一個非骨幹區域內的其餘ABR路由器將不會把從Type-3的LSA學到的前綴通告到區域0中。
在RFC2666中,經過在IP內部可達性TLV和IP外部可達性TLV中定義一個稱爲up/down(U/D)的位。來爲該問題提供一個解決方案。查看IP內部可達性TLV的格式(並記住IP外部可達性TLV的位格式也是相同的),請注意着八位組包含了一個I/E位和一個6位的缺省度量字段,它們開始一個保留的位置,這個保留的位置變成一個u/d位。再指定類型字段後,就能夠爲IP內部可達性TLV和IP外部可達性TLV定義該一位了。
當一臺L1/L2路由器從L2區域向L1區域通告這條路由時,它將設置這個U/D位。任何其餘的L1/L2路由器收到在L1 LSP裏設置了U/D位的前綴,都不會在L2 LSP中通告這個前綴。若是有一臺L1/L2路由器不能識別這個U/D位,那麼它將忽略這一位。所以。若是讀者正在使用L2到L1路由泄漏設計,那麼確保你全部的L1/L2路由器都能識別這個擴展特性。

經常使用的ISIS路由命令

查案拓撲表:show isis topology
查看鄰居關係:show isis neighbors 不過這個並不顯示鄰居接口優先級
查看鄰居關係:show clns is-neighbors 顯示接口優先級
查看hostname與SysID之間的映射關係:show isis hostname
手工設置過載位的命令位:set-overload-bit on-startup+時間
等待BGP收斂後清除OL位:set-overload-bit on-startup wait-for-bgp 不過推薦使用設定時間
配置路由泄漏:redistribute isis ip level-2 into level-1 distribute-list <100-199> //必須使用擴展acl。
重發布:redistribute potocol [process-id] metric [metric] match [internal | external]
或者:metric-type [value] level-1 level-2 level-1-2 route-map [map-name]
重發布靜態路由:redistgribute static [clns|ip] route-map [map-name]

ISIS 計時器

10s  IIH timer for non-DIS ISs on a LAN
20s  IIH holdtime for non-DIS ISs on a LAN
3.3s   IIH timer for the DIS on a LAN
10s   IIH holdtime for DIS ISs on a LAN
10s   IIH timer for p2p links
30s   IIH  holdtime on p2p links
33ms   Minimum interval between transmitting two LSPs
5s    LSP retransmission timer while flooding
100ms  Delay between any retranmitted LSPs
10s   Minimum time between 2 SPF runs
5s   Minimum time between regenerating one LSP
60s   Time to keep an expired LSP in the LSDB during pruge
15min   Periodic regeneration of LSP
20min   Maximum lifetime of an LSP

ISIS協議的優勢

1.能支持多種網絡協議;
2.區域能平滑地平移/分割/合併/流量不中斷;
3.鄰居之間和Hello和Dead等間隔不必定必須同樣,不像OSPF要求那麼嚴格,配置相對簡單
4.採用TLV方式編碼,有較好的擴展性

其餘

ISIS默認的接口metric爲10,咱們能夠經過ISIS metric進行更改(0-63)。默認的狀況下會更改全部區域的metric,咱們能夠加上level-1或者level-2來僅更改相應的metric。
路由彙總,在L1路由進入L2的時候進入路由彙總個。缺省彙總路由命令是:summary-address **** **** level-1-2
還有一點此時會產生一個指向空接口的路由,以防黑洞路由的問題。
SPF算法過程:
-也叫Duhjstra算法(Shorttest Path Firs)
-目的在於計算達到網絡拓撲中其餘路由器的最短路徑
-經過計算獲得的最短路徑樹SPT咱們能夠創建路由表(RIB)
-經過頂點集和邊線集的有向圖的方法表示-把圖命名爲G,G=(N,L)N爲頂點,L爲邊線集。
SPF算法建立並維護三張表
1.Unknown list
開始全部節點都屬於這個列表(還沒考慮頂點集)
2.Tentative list(Candidate list):正在計算的列表。
當前考慮的全部節點屬於這個列表(正在考慮的頂點集)即包含去往目的地的全部有序的路徑
3.Path List(Konwn list)
已經計算出最短路徑的節點屬於這個列表(計算好的頂點集)即去往目的地的最佳路徑
SPF算法執行的過程:
1.從Tentative List的全部路由器中找出離本身(跟)最近的節點,並將其從tentative list轉移至path list
2.發現此節點通告的全部前綴並安裝到RIB中
3.發現此節點的全部鄰居,並將這些鄰居移動到tentative list中。
在ISIS中,IP前綴最短路徑數撒謊個的子葉。//這點與OSPF最大的不一樣點。
不使用IP前綴來計算和創建SPT。
使用CLNS SysID來標記路由器。
當Tentative list表爲空的時候,全部SPF計算結束

比較OSPF與ISIS協議的不一樣點
1.ISIS協議直接在鏈路層上使用,報文直接封裝在而二層鏈路層報文中,支持IP,OSI CLNP多種協議,而OSPF封裝在IP內,只支持IP協議。
2.ISIS的LSP生存時間是20min往下計算到0來清除超時的LSP,而OSPF則是從0增大到60min
3.ISIS協議整個路由只能所有屬於一個區域,路由器的LSDB按Level1來維護,而OSPF按接口來,每臺路由器能夠屬於多個區域,每一個區域維護一個LSDB數據庫。
4.對於骨幹區域的類型定義不一樣:OSPF經過特殊的area0區域來定義,而ISIS經過連續的L2來組成骨幹區域
5.ISIS的DIS選舉比較簡單,而且是preempt,優先級最高的爲DIS。優先級相同則是經過最大的mac地址
6.ISIS僅支持P2P和Broadcast;OSPF則支持5中網絡類型(包括p2p,p2mp,broadcast,NBMA,Virtual Links)

在廣播網上數據庫的交換
1.DIS週期性的發送CSNP
2.IS收到一個LSP的行爲
3.中間系統接收到報文,在數據中搜索對應的記錄。若就存在,則將其加入數據庫,並廣播新得內容。
不然:若數據庫中的序列號小於報文中的序列號,就替換爲新報文,並廣播數據庫內容。
不然:若數據庫中的序列號大於報文中的序列號,就向入端口發送一個包含本地數據庫的新報文。
不然:若連個序列號相等,則不作任何事情。

在p2p鏈路上:
P2P鏈路上數據庫的交換
1.若是收到LSP比已有的序列號大,則將這個新的LSP存入本身的LSDB中,再經過一個PSNP報文來確認收到此LSP,最後將這個新LSP再接收再發送到全部其餘鄰居。
2.若是收到的LSP和已有的具體相同的序列號,則直接經過一個PSNP報文確收到此LSP
3.若是收到的LSP比已有的序列號更小,則經過一個PSNP報文確認此LSP,再發送給對方咱們版本的LSP,而後等等待對方給我一個PSNP報文做爲應答確認。
在點到點鏈路上當鄰居關係up的一瞬間會發送一次CSNP,而後就不在發送了。
這個是在P2P網絡中若是對方收到LSP後5s以內沒有對方對此LSP的PSNP,則本端會在5s以後進行重傳。
咱們能夠經過抓取ISIS鄰接關係創建的過程,包括MA和P2P網絡類型。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息