ospf里cost和metric有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ospf里cost和metric有啥区别?相关的知识,希望对你有一定的参考价值。

参考技术A OSPF因为是链路状态路由协议,所以里面有用的只有COST ---代价值 是根据带宽和其他因所得到的
而metrics被称作度量值(不同于RIP)是用来确定最优路由的
实际上metric是包括cost的
其中metrics除了cost还包括跳数、tick(链路延时)、负载、mtu、可靠性等等。
参考技术B OSPF一些常用命令
来简单描述一下常用的LSA
类型代码 描述
1 路由器lsa(本身接口ip,基本adv邻居接口状态)
2 网络lsa(p2p.p2m没有此类型.由DR产生.公告网络topo结构.只在广播网络中使用)
; 以上2条可使用sh ip os data network 查看
3 网络汇总lsa描述非backbone区域.由ABR产生
4 ASBR汇总lsa 描述到达ASBR的路经. 由ABR产生
以上2条可使用 sh ip os data summary 查看
5 外部的lsa(非ospf的条目,如rip.eigrp.static.分发进来)
可使用 sh ip os data external 查看
7 nssa外部lsa
可使用 sh ip os data nssa-external 查看
11 opaque lsa(AS范围)表示tag用

区 域 命 令
Area area-id stub ABR和这个区域内的所有路由器都要被配置
配置stub区域
存在lsa 1 2 3
backbone只向其通告缺省路由和域间路由

Area area-id stub no-summary 只在ABR上配置,这个区域内的路由器仍然配置为stub
配置一个完全的stub区域
存在lsa 1 2 以及一条OIA的缺省路由
backbone只向其通告缺省路由

Area area-id nssa ABR和这个区域内的所有路由器都要被配置
配置一个nssa区域
存在lsa 1 2 3 7
但由于这个区域中存在了ASBR.自然就产生了lsa5的外部路由.而stub区域本身不能存在这个类型的lsa. 于是nssa区域把本来stub中不允许存在的lsa5变为lsa7.所以nssa比stub多了一个lsa7.在这个lsa7到达nssa的ABR后,lsa7再变为lsa5向backbone进行通告

Area area-id nssa no-summary 只在ABR上配置,这个区域内的路由器仍然配置为nssa
配置一个完全的nssa区域
存在lsa 1 2 7
完全的nssa区域仍然把本身的N2(lsa7)条目在ABR上转为E2(lsa5)通告到backbone

Area area-id nssa no-redistribution
阻止redistribute的路由进入nssa区域
本来你配置nssa是因为你的区域中有一个和eigrp网路相连接的路由器.这时候你ASBR又宣告了一个rip的网络.backbone可以学习到,但对于nssa区域来说就没有必要了.这时候你可以使用它来阻止重分发的rip进入你的nssa区域.
仅用在ASBR上

Area area-id nssa default-infromation-originate
把一个缺省路由广播到nssa区域中
和stub区域会通告一条到达backbone的缺省路由(O*IA)不.nssa则不会自动产生
使用后不需要配置ip route .nssa就可以产生一条到达backbone的缺省路由(0*N2)
仅在ABR或ASBR上使用

Area area-id default-cost cost
设置stub区域的缺省成本 默认为1
在你的stub区域的某台路由器rack05R4上看到的O*IA的metric为65(64+1).然后你再ABR上设置cost为15.那么在返回rack05R4会看到metric为79(64+15).
仅在stub区域ABR上工作

汇聚内部路由 ( ABR 上使用 )
Area area-id range ip-add mask
Area area-id range ip-add mask advertise
这2个命令用途是一致的这儿就放在一起说明
比如你的area1中有
156.26.32.0/28 156.26.32.16/28 156.26.32.32/28 156.26.32.48/28
4个网段.你可以用area 1 range 156.26.32.0 255.255.255.192汇聚他们
这样在area0中看到的就是O IA 156.26.32.16/26一条路由而不是4条
同样你也可以从backbone(area0)向非backbone(area1)区域汇总
为了防止环路(通常在配置了缺省路由的情况下会发生)在某个被汇聚网段消失时,丢弃到这个网段的流量.建议使用ip route 156.26.32.0 255.255.255.192 null 0

Area area-id range ip-add mask not-advertise
抑制ABR广播的路由汇聚

汇聚外部路由 (可在ASBR和ABR上使用,但在ABR上使用时只能汇聚外部ospf路由)
Summary-address ip-add mask
比如你redistribute connected sbunets
156.26.32.0/28 156.26.32.16/28 156.26.32.32/28 156.26.32.48/28
4个网段.你可以用summary-address 156.26.32.0 255.255.255.192汇聚他们
这样在ospf的backbone中看到的就是O E2 156.26.32.16/26一条路由而不是4条
summary与range的区别
summary汇聚的是rip. eigrp. static重分发的路由.
Range汇聚的是ospf区域之间的路由

Summary-address ip-add mask not-advertise
阻止汇聚路由被ABR或ASBR广播
Summary-address ip-add mask tag value
在使用标记的网络中,允许给予标记值得路由策略,并且可以代替基于IP地址的路由策略
不说了,有点复杂,要配图和例子.我会做个试验说明的

Auto-cost reference-bandwidth bandwidth
全局性修改ospf各接口的成本
ospf把接口带宽分为10^8莱计算接口成本.当接口带宽大于100Mbit/s,不推荐使用缺省值(因为ospf不能区分大于100Mbit/s的接口)这是个全局性的.对于个别接口可以在接口下使用ip os cost (但不推荐)
接口类型 接口带宽 ospf成本
loopback 8 000 000 000 1
serial 56 000 1785
T1 1 544 000 64
Ethernet 10 000 000 10
fast Ethernet 100 000 000 1
Gigabit Ethernet 1 000 000 000 1
OC48 2 500 000 000 1

在同一区域中,所有的ospf路由器要配置相同的参考带宽(不同区域的参考带宽可以不同).
loopback的成本始终为1

产生缺省路由
Default-information originate
广播缺省路由到OSPF域内
如果1个ospf区域area0中有3台路由器rack05r1~r3.
而rack05r1成为了ASBR(比如连接到ISP)
那么只有rack05r1知道如何到达isp而r2和r3是不知道的
这时就需要在r1上使用Default-information originate来向r2和r3宣告如何到达
并且在r1上配置ip route 0.0.0.0 0.0.0.0 next hop
这样r2和r3会看到一条O*E2 0.0.0.0/0的缺省路由

Default-information originate always
无条件的广播缺省路由到OSPF域内
引用上面的说明.在r1上不配置ip route 0.0.0.0 0.0.0.0 next hop
r2和r3同样也会看到一条O*E2 0.0.0.0/0的缺省路由
always就是强制产生的意思

Default-information originate metric cost
Default-information originate always metric cost
如果不只一个OSPF路由器广播缺省路由.使用cost值可以用来选择最优路经.metric值越低(cost越低)越优先

Default-information originate metric-type type
Default-information originate always metric-type type
type的值有1和2两个等同于你在Default-information originate说明中R2和R3看到的是 O*E1 0.0.0.0/0还是O*E2 0.0.0.0/0
默认的是O*E2它的metric为1 不计算内部成本
也就是说你在r2和r3看到的关于O*E2 0.0.0.0/0 [110/1] 的metric为1
如果改为type1 那么你在r2和r3上看到的关于O*E1 0.0.0.0/0 [110/xxx] 那就不一定了.因为要计算内部路由的metric

Default-information originate route-map route-map-name
使用route-map有条件的广播缺省路由
如果使用了Default-information originate always 那么route-map将失效
也不好解释,我已经做好了配置演示,可以在论坛的NA版找到[ospf试验]产生缺省路由

Default-metric cost
为再分布的协议设置缺省的度量
比如在1个ospf域内有rack05r1和r2.
r1现在成为ASBR连接并重分发了一个eigrp的网络.
比如我们在r1上看到的eigrp的路由为D 3.3.3.3 [90/4046000]
那么r2上会看到0 E2 3.3.3.3 [110/20]
这时在r1上使用default-metric 55 之后r1上是不会有什么变化的
但r2上会看到0 E2 3.3.3.3 [110/55]

Distance administrative-distance
调整管理距离来影响路由的选路
1台路由器从2个以上的协议(ospf和rip)学习到同一个网络.这个时候AD就来选择最优路经.AD值低的优先选择
常见的AD
connected 0
static 1
ebgp 20
eigrp 90
igrp 100
ospf 110
is-is 115
rip 120
ibgp 200

例如1台路由器从eigrp和ospf都学到一条3.3.3.3的路由
正常情况下sh ip route出来的是D 3.3.3.3 [90/xxx] (eigrp的AD为90<ospf的110)
但在这台路由器的ospf的进程下使用distance 80
那么再次sh ip router 则出来的是 O 3.3.3.3 [80/xxx] (现在ospf的110变为80<eigrp)

Distance administrative-distance source-ip-add source-ip-mask
更改从IP地址/mask相匹配的的原地址学习到的路由的AD

Distance administrative-distance source-ip-add source-ip-mask acl-num
更改使用acl选定的从IP地址/mask相匹配的的原地址学习到的路由的AD

Distance ospf external/inter-area/intra-area administrative-distance

用分布列表过滤路由
Distribute-list alc in
阻止从ospf学到的路由被放置到ip路由选择表中
在一个由rack05r1,r2和r3的路由器组成的ospf域中.
r1宣告了1.1.1.1 2.2.2.2 3.3.3.3 三个网段
在r2上定义1个acl
acc 1 deny 2.2.2.2 0.0.0.255
acc 1 deny 3.3.3.3 0.0.0.255
acc 1 permit any
然后在r2的ospf进程下使用 distribute-list 1 in
这样r2只能看到1.1.1.1的路由.
但是被过滤的路由条目仍然在r2的DB中存在 r3还是可以学习到所有的路由条目
ospf只能做in方向的过滤.out方向的过滤是无效的

Distribute-list acl in interface-type interface-number
阻止通过ospf特定接口学到的路由被放置到ip路由选择表中

Distribute-list alc out
Distribute-list acl out interface-type interface-number
以上2条命令对于DV协议如rip eigrp,阻止被acl选定的路由广播到邻居处
ospf是LS协议,路由是通过LSA传播的,因此这2条命令和ospf一起使用是无效的

Distribute-list acl out routing-process
阻止在分布到ospf的路由被放置到ip路由选择表中
在一个由rack05r1,r2和r3的路由器组成的ospf域中.
r1是一个ASBR学习到由eigrp 100网络宣告的路由D 3.3.3.3 和D 4.4.4.4
这样在r2和r3中会看到 O E2 3.3.3.3和 O E2 4.4.4.4
那么在r1中定义acl acc 1 permit 4.4.4.0 0.0.0.255
然后再ospf进程中使用 distribute-list out eigrp 100
这样r2和r3中只能看到 O E2 4.4.4.4 同时他们的DB中也不存在3.3.3.3

Distribute-list prefic prefix-list-name in
阻止从ospf学到的路由被放置到ip路由选择表中
其实就是用前缀列表代替acl. 引用Distribute-list alc in 的topo结构
ip prefix-list filter-ospf seq deny 2.2.2.2/32
ip prefix-list filter-ospf seq deny 3.3.3.3/32
ip prefix-list filter-ospf seq deny permit 0.0.0.0/0
在ospf进程中 distribute-list prefix filter-ospf in
我们可以看到同样的效果

Distribute-list prefic prefix-list-name in interface-type interface-number
阻止通过ospf特定接口学到的路由被放置到ip路由选择表中

Distribute-list prefic prefix-list-name out
Distribute-list prefic prefix-list-name out interface-type interface-number
以上2条命令对于DV协议如rip eigrp,阻止被acl选定的路由广播到邻居处
ospf是LS协议,路由是通过LSA传播的,因此这2条命令和ospf一起使用同样是无效的

Distribute-list prefic prefix-list-name out routing-process
阻止在分布到ospf的路由被放置到ip路由选择表中
引用Distribute-list acl out routing-process 的例子
更改配置 ip prefix-list filter-eigrp seq 5 permit 4.4.4.0/24
在ospf进程中 distri prefix filter-eigrp out eigrp 100
效果是一样的

记录OSPF邻居状态的改变
Log-adjacency-changes
把ospf的邻居状态改变信息记录到控制台
Log-adjacency-changes detail
把ospf的邻居状态改变信息记录到内存中
通过 show logging 显示缓冲区的内容

最大路经配置
Maximum-paths number-of-paths
在负载均衡的情况下,允许使用几条链路.默认4条.可以配置为1-6条

被动接口
Passive-interface interface-name interface-number
使用被动接口减少协议流量
如果s0/0,s0/1和e0/0三个接口都被network包含了,而e0/0没有任何ospf邻居.
就可以使用passive-interface e0/0 在指定接口阻止ospf包

Passive-interface default
如果你有100个接口被network包含,而只有s0/1一个接口有ospf邻接.
那么这条命令用起来就很爽了
passive-interface default
no passive-interface s0/1
其实我觉得network x.x.x.x 0.0.0.0 area x 更方便起码只用敲1行就好了

路由的再次分布
Redistribute routing-process process-id
使用缺省类型和度量把主类路由再次分发到ospf中
比如你的ASBR路由器分发了eigrp的
5.5.5.5./8 145.5.5.5/16 205.5.5.5/24 classful
6.5.5.5/12 146.5.5.5./18 206.5.5.5/28 classless
那么你的ASBR只能往其他的ospf路由器宣告
5.0.0.0/8 145.5.0.0/16 205.5.5.0/24

Redistribute routing-process process-id subnets
为了让上面所有的6个条目都能被正确宣告,加上subnets就ok了

Redistribute routing-process process-id metric ospf-metric
指定再分配的路由度量或成本
默认BGP缺省度量为1 其他的协议为20 取值0~16 777 214

Redistribute routing-process process-id metric-type ospf-metric
指定再分配的路由类型
缺省为2 取值1, 2
1 O*E1 计算内部成本
2 O*E2 不计算内部成本

Redistribute routing-process process-id tag tag-value
指定再分配的路由标记
附加到再分布路由的一个32位值.ospf本身没有使用路由标记,但可以在用于指定策略的route-map中引用(就是通过下面的命令实现),比如以tag为基础制定策略再次分布路由
缺省值为0 取值范围0~4 294 967 295

以上参数可以组合使用以满足特定需求

Redistribute routing-process process-id route-map route-map-name
基于tag来控制路由的再分配
比较繁琐,用法也比较多,配合上面的参数我会做个试验给大家看看的

ospf的命令很多比较多.比如接口配置的命令.没有在这里列举出来的原因
部分是要和其他的命名配合使用比如authentication. network. priority需和区域命令配合使用,再罗列出来会显得比较罗嗦.
还有些特性命令 demand-circuit. database-filter all out. fold-reduction和特殊环境下使用的 mtu-ignore .等等,
如果需要的话可以查阅 <Cisco OSPF Command and Configuration Handbook

参考资料:http://blog.chinaunix.net/u/2830/showart_392133.html

假装网络工程师11——ospf路径选取详解

一、背景介绍

提到路由,就一定会涉及选路,ospf与其他路由协议一样,同样存在选路,除了对比cost(metric)值,ospf协议还会对比表项,并且表项的优先级高于cost值,本文详细说明ospf协议的路径选取原则。

二、实验拓扑

技术图片
本次实验拓扑如上图所示,R2,R3环回接口模拟外部网络,通过import-route导入,每条路径的cost如标注所示

三、ospf选路详解

1.cost值比较

此时将基础配置按照上图配置好,外部路由直接使用import-route direct导入,未设置接口cost值时,此时在R1上看到去往192.168.0.0/24网段的路由如下所示:

[R1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 11       Routes : 12       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       12.0.0.0/24  Direct  0    0           D   12.0.0.1        GigabitEthernet
0/0/0
       12.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     12.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
       13.0.0.0/24  Direct  0    0           D   13.0.0.1        GigabitEthernet
0/0/1
       13.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
     13.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
    192.168.0.0/24  O_ASE   150  1           D   13.0.0.3        GigabitEthernet
0/0/1
                    O_ASE   150  1           D   12.0.0.2        GigabitEthernet
0/0/0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

通过路由表能够看到,R1认为13.0.0.3与12.0.0.2是等价路由,都可以去往192.168.0.0/24,且cost为1(环回接口cost默认为1),但如果只是将R2的g0/0/0与R3的g0/0/1端口开销值进行更,R1去往192.168.0.0/24还是负载均衡

[R2-GigabitEthernet0/0/0]display this 
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 12.0.0.2 255.255.255.0 
 ospf cost 100
#
return
[R3-GigabitEthernet0/0/1]display this 
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 13.0.0.3 255.255.255.0 
 ospf cost 10
#
return

只有将R1上的g0/0/0与g0/0/1端口开销修改后才能看到选路后的效果,此时R1路由表去往192.168.0.0/24网段只会保留去往R3的条目

[R1]dis ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 11       Routes : 11       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       12.0.0.0/24  Direct  0    0           D   12.0.0.1        GigabitEthernet
0/0/0
       12.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     12.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
       13.0.0.0/24  Direct  0    0           D   13.0.0.1        GigabitEthernet
0/0/1
       13.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
     13.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
    192.168.0.0/24  O_ASE   150  1           D   13.0.0.3        GigabitEthernet
0/0/1
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

原因就是R2与R3跟R1都是直连,cost为0,g0/0/1的端口开销为10,小于g0/0/0的100,所以优选从R3去往192.168.0.0/24网段。由此可以得知路径开销计算的方法:本地端口开销+到达目的地址经过所有网段的开销,以R2上12.0.0.0/24去往R3上13.0.0.0/24为例
技术图片
此时开销为R2本地g0/0/0接口开销(100)加R1上13.0.0.0/24网段端口(g0/0/1)开销(10),所以此时总的开销为110

<R2>display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 11       Routes : 11       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       12.0.0.0/24  Direct  0    0           D   12.0.0.2        GigabitEthernet
0/0/0
       12.0.0.2/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     12.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
       13.0.0.0/24  OSPF    10   110         D   12.0.0.1        GigabitEthernet
0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
    192.168.0.0/24  Direct  0    0           D   192.168.0.1     LoopBack0
    192.168.0.1/32  Direct  0    0           D   127.0.0.1       LoopBack0
  192.168.0.255/32  Direct  0    0           D   127.0.0.1       LoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

2.外部表项类型1与类型2

上述在将外部路由使用import-route引入时,没有指定类型,此时默认值2,外部表项类型有两种:分为类型1与类型2

[R3-ospf-1]import-route direct ?
  cost          Set cost
  route-policy  Route policy
  tag           Specify route tag
  type          Metric type of the imported external routes
  <cr>          Please press ENTER to execute command 
[R3-ospf-1]import-route direct type ?
  INTEGER<1-2>  Type value

其中类型2为开销值不累加,即外部端口开销值为多少,引入ospf后,在ospf域内始终为多少,上文中等价路由的cost值为1,原因就是开销不累加,只按照环回接口本身的开销值计算,如果在导入时将R2的外部表项类型改为1,此时尽管R3去往192.168.0.0/24网段的开销为101,小于R2的开销1,但在R1的路由表中,存放的依然是R2的路由

<R1>display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 11       Routes : 11       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       12.0.0.0/24  Direct  0    0           D   12.0.0.1        GigabitEthernet
0/0/0
       12.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     12.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
       13.0.0.0/24  Direct  0    0           D   13.0.0.1        GigabitEthernet
0/0/1
       13.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
     13.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
    192.168.0.0/24  O_ASE   150  101         D   12.0.0.2        GigabitEthernet
0/0/0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

说明在ospf路径选取时:外部表项类型1>外部表项类型2>cost值

3.区域内与区域间

此时拓扑如下图所示,首先让所有路由器在同一区域内,按照标注建立好ospf邻居,并设置好端口开销值
技术图片
此时R1如果到24.0.0.0/24网段有2条路径:

  1. R1--R3--R4,此时开销值为120
  2. R1--R3--R2--R4,此时开销值为30

所以,R1会选取第2条路径放在自己的路由表里

[R1]tracert 24.0.0.4

 traceroute to  24.0.0.4(24.0.0.4), max hops: 30 ,packet length: 40,press CTRL_C
 to break 

 1 13.0.0.3 20 ms  20 ms  20 ms 

 2 23.0.0.2 30 ms  30 ms  40 ms 

 3 24.0.0.4 30 ms  30 ms  30 ms 

说明在同一区域中,路径取cost值小的,如果此时将拓扑变为如下所示:
技术图片
R2跟R3此时成为2个abr,还是以R1到24.0.0.0/24网段为例,尽管这时 R1--R3--R2--R4开销值仍为30

[R1]display ospf routing 

     OSPF Process 1 with Router ID 1.1.1.1
          Routing Tables 

 Routing for Network 
 Destination        Cost  Type       NextHop         AdvRouter       Area
 12.0.0.0/24        50    Stub       12.0.0.1        1.1.1.1         0.0.0.0
 13.0.0.0/24        10    Stub       13.0.0.1        1.1.1.1         0.0.0.0
 23.0.0.0/24        20    Stub       13.0.0.3        3.3.3.3         0.0.0.0
 24.0.0.0/24        30    Inter-area 13.0.0.3        2.2.2.2         0.0.0.0
 34.0.0.0/24        110   Inter-area 13.0.0.3        3.3.3.3         0.0.0.0

 Total Nets: 5  
 Intra Area: 3  Inter Area: 2  ASE: 0  NSSA: 0 

但此时他会选择 R1--R3--R4,原因就是从R1--R3后,他会认为R2是区域间路由(即上图中的Inter-area),尽管开销更低,他依然会选择同区域内的R4,虽然此时路径总开销为110

[R1]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 15       Routes : 15       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       12.0.0.0/24  Direct  0    0           D   12.0.0.1        Serial1/0/0
       12.0.0.1/32  Direct  0    0           D   127.0.0.1       Serial1/0/0
       12.0.0.2/32  Direct  0    0           D   12.0.0.2        Serial1/0/0
     12.0.0.255/32  Direct  0    0           D   127.0.0.1       Serial1/0/0
       13.0.0.0/24  Direct  0    0           D   13.0.0.1        Serial2/0/1
       13.0.0.1/32  Direct  0    0           D   127.0.0.1       Serial2/0/1
       13.0.0.3/32  Direct  0    0           D   13.0.0.3        Serial2/0/1
     13.0.0.255/32  Direct  0    0           D   127.0.0.1       Serial2/0/1
       23.0.0.0/24  OSPF    10   20          D   13.0.0.3        Serial2/0/1
       24.0.0.0/24  OSPF    10   30          D   13.0.0.3        Serial2/0/1
       34.0.0.0/24  OSPF    10   110         D   13.0.0.3        Serial2/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

这样就会产生一个问题:即流量从R1到R4的时候路径为R1--R3--R4

<R1>tracert -a 13.0.0.1 34.0.0.4

 traceroute to  34.0.0.4(34.0.0.4), max hops: 30 ,packet length: 40,press CTRL_C
 to break 

 1 13.0.0.3 80 ms  20 ms  20 ms 

 2 34.0.0.4 60 ms  40 ms  30 ms 

返回时路径为R4--R2--R3--R1

<R4>tracert -a 34.0.0.4 13.0.0.1

 traceroute to  13.0.0.1(13.0.0.1), max hops: 30 ,packet length: 40,press CTRL_C
 to break 

 1 24.0.0.2 30 ms  20 ms  10 ms 

 2 23.0.0.3 10 ms  10 ms  40 ms 

 3 13.0.0.1 20 ms  40 ms  20 ms 

造成来回路径不一致,如果R2,R3是2台安全设备,比如防火墙,在一些厂家(如华为)的策略中默认是不允许的,所以必须关闭原进原出的检查机制

undo firewall session link-state check  

四、总结

通过上述实验得知,ospf在进行路径选取时,优先级会按照以下方式进行(1优先级高于2):

  1. 表项:区域内>区域间>外部路由类型1>外部路由类型2
  2. cost值

以上是关于ospf里cost和metric有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

metrics.r2_score 和 acccuracy_score 有啥区别

ospf中两个优先级的区别

假装网络工程师11——ospf路径选取详解

路由协议的优先级,以及管理距离AD和metric的区别

<转;OSPF OE2和OE1外部路由详解(主要解释了下OE2为什么没默认负载均衡,赞下)

select和choose有啥区别