对于OSPF的新手问题抱歉。 我正在学习协议,有一些非常基本的东西,我不明白。 在OSPF中,路由基于路由器ID(通常是其IP地址之一)。 然而,实际上我们感兴趣的是路由器直接连接到的所有networking的前缀(如果我没有错误,那么这是RIP路由表的关键 – 而且它确实是有道理的)。 所以我完全困惑如何给目标数据包IP推导出目的地路由器(甚至在计算最短path之前)而不知道表中所有路由器所连接的所有networking的networking前缀?
此链接非常有帮助: – https://supportforums.cisco.com/document/133976/reading-and-understanding-ospf-database
而不知道表中所有路由器所连接的所有networking的networking前缀?
是什么让你觉得,没有一个所有的networking表? OSPF是链路状态路由协议。 所以它必须知道。 (至less对于一个区域内的networking来说,在不同区域之间有不同的路由。)
顺便说一下,通常(我确信基于Linux / Unix的实现方式是这样的,但是可能有一些其他的专有方式来实现它),当数据包被路由时不计算最短path,而是拓扑更改并传播到路由表。
从这个angular度来看,RIP和OSPF之间的区别在于,RIP将整个路由表定期发送给所有的邻居(当它们很大时,这是相当浪费的)。 OSPF只传递拓扑变化 。
有一个很好的描述 OSPF数据包的内容。
LSA是一个描述networking的数据结构 – 它在数据包types2和4(DBD和LSU)中传输。 数据包types3(LSR)用于从路由器请求LSU。
这包含足够的信息来重build整个networking的拓扑结构。