前文我們瞭解了IS-IS動態路由協議基礎相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15249328.html;今天我們來聊一聊IS-IS動態路由協議的報文結構和型別相關話題;
IS-IS報文結構
提示:IS-IS動態路由協議是封裝在資料鏈路層之上,主要由IS-IS頭部和IS-IS可變長欄位CLVs組成;其中IS-IS頭部裡面又分為通用頭部和專用頭部;
實驗:如下拓撲,配置IS-IS
R1的配置


- sys
- sys R1
- int g0/0/0
- ip add 172.16.10.1 24
- isis 1
- net 10.0000.0000.0001.00
- is-le level-1
- int g0/0/0
- isis en 1
提示:在R1上g0/0/0介面上啟用isis以後,對應isis程序就正常運行了;
在R1上抓包,看看ISIS資料包結構
提示:可以看到在R1上能夠正常抓到ISIS L1型別的hello包,其中hello包裡有通用頭部和專用頭部,對應專用頭部裡又有可變長欄位;
R2的配置


- sys
- sys R2
- int g0/0/0
- ip add 172.16.10.2 24
- int g0/0/1
- ip add 192.168.11.2 24
- isis 1
- net 10.0000.0000.0002.00
- is-le level-1-2
- int g0/0/0
- isis en 1
- int g0/0/1
- isis en 1
驗證:在R1或R2上檢視ISIS鄰居資訊
R3的配置


- sys
- sys R3
- int g0/0/0
- ip add 192.168.11.3 24
- isis 1
- net 11.0000.0000.0003.00
- is-le level-2
- int g0/0/0
- isis en 1
在R2上抓包看看對應報文結構
提示:可以看到在R2的g0/0/0口可以抓到L1的hello包和L2的hello包,他們的專用hello包裡都是leve1 and 2;
專用包頭欄位解釋
提示:通用頭部裡每個欄位都是1位元組;Intra Domain Routing Protocol Discriminator欄位用於描述動態路由協議的描述0x83表示ISIS協議,該欄位的值固定不變;PDU Header Length欄位用於描述PDU包頭的長度(包含通用頭部和專用頭部),單位是位元組;version/protocol id extension欄位用於描述對應isis的版本或協議標識擴充套件,設定為1(0x01),一般這個欄位都是1,固定不變;ID Length用於描述NSAP地址或NET地址中的system ID長度,值為0表示system ID的長度為6位元組,值為255時,表示system ID為空(長度為0);R(Reserved)是保留欄位,設定為0;PDU type 用於描述對應專用包頭的型別;ISIS PDU共有9種類型;version 用於描述isis版本,設定為1,固定不變;Maximun area address欄位用於描述支援的最大區域個數;設定為1-254的證書,表示該IS-IS程序實際所允許的最大區域地址數,設定為0,表示該IS-IS程序最大隻支援3個區域地址數;
更改R1的g0/0/0介面網路型別為P2P,再次抓包看看對應資料包結構
提示:可以看到更改R1的g0/0/0介面網路型別為p2p以後,對應isis鄰居就被情況了;其原因是R1和R2的所傳送的hello包型別不同;
在R1上抓包,看看對應hello包型別是否和R2一樣?
提示:現在R1的g0/0/0介面上抓包,可以看到對應R1傳送的hello包型別為p2phello ;
廣播網路hello包和p2p網路hello包對比
提示:通用包頭基本沒有變化,變化的是在專用包頭裡;對於廣播網路中的hello包,裡面主要比p2p網路中的hello包多了priority 欄位和DIS ID兩個欄位;其主要原因是廣播網路中,對應會選舉DIS,所以會有優先順序和dis id的資訊;而p2p網路中不需要選舉DIS,所以priority欄位和dis id欄位沒有;其他欄位兩者幾乎都有,沒有太大的區別;
專有包頭欄位解釋
Reserved/circuit:該欄位佔用1位元組,其中高位的6位元保留,其值為0;低位的2位元用來表示路由器的型別;01表示L1,10表示L2,11表示L1/2;
Source ID:用於描述發出該hello報文的路由器system ID;
Holding Time:用於描述hello包的保持時間;在此時間內如果沒有收到鄰居發來的Hello報文,則終止已建立的鄰居關係;
PDU Length:用於描述PDU的總長度,單位是位元組;PDU是ISO網路模型裡對應資料包的稱呼,我們可以理解為TCP/IP裡的包,段,幀,位元等術語;
Priority:用於描述選舉DIS的優先順序,取值範圍為0-127;數值越大,優先順序越高;
LAN ID:用於描述包含DIS的system ID 和1位元組的偽節點ID;
Local Circuit ID:用於描述本地鏈路ID;
IS-IS報文型別總結
提示:ISIS報文總共就只有上述三種類型;其中IIH表示ISIS的hello PDU,主要作用是建立和維護鄰居關係;LSP主要用來傳輸鏈路狀態資訊,類似OSPF裡的LSU(LSA)包的作用;SNP主要用來描述資料庫中的LSP,類似ospf中的DD包;
hello報文型別
提示:isis裡hello報文型別有三種;L1 LAN IIH、L2 LAN IIH和p2p IIH這三種;其中p2p裡部分L1和L2,它只有一種;L1主要是廣播網路中的L1路由器傳送;L2主要是廣播網路中的L2路由器傳送;
SNP報文型別
提示:SNP報文中分CSNP(完全SNP)和PSNP(部分SNP),完全SNP包主要作用是通告LSDB中所有摘要資訊,類似OSPF裡的DD包;部分SNP主要作用是請求和確認鏈路狀態資訊;類似ospf裡的LSR和LSACK的作用;
IS-IS報文中的可變長欄位
提示:IS-IS報文中的變長欄位部分是多個TLV(Type-Length-Value)三元組;TLV也稱為CLV(Code-Length-Value);以上只是部分CLV程式碼和對應欄位、PDU型別;可變長欄位的存在主要是對IS-IS的擴充套件,比如我們要讓IS-IS支援IPV6,我們只需要在TLV/CLV里加上對ipv6的相應欄位即可,不需要像ospf專門開發一個版本支援ipv6;這也是IS-IS擴充套件性強的原因;
PDU型別對照表
提示:對於不同PDU型別,其型別值各有不同;比如型別程式碼為15則表示是L1 hello包;型別程式碼為17則表示對應PDU型別為P2P網路的hello 包;