假装网络工程师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值

原文地址:https://blog.51cto.com/arkling/2468668

时间: 2024-11-05 13:29:00

假装网络工程师11——ospf路径选取详解的相关文章

假装网络工程师9——ospf中的1,2,3类lsa详解

一.前期回顾 之前讲过运行ospf的路由器之间是通过lsa进行消息传递,且建立邻接关系时,两端接口的网络类型必须一致,如果在MA类型网络中接口的掩码也要一致,p2p网络掩码可以不一致,只有MA网络中才有DR与BDR角色等约束条件,之所以有这些要求,从另一个维度讲都是因为lsa需要满足这些条件,本章就来详细介绍下ospf中的lsa种类及作用. 二.拓扑介绍 area1是一个MA网络类型,area0是p2p网络类型,R1,R2,R3处于一个广播域,交换机上未作任何设备,只当一个纯二层设备,R3的g0

假装网络工程师12——ospf中的特殊区域及6,7类lsa详解

一.背景介绍 假设有一个大型企业,各省市都有分公司,总路由与运营网络之间跑bgp,总路由与各省路由器在area 0,每个省的不同地市处在不同的area, 其网络拓扑如下所示,: 以area 1中的R5为例,当配置完ospf之后,R5上除了本区域的1,2类lsa外,还会通过3类lsa学习到area 2的路由,然后还会通过4,5类lsa学习到外部网络的路由及asbr条目,这样R5的路由表就会变得异常庞大,而路由表是存放在路由器的内存中,大量的lsa除了会造成带宽浪费,也会造成本地设备性能下降,基于此

假装网络工程师3——ospf的邻居建立条件与虚连接

一.背景说明 ospf作为IGP两大协议之一,有很多值得深挖的地方,仅通过一篇文章远远不够,后续还将通过多章篇幅进行说明. 二.ospf建立邻居的条件 尽管ospf作为一种链路状态协议,每一台路由器是通过lsa报文(其中包含其他路由器直连网段)在本地计算后形成以自己为根的路由表,但出于安全或其他方面的考虑ospf不是会和任意一台路由器建立邻居关系,ospf建立邻居有下面几个前提条件: 1. 直连路由的接口要宣告进同一个区域中(area) 2. 认证类型和认证密码要一致,查看命令 [R1]disp

华为网络技术大赛模拟题答案详解

华为网络技术大赛模拟题答案详解 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51354514 一.判断题 (1)VLSM的作用是:在有类的IP地址基础上,从主机位部分划分出相应的位数做为网络位.但是在路由器上部署时,需要路由协议的支持. [解释]对,VLSM=Variable Length Subnet Mask,可变长子网掩码 (2)有效的沟通是任何组织和任何项目的基础,项目经理可以花90%或者更多的时间在沟通这方

4.0【OSPF】NP十二班第六天OSPF其它LSA详解&域间汇总及过滤-2

OSPF其它LSA详解&域间汇总及过滤 域间汇总 在OSPF里面有两种角色可以做汇总: 1.ABR:可以生成3类,针对3类域间路由做汇总 2.ASBR:生成5类,可以对外部路由做汇总 [实验配置]2:20 在R1上创建lo0口宣告进OSPF,ABR会针对这条链路信息通告一个3类LSA 在R1上看这条链路是否被宣告进OSPF: show  ip ospf database router self-originate 逻辑接口/物理接口但没有邻居关系,会被通告成stub network 末节网络 在

Java基础11:Java泛型详解

Java基础11:Java泛型详解 泛型概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即"参数化类型".一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参.那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参). 泛型的本质是为了参数化类型(在不创建新的类型的

Linux网络编程——进程池实现过程详解(1)

目录 进程池 父进程的实现流程 子进程的实现流程 进程池 父进程的实现流程 1.定义数据结构pChild,申请子进程数目的结构体空间 2.通过循环,socketpair创建全双工管道,创建子进程,将子进程pid,管道对端,是否忙碌等信息存储 3.socket,bind,listen,对应的端口处于监听状态 netstat 4.epoll_create创建epfd,监控socketFd和所有子进程的管道对端 5.while(1)循环 epoll_wait等待客户端的请求及子进程是否有通知 如果so

Java深入学习11:Lock锁详解

Java深入学习11:Lock锁详解 一.Lock锁是什么 java.util.concurrent.locks包下常用的类与接口(lock是jdk 1.5后新增的) Lock 接口支持那些语义不同(重入.公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则.主要的实现是 ReentrantLock. Lock 实现提供了比 synchronized 关键字 更广泛的锁操作,它能以更优雅的方式处理线程同步问题.也就是说,Lock提供了比s

IOS研究之网络编程(二)-Cocoa Streams使用详解

 本文以及相关的系列文章是我总结的iOS网络开发方面的知识点,本文是第二篇,主要分析了Cocoa Streams中的几个重要类 Cocoa Streams实际上是Objective-C对CFNetwork的简单封装,主要包含了三个类:NSStream, NSInputStream, and NSOutputStream.本部分的接口接口比较简单,用法一目了然.我在这里就只列出接口,方便查阅.对CFNnework不明白的看IOS研究之网络编程(一)-CFNetwork使用详解 NSStream