CCIE SP-ISIS 抓包分析邻接关系

ISIS跟OSPF很相似,但大家往往对这个协议很陌生,因为大多数企业不会涉及到ISIS,即使ISP广泛使用它,但也很少会遇到ISIS发生问题,在此文中,主要总结建立邻居的详细过程。

基础概念

1. ISIS是个什么协议

ISO(国际标准化组织,发布众多标准,如OSI七层模型,现在的ISO 9001认证等)在1990年发布了10589标准,后被ITU(国际电信联盟)定义为ISIS。它最开始被用于为CLNS(Connectionless Network Service, 无连接网络服务,非IP环境)以及ITU发布的其他路由协议提供路由信息。由于良好的扩展性,所以后续被IETF加入了很多扩展功能,使其支持IP。

2. CLNS编制

CLNS利用NSAP(Network Service Access Point,网络服务)来编织,NSAP中定义了一堆名词,每次看完都会忘,索性就不要记了,对于IP工程师来说,一般不会涉及这些知识,只要知道在路由器中如何编制就可以了,如果确实需要,那么回头再查资料即可。
一个例子带过:

47.0012.0010.0100.1001.00
Area:47.0012
System ID:0010.0100.1001 一般有环回地址转换而来,这里是1.1.1.1
NSEL:00 服务标识符,始终为00
注:两个路由器必须在同样的Area下才能建立Level1的邻居关系;对于Level2没有这个限制,因为Level2相当于OSPF的域间,骨干路由。另外不管Level1/2都要有唯一的System ID。

3. ISIS报文的目的地址

ISIS所有报文都是通过组播发送的
level1:01:80:c2:00:00:14
level2:01:80:c2:00:00:15

实例解释

为了更好的理解,以一个实验为例来说明这些报文:
R1(F1/0)———-(F1/0)R2

R1的配置:

interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet1/0
 ip address 10.1.1.1 255.255.255.0
 ip router isis core
!
router isis core
 net 47.0012.0010.0100.1001.00
 passive-interface Loopback0

R2的配置:

interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!
interface FastEthernet1/0
 ip address 10.1.1.2 255.255.255.0
 ip router isis core
!
router isis core
 net 47.0012.0020.0200.2002.00
 passive-interface Loopback0

1. Hello报文

同OSPF一样,ISIS会发送Hello信息来维持邻居关系,以最大MTU发送,注意两边的MTU,也可以关掉Hello Padding,下面是TCP/IP卷1的LAN Hello插图:
isis-hello-lan-02
下面是LAN 初始Hello的详细抓包信息,在PDU中没有看到neighbor的信息,说明还没收到对端的Hello:
isis-hello-lan-01
收到对端Hello后,在Hello中会多一项,如下图所示。另外在LAN中,需要根据SNAP选举DIS,类似OSPF的DR概念,SNAP(注意这不是NSAP,这是子网接入点,用端口的MAC来标识)高的会被选为DIS,跟DR不一样的是DIS是会抢占的。
isis-hello-lan-03

2. LSP报文

类似OSPF的LSU报文,确认邻居后,R1和R2分别发送LSP宣告邻居信息和本路由器的路由信息(包括学来的路由),如下图所示,在PDU里包含“IS Reachability”和“IP Internal reachability”。注意:DIS伪节点仅仅作为维系邻接关系用,从伪节点的LSP中可以看到仅有邻居信息,而正常的网络信息是封装在真实节点的LSP中的:

R1#show isis da l2
IS-IS Level-2 Link State Database:
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime      ATT/P/OL
R1.00-00            * 0x00000012   0x52D3        671               0/0/0
R2.00-00              0x00000012   0x7B8F        939               0/0/0
R2.01-00              0x0000000C   0x2108        1172              0/0/0

R1#show isis da l2 R2.01-00 de
IS-IS Level-2 LSP R2.01-00
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime      ATT/P/OL
R2.01-00              0x0000000C   0x2108        1153              0/0/0
  Metric: 0          IS R2.00
  Metric: 0          IS R1.00

isis-lsp-04

3. CSNP报文

类似OSPF中的DBD报文,包含发送路由器的所有ISIS路由信息摘要,在LAN中,只有DIS每10s发送一次,如下图所示,可以看到R2把伪节点(LSPID后面带01的)信息放入CSNP一起发给所有ISIS路由器。
isis-csnp-05

4. PSNP报文

类似OSPF的LSR报文,部分路由信息更新,当路由器收到DIS发过来的CSNP后,会对比自己的数据库,如果少了哪项,就发送PSNP请求哪项,为了更好的看到效果,我又加一台路由器R3,跟R2建立连接,配置一样,不再说明,在R1上用“clear isis *”清掉所有数据库,看PSNP报文信息,如下图所示:
isis-PSNP-06

抓包总结分析

在R1—R2—R3这种环境下,断掉R1并清掉数据库(由于ISIS不会自动清掉数据库中的信息,即使端口down了也不会,除非LSP超时,所以要在R2和R3上同样手动执行clear),开始抓包,重新连上R1,分析抓包:

No.Time       Source  Destinat  Prot  Length Info
 8 6.485000   ca:00*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0010.0100.1001
10 6.516000   ca:01*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0020.0200.2002
12 7.422000   ca:00*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0010.0100.1001
14 7.485000   ca:01*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0020.0200.2002
!---交互Hello信息
18 7.610000   ca:01*  all-le-2  ISIS  69     L2 LSP, LSP-ID: 0020.0200.2002.01-00, Sequence: 0x00000001, Lifetime:  1199s
!---R2发送伪节点LSP,里面只有R1个R2的邻居关系,无路由可达信息
20 8.407000   ca:00*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0010.0100.1001
23 10.438000  ca:01*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0020.0200.2002
!---R1承认R2是DIS
27 11.610000  ca:01*  all-le-2  ISIS  138    L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000005, Lifetime:  1199s
!---R2发送自己的LSP,包含邻居信息(与R3的邻居关系)及路由可达信息(没有R1的)
28 11.641000  ca:00*  all-le-2  ISIS  115    L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x00000019, Lifetime:  1199s
!---R1发送自己的LSP,包含邻居信息(与R2的邻居关系)及路由可达信息(没有R2和R3的)
31 13.063000  ca:01*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0020.0200.2002
32 13.235000  ca:01*  all-le-2  ISIS  151    L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x00000005, Lifetime:  1197s
!---R2发送R3的LSP,R3已经学到R1的LSP,所以在此LSP中已包含R1的路由信息
34 14.220000  ca:01*  all-le-2  ISIS  132    L2 CSNP, Source-ID: 0020.0200.2002.00, Start LSP-ID: 0000.0000.0000.00-00, End LSP-ID: ffff.ffff.ffff.ff-ff
!---到了DIS发送CSNP(完整数据库摘要)的时间了,里面包含的不是最新的信息,如R2的LSP Seq是0x00000005
36 15.251000  ca:00*  all-le-2  ISIS  60     L2 PSNP, Source-ID: 0010.0100.1001.00
!---R1用CSNP匹配自己的数据库,发现没有R3伪节点的LSP,发送PSNP请求,设置序列号为0x0
37 15.298000  ca:01*  all-le-2  ISIS  69     L2 LSP, LSP-ID: 0030.0300.3003.01-00, Sequence: 0x00000002, Lifetime:   617s
!---R2把R3伪节点的LSP发送给R1
!---至此R1有了自己的LSP,R2的LSP,R2伪节点的LSP,R3的LSP,R3伪节点的LSP
39 15.579000  ca:01*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0020.0200.2002
41 16.595000  ca:01*  all-le-2  ISIS  162    L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000006, Lifetime:  1199s
!---之前说CSNP不是新的,现在R2已经更新了自己的数据库,所以发送更新LSP,Seq是0x00000006,不过从11.61到现在用了5s?
!---虽然收到LSP,但SPF不是立即计算的,SPF正常的间隔是5s,可用“spf-interval”改
43 16.673000  ca:00*  all-le-2  ISIS  151    L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000001a, Lifetime:  1199s
!---R1收到所有LSP,更新自己的LSP然后发送更新,从11.641到现在用了5s?原因同上
44 18.283000  ca:00*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0010.0100.1001
45 18.517000  ca:01*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0020.0200.2002
48 21.548000  ca:01*  all-le-2  ISIS  1514   L2 HELLO, System-ID: 0020.0200.2002
本文出自 Frank's Blog

版权声明:


本文链接:CCIE SP-ISIS 抓包分析邻接关系
版权声明:本文为原创文章,仅代表个人观点,版权归 Frank Zhao 所有,转载时请注明本文出处及文章链接
你可以留言,或者trackback 从你的网站

No Responses to “CCIE SP-ISIS 抓包分析邻接关系”

  1. Denono说道:

    博主写的时候顺便把用了哪句命令清理数据库,用哪句命令抓包也写下来嘛,想验证下但是不知道怎么打。

  2. frank说道:

    “clear isis *”就可以了,另外抓包是用wireshark,不是命令

留言哦

blonde teen swallows load.xxx videos