OSPF

OSPF详解

OSPF基本配置

在端口信息都配置完毕的情况下:

ospf 进程号(如果不指定默认为1) router-id ID号
area 区域号
network 192.168.1.0 0.0.0.255 (将192.168.1.0/24网段宣告进入到区域0,network后面必须是直连路由)
  • 进程号
    • 不指定默认为1,范围(1-65535)
    • 作用:在同一设备,区分不同路由协议,进程号不一样的两个路由之间相互隔离,多个进程之间需要想引入外部路由一样引入
    • 进程号只在本机起作用,不在网络中传递
  • 多进程:
    • 不同路由器之间建立邻居,进程号需要相同
    • 用到的场景:MPLS vpn
  • 路由器类型:
    • 区域内路由器
    • 骨干区域路由器
      • 骨干区域是允许存在ASBR的
    • 区域边界路由器(ABR)
      • ABR是用来连接骨干和非骨干区域,ABR可以同时属于两个及以上的区域,但其中一个必须是骨干区域。
    • 自治系统边界路由器(ASBR)
      • 与其他AS交换路由信息的设备称为ASBR
      • ASBR并不一定位于AS的边界,他可能是区域内设备,也可能是ABR,只要一台OSPF设备引入了外部路由的信息,它就成为ASBR
  • 检查:
    display ospf peer brief 查看OSPF路由条目
    display ip routing-table protocol ospf 查看OSPF路由条目
    
  • 一类LSA检查:
<R1>dis ospf lsdb router    查看所有的一类的LSA
<R1>dis ospf lsdb router 1.1.1.1      之查看名字为1.1.1.1的1类LSA
  • 管理员在产看设备的RIB表时,其实OSPF外部路由在Protocol字段表记为O_ASE和O_NSSA
  • 设置通过公式计算接口开销所依据的带宽参考值
    • 默认情况下带宽参考值为100Mbit/s
    bandwidth-reference value 用来设置通过公式计算接口开销所依据的带宽参考值
    undo bandwidth-reference 用来恢复带宽参考值为缺省值
    
    • value
      • 参数说明: 指定通过公式计算接口开销所依据的带宽参考值
      • 取值范围:整数形式,取值范围是1~2147483648,单位是Mbit/s,缺省值是100Mbit/s

OSPF:开放式最短路径优先。协议号:89

  • 开放式:公有协议,所有厂商都支持
  • 最短路径优先:以最短路径,最快方式转发数据包
  • 作用:动态感知全网状态,自动计算路由
  • 应用:通常用于企业内部,和数据中心内部,层次化的网络结构中
  • 工作在OSI模型中的第三层,数据封装在IP头部后面
  • OSPF是基于链路状态的内部网关协议

优势:

  • 利用累计cost值来计算最优路径
  • 采用组播形式收发协议报文,提高效率
  • 用区域的概念,降低设备压力,更加利于管理
  • 支持等价路由负载分担,提高可靠性
  • 支持报文认证,提高安全性

OSPF路由表是通过路由器自己计算得来的

基础概念

  • 在同一区域内的所有ospf路由器,数据库是完全一样的
  • 进程号:(1~65535)仅在本设备有效
    • 用于OSPF在设备内部的隔离,即不同OSPF的进程学习到的路由是不一样的
    • 两台设备进程号不一样也可以建立邻居

Router ID

唯一,在OSPF网络中标识一台路由器的唯一标识(1~4294967295)

  • 特点:稳定,一旦确定,就不会改变,要更改只能重启OSPF进程
  • OSPF协议为路由设备起的名字
  • Router ID可以手动指定,也可以自动选举
  • 如果没有手动配置,则路由器使用Loopback接口中最大的IP地址作为Router ID
  • 如果没配置接口,则路由器使用物理接口中最大的IP地址作为Router ID

area ID

将路由设备划分成不同的组,每个组用区域号标识

  • 区域号

    用于标识一个网络区域,通过这样来缩减路由规模,降低路由设备分担(0~4294967295)。

    • 骨干区域:0
    • 非骨干区域:不为0
    • 区域号表示:
      • 十进制
      • 点分十进制

Interface

使用哪个接口与对端建立邻居

Neighbor id

邻居的Router-id

State

邻居的状态

  • full:完美的邻居–也叫邻接

cost:开销

OSPF路径会累积cost值来计算最短路径

  • 每一个开启OSPF功能的物理接口都有一个cost值为1
  • 路由器的开销值是指ospf路由到达目的地过程中经过的每个入接口的cost值相加

DR和BDR、DRother

这是一个接口的概念,不是路由器的概念,他是建立邻居的时候才会选举的

  • DR(指定路由器)BDR(备份指定路由器)DRother(其他路由器)
  • DRother之间建立to-way(邻居)关系,但他和DR/BDR建立Full(邻接)关系
  • 作用:
    • 减少邻接关系,降低设备负担
    • 加快数据库同步
    • 节约带宽
  • 选举规则:
    • DR的概念是接口的概念,不是全局的概念,所以优先级要在接口上配置
    • 选举是非抢占式的
    • 选举是基于接口的
  • 优先级越高越优先,当优先级为0是则这个接口一定是DRother,即不参与选举
  • DR和BDR按照router ID的大小来确定的
  • 在OSPF网络中只有NBMA和BROADCAST需要选举DR和BDR
  • MA多路访问网络有两种类型:广播行多路访问网络(BMA)及非广播型多路访问网络(NBMA)
  • 一个网络中必须有DR,可以没有BDR

DR和BDR的优先级都是在端口配置

  • DR:
    [R1-G0/0/0]ospf dr-priority 100   //修改接口优先级为100
    [R1-G0/0/0]ospf network-type p2p  //修改接口的网络类型:点到点
    [R1-G0/0/0]ospf network-type broadcast //修改接口的网络类型:广播型
    <R1>reset ospf process            //重启OSPF进程
    

OSPF路由器类型

  • 区域内路由器————路由器的所有接口都属于同一个OSPF区域
  • 骨干区域路由器
    • 该设备至少有一个接口属于骨干区域
    • 所有的ABR和位于Area0的内部设备都是骨干路由器。
  • ABR(区域边界路由器)
    • 该设备可以同时属于两个以上的区域,但其中一个必须是骨干区域
    • ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接
  • ASBR(自治系统边界路由器)
    • 与其他AS交换路由信息的路由器成为ASBR,具有产生外部路由能力的路由器。
    • ASBR并不一定位于AS的边界,他可能是区域内设备,也可能是ABR,只要一台OSPF设备引入了外部路由信息它就成为ASBR
      • import引入的就是ASBR
  • 区域间路由聚合必须在ABR路由器上而外部路由聚合必须配置在ASBR路由器上

工作原理

建立OSPF邻居表–hello

  • hello报文源IP:路由器物理接口IP
  • hello报文目的IP:224.0.0.5,组播IP
  • hello报文周期性发送,在广播型网络和P2P网络中,默认是10秒发送一次
  • hello报文作用:发现,建立,维护,断开
  • 邻居状态:two-way
  • 如果是广播型网络,在建立好邻居后,选举DR(指定路由器)和BDR(备份指定路由器)
  • 所有DR-other都与DR/BDR建立邻接关系:full:需要同步数据库
  • DR-other和DR-other只建立邻居关系:two-way:不需要同步数据库
  • 选举DR的作用:减少邻接关系,加快数据库同步
  • 建立邻居的本质是:是邻居建立后,可以同步数据库

同步OSPF数据库–利用DD、LSR、LSU、LSACK

  • DD报文:数据库描述报文

    • 第一个DD报文用来选举主从关系
      • 选举主从关系的目的:保证数据库同步的youxvxing,可靠性
    • 第二DD报文:携带数据库摘要信息:LSA头部信息
      • 收到后续的DD报文后,就可以了解邻居数据库有哪些LSA
    • 如果发现邻居的数据库中有我没有的LSA就可以通过LSR请求对方数据库中的LSA
    • 收到邻居发来的LSU报文后,hi夫LSACK确认报文,告诉邻居,我收到了
    • 当邻居之间数据库中的LSA完全相同时,数据库同步结束
  • 数据库同步:其实本质上只是在做一件事,在互相传输LSA

    • LSA:
      • 链路状态通告:计算路由的原材料(拓扑信息+网段信息)
      • 拓扑信息:我的邻居是谁,我用哪个接口连接着我的邻居
      • 网段信息:我的接口IP地址段,接口掩码,接口cost值

    那么邻居之间相互传输LSA的目的又是什么呢?

    • 计算路由条目

计算OSPF路由表

五种报文 七大状态

  • Hello 报文:用于发现、建立、维护和拆除OSPF邻居

    • 发送和维护邻居关系(第一个Hello报文用来建立邻居,后续Hello报文用于同步数据库)
    • down:挂掉了,表示给hide设备之间的邻居状态最新的开始
    • init:
      • 初始化状态,收到对端的Hello报文,进入Init状态,但此时的Hello报文不包含自己的Router ID
      • 接收到了邻居发来的hello报文,但是该报文中没有自己的router-id
      • 单点链路故障,会卡在此状态
    • two-way:
      • 双向通信状态,收到的Hello报文中包含自己的Router ID,则状态为two-way此时两台设备之间为邻居状态
      • 在广播网络里,我们会选举DR/BDR(DR/BDR没有抢占)
    • 在这个状态下,我发送的Hello报文对端收到了
    • 对端发送的Hello报文,我也收到了
  • DD:数据库描述报文

    • 交互链路状态数据库摘要(用于发送OSPF数据库数据库条目(LSA头部信息)的简要信息,实现数据库同步)
    • 用于描述数据摘要信息
    • ExStart状态(主从关系的确定)
      • 交换初始化状态。在该阶段,交互第一个DD报文,为了保证后期交换状态的稳定和可靠,所以该阶段会进行邻居路由器之间主从关系的确定
    • Exchange状态
      • 交换状态,交互的是大量的DD报文,我们称之为LSA头部信息
    • MTU(最大传输单元)
      • MTU如果值不一样,就会卡在exstart状态和exchange状态。卡在exchange状态的为slave设备
      • DBD包中携带MTU值(最大传输单元),要求邻居MTU值必须相同,否则将卡在exstart或exchange状态;默认华为设备未开启MTU检测(MTU=0)
      [R1-G0/0/1]ospf mtu-enable
      
  • LSR:链路状态请求报文

    • 请求特定的链路状态信息(用于请求自己数据库中没有的链路状态通告信息)
    • 请求数据库中没有的LSA(数据库信息)信息
    • Loading状态(数据库同步)
      • 加载状态,两边通过了交换,完成了数据库的比较,那么就会在该阶段进行加载,会对自己没有的那些数据库条目进行请求lsr,对方设备回应更新LSU包含完整的LSA,为了确保可靠传输,在双方设备收到后,会给对方回应一个LSACK报文,双发设备都经过了上面的三个报文之后,实现数据库的完全相同,就会进入到下一个状态。
  • LSU:链路状态更新报文

    • 发送详细的链路状态信息(用于回应LSR报文,发送链路状态信息。)
    • 根据对方的请求信息,更新LSA给对方
    • Loading状态:同上
  • LSACK

    • 发送确认报文(确认LSU和LSR报文)
    • 收到对方更新的LSA信息之后,进行确认
    • Loading状态:同上
  • 全部完成后是full状态

    • 完全邻接状态,表示两个设备的数据库完全相同
  • attempt:仅仅存在于NBMA网络类型中

OSPF无法建立邻居关系几种状况

  • 接口要是up的状态
  • OSPF没有宣告,或者宣告错了
  • 两台路由器router-id相同的时候无法建立邻居
    • 查看OSPF错误信息:常见错误信息
    [R1]display ospf error(OSPF的报错信息)
    
        OSPF Process 1 with Router ID 1.1.1.1
        OSPF error statistics 
    
    General packet errors:
    0     : IP: received my own packet     0     : Bad packet
    0     : Bad version(考点:版本不同OSPFv2和OSPFv3)     0     : Bad checksum
    0     : Bad area id (考点:区域不同)    0     : Drop on unnumbered interface
    0     : Bad virtual link               0     : Bad authentication type(考点:认证不匹配)
    0     : Bad authentication key         0     : Packet too small
    0     : Packet size > ip length        0     : Transmit error
    0     : Interface down                 0     : Unknown neighbor
    0     : Bad net segment                0     : Extern option mismatch
    20    : Router id confusion(考点:route-id相同,当此时数值不为0的时候,表示收到了错误的报文)
    
  • area id(区域号)不同时,无法建立邻居
  • 两台OSPF路由器接口的IP地址的子网掩码必须一致(同网段)才能建立邻居
    • 特殊情况:如果时P2P的情况下,是可以建立邻居关系的。在OSPF路由器可以相互PING通的情况下,PC之间也能PING通。如果OSPF路由器不能相互PING通,那么PC之间也不能相互PING通
  • 两台路由的网络类型要一致,否则无法建立邻居
    • 网络类型有4种:
      • broadcast:数据链路协议为以太网,OSPF缺省配置为广播
      • nbma:当数据链路协议是FR时,国内已经不用了,OSPF缺省配置为NBMA
        • 必须在OSPF视图下执行命令peer ip-address配置NBMA网络的OSPF邻居
      • p2mp:当数据链路是PPP或者HDLC时可以选用,国内不常用,点到多点
      • p2p:当链路是点对点时,可以选用
    • 特殊情况;
      • 当一端是p2p,另外一端是广播时。可以建立邻接关系,但是无法传递路由信息。
      • 当一端是p2p,另外一端是p2mp时。需要调整hello时间和dead时间。调整一致时,可以建立邻接关系,并且也可以传递路由
    • 除了以上两种情况,其他所有的网络类型(广播-p2mp\广播-NBMA\P2MP\NBMA等等),都无法建立FULL状态
  • 两台路由器的hello时间必须一致,才能建立邻居
    • 缺省情况下
      • P2P、Broadcast类型接口发送Hello报文的时间间隔的值为10秒
      • P2MP、NBMA类型接口发送Hello报文的时间间隔的值为30秒
    • 注意
      • 修改hello时间的时候,dead时间会自动更改
      • 一般情况下:dead时间是hello时间的4倍,也就是40秒
  • 两台路由器的dead时间必须一致,才能建立邻居
  • 两台路由器的DR优先级不能同时为0,否则无法建立邻接(FULL)关系,但是可以建立邻居(2-way)关系
  • OSPF认证不匹配时,也无法建立邻居状态
  • OSPF中MTU值不一致,也无法建立邻居关系。默认情况下,OSPF不检查MTU值

LSA

  • 每一个LSA会有一个自动刷新时间:30分钟

  • 存活时间:60分钟

  • OSPF路由怎么来的

    靠LSA计算出来的

    • LSA怎么来的:通过数据库同步,从邻居那里学来的。
    • 而且LSA非常重要,我们要保证传递的可靠性和有序性。
  • 如何保证:

    • 选举主从:Master/Slave,作用:保证数据库同步的有序性准确性
    • 利用router-id来选举,大的为Master
    • 选举完成后小弟永远使用大哥序列号,大哥序列号永远加1
    • 下一个报文是对上一个报文的确定(例:LSU给LSR,Lsack给LSU)

    这样传递的目的是为了,让DD报文更有序,可靠不丢失

  • LSA

    • 作用:用来计算路由的
    • 如何形成的:
      • network
      • import-router:五类LSA

LSA(链路状态通告)七个字段,通常用其中3个字段来区分不同的LSA

  • 类型,名字,通告路由
  • 1类LSA:描述了设备的链路状态和开销
  • 2类LSA:描述了该DR所接入的MA网络中所有与之形成邻接关系的路由器
  • 3类LSA:描述区域间某个网段的路由
  • 4类LSA:描述到ASBR的路由
  • 5类LSA:用于描述到达OSPF域外的路由

一类LSA

- 类型(Type): Router-LSA
- 名字(Link State ID):1类LSA的名字取自-生产这条LSA的路由器的Router-id
- 通告路由器:(AdvRouter):区域内每一台路由器都会产生一个1类LSA
- 特点:每一个运行OSPF协议的路由器,都会在这台路由器所处的区域中生成一个1类的LSA
- 传递范围:只能在区域内传递
- 作用:用来计算域内路由(做自我介绍)
      自我介绍,介绍什么内容:
      介绍两个内容:拓扑信息+网段信息
      拓扑信息:我是谁,我的邻居是谁,我用那个接口IP连接着我的邻居
      网段信息:我的接口网段,我接口网段的掩码,我的接口的cost开销值
  • 1类LSA的Link Type中不存在P2MP
  • 点到点
    修改到p2p模式
    [R1-G0/0/1]ospf network-type P2P
    
    LSA的头部信息:
    Type :Router :我是一类IP
    Ls id :1.1.1.1:我的名字是1.1.1.1
    Adv rtr :1.1.1.1:我的老爹是1.1.1.1(通告路由其-创造这条LSA的设备)
    Ls age :372:我的年龄是372秒
    Len :60:我的长度为60字节
    Options :E:我的能力:引入外部路由
    seq# :8000001f:我的序列号:
                    LSA的寿命是3600秒
                    1800秒就刷新一次,没刷新一次序列号加1
                    这叫周期性更新,还有触发式更新
                     序列号越大,代表LSA越新
    chksum :0x4a9:我的校验和(序列号相同的情况下,校验和越大LSA越新)
    
  • LSA链路信息
      Link count: 3                    我有3条链路(LSA表示了两种信息,拓扑信息和网段信息)
      Link ID: 2.2.2.2              我是邻居的名字
      Data   : 192.168.12.1      我的接口IP地址是192.168.12.1(我用这个IP连接我的邻居)
      Link Type: P-2-P           这是描述的拓扑信息  
      Metric : 1                      我的cost值是1
    
      Link ID: 192.168.12.0      我的接口的IP地址段是192.168.12.0
      Data   : 255.255.255.0     我的接口的IP地址段的掩码是24
      Link Type: StubNet         这是描述的网段信息
      Metric : 1                       我的cost值是1
      Priority : Low
    
      Link ID: 192.168.1.0       我的接口IP地址段是192.168.1.0
      Data   : 255.255.255.0     我的接口IP地址段的掩码是24
      Link Type: StubNet         这是描述的网段信息
      Metric : 1                        我的cost值是1
      Priority : Low
    
  • 重要字段(link type):
    • transnet(拓扑信息)
      • link id :DR接口的IP地址
      • data : 与DR接口相连的自己的IP地址
    • stubnet(路由信息|应用场景)
      • 环回口
      • 无邻居的MA网络
      • P2P网络
      • sub
    • P2P(拓扑信息)
      • link id : 描述邻居路由器的router id
      • data:与邻居路由器相连的本地接口地址
    • virtual(拓扑信息)
      • link id : 描述邻居路由器的router id
      • data:与邻居路由器相连的本地接口地址

二类LSA

  • 类别:network-LSA
  • 名字:2类LSA的名字取自,DR的接口IP地址
  • 通告路由器:DR接口所在的那台路由器的Router-id
  • 作用:
    • 补全DR接口IP地址的掩码信息。
    • 记录和DR建立邻接关系的路由器,用于描述网段内完整拓扑信息
    • 最终作用:辅助1类LSA完成区域内路由的计算
  • 传播范围:只能在区域内传播

三类LSA

  • 类别:Network-summary-LSA
  • 名字:3类LSA的名字取自区域间路由网段的名字
  • 通告路由器:本区中的ABR路由器的Router-id
  • 传递范围:同一条3类LSA,区域内传递,每经过一个ABR,通告路由其就会发生变化
  • 作用:
    • 计算域间路由
    • 将区域内的1、2LSA计算出来的路由,变成3类LSA在其他区域泛洪(广播),实现区域与区域之间的通信
  • 总结:
    • 3类LSA在传递过程中,每经过一个ABR它的名字就会发生变化。
  • 三类LSA头部信息
      Type      : Sum-Net           我是三类LSA
      Ls id     : 192.168.45.0      我的名字是192.168.45.0
      Adv rtr   : 2.2.2.2           我是从2.2.2.2那里学来的
      Ls age    : 969 
      Len       : 28 
      Options   :  E  
      seq#      : 80000006 
      chksum    : 0xa016
      Net mask  : 255.255.255.0     下一跳的掩码
      Tos 0  metric: 3              所 用消耗
      Priority  : Low
    

四类LSA

就是带你去找ASBR的

  • 类别:ASBR-summary -LSA
  • 名字(Link State ID):取自asbr的router-id
  • 通告路由器:本区域的ABR设备
    • 第一个四类LSA是由和ASBR在同一个区域内的那个ABR产生的
    • 后续的4类LSA,是由本区域的ABR产生的
    • 四类LSA由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域
  • 传播范围:在一个区域内传播
  • 特点:4类LSA在传播过程中,每经过一个ABR,通过路由器就会变成所经过的那台ABR的router-id
  • Metric表示该ABR到达ASBR的OSPF开销
  • Advertising Router
    • 这个字段表示产生该LSA的ABR
    • 4类LSA是ABR向区域内的OSPF路由器,介绍其它区域的ASBR的,AdvRouter字段就是ABR的Router ID。不同的ABR,Router ID不会相同。
  • 作用:
    • 配合5类LSA计算外部路由
    • 将5类LSA传递到其他路由器中
  • 带你去找ASBR

五类LSA

带你去往外部网段,但是去找外部网段,就需要先找到ASBR

  • 类别:AS_external-LSA
  • 名字:外部路由信息
  • 通告路由器:ASBR
  • 作用:传递外部路由信息
  • 传递范围:在整个ospf网络内传播
  • 特点:
    • 只有ASBR可用产生5类的LSA
    • 5类的LSA可用传输到ospf网络的所有的路由器(特殊区域除外)
    • 5类LSA在传输过程中,不会产生任何变化
    • 5类LSA不属于任何区域
    • 他想去哪里就去哪里
  • 配置命令:
OSPF学习路由的方式只有两种:
1.network宣告
2.import命令用来不同协议之间路由的导入
[R1]OSPF 1
[R1-OSPF-1]import-router static 引入所有静态外部路由
  • 查询命令:
    display ospf lsdb ase
    display ospf lsdb ase 192.168.3.0
    

  • OSPF外部路由引入时会使用Metric-Type-1或Metric-Type-2类型
  • 它默认为type2类型外部路由转发,当设置为type1类型路由转发时,则会优选type1
    • Metric-Type-1类型(FA地址为0.0.0.0):
      • 路由开销计算方法为本设备相应的开销和目的地址的开销之和(本设备到相应的ASBR的开销与ASBR到该路由目的地址的开销之和)
    • Metric-Type-2类型:如果不指定默认为2类型外部路由。在计算路由的cost值时,type2仅仅关心LSA中的外部路开销
      • 如果type2类型外部路由需要选路,则先比较外部路由开销,再比较内部路由开销
    • 和ASBR在一个区域内的路由器,外部路由计算:
      • type1:
        • 开销=自身到ASBR的开销+引入时路由的开销
        • 下一跳=自身到ASBR的下一跳
      • type2:
        • 开销=引入时路由的开销(但是并不代表域内路由器去找ASBR时,走最优路径)
        • 下一跳=自身到ASBR的下一跳
    • 和ASBR不在同一个区域的路由器外部路由计算:
      • type1:
        • 开销=通过四类LSA计算到ASBR的开销+引入时路由的开销
        • 下一跳=自身到ASBR的下一跳
      • type2:
        • 开销=引入时路由的开销(但是并不代表域内路由器去找ABR时,不走最优路径)
        • 下一跳=自身到ASBR的下一跳
    • 外部路由选路机制(当不同区域引入相同的外部路由时):
      • type1:
        • 就是管理员希望按路由意义的最短路径访问外部路由
        • 选择开销和值小的最优
        • 如果相同,则负载分担
      • type2:
        • 就是管理员希望按管理意义上最短路由访问外部网络
        • 引入时开销小的有限,不考虑AS内部开销
        • 引入时开销相同,选择到ASBR开销小的
        • 引入时开销相同,到ASBR的开销也相同,则负载分担
  • Forwarding Address,转发地址(防止次优路径)
    • 作用:用于优化路径,如果携带转发地址,则优先查找转发地址访问外部路由而不会查找路由表下一跳地址
    • 携带转发地址的条件:要求ASBR访问外部路由的出接口满足以下三个要求
      • 该接口通告进OSPF
      • 该接口的网络类型必须是BMA或NBMA
      • 该接口不能是silent-interface(静默端口)

![](/images/forwaring address.jpg)

如图所示,AR1、AR2、AR3在同一个广播域中,AR1和AR2建立了OSPF邻居,AR2和AR3建立了RIP邻居,且AR3存在一条32位的主机路由。AR2将RIP引入OSPF,就会转发地址置位,置位的转发地址是AR3的G0/0/0接口的地址。根据上述转发地址的作用,AR1可以直接根据转发地址寻找3.3.3.3,下一跳为AR3。如果没有转发地址的存在,那么AR1去访问3.3.3.3会先寻找到AR2,由AR2在去往3.3.3.3,下一跳为AR3。这就是转发地址的作用。

四类和五类LSA的作用:用于计算外部路由

七类LSA

  • 类别:NSSA:表示的是7类的LSA
  • 名字(LinkState ID):这条LSA的名字,即外部路由的网段
  • 通告路由器(AdvRouter):发布这条LSA的路由器,ASBR的router-id
  • 作用:仅仅用于在NSSA区域中,用于表示外部路由
  • 特点:
    • 只有NSSA区域的ASBR可以产生7类LSA
    • 7类LSA只能在NSSA区域以及totally nssa区域内部传输
    • 为了将NSSA区域引入的外部路由发布到其它区域,需要把7类LSA转化为5类LSA以便在整个OSPF网络中通告
  • 7类的FA默认不为0,5类的默认为零,两个FA的作用相同但是起始不一样

OSPF特殊区域(保护这个区域不受外部路由器的影响)

配置特殊区域,特殊区域内所有路由器都需要设置成特殊类型

stub区域

  • 末梢区域:网络的边缘末梢,脆弱的需要保护的区域()
  • 保护这个区域
    • 不学习四类五类LSA
  • 该区域会产生一个默认路由的3类LSA,保证和外部的通信

    配置命令

    [R1]ospf 1
    [R1-ospf-1]area 12
    [R1-ospf-1-area-0.0.0.12]stub
    
    [R2]ospf 1
    [R2-ospf-1]area 12
    [R2-ospf-1-area-0.0.0.12]stub
    

totally stub区域

  • 完全的末梢区域
  • 过滤三四五类LSA,生成一条3类缺省LSA

    配置命令

    [R1]ospf 1
    [R1-ospf-1]area 12
    [R1-ospf-1-area-0.0.0.12]stub
    
    [R2]ospf 1
    [R2-ospf-1]area 12
    [R2-ospf-1-area-0.0.0.12]stub no-summary
    

nssa:不那么stub区域

  • 作用:
    • 保护一个区域不受来自外部链路的影响
    • 缩减数据库规模,缩减路由表规模,降低设备压力
    • 还能引入外部路由
  • 特点:
    • 不学习4类、5类的LSA
    • 学习1类、2类、3类和7类LSA
    • NSSA区域不学习四类和五类LSA,任何人与外部通信:
      • 利用区域内的ASBR设备生产一条默认的7类LSA(0.0.0.0)用于访问外部网络
      • 这条默认的7类LSA计算出来的是一条OSPF外部路由,优先级为150,路由类型o_NSSA
    • NSSA区域的ABR还会自动地将外部7类的LSA转成5类的LSA,传播给其他区域
    • 7类的LSA只能在特殊区域nssa内部传播
    • 备注:
      • stub区域生产的是一条默认的3类LSA,计算出来的是OSPF内部路由,优先级为10
      • O_NSSA:代表外部路由,由7类LSA计算出来的外部路由,优先级:150
      • O_ASE:也表示外部路由,由5类的LSA计算出的外部路由,优先级:150
      • OSPF表示内部路由,由3类的默认LSA计算,优先级为:10
      • nssa区域继承了stub的优点,并且还可以引入外部路由
      • 骨干区不能做成nssa区域

    配置命令

    [R1]ospf 1
    [R1-ospf-1]area 12
    [R1-ospf-1-area-0.0.0.12]nssa
    
    [R2]ospf 1
    [R2-ospf-1]area 12
    [R2-ospf-1-area-0.0.0.12]nssa
    

totally nssa区域:完全的不那么stub区域

  • 作用:
    • 保护一个区域不受来自外部链路的影响,也不受区域间路由的影响
    • 缩减LSA的数量,减少路由表规模,降低设备负载
    • 还能引入外部路由
  • 特点:
    • 不学习3类、4类和5类的LSA
    • 学习1类、2类和7类LSA
    • 特殊区域的ABR路由器需要配置nssa no-summary
    • 该区域会通过ABR成产成一条默认的3类LSA和默认的7类LSA用于访问外部网络
    • 该区域的ABR会自动的将外部路由的7类的LSA转成5类的LSA
    • 7类的LSA只能在特殊区域NSSA内部传播,ABR设备将引入的外部路由——7类的LSA转成5类的LSA,在全网泛洪,让其他区域也学习到这条LSA,计算出来去往外部的路由
  • 备注:
    • totally nssa会产生两条默认的LSA,一个是3类默认,一个是7类默认
    • 当两条默认的LSA同时存在的时候,使用3类的默认,3类的默认优于7类的默认为什么?
      • 因为3类的默认LSA计算出来的路由是ospf的内部路由所以优先级为10
      • 因为7类的默认LSA计算出来的路由是ospf的外部路由所以优先级为150
    • 骨干区不能做成totally nssa区域

配置命令

[R2]ospf 1
[R2-ospf-1]area 12
[R2-ospf-1-area-0.0.0.12]nssa no-summary

区域间路由汇总

  • 也叫3类LSA汇总——华为:ABR聚合
  • 执行在区域间路由器上(ABR)
    • 现在骨干区域数据库大,是3类LSA多,所以外部路由就多
    • 数据库大,路由表就大,设备压力就大
    • 所以需要ABR聚合,以起到保护骨干区域的作用

    配置命令

    [R2]ospf 1
    [R2-ospf-1]area 12
    [R2-ospf-1-area-0.0.0.12]abr-summary 192.168.0.0 255.255.0.0
    

外部路由汇总

  • 也叫5类LSA汇总——华为:ASBR聚合
  • 执行在自治系统边界路由器
    • 现在骨干区域数据库大,是5类LSA多,所以外部路由就多
    • 数据库大,路由表就大,设备压力就大
    • 所以需要ASBR聚合,以起到保护骨干区域的作用

配置命令

[R6]ospf 1
[R6-ospf-1]asbr-summary 192.168.0.0 255.255.0.0

配置OSPF静默接口

[R1]ospf 100
[R1-ospf-100]silent g0/0/1
  • OSPF静默接口设置完成后,接口的直连路由仍然存在于LSA当中,只不过该接口不接收、不发送OSPF数据报文了,进而无法与该接口直连的OSPF路由器形成邻居关系。
  • 静默接口和router ID不冲突,当静默接口的路由器没有配置router ID那么静态接口的IP地址也可以作为Router ID

OSPF高级特性

快速收敛

算法上实现快速收敛

区域内

  • 首次进行拓扑计算的时候使用SPF
  • 拓扑发生变化,使用I-SPF
  • 路由+拓扑计算

区域间

  • 路由计算
  • PRC(部分路由计算)

收敛速度优先级

  • PRC > I-SPF > SPF

协议收敛优先级 ISIS > OSPF 区域内

  • 从算法上来说
    • 区域内
      • 路由信息(PRC)
      • 拓扑信息(I-SPF)
    • 区域间
      • 路由信息(PRC)

智能定时器

网络稳定的场景

  • LSA生成(通告):时间0
  • LSA接收时间:时间0
  • LSA计算:时间0

网络不稳定的场景

  • LSA生成
  • LSA接收
  • LSA计算
  • 时间间隔就要长

FRR

  • 场景
    • 一个或多个备份路径
  • 作用
    • 当主路径故障时,可以实现快速收敛,立即从备份路径转发
  • 原理
    • 通过LFA算法,提前计算好备份下一跳,加载的FIB中,当主路径故障时,不需要OSPF重新收敛,直接通过FIB表中备份下一跳直接转发
    • LFA算法:遍历所有邻居,若满足(N,D)<(N,S)+(S,D),则可以计算出lfa路径 N:候选节点(备份节点) D:目的节点 S:源节点
  • 前提条件就是满足开销计算公式:COST(N,D)=(N,S)+(S,D)

BFD

概念

  • 双向转发检测机制

原理

  • 周期性发送检测报文,默认3倍检测周期内,收不到对方发来的检测保温,则认为链路故障,联动OSPF,实现邻居故障时快速切换。

路由控制

等价路由

  • OSPF默认开启等价路由
    • AR设备支持8条等价路由
  • 作用
    • 实现负载分担

缺省路由

自动产生

  • 特殊区域

手动配置

  • 一般出口设备配置
  • 企业网中互联网出口
  • 数据中心内部,连接数据中心外部的网络
  • 命令
    • always
      • 强制通过缺省路由,也就是IP路由表中不需要存在缺省路由也可以通告

LSA过滤

  • 接口处方向
  • 过滤LSA的类型
    • 除了9类LSA之外的所有LSA都能过滤

3类LSA过滤

  • 在那个设备上使用
    • ABR路由器:因为3类LSA产出在ABR设备上
  • 哪个区域:这个要确定好,忽然很容易出现错误
  • 入方向/出方向
  • 3类LSA过滤了,就不会有路由了,如果路由过滤了,可能存在LSA

OSPF与BGP联动

  • 场景
    • 当我需要割接一台路由器,去更换新设备
  • 问题
    • 在割接新设备时,会出现终端业务的情况,尽管有备份链路存在,在新机器启动后,会出现一段时间的断联,因为当OSPF收敛完成后,BGP并没有收敛完成,EBGP明显比IGP的收敛速度要慢,所以中间会出现一段时间的锻炼情况
  • 解决方案
    • 将割接设备上添加一条延长120s收敛的命令,就会将BGP收敛完成之前会一直在备用链路上运行业务,从而使也不流量不会出现中断现象

高可靠特性

NSF

不间断转发

  • 控制平面中断的情况下,不影响业务的转发
  • 使用的技术就是GR
    • 平滑重启技术
    • 原理
      • 控制平面终端的这个期间,通过配置GR,控制平面保持GR的状态,从而让流量不中断

NSR

不间断路由

  • 控制平面和转发平面都不中断
  • 原理
    • 备份原理
      • 全量备份
        • 业务板卡上报表项给主控制器
      • 实时备份
        • 业务板卡上报表项给主控制器
      • 业务切换
        • 业务板卡上报表项给备控制器(新主)

NSR>NSF

  • NSR
    • 控制平面和转发平面都不中断
  • NSF
    • 控制平面中断,但转发平面不中断

OSPFv3

引入到IS-IS

VRP平台上,当设备引入OSPF路由到IS-IS的时候,如果不指定cost

  • 当IS-IS的开销风格是默认的narrow时,引入的外部路由的cost为64
  • 当开销风格为wide时,引入的外部路由的cost为0

Posts in this Series