抱歉,关于 OSPF 的新手问题。我正在学习该协议,有一些非常基本的东西我不明白。在 OSPF 中,路由基于路由器 ID - 通常是它的 IP 地址之一。然而,我们真正感兴趣的是路由器直接连接的所有网络的前缀(如果我没有记错的话,这是 RIP 路由表的关键 - 而且它确实有意义)。所以我完全搞不懂,在不知道表中所有路由器所连接的所有网络的网络前缀的情况下,我们如何根据目标数据包 IP 推断出目标路由器(甚至在计算到它的最短路径之前)?
此链接非常有用:- https://supportforums.cisco.com/document/133976/reading-and-understanding-ospf-database
答案1
不知道表中所有路由器所连接的所有网络的网络前缀?
是什么让你认为,没有一个包含所有网络的表格?OSPF 是链路状态路由协议。所以它必须知道。(至少对于区域内的网络而言。跨区域的路由存在差异。)
顺便说一句,通常(我确信这对于基于 Linux/Unix 的实现是正确的,但可能存在一些其他专有方法来实现它)最短路径不是在数据包被路由时计算的,而是在拓扑改变并传播到路由表时计算的。
从这个角度来看,RIP 和 OSPF 之间的区别在于,RIP 会定期向所有邻居发送整个路由表(当路由表很大时,就会造成很大的浪费)。OSPF 仅传达拓扑变化。
有一个相当不错的描述OSPF 数据包内容。
LSA 是一种描述网络的数据结构 - 它以数据包类型 2 和 4(DBD 和 LSU)的形式传输。数据包类型 3(LSR)用于从路由器请求 LSU。
- LSA 类型 1 包含有关路由器本身及其邻居的信息。
- LSA 类型 2 包含有关连接到路由器的网络的信息。
其中包含足够的信息来重建整个网络的拓扑结构。