OSPF路由选择
1. OSPF代价
OSPF度量标准的缺省值是基于带宽的.以下显示了这个度量标准如何产生:
l 根据链路的带宽赋予每个链路一个度量值
l 特定链路的度量标准是该链路带宽的倒数
l 链路度量标准是规格化的,例如快速以太网是1
l 一个路由的度量标准是该路由中所有链路的度量标准总合
OSPF使用代价作为路由选择度量标准决定哪条路径是抵达目的地的最短路径.计算代
价的公式如下:
cost=基准带宽/接口带宽
基准带宽(reference bandwidth)的缺省值是100000000.
下表列出了不同链路的OSPF代价
链路类型 | 速度 | 代价 |
串口 | 56000 | 1785 |
DS0 | 64000 | 1562 |
T1 | 1544000 | 65 |
E1 | 2048000 | 48 |
令牌环 | 4000000 | 25 |
以太网 | 10000000 | 10 |
令牌环 | 16000000 | 6 |
T3 | 44736000 | 3 |
快速以太网 | 100000000 | 1 |
1000M以太网 | 1000000000 | 1 |
OC-3 | 155520000 | 1 |
OC-12 | 622080000 | 1 |
OSPF中代价最小值是1.这就出现了一个问题:OSPF无法区分高速链路.因此可能会导致非最优路由.
在IOS10.2或更早版本中,Cisco对OSPF的实现给路由器接口赋予缺省代价,而不考虑与接口实际相连的链路的带宽,例如,会赋予64K和T1链路相同的OSPF代价---这很显然是一个严重问题.因为它们都是采用相同的串口.我们可以通过ip ospf cost命令来重载缺省值来解决这个问题.重载代价后,OSPF计算代价就不会去考虑其他因素,哪怕是改变基准带宽.
修改代价的另一种方法是改变基准带宽.可以用auto-cost reference-bandwidth命令来实现,缺省值是100,不过单位是M.该命令有些注意的地方:
该命令应该在OSPF的配置模式下使用,它对OSPF的影响是全局性的;
必须在每个区域都使用该命令以保持每处代价具有相同的意义.
查看接口度量可以用show ip ospf interface命令.
2. OSPF的收敛
路由选择收敛的两个基本组建是:
l 检测网络拓扑变化
l 快速重新计算路由
OSPF采用下列机制检测拓扑变化
l 接口状态变化
l OSPF在指定时间窗口内从邻居接受hello分组失败,这叫做dead记时器.
但是,OSPF的故障检测机制因介质的不同而有微小的区别.
l 串口故障用如下之一的方法检测:
----如果用Frame-Relay,立即检测LMI丢失情况
----在keepalive时限(通常是10s)3倍的时间内没有收到keepalive
l 若是令牌环或FDDI则立即检测
l 若是以太网则在keepalive分组失败3次后才进行检测
1) hello记时器
hello分组传播在广播网络中缺省每10s发送一次,非广播网络中缺省每30s发送一次可以用ip ospf hello-interval命令来更改,但通常很少用.hello间隔越小,检测网络拓扑变化越快,但路由流量也越大.一个网络中所有路由器和访问服务器中的这个值必须相同.
2) dead记时器
当dead记时器期满后,路由器会假定邻居已经关闭.我们用ip ospf dead-interval命令来配置.dead记时器缺省值是hello间隔的4倍.
3) SPF记时器
OSPF收到拓扑信息变化与开始SPF计算之间的延迟时间是可以配置的.连续两个SPF计算的时间间隔也是可以配置的.当网络中大量出现接口变化,或者引发发送LSA的事件.例如快速翻动的串行链路,该命令是非常必要的.通过修改SPF记时器,可以直接影响OSPF的路由能力.缺省情况下,OSPF在收到拓扑信息变化之后,处理改变信息之前会等待5s.在SPF计算间隔时间缺省是10s.可以通过在路由配置模式下用times spf来改变.
3. 路由器ID
我们可以用router-id命令来指定OSPF路由器id.每个RID必须是独一无二的.在一台已经运行OSPF的路由器上使用该命令后,必须重新启动OSPF进程或者路由器.可以用命令clear ip ospf process或者reload来实现.
4. 回环接口
OSPF使用在活动接口上配置的最高的IP地址作为它的RID.如果与该地址关联的接口不可用,或者该地址已经被清除.OSPF进程必须重新计算出新的RID,并将所有的路由选择信息通过它的接口用泛洪的方式发布出去.
如果一个回环接口配置了IP地址,缺省情况下OSPF使用这个IP地址作为它的RID.这是因为回环接口不会失效,更加稳定.
5. 配置指定路由器
我们可以通过手工指定路由器的优先级来影响DR选举过程,使特定路由器成为DR.优先级缺省值为1,0表示不参加DR选举.数字越高表示越有可能成为DR.可以在接口配置模式下用命令ip ospf priority命令来指定优先级.
6. 路由器类型
OSPF可以处理4种类型的路由.
l Intra-area----路由到同一区域的网络,基于链路计算代价
l Inter-area----路由到不同区域的网络,基于链路计算代价
l E1----路由到OSPF AS外的网络,其中OSPF AS总代价按照下面公式计算:代价=外部+内部度量
l E2----路由到OSPF AS外的网络,其中OSPF AS代价是外部度量.该路由是外部OSPF的缺省路由类型.
尽管一个外部类型1的网络不是缺省的,但事实上却是被推荐的.因为作为使用代价作为度量的路由协议,OSPF不应当忽视路由决策的代价.很多人将OSPF配置为通过将所有外部路由变为E1来实现,从而保证不会忽略代价.在下面情况下应考虑用E1:
l 网络有多个从OSPF AS到相同外部网络的连接点(比如到Internet的多个出口连接)
l 网络有多个到单一外部网络的多个目的路径,例如一个网格网络.
而对于E2的使用推荐如下:
l 端ABR产生的缺省路由是进入端区的E2路由
l 网络不大,不需要E1路由
将缺省的E2路由转换为E1路由需要重分布才行.
7. 控制区域流量
当一个区域只有一个ABR时,所有不属于该区域的流量都送到ABR.在那些有多个ABR的区域,离开该区域的流量可以进行以下选择:
l 使用距流量产生地最近的ABR.这可以使流量尽可能快的离开该区域.
l 使用距流量目的地最近的ABR.这可以使流量尽可能晚的离开该区域.
通常前者更让人满意,被采用更多.但是如果想要流量使用距目的地最近的ABR,这些ABR应当向区域注入路由汇总而不是只注入缺省路由.
关于OSPF端区的讨论
在OSPF中,端区携带缺省路由和区域间路由,但不携带外部路由。将网络一些部分放入端区,可以有效减少网络的开销。
有三种不同类型的端区:标准端区;完全端区和非完全端区。
一、端区设计的规则
设计端区时要参考下列规则:
◎ 端区需要一个单一的ABR,但是如果存在多个ABR时,就必须接受非优化路径
◎ 在端区内不应该有ASBR
◎ 不允许虚链路发送到端区
◎ 任何类型端区内的所有路由器必须配置成能识别它们所在的位置
◎ 骨干区域不能配置成端区
二、关于端区的原理和配置
1、 标准端区
配置命令area area-id可以配置一个标准端区,该命令必须在端区内的所有路由器上配置。
标准端区阻塞外部路由,不允许路由汇总。类型1到4的LSA被允许,类型5到7的LSA被阻塞。
对该区域配置缺省代价可以用命令
area area-id default-cost cost
如果没有用该命令配置代价,ABR广播的代价等于1。
2、 完全端区(TSA)
完全端区是Cisco私有的,并不为正式的OSPF标准所支持。但只需要与完全端区相连的ABR是Cisco路由器就可以,区域内其他路由器并不受影响。此类区域的ABR只向端区的其他部分广播缺省路由。TSA阻塞了外部路由和汇总路由。用命令
area area-id
来创建一个完全端区。
3、 非完全端区(NSSA)
NSSA拥有自己的RFC。此类端区引入了一种新LSA-类型7。NSSA不把类型5的外部LSA从核心泛洪到NSSA,但作为混合的端区,NSSA能以限定的方式把AS外部路由输入到区域内部。NSSA以类型7的LSA的形式处理与外部网络的连接。
NSSA允许通过重分布在NSSA区域内输入类型7的AS外部路由。NSSA的ABR将类型7的LSA翻译成类型5的LSA,它将在整个路由选择域内泛洪。在翻译的过程中支持汇总和过滤。类型7的LSA的两个主要好处就是支持过滤和汇总。一般来说,当区域位于ASBR和ABR之间时,并且ASBR连接到不同的路由选择协议处以及ABR连接到OSPF区域0处,就使用NSSA。
详细情况可以参考RFC1587。
在实现NSSA之前,考虑以下因素:
◎ 可以设置类型7为缺省路由,通过它可以到达外部目的地址。在配置时,路由器产生一个类型7的缺省通过NSSA ABR进入NSSA
◎ 同一个区域的每台路由器必须对于该区域是NSSA达成一致
如果可能,尽量避免在NSSA ABR上显示的使用重分布。用以下命令来配置NSSA:
area area-id
可选参数no-redistribution表示不将NSSA的ASBR产生的外部路由传播到NSSA区域内;可选参数default-information-originate表示在NSSA的ABR和ASBR上产生一条在NSSA区域内传播的缺省路由。
在ABR上,下列命令可以在翻译过程中控制将类型7的LSA汇总和过滤成类型5的LSA:
summary address prefix mask [not advertise] [tag tag]