6.2 IS-IS数据库同步
OSPF和IS-IS详解
OSPF路由器要想启动数据库交换过程,不但需要其邻居路由器明确同意,还得依靠状态机来进行严格地管理;而IS-IS路由器交换数据库的过程要简单很多,邻居路由器之间会定期把自己的整个数据库“秀”给对方看1。
通过点到点链路互连的IS-IS路由器之间会定期互发CSNP,向对方“展示”本机LS数据库里的内容。若一台路由器在收到的CSNP中发现了本机未知的LSP,或本机已知的LSP的最新拷贝,便会发出PSNP,请求邻居路由器发送相关LSP的拷贝。同理,该路由器若在收到的CSNP中发现,邻居路由器缺少本机数据库中的某条LSP,或本机数据库里的某条LSP的拷贝要比邻居路由器的新,便会“主动”把相关LSP的拷贝发送给邻居路由器。
在广播网络内,DIS会定期以多播方式发送CSNP;跟点到点链路互连的IS-IS路由器一样,此类网络内的其他路由器也会拿DIS发出的CSNP中的内容,跟本机数据库里的内容进行比对,然后,根据比对结果,向DIS发出PSNP(请求其发送本机所需的LSP),或者向DIS发出(其数据库里没有的)LSP。
本节会详细介绍CSNP和PSNP的格式,并会详谈IS-IS路由器是如何利用两种协议消息,向邻居路由器展示(本机所持LSP)、请求(本机所缺LSP)以及间接确认(本机所收)LSP的。
6.2.1 数据库同步过程中所使用的IS-IS PDU
4种基本类型的IS-IS PDU中,有3种都会在数据库同步过程中用到,如下所列。
- 链路状态PDU(PDU类型字段值为18[L1]或20[L2])。
- 完全序列号PDU(PDU类型字段值为24[L1]或25[L2])。
- 部分序列号PDU(PDU类型字段值为26[L1]或27[L2])。
第5章已经介绍过了邻居路由器之间如何泛洪LSP,以及IS-IS路由器如何利用序列号PDU来确认收到的LSP,但是并未深入探讨序列号PDU。序列号PDU为数据库同步过程中所不可或缺,本章会做详细讨论。
图6.15所示为完全序列号PDU(CSNP)的格式,其作用是向L1或L2邻居路由器展示本机数据库的内容。L1和L2 CSNP的(PDU)类型字段值分别为24(0x18)和25(0x19)。
源(路由器)ID字段,由生成(LSP的)路由器的SysID(6字节)和电路ID(1字节)组成。电路ID总是被设置为0x00。
起始LSP ID和结束LSP ID字段,这两个字段共同定义了一个连续的LSP ID的范围,涵盖了本CSNP所能“展示”的所有LSP ID。这两个字段值不必是真实的LSP ID。比方说,若某台IS-IS路由器只需通过单条CSNP消息,便能完全“展示”其数据库里的LSP,则这条CSNP消息中的起始LSP ID字段值和结束LSP ID字段值将分别为0000.0000.0000.00.00和ffff.ffff.ffff.ff.ff。这两个字段值所定义的LSP ID的范围,涵盖了那条CSNP消息所能展示的所有LSP ID。要是那台IS-IS路由器需发出多条CSNP消息,才能完全“展示”其数据库里的LSP,那么在每条CSNP消息中,那两个字段值所定义的LSP ID的范围,将会涵盖本CSNP消息所要展示的LSP ID。比如,该IS-IS路由器为完全展示本机数据库,需要发出两条CSNP消息。那么,若在第一条CSNP消息中,那两个字段值分别为0000.0000.0000.00.00和0000.abcd.1234.00.00;则在第二条CSNP消息中,那两个字段值将会是0000.abcd.1234.00.01和ffff.ffff.ffff.ff.ff。因此,接收(CSNP)的邻居路由器通过解读那两个字段,不但能识别出“一串”CSNP中的“首尾”,而且还能发现“一串”CSNP消息当中是否有一条或多条传丢。
有以下两种TLV结构可能会在CSNP中露面:
- LSP条目TLV;
- 认证信息TLV。
认证信息TLV主要是起对IS-IS协议消息进行安全认证的作用,将在第9章讨论。LSP条目TLV是CSNP中不可或缺的TLV,其作用是唯一地标识(需通过CSNP消息展示的)LSP。该TLV结构标识LSP的方法是,在其值(V)字段中包含该LSP头部中的剩余生存时间、LSP ID、LSP序列号以及校验和字段。图6.16所示为LSP条目TLV的格式,其类型字段值为9(0x09)。
图6.17所示为部分序列号PDU(PSNP)的格式,顾名思义,它所包含的内容就是本机数据库里部分LSP的序列号。利用PSNP,IS-IS路由器既可以直接确认本机(通过点到点链路)收到的LSP,也可以向L1或L2邻居路由器请求本机所需要的LSP。PSNP的PDU类型字段值为26(0x1A)(L1)和27(0x1B)(L2)。
源(路由器)ID字段,由生成(LSP的)路由器的SysID(6字节)和电路ID(1字节)组成。电路ID总是被设置为0x00。
与CSNP一样,在PSNP内,也可以包含认证信息TLV和LSP条目TLV,其中,后者是用来展示(本路由器所持)LSP的基本TLV结构。
6.2.2 设置路由消息标记和序列号消息标记
第5章已经简要介绍过在(LSP)泛洪过程中会用到的发送路由消息(Send Routing Message ,SRM)标记。现在,来重新回忆一下。
SRM标记是一种内部标记。IS-IS路由器会基于(其接口所连)每条链路,为存储在LS数据库内的每条LSP,创建一组SRM标记。也就是说,若一台IS-IS路由器有5个接口(连接了5条链路),其LS数据库内有20条LSP,则每条LSP需与5个SRM标记“挂钩”,共需创建100个SRM标记。当IS-IS路由器决定要通过某特定接口(链路)发出LSP时,便会让相关LSP“打上”为该接口(链路)分配的SRM标记。IS-IS路由器会每隔一段时间(这段时间被称为LSP最短发送间隔期[minimum LSP transmission interval]),扫描一次LS数据库。只要“发现”有LSP“打上”了为点到点链路分配的SRM标记,IS-IS路由器就会通过相应的点到点链路向外发送。IS-IS路由器通过广播链路外发LSP的行为要稍微复杂一点:路由器会每隔“LSP最短发送间隔期”,扫描一次LS数据库,然后从一组LSP(这组LSP都“打上”了为此广播接口[链路]分配的SRM标记)中随机选择一条,然后向外发送2。IS-IS路由器(在广播链路上)随机选择LSP,然后向外发送,可大大降低多台路由器同时向DIS发送同一条LSP的概率。
(设置或清除)SRM标记,不单是(LSP)泛洪机制的一部分,同时也是LS数据库同步机制的一部分。当IS-IS路由器通过某特定接口(链路)发出LSP时,便会把相关LSP“打上”为该接口(链路)分配的SRM标记。对于广播链路(接口),IS-IS路由器只要通过其发出了LSP,就会立即清除相关SRM标记;而对于点到点链路(接口),只有当发出的LSP得到了(邻居路由器的)确认,IS-IS路由器才会清除相关SRM标记。在这一块,SRM标记所起的作用有点像OSPF链路状态发送列表。不过,两者之间有一处最主要的区别,那就是:OSPF链路状态发送列表与邻居路由器“挂钩”(作为OSPF邻居数据结构的一部分),而SRM标记只和接口(链路)“挂钩”。
在LS数据库的同步过程中,IS-IS路由器还会(为LSP)设置一种名叫发送序列号(Send Sequence Number ,SSN)的内部标记。与设置SRM标记一样,IS-IS路由器也会基于每个参与IS-IS进程的接口(IS-IS接口),为每条LSP设置SSN标记。一条LSP被打上SSN标记,即表明在相关IS-IS接口(与该SSN标记相关联的IS-IS接口)外发的PSNP中,会“展示”这条LSP。当这条LSP的SSN标记被清除时,则表示IS-IS路由器已经发出了“展示”该LSP的PSNP。在LS数据库同步期间,IS-IS SSN标记所起的作用类似于OSPF链路状态请求列表。再次重申,与SSN标记挂钩的是路由器接口,并非某台具体的邻居路由器。
在点到点网络环境和广播网络环境中,IS-IS路由器对上述两种标记的使用,以及相互之间同步LS数据库的规程都各不相同。以下两节将详述在这两种类型的网络环境中,IS-IS路由器之间同步LS数据库的规程。
6.2.3 点到点网络环境中的LS数据库同步
通过点到点链路新近建立起邻接关系时,两台IS-IS路由器都会基于与此链路相连的接口,为所有LSP设置SRM标记,然后发出CSNP,相互“展示”本机LS数据库里的全部内容。至于发出的是L1 CSNP还是L2 CSNP,则要视所建立的邻接关系类型(L1或L2)而定。收到邻居路由器发出的CSNP之后,每台IS-IS路由器都会拿CSNP中所“展示”的LSP,跟本机数据库里的LSP进行比对。比对方式是,根据CSNP中“起始LSP ID”和“结束LSP ID”字段值所定义的LSP ID的范围,按序对CSNP 的LSP ID(即CSNP所含LSP条目TLV结构中的LSP ID字段值)和本机数据库里的LSP ID进行比对。每进行一次比对,IS-IS路由器都会采取以下动作之一。
若CSNP中有LSP ID与本机数据库所含LSP的LSP ID相同,则清除与相关接口(用来连接点到点链路的接口)“挂钩”的LSP的SRM标记。
若发现了本机未知的LSP(即CSNP所含LSP条目TLV结构中的LSP ID字段值,未在本机LS数据库里“露面”),则针对此LSP在本机LS数据库创建一条序列号字段值为0的记录,表示“暂缺”该LSP的内容。IS-IS路由器不会为序列号字段值为0的LSP设置SRM标记,这意味着,不能泛洪此类LSP。然后,为这条新近创建的LSP的记录设置SSN标记。于是,一条“展示”该LSP的PSNP会发往(通告该CSNP的)邻居路由器,以请求其发送该新版LSP。
若本机LS数据库里所含LSP的“版本”新于CSNP中所“展示”的LSP,IS-IS路由器会清除针对该LSP设置的SSN标记,并同时为其设置与(接收CSNP的)接口“挂钩”的SRM标记,然后以单播方式向(通告该CSNP的)邻居路由器发送这条新版LSP(即这条LSP的最新版本)。
若存储在本机LS数据库里的LSP的“版本”要比CSNP所“展示”的LSP“老”,IS-IS路由器会清除针对该LSP设置的SRM标记,并同时为其设置与(接收CSNP的)接口“挂钩”的SSN标记。如此一来,本机数据库里老版LSP便不得泛洪而出。然后,IS-IS路由器还会以单播方式向(通告该新版CSNP的)邻居路由器发送“展示”该LSP的PSNP,以请求邻居路由器,发送该新版LSP。
若存储在本机LS数据库里的LSP,其序列号和生存时间都不为0,其LSP ID也在包含在(收到的)CSNP的“起始LSP ID”和“结束LSP ID”字段值所定义的LSP ID的范围之内,但该CSNP的条目TLV结构的LSP ID字段中却并没有包含该LSP ID,则IS-IS路由器会基于(接收该CSNP的)接口,为这条LSP设置SRM标记,然后以单播方式向(通告该CSNP的)邻居路由器发送这条LSP。
在点到点网络环境中,PSNP还起对收到的LSP进行确认的作用。当IS-IS路由器向邻居路由器发送LSP时,便会将其“打上”为相关接口(外发LSP的接口)分配的SRM标记。IS-IS路由器会每隔5秒钟(即minimumLSPTransmissionInterval[LSP最短发送间隔期]),重传已基于接口打上了SRM标记的LSP,以及在5秒钟之前未发送成功的LSP。收到了邻居路由器发出的PSNP,表明已经收到了自己之前发出的LSP时,IS-IS路由器便会清除为这条(些)LSP设置的SRM标记,这意味着不再重传那条(些)LSP。
当IS-IS路由器(通过点到点链路)收到LSP时,会采取以下动作之一。
若收到的LSP的“版本”新于本机LS数据库里的LSP(或本机数据库里包含了一条序列号为0的该LSP的记录),则以这条新版LSP替换数据库里现有的LSP。然后,基于所有接口(除接收该LSP的接口),为这条新版LSP设置SRM标记,同时清除为接收该LSP的接口设置的SRM标记,好让这条新版LSP能泛洪至所有邻居路由器(通告此LSP的邻居路由器不在泛洪之列)。
若本机LS数据库里的LSP的ID与收到的LSP的ID不匹配,则在数据库中安装收到的LSP。然后与收到“新版”LSP时相同(详见上一条所述),再基于所有接口(除接收该LSP的接口),为这条LSP设置SRM标记,同时清除为接收该LSP的接口设置的SRM标记,好让这条LSP能泛洪给所有邻居路由器(通告此LSP的邻居路由器除外)。
若收到的LSP的“版本”比本机LS数据库里的LSP要“老”,则基于接收(这条老版LSP的)接口,(为新版LSP)设置的SRM标记,然后通过该接口,向(通告这条老版LSP的)邻居路由器发送本机数据库里的新版LSP。最后,清除基于此接口为此LSP设置的SSN标记。
若收到的LSP的“版本”与本机LS数据库里的LSP相同,则清除基于接收(这条LSP的)接口为这条LSP设置的SRM标记;但会同时基于该接口为这条LSP设置SSN标记,其目的是,通过该接口发出PSNP,向邻居路由器确认本机收到了这条LSP。
如本节第一段所述,IS-IS路由器之间邻居关系一经建立,双方都会基于(用来建立邻接关系的)接口,为存储在本机数据库里的所有LSP设置SRM标记。这样一来,即便邻居路由器未发出PSNP,请求(本路由器)发送LSP,本路由器仍会在5秒的minimumLSPTransmissionInterval(LSP最短发送间隔期)之后,向邻居路由器发出LSP,若邻居路由器仍未收到,则会每隔5秒发送一次,直至邻居路由器确认收到为止。
这也意味着,IS-IS路由器之间建立邻接关系时,由于LSP泛洪是由SRM机制所触发,因此即便(IS-IS路由器之间)不互发CSNP,数据库同步也照样会进行。发送CSNP只是对数据库同步过程进行了优化,好让邻居路由器之间只交换本机需要的LSP。
6.2.4 广播网络环境中的LS数据库同步
在广播网络环境中,所有OSPF路由器都会跟DR相互同步LS数据库,与此相同,IS-IS路由器也会跟DIS相互同步LS数据库。但相同之处仅限于此。
主要区别在于:发往DR/BDR和DROthers的OSPF路由协议数据包的目的多播地址各不相同,而发往DIS和其他所有路由器的IS-IS路由协议消息的目的多播地址却完全相同。当然,L1和L2 IS-IS路由协议消息的目的多播地址还是会有所区分。CSNP、PSNP以及LSP都以多播方式发送,能被接入同一广播网络的所有路由器同时接收。所以说,若路由器A发出PSNP,请求(其邻居路由器B)发送某条LSP,则接入同一广播网络、同样“缺少”这条LSP的其他路由器也会“看见”这条PSNP(即缺少这条LSP的其他所有路由器都会得知,请求该LSP的PSNP已经发出)。同理,只要任何一台邻居路由器发出了LSP,接入同一广播网络的所有路由器都能收到这条LSP,可视需求,将其拷贝存储进本机LS数据库。
DIS会每隔CompleteSNPInterval(CSNP发送间隔期),发出“展示”其数据库完整内容的CSNP。CompleteSNPInterval通常为10秒,该值可以配置,取值范围为1~65535秒3。CSNP会以多播而非单播方式发送,接入广播网络的所有路由器都能接收得到。通过广播网络接口收到CSNP时,路由器也会按序对CSNP 的LSP ID与本机数据库里的LSP ID做一番比对,这跟6.2.3节所描述的通过点到点接口收到CSNP时,没任何区别。
不过,当IS-IS路由器通过广播接口,以多播方式发出LSP时,会清除基于该接口为LSP设置的SRM标记,并不会继续保留SRM标记(通过点到点接口发出LSP时,IS-IS路由器会保留基于该接口设置的SRM标记)。这是因为接入广播网络的所有路由器都会以多播方式发送CSNP,这也起到了“间接”对收到的LSP进行确认的效果。若某台非DIS路由器发出了LSP,但却没有被DIS接收,只要该DIS在随后发出的CSNP中未能“呈现”出该LSP,那台非DIS路由器就会得知。然后,便会重新发送这条LSP。同理,若广播网络内的某台路由器未能收到(DIS发出的)LSP,当(DIS)重新发送CSNP时,这台路由器必会得知,随即便会发出PSNP,请求DIS发送这条LSP。
(接入广播网络的IS-IS路由器)在收到LSP时的处理方式也跟6.2.3节所述基本相同,但有一处例外,那就是只要收到的LSP的“版本”不“老”于存储在本机数据库里的LSP,便不会为此LSP设置SSN标记。这便表明,IS-IS路由器不会发出PSNP,来确认收到的此类LSP。这一处理方式可避免这样一种情况的发生:接入广播网络的多台路由器同时对收到的同一条LSP进行确认。接入广播网络的所有路由器只要都定期发出CSNP,就能在不降低可靠性的情况下,对收到的LSP进行间接确认。
5.1.2节曾提到,IS-IS路由器会每隔minimumLSPTransmissionInterval(LSP最短发送间隔期),扫描一次LS数据库,从一组LSP(这组LSP都“打上”了为广播接口[链路]分配的SRM标记)中随机选择一条,然后通过广播接口向外发送4。该机制能够让(接入广播网络的)多台路由器尽可能去分摊LSP更新过程所带来的负担。由于在广播网络环境中,所有IS-IS路由协议消息都以多播方式发送,因此在数据库同步期间,网络内的每一台路由器都对(其他所有路由器的)数据库同步的进展情况一清二楚。也就是说,若一台路由器发出PSNP,请求邻居路由器发送一条(或多条)LSP,则该路由器的“举动”会暴露在“众目睽睽”之下。假设该路由器所请求的是新版LSP,而网络内所有其他路由器可能都持有该LSP的拷贝,但只有DIS会发出该路由器通过PSNP所请求的LSP,这便避免了同一条LSP的多份拷贝在网络内“泛滥”。在数据库同步期间,OSPF路由器只跟DR进行同步(亦即DROthers发出的OSPF路由协议数据包,只有DR/BDR才能收到),而定期发出CSNP的DIS所起的作用更像是一个参考点。同理,在广播网络环境中,以多播方式“冲着”某台路由器发出的LSP(即这台路由器之前发出了PSNP,请求邻居路由器发送这条LSP),由于此类LSP以多播方式发出,因此能够被需要这条(些)LSP的多台路由器接收。
6.2.5 IS-IS排障方法1:学会解读路由器生成的日志记录及Debug输出信息
排查OSPF故障时,若绞尽脑汁都查不出邻居路由器之间LS数据库不能同步的原因,那就有必要去解读路由器生成的与数据库同步有关的日志记录。这一排障思路同样适用于排除IS-IS路由器之间LS数据库不能同步的故障。图6.18和图6.19所示为两台IS-IS路由器同步各自的LS数据库时,生成的日志记录。
这两台路由器一台是Cisco路由器(Cisco8),另一台是Juniper路由器(Juniper6)。请读者在阅读这两台路由器生成的与数据库同步有关的日志记录时,回答以下问题。
- 两台路由器的互连接口(用来建立IS-IS邻接关系的接口)的MAC地址分别是什么?
- 两台路由器的互连接口(用来建立IS-IS邻接关系的接口)的IP地址分别是什么?
- 两台路由器的互连接口的电路类型分别是什么,是L1-only、L2-only还是L1/L2?
- 两台路由器之间建立的是L1还是L2邻接关系?
- 每台路由器发出的LSP的LSP ID字段值分别是什么?
- 从每一台路由器的视角来看,首次验证邻居之间具备双向连通性的时间点是什么?
jeff@Juniper6> show log isis_sync
Dec 28 22:01:48 ISIS link layer change on interface fe-4/0/0.0
Dec 28 22:01:48 ISIS interface fe-4/0/0.0 up
Dec 28 22:01:48 ISIS interface fe-4/0/0.0 up
Dec 28 22:01:50 Received L2 LAN IIH, source id Cisco8 on fe-4/0/0.0
Dec 28 22:01:50 intf index 5 addr 0.e0.1e.60.a.3e, snpa 0:e0:1e:60:a:3e
Dec 28 22:01:50 max area 0, circuit type l1l2, packet length 1497
Dec 28 22:01:50 hold time 10, priority 64, circuit id Cisco8.01
Dec 28 22:01:50 speaks IP
Dec 28 22:01:50 area address 47.0020 (3)
Dec 28 22:01:50 IP address 192.168.7.2
Dec 28 22:01:50 1443 bytes of total padding
Dec 28 22:01:50 new neighbor for Cisco8
Dec 28 22:01:50 new adjacency for Cisco8 on fe-4/0/0.0, level 2
Dec 28 22:01:50 Adjacency state change, Cisco8, state New -> Initializing
Dec 28 22:01:50 interface fe-4/0/0.0, level 2
Dec 28 22:01:51 Sending L2 LAN IIH on fe-4/0/0.0
Dec 28 22:01:51 max area 0, circuit type l2
Dec 28 22:01:51 neighbor 0:e0:1e:60:a:3e
Dec 28 22:01:51 No candidates for DR
Dec 28 22:01:51 hold time 27, priority 64, circuit id Juniper6.05
Dec 28 22:01:51 speaks IP
Dec 28 22:01:51 speaks IPv6
Dec 28 22:01:51 IP address 192.168.7.1
Dec 28 22:01:51 area address 47.0103 (3)
Dec 28 22:01:51 1429 bytes of total padding
Dec 28 22:01:51 Received L2 LAN IIH, source id Cisco8 on fe-4/0/0.0
Dec 28 22:01:51 intf index 5 addr 0.e0.1e.60.a.3e, snpa 0:e0:1e:60:a:3e
Dec 28 22:01:51 max area 0, circuit type l1l2, packet length 1497
Dec 28 22:01:51 hold time 10, priority 64, circuit id Cisco8.01
Dec 28 22:01:51 speaks IP
Dec 28 22:01:51 area address 47.0020 (3)
Dec 28 22:01:51 IP address 192.168.7.2
Dec 28 22:01:51 neighbor 0:d0:b7:7f:d:5 (ourselves)
Dec 28 22:01:51 1435 bytes of total padding
Dec 28 22:01:51 updating neighbor Cisco8
Dec 28 22:01:51 Adjacency state change, Cisco8, state Initializing -> Up
Dec 28 22:01:51 interface fe-4/0/0.0, level 2
Dec 28 22:01:51 Updating LSP
Dec 28 22:01:51 Scheduling L2 LSP Juniper6.00-00 sequence 0x8a on interface
fe-4/0/0.0
Dec 28 22:01:51 Sending L2 LSP Juniper6.00-00 on interface fe-4/0/0.0
Dec 28 22:01:51 sequence 0x8a, checksum 0x3d2a, lifetime 1200
Dec 28 22:01:52 Received L2 LSP Cisco8.00-00, interface fe-4/0/0.0
Dec 28 22:01:52 from Cisco8
Dec 28 22:01:52 sequence 0x9, checksum 0xce83, lifetime 1199
Dec 28 22:01:52 max area 0, length 78
Dec 28 22:01:52 no partition repair, no database overload
Dec 28 22:01:52 IS type 3, metric type 0
Dec 28 22:01:52 area address 47.0020 (3)
Dec 28 22:01:52 speaks IP
Dec 28 22:01:52 dyn hostname Cisco8
Dec 28 22:01:52 IP address 192.168.7.2
Dec 28 22:01:52 IS neighbors:
Dec 28 22:01:52 IS neighbor Cisco8.01
Dec 28 22:01:52 internal, metrics: default 10
Dec 28 22:01:52 IP prefix 192.168.7.0 255.255.255.0
Dec 28 22:01:52 internal, metrics: default 10
Dec 28 22:01:52 Updating LSP
Dec 28 22:01:52 Received L2 LSP Cisco8.01-00, interface fe-4/0/0.0
Dec 28 22:01:52 from Cisco8
Dec 28 22:01:52 sequence 0x7, checksum 0xdcee, lifetime 1199
Dec 28 22:01:52 max area 0, length 52
Dec 28 22:01:52 no partition repair, no database overload
Dec 28 22:01:52 IS type 3, metric type 0
Dec 28 22:01:52 IS neighbors:
Dec 28 22:01:52 IS neighbor Cisco8.00
Dec 28 22:01:52 internal, metrics: default 0
Dec 28 22:01:52 IS neighbor Juniper6.00
Dec 28 22:01:52 internal, metrics: default 0
Dec 28 22:01:52 Updating LSP
Dec 28 22:01:52 Adding a half link from Cisco8.01 to Juniper6.00
Dec 28 22:01:52 Adding a half link from Cisco8.01 to Cisco8.00
Dec 28 22:01:55 Received L2 CSN, source Cisco8, interface fe-4/0/0.0
Dec 28 22:01:55 LSP range 0000.0000.0000.00-00 to ffff.ffff.ffff.ff-ff
Dec 28 22:01:55 packet length 163
Dec 28 22:01:55 LSP Juniper5.00-00 lifetime 672
Dec 28 22:01:55 sequence 0x4567 checksum 0x646c
Dec 28 22:01:55 Matched database, matching sequence numbers
Dec 28 22:01:55 LSP Juniper5.04-00 lifetime 752
Dec 28 22:01:55 sequence 0x1c checksum 0xcfb8
Dec 28 22:01:55 Matched database, matching sequence numbers
Dec 28 22:01:55 LSP Juniper6.00-00 lifetime 973
Dec 28 22:01:55 sequence 0x84 checksum 0xbbcc
Dec 28 22:01:55 Matched database, neighbor is out of date, sending LSP
Dec 28 22:01:55 LSP Juniper7.00-00 lifetime 474
Dec 28 22:01:55 sequence 0x466c checksum 0x415a
Dec 28 22:01:55 Matched database, matching sequence numbers
Dec 28 22:01:55 LSP Juniper7.02-00 lifetime 705
Dec 28 22:01:55 sequence 0x26 checksum 0x1a60
Dec 28 22:01:55 Matched database, matching sequence numbers
Dec 28 22:01:55 LSP Juniper7.03-00 lifetime 416
Dec 28 22:01:55 sequence 0x1f checksum 0x215f
Dec 28 22:01:55 Matched database, matching sequence numbers
Dec 28 22:01:55 LSP Cisco8.00-00 lifetime 1196
Dec 28 22:01:55 sequence 0x9 checksum 0xce83
Dec 28 22:01:55 Matched database, matching sequence numbers
Dec 28 22:01:55 LSP Cisco8.01-00 lifetime 1196
Dec 28 22:01:55 sequence 0x7 checksum 0xdcee
Dec 28 22:01:55 Matched database, matching sequence numbers
Dec 28 22:01:55 Sending L2 LSP Juniper6.00-00 on interface fe-4/0/0.0
Dec 28 22:01:55 sequence 0x8a, checksum 0x3d2a, lifetime 1198
Dec 28 22:02:00 Analyzing subtlv’s for Cisco8.01
Dec 28 22:02:00 IP address: 192.168.7.1
Dec 28 22:02:00 Analysis complete
Dec 28 22:02:00 Scheduling L2 LSP Juniper6.00-00 sequence 0x8b on interface
fe-4/0/0.0
Dec 28 22:02:00 Sending L2 LSP Juniper6.00-00 on interface fe-4/0/0.0
Dec 28 22:02:00 sequence 0x8b, checksum 0x26e7, lifetime 1200
jeff@Juniper6>
图6.18 Juniper路由器生成的与IS-IS数据库同步有关的日志记录
Cisco8#
17:15:39: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0, changed state to
up
Dec 28 22:01:50: ISIS-Adj: Sending L1 LAN IIH on Ethernet0, length 1497
Dec 28 22:01:50: ISIS-Adj: Sending L2 LAN IIH on Ethernet0, length 1497
Dec 28 22:01:51: ISIS-Adj: Rec L2 IIH from 00d0.b77f.0d05 (Ethernet0), cir type L2,
cir id 0192.0168.0006.05, length 1492
Dec 28 22:01:51: ISIS-Adj: New adjacency, level 2 for 00d0.b77f.0d05
Dec 28 22:01:51: ISIS-Adj: Sending L2 LAN IIH on Ethernet0, length 1497
Dec 28 22:01:51: ISIS-Upd: Received LSP from SNPA 00d0.b77f.0d05 (Ethernet0) without
adjacency
Dec 28 22:01:52: ISIS-Upd: Building L1 LSP
Dec 28 22:01:52: ISIS-Upd: Full SPF required
Dec 28 22:01:52: ISIS-Upd: Building L2 LSP
Dec 28 22:01:52: ISIS-Upd: Full SPF required
Dec 28 22:01:52: ISIS-Adj: Adjacency state goes to Up
Dec 28 22:01:52: ISIS-Adj: Run level-2 DR election for Ethernet0
Dec 28 22:01:52: ISIS-Adj: No change (it’s us)
Dec 28 22:01:52: ISIS-Upd: Building L2 pseudonode LSP for Ethernet0
Dec 28 22:01:52: ISIS-Upd: Full SPF required
Dec 28 22:01:52: ISIS-Upd: Sending L2 LSP 0192.0168.0008.00-00, seq 9, ht 1199 on
Ethernet0
Dec 28 22:01:52: ISIS-Upd: Sending L2 LSP 0192.0168.0008.01-00, seq 7, ht 1199 on
Ethernet0
Dec 28 22:01:53: ISIS-Adj: Sending L1 LAN IIH on Ethernet0, length 1497
Dec 28 22:01:53: ISIS-Upd: Building L2 LSP
Dec 28 22:01:53: ISIS-Upd: No change, suppress L2 LSP 0192.0168.0008.00-00, seq A
Dec 28 22:01:55: ISIS-Snp: Sending L2 CSNP on Ethernet0
Dec 28 22:01:55: ISIS-Upd: Rec L2 LSP 0192.0168.0006.00-00, seq 8A, ht 1194,
Dec 28 22:01:55: ISIS-Upd: from SNPA 00d0.b77f.0d05 (Ethernet0)
Dec 28 22:01:55: ISIS-Upd: LSP newer than database copy
Dec 28 22:01:55: ISIS-Upd: Full SPF required
Dec 28 22:02:00: ISIS-Adj: Run level-2 DR election for Ethernet0
Dec 28 22:02:00: ISIS-Adj: No change (it’s us)
Dec 28 22:02:00: ISIS-Upd: Rec L2 LSP 0192.0168.0006.00-00, seq 8B, ht 1198,
Dec 28 22:02:00: ISIS-Upd: from SNPA 00d0.b77f.0d05 (Ethernet0)
Dec 28 22:02:00: ISIS-Upd: LSP newer than database copy
Dec 28 22:02:00: ISIS-Upd: Full SPF required
Dec 28 22:02:03: ISIS-Upd: Building L1 LSP
Dec 28 22:02:03: ISIS-Upd: Important fields changed
Dec 28 22:02:03: ISIS-Upd: Full SPF required
Dec 28 22:02:03: ISIS-Snp: Sending L2 CSNP on Ethernet0
图6.19 Cisco路由器(跟生成图6.18所示日志记录的Juniper路由器相邻)生成的与IS-IS数据库同步有关的Debug输出
6.2.6 IS-IS排障方法2:学会比较不同IS-IS路由器的LS数据库
一般而言,同一区域内IS-IS路由器间的LS数据库不会发生不同步现象,需要LS数据库进行比较的情况可谓是凤毛麟角。6.1.8节介绍的比较OSPF LS数据库的方法同样适用于比较IS-IS数据库:计算存储在每台IS-IS路由器的数据库里的LSP的校验和之和,然后加以比较,就能很快发现LS数据库是否同步。
图6.20和图6.21所示为前例中已经完成同步的那两台路由器的LS数据库的内容。请注意,Juniper路由器为L2-only;Cisco路由器为L1/L2,因此该路由器在L1和L2数据库里都分别存储了LSP。