OSPF 简介
OSPF(Open Shortest Path First, 开放最短路径优先),是运用较为广泛的动态路由协议。
- 是一种链路状态路由协议,无路由循环(全局拓扑),标准 RFC2328。
- “开放”意味着非私有的。
- 管理性距离:110。
- OSPF 采用 SPF 算法计算达到目的地的最短路径:
- 链路(Link):路由器接口。
- 状态(State):描述接口以及其邻居路由器之间的联系。
技术要点
OSPF Metric
- 每个路由器都把自己当作根,并且给予累积成本(Cost 值)来计算到达目的地的最短路径。
- Cost = 参考带宽(10^8) / 接口带宽(b/s)
OSPF 报文类型
- Hello 建立和维护 OSPF 邻居关系。
- DBD 链路状态数据库描述信息(描述 LSDB 中 LSA 头部信息)。
- LSR 链路状态请求,向 OSPF 邻居请求链路状态信息。
- LSU 链路状态更新(包含一条或多条 LSA)。
- LSAck 对 LSU 中的 LSA 进行确认。
OSPF 区域
- 在区域边界可以做路由汇总,减少了路由表。
- 减少了 LSA 泛洪的范围,有效地把拓扑变化控制在区域内,提高了网络的稳定性。
- 拓扑的变化影响可以只限制涉及本区域。
- 多区域提高了网络的扩展性,有利于组建大规模的网络。
OSPF 的三张表
邻居表(neighbor table)
OSPF 用邻居机制来发现和维持路由的存在,邻居表存储了双向通信的邻居关系 OSPF 路由器列表的信息。
拓扑表(topology table)
OSPF 用 LSA(Link State Advertisement 链路状态通告)来描述网络拓扑信息,然后 OSPF 路由器用拓扑数据库来存储网络的这些 LSA。
OSPF 路由表(routing table)
对链路状态数据库进行 SPF(Dijkstra)计算,而得出的 OSPF 路由表。
OSPF 的运作
OSPF 的运行基本步骤
按顺序由上到下:
- 建立邻接关系(Establish router adjacencies)
- 必要的时候进行 DR 的选举(Elect the DR / BDR)
- 发现路由(Discover routes)
- 选择合适的路由器(Select appropriate routes)
- 维护路由信息(Maintain routing information)
建立邻接关系 —— Hello 包
- Hello 包用来发现 OSPF 邻居并建立相邻关系,通过组播地址 224.0.0.5 发送给 ALL SPF Routers。
- 通告两台路由器建立相邻关系所必需统一的参数。
- 在以太网和帧中继网络等多路访问网络中选举指定路由器(DR)和备用指定路由器(BDR)。
OSPF 网络类型
- BMA 广播型多路访问
- Point-to-Point 点对点
- NBMA 非广播型多路访问
LSA 的泛洪
必要时选举 DR 及 BDR。
DR、BDR 的介绍和运作
- 为减少多路访问网络中的 OSPF 流量,OSPF 会选举一个指定路由器(DR)和一个备用指定路由器(BDR)。
- 选举规则:最高接口优先级被选作 DR,如果优先级相等(默认为 1),具有最高的路由器 ID(Router-ID)的路由器被选举成 DR,并且 DR 具有非抢占性。
- 指定路由器(DR):DR 负责使用该变化信息更新其它所有 OSPF 路由器(DRother)。
- 备用指定路由器(BDR):BDR 会监控 DR 的状态,并在当前 DR 发生故障时接替其角色。
RouterID
用于标识 OSPF 路由器的 ID,全网唯一性。可手动配置,也可动态选举(有 Loopback 接口时,选择最高的 Loopback IP 地址。否则,选择最高活跃物理接口的 IP 地址)。
LSA 的泛洪
- 路由器用 224.0.0.6 通知 DR 和 BDR 路由器。
- DR、BDR 监听 224.0.0.6 这一组播地址。
- 路由器收到包含变化后的 LSA 和 LSU 后,更新自己的链路状态数据库,过一段时间(SPF 延迟),对更新的链路状态数据库执行 SPF 算法,必要时更新路由表。
OSPF 的配置
Cisco 思科设备
基本配置
- 开启 OSPF 进程
1 | Router(config)# router ospf <process-id> |
- 宣告特定的网络到 OSPF 区域
1 | Router(config-router)# network <address> <wildcard-mask> area <area-id> |
Huawei 华为设备
待补充。
其它要点
通配符掩码
通配符是一个用于决定哪些 IP 地址位该精确匹配(0 代表精确匹配)哪些地址位被忽略的 32 位数值,通常用于处理访问控制列表(ACL)、OSPF 和 EIGRP 等路由协议的网络通告。
- 掩码:1 位表示网络位,0 位表示主机位。掩码用于区分 IP 地址中的网络及主机部分。
- 通配符:1 位表示无所谓,0 位表示需严格匹配。通配符用于决定一个 IP 中的哪些位该匹配。