• OSPF 基本配置命令

    • 进入 OSPF 进程配置模式:Router(config)#router ospf <进程号>
    • 在 OSPF 进程中宣告接口:Router(config-router)#network <接口IP地址> 0.0.0.0 area <区域号>
      • 0.0.0.0 为反掩码,用于匹配一部分接口,能够被最短反掩码匹配到的接口优先宣告。
    • 在接口配置模式中直接宣告接口(优先级高于进程宣告):Router(config-if)#ip ospf <进程号> area <区域号>
    • Show 命令
      • 查看 OSPF 配置:Router#show running-config | section ospf
      • 查看哪些接口被宣告进 OSPF 进程中:Router#show ip ospf interface brief
      • 查看 OSPF 邻居:Router#show ip ospf neighbor
      • 查看 OSPF 路由表:Router#show ip route ospf
      • 查看 LSDB 报头:Router#show ip ospf database
    • 重置 OSPF 进程: Router#clear ip ospf process
    • OSPF 运行于 IP 协议之上,协议号89
    • OSPF 的 ToS 字段为 IP优先级6
      • ToS 字段的前 3 bit 为 110。
    • OSPF 报文只支持单播组播发送。
    • OSPF 是基于链路状态的路由协议,同一区域内的路由器之间不交互路由表(而是交互 LSA)。
    • OSPF 支持无限的跳数。
    • OSPF 既支持触发更新,也支持周期性更新(默认每 30min 泛洪一次 LSA)。
    • OSPF 的进程号只具有本地意义
    • 如果一个接口同时被多个进程宣告,那么只有第一个宣告它的进程有效。
    • OSPF 是一种层次化的路由协议
      • 它可将整个网络基于接口分为众多区域(不同的接口可宣告进不同区域)。

        • 一个区域可以看作是一个 AS的子集
        • 小型网络设计多区域的意义不大。
        • 如果某个区域内的某台路由器某个宣告进 OSPF 的接口不停地Up/Down,将会导致该区域内所有路由器的 LSDB不停地变动。在这种情况下,划分多区域可以减小由于接口不停地 Up/Down 造成的影响范围。
      • 在多区域 OSPF 网络中,必须指定一个编号为 0(Area 0)的骨干区域(也叫传输区域)。
      • 同个区域绝对不可能出现路由环路
        • 区域中的每台路由器都知道区域中其它所有路由器是怎么连接的。
      • 非骨干区域都必须和骨干区域有连接
        • 强制形成星型拓扑,防止环路产生。
      • 由于区域间无法传递拓扑信息,因此只有区域或AS间才可进行路由汇总或聚合
      • 区域间的路由使用距离矢量协议的算法来计算。
      • 非骨干区域的类型
        • 常规区域

          • Hello 报文中的 Flag 字段:E=1允许5类LSA 存在), N=0(不是 NSSA 区域)。
        • Stub区域:末节区域
          • 不允许ASBR4、5类LSA)存在。
          • ABR 不会让 4、5 类 LSA 进入 Stub 区域。
          • Hello 报文中的 Flag 字段:E=0不允许5类LSA存在), N=0不是NSSA区域)。
          • Stub 区域内的 ABR会下放度量值为1默认路由3类LSA)到该 Stub 区域内。
          • 区域内所有路由器均要配置
          • 配置 Stub 区域可减少LSA的数目及路由表条目。适用于没有多余选路需求(要访问区域外的网段只能通过ABR)的区域。
          • Stub 区域中不允许存在Virtual Link
          • Area0不允许配置成Stub区域
          • 配置命令
          • Router(config-router)#area <区域号> stub
        • Totally Stub区域:完全末节区域
          • Stub区域的基础上不允许3类LSA(ABR 生成默认路由对应的 LSA 除外)存在。
          • 在 Totally Stub 区域中,只允许一条由ABR产生的默认路由对应的3类LSA 存在。
          • 只需在 ABR 上配置 Stub 区域命令的后面加上 no-summary 就可以了。
        • NSSA(No-so-Stubby)区域:不那么末节区域
          • Hello 报文中的 Flag 字段:E=0不允许5类LSA 存在), N=1NSSA区域)。
          • 在 Stub 区域的基础上支持ASBR
          • NSSA 区域内的 ABR以及ASBR不会主动下放默认路由
          • ASBR 重分发进OSPF的路由条目以7类LSA(特殊的 5 类 LSA)的方式发送。
          • 7 类 LSA 在扩散到其他区域之前必须由该区域内路由器ID最高的ABR转换为5类LSA,且转换者对其他区域来说才是ASBR(前提是转换后的 5 类 LSA 不带FA)。
          • 在新版的 IOS 中,也可强制指定转换者。
          • 强制指定转换者的命令:Router(config-router)#area <区域号> nssa translate type7 always
          • 区域内所有路由器均要配置
          • NSSA 区域中不允许存在Virtual Link
          • Area0不允许配置成NSSA区域
          • 如果 NSSA 区域中存在伪ABR,而恰巧该伪ABR的路由器ID是NSSA区域中最大的,则会导致转换后的 5类LSA 不能发往NSSA区域外
          • 应尽量确保 NSSA区域内只包含一台ABR,否则可能会出现非对称路由次优路径环路
          • 非对称路由可能会出现的环境:非转换者 ABR 下放的默认路由的度量值比转换者 ABR 下放的默认路由的度量值小,这就导致了 NSSA 区域内主机访问区域外网络时去包走的是非转换者 ABR,而回包走的却是转换者 ABR(因为只有转换者 ABR 才能向 NSSA 区域外通告 5 类 LSA,这导致了 NSSA 区域外的主机访问 NSSA 区域内的网络只能走转换者 ABR)。
          • 配置命令
          • Router(config-router)#area <区域号> nssa[default-information-originate] [no-redistribution]
          • default-information-originate 表示以7类LSA的方式向该区域内下放默认路由(如果是 ASBR,则路由表中必须要有默认路由才能生效)。
          • no-redistribution 表示不要将重分发进 OSPF 的路由条目下放到 NSSA 区域中。如果路由器在 NSSA 区域中既是 ABR 也是 ASBR,且还是 NSSA 区域的出口的话,可以添加这个关键字。
        • Totally NSSA区域:完全 NSSA 区域
          • 在 NSSA 区域的基础上不允许3类LSA(ABR 生成默认路由对应的 LSA 除外)存在。
          • 在 Totally NSSA 区域中,只允许一条由ABR产生的默认路由对应的3类LSA 存在。
          • 该区域内的 ASBR不能是整网的出口(ASBR 不能有默认路由)。
          • 因为该区域内 ABR下放的默认路由O IA的优先级要比ASBR下放的默认路由O N1/2的优先级高
          • 比较少用。
          • 只需在 ABR 上配置 NSSA 区域命令的后面加上 no-summary 就可以了。
      • 路由器类型
        • 普通路由器
        • ABR区域边界路由器)
        • ASBR自治系统边界路由器)
        • 查看 ABR 和 ASBR 的命令:Router#show ip ospf border-routers
      • ABR 一定要和Area 0挂靠,否则不能产生3类LSA
        • 伪ABR:在 Area 0没有Full邻居

          • 不遵循 3 类 LSA 防环原则。
          • 例如:一台路由器只有环回口宣告进了 Area 0。
        • 真ABR:在 Area 0有Full邻居
          • 遵循3类LSA防环原则
      • ASBR 可以放在任意区域中(Stub 以及 Totally Stub 区域除外)。
      • Area 0不允许过滤LSA(必须包含全路由)。
    • 目前 OSPF 一般使用 iSPF 以及 PRC 算法计算同一区域内的路由。

      • 每台路由器都以自身为根,计算从自身去往每一个网络的路径,再结合 LSA 中的网络信息生成路由条目。
    • 运行 OSPF 的路由器必须有一个路由器ID
    • 如果不指定路由器 ID,OSPF 默认使用环回口中最大的IP地址作为路由器 ID。如果没有设置环回口则使用接口中最大的IP地址作为路由器 ID。
    • 如果在已经有 OSPF 邻居的情况下修改了路由器 ID,那么必须重置OSPF进程才能让设置生效。
    • 指定路由器 ID 的命令:Router(config-router)#router-id <路由器ID>
    • OSPF 的网络类型(不同网络类型的 OSPF 的运行方式有所不同)

      • Loopback:环回

        • 环回口默认的网络类型。
        • 不发送Hello
        • 不建立邻居
        • 只能通告/32路由
          • 可能会影响MPLS标签分发
        • 仅限环回口使用。
      • Broadcast:广播
        • 以太网默认的网络类型。
        • 10s发送一次Hello
        • 支持组播发送OSPF报文
        • 选举DR/BDR
        • 所有节点逻辑直连
          • 通告路由条目的下一跳为生成这条路由条目的路由器接口的IP地址
      • Non-Broadcast(MBMA):非广播
        • 帧中继(含多点子接口)默认的网络类型。
        • 30s发送一次Hello
        • 不支持组播发送OSPF报文
        • 需要手动指定OSPF邻居(思科只需要单向指定)。
        • 选举DR/BDR
          • 在帧中继环境中,必须让Hub节点当DR。然后让所有Spoke节点当DROthers 就好了(当 BDR 没有任何意义,因为如果 Hub Down 了的话整个网络就都不可用了)。
        • 所有节点逻辑直连
          • 通告路由条目的下一跳为生成这条路由条目的路由器接口的IP地址
      • Point-to-Point:点对点
        • PPPHDLC帧中继点对点子接口BRI 等默认的网络类型。
        • 10s发送一次Hello
        • 支持组播发送OSPF报文
        • 只能建立一个邻居
          • 如果用在 MA 网络中且邻居不止一个的话会造成邻居频繁 Up/Down。
        • 不选举 DR/BDR
      • Point-to-MultiPoint:点对多点
        • 无默认对应接口类型(需要通过命令才能使用)。
        • 30s发送一次Hello
        • 支持组播发送OSPF报文
        • 不选举 DR/BDR
        • 邻居一旦建立完毕,会把自身接口的IP地址以/32形式的路由通告给对方。
        • 所有节点不逻辑直连
          • 通告路由条目的下一跳为发出这条路由条目的路由器接口的IP地址
        • 帧中继的完美解决方案(不用在 Spoke 节点做额外的 DLCI 映射)。
      • Point-to-MultiPoint Non-Broadcast:点对多点非广播
        • 跟 Point-to-MultiPoint 基本相同,只是不支持组播,需要手动指定邻居而已。
    • 如果帧中继中 Hub节点用Point-to-MultiPointSpoke节点用Point-to-Point 的话,默认是无法建立邻居的(因为 Hello周期不一致)。
    • Point-to-Point可以和Broadcast建邻居,但无法传递路由(因为 1类LSA中链路的类型不一致)。
    • 环回口只能使用Loopback、Point-to-Point网络类型
      • 使用 Point-to-Point 时可以通告非/32 路由。
    • 修改网络类型的命令:Router(config-if)#ip ospf network <网络类型>
    • OSPF 使用的组播组地址
      • 224.0.0.5所有OSPF路由器都监听
      • 224.0.0.6MA网络中的DR、BDR监听
    • OSPF 的报文

      • Hello

        • 用于邻居建立邻接关系维护
        • 发送周期和网络类型有关
          • 邻居建立之后,如果在 4倍Hello周期Dead时间内都没有收到回应则Down邻居
          • 强制指定 Hello 周期的命令:Router(config-if)#ip ospf hello-interval <秒数>
          • 设定 Hello 周期为最小值(50 毫秒)的命令:Router(config-if)#ip ospf dead-interval minimal hello-multiplier 20
          • 指定 Hello周期的同时 Dead时间也会被修改(前提是没有指定Dead时间)。
          • 强制指定 Dead 时间的命令:Router(config-if)#ip ospf dead-interval <秒数>
        • 路由器之间如果只交互过 Hello报文,则只能将邻接关系建立到2-way状态机
      • DBD(数据库描述)
        • 包含 LSA报头LSA的名字LSID)、通告的路由器Adv Router)、校验和序列号)。
        • 包含 Flags字段Init位More位M/S位)。
        • 2-way邻接状态机之后发送。
        • 支持显式确认隐式确认
      • LSR(链路状态请求)
        • 包含 LSA三元组LSA的名字LSID)、通告的路由器Adv Router)、LSA的类型)。
      • LSU(链路状态更新)
        • 包含完整LSA
        • 一个LSU报文中可包含多个LSA
      • LSAck(链路状态确认)
        • 针对 LSU中的LSA进行确认
        • 包含 LSA报头LSA的名字LSID)、通告的路由器Adv Router)、校验和序列号)。
    • 隐式确认与显式确认
      • 显式确认:使用独立、具有确认功能的其它类型报文LSULSAck)作确认。

        • LSRLSU 使用显式确认LSR 使用 LSU 作为确认,LSU 使用 LSAck 作为确认)。
      • 隐式确认:使用相同类型的回应报文作确认。
        • 只用于DBD交互

          • 邻居路由器可使用相同序列号的DBD既做确认又做回应
    • 隐式确认的序列号谁说了算?
      • 需要在邻接状态机为 Exstart 时选举出 Master/Slave 路由器。

        • 路由器ID大者做 Master
      • 序列号由 Master说了算
    • OSPF 邻居的分类
      • Neighbor(邻居):只交互过Hello报文(状态机为 2-way)。
      • Adjacency(邻接):交互过全部类型的OSPF报文、LSDB已经同步完成(状态机为 Full)。
    • DR(指定路由器)、BDR(备份指定路由器)

      • DR、BDR 指的是路由器的某些接口
      • 选举一般只在某些网络类型的MA 网络中进行。
        • 用来解决 MA网络中邻接关系过于复杂的问题

          • MA 网络中每添加一台路由器,整网邻居数量将呈几何倍数增长。
        • 通过网络类型来决定是否进行选举
      • 到达 2-way 状态机之后再进行选举。
      • 选举最多花费 4倍Hello周期
      • 不是DR、BDR的路由器称为DROthers
      • DROthers 之间不需要交互 DBD。
      • DR/BDR 选举规则
        • 先比较优先级优先级相同再比较路由器ID。优先级或路由器 ID 最高者当选DR次高者当选BDR其他路由器做DROthers

          • 优先级为0 的接口只能做DROthers,即没资格参选
          • 设置接口优先级的命令:Router(config-if)#ip ospf priority <优先级>
      • 如果 DR挂了BDR 将会接替DR的角色,同时选举出另一个BDR
      • DR/BDR正常情况下不能被抢占,如需抢占只能重置OSPF进程
        • Hello报文中会包含当前网络已认可的DR、BDR
      • 需要选举 DR/BDR 的网络中可以没有BDR,但一定要有DR
      • DR/BDR 的选举要求接口地址在同一个子网段内
        • 如果一个 MA 网络中有不同网段的邻居,那么选举会分网段进行。
      • 所有路由器需要与DR、BDR建立Full邻居DROthers之间只需要建立到2-way邻居即可。
      • 所有路由器只需要把自身的LSA发送给DR、BDR目的IP为224.0.0.6),由 DR整理之后再统一通告BDR只会整理不会通告给所有路由器目的IP为224.0.0.5)。
    • OSPF 邻接状态机
      • Down

        • 刚刚在接口上启用 OSPF,还没有收发过OSPF流量
      • Attempt(可选)
        • MBMA网络点到多点网络手动指定邻居之后尝试与邻居建立连接的过程
      • Init
        • 收到邻居的Hello、但邻居没有收到我的Hello邻居发送的Hello报文中没有包含我的路由器ID)。
      • 2-way
        • 邻居已经收到我的Hello邻居发送的Hello报文中已经包含我的路由器ID)。
        • 2-way之后开始选举DR/BDR
        • 到达该状态机需要满足的条件
          • OSPF版本号一致
          • 不能冲突的路由器ID
          • 区域一致
          • Hello周期、Dead时间一致
          • E、N位一致
          • 认证信息一致
          • 接口在同一子网中Point-to-Point 网络类型除外)。
      • Exstart
        • 邻居双方交互它们的第一个DBDFlags位中的Init=1, More=1, M/S=1,用于选举Master序列号为随机)。
        • 选举出 Master 之后,Slave将进行第一次隐式确认Flags位中的Init=0, More=1, M/S=0序列号为Master指定的序列号)。
        • 包含链路的MTU信息
          • 在思科路由器上如果链路两端的MTU不一致,会卡在这个状态机
        • 这两个DBD均不包含LSA信息
      • Exchange
        • 交互DBD(当两台路由器的 DBD大小不一致时将使用显式确认)。
      • Loading
        • 交互LSRLSU
      • Full
        • 两台路由器的 LSDB已经同步
    • OSPF 可以在邻接关系建立的过程中生成路由条目
    • 被动接口

      • 将某个接口设置为被动接口之后,该接口不能发送Hello报文

        • 也就没法建立邻居没法收发路由条目
      • 设置某个接口为被动接口的命令:Router(config-router)#passive-interface <接口名>
    • OSPF 的 LSA
      • 1类路由器LSA(常用)

        • 产生的路由器:所有路由器。
        • 扩散范围:该区域内所有路由器。
        • 主要包含信息:宣告进OSPF的接口的详细信息以及度量值。
          • 链路的形式来描述各个接口信息
          • 链路类型
          • Point-to-Point
          • 不用选DR/BDR(例如 Point-to-Point 网络类型的接口)。
          • 配合Stub类型的链路才可生成路由条目
          • Link ID邻居的路由器ID
          • 包含的数据该链路本地接口的IP地址
          • Transit
          • 需要选DR/BDR(例如 Broadcast 网络类型的接口)。
          • 配合2类LSA才可生成路由条目
          • Link IDDR连接该MA网络接口的IP地址
          • 包含的数据该链路本地接口的IP地址
          • Stub
          • 连接主机的链路(末节链路)。
          • 配合Point-to-Point类型的链路可生成路由条目
          • Link ID该链路本地接口的前缀
          • 包含的数据该链路本地接口的掩码
          • Virtual
          • 虚链路专用。
          • Link ID虚链路对端路由器的路由器ID
          • 包含的数据去往对端路由器的本地始发地址
        • 作用:让路由器知道该区域内的网络是如何分布的,并画出该区域的拓扑图(如果该路由器存在需要选举DR/BDR的网络,那么还需要2类LSA辅助)。
        • 一些特征
          • LSID通告路由器的ID
          • Adv Router与LSID相同
          • Type字段
          • 普通路由器
          • BABR
          • EASBR
          • 每台路由器关于它所属的每个区域只会产生一条1类LSA
          • 前缀抑制
          • 在 1 类 LSA 中只通告环回(类型)接口以及被动接口的信息。
          • 启用前缀抑制的命令:Router(config-router)#prefix-suppression
          • 如果不想通告被动接口的信息,也可在接口配置模式下执行命令:Router(config-if)#ip ospf prefix-suppression
        • 查看 1 类 LSA 的命令:Router#show ip ospf database router
      • 2类网络LSA(常用)
        • 产生的路由器MA网络中的DR
        • 扩散范围该区域内所有路由器
        • 主要包含信息该MA网络中所有路由器的ID及子网掩码
        • 作用:作为一类LSA的补充
        • 一些特征
          • LSIDDR连接MA网络接口的IP地址
          • Adv RouterDR的路由器ID
          • 网络中有多少个DR就有多少条2类LSA
        • 查看 2 类 LSA 的命令:Router#show ip ospf database network
      • 3类汇总LSA(常用)
        • 产生的路由器ABR
        • 扩散范围整个AS
        • 主要包含信息区域中的路由条目不包含拓扑信息,可汇总/聚合,一个路由条目对应一个 LSA)。
          • 不含拓扑信息也能防环的原因:去往同一区域中的 ABR 的路径是无环的(因为能够得知拓扑信息),ABR 去往其他区域的路径也是无环的(因为 OSPF 强制各个区域连成星型拓扑)。把这两段链路连接在一起,只要保证拓扑是无环的,整条路径就是无环的。
        • 作用:在区域间传递路由条目
        • 一些特征
          • LSID区域间路由的前缀
          • Adv RouterABR 的路由器ID
          • 当一条 3 类 LSA 跨越ABR时会修改Adv Router为当前被跨越ABR自身的路由器ID(相应的度量值也会被修改)。
          • 防环原则
          • 真ABR从非骨干区域收到3类LSA时,不会进行路由计算
          • 非骨干区域形成的 3 类 LSA 在传递给另一个非骨干区域时必须经过骨干区域中转。
          • 在 MPLS 中的防环机制
          • 当绑定到 VRF 的 OSPF 进程在收到邻居发送的三类 LSA 时不会计算路由。
          • 关闭该防环机制的命令:Router(config-router)#capability vrf-lite
        • 查看 3 类 LSA 的命令:Router#show ip ospf database summary
      • 4类汇总边界路由器LSA(常用)
        • 产生的路由器ASBR所在区域内的ABR
        • 扩散范围除了ASBR所在区域外的其它区域
        • 主要包含信息ASBR路由器的ID该ABR 到达ASBR的度量值
        • 作用:告诉其它区域内的路由器通过该ABR可到达ASBR及该ABR到达ASBR的度量值
        • 一些特征
          • LSIDASBR所在区域内ABR的路由器ID
          • Adv Router与LSID相同
          • 当一条 4 类 LSA 跨越ABR时会修改Adv Router为当前被跨越ABR自身的路由器ID(相应的度量值也会被修改)。
        • 查看 4 类 LSA 的命令:Router#show ip ospf database asbr-summary
      • 5类AS外部LSA(常用)
        • 产生的路由器ASBR
        • 扩散范围整个AS
        • 主要包含信息重分发进OSPF的路由条目不包含拓扑信息,可汇总/聚合,一个路由条目对应一个 LSA)。
        • 作用:向 AS 内通告重分发的路由条目
        • 一些特征
          • LSID外部路由的前缀
          • Adv RouterASBR的路由器ID
          • 当一条 5 类 LSA 跨越ABR时Adv Router 不会被修改需要4类LSA或Forward Address辅助才能计算路由)。
          • 如果路由器只收到5类LSA,那么它只能加入到 LSDB 中但并不能计算路由(包含 Forward Address 的除外)。
          • 支持使用 tag 进行路由标记。
          • tag 的默认值为 0。
        • 查看 5 类 LSA 的命令:Router#show ip ospf database external
      • 6 类:组播 LSA
        • MOSPF 专用。
        • 仅通过 6 类 LSA 不能产生组播分发树。
      • 7类NSSALSA(常用)
        • 产生的路由器NSSA区域中的ASBR
        • 扩散范围该NSSA区域内的所有路由器
        • 一些特征
          • 特殊的5类LSA
          • 只存在于NSSA区域中
          • 扩散出NSSA区域时必须由ABR转换为5类LSA
        • 查看 7 类 LSA 的命令:Router#show ip ospf database nssa-external
    • LSA 的三元组唯一标识一个LSA):LSA 的名字(LSID)、通告的路由器(Adv Router)、LSA的类型
    • 1、2 类 LSA 包含拓扑信息。
      • 包含路由器ID运行OSPF的接口及网络接口连接了哪些邻居接口的地址等。
    • LSA 存放在路由器的 LSDB(俗称拓扑表)中。
    • OSPF 收敛完成的标志:每台路由器同一区域内)的LSDB都一致
      • 只有路由器在相同区域中,LSDB 才能保持一致。
    • LSA 有老化计时器,默认为 60min正向计时。计时器超时之后LSA将自动被删除
    • LSA 可原封不动地发送多跳扩散泛洪传递)。
      • 仅限同一区域
      • 距离矢量协议中的路由条目每传递一跳都会改变
    • LSA 的防环机制
      • 当一台路由器收到 LSA 之后,若 LSDB中没有,则接收并回复LSAck,然后泛洪给其它邻居
      • LSDB中有,则比较LSA的新旧程度
        • 先比序列号,大的新;再比老化计时器,小的新,相差小于15min视为一致;最后比校验和,大的新)。
      • 本地的LSA比接收到的LSA旧,则接收并回复LSAck,然后泛洪给其它邻居
      • 本地的LSA与接收到的LSA新旧程度相同,则丢弃收到的LSA
      • 本地的LSA比接收到的LSA新,则丢弃收到的LSA,然后反向通告本地的LSA
    • LSA 的序列号
      • 线性空间:0x80000001(负数)~0x7FFFFFFF(正数)
      • 新生成一个LSA序列号+1
      • 当 LSA 的序列号达到最大值时,新的LSA的序列号将会被重置。这就导致了新的LSA的序列号比旧的LSA小,邻居不接收反而会反向通告旧的LSA。这时就需要等到最大序列号的LSA的老化计时器超时之后才能恢复正常。
        • 解决方案:当 LSA 的序列号接近最大值时,LSA 的老化计时器将会缩短,以便及时重置全部 LSA 的序列号。
    • LSDB 过载保护
      • 思科专有。
      • 可限制接收 LSA 的数目,超过之后自动 Down 邻居。当 Down 邻居超过一定次数后,不再自动建立邻居。
      • 可防止低性能路由器在 OSPF 上消耗过多资源。
        • 路由器自身产生的 LSA 不耗费资源。
      • 基本配置命令
        • Router(config-router)#max-lsa <最大LSA数目>
    • OSPF 度量值

      • 度量值=参考带宽(bps) /接口带宽(bps)

        • 默认参考带宽为 100,000,000 bps100 Mbps
      • 控制层面路由流向的所有入接口的带宽。
        • 修改接口的带宽不会影响从该接口发出路由条目的带宽
      • 整条链路的度量值等于每条链路的度量值之和分段计算)。
      • DR 去往同一网段中其他路由器的度量值为 0
      • 修改参考带宽的命令
        • Router(config-router)#auto-cost reference-bandwidth <带宽值(Mbps)>

          • 参考带宽不一致不会影响邻居的建立。
      • 修改接口带宽的命令
        • Router(config-if)#bandwidth <带宽值(Kbps)>
      • 直接修改接口度量值的命令
        • Router(config-if)#ip ospf cost <度量值>
    • SPF 矢量图
      • 包含元素

        • 树干/树枝:基于 1(Point-to-Point、Transit、Virtual、Stub 链路)、2类LSA 形成。
        • 树叶:基于 3、4、5、7类LSA 形成。
      • 基本元素画法
    • SPF 矢量图画法原则

      • 先画 Point-to-Point、Transit、Virtual 链路,再画 Stub 链路,最后挂上相应的路由条目。
      • Point-to-Point、Transit、Virtual 链路先画度量值小的那节。
      • 每台路由器只会画单向路径
      • 3、5 类 LSA 产生的路由条目挂在本区域的 ABR 上。
    • OSPF 的路由类型

      • O区域内路由(通过 1、2类LSA 获取)。
      • O IA区域间路由(通过 3类LSA 获取)。
      • O E1重分发进OSPF的路由(通过 4、5类LSA 获取),且度量值在路由条目传递过程中会累加
        • 如果同时收到多条相同目的地的 O E1 路由,直接比较度量值,谁小谁加表。
        • 如果既关注内部开销又关注外部开销,那么在重分发时可以使用这类路由。
      • O E2重分发进OSPF的路由(通过 4、5类LSA 获取),且度量值在路由条目传递过程中保持不变
        • 如果同时收到多条相同目的地的 O E2 路由,先比较外部度量值Seed Metric),再比较内部度量值(本地去往ASBR的度量值)。谁小谁加表。
        • 如果只关注外部开销,那么在重分发时可以使用这类路由。
      • O N1NSSA区域中重分发进OSPF的路由(通过 7类LSA 获取)。其他特性同 O E1
      • O N2NSSA区域中重分发进OSPF的路由(通过 7类LSA 获取)。其他特性同 O E2
    • 各路由类型的优先级:O > O IA > O E1 = O N1 > O E2 = O N2
    • OSPF 默认所有类型的路由管理距离均为 110
      • 修改 OSPF 管理距离的命令

        • Router(config-router)#distance ospf inter-area <区域间路由管理距离> intra-area <区域内路由管理距离> external <外部路由管理距离>
    • OSPF 支持修改某条内部或外部路由的管理距离,也支持修改由某台路由器产生的所有路由条目的管理距离。
    • OSPF 路由重分发
      • 重分发进 OSPF 的路由(包含通告的默认路由)可设置一个默认度量值Seed Metric)。
      • BGP 重分发进 OSPF 的 Seed Metric 为1其它路由协议20
      • 设定 Seed Metric 的命令
        • Router(config-router)#area <区域号> default-cost <度量值>
      • 默认路由无法重分发进 OSPF。
      • 重分发命令
        • 标准重分发:Router(config-router)#redistribute <路由协议> [路由协议的参数] [metric-type 1|2] [subnets] [nssa-only] [metric <度量值>]

          • metric-type 用于指定度量值的计算方式(见上面的 O E1、O E2 路由类型)。
          • subnets 用于开启子网路由宣告(OSPF 默认只重分发主类路由)。
          • nssa-only 用于 NSSA 区域的 ABR 上,只把重分发的路由下放到 NSSA 区域中。
          • metric 用于指定该路由条目的 Seed Metric。
        • 5类LSA 通告路由器为默认网关:Router(config-router)#default-information originate [always]
          • 后面加 always 可以在路由器没有配置默认网关的情况下通告。但需要注意的是,加了 always 之后路由器将不会把别人通告(从 OSPF)的默认路由加入到路由表中。
          • 也可使用 route-map 工具为通告的默认路由添加某些参数。
      • OSPF 重分发进其它路由协议默认不会重分发外部路由。如果需要重分发外部路由的话可以在重分发命令后面加上 match internal external
    • Forward AddressFA

      • 5、7类LSA 特有的字段。
      • 用来强行指定外部路由下一跳的方向,可防止非对称路由次优路径路由环路
      • 5类LSA中包含FA不用4类LSA 就可计算路由。
      • 5类LSA的FA重分发进OSPF的路由条目本身下一跳地址
      • 7类LSA一定有FA
      • 5类LSA 需要满足以下条件才能产生 FA。
        • ASBR宣告重分发进OSPF的路由条目的下一跳接口进入OSPF,且该接口不能是被动接口
        • ASBR对于该重分发进OSPF的路由条目的下一跳接口不能是Point-to-Point、Point-to-MultiPoint类型
      • 7类LSA的FANSSA中的ASBR的最大环回口地址没有环回口地址则为最大接口地址)。
        • 7类LSA转换为5类LSA 之后,FA默认保持不变
      • 7 类 LSA 转 5 类 LSA 时不保留 FA 的命令(只能在转换者 ABR 上执行)
        • Router(config-router)#area <区域号> nssa translate type7 suppress-fa
      • 7 类 LSA 转 5 类 LSA 时如果不保留FA,那么当 7 类 LSA 所对应的路由条目是 O N1 类型的话,转换后的 O E1 类型的路由条目 NSSA区域内的那段内部度量值将设为 0
      • FA必须通过OSPF路由可达1、2、3类LSA),否则该外部路由将只会被加入 LSDB。
        • 去往 FA 的静态路由可以覆盖OSPF路由,这会导致 FA 不是通过 OSPF 可达的。
    • Virtual Link 是在一个区域内虚拟点到点链路。
    • Virtual Link 的用途
      • 分离的Area 0相连接(例如 Area 0 <--> Area 1 <--> Area 0)
      • 远离Area 0的区域连接(例如 Area 0 <--> Area 1 <--> Area 2)
      • 没有Area 0的区域连接(只是 ABR 的环回口宣告进 Area 0(伪 ABR),例如 Area 1 <--> Area 2 <--> Area 3)
    • 只有在相同区域内的两台路由器才能使用 Virtual Link。
    • Virtual Link 会造成 OSPF的星型拓扑被破坏大大增加出现环路的可能性。因此不应该长时间使用
    • Virtual Link 做区域间汇总可能会出现环路
    • 通过Virtual Link传递的路由条目的出接口去往Virtual Link对端地址的树形结构出接口物理接口)。
    • 思科在 Virtual Link 上面默认不会发送Hello
      • 该特性称为 Hello抑制
    • 思科通过 Virtual Link获取的LSA永不过期(不用定时泛洪)。
      • 该特性称为 DNA
      • 该特性可以减少 LSA 泛洪的数量。
    • 配置命令
      • Router(config-router)#area <区域号> virtual-link <目的路由器ID>

        • <目的路由器ID> 需要两台路由器互指
    • 查看 Virtual Link 状态的命令
      • Router#show ip ospf virtual-links
    • OSPF 路由汇总/聚合

      • 区域间路由汇总/聚合

        • 做完汇总之后,路由器会先抑制所有明细路由,再产生汇总路由发送给其他区域
        • 如果在汇总命令后面加上了 not-advertise 关键字,则既抑制明细路由,又不发送汇总路由(等于做了路由过滤)。
        • 使用 filter-list 工具调用前缀列表可进行区域间的路由过滤。
        • 汇总路由的度量值所有明细路由的最小度量值
        • 配置命令
          • Router(config-router)#area <区域号> range <汇总网段> <子网掩码>
      • 外部路由汇总/聚合
        • ASBR 进行。
        • 配置命令
          • Router(config-router)#summary-address <汇总网段> <子网掩码>
        • 如果在汇总命令后面加上了 not-advertise 关键字,则既抑制明细路由,又不发送汇总路由(等于做了路由过滤)。
    • OSPF 认证级别
      • 0 级:不认证
      • 1 级:明文认证
      • 2 级:HMAC密文认证
        • HMAC值= MD5(报文+密码)
    • OSPF 认证范围
      • 接口级认证

        • 先设定认证密码,再设定认证方式。
        • 配置命令
          • 设定密文认证密码:Router(config-if)#ip ospf message-digest-key <密码ID> md5 <密码>
          • 设定明文认证密码:Router(config-if)#ip ospf authentication-key <密码>
          • 设定密文认证方式:Router(config-if)#ip ospf authentication message-digest
          • 设定明文认证方式:Router(config-if)#ip ospf authentication
          • 密文认证邻居两边的 <密码ID><密码> 必须一致
      • 区域级认证(只支持 HMAC 密文认证)
        • 依旧要在每个接口上设置认证密码
        • 配置命令
          • Router(config-router)#area <区域号> authentication message-digest
      • Virtual Link 认证
        • 配置命令

          • 密文认证:Router(config-router)#area <区域号> virtual-link <目的路由器ID> authentication message-digest message-digest-key <密码ID> md5 <密码>
          • 明文认证:Router(config-router)#area <区域号> virtual-link <目的路由器ID> authentication authentication-key <密码>
        • 在思科路由器上由于存在 Hello抑制特性,在已经建立完成的 Virtual Link上配置认证需要重置OSPF进程才能生效
    • 1、2类LSA生成的路由条目只能做本地抑制
    • OSPF 调用前缀列表进行路由过滤的命令
      • Router(config-router)#area <区域号> filter-list prefix <前缀列表名称> in|out
    • 目前用于IPv4路由的OSPF版本为v2
    • OSPFv2 最大的缺陷就是将某些重要LSA中的路由信息和拓扑信息绑定起来,这导致了 OSPFv2 根本无法支持 IPv6。不过后来的 OSPFv3 也有这种缺陷,导致最初的 OSPFv3 也只支持 IPv6。后来思科改进了 OSPFv3(称为二代OSPFv3),把 LSA 中的拓扑信息和路由信息剥离开来(LSA 类型可自定义),才解决了这个问题(增加了协议的可扩展性)。但改进后的 OSPFv3 依然不能和OSPFv2 互操作。
    • 思科路由器通过 OSPFv3 来为 IPv4 做路由的命令

      • Router(config)#ipv6 unicast-routing%开启IPv6路由功能
      • Router(config)#router ospfv3 <进程号>
      • Router(config-router)#address-family ipv4 unicast%进入IPv4单播地址簇配置模式
      • Router(config)#interface <接口名>
      • Router(config-if)#ipv6 enable%开启接口的IPv6功能
      • Router(config-if)#ospfv3 <进程号> ipv4 area <区域号>
    • 思科路由器通过 OSPFv3 来为 IPv6 做路由的命令
      • Router(config)#ipv6 unicast-routing%开启IPv6路由功能
      • Router(config)#router ospfv3 <进程号>
      • Router(config-router)#address-family ipv6 unicast%进入IPv6单播地址簇配置模式
      • Router(config-router-af)#router-id <路由器ID>%如果路由器没有IPv4地址,必须手动指定一个路由器ID
      • Router(config)#interface <接口名>
      • Router(config-if)#ospfv3 <进程号> ipv6 area <区域号>
    • OSPFv3的LSA 简介

      • 1、2类LSA

        • OSPFv2 的 1、2 类 LSA 相比少了与网络相关的参数
        • 没有接口 IP、掩码、度量值等形成路由条目的必备参数
        • 只能形成拓扑不能形成路由
      • 8类LSA链路LSA
        • 只能在本地链路中发送
        • 配合1、2类LSA可形成直连网络Link Local地址的路由条目
      • 9类LSA区域内前缀LSA
        • 携带AGUA地址及掩码

          • 在为 IPv4 做路由时将携带 IPv4 地址及掩码。
        • 配合1、2类LSA可形成AGUA地址的路由条目
          • 在为 IPv4 做路由时可配合 1、2 类 LSA 形成 IPv4 路由条目。
    • OSPFv3 先形成拓扑后计算路由

ospf配置命令_思科设备 OSPF 的相关知识点相关推荐

  1. ipv6 ospf配置方法_【思唯网络学院】网络故障大全及处理原理和方法

    第一章 故障处理方法 一.网络的复杂性 一般网络包括路由.拨号.交换.视频.WAN(ISDN.帧中继.ATM.-).LAN.VLAN.- 二.故障处理模型 1. 界定问题(Define the Pro ...

  2. 华为交换机配置ospf配置命令

    下面是华为交换机配置 OSPF 的命令步骤: 配置系统支持 OSPF 协议: system-view [Huawei] protocol ospf

  3. ensp查看历史配置命令_网络工程师 | 手把手教你用华为ensp模拟器玩vxlan实验(静态方式)...

    一.背景 随着云计算.虚拟化技术的发展,业务有时需要再不同地方同网段进行通信,即大二层网络.比如虚机迁移,从A数据中心迁移到异地数据中心. 首先,我们都知道,路由器是用来隔离广播域的,同网段通信都在一 ...

  4. o oia ospf 路由优先_动态路由OSPF中注入默认路由,原来都是这么玩的,进去看看...

    一 .OSPF网络注入默认路由 二. 实战步骤 1.本实验用 R1 的环回接口 1 来模拟 Internet. (1)步骤 1:配置路由器 R1 R1(config)# interface loopb ...

  5. eigrp配置实验_思科CCIE认证技术详解IPv6协议下的静态路由配置

    无论是 NAT,还是 CIDR 等都是缓解 IP 地址短缺的手段,而 IPv6 才是解决地址短缺的最终方法.IPv6 是由 IETF 设计的下一代互联网协议,目的是取代现有的互联网协议 IPv4. I ...

  6. 华为ar2200series配置手册_思科ASA系列防火墙配置手册

    思科ASA系列防火墙配置手册 思科ASA系列防火墙配置手册 使用console连接线登录方法 1.使用cisco的console连接线,连接设备的console口和计算机com口(笔记本用USB转CO ...

  7. 查看电脑配置命令_注册表

    查看电脑配置命令 2008年06月16日 星期一 13:59 打开注册表 开始--运行--regedit 什么是注册表? 注册表因为它复杂的结构和没有任何联系的CLSID键使得它可能看上去很神秘.不幸 ...

  8. 迈普路由器访问控制列表配置命令_迈普路由器常用使用功能讲解.ppt

    MP路由器常用使用功能 东北技术服务部 --牛克伟 TEL4008868669 提 纲 产品简单介绍 命令入门介绍 常用功能讲节 常见故障排查 产品简单介绍 产品简单介绍 命令入门介绍 路由器配置方式 ...

  9. 思科nat配置实例_思科3750交换机配置DHCP服务器实例网络环境

    思科3750交换机配置DHCP服务器实例网络环境: 一台3750交换机,划分三个vlan, vlan2 为服务器所在网络,命名为server.IP地址段为192.168.2.0,子网掩码:255.25 ...

最新文章

  1. C# - list数据填充到Dataset里
  2. 《程序员修炼之道》备忘清单
  3. php self this static,PHP 中 self、static、$this 的区别和后期静态绑定详解
  4. 我的第一个python web开发框架(11)——工具函数包说明(二)
  5. matlab imwrite将图像保存到其他目录
  6. Python递归打印函数
  7. MS DOS窗口进入JAVA源程序,从java程序运行MS-DOS命令
  8. rest syntax(parameters)
  9. pytorch-使用GPU加速模型训练
  10. Atitti 编程语言高级 api 与高级知识 堆栈api 异常api Meta anno注解元数据api Ref 反射api Database meta api 字节码库如果你正在编写一个框架或者
  11. springboot整合PageHelper实现分页效果
  12. 汽车用组合仪表设计规范
  13. 基于ELK 7.50搭建elastalert 监控报警和权限控制
  14. ERP系统-库存子系统-采购/成品入库单
  15. 接口测试工具设计与实现
  16. 中标麒麟桌面版7.0(NeoKylin linux desktop release 7.0)配置pyqt5运行环境说明
  17. 金蝶K3CLOUD7.2内部培训PPT下载
  18. CTF训练(密码学)——Atbash Cipher
  19. pacman使用介绍
  20. ES系列:字段类型不对时,如何保存文档到索引

热门文章

  1. android日记本实训报告,实训笔记
  2. 在Linux上安装Zookeeper
  3. 基于JAVA+SpringMVC+Mybatis+MYSQL的流浪宠物救助系统
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的中小型超市进销存管理系统
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生兼职网站
  6. bcd转ascii码 流程图_4-20mA转RS485,MODBUS数据采集模块
  7. Codeforces 301A. Yaroslav
  8. Nginx之进程间的通信机制(信号、信号量、文件锁)
  9. 解决MySQL在修改列时因为外键依赖出错的问题
  10. Date-calendar 类