OSPF 基本操作

  • 开放式最短路径优先 (Open Shortest Path First)
  • area 0 一般作为骨干区域,area 1、2、3 一般作为常规区域,常规区域必须与骨干区域相连
  • 系统模式下执行

    1
    2
    3
    4
    
    ospf 1
        area 0
            network 192.168.1.0 0.0.0.255 # 注意最后一个参数是反掩码
            network 192.168.2.0 0.0.0.255 # 注意最后一个参数是反掩码
  • ospf 路由优先级模式是 10,可以修改,系统模式下执行

    1
    2
    
    ospf 1
        preference 20
  • 重启 ospf 进程,用户模式下执行

    1
    
    reset ospf process
  • 显示 ospf 邻居表,任何模式下执行

    1
    
    dis ospf peer brief
  • 显示 ospf 错误,任何模式下执行

    1
    
    dis ospf error
  • 重置 ospf 错误计数,用户模式下执行

    1
    
    reset ospf counters
  • 显示 ospf 拓扑表(链路状态)

    1
    
    dis ospf lsdb

ospf 邻居

  • abr(area border router),区域边界路由器
  • asbr(auto-system border router),自治系统边界路由器
  • router id: 运行 ospf 路由器的身份 id,不可重复

    • 优先手动指定,推荐

      1
      2
      3
      4
      5
      
      # 系统模式下执行
      router id 2.2.2.2
      
      # 用户模式下执行
      reset ospf process
    • 最先启动的端口

  • ospf 常见的五种报文

    • hello: 组播(224.0.0.5),发送自身 router id
    • DBD: 数据库摘要(database description)
    • LSR: 链路状态请求(link-state request),请求某链路的详细路由信息
    • LSU: 链路状态更新(link-state update),回应 LSR
    • LSack: 链路状态确认
  • ospf 邻居建立过程(从上往下):

    • down
    • init: 初始化,开始交互 hello 报文
    • two-way: 互相得到对方的 router id
    • exstart: 准备交互 DBD 描述报文,同时选举 DR 和 BDR
    • exchange: 交互 DBD 描述报文
    • loading: 加载状态,请求对方完整的明细路由
    • full: 邻居建立完成,双方数据库已同步
  • DR 和 BDR 选举规则

    • 接口优先级(默认都是 1) + router id,越大越优先
    • 一旦选举完成,后面不会再选举(除非重启),也不会抢占
    • 优先级为 0 表示不参与 DR 和 BDR 选举
    • 修改优先级,系统模式下执行

      1
      2
      
      int gi0/0/1
          ospf dr-priority 5

ospf 虚链路

  • 新增常规区域没有直连骨干区域,此时该新增区域默认与其他非直连区域网络不通
  • 可以配置虚链路打通新增区域的网络,可以看成区域链路的延伸
  • 系统模式下执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # 骨干区域边缘路由
    ospf 1
        area xxxx # 指定所在区域
            vlink-peer x.x.x.x # 指定与新增区域直连的常规区域边缘路由的 router id
    
    # 与新增区域直连的常规区域边缘路由
    ospf 1
        area xxxx # 指定区域,去前面一致
            vlink-peer x.x.x.x # 执行骨干区域边缘路由的 router id
  • 显示 ospf 虚链路,系统模式下执行

    1
    
    dis ospf vlink

ospf 认证

  • 系统模式下执行

    1
    2
    
    int gi0/0/1 # 指定 ospf 链路接口
        ospf authentication-mode simple cipher 123456

抑制接口

  • 系统模式下执行

    1
    2
    
    ospf 1
        silent-interface e0/0/0

引入其他路由

  • 引入路由的协议显示为:o_ASE(ospf-autosystem external),默认的路由优先级是 150
  • ospf 和 rip 双向引入,系统模式下执行

    1
    2
    3
    4
    5
    6
    7
    
    # 把 rip 路由引入 ospf
    ospf 1
        import-route rip
    
    # 把 ospf 路由引入 rip
    rip 1
        import-route ospf
  • 向 ospf 引入缺省路由,此时该路由器会向其他 ospf 区域同步该缺省路由,系统模式下执行

    1
    2
    
    ospf 1
        default-route-advertise always

路由汇总

  • 精简路由表大小
  • 在边界路由器(abr)上做路由汇总,系统模式下执行

    1
    2
    3
    
    ospf 1
        area 1 # 在路由所在区域汇总
            abr-summary 192.168.0.0 255.255.0.0
  • 在自治系统边界路由器(asbr)上做路由汇总,系统模式下执行

    1
    2
    
    ospf 1
        asbr-summary 192.168.0.0 255.255.0.0

ospf las

  • 链路状态公告(link state advertise),包含在 LSU 报文中
  • 一类 LSA: router lsa

    • 每个路由器都可以发送
    • 仅在自己区域(area)发送
    • 通告自身信息
    • 任何模式下执行

      1
      
      dis ospf lsdb router
  • 二类 LSA: network lsa

    • 只有 DR 可以发送
    • 仅在自己区域(area)发送
    • 通告 DR 的身份和位置
    • 任何模式下执行

      1
      
      dis ospf lsdb network
  • 三类 LSA: summary lsa

    • 只有 ABR 可以发送
    • 传送不同区域的 ospf 路由信息
    • 任何模式下执行

      1
      
      dis ospf lsdb summary
  • 四类 LSA: asbr lsa

    • 只有 ABR 可以发送
    • 通告 ASBR 的身份和位置
    • 任何模式下执行

      1
      
      dis ospf lsdb asbr
  • 五类 LSA: external lsa

    • 只有 ASBR 可以发送
    • 通告其他自治系统的路由信息
    • 任何模式下执行

      1
      
      dis ospf lsdb ase
  • 七类 LSA: nssa lsa

    • 只有 nssa 区域的 asbr 产生
    • 只能通告自己所在的 nssa 区域,abr 收到时会转成 5 类继续传递
    • 把与 nssa 直连的其他自治系统的路由引入 ospf

ospf 特殊区域

  • stub,末节区域,拒绝五类 lsa,生成执行 abr 的缺省路由,减少路由表大小,系统模式下执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # 该区域的路由器 1
    ospf 1
        area 1 # 指定末节区域
            stub
    
    # 该区域的路由器 2
    ospf 1
        area 1 # 指定末节区域
            stub
  • totally stub,完全末节区域,拒绝三、四、五类 lsa,系统模式下执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # 该区域的路由器 1
    ospf 1
        area 1 # 指定末节区域
            stub no-summary
    
    # 该区域的路由器 2
    ospf 1
        area 1 # 指定末节区域
            stub no-summary
  • nssa,not so stub area,拒绝五类 lsa,放行七类 lsa,系统模式下执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # 该区域的路由器 1
    ospf 1
        area 1 # 指定 nssa 区域
            nssa
    
    # 该区域的路由器 2
    ospf 1
        area 1 # 指定 nssa 区域
            nssa
  • totally nssa,拒绝三、四、五类 lsa,放行七类 lsa,系统模式下执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # 该区域的路由器 1
    ospf 1
        area 1 # 指定 nssa 区域
            nssa no-summary
    
    # 该区域的路由器 2
    ospf 1
        area 1 # 指定 nssa 区域
            nssa no-summary

路由过滤

  • 过滤部分路由,在系统模式下执行

    1
    2
    3
    4
    5
    6
    
    ospf 1
        filter-policy 2000 import # 使用 acl 2000 过滤引入路由
    
    acl 2000
        rule 5 deny source 192.168.1.0 0.0.0.255 # 拒绝 192.168.1.0/24 的路由
        rule 10 permit # 其他路由都放过
  • ospf 引入其他自治系统的路由信息时,做过滤,在系统模式下执行

    1
    2
    3
    4
    5
    6
    7
    8
    
    ospf 1
        import-route rip 1 route-policy xxxx
    
    route-policy xxxx permit node 10 # 配置路由策略 xxxx 的执行序号是 10
        if-match acl 2001 # 路由策略匹配 acl 2001
    
    acl 2001
        rule permit source 192.168.2.0 0.0.0.255 # 允许 ospf 引入 192.168.2.0/24 的路由

ospf 排错

  • ospf 无法建立邻居的几个原因:
    • router id 重复
    • 相邻路由器中间直连的网段必须宣告到相同的区域(area)
    • 认证的类型、密码不一样
    • ospf 邻居间的特殊区域标识必须一致