
10、OSPF原理与配置10.1 OSPF协议概述为什么需要动态路由协议静态路由适合小型或稳定的网络静态路由存在的问题无法适应规模较大的网络无法动态响应网络的变化动态路由协议的分类按工作区域划分IGP内部网关协议RIP基于距离矢量Distance-Vector算法的协议它使用跳数Hop Count作为度量来衡量到达目的网络的距离OSPFIS-IS链路状态协议使用SPFShortest Path First最短路径优先算法进行路由计算EGP外部网关协议BGP实现ASAutonomous System自治系统之间的路由可达并选择最佳路由的距离矢量路由协议按工作机制及算法分类距离矢量协议RIPBGP链路状态路由协议OSPFIS-IS距离矢量路由协议运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互每台路由器都从相邻的路由器学习到路由并且加载进自己的路由表中。对于网络中的所有路由器而言路由器并不清楚网络的拓扑只是简单的知道要去往某个目的方向在哪里距离有多远。这即是距离矢量算法的本质。链路状态路由协议链路状态路由协议不直接传递路由条目而是传递链路状态信息直连接口、链路带宽、开销、邻居、网段、状态 UP/DOWN所有路由器同步一份完整全网拓扑图各自独立计算最短路径。链路状态路由协议工作步骤建立邻居关系先建立邻居关系再彼此之间进行交互LSA链路状态通告LSA描述路由器接口的状态信息例如接口的开销连接的对象等交互链路状态信息和LSDB将接收到的LSA存放入自己的LSDBLSDB汇总了网络中路由器对于自己接口的描述LSDB包含全网拓扑的描述进行最优路径计算每台路由器都基于LSDB使用SPF最短路径优先算法进行计算计算出一棵以自己为根的、无环的、拥有最短路径的“树”最短路径树生成路由表项加载到路由表路由器将计算出来的优选路径加载进自己的路由表。距离矢量路由协议和链路状态路由协议对比图维度链路状态OSPF/IS-IS距离矢量RIP传递内容链路状态描述拓扑路由表下一跳 跳数计算方式全网拓扑本地 SPF 计算邻居传递矢量叠加收敛速度快慢易环路带宽占用仅变更时发 LSA平时 Hello 保活周期性完整广播路由表防环天生无环统一拓扑图需水平分割、毒性逆转SPF算法的实现步骤初始化选择一个起点通常是运行SPF算法的路由器本身并将起点的最短路径距离设为0。将所有其他节点的最短路径距离设为无穷大。创建一个未处理节点列表将所有节点加入该列表。选择最近节点从未处理节点列表中选择一个距离起点最近的节点标记为已处理。将该节点从未处理节点列表中移除。更新邻居节点的距离对于已处理节点的所有邻居节点计算从起点到这些邻居节点的路径距离。如果新计算的距离小于当前记录的距离则更新邻居节点的最短路径距离并记录前驱节点即从起点到该邻居节点的上一个节点。重复步骤2和3重复上述步骤直到所有节点都被标记为已处理。生成最短路径树SPTSPF算法执行完毕后会生成一棵以该路由器为根的最短路径树SPT。SPT描述了从该路由器到网络中所有其他节点的最优路径路由器根据SPT中的信息更新其路由表从而确定数据包转发的最佳路由。OSPF简介OSPF是典型的链路状态路由协议是目前业内使用非常广泛的IGP协议之一。目前针对IPv4协议使用OSPF Version2 (RFC 2328);针对IPv6协议使用OSPF Version 3 (RFC2740)。OSPF路由器之间交互的是Ls(link State链路状态)信息而不是直接交互路由。LS信息是OSPF能够正常进行拓扑及路由计算的关键信息。OSPF路由器将网络中的LS信息收集起来存储在LSDB中。路由器都清楚区域内的网络拓扑结构这有助于路由器计算无环路径。每台OSPF路由器都采用SPF算法计算达到目的地的最短路径。路由器依据这些路径形成路由加载到路由表中。OSPF支持VLSM (Variable Length Subnet Mask可变长子网掩码)支持手工路由汇总。多区域的设计使得OSPF能够支持更大规模的网络。OSPF术语区域区域是从逻辑上将设备划分为不同的组每个组用区域号Area ID来标识。Router IDRouter IDRouter Identifier路由器标识符用于在一个OSPF域中唯一地标识一台路由器。不同OSPF域Router ID可以相等。Router ID可以手工配置或系统自动配置。在实际项目中通常会通过手工配置方式为设备指定OSPF Router ID。请注意必须保证在OSPF域中任意两台设备的Router ID都不相同。通常的做法是将Router ID配置为与该设备某个接口通常为LoopBack接口的IP地址一致。度量值OSPF使用Cost开销作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值缺省时接口Cost值 100 Mbit/s /接口带宽 。其中100 Mbit/s为OSPF的缺省参考值该值是可配置的。一条OSPF路由的Cost值可以理解为是从本路由器到目的网络沿途所有出接口的Cost值累加。lOSPF使用Cost开销作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值缺省时接口Cost值 100 Mbit/s /接口带宽 。其中100 Mbit/s为OSPF的缺省参考值该值是可配置的。一条OSPF路由的Cost值可以理解为是从本路由器到目的网络沿途所有出接口的Cost值累加。OSPF报文类型报文类型报文作用Hello周期性发送用来发现和维持OSPF邻居关系。DD Database Description描述本地LSDB的摘要信息用于两台设备进行数据库同步。LSR Link State Request用于向对方请求所需的LSA。 设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。LSU Link State Update用于向对方发送其所需要的LSA。LSAck Link State Acknowledgment用来对收到的LSA进行确认。OSPF邻居表OSPF Process 1 with Router ID 1.1.1.1本机运行OSPF 进程号 1本路由器 OSPF 标识Router ID固定为1.1.1.1Router ID 是 OSPF 设备全网唯一身份号用于路由计算、邻居标识。Area 0.0.0.0 interface 10.1.1.1(GE0/0/0)s neighbors该邻居属于 OSPF 骨干区域Area 0骨干区OSPF 强制要求所有非骨干区必须连通骨干区本机和邻居建邻的出接口千兆以太网GE0/0/0接口 IP 地址10.1.1.1。Router ID: 2.2.2.2对端路由器R2的 OSPF 设备 ID 为2.2.2.2Address: 10.1.1.2R2 和 R1 对接的直连接口 IP 地址GR State: Normal优雅重启 GR状态正常GR 功能用来保障设备主控板故障重启时OSPF 邻居关系不中断、业务不丢包Normal 代表没有发生设备重启故障。State: FullFull完全邻接是 OSPF 最优邻居状态两台路由器已经完成 LSA 链路状态数据库完整同步可以互相传递 OSPF 路由条目Mode:Nbr is Master邻居 R2 是 ExStart 阶段的主设备MasterExStart 阶段双方会协商主从Master 主导 DD数据库描述报文的序列号控制报文交互时序Slave 被动跟随应答这里邻居 R2 拿到 Master 角色本机 R1 为 Slave。Priority: 1邻居 R2 该接口 OSPF DR 选举优先级 1华为接口默认优先级就是 1数值越大越容易被选为 DRDR: 10.1.1.1 BDR: 10.1.1.2广播型以太网网络的 DR/BDR 选举结果DR指定路由器本机 R1接口 IP10.1.1.1BDR备份指定路由器)邻居 R2以太网广播网络里所有路由器仅和 DR、BDR 建立 Full 邻接减少全网 LSA 泛洪开销DR 故障时 BDR 自动顶替工作。MTU: 0DD 报文协商的接口 MTU 校验值为 0华为设备默认 DD 报文不校验 MTU不会因为两端接口 MTU 不一致卡在 ExStart 状态。Dead timer due in 35 sec邻居失效倒计时剩余 35 秒以太网默认 Hello 周期 10s、Dead 周期 40s最近一次收到邻居 Hello 包过去了 5 秒40-535倒计时归零没收到 Hello 报文设备判定邻居故障、清空对应 OSPF 路由。Retrans timer interval: 5LSA 重传计时器 5 秒OSPF 可靠传输机制LSU、DD 报文发出后 5 秒没收到 ACK 确认会自动重传该报文Neighbor is up for 00:00:05这条 OSPF 邻居成功建立、维持在线时长刚好 5 秒钟邻居刚完成建邻不久。Authentication Sequence: [ 0 ]OSPF 报文认证序列号为 0代表该网段 OSPF 没有部署报文加密 / 明文认证。OSPF的LSDB表TypeLSA 类型LinkState ID链路状态 IDAdvRouterAdvertising Router通告路由器 RID发送LSA的路由器Age老化时间单位秒LSA 生成后经过的时长LenLSA 报文字节长度单条 LSA 的数据包大小SequenceLSA 序列号用来区分 LSA 新旧数值越大代表 LSA 版本越新、优先级越高起始基准值固定为0x80000001Metric开销Cost)LSA对照表LSA 类型名称生成设备泛洪范围核心作用Type 1路由器 LSARouter LSA区域内每一台 OSPF 路由器仅产生的本地 Area描述路由器直连链路、链路类型、开销Type 2网络 LSANetwork LSA广播 / NBMA 网段的 DR仅产生的本地 Area描述广播网段掩码、本网段所有路由器 RIDType 3网络汇总 LSANetwork Summary LSAABR 区域边界路由器除产生区域外的全部区域将区域内路由传递到其他 OSPF 区域Type 4ASBR 汇总 LSAASBR Summary LSAABR 区域边界路由器除 ASBR 所在区域外的全部区域告知其他区域 ASBR 的 Router ID 位置Type 5AS 外部 LSAAS External LSAASBR引入外部路由的设备整个 OSPF 自治域Stub/NSSA 除外发布引入的外部路由静态 / 其他协议Type 6MOSPF 组播 LSA组播 OSPF 设备-组播 OSPF 专用单播 OSPF 不使用Type 7NSSA 外部 LSANSSA External LSANSSA 区域内的 ASBR仅本地 NSSA 区域NSSA 区域外部路由出 NSSA 时自动转为 Type5OSPF路由表Destination路由目的网段 / 主机前缀Cost路径开销度量值数值越小路径越优Type路由的链路类型stub末梢网段主机 Loopback 网段、Transit传输网段可承载 OSPF 邻居建邻的广播互联网段NextHop数据包转发的下一跳 IP 地址AdvRouter发布这条路由的始发路由器 Router IDArea路由所属的 OSPF 区域编号10.2 OSPF协议工作原理OSPF7种状态Down初始状态还没收到任何 Hello 包本端开始从所有 OSPF 接口周期性发送 Hello 包默认 10 秒一次Init收到了对方的 Hello 包但对方的 Hello 里还没有自己的 Router ID说明对方还没发现自己是单向可达2-Way收到的 Hello 包中看到了自己的 Router ID确认双向可达邻居关系正式建立广播网络中在此阶段选举 DR 和 BDR2-Way 之后是否继续进入下一阶段取决于网络类型和角色ExStart双方协商主从关系Master/SlaveRouter ID 大的为主确定 DBD 报文的初始序列号准备开始交换数据库摘要Exchange互相发送 DD 报文里面只包含 LSA 的摘要标题 序列号不携带完整数据相当于互相交换 图书目录对比各自有哪些 LSALoading对比完目录后对自己缺失或更新的 LSA发送 LSR 报文 请求详情对方回复 LSU 报文携带完整的 LSA 数据收到 LSU 后回复 LSAck 确认一边请求一边接收逐步补全 LSDBFull 状态双方的 LSDB 完全同步一致邻居关系达到最终稳定状态之后进入正常维护Hello 保活、LSA 周期性刷新默认 30 分钟当两端LSDB完全一致时邻居状态变为Full表示成功建立邻接关系OSPF网络类型P2P点到点P2P指的是在一段链路上只能连接两台网络设备的环境。典型的例子是PPP链路。当接口采用PPP封装时OSPF在该接口上采用的缺省网络类型为P2P 。不存在 DR/BDR 选举两台路由器直接互相建立 Full 邻接使用组播 224.0.0.5 交互报文无需静态配置邻居不会产生 Type2 二类 LSA仅依靠 Type1 一类 LSA 描述链路路由的网段掩码会以主机路由 / 32 的形式发布华为设备默认行为。BMA广播式多路访问BMA也被称为Broadcast指的是一个允许多台设备接入的、支持广播的环境。典型的例子是Ethernet以太网。当接口采用Ethernet封装时OSPF在该接口上采用的缺省网络类型为BMA。进行 DR、BDR 选举网段内所有路由器仅和 DR、BDR 建立 Full 邻接降低 LSA 泛洪压力DR 负责向 224.0.0.6 接收 LSA、再向全网 224.0.0.5 扩散拓扑依靠 OSPF 组播地址224.0.0.5所有 OSPF 路由器、224.0.0.6DR/BDR收发 Hello、LSA 报文无需手动敲命令指定邻居会生成Type-2 Network 二类 LSANBMA非广播式多路访问NBMA指的是一个允许多台网络设备接入且不支持广播的环境。典型的例子是帧中继Frame-Relay网络。需要 DR/BDR 选举多路访问结构和广播网络一致不能靠组播自动探测邻居必须静态手动指定对端邻居 IPospf peer x.x.x.xHello 默认 30s、Dead120s若 PVC 链路部分连通性缺失极易出现 DR 选举异常、邻居卡在异常状态帧中继 Hub-Spoke 星型拓扑不推荐原生 NBMA 类型易造成分支路由器无法参与 DR 选举。P2MP点到多点P2MP相当于将多条P2P链路的一端进行捆绑得到的网络。没有一种链路层协议会被缺省的认为是P2MP网络类型。该类型必须由其他网络类型手动更改。常用做法是将非全连通的NBMA改为点到多点的网络。无 DR、BDR 选举中心节点和每一个分支分别建立独立邻接主流部署方式为静态指定邻居部分厂商支持开启组播邻居探测不会生成 Type2 二类 LSA自动为分支侧末梢链路生成主机路由容错性更强单条分支 PVC 故障不会干扰其余分支的 OSPF 邻居关系。DR与BDR角色全称邻接建立规则DR指定路由器和网段内 BDR、所有 DRother 建立 Full 邻接BDR备用指定路由器和网段内 DR、所有 DRother 建立 Full 邻接实时监测 DR 运行状态DRother非 DR/BDR 路由器DRother 互相只能停留在2-way邻居状态不建立 Full 邻接仅分别和 DR、BDR 完成邻接同步BDR具有容灾作用DR 故障离线时BDR 会立刻升级成为新 DR此前 BDR 已经和全网设备建好邻接、同步完链路数据库无需重新协商邻接路由收敛耗时很短DR 顶替完成后网段会重新发起一次选举补选出全新的 BDR补齐备用冗余补选阶段网络路由转发不会中断。DR/BDR 选举判定标准第一依据接口 OSPF 优先级取值范围 0~255数值越大竞选优先级越高接口优先级 0设备直接丧失 DR、BDR 参选资格永久只能作为 DRother平局破局优先级完全相同时对比设备Router IDRouter ID 十进制数值更大的设备胜出。投票载体网段内路由器通过 Hello 报文向邻居宣告自己认可的 DR、BDR 结果完成投票。DR/BDR无抢占性网段完成 DR/BDR 选举定型后后续即便修改某台设备接口 OSPF 优先级、接入一台优先级更高的新路由器现存 DR、BDR 身份不会被强行顶替改写触发重新选举的唯一常规场景原有 DR或 BDR离线故障若想手动强制重选需要执行reset ospf process重启 OSPF 进程、断开网段内 OSPF 邻居关系来触发新一轮竞选。OSPF域所有运行OSPF协议并共享相同路由信息的一组路由器所构成的网络范围单区域存在的问题LSDB越来越庞大同时导致OSPF路由表规模增加。路由器资源消耗多设备性能下降影响数据转发。基于庞大的LSDB进行路由计算变得困难。当网络拓扑变更时LSA全域泛洪和全网SPF重计算带来巨大负担。OSPF多区域支撑大规模组网单区域 OSPF 路由器数量上涨后LSA 条目、路由计算开销会急剧升高拆分多个区域可扩展网络可承载的设备规模限制 LSA 泛洪范围、隔离拓扑震荡某区域内链路故障、网段增减产生的 LSA默认不会扩散至其余区域拓扑变动带来的计算压力被约束在本区域降低全网设备 CPU 损耗支持区域间路由汇总在 ABR区域边界路由器做网段汇总向其他区域发布聚合路由减少全网路由表条目数量优化查表性能。区域类型划分区域类别具体对象定位说明骨干区域Area 0区域号固定为 0OSPF 网络的核心中转区域承担各个普通非骨干区域之间的路由转发非骨干区域Area 1、Area 2 等区域 ID≠0 的区域业务接入区域不能彼此直连互通硬性互联拓扑规范约束规则非骨干区域禁止直接互相对接每一个非骨干区域必须直接和骨干 Area0 完成物理 / 逻辑连接违规后果Area1 直连 Area2、不经过 Area0 转发路由时极易产生区域间路由环路引发报文循环转发、网络断流OSPF路由器类型IR区域内路由器该类路由器的所有接口都属于同一个OSPF区域。ABR区域边界路由器该类路由器的接口同时属于两个以上的区域但至少有一个接口属于骨干区域。BR骨干路由器该类路由器至少有一个接口属于骨干区域。ASBR自治系统边界路由器该类路由器与其他AS交换路由信息