内部路由协议与共同拓扑

开放最短路径优先协议(Open Shortest Path First,OSPF)是一种内部网关协议,用于自治系统内部的动态路由。它不是最短路径算法的泛称,也不是用于互联网自治系统之间交换策略路由的协议。OSPF把路由器及网络之间的连接描述为链路状态信息,让各路由器依据获得的拓扑独立计算可达路径。

在同一区域内,链路状态数据库应在同步后反映一致的区域拓扑;但每台路由器以自己为根计算最短路径树,因此得到的下一跳可以不同。链路状态通告(LSA)是描述拓扑或可达信息的数据单元,数据库负责保存状态,SPF计算则把这些信息转化为路径。三者分别承担表达、保存与计算的作用。

参考:[1]

邻居发现、邻接与数据库同步

路由器通过Hello报文发现邻居并确认双向通信。邻居关系不等于已经完成数据库同步的邻接关系,也不是所有同链路邻居都必须建立完全邻接。例如广播网络采用指定路由器及备份指定路由器,组织所需的邻接与通告传播,避免要求所有路由器彼此建立同样的同步关系。

建立邻接时,双方用数据库描述报文交换状态摘要,再请求缺失或较新的LSA;所需状态取得后,数据库达到同步。后续拓扑改变则通过LSA的洪泛传播,在相应作用范围内更新数据库。指定路由器帮助组织共享网络上的协议交换,并不替其他所有路由器统一计算或决定转发路径。

参考:[1]

最短指的是协议代价

SPF计算使用链路代价。在同一区域的简化例子中,A直达C的代价为20,而A经B到C的两段代价各为5,后者总和为10,因而优于直达路径。这说明最短路径未必经过最少跳数,也不必与地理距离最短相同;等代价路径还可以形成多个可用下一跳。

代价是协议使用的度量,而不是自动测得的端到端时延保证。链路排队、负载或应用处理时间即使改变,也未必立即对应代价变化。路由器需先获知有关状态并重新计算,不能把OSPF理解为每个数据包都实时探测全网、永远选出实际最快路线的系统。上述代价相加例仅说明区域内路径,不把不同类型外部路由的比较规则混为一谈。

参考:[1]

区域与区域边界路由器

OSPF可把网络分成区域,每个区域维护自己的链路状态数据库。连接多个区域的区域边界路由器(ABR)为所连接区域分别维护状态,向其他区域传递必要的可达与代价信息,而不是把所有区域的完整内部拓扑无差别复制出去。

骨干区域为Area 0,承担非骨干区域之间的路由信息分发。区域结构缩小了需要共同掌握详细拓扑的范围,同时为跨区域选路引入层次。因此,“所有OSPF路由器拥有同一份数据库”是不准确的,必须说明区域边界及所比较的状态范围。

参考:[1]

从IPv4到IPv6与地址族扩展

1998年的RFC 2328规定OSPFv2;2008年的RFC 5340规定面向IPv6的OSPFv3,保留区域、洪泛和SPF等基本机制,同时改为按链路而非IPv4子网处理协议,并把地址信息从核心拓扑表示中分离。

也不能据此断言OSPFv3永远只能承载IPv6路由。2010年的RFC 5838进一步规定其地址族支持,使不同实例可承担相应地址族的路由信息,各自维护邻接、数据库和计算状态。具体部署需核对设备实现及相关规范更新,不能只凭版本号推断全部功能。

参考:[2] [3]