JNCIP: JUNOS OSPF虚链路配置 – Part 1

ospf virtual-link

注意:R3/R5间互联链路在OSPF区域0.0.0.3内通告,R5并未通过该链路直链OSPF骨干区域0.0.0.0

实验目标:

  1. 确保R7在R5失去到骨干网连接后仍然能够ping通区域10里面的网段;
  2. 保证R3与R5通过MD5认证建立虚链路密钥: junos, key-id: 10;
  3. 可选目标:降低骨干链路失效检测时间;使骨干区域尽快恢复;

关键点评

  1. JUNOS OSPF虚链路上的邻居认证;
  2. JUNOS实时流量嗅探与跟踪调试OSPF协议信息;
  3. 提升JUNOS OSPF收敛时间;

OSPF虚链路的作用在于保持骨干区域的连续性以及修复没有被直连到骨干区域的孤岛区域。另外,除了充当对现网路由状态的维护以外,也可以为保持骨干区域连续性而被应用于备份方案当中。正如实验拓扑所示,在R4与R5之间的直连链路工作正常的时候,全网并没有实现虚链路的需求。然而一旦该链路出现故障,由于R5失去到骨干区域的连接并且使OSPF的骨干区域被区域0.0.0.3分割开来。我们可以在R3与R5之间通过区域0.0.0.3建立虚链路,以保证即便R4与R5之间的直连链路出现故障,因为虚链路的存在使得R3与R5之间的链路成为R5保持到骨干区域的备份连接链路,由此可见虚链路本身实际上是一条通过穿越非骨干区域而传输骨干区域信息的隧道,并且它属于OSPF骨干区域。

更新配置:R3/R4/R5

我们需要稍微修改一下实验拓扑,将R3/R5之间的链路从区域0迁移到区域3当中,注意修改拓扑后需要重置路由器的OSPF数据库:run clear ospf database logical-router

[edit logical-routers]
nigel@itaalab# delete r3 protocols ospf area 0 interface
 fxp1.35 

[edit logical-routers]
nigel@itaalab# set r3 protocols ospf area 3 interface
 fxp1.35    

nigel@itaalab# delete r5 protocols ospf area 0 interface
 fxp2.35   

[edit logical-routers]
nigel@itaalab# set r5 protocols ospf area 3 interface
 fxp2.35

将R4/R5之间的链路从OSPF区域0移出,将某个接口从OSPF里面关闭可以使用deactivate或者disable参数完成:

[edit logical-routers]
nigel@itaalab# set r4 protocols ospf area 0 interface
 fxp1.45 disable 

[edit logical-routers]
nigel@itaalab# deactivate r5 protocols ospf area 0
 interface fxp2.45

清空OSPF数据库以后,虽然R3依然可以从R5上收到LSA-3,但由于LSA-3来自区域3,而不是骨干区域,因此LAS只会停留在数据库,而并没有被安装进入R3路由表:

nigel@itaalab# run show ospf database logical-router r3
 netsummary advertising-router 10.0.3.5 extensive              

 OSPF link state database, area 0.0.0.3
 Type      ID       Adv Rtr   Seq   Age  Opt  Cksum  Len
Summary 10.0.3.5 10.0.3.5 0x80000021 49  0x2  0xc751  28
 mask 255.255.255.255
 TOS 0x0, metric 0
 Aging timer 00:59:11
 Installed 00:00:45 ago, expires in 00:59:11,
 sent 1d 04:45:39 ago
Summary 10.0.8.0 10.0.3.5 0x80000036 51  0x2  0xa75b  28
 mask 255.255.254.0
 TOS 0x0, metric 2
 Aging timer 00:51:25
 Installed 00:08:31 ago, expires in 00:51:25,
 sent 1d 04:45:39 ago

nigel@itaalab# run show route logical-router r3
 10.0.8.0/23    

[edit]
nigel@itaalab# run show route logical-router r3 10.0.3.5

1. JUNOS OSPF虚链路上的邻居认证

为了恢复域间路由,我们需要通过区域3建立OSPF虚链路,连接R3/R5两个接入骨干区域的ABR,从而使分割的骨干区域重新连结起来。正如上文提及,虚链路本身是骨干区域的一部分,因此,虚链路的配置应该在[edit logical-routers r3 protocols ospf area 0.0.0.0]层次下配置。另外,我们更可以通过OSPF认证在一定程度上保障虚链路的安全性。

为了保证与安全的节点建立OSPF邻接关系,以及仅将LSA限制泛洪到可信任的节点,JUNOS允许OSPF在转发的数据包中包含认证信息。JUNOS支持的认证类型包括缺省的“无认证”,明文密码认证,以及MD5加密认证。认证在Area层次等级配置,而密码则通过在该区域当中的每一个接口设置。需要注意的是,假如选择安全性更强的MD5加密认证,接受认证的双方不单要求配置相匹配的密码,同样需要共享相同的Key-ID,关于MD5其他的信息,参看RFC1321. 关于区域认证的设置需要注意JUNOS版本更新过程中的变动,在JUNOS 7.2的版本中,依然保留着在[protocols ospf area x]层次下“authentication-type”的参数。可以通过下面命令指定相关区域的认证类型为明文认证还是MD5加密认证。

set area 0.0.0.0 authentication-type md5
set area 0.0.0.1 authentication-type simple-password

然而,在OSPF认证上,JUNOS不同于IOS拥有对区域认证和链路认证之间明确的划分,由于密码总是在接口配置下进行设置,实际上控制OSPF认证是否成功的关键在于接口上配置的认证类型以及密码是否匹配;因此上面的命令在JUNOS 8.5版本上面已经被淘汰掉,我们根据实验的需求在各个接口上设置相应的密码以及认证类型即可。

根据实验需求,我们在R3和R5之间建立虚链路,并且加入MD5加密认证,下面仅列出虚链路相关部分配置:

[edit logical-routers]
nigel@itaalab# show r3 protocols ospf area 0
virtual-link neighbor-id 10.0.3.5 transit-area 0.0.0.3 {
    authentication {
        md5 10 key "$9$l37v87wYojHmYgQn";
 ## SECRET-DATA
    }
}

[edit logical-routers]
nigel@itaalab# show r5 protocols ospf area 0
virtual-link neighbor-id 10.0.3.3 transit-area 0.0.0.3 {
    authentication {
        md5 10 key "$9$aFGjqTz6uORz3yK";
 ## SECRET-DATA
    }
}

配置完成以后,清空OSPF数据库,重新查阅OSPF接口与邻居关系,在R5上新增了一个虚拟接口:vl-10.0.3.3,R5将使用这个虚拟接口与R3建立基于虚链路的邻居关系。另外,由于虚链路默认接口类型为点到点,因此R3和R5在虚链路上并不选举DR/BDR:

nigel@itaalab# run show ospf interface logical-router r5
Interface   State     Area    DR ID   BDR ID  Nbrs
lo0.5       DRother  0.0.0.0 0.0.0.0  0.0.0.0   0
vl-10.0.3.3 PtToPt   0.0.0.0 0.0.0.0  0.0.0.0   1
fxp1.56     BDR      0.0.0.1 10.0.9.6 10.0.3.5  1
fxp1.57     BDR      0.0.0.1 10.0.9.7 10.0.3.5  1
fxp2.35     DR       0.0.0.3 10.0.3.5 10.0.3.3  1

nigel@itaalab# run show ospf neighbor logical-router r5
  Address  Interface  State  ID          Pri  Dead
10.0.2.2  vl-10.0.3.3 Full  10.0.3.3       0    36
10.0.8.5  fxp1.56     Full  10.0.9.6     128    38
10.0.8.10 fxp1.57     Full  10.0.9.7     128    33
10.0.2.2  fxp2.35     Full  10.0.3.3     128    32

重新查阅R3上的OSPF数据库,原来仅从区域3收到的由R5通告的LSA-3重新被泛洪到骨干区域当中,而且,两端路由都被安装进入路由表当中。

nigel@itaalab# run show ospf database logical-router r3
 netsummary advertising-router 10.0.3.5 detail       

    OSPF link state database, area 0.0.0.0
 Type      ID       Adv Rtr   Seq    Age Opt Cksum Len
Summary 10.0.2.0 10.0.3.5 0x8000006b 800 0x2 0x686e 28
  mask 255.255.255.252
  TOS 0x0, metric 1
Summary 10.0.8.0 10.0.3.5 0x800003de 354 0x2 0x4d0a 28
  mask 255.255.254.0
  TOS 0x0, metric 2

    OSPF link state database, area 0.0.0.3
 Type      ID       Adv Rtr   Seq    Age Opt Cksum Len
Summary 10.0.3.5 10.0.3.5 0x80000026 570 0x2 0xbd56 28
  mask 255.255.255.255
  TOS 0x0, metric 0
Summary 10.0.8.0 10.0.3.5 0x8000003e 207 0x2 0x9763 28
  mask 255.255.254.0
  TOS 0x0, metric 2

nigel@itaalab# run show route logical-router r3
 10.0.3.5 

inet.0: 20 destinations, 20 routes (20 active, 0 holddown,
 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.3.5/32        *[OSPF/10] 00:21:49, metric 1
                    > to 10.0.2.1 via fxp1.35

nigel@itaalab# run show route logical-router r3 10.0.8.0    

inet.0: 20 destinations, 20 routes (20 active, 0 holddown,
 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.8.0/23        *[OSPF/10] 00:21:56, metric 3
                    > to 10.0.2.1 via fxp1.35

最后,通过测试区域1与区域10之间的互通性,确认在R5失去到骨干网连接后区域1路由器仍然能够ping通区域10里面的网段:

nigel@itaalab# run traceroute 10.0.6.1 logical-router r6
traceroute to 10.0.6.1 (10.0.6.1), 30 hops max, 40 byte
packets
 1  10.0.8.6 (10.0.8.6)  1.906 ms  1.297 ms  1.009 ms
 2  10.0.2.2 (10.0.2.2)  1.272 ms  1.482 ms  1.227 ms
 3  10.0.6.1 (10.0.6.1)  1.640 ms  1.569 ms  1.604 ms

[edit logical-routers]
nigel@itaalab# run traceroute 10.0.6.1 logical-router r7
traceroute to 10.0.6.1 (10.0.6.1), 30 hops max, 40 byte
packets
 1  10.0.8.9 (10.0.8.9)  1.334 ms  1.357 ms  1.017 ms
 2  10.0.2.2 (10.0.2.2)  1.259 ms  1.289 ms  1.105 ms
 3  10.0.6.1 (10.0.6.1)  1.300 ms  1.600 ms  1.476 ms

留下评论