在建立IS-IS邻接关系之后,路由器开始发送LSP报文进行链路状态数据库进行同步。
一、链路状态数据库同步
LSP( Link State PDU,链路状态报文) 用于交换链路状态信息。LSP分为两种:Level–1 LSP和Level–2 LSP。Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP。两类LSP有相同的报文格式。
报文格式:
-
Remaining Lifetime : LSP的生存时间,以秒为单位。 -
LSP ID:由三部分组成,System ID、伪节点ID和LSP分片后的编号。 -
Sequence Number: LSP的序列号。在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个LSP序列号的基础上加1。更高的序列号意味着更新的LSP。 -
Checksum : LSP的校验和。 -
ATT(Attachment):由Level-1-2路由器产生,用来指明始发路由器是否与其它区域相连。虽然此标志位也存在于Level-1和Level-2的LSP中,但实际上此字段只和Level-1-2路由器始发的L1 LSP有关。 -
OL(LSDB Overload,1bit):过载标志位。设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过超载路由器的路由时不会被采用。即对路由器设置过载位后,其它路由器在进行SPF计算时不会考虑这台路由器。当路由器内存不足时,系统自动在发送的LSP报文中设置过载标志位。 -
IS Type(2bit):生成LSP的路由器的类型。用来指明是Level-1还是Level-2路由器(01表示Level-1,11表示Level-2)。
LSDB:链路状态数据库:
-
*表示自身生成的LSP. -
伪节点ID:当该参数不为零时,表示该LSP为伪节点生成。用于描述区域内IS信息。 -
分片号:当IS-IS要发布的链路状态协议数据报文PDU(Protocol Data Unit)中的信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息。分片号用来区分不同的LSP分片。
# 因为AR1是L1的路由器只能看到L1的LSDB,如果是L1-2路由器会有两个级别的LSDB信息
<AR1>dis isis lsdb
Database information for ISIS(1)
--------------------------------
Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
-------------------------------------------------------------------------------
0010.0100.1001.00-00* 0x00000005 0xcf76 688 97 0/0/0
0010.0100.1001.01-00* 0x00000002 0xcf38 688 55 0/0/0
0010.0100.1001.02-00* 0x00000002 0x31b3 688 55 0/0/0
0020.0200.2002.00-00 0x00000008 0xc8f0 706 86 1/0/0
0030.0300.3003.00-00 0x00000007 0x27b 654 86 1/0/0
Total LSP(s): 5
*(In TLV)-Leaking Route, *(By LSPID)-Self LSP, +-Self LSP(Extended),
ATT-Attached, P-Partition, OL-Overload
可以查看LSP的详细信息:
# 查看非伪节点00的LSP
<AR1>dis isis lsdb 0010.0100.1001.00-00 verbose
Database information for ISIS(1)
--------------------------------
Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
-------------------------------------------------------------------------------
0010.0100.1001.00-00* 0x00000006 0xcd77 1126 97 0/0/0
SOURCE 0010.0100.1001.00
NLPID IPV4
AREA ADDR 49.0001
INTF ADDR 12.1.1.1
INTF ADDR 13.1.1.1
NBR ID 0010.0100.1001.02 COST: 10
NBR ID 0010.0100.1001.01 COST: 10
IP-Internal 12.1.1.0 255.255.255.0 COST: 10
IP-Internal 13.1.1.0 255.255.255.0 COST: 10
Total LSP(s): 1
*(In TLV)-Leaking Route, *(By LSPID)-Self LSP, +-Self LSP(Extended),
ATT-Attached, P-Partition, OL-Overload
-
AREA ADDR:该LSP来源的区域号INTF -
ADDR:该LSP中描述的接口地址 -
NBR ID:该LSP中描述的邻接信息 -
IP-Internal:该LSP中描述的网段信息
在伪节点LSP中,只包含邻接信息而不包含路由信息。
<AR1>dis isis lsdb 0010.0100.1001.01-00 verbose
Database information for ISIS(1)
--------------------------------
Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
-------------------------------------------------------------------------------
0010.0100.1001.01-00* 0x00000003 0xcd39 1011 55 0/0/0
SOURCE 0010.0100.1001.01
NLPID IPV4
NBR ID 0010.0100.1001.00 COST: 0
NBR ID 0020.0200.2002.00 COST: 0
Total LSP(s): 1
*(In TLV)-Leaking Route, *(By LSPID)-Self LSP, +-Self LSP(Extended),
ATT-Attached, P-Partition, OL-Overload
查询命令:
# 查询DIS
dis isis interface
# 查询lsdb信息
dis isis lsdb
# 查询详细数据库信息
dis isis lsdb verbose
# 查询isis邻接关系
dis isis peer
# 查询isis路由
dis isis route
# 查询isis概述,进程,接口开销,链路类型等信息
dis isis brief
简单说就是AR1产生了3条LSP,伪节点标识00是AR1产生的,里面包含了邻接关系和路由,伪节点标识01和02是DIS产生的,里面只有邻接关系而没有路由信息。以及AR2和AR3的L1的LSP,在LSDB上还能看到ATT/P/OL的置位信息。
1.1 CSNP
CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互 CSNP来判断是否需要同步LSDB。
-
在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)。 -
在点到点网络上,CSNP只在第一次建立邻接关系时发送。
1.2 PSNP
PSNP只包含部分LSP的摘要信息(与CSNP不同,类型LSR,请求没有的LSR):
当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。
在点到的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认。(LSACK)
1.3 广播网络LSP同步过程
-
新加入的路由器R3首先发送IIH报文,与该广播域中的路由器建立邻接关系。建立邻接关系之后,R3等待LSP刷新定时器超时,然后将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻接都将收到该LSP。 -
该网段中的DIS会把收到R3的LSP加入到LSDB中,并等待CSNP报文定时器超时并发送CSNP报文。 -
R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP。 -
DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB的同步。
简单如下:
-
DIS同步更新邻接关系和维护LSDB,每10S发送CSNP(全量数据库信息) -
新加入邻居对比本地的LSDB,发现缺少的LSP,发送PSNP(缺少的部分LSP)
1.4 点到点网络LSP同步
简单就是建立邻接关系时发送CSNP,如果不全则请求PSNP。
LSP处理机制:
IS-IS通过交互LSP实现链路状态数据库同步,路由器收到LSP后,按照以下原则处理:
若收到的LSP比本地LSP的更优,或者本地没有收到的LSP:
-
在广播网络中:将其加入数据库,并组播发送新的LSP。 -
在点到点网络中:将其加入数据库,并发送PSNP报文来确认收到此LSP,之后将这新的LSP发送给除了发送该LSP的邻居以外的邻居。
若收到的LSP和本地LSP无法比较出优劣,则不处理该LSP。
简单说就是根据序列号判断新旧,序列号大的优先,如果相同则不处理更新。
总结:IS-IS路由器建立邻接关系后通过LSP( Link State PDU,链路状态报文) 交换链路状态信息。在广播网络中由DIS伪节点每10S发送全量CSNP,如果IS-IS路由器本地没有对应的LSP则发送PSNP请求更新。LSP的处理机制:根据序列号判断新旧,序列号大的优先,如果相同则不处理更新。