前文我們了解了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 1View Code

提示:在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 1View Code

驗證:在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 1View Code

在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 包;
作者:Linux-1874 出處:https://www.cnblogs.com/qiuhom-1874/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299589.html
標籤:其他
上一篇:HO引擎近況20210912
