学习笔记: Internet cheat sheets on PacketLife

Stretch@packetlife一直在blog上发布一系列技术Cheat Sheets ── 浓缩式技术笔记,或者是考试前提前准备的小抄。:-D 这些Cheat Sheets涵盖了包括BGP、IS-IS、OSPF、802.11、QoS……甚至Physical Terminations等各方面的内容,每一份都是一到两页纸的PDF文件,是很好的一套个人复习笔记。我个人并没有仔细阅读其中的内容,同时希望对您有所帮助。当然,Stretch所做的远远不止单纯发布学习笔记和Cheat Sheets,相对而言应当说这他的兴趣更为准确。详细的信息请参考Site Transition and Other Stuff.

另外,这些Cheat Sheets的国际版目前也正在寻找志愿协作人员,这里有一个BGP Cheat Sheet的法语版本。目前还没有找到中文简体版本的协作者,Stretch编辑的Cheat Sheets无论从界面,还是实用性上面取决于各人观念差异,相信仍然会吸引很大一部分网络工作人员的眼球。如果您有兴趣,可以联系Stretch,相信他会欢迎您的协助。PS: 考虑到版权原因,请到PacketLife上下载相关的资料,下面是相关资料截图 ──

Protocols – BGP

tn_BGP.pdf

Protocols – IS-IS

tn_IS-IS.pdf

Protocols – OSPF

tn_OSPF.pdf

Protocols – EIGRP / First Hop Redundancy

tn_EIGRP.pdftn_First_Hop_Redundancy.pdf

Protocols – IEEE 802.11 WLAN

tn_IEEE_802.11_WLAN.pdf

Protocols – IEEE 802.1x / IPsec

tn_IEEE_802.1X.pdftn_IPsec.pdf

Protocols – IPv4 Multicast / IPv6

tn_IPv4_Multicast.pdftn_IPv6.pdf

Protocols – Spanning Tree

tn_Spanning_Tree.pdf

Applications – Wireshark Display Filters

tn_Wireshark_Display_Filters.pdf

Reference – tcpdump / IOS IPv4 Access Lists

tn_tcpdump.pdftn_IOS_IPv4_Access_Lists.pdf

Reference – IPv4 Subnetting / Common Ports

tn_IPv4_Subnetting.pdftn_common-ports.pdf

Technologies – QoS

tn_QoS.pdf

Technologies – Frame Mode MPLS / VLANs

tn_Frame_Mode_MPLS.pdftn_VLANs.pdf

Miscellaneous – Cisco IOS Versions / Physical Terminations

tn_Cisco_IOS_Versions.pdftn_physical-terminations.pdf

Miscellaneous – Markdown / MediaWiki

tn_Markdown.pdftn_MediaWiki.pdf

Advertisements

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

提升JUNOS OSPF收敛时间: hello/dead-interval vs. bfd

通过之前的实验不难发现,R4与R5之间的链路,包括R3与R4之间的链路,两条骨干网链路是整个实验网络的关键部分。通过预先在非骨干区域内创建虚链路,是一个不错的保持骨干区域连续性的备份方案。在R3与R5之间建立虚链路,更能够同时使在R4/R3/R5之间任一骨干区域链路失效后仍然能保障骨干区域的连续性。除此以外,另一个需要考虑的便是对链路失效检测的延时性能,争取在更短的时间内完成路由收敛。其中,降低OSPF Hello包的发送周期以及邻居失效周期是最常见的方式。我们可以在R3/R4/R5的骨干网接口上进行设置,需要注意的是链路两端的路由器必须设置相同的计时器值,计时器同步是形成OSPF邻接关系的必要前提。我们将三台路由器的所有骨干网接口计时器值减少为默认的50%,注意不要忘记对R3/R5之间的虚链路接口一起设置:

[edit logical-routers]
nigel@itaalab# set r4 protocols ospf area 0 interface
 fxp2.34 hello-interval 5 dead-interval 20 

[edit logical-routers]
nigel@itaalab# set r4 protocols ospf area 0 interface
 fxp1.45 hello-interval 5 dead-interval 20 

[edit logical-routers]
nigel@itaalab# set r3 protocols ospf area 0 interface
 fxp1.34 hello-interval 5 dead-interval 20 

[edit logical-routers]
nigel@itaalab# set r5 protocols ospf area 0 interface
 fxp2.45 hello-interval 5 dead-interval 20 

[edit logical-routers r3 protocols ospf area 0.0.0.0]
nigel@itaalab# set virtual-link neighbor-id 10.0.3.5
 transit-area 3 hello-interval 5 dead-interval 20 

[edit logical-routers r5 protocols ospf area 0.0.0.0]
nigel@itaalab# set virtual-link neighbor-id 10.0.3.3
 transit-area 3 hello-interval 5 dead-interval 20

尽管默认情况下OSPF的dead-interval自动被调节为Hello-interval的4倍,然而还是建议(OK,这只是一个“建议”,如果非要问为什么提出这样的建议同时给予解释的话请无视 ── 你有权决定是否采纳建议,而我同样有权决定是否提供建议 ── 就那么简单的逻辑关系搞不懂怎么就有人偏搞不懂?)同时手动定义两个参数,查看R3的OSPF接口状态,可以看到全部区域0.0.0.0内全部接口的计时器值全部被修改为5/20sec,值得注意的是R3与R5之间的链路只有属于区域0.0.0.0的虚链路被修改为新的计时值,而物理接口仍然属于区域3,因此被保留为默认10/40sec不变:

nigel@itaalab# run show ospf interface
 logical-router r3 detail
Interface   State   Area    DR ID    BDR ID   Nbrs
fxp1.34      BDR    0.0.0.0 10.0.3.4 10.0.3.3    1
  Type: LAN, Address: 10.0.2.5, Mask: 255.255.255.252,
  MTU: 1496, Cost: 1
  DR addr: 10.0.2.6, BDR addr: 10.0.2.5, Adj count: 1,
  Priority: 128
  Hello: 5, Dead: 20, ReXmit: 5, Not Stub
  Auth type: None
lo0.3       DRother 0.0.0.0 0.0.0.0  0.0.0.0     0
  Type: LAN, Address: 10.0.3.3, Mask: 255.255.255.255,
  MTU: 65535, Cost: 0
  Adj count: 0, Priority: 128, , Passive
  Hello: 10, Dead: 40, ReXmit: 5, Not Stub
  Auth type: None
vl-10.0.3.5 PtToPt  0.0.0.0 0.0.0.0  0.0.0.0     1
  Type: Virtual, Address: 10.0.2.2, Mask: 0.0.0.0,
  MTU: 0, Cost: 1
  Adj count: 1
  Hello: 5, Dead: 20, ReXmit: 5, Not Stub
  Auth type: MD5, Active key ID: 10, Start time:
 2008 Jan  1 07:00:00 LONT
fxp1.35      BDR    0.0.0.3 10.0.3.5 10.0.3.3    1
  Type: LAN, Address: 10.0.2.2, Mask: 255.255.255.252,
  MTU: 1496, Cost: 1
  DR addr: 10.0.2.1, BDR addr: 10.0.2.2, Adj count: 1,
  Priority: 128
  Hello: 10, Dead: 40, ReXmit: 5, Not Stub
  Auth type: None
fxp2.13      BDR    0.0.0.10 10.0.6.1 10.0.3.3   1
  Type: LAN, Address: 10.0.4.13, Mask: 255.255.255.252,
  MTU: 1496, Cost: 2
  DR addr: 10.0.4.14, BDR addr: 10.0.4.13, Adj count: 1,
  Priority: 128
  Hello: 10, Dead: 40, ReXmit: 5, Stub NSSA
  Auth type: None

尽管缩短Hello周期能在一定程度上提升OSPF的收敛速度,然而,OSPF Hello数据包可设置的最短周期为1秒,那么邻居失效周期最短也只能为4秒钟,对于那些承载着对延时极为敏感的业务的网络而言,这样的失效检测周期依然需要提升效率。JUNOS从6.1版本开始便支持能够更快的,达到微妙级别的双向转发检测,BFD(Bidirectional Forwarding Detection),BFD是一种简单的Hello协议,然而BFD通过基于转发层面对下一跳邻居的监测 ─ 传统的IGP Hello机制是基于控制层面邻居维护,却能够有效的提升那些在传统上不存在硬件失效监测的链路,而只能依赖于IGP的Hello机制作为检测手段,如以太网络,它们对于链路失效检测的性能。同时BFD独立于各种IGP协议,不单纯能够为OSPF,并且能够为ISIS,BGP甚至MPLS提供在二层链路上的保障服务。目前,在JUNOS 8.5版本上面,我们可以测试在逻辑路由器上建立BFD会话。

[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 {
    hello-interval 5;
    dead-interval 20;
    authentication {
        md5 10 key "$9$vMg8xd24Zk.54a39";
 ## SECRET-DATA
    }
}
interface fxp1.34 {
    hello-interval 5;
    dead-interval 20;
    bfd-liveness-detection {
        minimum-interval 500;
    }
}

[edit logical-routers]
nigel@itaalab# show r4 protocols ospf area 0
interface fxp2.34 {
    hello-interval 5;
    dead-interval 20;
    bfd-liveness-detection {
        minimum-interval 500;
    }
}
interface fxp1.45 {
    hello-interval 5;
    dead-interval 20;
    bfd-liveness-detection {
        minimum-interval 500;
    }
}

[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 {
    hello-interval 5;
    dead-interval 20;
    authentication {
        md5 10 key "$9$ck.rK8-VYZUHVwPQ";
 ## SECRET-DATA
    }
}
interface fxp2.45 {
    hello-interval 5;
    dead-interval 20;
    bfd-liveness-detection {
        minimum-interval 500;
    }
}

BFD默认的失效时间是传输周期的3倍,在上面的配置中,我们将传输周期设置为500毫秒(ms),链路失效时间将被自动设置为1.5秒,当然,你还可以使用multiplier来定义失效时间相对于传输周期的倍数来进一步缩短或者延长链路失效时间。BFD能够为OSPF服务,但却不像OSPF计时器需要在所有接口下面打开,我们可以按照需求在某几条特定链路的两端路由器接口上设置BFD,以下的输入确认R4上BFD的两个连接,并且确认BDF目前的为OSPF协议服务:

nigel@itaalab# run show bfd session detail logical-router
 r4
                                     Transmit
Address  State Interface Detect Time Interval Multiplier
10.0.2.9 Up    fxp1.45       1.500    0.500       3
 Client OSPF, TX interval 0.500, RX interval 0.500
 Session up time 00:13:15
 Local diagnostic None, remote diagnostic None
 Remote state Up, version 1
 Logical router 1, routing table index 5
                                     Transmit
Address  State Interface Detect Time Interval Multiplier
10.0.2.5 Up    fxp2.34       1.500    0.500       3
 Client OSPF, TX interval 0.500, RX interval 0.500
 Session up time 00:13:15
 Local diagnostic None, remote diagnostic None
 Remote state Up, version 1
 Logical router 1, routing table index 5

2 sessions, 2 clients
Cumulative transmit rate 4.0 pps, cumulative receive
 rate 4.0 pps

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

JUNOS实时流量嗅探与跟踪调试OSPF协议信息

继续上文关于邻居认证的话题,要求使用MD5哈希校验加密认证的原因在于使用明文密码很容易在转发的过程中被截获。不需要额外的第三方工具,JUNOS本身内置的嗅探机制:monitor traffic相当于UNIX的tcpdump命令,便能通过实时监控接口流量捕获明文发送的密码。我们先将R5端的认证方式修改为明文认证,密码为:juniper,然后再进行监控:

[edit logical-routers r5 protocols ospf]
nigel@itaalab# show area 0
virtual-link neighbor-id 10.0.3.3 transit-area 0.0.0.3 {
    authentication {
        simple-password "$9$NYVs4UjqQF/aZF/CtIR-Vw";
 ## SECRET-DATA
    }
}

提示:使用monitor traffic的时候,应该对物理接口进行监控,假如仅监控逻辑接口,你进能够获得有限的信息。通常,在监控的过程中终端会快速输出大量的数据,你可以先设置终端软件将日志记录下来,然后通过查找功能定位你希望获得的数据信息。从下面的摘录输出可以发现明文发送的密码很容易的被截获,而对于MD5密文,仅能截获到相关的Key-ID.

nigel@itaalab# run monitor traffic interface fxp1
 extensive
Listening on fxp1, capture size 96 bytes

06:47:16.290110  In 0:aa:0:0:1:74 0:aa:0:0:1:63 8100 82:
 VID [0: 135] (tos 0xc0, ttl 255, id 44498, offset 0,
 flags [none], proto: OSPF (89), length: 64)
 10.0.2.1 > 10.0.2.2: OSPFv2, Hello (1), length: 44
        Router-ID: 10.0.3.5, Backbone Area,
        Authentication Type: unknown (1)juniper^@"
        Options: [External]
          Hello Timer: 10s, Dead Timer 40s, Mask: 0.0.0.0
          , Priority: 0

…………
06:47:20.636209 Out 0:aa:0:0:1:63 0:aa:0:0:1:74 8100 98:
 VID [0: 135] (tos 0xc0, ttl 255, id 44509, offset 0,
 flags [none], proto: OSPF (89), length: 80)
 10.0.2.2 > 10.0.2.1: OSPFv2, Hello (1), length: 44
        Router-ID: 10.0.3.3, Backbone Area,
        Authentication Type: MD5 (2)
        Key-ID: 10, Auth-Length: 16,
        Crypto Sequence Number: 0x0001b8b7
        Options: [External]
          Hello Timer: 10s, Dead Timer 40s, Mask: 0.0.0.0
          , Priority: 0 [|ospf]

显然,尽管monitor traffic能够提供一种快速调试,定位问题所在的方法;然而显然是一种体力活,在监控OSPF路由协议信息的同时,有可能被同时通讯的其他协议的信息干扰;而且不方便将输出信息组织并形成文档。JUNOS同时提供了类似于IOS的debug ip ospf命令的工具:traceoptions,来专门对某种特定协议信息进行监控(不局限于OSPF单一协议),另一方面,traceoptions的记录是一种持续的过程,它将所有的调试信息归档到日志文件中,即便在终端上停止了对该协议的监控,相关的日志信息依然会不断在后台被添加进入日志文件当中。日志文件的位置被存放在/var/log目录(M/T系列路由器)或者/cf/var/log目录下(J系列路由器),在使用逻辑路由器进行练习的环境当中,同一个逻辑路由器上面的所有traceoptions日志文件都会被汇总到与逻辑路由器的同名目录当中。针对上面的情况,我们设置OSPF的traceoptions监控其Hello/error数据包:

nigel@itaalab# run monitor start r3/ospf-log
*** r3/ospf-log ***

Jul 26 07:42:36 OSPF packet ignored:
                authentication type mismatch (1)
                from 10.0.2.1
Jul 26 07:42:36 OSPF sent Hello 10.0.2.2 -> 10.0.2.1
                (vl-10.0.3.5, IFL 0x0)
Jul 26 07:42:36   Version 2, length 44, ID 10.0.3.3,
                  area 0.0.0.0
Jul 26 07:42:36   checksum 0x0, authtype 0
Jul 26 07:42:36   mask 0.0.0.0, hello_ivl 10, opts 0x2,
                  prio 0
Jul 26 07:42:36   dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0

确定认证失效信息后,我们恢复R5上的认证配置,继续下面的实验。

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

JNCIP案例分析 – Juniper/Cisco OSPF互操作 Part7

JUNOS与IOS OSPF接口开销调节

kangaroo

  1. 基于带宽优化路由选择:保证所有快速以太网接口被自动分配Metric值为10,另外你需要手动调节Metric使R5到区域1的内部网段实现负载均衡;

我们先把第13个实验目标提前分析,JUNOS与IOS的OSPF参考带宽同为100Mbps,在之前的实验过程中IOS对于快速以太网接口开销值定义为10仅仅因为fa0/0接口与实验台交换机自动协商带宽为10Mbps,可以在接口下修复该配置,以下以R4为例,包含环回接口在内的4个OSPF接口当前开销值均被修改为1。

!
interface FastEthernet0/0.34
 bandwidth 100000
 encapsulation dot1Q 134
 ip address 10.0.2.6 255.255.255.252
 ip mtu 1496
 ip ospf message-digest-key 10 md5 jnx
!

r4#show ip ospf interface | include Cost
  Process ID 64, Router ID 10.0.3.4, Network Type
  LOOPBACK, Cost: 1
  Process ID 64, Router ID 10.0.3.4, Network Type
  BROADCAST, Cost: 1
  Process ID 64, Router ID 10.0.3.4, Network Type
  BROADCAST, Cost: 1
  Process ID 64, Router ID 10.0.3.4, Network Type
  BROADCAST, Cost: 1

通过在所有OSPF路由器上修改参考带宽能够在全局修改链路开销值,除环回接口保持默认开销值,JUNOS环回接口默认开销为0;而IOS环回接口默认开销为1。所有快速以太网接口的开销值均设置为10,假如你使用输出导出符精确定位信息,注意JUNOS与IOS对大小写的区分行为。

[edit logical-routers]
nigel@itaa7.2# set r1 protocols ospf reference-bandwidth
1g 

nigel@itaa7.2#run show ospf interface logical-router r5
detail | match cost
Type: LAN, Address: 10.0.2.1, Mask: 255.255.255.252, MTU:
1496, Cost: 10
Type: LAN, Address: 10.0.2.9, Mask: 255.255.255.252, MTU:
1496, Cost: 10
Type: LAN, Address: 10.0.3.5, Mask: 255.255.255.255, MTU:
65535, Cost: 0
Type: LAN, Address: 10.0.8.6, Mask: 255.255.255.252, MTU:
1496, Cost: 10
Type: LAN, Address: 10.0.8.9, Mask: 255.255.255.252, MTU:
1496, Cost: 10

r4(config)#router ospf 64
r4(config-router)#auto-cost reference-bandwidth 1000
% OSPF: Reference bandwidth is changed.
        Please ensure reference bandwidth is consistent
        across all routers.

r4#show ip ospf interface | include Cost
  Process ID 64, Router ID 10.0.3.4, Network Type
  LOOPBACK, Cost: 1
  Process ID 64, Router ID 10.0.3.4, Network Type
  BROADCAST, Cost: 10
  Process ID 64, Router ID 10.0.3.4, Network Type
  BROADCAST, Cost: 10
  Process ID 64, Router ID 10.0.3.4, Network Type
  BROADCAST, Cost: 10

为了使R5能通过R3/R4实现进入区域1流量的负载均衡,我们需要手动调整R3/R4通告的10.0.4/22汇总LSA-3的Metric值。在R5的OSPF数据库内对比两者的LSA,由于JUNOS与IOS默认对汇总路由的Metric计算方式的差异,使得R5当前优选R4作为流量进入区域1的ABR。

nigel@itaa7.2# run show ospf database logical-router r5
lsa-id 10.0.4.0 detail                  

    OSPF link state database, area 0.0.0.0
 Type      ID      Adv Rtr  Seq      Age Opt Cksum Len
Summary 10.0.4.0 10.0.3.3 0x80000019 493 0x2 0xc451 28
  mask 255.255.252.0
  TOS 0x0, metric 20
Summary 10.0.4.0 10.0.3.4 0x8000001d 444 0x22 0x708a 28
  mask 255.255.252.0
  TOS 0x0, metric 10

有多种方式能够实现调整汇总路由Metric以达到负载均衡的目的,给出JUNOS与IOS各自最直接覆盖默认汇总路由开销值的解决方案。

[edit logical-routers]
nigel@itaa7.2# show r3 protocols ospf
area 0.0.0.1 {
        area-range 10.0.4.0/22 override-metric 30;
}

r4(config-router)#area 1 range 10.0.4.0 255.255.252.0
cost 30

nigel@itaa7.2# run show route logical-router r5
10.0.4/22 exact 

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

10.0.4.0/22        *[OSPF/10] 00:00:27, metric 40
                    > to 10.0.2.2 via fxp2.35
                      to 10.0.2.10 via fxp2.45

JNCIP案例分析 – Juniper/Cisco OSPF互操作 Part6

5. JUNOS与IOS OSPF/RIP重分布及路由策略协调

kangaroo

  1. R6/R7必须将10.0.5/24路由通告给RIP路由器,同时R7上通告的RIP路由Metric应大于R6上的通告;
  2. 172.16.40/24网段以OSPF内部路由的形式出现,该子网上不应存在OSPF邻接;

默认情况下,JUNOS会将直接重分布进入RIP的路由Metric值设置为1,而IOS则将来自任何协议重分布进RIP的Metric统一设置为16跳不可达Metric,在IOS上进行入向RIP重分布的时候总需要手动指定Metric值。由于之前的分解实验中已经讨论过JUNOS上从OSPF到RIP的重分布方式,这里仅快速列出R6上的相关配置。

[edit logical-routers]
nigel@itaa7.2# show r6 policy-options policy-statement
ospf-rip

term 1 {
    from {
        protocol ospf;
        route-filter 10.0.5.0/24 exact;
    }
    then accept;
}

[edit logical-routers]
nigel@itaa7.2# show r6 protocols rip
group rip {
    export ospf-rip;
    neighbor fxp1.60;
}
nigel@itaa7.2# run show route advertising-protocol rip
172.16.40.2 logical-router r6    

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

10.0.5.0/24        *[OSPF/150] 00:22:02, metric 14, tag 
                    420
                    > to 10.0.8.6 via fxp2.56

从R6通告给RIP的路由中顺带可以看到,作为转换LSA-7到LSA-5的NSSA ABR R4,IOS并没有将其本地外部路由的Metric带入骨干区域,而是保留了其初始的Metric值10,与JUNOS 8.5版本的行为相似。由于该外部路由的ASBR地址10.0.6.2经过域间汇总至10.0.4/22内,R3通告10.0.4/22汇总路由的Metric为2,因此在R6上的Metric值为10+2+2=14。同时,从IOS路由器R7将10.0.5/24网段重分布进入RIP的流程稍显复杂,为了验证RIP路由器同时从R6/R7上同时收到该段路由,我们要求R7向RIP注入Metric值同样为1的路由。

!
router rip
 version 2
 redistribute ospf 64 route-map ospf-rip
 network 172.16.0.0
!
access-list 2 permit 10.0.5.0 0.0.0.255
!
route-map ospf-rip permit 10
 match ip address 2
 set metric 1
!

而我们查看RIP路由器上的路由表的时候,却并没有发现同时出现两条10.0.5/24的条目,仅存在由R6通告过来的信息。而且我们在R1上采用默认的traceroute访问192.168.x/24网段能够返回成功的信息。由于我们并没有将除10.0.5/24以外的其他OSPF路由重分布到RIP里面,R1应当使用10.0.5.1作为traceroute源地址方能正常访问192.168.x/24网段。

nigel@itaa7.2# run show route logical-router rip
10.0.5/24    

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

10.0.5.0/24        *[RIP/100] 00:03:04, metric 2, tag 420
                    > to 172.16.40.2 via fxp2.60

nigel@itaa7.2# run traceroute 192.168.2.1 logical-router
r1

traceroute to 192.168.2.1 (192.168.2.1), 30 hops max,
40 byte packets

 1  10.0.4.13 (10.0.4.13)  1.168 ms  0.844 ms  1.150 ms
 2  10.0.2.1 (10.0.2.1)  1.094 ms  1.182 ms  1.160 ms
 3  10.0.8.5 (10.0.8.5)  1.314 ms  1.867 ms  1.747 ms
 4  192.168.2.1 (192.168.2.1)  5.232 ms  3.682 ms
     3.841 ms

在不存在其他后门链路的情况下,唯一能够解析的原因在于RIP路由器上存在10.0.5/24子网的汇总路由,R1发送到RIP路由器上的traceroute正是匹配了该汇总路由才能被返回。在172.16/16与10/8网络边缘,IOS路由器R7执行了自动汇总,10.0.5/24路由于是被自动汇总成为10.0.0.0/8主网路由,然后被通告到RIP路由器上面。我们通过查看RIP路由表能确认这点。

nigel@itaa7.2# run show route logical-router rip 10/8 

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

10.0.0.0/8         *[RIP/100] 00:08:31, metric 2, tag 0
                    > to 172.16.40.6 via fxp2.70
10.0.5.0/24        *[RIP/100] 00:09:21, metric 2, tag 420
                    > to 172.16.40.2 via fxp2.60

正是由于需要RIP支持无类路由,因此我们开始设置R7上RIP的时候便直接启用Version 2的RIP。关闭R7上的自动汇总,同时由于实验目标要求R7注入RIP的路由应该包含更大的Metric值,在route-map中我们将其调节为2。

!
router rip
 version 2
 redistribute ospf 64 route-map ospf-rip
 network 172.16.0.0
 no auto-summary
!
access-list 2 permit 10.0.5.0 0.0.0.255
!
route-map ospf-rip permit 10
 match ip address 2
 set metric 2
!

重新启动RIP路由器的路由进程,而问题却依然没有得到彻底解决,当RIP路由器收到来自R7的10.0.5/24明细路由后,原本从R6接收到的路由却消失掉。

nigel@itaa7.2# run restart routing logical-router rip
rip started, pid 4830

可能你已经能猜到,我们又回到了在R6上OSPF外部路由150与RIP 100的Preference冲突上。继续修正R6上的RIP导入策略。完成后为了尽快实现路由收敛,你可能需要清空R7的路由表以及重启R6/RIP的路由进程。制定策略的时候由于我们需要过滤从RIP路由更新注入同样为RIP路由协议的信息,此时默认策略为accept,因此我们需要增加term 2,将除192.168.x/24以外的其他路由明确拒绝掉。而对于IOS路由器R7,由于OSPF内部及外部路由的管理距离均为110,小于RIP的120,暂时不需要应用distribut-list in进行入向RIP路由过滤。

[edit logical-routers r6]
nigel@itaa7.2# show policy-options policy-statement
rip-ospf

term 1 {
    from {
        protocol rip;
        route-filter 192.168.0.0/21 orlonger;
    }
    then accept;
}

policy-statement rip-import {
    term 1 {
        from {
            protocol rip;
            route-filter 192.168.0.0/21 orlonger;
        }
        then accept;
    }
    term 2 {
        then reject;
    }
}

最后我们确定仅有10.0.5/24网段路由被注入RIP内部,在R1上分别使用10.0.5.1以及默认接口作为源地址对192.168.x/24网段进行traceroute,仅有当10.0.5.1作为源地址的时候traceroute才能成功。

nigel@itaa7.2# run traceroute 192.168.1.1 logical-router
 r1

traceroute to 192.168.1.1 (192.168.1.1), 30 hops max,
40 byte packets
 1  10.0.4.13 (10.0.4.13)  5.114 ms  1.243 ms  1.498 ms
 2  10.0.2.1 (10.0.2.1)  1.839 ms  2.311 ms  1.471 ms
 3  10.0.8.5 (10.0.8.5)  1.972 ms  2.019 ms  1.756 ms
 4  * * *
 8  *^C

nigel@itaa7.2# run traceroute 192.168.1.1 logical-router
r1 source 10.0.5.1

traceroute to 192.168.1.1 (192.168.1.1) from 10.0.5.1,
30 hops max, 40 byte packets
 1  10.0.4.13 (10.0.4.13)  1.414 ms  0.955 ms  1.458 ms
 2  10.0.2.1 (10.0.2.1)  1.378 ms  1.740 ms  1.786 ms
 3  10.0.8.5 (10.0.8.5)  1.916 ms  1.834 ms  1.877 ms
 4  192.168.1.1 (192.168.1.1)  2.527 ms  2.221 ms
     2.048 ms

相对而言,对于172.16.40.x网段的通告配置比较简单,利用JUNOS对OSPF内外路由的区分,最后在R5上通过检查两条路由的Preference确认为域内路由。

[edit logical-routers r6]
nigel@itaa7.2# set protocols ospf area 20 interface
fxp1.60 passive 

!
router ospf 64
 passive-interface FastEthernet0/0.70
 network 172.16.40.4 0.0.0.3 area 20
!

nigel@itaa7.2# run show route logical-router r5 172.16/16 

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

172.16.40.0/30     *[OSPF/10] 00:01:50, metric 2
                    > to 10.0.8.5 via fxp1.56
172.16.40.4/30     *[OSPF/10] 00:01:50, metric 11
                    > to 10.0.8.10 via fxp1.57
r7# show ip ospf interface fa0/0.70
FastEthernet0/0.70 is up, line protocol is up
  Internet Address 172.16.40.6/30, Area 20
  Process ID 64, Router ID 10.0.9.7, Network Type
  BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 10.0.9.7, Interface address
  172.16.40.6
  No backup designated router on this network
  Timer intervals configured, Hello 10, Dead 40,
  Wait 40, Retransmit 5
    oob-resync timeout 40
    No Hellos (Passive interface

JNCIP案例分析 – Juniper/Cisco OSPF互操作 Part5

4. JUNOS与IOS OSPF域间及域外地址汇总

kangaroo

  1. 汇总所有的非骨干区域路由进入骨干区域,包括内部路由以及外部路由;
  2. 汇总来自RIP路由器的192.168.x/24路由,但你不能修改RIP路由器上的配置;

到目前为止,我们需要汇总进入OSPF骨干区域的内部路由包括区域1与区域20内的网段,而外部路由仅包括从R1/R2重分布进OSPF的直连网段10.0.5/24网段路由。来自NSSA的外部路由仅有10.0.5/24一条,因此对于这条路由我们不需要对该网段进行汇总。我们可以将汇总的焦点放在两边非骨干区的OSPF内部地址汇总上,在之前的OSPF地址汇总实验中我们已经计算出两边网段的汇总地址分别是10.0.4/22及10.0.8/23;我们在3台ABR上分别应用汇总配置。值得借鉴的是,我们可以在JUNOS上通过应用area-range命令的restrict参数批量过滤OSPF域间路由,相应的在IOS上同样可以在该命令后应用not-advertise达到相同的效果。而在IOS中,对于域间汇总路由的Metric计算直接采用ABR所在汇总区域接口的开销值,另外我们也能通过cost参数进行定义。

[edit logical-routers]
nigel@itaa7.2# show r5 protocols ospf area 20
area-range 10.0.8.0/23;

[edit logical-routers]
nigel@itaa7.2# show r3 protocols ospf area 1
nssa {
    default-lsa {
        default-metric 1;
        type-7;
    }
    no-summaries;
}
area-range 10.0.4.0/22;
r4#conf t
Enter configuration commands, one per line.
End with CNTL/Z.
r4(config-router)#area 1 range 10.0.4.0 255.255.252.0
r4(config-router)#area 1 range 10.0.4.0 255.255.252.0 ?
  advertise        Advertise this range (default)
  cost             User specified metric for this range
  not-advertise    DoNotAdvertise this range
  <cr>

同样,可以在骨干区域路由器上查看两边非骨干区域的明细网段是否仅匹配路由表内的汇总路由,从而确认地址汇总被成功配置。我们将查询两边区域内的直连网段路由及各路由器的环回接口网段:在R4上分别查询10.0.8.0与10.0.9.0两个网段,均匹配10.0.8/23路由;另一方面,我们在R5上分别查询10.0.4.0及10.0.6.0两个网段,均匹配10.0.4/22路由。

r4#show ip route 10.0.8.0
Routing entry for 10.0.8.0/23
  Known via "ospf 64", distance 110, metric 12,
  type inter area
  Last update from 10.0.2.9 on FastEthernet0/0.45,
  00:27:09 ago
  Routing Descriptor Blocks:
  * 10.0.2.9, from 10.0.3.5, 00:27:09 ago,
  via FastEthernet0/0.45
      Route metric is 12, traffic share count is 1

r4#show ip route 10.0.9.0
Routing entry for 10.0.8.0/23
  Known via "ospf 64", distance 110, metric 12,
  type inter area
  Last update from 10.0.2.9 on FastEthernet0/0.45,
  00:27:16 ago
  Routing Descriptor Blocks:
  * 10.0.2.9, from 10.0.3.5, 00:27:16 ago,
  via FastEthernet0/0.45
      Route metric is 12, traffic share count is 1
nigel@itaa7.2# run show route logical-router r5 10.0.6.0    

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

10.0.4.0/22        *[OSPF/10] 00:17:42, metric 3
                    > to 10.0.2.2 via fxp2.35

nigel@itaa7.2# run show route logical-router r5 10.0.4.0    

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

10.0.4.0/22        *[OSPF/10] 00:17:44, metric 3
                    > to 10.0.2.2 via fxp2.35

需要注意的是尽管对于区域1的地址汇总,尽管10.0.4/22包含10.0.5/24网段,然而由于10.0.5/24网段采用域外路由的形式注入OSPF,作为域间路由汇总的area-range并不会将域外及域间路由混合在同一条汇总路由内通告,因此在R5上我们仍然能够接收到10.0.5/24网段路由,而且其依然保留域外路由的Preference。

nigel@itaa7.2# run show route logical-router r5 10.0.5.0    

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

10.0.5.0/24        *[OSPF/150] 00:19:40, metric 13,
                    tag 420
                    > to 10.0.2.2 via fxp2.35

下一步我们开始对来自RIP的192.168.x/24域外路由进行汇总,在实验目标中明确提出不允许通过修改RIP路由器的配置来实现路由汇总,我们需要在R6与R7上通过RIP接收全部明细路由后再汇总重分布进入OSPF域内。先在JUNOS路由器R6和IOS路由器R7上完成RIP的基本配置,并确认两者RIP路由表同步。

[edit logical-routers r6]
nigel@itaa7.2# show protocols rip
group rip {
    neighbor fxp1.60;
}
r7#wr t
!
router rip
 version 2
 network 172.16.0.0
!
nigel@itaa7.2# run show route logical-router r6 protocol
rip 

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

192.168.0.0/24     *[RIP/100] 00:22:22, metric 2, tag 0
                    > to 172.16.40.1 via fxp1.60
192.168.1.0/24     *[RIP/100] 00:22:22, metric 2, tag 0
                    > to 172.16.40.1 via fxp1.60
192.168.2.0/24     *[RIP/100] 00:22:22, metric 2, tag 0
                    > to 172.16.40.1 via fxp1.60
192.168.3.0/24     *[RIP/100] 00:22:22, metric 2, tag 0
                    > to 172.16.40.1 via fxp1.60
192.168.4.0/24     *[RIP/100] 00:22:22, metric 2, tag 0
                    > to 172.16.40.1 via fxp1.60
224.0.0.9/32       *[RIP/100] 00:22:32, metric 1
                      MultiRecv

r7# show ip route rip
R    192.168.4.0/24 [120/1] via 172.16.40.5,0:34,Fa0/0.70
R    192.168.0.0/24 [120/1] via 172.16.40.5,0:34,Fa0/0.70
R    192.168.1.0/24 [120/1] via 172.16.40.5,0:34,Fa0/0.70
R    192.168.2.0/24 [120/1] via 172.16.40.5,0:34,Fa0/0.70
R    192.168.3.0/24 [120/1] via 172.16.40.5,0:34,Fa0/0.70

此时我们有机会比较JUNOS与IOS在对OSPF域外路由汇总上采取的不同的路径,JUNOS先将RIP明细路由通过Aggregate进行汇总,在把汇总后的Aggregate路由通过策略重分布进入OSPF;而IOS则直接将RIP明细路由重发布进入OSPF内,下一步使用summary-address将域外路由在OSPF协议内部进行汇总。相比之下,JUNOS的配置量似乎大得多,其实情况不一定正如看上去那么完美。

[edit logical-routers r6]
nigel@itaa7.2# show routing-options
aggregate {
    route 192.168.0.0/21;
}

[edit logical-routers r6]
nigel@itaa7.2# show policy-options
policy-statement rip-ospf {
    term 1 {
        from {
            protocol aggregate;
            route-filter 192.168.0.0/21 exact;
        }
        then accept;
    }
}

r7(config-router)#router ospf 64
r7(config-router)#redistribute rip subnets
r7(config-router)#summary-address 192.168.0.0
255.255.248.0

查看R5上的OSPF数据库,同时从R6/R7上均收到汇总后的192.168/21域外LSA-5,似乎与我们设想中的结果吻合。而当我们进一步查看R5上的全部域外LSA的时候,却发现从R7上注入了172.16.40.4/30这条额外的LSA,在下一个实验目标中明确规定该网段应当以域内路由的形式出现在OSPF内。由于我们在IOS上进行RIP到OSPF重分布的时候并没有做任何地址限制,因此172.16.40.4/30作为R7上RIP数据库内的路由随同192.168.x/24路由被重分布进OSPF内。

nigel@itaa7.2# run show ospf database logical-router r5
lsa-id 192.168.0.0

    OSPF AS SCOPE link state database
 Type     ID         Adv Rtr  Seq	   Age Opt Cksum Len
Extern 192.168.0.0 10.0.9.6 0x80000001  50 0x2 0x5007 36
Extern 192.168.0.0 10.0.9.7 0x80000005 109 0x2 0x47d8 36

nigel@itaa7.2# run show ospf database logical-router r5
extern

    OSPF AS SCOPE link state database
 Type     ID         Adv Rtr  Seq	   Age Opt Cksum Len
Extern 10.0.5.0    10.0.3.4 0x80000005 887 0x2 0x341b 36
Extern 172.16.40.4 10.0.9.7 0x80000001 366 0x2 0xaaf5 36
Extern 192.168.0.0 10.0.9.6 0x80000001 147 0x2 0x5007 36
Extern 192.168.0.0 10.0.9.7 0x80000005 206 0x2 0x47d8 36

r7#show ip rip database
172.16.0.0/16    auto-summary
172.16.40.4/30   directly connected, Fa0/0.70

显然我们还需要对IOS追加地址过滤的配置,其目的不单纯为了满足实验目标的需求,更重要的是防止在多点双向重分布的网络中形成路由倒灌而产生环路的潜在危险,详见前面的章节。而最简单快速的方式便是access-listroute-map组合在一起,然后将route-map绑定到redistribute命令中。下面的route-map写得不太直观,然而只要你对IOS策略路由的逻辑是否关系有清晰的了解,应该不会感到疑惑。重新应用redistribut,R5上已经不存在172.16.40.4/30的外部LSA-5。

!
access-list 1 permit 172.16.40.4 0.0.0.3
!
route-map rip-import deny 10
 match ip address 1
!
route-map rip-import permit 20
!

r7(config-router)#redistribute rip subnets route-map
rip-import

nigel@itaa7.2# run show ospf database logical-router r5
extern

    OSPF AS SCOPE link state database
 Type     ID         Adv Rtr  Seq	   Age Opt Cksum Len
Extern 10.0.5.0    10.0.3.4 0x80000006 960 0x2 0x321c 36
Extern 192.168.0.0 10.0.9.6 0x80000002 372 0x2 0x4e08 36
Extern 192.168.0.0 10.0.9.7 0x80000006 368 0x2 0x45d9 36