自己失误而导致isis无法att置位的事件


在做isis的route leaking的实验的时候,发现了一个诡异的现象,然后查遍了cisco的文档,以及RFC 1142都没找到任何的不对的地方,最后发现是自己的一个小失误导致的,从而对isis的OSI编址在路由器中的识别方式有了新的认知。

实验环境

R1和R2是属于区域1的,R3是属于区域2的。很明显R1是L1路由器,R2是L1L2路由器,R3是L2路由器。然后下面是我一开始的错误配置。

错误配置

R1的配置

router isis 
 net 49.0001.0000.0001.00
 is-type level-1
 log-adjacency-changes
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 ip router isis

R2的配置

router isis 
 net 49.0001.0000.0002.00
 log-adjacency-changes
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
 ip router isis 
!
interface Ethernet0/1
 ip address 192.168.23.2 255.255.255.0
 ip router isis

R3的配置

router isis 
 net 49.0002.0000.0003.00
 is-type level-2-only
 log-adjacency-changes
!
interface Loopback0
 ip address 3.3.3.3 255.255.255.0
 ip router isis 
!
interface Ethernet0/0
 ip address 192.168.23.3 255.255.255.0
 ip router isis

问题分析

上面的配置不多,乍一看这样好像也没啥问题,下面我开始检查邻居关系的建立。在R2上查看clns的邻居关系。

R2#sh clns neighbors 
System Id      Interface   SNPA                State  Holdtime  Type Protocol
R3             Et0/1       cc02.213c.0000      Up     25        L2   IS-IS
R1             Et0/0       cc00.213c.0000      Up     27        L1   IS-IS

好像也没啥,问题,下面检查连通性时。我就发现了如下问题:

R1#ping 3.3.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

R1无法访问R3的loopback接口,我赶紧检查R1的路由表,然后发现:

R1#sh ip route
Gateway of last resort is not set
C    192.168.12.0/24 is directly connected, Ethernet0/0
i L1 192.168.23.0/24 [115/20] via 192.168.12.2, Ethernet0/0

理论上说,R1应该会自己生成一条去往最近的L1L2路由器的默认路由,但是这边却没有看到,除非是R2在给R1路由的时候忘掉了att置位了,我就查看R1的isis数据库。

R1#sh isis database 
IS-IS Level-1 Link State Database:
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime      ATT/P/OL
R1.00-00            * 0x00000004   0x988A        620               0/0/0
R2.00-00              0x00000006   0x26D2        986               0/0/0
R2.01-00              0x00000001   0x91BC        619               0/0/0
R3.00-00              0x00000003   0xEEEA        666               0/0/0
R3.01-00              0x00000001   0xAE9A        666               0/0/0

竟然还真没有置位,我顿时就傻眼了,这和资料上说好的不一样啊。配置量也不大,我就查了一遍,还是没发现我有哪里不对的,cisco和RFC都说我这种情况应该出现att置位的情况,我检查了很多地方,最终在LSP-ID这边发现了异样:

R1#sh isis hostname
Level  System ID      Dynamic Hostname  (notag)
     * 0001.0000.0001 R1
 1     0002.0000.0003 R3
 1     0001.0000.0002 R2

我不是设置的sys-ID都应该是0000.0000.000x的么,这个是啥,然后赶紧查看配置,然后发现我的NSAP地址输入错了,也不能说输入错了啊,NSAP地址不是固定长度的,可以是10~20字节大小,然后我就发现了Cisco IOS对NSAP地址的识别方式是固定的。

Cisco IOS软件从右边开始解释NSAP地址(这里使用NSAP 的OSI格式)。首先从右边数起,第一个B是NSEL,往左的6B是SystemID,剩下的部分是AreaID。

所以我上面配置的三台路由器,他们认为自己是属于同一个区域的,从hostname那边也可以看出来,R3前面的level也是1。然后我修改了NSAP地址后,clear isis *。再次查看,就发现这个情况消失了。

R1#sh ip route
Gateway of last resort is 192.168.12.2 to network 0.0.0.0
C    192.168.12.0/24 is directly connected, Ethernet0/0
i L1 192.168.23.0/24 [115/20] via 192.168.12.2, Ethernet0/0
i*L1 0.0.0.0/0 [115/10] via 192.168.12.2, Ethernet0/0

文章作者: AaronXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AaronXu !
评论
  目录