ISIS报文
ISIS报文是通过TLV架构来填充的。
::: tip TLV架构: T:type。 L:length。 V:value。 假设T携带开销,type就是开销,length就是开销的长度,value就是cost的开销值。 ::: 如上,框架不变,参数值改变,是模块化的内容模板,TLV架构可以更加方便新内容的增加和旧内容删除。
相比较于OSPF一个LSA只能携带一条路由信息,ISIS可以将路由信息变为TLV架构,一个报文可以携带多条路由信息。
[AR1-GigabitEthernet0/0/0]ip ad 10.1.12.1 24
[AR1-isis-1]network-entity 49.0001.0000.0000.0001.00
[AR1-isis-1]is-level level-1
[AR1-GigabitEthernet0/0/0]isis enable
上述报文中因为没有建立邻居,链路上只有AR1一台设备,所以没有TLV的字段表示邻居。
ISIS报文类型:
- hello报文:类似于OSPF的hello报文。
- L1的IIH(ISIS hello):DMAC使用组播MAC地址(0180-C200-0014)。
- L2的IIH(ISIS hello):DMAC使用组播MAC地址(0180-C200-0015)。
- P2P的IIH(ISIS hello):将广播网络改为P2P网络后,DMAC使用组播MAC地址(0900-2B00-0005),级别1和级别2的组播MAC地址相同。
::: warning
PPP封装没有MAC地址,广播改为P2P后,PPP封装链路以后,上层还会封装以太网的数据链路,就会出现MAC地址。
:::
[AR1-GigabitEthernet0/0/0]isis circuit-type p2p
- LSP报文:类似于OSPF的LSU报文,链路状态PDU。
- SNP报文:
- CSNP报文,类似于OSPF的DD报文,全时序PDU。
- PSNP报文,类似于OSPF的LSR报文,部分时序PDU。
ISIS邻居建立
::: tip ISIS建立邻居和IP地址无关,只要路由器可以交互报文进行通信,就可以建立邻居。 ::: 如上建立AR1和AR2的L1邻居关系。
- 广播网络 状态机:
- down:设备未使能状态。*
- init:收到了邻居的hello报文,携带了邻居的system id,但是报文内没有携带本端的MAC地址。*
- up:收到邻居的hello报文,携带了邻居的system id,且报文内携带了本端的MAC地址。*
- P2P网络
- 三次握手,类似广播网络建立邻居。 状态机:
down:设备未使能状态。 init:收到了邻居的hello报文,携带了邻居的neighbor system id,但是报文内没有携带本端的MAC地址。 up:收到邻居的hello报文,携带了邻居的neighbor system id,且报文内携带了本端的MAC地址。 2. 二次握手,只有down和up状态,没有init状态。 修改为两次握手,默认三次: 如上:两次握手建立邻居关系,报文内不携带邻居字段,没有邻居TLV信息,即只要收到hello报文,就认为邻居关系建立。
::: warning 将广播网络改为P2P网络,设备根据system-id来判断邻居。即设备发送hello报文中携带的是邻居的system-id。 :::
ISIS的DIS和伪节点
OSPF DR设备 伪节点(DR设备的接口地址充当伪节点的RID)
ISIS DIS设备 伪节点(DIS设备的system-id+非0的链路ID)
Level-1和Level-2的DIS是分别选举的,可以为不同级别的DIS选举设置不同的优先级。
DIS设备的优选(只能在广播型网络进行):
- 根据设备的接口优先级,0-127,默认值为64,值越大越优先。
- 优先级值相等,则比较接口MAC地址,MAC地址越大越优先。
DIS的选举
ISIS中一个广播域(网段)中有一个DIS,拓扑中49.0001区域内DIS情况: 上图中,AR11和AR13各有一个伪节点DIS。 查看AR11-AR12网段中DIS选举情况: 上图中AR11和AR12的优先级情况相同,AR11的MAC地址比AR12更大,AR11-AR12网段中AR11为DIS。 查看AR11-AR13网段中DIS选举情况: 上图中AR11和AR13的优先级情况相同,AR13的MAC地址比AR11更大,AR11-AR13网段中AR13为DIS。 ::: warning hello报文周期通告时间为10s,超时时间为30s。 DIS设备hello的周期通告时间为1/3*10 ,超时时间10s。 当DIS失效时,可以更快的被发现。 :::
OSPF的DR和ISIS的DIS区别
DR是存在备份的(BDR),DIS不存在明确的备份(网段内任何设备都可以成为DIS )。
通过设置优先级为0,设备可以不参与DR、BDR的选举,DIS不存在不选举的操作。
优先级值的范围:DR(0-255),DIS(0-127)。
DR不可抢占,DIS可以抢占的。
DRother和DR之间建立邻接关系,Drother之间建立邻居关系。 DIS和非DIS之间建立邻接关系,非DIS之间建立邻接关系(ISIS只有邻接关系)。 ::: tip 邻居关系可以传递hello报文,邻接关系可以交互数据库信息。 :::
ISIS链路状态数据库
OSPF使用LSA描述链路状态信息,将LSA通过LSU报文通告给邻居。 ISIS使用LSP描述链路状态信息,将LSP通过LSP报文通告给邻居。 ::: warning ISIS中的LSP和LSP报文只是命名相同,关系是LSP报文携带LSP,类似于LSU携带LSA。 :::
ISIS的LSDB:存储接收到的LSP信息。 LSPID :链路状态ID,由四部分组成:
- system id: 0000.0000.0001
- 伪节点标识符:.00 (如果该值为00,则表示LSP为实节点LSP,如果该值为非0,则表示LSP为伪节点LSP)
- 分片标识符:-00
(如果该值为00,则表示LSP不是分片LSP,如果该值为非0,则表示LSP为分片LSP) - *:表示该LSP为本端产生。
seq num:序列号。LSP序列号越大越新。 checksum:校验和。 holdtime:LSP的老化时间,1200s倒计时(减量计算),900s刷新(即还有300s时刷新)。
ATT bit:进行防环。 P bit:虚链路功能,因为ISIS是基于二层,不适合虚链路的建立,所以该bit不支持使用。 OL bit:过载位。
LSP优选:
- 先比较seq,seq越大越优先。
- seq相等,则查看holdtime。如果时间为0,优选holdtime时间为0的LSP;如果时间不为0,则不比较holdtime,继续下一个参数比较。
- checksum越大越优先。
LSP的分类
- 实节点LSP
<AR1>dis isis lsdb 0000.0000.0001.00-00 level-1 verbose 查看实节点LSP的详细信息
SOURCE(源) 0000.0000.0001.00 实节点设备的Sys ID NLPID(网络类型) IPV4 ipv4网络 AREA ADDR 49.0001 LSP所处的区域ID INTF ADDR 10.1.12.1 发送LSP的接口IP地址
NBR ID | 0000.0000.0001.01 | 实节点设备的Sys ID |
---|---|---|
NLPID(网络类型) | IPV4 | ipv4网络 |
NBR ID 0000.0000.0001.01 COST: 10 (拓扑信息) | ||
邻居的system id 去往邻居的cost |
IP-Internal 10.1.12.0 255.255.255.0 COST: 10 路由信息
一个叶子路由,旁挂在LSP上(把所有路由都看作末节路由)
- 伪节点LSP
广播网络会产生伪节点LSP。
<AR1>dis isis lsdb 0000.0000.0001.01-00 verbose 查看伪节点LSP的详细信息
SOURCE(源) | 0000.0000.0001.01 | 实节点设备的sys id |
---|---|---|
NLPID(网络类型) | IPV4 | ipv4网络 |
NBR ID 0000.0000.0001.00 COST: 0 拓扑信息
NBR ID 0000.0000.0002.00 COST: 0 拓扑信息
::: warning 网段路由信息不再由伪节点进行描述(OSPF),而是由实节点进行描述,当作叶子路由(末节网段路由)挂在自己的LSP上。 伪节点只描述拓扑信息。 :::
两台路由器互联时,如果是OSPF,会通过2类LSA描述该网段的路由和拓扑信息。如果是ISIS,两个实节点的IP-Internal会描述的同一个叶子路由。 ISIS实节点IP-Internal描述的叶子路由增加或减少都不会影响拓扑。 ::: tip ISIS相比于OSPF的优势: 1.拓扑信息和路由信息是分开的。 2.路由信息只有实节点携带。 3.伪节点只存在拓扑信息。 :::
- 分片LSP
数据库
(wireshark抓包显示的数据包顺序错乱)。
1. P2P网络类型
- PSNP报文:主要携带自身不存在的链路状态信息,作用是向对端邻居发送请求消息,并确认收到LSP。(请求和确认两种功能) 如上,两台设备PSNP报文中携带的是本端不存在的链路状态ID,是对端进行请求的信息,需要对方发送LSP报文。
- CSNP报文:携带自身LSDB中所有的LSP摘要信息,类似于OSPF的DD报文。作用是与对端邻居进行简要的LSDB同步。每台设备在建立后发送一次。 如上,两台设备的CSNP报文都携带相同的信息,为ISIS数据库的LSP摘要。 LSP报文:携带完整的LSP信息,如下
P2P网络中ISIS数据库同步过程:
- 邻居建立完成后,直接向对方发送自身所有的LSP信息(完整的)。
- 对方收到后,发送PSNP报文(携带对端LSP的摘要)进行确认。
- 再向对方发送CSNP报文,确定LSDB的同步。如果CSNP相同,则认为数据库同步完成;如果CSNP不同,则需要发送PSNP去请求缺少的值。
- 如果收到了PSNP,则需要发送LSP报文给对方进行回复。
- 如果设备增加了一条路由信息,更新了LSP,则会向对方直接发送LSP报文。
- 对方收到LSP报文后,会回复PSNP报文确认。
如果发送了LSP,则会启动一个LSP的超时定时器(5s),如果5s没有收到对端的PSNP报文,则需要重传LSP。 (LSP超时定时器只在P2P网络中才有。) AR5新建一个网段(环回口)通告给ISIS: ISIS直接发送LSP通告对端,对端回复PSNP确认。
2.广播类型
- PSNP报文:只有请求LSP功能。(和P2P唯一的区别)
- CSNP报文:携带LSDB中所有的LSP摘要信息,由DIS周期发送(10s)。 CSNP的通告者都是AR5: AR5会选举伪节点DIS。
- 广播型网络中由DIS通告CSNP给所有设备,设备通过CSNP信息进行同步状态信息的请求。*
- LSP报文:携带完整的LSP信息。
广播网络中ISIS数据库同步过程:
- 根据hello报文选举出网段内的DIS设备。 (hello包内携带接口优先级和设备MAC地址)
- 非DIS设备使用CSNP报文将LSDB信息通告给DIS。
- DIS收到后,将自身的LSDB信息和对端发送的CSNP报文内的信息,整合为一个CSNP报文。(DIS向网络内通告整合后的LSP)
- 收到CSNP报文发现存在自身缺少的信息,则发送PSNP进行请求。
- 收到PSNP报文后,回复LSP报文(携带完整的LSP信息)。
广播网络加入一台设备:
- 新加入的设备会在网络中直接通告自身所有的LSP(完整的)。
- DIS设备收到新加入设备的LSP后,放入自身的LSDB中,并且会将其整合为摘要放入到CSNP报文中,非DIS设备也可以通过组播报文收到新加入设备的LSP,会放入自身的LSDB中,但是不会计算对应的路由信息。
- DIS整合完毕后会通告CSNP报文:
- 新加入设备收到CSNP报文后,根据摘要信息,使用PSNP报文请求自身不存在的摘要信息,DIS收到PSNP报文后,发送LSP报文给对方。
- 非DIS设备收到CSNP报文后,发现CSNP报文内携带的新加入设备LSP的摘要,会将LSDB内保存的LSP计算路由信息,不需要向DIS重新获取。
::: tip PSNP报文不存在确认机制:
- 如果DIS发送的LSP报文丢失:
- 广播网络中DIS会周期发送CSNP报文,其他设备根据CSNP报文,重新发送PSNP报文重新请求。*
- 如果是新加入设备发送的LSP丢失:
- 广播网络中DIS会周期发送CSNP报文,新加入设备根据收到的CSNP报文内信息判断,如果不存在自身的LSP摘要,则向DIS再通告一次自身的LSP。* :::
广播网络中,CSNP由DIS每10s一次定期发送。
P2P网络中,CSNP只在建立第一次邻接关系时发送(确认数据库是否同步)。
广播网络中,当LSDB不同步时,通过PSNP请求新的LSP。
P2P网络中,收到LSP后,通过PSNP确认收到。
路由计算
拓扑信息计算
AR8访问AR10: 将AR8的串口开销改大:
[AR8-Serial1/0/0]isis cost 50
ISIS缺省开销都是10,路由选择开销更小的链路: 查看AR8的数据库: ::: warning 上述AR5有5.01一个伪节点,AR8有8.01一个伪节点,AR9有9.01、9.02两个伪节点,原因是AR5、AR8各自连接一个广播域,AR9连接两个广播域(串口不算广播域),ISIS网络中每一个广播域内都有一个DIS。 (在OSPF和ISIS中,DR/DIS就是伪节点。) ::: 查看AR8 LSP的详细信息,AR8实节点对应拓扑信息(需要加上分片信息-00): AR8伪节点的拓扑信息(需要加上分片信息-00): 路由不能再回到AR8,查看AR7的实节点详细信息(需要加上分片信息-00): 上图中有去往AR8的伪节点查看过了,去往AR5的伪节点的开销是10。 AR8的实节点详细信息查看过了,再查看AR5的伪节点详细信息(需要加上分片信息-00): 上图中去往AR5的伪节点查看过了,去往AR5的伪节点的开销是10。 AR5的伪节点详细信息查看过了,就不需要查看AR5的实节点信息。 再查看AR6和AR7的实节点详细信息(需要加上分片信息-00):
AR6的实节点详细信息: 上图中AR5伪节点查看过,查看AR9伪节点的详细信息: 上图中AR6实节点查看过,查看AR9实节点的详细信息: 上图中AR8节点发出,AR9的一个伪节点查看过,查看AR9另一个伪节点的详细信息:
上述信息查看后综合得出以下拓扑: 以上路径经过AR8-AR7-AR6-AR9-AR10,总开销为40,小于AR8实节点详细信息中查询到的AR8-AR9的就开销50,是最优路径。 ::: warning 伪节点是虚拟的,没有开销的说法。 :::
路由信息计算
::: tip ISIS的路由信息都是当作叶子挂在拓扑节点上的。 即拓扑图中每一个实节点都会挂着路由信息。 ::: 上述内容解释: AR9和AR10的广播型网段是10.9.10.0/24,AR9、AR10中都会有该网段的信息(叶子节点),AR8访问该网段时,根据拓扑图,只需要找到AR9即可,不需要查看AR10的实节点。 如上,描述10.9.10.0/24的网段,开销是10,再叠加去往该实节点的开销10,加上前面的路由开销,AR8到达该网段的开销值为40,查看路由表:
路由信息的开销也需要标明在拓扑上(挂在实节点上): ::: warning ISIS路由和拓扑是分开的,增加或者减少路由网段不会影响拓扑。 OSPF伪节点的路由不能没有,否则伪节点也不会存在。
理论上ISIS的路由信息可以不存在,但是ISIS是基于IP网络的,需要有互联的网段。 :::