ISIS協議
概述
IS-IS(Intermediate System-to-Intermediate System,中間系統到中間系統)路由協議最初是ISO(國際標准化組織)為CLNP(Connection Less Network Protocol,無連接網絡協議)設計的一種動態路由協議,也是一種基於鏈路狀態並使用最短路徑優先算法(SPF)進行路由計算的一種IGP協議。
掌握IS-IS協議基本配置- 協議優先級:15 metric(度量值) : cost
原理
IS-IS是一種鏈路狀態路由協議,每一台路由器都會生成一個LSP,它是該路由器所有使能IS-IS協議接口的鏈路狀態信息的集合。
通過跟相鄰設備建立IS-IS鄰接關系,互相更新本地的LSDB,使LSDB與整個IS-IS網絡其他設備的LSDB同步,然后根據LSDB運用SPF算法計算出IS-IS路由。如果此IS-IS路由是到目的地址的最優路由,則此路由會記錄到IP路由表中,並指導報文的轉發。
網絡類型
點對點(P2P)網絡類型
廣播型(MA)網絡類型
拓撲結構
IS-IS在自治系統內采用骨干區域與非骨干區域兩級的分層結構。
一般來說,將Level-1路由器部署在非骨干區域,將Level-2路由器部署在骨干區域,每一個非骨干區域都通過Level-1-2路由器與骨干區域相連- *IS-IS 的一個路由器的所有接口肯定在同一個區域,如圖
九種報文
- Hello:用於建立和維持鄰居關系,也稱為IIH(IS-to-IS Hello PDUs)hello時間為10s,hold時間 為30s,DIS路由器發送hello時間為3.3s,hold時間依然為30s
Broadcast L1-Hello 用於建立Level-1 的鄰居關系 ,使用組播方式發送,地址:0180.C200.0014
Broadcast L2-Hello 用於建立Level-2 的鄰居關系 ,使用組播方式發送,地址:0180.C200.0015
P2P Hello:點到點網絡的hello報文
- LSP(鏈路狀態PDU)類似於OSPF的LSU,分為Level-1、Level-2,用於交換鏈路狀態信息,觸發更新或 15分鍾周期更新
- CSNP(完全序列號數據包)類似於OSPF的DD報文,分為Level-1、Level-2,包括LSDB中所有LSP的摘要信息,從而可以在相鄰路由器間保持LSDB的同步。在廣播網絡上,CSNP由DIS定期發送(缺省的發送周期為10秒);在點到點鏈路上,CSNP只在第一次建立鄰接關系時發送。
- PSNP(部分序列號數據包)類似於OSPF的LSRequest或LSAck報文,分為Level-1、Level-2,只列舉最近收到的一個或多個LSP的序號,它能夠一次對多個LSP進行確認,當發現LSDB不同步時,也用PSNP來請求鄰居發送新的LSP
路由器類型
Level-1路由器
Level-1路由器負責區域內的路由,它只與屬於同一區域的Level-1和Level-1-2路由器形成鄰居關系,
屬於不同區域的Level-1路由器不能形成鄰居關系。Level-1路由器只負責維護Level-1的鏈路狀態數據庫LSDB(Link State Database),該LSDB包含本區域的路由信息,到本區域外的報文轉發給最近的Level-1-2路由器。
Level-2路由器
Level-2路由器負責區域間的路由,它可以與同一或者不同區域的Level-2路由器或者其它區域的Level-1-2路由器形成鄰居關系。
Level-2路由器維護一個Level-2的LSDB,該LSDB包含區域間的路由信息。- 所有Level-2級別(即形成Level-2鄰居關系)的路由器組成路由域的骨干網,負責在不同區域間通信。路由域中Level-2級別的路由器必須是物理連續的,以保證骨干網的連續性。只有Level-2級別的路由器才能直接與區域外的路由器交換數據報文或路由信息。
Level-1-2路由器
同時屬於Level-1和Level-2的路由器稱為Level-1-2路由器,
它可以與同一區域的Level-1和Level-1-2路由器形成Level-1鄰居關系,也可以與其他區域的Level-2和Level-1-2路由器形成Level-2的鄰居關系。Level-1路由器必須通過Level-1-2路由器才能連接至其他區域。- Level-1-2路由器維護兩個LSDB,Level-1的LSDB用於區域內路由,Level-2的LSDB用於區域間路由。
鄰居關系建立
廣播網絡:
- 采用的是可靠的鄰接建立過程,如果在接收的IIH報文中看到了自己接口的MAC地址,說明鄰接已經收到並確認了自己發送的IIH報文。那么本地維護鄰居的狀態變為UP狀態。
點到點網絡:
-
2Way是屬於兩次握手,沒有可靠性保證。只要收到鄰接發送的IIH報文,並檢測通過,維護鄰居的狀態為UP狀態。
-
3Way是屬於三次握手,在點到點網絡中使用3way的方式保證鄰接建立的可靠性。新增一種TLV,點到點鄰居狀態TLV。
-
兩次握手機制存在明顯的缺陷。當路由器間存在兩條及以上的鏈路時,如果某條鏈路上到達對端的單向狀態為Down,而另一條鏈路同方向的狀態為Up,路由器之間還是能建立起鄰接關系注:在華為中默認是3way的建立過程。
建立條件:
- 只有同一層次的相鄰路由器才有可能成為鄰居。
- 對於Level-1路由器來說,區域號必須一致。
- 鏈路兩端IS-IS接口的網絡類型必須一致。
- 鏈路兩端IS-IS接口的地址必須處於同一網段。
DIS(Designated Intermediate System)
在廣播網絡中,IS-IS需要在所有的路由器中選舉一個路由器作為DIS,在鄰居關系建立后,路由器會等待兩個Hello報文間隔,再進行DIS的選舉。
作用
周期性10s發送CSNP報文,CSNP相當於DBD 接收PSNP請求,回復LSP應答(同時擔當ACK確認)- 創建和更新偽節點(Pseudonodes)
- 負責生成偽節點的LSP(Link state Protocol Data Unit),用來描述這個網絡上有哪些網絡設備。
選舉規則
- 優先級(選大)>MAC地址(選大)
- Level-1和Level-2的DIS是分別選舉的
- 可手動配置優先級,默認為64
- 優先級為0也參與選舉(區別於ospf)
特點
- 沒有備份(所有的路由器之間都形成鄰接關系,都可以互相交互LSP信息,DIS只是負責同步LSDB)
- 會搶占(當有新的路由器加入,並符合成為DIS的條件時,這個路由器會被選中成為新的DIS)
- 不同級別的DIS可以是同一台路由器,也可以是不同的路由器。
LSP的交互過程
廣播網絡:
- 建立鄰接關系。
- 向組播地址通告自己的LSP,Level-1的組播地址01-80-C2-00-00-14,level-2的組播地址:01-80-C2-00-00-15。
- 由DIS收集LSP,並每隔10s發送一次CSNP,在CSNP報文中通告DIS設備中LSDB中所有LSP的摘要信息(LSP頭部信息)
- 其他設備收到DIS發送的CNSP報文后,需要查看在CNSP報文中是否包含自己的LSP,如果包含說明DIS收到了自己發送的LSP。如果沒有需要重傳。同時,還需要將CSNP中的摘要信息和本地的LSDB做對比,查看本地去缺少哪些LSP,后續通過PSNP報文向DIS請求自己缺少的LSP。
- DIS收到PSNP報文后回復PSNP報文中請求的LSP。
- *上述過程中所有的報文都是以組播方式交互。
點對點網絡:
- 首先建立鄰接關系。
- 開始互相發送CSNP,在CSNP報文中包含本地LSBD中所有LSP的摘要信息。
- 收到鄰居發送的CSNP報文,需要將CSNP報文中的LSP摘要信息和自己的LSDB做對比,查看缺少的LSP,並通過PSNP報文請求缺少的LSP。
- 收到PSNP請求后,回復LSP報文。
- 收到LSP報文后回復PSNP確認接收到的LSP。
常用命令
$ isis 100 //配置isis進程號
$ network-entity 49.0001.0010.0100.1001.00 //配置NET值
$ is-level level-1 //配置路由器類別,默認是level-1-2,即使配了也不會顯示
$ int g0/0/1 //進接口使能isis進程
$ isis enable 100
$ isis cost 50 //配置花銷
$ import-route isis level-2 into level-1 //配置路由滲透
$ dis isis peer //查看鄰居信息
$ dis isis int g0/0/0 //查看接口的isis信息,可查看是否為DIS
$ dis isis lsdb //查看isis的鏈路狀態數據庫信息
實驗拓撲
- 掌握IS-IS協議DIS優先級修改方式
- 掌握IS-IS協議網絡類型修改方式
- 掌握IS-IS協議外部路由引入
- 掌握IS-IS接口cost修改方式
- 掌握IS-IS路由滲透配置方式
配置IP地址(已省略)
配置ISIS
配置R1
[R1]isis 1
[R1-isis-1]network-entity 49.0002.0000.0000.0001.00
[R1-isis-1]is-level level-2
Info: IS Level Changed, Resetting ISIS...
[R1]interface LoopBack0
[R1-LoopBack0]isis enable
[R1-Ethernet0/0/0]isis enable
[R1]interface Eth0/0/1
[R1-Ethernet0/0/1]isis enable
[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]isis enable
[R1]display isis interface
Interface information for ISIS(1)
---------------------------------
Interface Id IPV4.State IPV6.State MTU Type DIS
Loop0 001 Up Down 1500 L1/L2 --
Eth0/0/0 001 Up Down 1497 L1/L2 No/No
Eth0/0/1 002 Up Down 1497 L1/L2 No/No
GE0/0/0 003 Up Down 1497 L1/L2 No/No
配置R2
[R2]isis 1
[R2-isis-1]network-entity 49.0001.0000.0000.0002.00
[R2]interface LoopBack 0
[R2-LoopBack0]isis enable
[R2]interface Eth0/0/0
[R2-Ethernet0/0/0]isis enable
[R2]interface Eth0/0/1
[R2-Ethernet0/0/1]isis enable
[R2]display isis interface
Interface information for ISIS(1)
---------------------------------
Interface Id IPV4.State IPV6.State MTU Type DIS
Loop0 001 Up Down 1500 L1/L2 --
Eth0/0/0 001 Up Down 1497 L1/L2 No/No
Eth0/0/1 002 Up Down 1497 L1/L2 No/No
配置R3
[R3]isis 1
[R3-isis-1]network-entity 49.0001.0000.0000.0003.00
[R3]interface LoopBack0
[R3-LoopBack0]isis enable
[R3]interface Eth0/0/0
[R3-Ethernet0/0/0]isis enable
[R3]interface Eth0/0/1
[R3-Ethernet0/0/1]isis enable
配置R4
[R4]isis 1
[R4-isis-1]network-entity 49.0001.0000.0000.0004.00
[R4-isis-1]is-level level-1
[R4]interface LoopBack0
[R4-LoopBack0]isis enable
[R4]interface Eth0/0/0
[R4-Ethernet0/0/0]isis enable
配置R5
[R5]isis 1
[R5-isis-1]network-entity 49.0002.0000.0000.0005.00
[R5-isis-1]is-level level-2
Info: IS Level Changed, Resetting ISIS...
[R5]interface LoopBack0
[R5-LoopBack0]isis enable
[R5]interface Eth0/0/0
[R5-Ethernet0/0/0]isis enable
修改DIS的優先級
R2、R3和R4在一個廣播網絡下建立鄰居,因此需要選舉DIS,默認情況下,DIS優先級都為64,如果優先級相同MAC地址大的接口將成為DIS,我們希望選舉更為清晰,因此通過修改R4的DIS優先級來保證其成為DIS。
修改R4的DIS
[R4]interface Eth0/0/0
[R4-Ethernet0/0/0]isis dis-priority 120
[R4]display isis interface
Interface information for ISIS(1)
---------------------------------
Interface Id IPV4.State IPV6.State MTU Type DIS
Loop0 001 Up Down 1500 L1/L2 --
Eth0/0/0 001 Up Down 1497 L1/L2 Yes/No
# 在R2 R3查看發現R4的優先值發生改變
# [R3]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0002 Eth0/0/0 0000.0000.0004.01 Up 27s L1(L1L2) 64
0000.0000.0004 Eth0/0/0 0000.0000.0004.01 Up 8s L1 120
0000.0000.0002 Eth0/0/0 0000.0000.0003.01 Up 22s L2(L1L2) 64
0000.0000.0001 Eth0/0/1 0000.0000.0003.02 Up 26s L2 64
# [R2]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0002 Eth0/0/0 0000.0000.0004.01 Up 27s L1(L1L2) 64
0000.0000.0004 Eth0/0/0 0000.0000.0004.01 Up 8s L1 120
0000.0000.0002 Eth0/0/0 0000.0000.0003.01 Up 22s L2(L1L2) 64
0000.0000.0001 Eth0/0/1 0000.0000.0003.02 Up 26s L2 64
配置ISIS的網絡類型
在廣播網絡中,IS-IS默認會將接口的circuit-type設置為廣播模式,並參與DIS的選舉。但在拓撲中R1和R5之間的以太網只有兩台路由器,我們可以將這兩台路由器之間的互聯接口設置為點到點模式,進行優化。
修改R1和R5
[R1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]isis circuit-type p2p
[R5]interface Eth0/0/0
[R5-Ethernet0/0/0]isis circuit-type p2p
# 查看結果.
[R1]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0003 Eth0/0/0 0000.0000.0003.02 Up 9s L2 64
0000.0000.0002 Eth0/0/1 0000.0000.0002.02 Up 8s L2 64
0000.0000.0005 GE0/0/0 0000000002 Up 22s L2 --
[R5]display isis peer
Peer information for ISIS(1)
System Id Interface Circuit Id State HoldTime Type PRI
-------------------------------------------------------------------------------
0000.0000.0001 Eth0/0/0 0000000002 Up 21s L2 --
Total Peer(s): 1
配置ISIS外部路由引入
在引入路由之前,先檢查當前所有路由的學習情況,R1去往R4的路由呈現負載均衡的狀態,數據包將會e0/0/0和e0/0/1之間均勻分布:
因為R2是LEVEL-1-2路由器,因此在兩個level生成不同的路由,注意在level1會有默認路由的條目,指向空接口,R3和R2的情況相同:
由於R4是L1路由器,只能和同區域的L1或者LEVEL-1-2路由器建立鄰居,並且默認情況下L1路由器無法學到L2的路由信息,只能夠通過默認路由訪問外部,R4可以看到兩條默認路由指向R2和R3,呈現負載均衡。
在R5上創建新的Lookback接口,引入到isis進程:
[R5]interface LoopBack 1
[R5-LoopBack1]ip address 192.168.1.1 24
[R5]interface LoopBack2
[R5-LoopBack2]ip address 192.168.2.1 24
[R5]interface LoopBack3
[R5-LoopBack3]ip address 192.168.3.1 24
[R5-isis-1]import-route direct level-2
此時在R4上再次查看路由表,發現並沒有變化,原因是在默認情況下,L2路由不會滲透進入L1路由器,但通過默認路由,R4可訪問 192.168.1.0/24、192.168.2.0/24和192.168.3.0/24。
[R4]display ip routing-table protocol isis
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : ISIS
Destinations : 5 Routes : 6
ISIS routing table status : <Active>
Destinations : 5 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.2.2/32 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
10.0.3.3/32 ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.12.0/24 ISIS-L1 15 20 D 10.0.234.2 Ethernet0/0/0
10.0.13.0/24 ISIS-L1 15 20 D 10.0.234.3 Ethernet0/0/0
ISIS routing table status : <Inactive>
Destinations : 0 Routes : 0
[R4]ping 192.168.1.1
PING 192.168.1.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.1.1: bytes=56 Sequence=1 ttl=253 time=90 ms
Reply from 192.168.1.1: bytes=56 Sequence=2 ttl=253 time=110 ms
Reply from 192.168.1.1: bytes=56 Sequence=3 ttl=253 time=90 ms
--- 192.168.1.1 ping statistics ---
3 packet(s) transmitted
3 packet(s) received
0.00% packet loss
round-trip min/avg/max = 90/96/110 ms
修改ISIS接口的Cost值
默認情況下,IS-IS接口cost值為10,不會基於帶寬自動計算,對於R1來說,去往R4的流量會在R2和R3上負載均衡,但由於R1和R2之間使用Series接口,帶寬較小,容易出現瓶頸,因此可以通過修改相應的cost值來控制R1的選路。
增大出口的cost值:
[R1]interface Eth0/0/1
[R1-Ethernet0/0/1]isis cost 15
[R1]display isis route
Route information for ISIS(1)
-----------------------------
ISIS(1) Level-2 Forwarding Table
--------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
-------------------------------------------------------------------------------
192.168.2.0/24 10 0 GE0/0/0 10.0.15.5 A/-/-/-
10.0.3.3/32 10 NULL Eth0/0/0 10.0.13.3 A/-/-/-
192.168.1.0/24 10 0 GE0/0/0 10.0.15.5 A/-/-/-
10.0.13.0/24 10 NULL Eth0/0/0 Direct D/-/L/-
10.0.2.2/32 15 NULL Eth0/0/1 10.0.12.2 A/-/-/-
10.0.5.5/32 10 NULL GE0/0/0 10.0.15.5 A/-/-/-
10.0.234.0/24 20 NULL Eth0/0/0 10.0.13.3 A/-/-/-
10.0.12.0/24 15 NULL Eth0/0/1 Direct D/-/L/-
10.0.1.1/32 0 NULL Loop0 Direct D/-/L/-
10.0.4.4/32 20 NULL Eth0/0/0 10.0.13.3 A/-/-/-
192.168.3.0/24 10 0 GE0/0/0 10.0.15.5 A/-/-/-
10.0.15.0/24 10 NULL GE0/0/0 Direct D/-/L/-
Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
U-Up/Down Bit Set
配置ISIS路由滲透
觀察R4的數據轉發,由於R4對Level-2網絡狀況一無所知,因此使用負載均衡轉發數據到R2和R3,如果我們希望R4不使用R2到R1之間的鏈路,可以通過路由滲透將Level-2的路由引入到Level-1中,通過路由最長匹配選路,從R3轉發去往R5的數據包。
測試tracert之前,需要在R5上開啟端口不可達的響應,默認是關閉的,如果不開啟,則最后一跳會超時。
在開啟前:
[R4]tracert 192.168.1.1
traceroute to 192.168.1.1(192.168.1.1), max hops: 30 ,packet length: 40,press
CTRL_C to break
1 10.0.234.2 60 ms 70 ms 60 ms
2 10.0.13.1 90 ms 80 ms 110 ms
3 10.0.15.5 110 ms 60 ms 140 ms
在R5上開啟后:
[R5]icmp port-unreachable send
[R4]tracert 192.168.1.1
traceroute to 192.168.1.1(192.168.1.1), max hops: 30 ,packet length: 40,press
CTRL_C to break
1 10.0.234.2 30 ms 80 ms 30 ms
2 10.0.13.1 110 ms 90 ms 70 ms
3 10.0.15.5 110 ms 110 ms 100 ms
可以看到每次發出的tracert包會在兩個下一跳地址負載均衡到達R5,此時我們在R3開啟路由滲透,使得R3為更優的下一跳:
[R3]isis 1
[R3-isis-1]import-route isis level-2 into level-1
[R4]display isis route
Route information for ISIS(1)
-----------------------------
ISIS(1) Level-1 Forwarding Table
--------------------------------
IPV4 Destination IntCost ExtCost ExitInterface NextHop Flags
-------------------------------------------------------------------------------
0.0.0.0/0 10 NULL Eth0/0/0 10.0.234.2 A/-/-/-
Eth0/0/0 10.0.234.3
192.168.2.0/24 10 20 Eth0/0/0 10.0.234.3 A/-/-/U
10.0.3.3/32 10 NULL Eth0/0/0 10.0.234.3 A/-/-/-
192.168.1.0/24 10 20 Eth0/0/0 10.0.234.3 A/-/-/U
10.0.13.0/24 20 NULL Eth0/0/0 10.0.234.3 A/-/-/-
10.0.2.2/32 10 NULL Eth0/0/0 10.0.234.2 A/-/-/-
10.0.5.5/32 30 NULL Eth0/0/0 10.0.234.3 A/-/-/U
10.0.234.0/24 10 NULL Eth0/0/0 Direct D/-/L/-
10.0.12.0/24 20 NULL Eth0/0/0 10.0.234.2 A/-/-/-
10.0.1.1/32 20 NULL Eth0/0/0 10.0.234.3 A/-/-/U
10.0.4.4/32 0 NULL Loop0 Direct D/-/L/-
192.168.3.0/24 10 20 Eth0/0/0 10.0.234.3 A/-/-/U
10.0.15.0/24 30 NULL Eth0/0/0 10.0.234.3 A/-/-/U
Flags: D-Direct, A-Added to URT, L-Advertised in LSPs, S-IGP Shortcut,
U-Up/Down Bit Set
[R4]display ip routing-table protocol isis
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : ISIS
Destinations : 11 Routes : 12
ISIS routing table status : <Active>
Destinations : 11 Routes : 12
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.1.1/32 ISIS-L1 15 20 D 10.0.234.3 Ethernet0/0/0
10.0.2.2/32 ISIS-L1 15 10 D 10.0.234.2 Ethernet0/0/0
10.0.3.3/32 ISIS-L1 15 10 D 10.0.234.3 Ethernet0/0/0
10.0.5.5/32 ISIS-L1 15 30 D 10.0.234.3 Ethernet0/0/0
10.0.12.0/24 ISIS-L1 15 20 D 10.0.234.2 Ethernet0/0/0
10.0.13.0/24 ISIS-L1 15 20 D 10.0.234.3 Ethernet0/0/0
10.0.15.0/24 ISIS-L1 15 30 D 10.0.234.3 Ethernet0/0/0
192.168.1.0/24 ISIS-L1 15 94 D 10.0.234.3 Ethernet0/0/0
192.168.2.0/24 ISIS-L1 15 94 D 10.0.234.3 Ethernet0/0/0
192.168.3.0/24 ISIS-L1 15 94 D 10.0.234.3 Ethernet0/0/0
ISIS routing table status : <Inactive>
Destinations : 0 Routes : 0