1. 程式人生 > 實用技巧 >IS-IS協議的內容

IS-IS協議的內容

IS-IS協議

歷史起源

IS-IS(Intermediate System to Intermediate System)最初是國際標準化組織ISO(the International Organization for Standardization)為它的無連線網路協議CLNP(ConnectionLess Network Protocol)設計的一種動態路由協議
為了提供對IP的路由支援,IETF在RFC1195中對IS-IS進行了擴充和修改,使它能夠同時應用在TCP/IP和OSI環境中,稱為整合化IS-IS(Integrated IS-IS或Dual IS-IS 資料中所指的IS-IS,如不加特殊說明,均指整合IS-IS)

IS-IS屬於內部閘道器協議,用於自治系統內部。IS-IS是一種鏈路狀態協議,使用SPF演算法(Shortest Path First)進行路由計算
由於IS-IS的簡便性及擴充套件性強的特點,目前在大型ISP的網路中被廣泛地部署
IS-IS協議報文在資料鏈路層傳輸,但是屬於網路層協議

路由計算過程

① 鄰居關係建立
鄰居關係建立主要是通過HELLO包互動並協商各種引數
② 鏈路資訊交換
與OSPF不同,ISIS互動鏈路狀態的基本載體不是LSA(link state advertisement),而是LSP(link state PDU);互動的過程沒有OSPF協議那樣經歷了多個階段,主要是通過CSNP報文和PSNP報文兩種協議報文來同步,請求以及確認鏈路狀態資訊(承載的是鏈路狀態資訊摘要),而鏈路狀態資訊的詳細拓撲和路由資訊是由LSP報文傳遞

③ 路由計算
SPF計算和OSPF基本一樣的,但ISIS演算法分離了拓撲結構和IP網段,加快了網路收斂速度(ISIS協議的優化)

地址結構

網路服務訪問點NSAP(Network Service Access Point)是OSI協議中用於定位資源的地址。NSAP的地址結構它由IDP(Initial Domain Part)和DSP(Domain Specific Part)組成。IDP和DSP的長度都是可變的,NSAP總長最多是20個位元組,最少8個位元組 習慣上配置為10B 由16進位制進行表示
① IDP相當於IP地址中的主網路號。它是由ISO規定,並由AFI(Authority and Format Identifier)與IDI(Initial Domain Identifier)。AFI表示地址分配機構和地址格式,IDI用來標識域

② DSP相當於IP地址中的子網號和主機地址。它由High Order DSP、System ID和SEL三個部分組成。High Order DSP用來分割區域,System ID用來區分主機,SEL用來指示服務型別
③ AFI(1位元組) IDI(2位元組) HODSO(0-10位元組) SID(6位元組) NSEL(1位元組)

Area ID(Area address)

① 既能夠標識路由域,也能夠標識路由域中的區域。因此,它們一起被稱為區域地址,相當於OSPF中的區域編號(其中49代表路由域,0001表示區域)
② 一般情況下,一個路由器只需要配置一個區域地址,且同一區域中所有節點的區域地址都要相同。為了支援區域的平滑合併、分割及轉換,在裝置的實現中,一個IS-IS程序下最多可配置3個區域地址必須保證他們的system id都相同

System ID

用來在區域內唯一標識主機或路由器。在裝置的實現中,它的長度固定為48bit(6位元組)
在實際應用中,一般使用Router ID與System ID進行對應。假設一臺路由器使用介面Loopback0的IP地址168.10.1.1作為Router ID,則它在IS-IS中使用的System ID可通過如下方法轉換得到
① 將IP地址168.10.1.1的每個十進位制數都擴充套件為3位,不足3位的在前面補0,得到168.010.001.001
② 將擴充套件後的地址分為3部分,每部分由4位數字組成,得到1680.1000.1001。重新組合的1680.1000.1001就是System ID
③ 實際System ID的指定可以有不同的方法,但要保證能夠唯一標識主機或路由器

SEL

作用類似IP中的協議識別符號,不同的傳輸協議對應不同的SEL。在IP上SEL均為00
NET地址,這個地址服務於IP環境,其中SEL=00

NET地址

網路實體名稱NET(Network Entity Title)指的是裝置本身的網路層資訊,可以看作是一類特殊的NSAP(SEL=00)。NET的長度與NSAP的相同,最多為20個位元組,最少為8個位元組。在路由器上配置IS-IS時,只需要考慮NET即可,NSAP可不必去關注

路由器分類

在OSPF協議裡面也有一些比較特殊的路由器:如ABR路由器、ASBR路由器、區域內部路由器、骨幹路由器等 代表這該裝置可以執行不同的功能和角色
在IS-IS協議裡面一共只有三種不同角色的路由器:level-1路由器、level-2路由器、level-1-2路由器 預設情況下 華為裝置預設都是level-1-2角色
① level-1路由器只具有level-1的功能
② level-2路由器只具有level-2的功能
③ level-1-2路由器只具有level-1和level-2的功能

#
isis 100
 is-level level-1       修改為level-1路由器
#

Level-1路由器

Level-1只能與屬於同一區域的Level-1和Level-1-2路由器形成鄰居關係,只負責維護Level-1的鏈路狀態資料庫,該LSDB包含本區域內的路由資訊,到本區域外的報文轉發給最近的Level-1-2路由器

 注意點:
① 能夠和level-1建立起關係的只能在同一個區域裡面的裝置

Level-2路由器

Level-2路由器負責區域間的路由,它可以與相同或者不同區域的Level-2路由器或者不同區域的Level-1-2路由器形成鄰居關係。Level-2路由器維護一個Level-2的LSDB,該LSDB包含區域間的路由資訊

 注意點:
② level-2路由器可以和同一個區域的level-2路由器建立起關係
③ level-2路由器可以和不同一個區域的level-2路由器建立起關係
④ level-2路由器可以和同一個區域的level-1-2路由器建立起關係
⑤ level-2路由器可以和不同一個區域的level-1-2路由器建立起關係

Level-1-2路由器

Level-1-2路由器維護兩個LSDB,Level-1的LSDB用於區域內路由,Level-2的LSDB用於區域間路由 Level-1-2路由器可以與同一區域的Level-1形成Level-1鄰居關係,也可以與其他區域的Level-2和Level-1-2路由器形成Level-2的鄰居關係
 注意點:
⑥ level-1-2路由器可以和同一個區域的level-1路由器建立起關係
⑦ level-1-2路由器可以和同一個區域的level-2路由器建立起關係
⑧ level-1-2路由器可以和不同一個區域的level-2路由器建立起關係
⑨ level-1-2路由器可以和同一個區域的level-1-2路由器建立兩個關係
⑩ level-1-2路由器可以和不同一個區域的level-1-2路由器建立起level-2關係

小結如下

① 不同區域間,只能建立Level-2的鄰接關係
② Level-2路由器可以與Level-2路由器建立鄰接關係
③ Level-1-2路由器可以與Level-2路由器建立鄰接關係
④ Level-1-2路由器可以與Level-1-2路由器建立鄰接關係

IS-IS的拓撲結構

IS-IS協議的區域邊界在整個Router,OSPF協議的區域邊界在Router的介面
為了支援大規模的路由網路,IS-IS在自治系統內採用骨幹區域與非骨幹區域兩級的分層結構
一般來說,將Level-1路由器部署在非骨幹區域,Level-2路由器和Level-1-2路由器部署在骨幹區域。每一個非骨幹區域都通過Level-1-2路由器與骨幹區域相連
下圖是一個執行IS-IS協議的網路,它與OSPF的多區域網路拓撲結構非常相似。整個骨幹區域不僅包括Area1中的所有路由器,還包括其它區域的Level-1-2路由器


下圖是IS-IS的另外一種拓撲結構圖。在這個拓撲中,Level-2級別的路由器沒有在同一個區域,而是分別屬於不同的區域。此時所有物理連續的Level-1-2和Level-2路由器就構成了IS-IS的骨幹區域

 通過以上兩種拓撲結構圖可以體現IS-IS與OSPF的不同點:
① 在IS-IS中,每個路由器都只屬於一個區域;而在OSPF中,一個路由器的不同介面可以屬於不同的區域
② 在IS-IS中,單個區域沒有骨幹與非骨幹區域的概念;而在OSPF中,Area0被定義為骨幹區域
③ 在IS-IS中,Level-1和Level-2級別的路由都採用SPF演算法,分別生成最短路徑樹SPT(Shortest Path Tree);而在OSPF中,只有在同一個區域內才使用SPF演算法,區域之間的路由需要通過骨幹區域來轉發

區域內演算法

 SPF計算過程
① 單區域LSDB同步完成
② 生成全網拓撲結構圖
③ 以本節點為根生成最短路徑樹
④ 預設跨越每個節點開銷一樣

 ISIS路由計算的開銷方式
IS-IS在計算路由時 是不基於鏈路計算cost值的 沒經過一跳 cost數值都加上10
① Narrow模式(裝置預設模式開銷都是10,手工配置介面開銷取值範圍為1-63)
② Wide模式(裝置預設模式開銷都是10,手工配置介面開銷取值範圍是1-16777215)
程序下加入auto-cost enable命令,Narrow模式和Wide模式都會參考介面頻寬大小計算開銷值,只是參考準則有少許差異 預設情況 模式為Narrow模式
③ 使能IS-IS自動計算介面的開銷

執行命令isis [ process-id ],進入IS-IS檢視
執行命令bandwidth-reference value,配置計算頻寬的參考值 預設情況下,頻寬參考值為100,單位是Mbit/s
執行命令auto-cost enable [ compatible ],使能自動計算介面的開銷值

① 只有當開銷型別為wide或wide-compatible時,使用命令bandwidth-reference配置的頻寬參考值才是有效的,此時各介面的開銷值=(bandwidth-reference/介面頻寬值)×10
② 當開銷型別為narrow、narrow-compatible或compatible時,各個介面的開銷值根據如下表來確定

區域間路由

 區域49.0001訪問區域49.0002
① L1/2路由器RTA產生ATT置位為1的LSP
② L1路由器收到ATT為1的LSP會產生下一跳指向L1/2路由器的預設路由
 區域49.0002訪問區域49.0001
① L1/2路由器RTA會把區域49.0001的明細路由以葉子節點方式掛載在L2級別的LSP上面並處在Level-2的LSDB中
② L2路由器通過自己SPF計算得出訪問Area49.0001的明細路由

 小結如下
Level-1路由器的路由特點:
① 只擁有Level-1的鏈路狀態資料庫
② 其鏈路狀態資料庫中只有本區域路由器LSP
③ 其路由表裡沒有其他區域的路由資訊
④ 其路由表裡都有一條預設路由,下一條是指向到Level-1-2路由器
Level-2路由器的路由特點
① Level-2路由器只有Level-2的鏈路狀態資料庫
② 其LSDB中有骨幹區域路由器的LSP,但是沒有Level-1路由器產生的LSP
③ 路由表裡面有整個網路的路由資訊
Level-1-2路由器的路由特點:
① Level-1-2路由器同時擁有Level-2和Level-1的鏈路狀態資料庫
② Level-1資料庫包含本區域的LSP,Level-2資料庫包含骨幹區域LSP
③ 在自己產生的Level-1的LSP中設定了ATT位元位為1
④ 路由表裡面有整個網路的路由資訊

IS-IS支援的網路型別

① 點對點網路型別(如PPP、HDLC等)
② 廣播多路訪問網路型別(Ethernet等)
 注意點
① 對於NBMA(Non-Broadcast Multi-Access)網路,如ATM,需對其配置子介面,並注意子介面型別應配置為P2P
② IS-IS不能在點到多點鏈路P2MP(Point to MultiPoint)上執行

IS-IS的報文型別

 IS-IS報文有以下幾種型別:HELLO PDU(Protocol Data Unit)、LSP和SNP
① Hello PDU
Hello報文用於建立和維持鄰居關係,也稱為IIH(IS-to-IS Hello PDUs)類似於OSPF的Hello報文
② LSP
鏈路狀態報文LSP(Link State PDUs)用於交換鏈路狀態資訊 類似於OSPF中的LSA
③ SNP
序列號報文SNP(Sequence Number PDUs)通過描述全部或部分資料庫中的LSP來同步各LSDB(Link-State DataBase),從而維護LSDB的完整與同步
CSNP(Complete Sequence Number PDU)類似於OSPF的DD報文傳遞的是LSDB裡所有鏈路資訊摘要
PSNP(Partial Sequence Number PDU)類似於OSPF的LSR或LSAck報文用於請求和確認部分鏈路資訊

鄰居hello報文

 HELLO報文的作用是鄰居發現,協商引數並建立鄰居關係,後期充當保活報文
 IS-IS建立鄰居關係和OSPF一樣,通過hello報文的互動來完成。但是會根據場景分為三種類型的hello報文
① 廣播網中的Level-1 IS-IS使用Level-1 LAN IIH(Level-1 LAN IS-IS Hello),目的組播MAC為:0180-c200-0014
② 廣播網中的Level-2 IS-IS使用Level-2 LAN IIH(Level-2 LAN IS-IS Hello),目的組播MAC為:0180-c200-0015
③ 非廣播網路中則使用P2P IIH(point to point IS-IS Hello)
 Hello報文的型別
a) Level-1的hello報文
b) Level-2的hello報文
c) P2P的hello報文

鄰居關係建立

P2P鏈路

 在P2P鏈路上,分為兩次握手機制(沒有鄰居列表)和三次握手機制
① 兩次握手只要路由器收到對端發來的Hello報文,就單方面宣佈鄰居為up狀態,建立鄰居關係,不過容易存在單通風險
② 通過三次傳送P2P的IS-IS Hello PDU最終建立起鄰居關係,與廣播鏈路鄰居關係的建立情況相同

乙太網鏈路

 在廣播鏈路上,使用LAN IIH報文執行三次握手建立鄰居關係
① 當收到鄰居傳送的合法Hello PDU報文裡面沒有自己的system ID的時候,狀態機進入initialized
② 只有收到鄰居發過來的Hello PDU有自己的system ID才會up,排除了鏈路單通的風險
③ 廣播網路中鄰居up後會選舉DIS(虛節點),DIS的功能類似OSPF的DR(指定路由器)

DIS的介紹

DIS是指指定中間系統(Designated IS)DIS的功能類似OSPF的DR(指定路由器) 偽節點是指在廣播網路中由DIS建立的虛擬路由器
在廣播網路,需要選舉DIS,所以在鄰居關係建立後,路由器會等待兩個Hello報文間隔再進行DIS的選舉
① Hello報文中包含Priority欄位,Priority值最大的將被選舉為該廣播網的DIS
② 若優先順序相同,介面MAC地址較大的被選舉為DIS
 注意:
① IS-IS中DIS傳送Hello時間間隔預設為10/3秒
② 而其他非DIS路由器傳送Hello間隔為10秒

DIS的作用

① 進行SPF計算時,都把它當成虛節點,簡化MA網路的邏輯拓撲(相同點)
② 都是為了減少LSP/LSA的泛洪(相同點)
③ 在ISIS中還可以由DIS傳送CSNP來同步鏈路的LSDB(ISIS擴充套件作用)

DIS和DR的區別

① 選舉時優選級的比較,DIS的優先順序為0也可以參與選舉。OSPF中優先順序為0不參與選舉DR
② 選舉的過程需要一定的時間,OSPF選舉DR/BDR需要waiting time達40秒,過程也較為複雜,而ISIS選舉DIS等待兩個Hello報文間隔就可以,簡單快捷
③ 選舉結果ISIS只有一個DIS,但是OSPF除了有DR,還有一個BDR用做備份
④ 選舉結束後,後期有新的Router加入到鏈路進來,如果優先順序比DIS高是可搶佔的,但是DR是不可搶佔的
⑤ 選舉完成後,ISIS網路鏈路內所有的路由器之間都建立的是鄰接關係。OSPF中DRothers只與DR/BDR形成full鄰接關係, DRothers之間只有2-way的關係

LSP報文

LSP PDU(Link State Protocol PDU)LSP類似於OSPF的LSA,承載的是鏈路狀態資訊,包含了拓撲結構和網路號
鏈路狀態報文LSP(Link State PDUs)用於交換鏈路狀態資訊。LSP分為兩種:Level-1 LSP和Level-2 LSP
① Level-1 LSP由Level-1路由器傳送
② Level-2 LSP由Level-2路由器傳送
③ Level-1-2路由器則可傳送以上兩種LSP
LSP的重新整理間隔為15分鐘 老化時間為20分鐘 但是一條LSP的老化除了要等待20分鐘外,還要等待60秒的零老化時延 LSP重傳時間為5秒
LSP報文中主要欄位的解釋如下
 LSP報文中包含了兩個重要欄位是ATT欄位、IS-Type欄位
① ATT欄位:當Level-1-2 IS-IS在Level-1區域內傳送Level-1 LSP時,如果Level-1 LSP中設定了ATT位,則表示該區域中的Level-1 IS-IS可以通過此Level-1-2 IS-IS通往外部區域S-Type用來指明生成此LSP的IS-IS型別是Level-1還是Level-2 IS-IS
② IS Type欄位:用來指明生成此LSP的IS-IS型別是Level-1還是Level-2 IS-IS(01表示Level-1,11表示Level-2)
協議報文都分為Level-1和Level-2兩種,在MA網路中所有協議報文的目的MAC都是組播地址 實節點LSP偽節點LSP(只在廣播鏈路存在)
① Level-1地址為:0180-C200-0014
② Level-2地址為:0180-C200-0015

SNP報文

序列號報文SNP(Sequence Number PDUs)通過描述全部或部分資料庫中的LSP來同步各LSDB(Link-State DataBase),從而維護LSDB的完整與同步
SNP包括全序列號報文CSNP(Complete SNP)和部分序列號報文PSNP(Partial SNP),進一步又可分為Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP
 注意
① CSNP類似於OSPF的DD報文傳遞的是LSDB裡所有鏈路資訊摘要
② PSNP類似於OSPF的LSR或LSAck報文用於請求和確認部分鏈路資訊

P2P網路LSDB同步過程

① 建立鄰居關係之後,RTA與RTB會先發送CSNP給對端裝置。如果對端的LSDB與CSNP沒有同步,則傳送PSNP請求索取相應的LSP
② 假定RTB向RTA索取相應的LSP,此時向RTA傳送PSNP。RTA傳送RTB請求的LSP的同時啟動LSP重傳定時器,並等待RTB傳送PSNP作為收到LSP的確認
③ 如果在介面LSP重傳定時器超時後,RTA還沒有收到RTB傳送的PSNP報文作為應答,則重新發送該LSP直至收到RTB的PSNP報文作為確認
 P2P網路CSNP報文只發送一次,鄰居建立後立即傳送

MA網路中DIS的LSDB同步互動過程

① 假設新加入的路由器RTC已經與RTB(DIS)和RTA建立了鄰居關係
② 建立鄰居關係之後,RTC將自己的LSP發往組播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。這樣網路上所有的鄰居都將收到該LSP
③ 該網段中的DIS會把收到RTC的LSP加入到LSDB中,並等待CSNP報文定時器超時(DIS每隔10秒傳送CSNP報文)併發送CSNP報文,進行該網路內的LSDB同步
④ RTC收到DIS發來的CSNP報文,對比自己的LSDB資料庫,然後向DIS傳送PSNP報文請求自己沒有的LSP(如RTA和RTB的LSP就沒有)
⑤ RTB作為DIS收到該PSNP報文請求後向RTC傳送對應的LSP進行LSDB的同步
 MA網路CSNP報文只由DIS組播發送,時間預設為10秒

鏈路狀態資訊的載體

IS-IS報文中的變長欄位部分是多個TLV(Type-Length-Value)三元組 TLV也稱為CLV(Code-Length-Value)
TLV的含義是:型別(TYPE),長度(LENGTH),值(VALUE)

使用TLV結構構建報文的好處是靈活性和擴充套件性好。採用TLV使得報文的整體結構固定,增加新特點只需要增加新TLV即可。不需要改變整個報文的整體結構
網路拓撲結構和路由資訊用TLV結構表現使得報文的靈活性和擴充套件性得到了極大的發揮
不同PDU型別所包含的TLV是不同的

路由***

通常情況下,Level-1區域內的路由通過Level-1路由器進行管理。所有的Level-2和Level-1-2路由器構成一個連續的骨幹區域。Level-1區域必須且只能與骨幹區域相連,不同的Level-1區域之間並不相連
Level-1-2路由器將學習到的Level-1路由資訊裝進Level-2 LSP,再泛洪LSP給其他Level-2和Level-1-2路由器。因此,Level-1-2和Level-2路由器知道整個IS-IS路由域的路由資訊。但是,為了有效減小路由表的規模,在預設情況下,Level-1-2路由器並不將自己知道的其他Level-1區域以及骨幹區域的路由資訊通報給它所在的Level-1區域。這樣,Level-1路由器將不瞭解本區域以外的路由資訊,可能導致與本區域之外的目的地址通訊時無法選擇最佳的路由
為解決上述問題,IS-IS提供了路由***功能。通過在Level-1-2路由器上定義ACL(Access Control List)、路由策略、Tag標記等方式,將符合條件的路由篩選出來,實現將其他Level-1區域和骨幹區域的部分路由資訊通報給自己所在的Level-1區域

RouterA傳送報文給RouterF,選擇的最佳路徑應該是RouterA->RouterB->RouterD->RouterE->RouterF因為這條鏈路上的cost值為40
但在RouterA上檢視傳送到RouterF的報文選擇的路徑是RouterA->RouterC->RouterE->RouterF,其cost值為70,不是RouterA到RouterF的最優路由
RouterA作為Level-1路由器並不知道本區域外部的路由,那麼發往區域外的報文都會選擇由最近的Level-1-2路由器產生的預設路由傳送出去,所以會出現RouterA選擇次最優路由轉發報文的情況
如果分別在Level-1-2路由器RouterC和RouterD上使能路由***功能,Aera10中的Level-1路由器就會擁有經這兩個Level-1-2路由器通向區域外的路由資訊。經過路由計算,選擇的轉發路徑為RouterA->RouterB->RouterD->RouterE->RouterF,即RouterA到RouterF的最優路由

ISIS和OSPF的區別

IS-IS與OSPF差異性

 網路型別和開銷方式
IS-IS協議只支援兩種網路型別,且所有頻寬預設開銷值都是一樣的,OSPF協議支援四種網路型別,且會根據不同的頻寬設定相應的開銷值,對幀中繼,按需鏈路等網路型別有很好的支援
 區域型別
IS-IS協議分L1/L2區域,L2區域是骨幹區域有全部明細路由。L1去往L2只有預設路由。OSPF協議分骨幹區域,普通區域,特殊區域。普通區域和特殊區域跨區域訪問需要經過骨幹區域
 報文型別
IS-IS協議路由承載報文型別只有LSP報文且裡面路由資訊是不區分內部與外部的,簡單高效,無需遞迴計算。OSPF協議路由承載報文LSA型別多樣,有1/2/3/4/5/7類等。路由級別等級森嚴,且需要遞迴計算,適合精細化排程計算
 路由演算法
ISIS協議區域內某個節點上的網段發生變化時,觸發的是PRC演算法,收斂比較快,計算路由的報文開銷也比較小。OSPF協議由於網路地址參與了拓撲的構建,在區域內當網段地址改變觸發的是i-spf演算法,相對來說過程繁瑣複雜些
 擴充套件性
ISIS協議任何路由資訊都使用TLV傳遞,結構簡單,易於擴充套件,如對IPv6的支援只增加2個TLV就解決了。且ISIS本身對IPX等協議是支援的。OSPF協議本身是為IP特定開發的,支援IPv4和IPv6的OSPF協議是兩個獨立的版本(OSPFv2和OSPFv3)

術語對照表