Technical documentation
发布日期:2022-06-22 浏览次数:1662 来源:崔志鹏
WOLFLAB HCIE Datacom理论学习文档分享-ISIS的报文详解
HCIE学习联系客服VX:17316362402,领取试听课资料
报文解析:
1、ISIS是基于数据链路层之上的网络层协议,二层封装802.3以太;
广播型链路:
L1的ISIS报文发向的DMAC: 01:80:c2:00:00:14
L2的ISIS报文发向的DMAC: 01:80:c2:00:00:15
以太链路如果将网络类型改成P2P:正经的P2P二层不封装MAC
所有的isis报文发向的DMAC:09:00:2b:00:00:05
2、ISIS的头部信息:
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
Intradomain Routing Protocol Discriminator: ISIS (0x83) //域内路由协议区分符0X83,用来代表这个协议就是ISIS协议0X83
Length Indicator: 27 //头部长度,表示不算TLV,isis的头部长度有多长
Version/Protocol ID Extension: 1 //isis的版本号
ID Length: 6 //system id的长度
000. .... = Reserved: 0x0 //保留字段
...1 0000 = PDU Type: L2 HELLO (16) //PDU的类型为L2的hello包
Version: 1 //isis的版本号
Reserved: 0 //保留
Maximum Area Addresses: 3 //最大支持的NET地址的数量
3、广播型链路ISIShello包的信息:
ISIS HELLO
.... ..10 = Circuit type: Level 2 only (0x2) //路由器的级别
0000 00.. = Reserved: 0x00 //保留
SystemID {Sender of PDU}: 0000.0000.0001 //自己的system id
Holding timer: 30 //hold timer时间默认是hello时间的3倍,hello时间为10s
PDU length: 1497 //报文的长度
.100 0000 = Priority: 64 //用于DIS的选举
0... .... = Reserved: 0 //保留
SystemID {Designated IS}: 0000.0000.0001.01 //伪节点的system id.伪节点标识符
注意:路由器的级别
如果是level-1的路由器取值0X1,level-2的路由器取值为0X2,跟链路级别无关;
如果是level1-2的路由器跟接口的链路级别取交集,交出来的结果如果是level-1取值0X1,交出来的结果如果是level-2取值0X2;
如果是level1-2的路由器接口的链路级别也是level1-2,则取值为0X3;
-----------------------------------------------------------------
上面都是固定的必须存在,下面就是TLV,ISIS协议是基于TLV机制来携带各项属性的
T:类型
L:长度
V:取值
TLV机制允许路由协议只携带需要的属性,不需要的属性可以不携带,扩展性强,如果协议需要支持新的特性,则只需要开发新的TLV属性即可支持。
Area address(es) (t=1, l=2) //描述自己所在的区域
Type: 1
Length: 2
Area address (1): 49
IS Neighbor(s) (t=6, l=6) //邻居接口的mac地址
Type: 6
Length: 6
IS Neighbor: HuaweiTe_78:03:fa (00:e0:fc:78:03:fa)
IP Interface address(es) (t=132, l=4) //互联接口的地址,hello包中只包含发送hello的接口地址,来判断互联地址是否在同一网段LSP中包含自己所有运行了ISIS的接口地址;
Type: 132
Length: 4
IPv4 interface address: 1.1.12.1
Protocols Supported (t=129, l=1) //支持IP地址簇,集成的ISIS为IP协议做路由计算
Type: 129
Length: 1
NLPID: IP (0xcc)
Restart Signaling (t=211, l=3) //优雅重启动
Type: 211
Length: 3
Restart Signaling Flags: 0x00
.... .0.. = Suppress Adjacency: False
.... ..0. = Restart Acknowledgment: False
.... ...0 = Restart Request: False
Multi Topology (t=229, l=2) //多TOP的支持,现在支持IPV4的单播拓扑
Type: 229
Length: 2
IPv4 Unicast Topology (0x000)
Padding (t=8, l=255) //填充字段,全部用0填充的,填充到这个接口的MTU大小
Type: 8
Length: 255
Padding (t=8, l=255)
Padding (t=8, l=255)
Padding (t=8, l=255)
Padding (t=8, l=255)
Padding (t=8, l=153)
padding字段有什么用?
isis作为链路状态协议,一个重要的原则是要保证整个网络中所有设备的lsdb数据库保持完全一致,isis报文发送和接收过程是没有分片的概念的,也就是说接口的mtu决定了可以收到的lsp的最大长度。
举个例子,a与b建立isis邻居。但a的接口mtu为1000, b的接口mtu为2000, b的lsdb中有一条长度为1500的lsp。在这种情况下,这条lsp发到a是要丢弃的,因为超过了a的接口mtu。结果是a与b的lsdb就不一致了。
解决方案就是把hello报文填充到接口的mtu长度。b的hello报文全部长度现在是2000,发到a就丢弃了。建不起来isis邻居,自然不会有不—致的现象。
建不起来邻居可以识别出来继而修改不一致的mtu,而数据库不一致导致的后果完全无法预见,是无法接受的。
注意:经自己实验修改接口的MTU要是小于1500,根本就不发送hello报文;
4、P2P的hello
Point-to-Point Protocol
Address: 0xff
Control: 0x03
Protocol: OSI Network Layer (0x0023)
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
Intradomain Routing Protocol Discriminator: ISIS (0x83)
Length Indicator: 20
Version/Protocol ID Extension: 1
ID Length: 6
000. .... = Reserved: 0x0
...1 0001 = PDU Type: P2P HELLO (17) //点到点hello
Version: 1
Reserved: 0
Maximum Area Addresses: 3
ISIS HELLO
.... ..10 = Circuit type: Level 2 only (0x2)
0000 00.. = Reserved: 0x00
SystemID {Sender of PDU}: 0000.0000.0001
Holding timer: 30
PDU length: 1497
Local circuit ID: 1 //链路id,经自己实验:isis会为每一个运行了isis的接口分配一个cir id,网络类型相同的接口分配的cir id一定是不同的,如果一个接口的网络类型是p2p,一个接口是brocast,那么此时分配的cir id可能相同,不过无所谓,因为cir id主要是用在P2P网络建立邻居代替mac地址的标识邻居的, 无论是以太链路还是以太改p2p还是正经的p2p只要运行isis就一定会该接口分配一个cir id,loop接口默认网络类型P2P,也有cir id;
Area address(es) (t=1, l=2)
IP Interface address(es) (t=132, l=4)
Protocols Supported (t=129, l=1)
Restart Signaling (t=211, l=3)
Point-to-point Adjacency State (t=240, l=5) //P2P的邻接状态TLV
Type: 240
Length: 5
Adjacency State: Down (2) //自己的状态
Extended Local circuit ID: 0x00000001 //自己接口的cir id
Multi Topology (t=229, l=2)
Padding (t=8, l=255)
Padding (t=8, l=255)
Padding (t=8, l=255)
Padding (t=8, l=255)
Padding (t=8, l=255)
Padding (t=8, l=161)
注意:
@如果我收到对端的hello报文,就会将对端的信息放在240TLV里面:
Point-to-point Adjacency State (t=240, l=15)
Type: 240
Length: 15
Adjacency State: Initializing (1)
Extended Local circuit ID: 0x00000001
Neighbor SystemID: 0000.0000.0001 //对端的system id
Neighbor Extended Local circuit ID: 0x00000001 //对端接口的cir id
@无论是bro改成P2P还是正经的P2P链路只有第一次发送hello报文的时候会有填充字段,后续的hello报文是没有填充字段的,因为P2P的链路通告带宽低,节约带宽;
@两次握手的P2P hello不携带240 tlv;
5、CSNP:
R1发送的CSNP:
Frame 40: 71 bytes on wire (568 bits), 71 bytes captured (568 bits) on interface -, id 0
Point-to-Point Protocol
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
ISO 10589 ISIS Complete Sequence Numbers Protocol Data Unit
PDU length: 67
Source-ID: 0000.0000.0001
Source-ID-Circuit: 00
Start LSP-ID: 0000.0000.0000.00-00
End LSP-ID: ffff.ffff.ffff.ff-ff
LSP entries (t=9, l=32)
Type: 9
Length: 32
LSP Entry
LSP Sequence Number: 0x0000000c
Remaining Lifetime: 1191
LSP checksum: 0x4a16
LSP-ID: 0000.0000.0001.00-00
注意:CSNP就是六元组
6、PSNP:
Frame 35: 39 bytes on wire (312 bits), 39 bytes captured (312 bits) on interface -, id 0
Point-to-Point Protocol
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
ISO 10589 ISIS Partial Sequence Numbers Protocol Data Unit
PDU length: 35
Source-ID: 0000.0000.0002
Source-ID-Circuit: 00
LSP entries (t=9, l=16)
Type: 9
Length: 16
LSP Entry
LSP Sequence Number: 0x0000000c
Remaining Lifetime: 1194
LSP checksum: 0x4a16
LSP-ID: 0000.0000.0001.00-00
注意:PSNP就是六元组,seq=0表示请求,seq不等于0表示确认
7、LSP:narrow
Frame 32: 88 bytes on wire (704 bits), 88 bytes captured (704 bits) on interface -, id 0
Point-to-Point Protocol
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 84
Remaining lifetime: 1195
LSP-ID: 0000.0000.0001.00-00
Sequence number: 0x0000000c
Checksum: 0x4a16 [correct]
[Checksum Status: Good]
Type block(0x03): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:3 //这条LSP的相关BIT位
0... .... = Partition Repair: Not supported
.000 0... = Attachment: 0
.... 0... = Error metric: Not set
.... .0.. = Expense metric: Not set
.... ..1. = Delay metric: Set
.... ...1 = Default metric: Set
.... .0.. = Overload bit: Not set
.... ..11 = Type of Intermediate System: Level 2 (3)
Protocols supported (t=129, l=1)
Area address(es) (t=1, l=2)
IS Reachability (t=2, l=12) //描述拓扑信息,R1表明自己P2P的连着02的路由器,因为最后为00,
如果是广播型链路R1会说自己连着伪节点,最后肯定不为00
Type: 2
Length: 12
Reserved: 0x00
IS Neighbor: 0000.0000.0002.00
..00 1010 = Default Metric: 10
.0.. .... = Default Metric: Internal
..00 1010 = Delay Metric: 10
0... .... = Delay Metric: Supported
.0.. .... = Delay Metric: Internal
..00 1010 = Expense Metric: 10
0... .... = Expense Metric: Supported
.0.. .... = Expense Metric: Internal
..00 1010 = Error Metric: 10
0... .... = Error Metric: Supported
.0.. .... = Error Metric: Internal
IS Neighbor: 0000.0000.0002.00
IP Interface address(es) (t=132, l=8) //会把自己所有运行isis的接口地址携带出去
Type: 132
Length: 8
IPv4 interface address: 1.1.1.1
IPv4 interface address: 1.1.12.1
IP Internal reachability (t=128, l=24) //携带自己的路由信息
Type: 128
Length: 24
IPv4 prefix: 1.1.1.1/32
..00 0000 = Default Metric: 0
.0.. .... = Default Metric IE: Internal
0... .... = Distribution: Up
..00 0000 = Delay Metric: 0
1... .... = Delay Metric: Not Supported
.0.. .... = Delay Metric: Internal
..00 0000 = Expense Metric: 0
1... .... = Expense Metric: Not Supported
.0.. .... = Expense Metric: Internal
..00 0000 = Error Metric: 0
1... .... = Error Metric: Not Supported
.0.. .... = Error Metric: Internal
IPv4 prefix: 1.1.12.0/24
..00 1010 = Default Metric: 10
.0.. .... = Default Metric IE: Internal
0... .... = Distribution: Up
..00 0000 = Delay Metric: 0
1... .... = Delay Metric: Not Supported
.0.. .... = Delay Metric: Internal
..00 0000 = Expense Metric: 0
1... .... = Expense Metric: Not Supported
.0.. .... = Expense Metric: Internal
..00 0000 = Error Metric: 0
1... .... = Error Metric: Not Supported
.0.. .... = Error Metric: Internal
注意:
@如果使用的cost-type是默认的narrow度量值,针对内部路由使用128TL携带,针对外部路由使用130TLV携带;
@在报文中内部路由会显示INTERNAL,外部路由会显示EXTERNAL,其他的bit都一样;(这里的INTERNAL和EXTERNAL是显示引入外部路由metric的类型的,不是用来区分内部和外部路由的)
@内部路由始终都是INTERNAL,引入的外部路由才有INTERNAL和EXTERNAL的区分;
IP External reachability (t=130, l=12)
Type: 130
Length: 12
IPv4 prefix: 192.168.1.0/24
..00 0000 = Default Metric: 0
.1.. .... = Default Metric IE: External
0... .... = Distribution: Up
..00 0000 = Delay Metric: 0
1... .... = Delay Metric: Not Supported
.0.. .... = Delay Metric: Internal
..00 0000 = Expense Metric: 0
1... .... = Expense Metric: Not Supported
.0.. .... = Expense Metric: Internal
..00 0000 = Error Metric: 0
1... .... = Error Metric: Not Supported
.0.. .... = Error Metric: Internal
HCIE学习课程循环开班中,联系网站客服咨询上课情况