xdays

CCNP-OSPF

March 17, 2011

  • 基本特征
  • 术语解释
    • 自制系统(AS)
    • 邻居表
    • 拓扑表
    • 路由器标志符(RID)
    • 划分区域
    • 指定路由器(DR)和备份指定路由器(BDR)
    • 区域边界路由器(ABR)
    • 自治系统边界路由器(ASBR)
  • 分组类型
  • 邻接关系
  • 度量计算
  • LSAs 类型总结
  • 汇总路由
  • 默认路由
  • 网络类型
  • 特殊区域
    • 末节(stub)区域
    • 绝对末节区域(totally stub)区域
    • NSSA(not so stub area)区域
    • 绝对 NSSA(totally NSSA)区域
    • 不规则区域
  • 身份验证

基本特征

开放最短路径优先(OSPF)协议是一种链路状态路由协议,封装于 ip 数据包中协议号为 89,采用组播地址 224.0.0.5(所有路由器)和 224.0.0.6(DR 和 BDR)。链路状态路由协议与距离矢量路由协议最大的区别就是他可以了解到整个网络的拓扑结构,然后利用 SPF 算法根据这个链路状态数据库计算最优路径,而距离矢量路由协议总是相信邻居传来的路由信息。关于链路状态协议最好的解释是商场的地图,每一个地点都有一张已改点为中心到达商场其他地点的最佳路径,这种结构形象地体现了 OSPF 构建的 SPF 树。另外 OSPF 发送限定更新,且只将更新发往受影响的路由器,以较低的频率发送更新(每 30min,老化时间为 1h)。

术语解释

自治系统(AS)

所有运行 OSPF 的路由器构成了一个自治系统。

邻居表

记录了路由器和相邻路由器建立邻接关系过程的状态,这里区别于 EIGRP,并不是所有存在于邻居表中的条目都和本地路由器建立了邻接关系,具体见邻接关系。

拓扑表

也就是链路状态数据库,他记录了 OSPF 的 AS 所有链路的状态,是生成路由表的基础。

路由器标志符(RID)

代表每个路由器在 OSPF 协议中的身份,并且是唯一的。每台路由器发送更新时都要打上自己的 RID。RID 的确定原则是:1)通过 router-id 命令来指定;2)选择所有换回接口最大的地址;3)选择所有接口最大的地址。

划分区域

OSPF 适合于大型网络,当网络很大时庞大的链路状态数据库以及不断的进行 SPF 计算会拖慢 OSPF 收敛。划分区域的优点主要有:由于在区域之间执行路由汇总可以减小路由表的条目;限制拓扑变化的影响范围;减小 LSA 的泛洪。区域分为骨干区域(area 0)和非骨干区域(area n)

指定路由器(DR)和备份指定路由器(BDR)

在多路访问网络中如果每台路由器都与其他路由器建立邻接关系那么拓扑结构变得很复杂,这时可以在网络中选出一个代表来代表其他路由器,与其他网络上的路由器通信,这个路由器就叫做 DR,另外 BDR 是做备份用的,当 DR 失效时 BDR 升级为 DR。选 DR 原则:优先选择接口优先级高(数字大)的,如果优先级相同就选择 RID 最大的。关于 DR 也有一个比喻:一群人坐在一间屋子开会,如果大家你一句我一句就会很混乱,这时大家选一名代表,谁有事就告诉代表,然后代表把事情传递给大家,这样可以很好的提高效率。

区域边界路由器(ABR)

连接 OSPF 的不同区域的路由器,ABR 让两个区域可以了解彼此的网络。

自治系统边界路由器(ASBR)

连接 OSPF 自治系统和其他网络的路由器,在 ASBR 上可以通过重定向把其他路由导入到 OSPF 中。

分组类型

OSPF 的分组类型有 5 种,它们的名称和功能如下表:


类型 名称 说明 1 hello 用于建立邻接关系 2 DBD 数据库描述 检查数据库是否同步 3 LSR 链路状态请求 向邻居请求链路状态记录 4 LSU 链路状态更新 响应请求的链路状态记录,包含一个或多个 LSA 5 LSack 对其他数据包的确认


邻接关系

OSPF 中两台路由器相互交换链路信息要先建立邻接关系,这里的邻接关系要区别于邻居关系:当两台路由器相互交换 hello 包就建立了邻居关系,而只有交换了 LSA 才算是建立了邻接关系。下面是建立邻接关系的详细过程:AB 两台路由器开启 OSPF,当 AB 收到的 hello 包中包含自己时连台路由器相当于建立邻居关系,称作为 2way 状态;然后下一步因为要交换 DBD 包所以要协调一个主从关系,这时进入 Exstart 状态,RID 大的作为主路由器小的作为从路由器;然后进入 Exchange 状态交换 DBD,DBD 是链路状态信息的简要概述,可以类比书的目录;接着双方根据收到的 LSR 包响应响应的链路信息,这一阶段称为 loading;最后链路状态数据库达到收敛也就是 full 状态。

注意:1)在建邻接关系时如果网络是 MA 网络则要进行选 DR 和 BDR 过程,选举完成后的状态是,所有路由器都与 DR 和 BDR 建立邻接关系(full)而与其他路由器保持 2way 状态。2)建立邻居要满足的条件:hello 和 dead 时间一致;AS 号一致;身份验证,stub 区域标记一致

度量计算

OSPF 的度量称作 cost,仅考虑带宽,计算公式:10E8/bw(bitps)

注意带宽是除接口带宽,单位是 bitps

LSAs 类型总结

由于 OSPF 有不同的区域,而且区域内还有不同角色的路由器,要让这些路由器通信就要构建不同种类的 LSAs 以达到特定目的,下表是对六种 LSA 的总结(主要包括通告路由器,传播范围,包含内容三部分):


种类 名称 通告路由器 传播范围 内容 1 router lsa RID 本区域内 拓扑信息和路由 2 network lsa DR 本区域内 本网络内的拓扑信息 3 summary lsa ABR* 整个自治系统 域间路由 4 summary ASB lsa ABR* 整个自治系统 到达 ASBR 的路由 5 external lsa ASBR 整个自治系统 域外路由(重定向) 7 NSSA lsa(暂时) ASBR 整个自治系统 在 NSSA 区域传域外路由


注意:1)在通告路由器一栏凡是打*的表示通告路由器随区域改变而改变;2)135 分别用于传播域内,域间和域外路由;3)关于 NSSA 留待特殊区域解释。

汇总路由

汇总可以减少传播的路由条目,减轻 CPU 负载等。默认 OSPF 不执行任何的自动汇总,所以要手工汇总。可以汇总的地方有两个:一个是区域边界路由器 ABR,汇总一个区域内的路由;一个是自治系统边界路由器 ASBR,汇总外部路由。

默认路由

OSPF 配默认路由的步骤:1)确保本地路由器有默认路由;2)在进程中通告默认路由:default-information originate

网络类型

首先要搞清楚网络类型的作用,OSPF 不仅要考虑网络的结构还要考虑二层链路的特性,不同的网络类型就是满足不同的二层链路介质需求而设计的。下表列举了六种 OSPF 网络类型,以及工作在这些网络类型下的行为:


网络类型 默认接口 hello 时间 选 DR 邻接关系 适用类型 loopback loopback 无 否 无 loopback(32) point-to-point serial/FR’s p2p sub 10 否 hello 包自动 串口/子接口 broadcast ethernet 10 是 hello 包自动 以太口 non-broadcast FR’s phy/sub 30 是 手工指定 帧中继 point-to-multipoint -----* 30 否 hello 包自动 广播星形拓扑 p2mp nonbroadcast -----* 30 否 手工指定 非广播星形


注意:1)point-to-multipoint 和 point-to-multipoint non-broadcast 两种网络默认不对应任何接口;2)凡是非广播的网络类型都需要手工指定邻居,指定方法是在进程下配 neighbour ipaddr;3)可以通过修改 hello-interval 让工作在不同网络类型的接口建邻居 4)帧中继点到点子接口默认网络类型是 point-to-point,点到多点的类型是 non-broadcast,物理接口的网络类型是 non-broadcast,所以默认 OSPF 不能工作在帧中继网络中,所以要修改网络类型,最简单有效的方式是在支持 broadcast 的链路上配 point-to-multipoint 网络类型,既不需要手工配邻居也不需要选举 DR。

特殊区域

末节(stub)区域

如果一个区域只与主干区域相连且没有 ASBR 那么这个区域内就不需要有外部路由,仅有一条默认路由就可以了。

绝对末节区域(totally stub)区域

在末节区域的基础上再去掉域间路由,也用一条指向 ABR 的默认路由代替,这样更精简了路由表。配置时 no-summary 参数只需要加在 ABR 上。

NSSA(not so stub area)区域

NSSA 区域与 stub 区域的唯一不同是它可以包括 ASBR 也就是这个区域内可以传播外部路由,那么问题就出现了,你还不能传播 5 类 LSA 还需要传播外部路由给其他区域,解决办法就是再添加 7 类路由这样既传递了外部路由也保持着 NSSA 区域的规则,7 类路由就用在这种特定的场合而且在 NSSA 的 ABR 上 7 类被转换成 5 类法非其他区域,也就是 7 类 LSA 仅存在于 NSSA 网络中。

绝对 NSSA(totally NSSA)区域

与 stub 和绝对 stub 区域的关系一样,绝对 NSSA 不传播域间路由,直接用默认路由代替。

不规则区域

区域不与主干区域相连或者主干区域被其他区域分割开的解决办法有如下三种:1)多进程双向重分布;2)通过打隧道(tunnel)来延长主干区域的范围实现区域连接;3)虚链路,通过 ABR 之间建立虚链路来连接区域。

身份验证

从密钥的角度讲有明文认证和 md5 认证,从认证的对象来讲有接口认证,区域认证和虚链路认证。可以理解为区域认证就是批量接口认证,所有归到特定区域内的接口都被认证。如果配置了区域认证,那么虚链路也包含在内被认证,所以在另一端也要配置认证才能保持虚链路的畅通。

小特性(feathers)

1) E1 和 E2 外部路由的区别:就在 metric 值的计算上,E2 类型的外部路由被重定向到自治系统内后 metric 值不再增加,而 E1 类型继续累加自治系统内的 metric,另外重定向到 OSPF 的外部路由的默认 metric(seed metric)值也可以修改。

2) 因为有些链路带宽已经超过了 100M,这时计算的 metric 就不那么准确(100M 和 1000M 的 metric 都是 1)可以修改参考带宽以修改 metric 值,也可以直接修改链路的 cost 值。

3) 当在 OSPF 中通告换回口时其子网掩码总是 32 位,确保最佳路由,因为逻辑接口就这一个地址。