计算机网络-IS-IS链路状态数据库同步

时间:2024-04-25 15:39:04

在建立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有相同的报文格式。

报文格式: 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:链路状态数据库:

LSDB
LSDB
自身产生的LSP
自身产生的LSP
  • *表示自身生成的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只在第一次建立邻接关系时发送。
CSNP报文
CSNP报文

1.2 PSNP

PSNP只包含部分LSP的摘要信息(与CSNP不同,类型LSR,请求没有的LSR):

当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。

在点到的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认。(LSACK)

PSNP报文
PSNP报文

1.3 广播网络LSP同步过程

LSP同步
LSP同步
  1. 新加入的路由器R3首先发送IIH报文,与该广播域中的路由器建立邻接关系。建立邻接关系之后,R3等待LSP刷新定时器超时,然后将自己的LSP发往组播地址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。这样网络上所有的邻接都将收到该LSP。
  2. 该网段中的DIS会把收到R3的LSP加入到LSDB中,并等待CSNP报文定时器超时并发送CSNP报文。
  3. R3收到DIS发来的CSNP报文,对比自己的LSDB数据库,然后向DIS发送PSNP报文请求自己没有的LSP。
  4. DIS收到该PSNP报文请求后向R3发送对应的LSP进行LSDB的同步。

简单如下:

  • DIS同步更新邻接关系和维护LSDB,每10S发送CSNP(全量数据库信息)
  • 新加入邻居对比本地的LSDB,发现缺少的LSP,发送PSNP(缺少的部分LSP)

1.4 点到点网络LSP同步

P2P同步
P2P同步

简单就是建立邻接关系时发送CSNP,如果不全则请求PSNP。

LSP处理机制:

LSP处理机制
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的处理机制:根据序列号判断新旧,序列号大的优先,如果相同则不处理更新。