動態路由協議按照算法的不同可以分爲兩類:一類是基於鏈路狀態(典型代表是OSPF、IS-IS),還有一類是距離矢量(典型代表是rip、bgp),和OSPF一樣,IS-IS也是一種基於鏈路狀態並使用最短路徑優先算法進行路由計算的一種IGP協議。
本次博客主要是介紹ISIS協議原理以及配置。
歷史起源
IS-IS(中間系統到中間系統,Intermediate system to intermediate system,意爲“中間系統到中間系統”)
IS-IS最初是針對OSI七層模型去設計的路由協議,是國際化標準組織ISO爲它的無連接網絡協議CLNP(這裏的CLNP可以類比TCP/IP五層協議棧裏面的ip網絡)設計的一種動態路由協議。但是由於CLNP網絡現在已經不用了,爲了能夠讓ISIS提供對IP的路由支持,IETF(國際互聯網工程任務組)在RFC1195中對IS-IS進行了擴充和修改,使它能夠同時應用在TCP/IP和OSI環境中,修訂後的IS-IS協議被稱爲集成化的IS-IS。由於IS-IS的簡便性及擴展性強的特點,目前在大型ISP(互聯網服務提供商)的網絡中被廣泛地部署,ISIS工作在數據鏈路層,不僅支持CLNP網絡,還支持IP網絡,OSPF工作在IP層,且支持IP網絡。
應用場景
網絡可以根據不同的客戶需求分成園區網和骨幹網絡,這兩種網絡的特點,以及採用的協議類型,如下圖所示,
路由計算過程
ISIS路由計算的過程:先建立鄰居關係,建立起鄰居關係之後,進行鏈路信息交換,接着開始計算路由。
鄰居關係建立:鄰居關係建立主要是通過HELLO包交互並協商各種參數,包括電路類型(level-1/level-2),Hold time,網絡類型,支持協議,區域號,系統ID,PDU長度,接口IP等。
鏈路信息交換: 與OSPF不同,ISIS交互鏈路狀態的基本載體不是LSA(link state advertisement),而是LSP(link state PDU);交互的過程沒有OSPF協議那樣經歷了多個階段,主要是通過CSNP和PSNP兩種協議報文來同步,請求以及確認鏈路狀態信息(承載的是鏈路狀態信息摘要),而鏈路狀態信息的詳細拓撲和路由信息是由LSP報文傳遞。
路由計算:SPF計算和OSPF基本一樣的,但ISIS算法分離了拓撲結構和IP網段,加快了網絡收斂速度。
地址結構
先根據比較熟悉的OSPF來類比ISIS 裏面會用到的標識符,如下表所示,
TCP/IP協議棧 |
IP協議 |
IP地址 |
OSPF |
Area ID+Router ID |
OSI系統 |
CLNP協議 |
NSAP地址 |
IS-IS |
NET標識符 |
在OSI裏面的NSAP地址可以類比IP地址,作用是差不多的,在OSPF協議裏面,在配置的時候,需要劃分區域,分配路由器ID,但是在ISIS裏面,可以通過一個NET標識符來發揮劃分區域和配置路由器id的作用。
首先來看一下NSAP地址的結構,如下圖所示,
路由器分類
HELLO報文
IS-IS支持的網絡類型:
點對點網絡類型(P2P)。
廣播多路訪問網絡類型(Broadcast Multiple Access)。
在幀中繼等特殊環境下,可以通過創建子接口支持P2P的網絡類型。
鄰接關係建立
在點到點鏈路上,鄰接關係的建立分爲兩次握手和三次握手,ISO10589使用兩次握手,RFC3373定義了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與DR的類比
在運行ISIS協議的網絡裏,在中間系統(路由器)裏競選出一個DIS(指定中間系統)的角色,和在運行OSPF協議的網絡裏會競選出來的DR有些類似,在廣播網絡中,DIS會創建一個虛擬路由器,被稱之爲僞節點,如下圖所示,
DIS的特點:在廣播網絡,需要選舉DIS,所以在鄰居關係建立後,路由器會等待兩個Hello報文間隔再進行DIS的選舉。Hello報文中包含Priority 字段,Priority值最大的將被選舉爲該廣播網的DIS。若優先級相同,接口MAC地址較大的被選舉爲DIS。IS-IS中DIS發送Hello時間間隔默認爲10/3秒,而其他非DIS路由器發送Hello間隔爲10秒。
DIS與DR的類比:選舉時優選級的比較,DIS的優先級爲0也可以參與選舉。OSPF中優先級爲0不參與選舉DR。選舉的過程需要一定的時間,OSPF選舉DR/BDR需要waiting time達40秒,過程也較爲複雜,而ISIS選舉DIS等待兩個Hello報文間隔就可以,簡單快捷,DR和DIS的類比如下表所示。
類比點 |
ISIS-DIS |
OSPF-DR |
選舉優先級 |
所有優先級都參與選舉 |
0優先級不參與選舉 |
選舉等待時間 |
2個Hello報文間隔 |
40s |
備份 |
無 |
有(BDR) |
鄰接關係 |
所有路由器互相都是鄰接關係 |
DRother之間是2-way關係 |
搶佔性 |
會搶佔 |
不會搶佔 |
作用 |
週期發送CSNP,保障MA網絡LSDB同步 |
主要爲了減少LSA泛洪 |
在ISIS裏面用來承載鏈路狀態信息的是LSP(有點類似OSPF裏面LSA的作用),裏面包含了拓撲結構和網絡號。其中,Level-1 LSP由Level-1 路由器傳送;Level-2 LSP由Level-2 路由器傳送;Level-1-2 路由器則可傳送以上兩種LSP。
LSP 報文中包含了兩個重要字段是ATT字段、IS-Type字段。其中ATT字段用於標識該路由是L1/L2路由器發送的,IS-Type用來指明生成此LSP的IS-IS類型是Level-1還是Level-2 IS-IS。LSP的刷新間隔爲15分鐘;老化時間爲20分鐘。但是一條LSP的老化除了要等待20分鐘外,還要等待60秒的零老化時延;LSP重傳時間爲5秒。
實節點LSP
僞節點LSP(只在廣播鏈路存在)
除了LSP用來承載鏈路狀態信息以外,還有SNP PDU——用於維護LSDB 的完整與同步,且爲摘要信息。
SNP PDU(Sequence Number PDU):
CSNP(Complete Sequence Number PDU)包括LSDB中所有LSP的摘要信息,從而可以在相鄰路由器間保持LSDB的同步。
PSNP(Partial Sequence Number PDU)包含部分LSDB中的LSP摘要信息,能夠對LSP進行請求和確認。
CSNP 類似於OSPF的DD報文,傳遞的是LSDB裏所有鏈路信息摘要。PSNP類似於OSPF的LSR或LSAck報文用於請求和確認部分鏈路信息.
注意:協議報文都分爲Level-1和Level-2兩種,在MA網絡中所有協議報文的目的MAC都是組地址:
Level-1地址爲:0180-C200-0014
Level-2地址爲:0180-C200-0015
鏈路狀態信息的交互
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將自己的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秒。
路由算法
在OSPF中,每個鏈路只屬於一個區域;而在IS-IS中,每個鏈路可以屬於不同的區域;在IS-IS中,單個區域沒有物理的骨幹與非骨幹區域的概念;而在OSPF中,Area0被定義爲骨幹區域;在IS-IS中,Level-1和Level-2級別的路由器分別採用SPF算法,分別生成最短路徑樹SPT;在OSPF中,只有在同一個區域內才使用SPF算法,區域之間的路由需要通過骨幹區域來轉發。
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。
路由表裏面有整個網絡的路由信息。
如上圖所示,Level 1路由器和Level 1-2路由器處於同一個area49.0001區域,level 2路由器處在 area 49.0002,很明顯不在同一個區域裏,但是level 1-2路由器和level 2路由器共同組成了骨幹區域。
當區域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的明細路由
配置:
實驗要求:
如圖所示,客戶網絡所有路由器路由協議要求啓用IS-IS,使全網路由可達。全部IS-IS進程號統一爲100,其中AR1在Area49.0001區域爲DIS,AR4與AR5之間要求採用P2P網絡類型,AR5引入直連鏈路192.168.X.X,要求AR1訪問Area49.0002走最優路徑。根據上述描述,進行正確配置,使網絡路由達到客戶需求。
實驗步驟:
1.在各個路由器上配置ISIS 100,並配置好規定的NET地址編號,
2.在接口下使能isis 100
3.修改鏈路類型
4.更改接口開銷值,進行最優選路
5.AR1的鏈路接口修改其DIS的優先級爲最高,讓其成爲DIS。
6.進行路由滲透:如果一個level-1區域有兩個以上Level-1-2路由器,則區域內Level-1路由器訪問其他區域會選擇最近的Level-1-2路由器,但是計算的開銷值只計算本區域內的,如果最近的Level-1-2路由器在Level-2區域到達目的網絡的開銷相對比較大,實際會造成業務次優路徑。在這種場景下需要做路由滲透操作,把Level-2區域的明細路由(包括開銷)引入到Level-1區域,由Level-1路由器自行計算選擇最優的路徑訪問跨區域網絡。
7.進入路由器AR5引入直連鏈路。
sysname AR1
isis 100 配置ISIS 100
is-level level-1 修改路由器的類型爲Leve1 1,如果不做修改則默認爲Level 1-2
network-entity 49.0001.0000.0000.0001.00 配置規定的NET地址編號,
#
interface GigabitEthernet0/0/0
ip address 10.0.123.1 255.255.255.0
isis enable 100 在接口下使能isis 100
isis dis-priority 127 配置接口的isis優先級最高,讓它成爲DIS
其他路由器上的配置如下:(只展示相關配置)
<AR2>
#
sysname AR2
#
isis 100
network-entity 49.0001.0000.0000.0002.00
import-route isis level-2 into level-1 在Level 1中注入Level 2的路由信息,讓level 1的路由器能夠瞭解到去往別的網段的明細信息
#
interface GigabitEthernet0/0/0
ip address 10.0.123.2 255.255.255.0
isis enable 100
#
interface GigabitEthernet0/0/1
ip address 10.0.24.2 255.255.255.0
isis enable 100
在沒有注入level 2的路由信息的時候,isis的路由表如下圖所示
通過缺省路由去訪問未知網絡,包括訪問ISIS裏面的Level 2的路由表
注入level 2的路由信息之後,isis路由表就變成了如下圖所示,
就有了明細路由,這是注入路由的好處。
<AR3>
sysname AR3
#
isis 100
network-entity 49.0001.0000.0000.0003.00
import-route isis level-2 into level-1 同樣的還是注入路由
#
interface Serial4/0/0
link-protocol ppp
ip address 10.0.34.3 255.255.255.0
isis enable 100
isis cost 15 修改開銷值,選擇最優的路徑
#
interface GigabitEthernet0/0/0
ip address 10.0.123.3 255.255.255.0
isis enable 100
<AR4>
#
sysname AR4
#
isis 100
is-level level-2
network-entity 49.0002.0000.0000.0004.00
#
interface Serial4/0/0
link-protocol ppp
ip address 10.0.34.4 255.255.255.0
isis enable 100
#
interface GigabitEthernet0/0/0
ip address 10.0.24.4 255.255.255.0
isis enable 100
#
interface GigabitEthernet0/0/1
ip address 10.0.45.4 255.255.255.0
isis enable 100
isis circuit-type p2p 修改鏈路類型爲點到點
#
<AR5>
#
sysname AR5
#
isis 100
is-level level-2
network-entity 49.0002.0000.0000.0005.00
import-route direct 引入直連路由
#
interface GigabitEthernet0/0/0
ip address 10.0.45.5 255.255.255.0
isis enable 100
isis circuit-type p2p
#
interface LoopBack0
ip address 192.168.25.1 255.255.255.0
#
interface LoopBack1
ip address 192.168.15.1 255.255.255.0