OSPF中的cost值
文章目录
- OSPF中被忽视的cost值
- 1、问题描述 && 拓扑:
- 2、实验准备:
- 2.1、搭建基本的IP环境:
- 2.2、在接口上配置传输速率:
- 2.3、配置OSPF并测试对应的实验结果:
- 3、资料查询 && 分析
OSPF中被忽视的cost值
做为一个经常和我的考研搭子小C同学经常诉说我之前网工时候的风流韵事。于是,他拿出了一道关于
OSPF协议和cost值相关的真题来想我询问。嗯嗯嗯,结果就是尴尬了。哈哈哈哈,不过凭借着在工作中学习到的技能和知识。还是,详细地分析了 OSPF 中cost这个之前一直被我忽视的点。
1、问题描述 && 拓扑:
对应的实验拓扑图下所示:

题目描述:
对应的链路的状态如上述的值所示,若 OSPF 已经收敛,在 R3 上使用 “ping” 指令测试 R3 和 R2 的f0/0 之间的连通性,则 “ping” 指令的相关IP数据报在 R2 和 R3 的f0/0接口之间传输经过的路径有几条?
2、实验准备:
实验的前期准备:
- 搭建好上述的实验拓扑,并完成简单的IP地址的配置;
- 在接口上使用
bandwidth指令来设置对应的 BW- 创建 OSPF 进程。并使用
show ip route ospf指令来查看对应的cost值
2.1、搭建基本的IP环境:
R1 设备的配置如下所示:
# R1 设备上面的基本配置:
R1#config terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#interface f0/0
R1(config-if)#no shutdown
R1(config-if)#ip address 1
*Mar 1 00:05:16.507: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar 1 00:05:17.507: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R1(config-if)#ip address 10.0.3.1 255.255.255.252
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#exit
R1(config)#interface f0/1
R1(config-if)#no shutdown
R1(config-if)#ip address 192.1
*Mar 1 00:05:50.947: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
*Mar 1 00:05:51.947: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
R1(config-if)#ip address 10.0.1.1 255.255.255.252
R1(config-if)#
R1(config-if)#
R1(config-if)#
R1(config-if)#end
精简版:
config terminal
intertface f0/0
no shutdown
ip address 10.0.3.1 255.255.255.252
exit
interface f0/1
no shutdown
ip address 10.0.1.1 255.255.255.252
end
公式版:
config terminal
interface <-- interface-number -->
no shutdown
ip address <-- ip-address --> <-- network-mask -->
exit
使用上述的公式,使用任意一种方法将对应的基础配置配完即可;
2.2、在接口上配置传输速率:
对应的公式为:
config terminal
interface <-- interface-number -->
bandwidth <-- number --> 这里的单位是 kb/s 进行单位转换
exit
每一对直连的接口都配置好相同的度量值。
【Tips】:这里的这个值的配置只是用于动态路由协议进行路由选择计算的时候使用的。并不会真实的改变物理线路上的带宽值。
2.3、配置OSPF并测试对应的实验结果:
配置公式为:
router ospf <-- ospf-processor-number -->
network <-- network-value --> area 0
exit
将对应的路由全部 network 到 area 0 区域。
使用指令查看对应的路由的度量值:
R3#show ip route ospf10.0.0.0/30 is subnetted, 3 subnets
O 10.0.3.0 [110/65] via 10.0.2.1, 00:16:17, FastEthernet0/1[110/65] via 10.0.1.1, 00:16:17, FastEthernet0/0
R3#
我们可以看到,这个值就是我们所需要的 [110/64] 110 对应的值为管理距离(不同的路由协议有不同的管理距离这个值,也是路由选择算法最后在选择的时候一个重要的参考指标,也被称为是路由协议的优先级),65对应的值就是我们需要的度量值。
3、资料查询 && 分析
当出现问题的时候,最权威的书籍就是《TCP/IP 路由技术 卷一》。上面详细的阐述了每一个协议在 Cisco 设备上的运行流程以及不同时候对应的状态;下面,我将把
cost值这个部分的内容进行展示;
原文对应如下:
链路状态协议的基本要点是它涉及到了路由器之间的链路和那些链路的状态。在 Hello数据包发送及在邻接关系建立之前,以及在LSA通告发送之前,一台OSPF路由器必须了解它自己的链路情况。OSPF协议通过路由器的接口信息来了解链路信息,所以在讲述 OSPF协议时会混用接口和链路这两个术语,而不会仔细区分它们的含义。本小节将讲述 OSPF协议接口的数据结构和OSPF 议接口的不同状态。
… …
- Cost(代价——是指从该接口发送出去的数据包的出站接口代价。链路代价是
OSPF协议的度量,并使用 16位无符号的整数表示,范围在 1~65535之间。Cisco公司使用的缺省代价是 1 0 8 B W = 1 \frac{10^8}{BW} = 1 BW108=1,表示为一个整数,在这里BW是 指在接口上配置的带宽,而 1 0 8 10^8 108 是 Cisco路由器使用的参考带宽。示例 8-2 中所示的接口配置了一个128kbit/s的带宽 (示例中没有显示),所以它的代价是 1 0 8 10^8 108/128kbit/s=781。
路由器接口的代价值可以通过命令 ip ospf cost 来改变,当在一个多厂商产品的网络环境中配置 Cisco路由器时,这个命令变得十分重要。例如,其他厂商的路由器在其所有的接口上使用的缺省代价是1(实际上就是把0SPF的代价映射为跳数)。如果网络中所有的路由器没有使用同一种计算代价的方式来值0SPF的代价,那么0SPF协 议的路由选择将出现不正确的、次优的,或其他一些不确定的情形。
另外,使用 1 0 8 10^8 108 作为接口的参考带宽在现代一些带宽高于100Mbit/s(例如 OC-3 或吉比特以太网)的网络介质中会产生一个问题。即 1 0 8 / B W 10^8/BW 108/BW = 1, 这意味着更高带宽的传输介质在OSPF协议中将会计算出一个小于 1 的分数,这在OSPF协议中是不允许的。因此, 任何代价的计算结果如果是小于1的分数,都将四舍五入为1。但是,如果我们的网络是由高带宽链路组成的,这就意味着所有接口的代价都变成了1,从而计算最短路径就变成了基于最小的路由器跳数了。 为了修正这个问题,Cisco提供了命令auto-cost reference-bandwidth,该命令允许管理者更改缺省的参考带宽。
——摘自《TCP/IP路由技术 卷一》
