8.15.5 Setting the Default Metric for Redistributed Protocols
Default-metric cost
对于重分布到OSPF的路由,如果没有使用redistribute命令分配一个度量,那么可以使用该命令分配一个成本,但使用此命令不会影响已由redistribute分配一个度量的路由,默认的redistribute-cost BGP的缺省度量是1,其他协议是20在路由进程中,使用Default-metric cost 可以更改
8.15.6 Administrative Distance
Distance administrative-distance
用于修改本地路由选择表中所有OSPF路由的管理距离,默认管理距离如下
connected— 0 static— 1 EBGP— 20 EIGRP— 90 IGRP— 100
OSPF— 110 IS-IS— 115 RIP— 120 IBGP— 200
Distance administrative-distance source-ip-address source-ip-mask access-list-number
用于修改特定来源的特定路由条目的管理距离,其中source-ip-address对于OSPF来说是源路由器的router-id,Mask是原地址的ip掩码,用反掩码表示
例如 R1 的R-ID为1.1.1.1 则 distance 99 1.1.1.1 0.0.0.0 是修改来自1.1.1.1的管理距离, 若子网掩码为0.0.0.255则指来自1.1.1.0/24的所有路由器的管理距离。同时可以可以使用access-list 对特定的路由条目进行处理
8.15.7 Filtering Routes with Distribute Lists
Distribute-list access-list-number in
用于阻止从OSPF学到的路由条目放置到IP路由选择表 如图所示,将A上过滤掉2.2.2.0 和 3.3.3.0
distribute-list 1 in
!
access-list 1 deny 2.2.2.0 0.0.0.255
access-list 1 deny 3.3.3.0 0.0.0.255
access-list 1 permit any
Distribute-list access-list-number in interfacetype interface-number
用于阻止从特定接口学到的OSPF路由被放置到ip路由选择表中。
Distribute-list access-list-number out [interfacetype interface-number | routing-process]
对于距离矢量协议(RIP IGRP EIGRP),该命令阻止被访问列表选定的路由广播到邻居处,OSPF不会把路由广播到邻居,但会广播LSDB,因此该命令在OSPF一起使用是无效的。如果加入参数 routing-process 可以过滤相应的距离矢量路由协议重分布进OSPF的路由表项
distribute-list 1 out eigrp 1
!
access-list 1 permit 4.4.4.0 0.0.0.255
Distribute-list access-list-name in
用于阻止从OSPF学到的路由条目放置到IP路由选择表
如图所示,将A上过滤掉2.2.2.0 和 3.3.3.0
Distribute-list access-list-name in interfacetype interface-number
用于阻止从特定接口学到的OSPF路由被放置到ip路由选择表中。
Distribute-list access-list-number out [interfacetype interface-number | routing-process]
对于距离矢量协议(RIP IGRP EIGRP),该命令阻止被访问列表选定的路由广播到邻居处,OSPF不会把路由广播到邻居,但会广播LSDB,因此该命令在OSPF一起使用是无效的。如果加入参数 routing-process 可以过滤相应的距离矢量路由协议重分布进OSPF的路由表项
Distribute-list prefix prefix-name [in | out] {interface-type interface-number | routing-process}
如上3例使用prefix的配置如下
8.15.8 Handling of MOSPF LSAs
Ignore lsa mospf
Cisco不支持MOSPF路由,缺省情况下会接受Type6-LSA,路由器不支持,但会产生syslog, 此命令可以阻止syslog产生
8.15.9 Logging OSPF Neighbor Changes
g-adjacency-changes {detail}
8.15.10 Multiple Path Configuration
Maximum-paths number-of-paths
默认是4条路径的负载均衡,可以自行设置负载均衡链路条路 参数范围1 ~ 6
8.15.11 OSPF neighbor Commands
Neighbor ip-address
OSPF对待NBMA网络和其他任何广播网络一样,OSPF认为这类网络具有广播特性,但必须使用neighbor命令建立一个OSPF邻居。在引入ip ospf network 接口命令前,使用neighbor 配置OSPF邻居
由于帧中继交换机是全互连的,路由器通过反向ARP获得所有特定接口的DLCI,关闭路由器A,B的反向ARP,并把适当IP映射到相应的DLCI。
但一方加入neighbor,邻居关系即将建立,并选举出DR。
//OSPF neighbor只需配置一端
Neighbor ip-address cost cost
帧中继接口在OSPF下Cost为48,Neighbor cost命令仅用于点到多点的网络
可以在接口上使用 ip ospf network point-to-multipoint更改接口网络类型
Neighbor 10.1.1.1 cost 10
Neighbor ip-address database-filter all out
此命令为了防止LSA泛洪到指定的邻居。 许多ISP在OSPF邻居间使用冗余电路,当一个OSPF路由器收到一个LSA,则LSA在所有的OSPF接口上泛洪,除了收到LSA的接口。 可以使用该命令阻止其中一个邻接LSA的扩散
注意: 该命令仅用于 p-to-mp 或者NBMA类型接口 如果OSPF邻居具有全连接,那么database-filter all out应该有效
Neighbor ip-address poll-interval interval
如果在终止间隔内没有从邻居处收到hello packet,那么这个邻居是被宣告down的,当down后,hello包会以论询间隔指定的速率发送到这个邻居,但这个选项不能用于p-to-mp接口上.仅在NBMA网络使用.
router ospf 1
network 1.1.1.1 0.0.0.0 area 1
Neighbor ip-address priority priority
设置邻居的priority 用于影响DR选举,默认priority为10 不参与选择
8.15.12 OSPF network Command
network ip-address wild-card-mask area area-id
用于通告和定义OSPF的区域,其中要使用wild-card-mask Area-id 可以使用 点分10进制的形式
8.15.13 Passive OSPF Interfaces
passive-interface interface-name interface-number
使用被动接口减少协议流量,由于OSPF有hello机制,相对于RIP,OSPF端口passive以后,邻居关系立即断开,而Rip还可以接受路由更新信息
8.15.14 Route Redistribution
redistribute routing-process process-id [tag|metric|metic-type|subnets|route-map]
*routing-process: BGP EGP Connected EIGRP IGRP ISIS ISO-IGRP Mobile ODR OSPF
RIP and Static
*ospf-metric: BGP缺省重分布度量 1 其他协议为20
*tag-value: 附加到重分布路由的一个32位的值,OSPF没有使用路由标记,
可以在用于指定策略的路由映射中引用,缺省标记为0
利用route-map控制重分布,并修改metric值,并做标记
如上图,基于标签来控制路由的重分布
8.15.15 Controlling the OSPF Router ID
Router-id ip-address
手工指定路由器的router-id,建议配置时手工设置,以增加RID的稳定性。CCIE试验时,手工设置一次,避免扣分 另ipv6环境的RID,仍然是现有的ipv4表示方法,但必须手工设置一次
8.15.16 Summarizing External Routes
Summary-address ip-address [advertise | not-advertise]
汇聚路由可以应用到从动态路由选择协议,静态路由和连接路由再次分布的路由上。 只可用在ASBR和ABR上默认参数为advertise not-advertise关键词阻止汇聚路由被ABR,ASBR广播
Summary-address ip-address tag
用于对汇总路由标记,如下例在OSPF重分布到RIP时,对特定标记的路由进行重分布
8.15.17 OSPF Timers
timers lsa-group-pacing seconds
用于LSA更新,以前仅一个计时器,每30min,路由器会检查整个LSDB并更新每个LSA。但这样将会导致路由器CPU周期性的高负载及周期性的高网络使用率。LSA-group-pacing就是用于解决这个问题的,路由器将LSA分组并指定更新 校验 老化功能的步调。对于一个快速路由器和一个慢速路由器点对点连接以及几个邻居同时向一个路由器发送分组的情况,为了增加效率和减少重传几率可以适当的增加time, 默认时间为33ms
Timers spf delay interval
用于修改SPF计算的延迟和间隔,默认时间为 5s/10s
traffic-share min across-interfaces
用于和IGRP EIGP一起是用来支持非等价负载均衡,该命令作为OSPF下一个选项出现, 但不应用到OSPF中
8.15.18 Interface Configuration Commands
ip ospf authentication
在IOS12.0以前,如果对OSPF一个区域进行认证,该区域的所有接口将配置相同的认证。 该命令允许在接口认证上与区域使用的认证类型不同
ip ospf cost
修改接口的OSPF成本值,但建议使用autocost reference-bandwidth来修改参考值
ip ospf database-filter all out
用来阻止接口上的LSA扩散。许多ISP在OSPF邻居将使用冗余的链路。可以使ISP在频繁扩散和可靠扩散间进行选择。
ip ospf hello/dead-interval
llo/失效计时器,默认为hello-interval的4倍。即邻居down了以后,发送4次hello packet 无应答,则宣告邻居失效,注意:设置时间总应大于hello-interval
1.如果链路上两端hello/dead interval不匹配,邻居关系无法建立
2.如果dead < hello ,邻居关系会反复震荡
ip ospf demand-circuit
对于某些按流量或者时间收费的线路,此命令允许在拓扑相对稳定的情况下,定期禁用hello消息,LSA的定期更新也不会传至该接口,关闭底层的数据链路层。从而减少流量和使用时间
ip ospf mtu-ignore
如果相邻的OSPF路由器的MTU单元不匹配,将无法形成邻接关系,此命令忽略mtu影响 例如Cisco Catalyst 3550的3层口和路由器直连时,如果该口不是SVI,则连接路由器运行OSPF 将会发生邻接关系震荡, 此bug则是MTU不匹配造成的.
ip ospf network
OSPF网络分以下3种形式:
1. A broadcast multi-access network 所有该网络相关的路由器都可以与其他所有路由器直连通信,例如以太网 FDDI tokenring
2. A point-to-point network 这种网络只有2台路由器,如HDLC PPP
3. NBMA 例如FR x.25等,所有的路由器都可能与其他有连接,其实质是逻辑上的点到点连接
Broadcast
如右图,对于FR线路将网络类型改为broadcast后,将建立邻居关系,并选举DR/BDR。
non-Broadcast
OSPF通过多点传送发送Hello包及其他协议包,如果网络不支持多点传送,或者只希望OSPF使用单点传送与邻居通信,这可以使用该命令,将网络类型转换为非广播型,必须使用neighbor指定邻居
Point-to-multipoint non-Broadcast
用来把一个NBMA型网络配置成多点网络。OSPF使用多点传送在点到多点网络上发送Hello包和其他协议包。在一些网络上,如ATM,连接是动态的,hello包仅在已经建立的连接上传送
如上图,A可以设置为P-MP B,C 设置为P-P
P-MP hello-interval 30s
P-P hello-interval 10s 故要修改默认的hello/dead-interval
另一种方案是,将BC均改为P-MP类型。相对于广播型,不能选举DR/BDR
Point-to-Point
如上图,如果要配置成P2P的网络结构,路由器A上将启用子接口,并将网络类型都设置为P2P,此时FR的Inverse-arp将自动失效
ip ospf priority
用于在DR,BDR选举时,设置端口优先级,1位最高优先级 0为不参与DR/BDR选举。
注意:非DR/BDR最好将其优先级设置为0,保证DR/BDR选择不会出现异常
ip ospf [retransmit-interval | transmit-delay]
LSA重传间隔及传送延迟,默认时间 5s/1s
8.15.19 Show Commands
Show ip ospf process-id
8.15.20 debug Commands
debug ip ospf adj
用来显示有关邻居关系的信息
debug ip ospf lsa-generation ip-access-list-number
显示和摘要LSA的发生和扩散有关的信息
8.15.21 clear Commands
clear ip ospf {process-id} couters {neighbor neighbor-id} {int-name int-number}
用于重新设置邻居状态变换计数器
ear ip ospf process
用于重新启动OSPF进程
clear ip ospf redistribution
用于清除重分布到OSPF的路由
8.16 配置OSPF路由
8.16.1 基本配置
8.16.4 OSPF和接口上的第二个IP地址
8.16.5 Stub区域配置
可以把区域1设置为stub area,可以在OSPF进程里加入area <area-id> stub命令把区域设置为stub area.配置如下:
8.16.6 完全Stub区域配置
只需在area stub后挂接 no-summary,仅在ABR上执行,此时将过滤掉域间路由,只剩下域内路由和默认路由
8.16.7 在NBMA型网络上配置OSPF
在NBMA网络比如ATM,X.25和帧中继等,需要人工指定邻居.在IOS版本10.0之前,可以使用命令neighbor <interface ip address>来指定邻居.
拓扑图如下:
1. neighbor命令只是用在老版本的IOS(10.0之前)上,在之后的IOS版本里,可以在接口配置模式下使用ip ospf network命令改变默认的OSPF网络类型
2. 采用全互连的NBMA上DR/BDR的选举是最有利的,但是这样的成本太高;另1种解决方法是把网络类型改为点到多点,来避免DR/BDR的选举问题.点到多点链路把PVC当作点到点链路的集合.
3. 但是这种点到多点的配置,在动态连接的网络比如帧中继SVC,ATM SVC等出现问题.在IOS版本11.3AA之后,可以使用在ip ospf network point-to-multipoint之后加个参数non-broadcast来解决.但是仍然要人工指定邻居
4. 在IOS版本11.3AA之后,多了个特性,就是在指定邻居的同时还可以基于每条VC来指定开销
5. 最后一种解决方案是,把每条PVC当作1条点到点链路,通过划分子接口的方式完成,这样也消除了DR/BDR的选举带来的问题
在配置NBMA Broadcast型时注意:
1. 更改OSPF接口优先级方式确保中心路由器为DR
2. 更改接口类型为广播型
3. 为了保证端到端ping通,边缘路由器没有直连的PVC,故在边缘路由器上除了要做对中心路由器IP地址到本地DLCI的映射,还要做邻居边缘路由器IP到本地DLCI的映射,让中心路由器引导流量
在配置NBMA P-P型时注意:
1. 中心路由器要启用子接口,子接口之间出于不同子网,映射子接口到本地DLCI
2 在边缘路由器上把接口类型更改为P-P,并映射同一子网下中心路由器子接口的IP地址到本地DLCI
在配置NBMA non-broadcast型时注意:
1. 更改OSPF接口优先级方式确保中心路由器为DR
2. 为了保证端到端ping通,边缘路由器没有直连的PVC,故在边缘路由器上除了要做对中心路由器IP地址到本地DLCI的映射,还要做邻居边缘路由器IP到本地DLCI的映射,让中心路由器引导流量
在配置NBMA P-MP型时注意:
1. 中心路由器类型改为P-MP
2. 边缘路由器如果做为P-P,只需设置一条中心路由器IP到本地DLCI的映射,并且hello_interval改为30s
3. 边缘路由器作为P-MP,需要将邻居路由器和中心路由器的IP映射到本地DLCI
4. 凡是P-MP的接口,都会宣告一条该接口的32位主机路由给邻居
8.16.8 在按需电路上配置OSPF
通过在按需电路相连的接口上增加ip ospf demand-circuits。在按需电路上实现OSPF需要注意:
1. 只有在区域的LSDB中的所有LSA设置了DC-bit后,设置DoNotAge位的LSA才被允许进入该区域
2. 实现按需电路上的OSPF区域内的说有路由器都必须具有支持这种配置方法的能力
3. 如果运行在按需电路上的OSPF是在一个非末节区域实现的,那么所有的非末节区域必须支持这种方式 因为DC-bit是在type-5LSA中实现的,Type-5 LSA可以泛洪到所有的非末节区域
4. 应该尽量限制在末节,完全末节,NSSA区域上实现DC,因为这样可以限制LSA的数量,亦可取消OSPF域内的所有路由器支持DC
5. 如果配置的DC上有虚电路穿过,此虚电路亦被认为是按需电路
6. 每30min刷新LSA。但由于设置了donotAge的LSA在穿越按需电路时不需要刷新,因此丧失了OSPF的稳定特性
7. 重新刷新过程可以在一条按需电路两端外的其他所有接口上发生。结果导致链路2端的LSA序列号可能会是不同的
8.17 OSPF设计及解决方案
推荐的OSPF网络规模如下表
ABR的区域数目:每个ABR有2个区域是最优的
DR/BDR选择:可以使用show process cpu/memory检查
尽量选择负载低,且链路稳定的路由器为了网络稳定,最好设置端口优先级,避免路由进程重启后导致的DR/BDR改变
NBMA网络: 部分互联网络要比全互联好很多,在一些情况下仔细设计的P-P或者P-MP网络要比多点网络工作起来好很多
LSDB大小: LSDB的大小对于路由器是否稳定工作十分重要
*路由选择表的每一项需要消耗200~280字节,加上每条链路消耗44字节
*每个LSA消耗100字节,加上LSA实际长度,大概增加60~100字节
因此通常要给少于500KB的路由选择表2~16MB的RAM。大于500KB大型网络需要16~64MB的储存器 检测注意:
how memory最好不要在工作日时间做,在show memory之前最好备份路由器配置,
较小OSPF区域并使用路由汇总将会急剧减少CPU使用
OSPF区域设计概述:
1. 优先考虑物理的临近
2. 如果链路不稳定则减小区域规模
3. 确保连续的区域,尽量避免不必要的虚链路
4. 调整hello-interval/dead-interval/retransmission-interval/
transmit-delay来降低链路使用率
5. 区域命名,点分10进制和普通10进制2种。大型多区域最好采用点分10进制
6. BB区域必须连续,否则会对网络稳定性产生影响,当然非连续也可以通过VL来修补
7. E1/E2路由:通常网络有多个从OSPF AS到相同外部网络的接入点,使用E1路由可以让路由器更好的选择到外部的最短路径,同时大规模网络亦使用E1。当网络规模较小时使用E2
8. 尽量把ABR的loopback口放入area 0
OSPF Redistribution:
1. 尽可能将功能不够强大的路由协议重分布到相对功能强大的路由协议中, 例如RIP重分布进OSPF OSPF重分布进BGP。但BGP重分布进OSPF将是一个非常糟糕的做法
2. 尽可能在一个点上重分布。多点重分布容易产生环路,例如CCIE_lab 160的路由环路
3. 使用路由过滤器,尽量过滤无用路由信息
4. 必要时进行重分布,而不是尽可能重分布
5. 调整管理距离和路由选择度量标准
6. 一直都要设置度量值。
7. 对部分路由信息打标,通过route-map过滤分类是一个不错的做法
OSPF Summary-address:
1. IP编址时尽量考虑到子网的规则分配
2. IP编址尽量考虑到以后用户的增长
3. 汇总仅在ABR,ASBR进行
4. 如果网络中有Classful的路由协议,则必须在边界上进行汇总。
8.18 OSPF排错
.
8.18.1 Troubleshooting 常用步骤:
1. 清楚地定义问题
2. 收集信息,例如受影响的用户,网络管理员,改变的配置,NMS报告内容,路由器debug命令, Cisco设计缺陷等
3. 思考可能的问题
4. 制定一个行动计划
5. 执行计划
6. 收集结果
7. 重新执行此过程
8.18.2 Debug命令使用:
参见前文command and configurations中的相关叙述
8.18.3 OSPF协议故障排除方法如下
1. 一般故障是由路由信息丢失,错误的或者不精确的路由信息引起的。
2. show ip ospf database 查看LSA,如果一条链路是不稳定的,则通告将十分频繁,故其序列号明显高于其他LSA
3. 检查network area 语句是否把所有接口都指定到正确的区域,wild-netmask是否正确
4. 检查邻接关系时,考虑hello报文是否在发送?两端计时器是否相同,可选性能字段是否相同,接口是否在同一子网邻居是否同一种网络类型
5. 认证类型是否有问题?
6. 虚链路是否正确设置?
7. 如果怀疑LSDB有问题,可以show ip ospf database查看同区域内每台路由器的LSA数量及类型
8. 分区域检查,如果stub NSSA区域,每台路由器都将申明area stub or area nssa
9. 地址汇总配置是否正确
10. 防止重分布产生的路由环路
8.18.4 OSPF协议常见故障:
邻居及邻接关系出现问题大致情况如下
1. OSPF没有在接口上启用,或者一条网络路由器配置命令错误或丢失
2. 不匹配的Hello或者计时器,E位,区域ID,认证类型或者网络掩码
3. 访问列表错误配置,可能正在阻塞OSPF hello包
4. 虚拟链路和末节设置不匹配
5. 接口被定义为passive-mode
6. 不匹配的认证类型
7. 不匹配的认证密钥
8. 第2层停机
9. 没有在NBMA上定义网络类型
10. FR或dialer缺少broadcast关键字
8.18.5 OSPF停滞在INIT状态
检查方法如下:
1. 一端正在阻塞hello分组
2. 一端NAT转换了OSPF hello 包
3. 一端的组播能力被破坏
4. 肯定是一个2层的问题
5. Dialer或FR缺少broadcast
6. 路由器发送hello,但没有收到响应
7. 邻居hello在NBMA云团中消失
8. ACL或者某些2层原因拒绝了hello包
8.18.6 OSPF停滞在Exstart/Switching状态
检查方法如下:
1. MTU不匹配
2. 邻居RID是一致的
3. 单播被破坏
在一个高度冗余的网络中,Frame/ATM环境中错误的VC/DLCI映射
MTU的问题,不能使用超过某长度的分组
ACL阻塞单播
NAT正在转换单播分组
4. 在PRI和BRI/dialer和网络类型之间是点到点的
8.18.7 OSPF停滞在Loading状态
未完,待续!