OSPF 基本配置,查看OSPF 的 3 张表,OSPF 5 种报文 ,7种邻居状态,4 种网络类型,4 种特殊区域,7类LSA,4 种 link type,标识一条LSA的 3 个要素,OSPF 邻居与邻接关系,单区域、多区域、OSPF 认证(keychain),DR 的选举,OSPF 被动接口,OSPF 域间聚合,外部聚合,不规则区域的解决办法(虚链接),OSPF 开销值、协议优先级及计时器的修改,OSPF 外部路由引入,下放默认路由,OSPF 协议中 Forwarding Address 的理解
动态路由协议的分类
按工作区域分类
IGP(Interior Gateway Protocols,内部网关协议)有RIP,OSPF,IS-IS,EGP(Exterior Gateway Protocols,外部网关协议)BGP
按工作机制及算法分类
(Distance Vector Routing Protocols,距离矢量路由协议)
运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器。
对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的网段方向在哪里,开销有多大。
Distance Vector Routing Protocols是一种路由选择算法,它基于每个节点(或者路由器)了解到的距离向量来决定最佳路径。每个节点只知道与它相邻的节点的距离,而不知道整个网络的拓扑结构。
以打电话为例,假设你想要打电话给某个朋友,但是你不知道怎么去他家,只知道离你最近的几个朋友的地址。你可以依靠这些朋友告诉你如何到达目的地。每个朋友只知道自己的位置和离目的地的距离,但是通过多次询问,你可以计算出最短路径到达目的地。
在路由器中,路由器之间通过交换距离向量来计算最佳路径。每个路由器只知道它的直接邻居的距离,并将此信息发送给其它路由器。这个过程会一直持续,直到每个路由器都了解到了整个网络的拓扑结构。然后,每个路由器会根据自己的距离向量来选择最佳路径。
然而,距离向量路由协议也存在一些问题,比如计算路径时容易产生环路,导致无法收敛;同时,由于每个路由器只知道与它相邻的节点的距离,因此无法适应网络拓扑结构的变化,容易产生路由环路。因此,现代的路由协议往往采用链路状态路由协议(Link State Routing Protocols)
RIP
(Link-State Routing Protocols,链路状态路由协议)
OSPF,IS-IS
链路状态路由协议 – LSA泛洪
链路状态路由协议通告的的是链路状态而不是路由信息。
运行链路状态路由协议的路由器之间首先会建立邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)。
链路状态路由协议(Link State Routing Protocol)是一种路由协议,其中每个路由器都会记录整个网络的拓扑图,并将其传递给相邻的路由器,从而建立起整个网络的拓扑图,再根据这个拓扑图计算最佳路由。
在链路状态路由协议中,每个路由器都会记录整个网络的拓扑信息,并使用LSA(Link State Advertisement)来向相邻路由器传播自己的拓扑信息。当一个路由器接收到一个LSA时,它会将其存储在自己的数据库中,并向其它相邻路由器转发这个LSA,直到整个网络的每个路由器都收到了这个LSA。
LSA泛洪是指当一个路由器接收到一个LSA时,它会向它的所有邻居转发这个LSA,然后邻居会向它们的邻居转发这个LSA,直到整个网络的每个路由器都收到了这个LSA。这样,每个路由器都可以得到整个网络的拓扑信息,从而进行路由计算。
举个例子,假设有一个由5个路由器组成的网络,其中每个路由器都运行链路状态路由协议。当其中一个路由器的拓扑信息发生变化时(如它的连接断开),它会产生一个LSA,并向它的所有邻居发送这个LSA。每个邻居会向它们的邻居转发这个LSA,直到整个网络的每个路由器都收到了这个LSA。然后每个路由器都会更新它们的数据库,并重新计算最佳路由。
链路状态路由协议 – LSDB维护
链路状态路由协议(Link State Routing Protocol)中,每个路由器通过与邻居路由器交换链路状态信息来了解整个网络的拓扑结构,并根据该信息计算出最短路径树,从而得到路由表。
在这个过程中,每个路由器会维护一个LSDB(Link State Database),用于存储所有已知的链路状态信息。LSDB中包含了网络中所有路由器和链路的信息,这些信息以LSA(Link State Advertisement)的形式存储。
每个路由器定期向网络中广播自己的LSA,以通知其它路由器其链路状态信息的变化。同时,路由器也会接收其它路由器广播的LSA,并将其存储到自己的LSDB中。这样,每个路由器都能够及时了解到整个网络的拓扑结构的变化。
LSDB维护是指每个路由器需要不断地更新自己的LSDB,以保证其中的信息与整个网络的拓扑结构保持一致。如果某个LSA长时间没有更新,就会被认为是过期的,从而被从LSDB中删除。
举个例子,如果一个路由器的某个接口出现故障,它会将这个信息打包成LSA,并向其它路由器发送广播。其它路由器接收到这个LSA后,会将其存储到自己的LSDB中,并据此更新自己的路由表。这样,整个网络的拓扑结构就会发生变化,每个路由器都会更新自己的LSDB和路由表,以适应新的拓扑结构。
先选举BDR ,后有DR
因为 DR 和 BDR 的切换状态机是:当 DR 失效时,BDR 成为 DR
如果先选举DR,再选举BDR ,那么当选举 BDR 的过程中DR 失效,此时网络中既没有 DR 也没有 BDR,切换将无法进行,状态机也就没办法做了。
所以先有 BDR, 后有 DR 是为了保证状态机能正常工作。
当一个路由器加入到一个支持DR/BDR选举的网络中时,它会向邻居路由器发送Hello消息,通过Hello消息交换路由器之间的信息,如OSPF的Hello消息包含路由器ID,路由器优先级等信息。在DR选举过程中,路由器首先会比较自己的路由器ID和邻居路由器的路由器ID,路由器ID较小的优先级较高。如果路由器ID相同,则比较路由器的优先级,优先级越高的路由器越有可能成为DR或BDR。
链路状态路由协议 – SPF计算
SPF(Shortest Path First)是一种算法,用于计算路由器网络中的最短路径。在链路状态路由协议中,每个路由器都会维护一个LSDB(Link State Database)来保存当前网络中的链路状态信息,通过这些信息可以构建网络的拓扑结构,并使用SPF算法计算出到达目的地最短的路径。
打个比方来说,假设你想要从某个城市到另一个城市,但你并不知道具体的路线,只有一张地图。在地图上,每个城市都有一个编号,城市之间的道路都有距离和通行时间。那么你可以根据这张地图构建出这些城市之间的拓扑结构,并使用SPF算法计算出最短的路径。这个路径可能不是直线距离最短的,而是考虑了道路的距离和通行时间,经过了某些城市,绕过了某些障碍。
链路状态路由协议 – 路由表生成
在链路状态路由协议中,路由表生成指的是根据已经计算出来的最短路径树,生成每个路由器的转发表。在这个过程中,每个路由器都将计算出到达所有目的网络的最短路径,并将其存储在自己的路由表中。
举个例子,假设有一个由多个路由器组成的网络,其中每个路由器都运行OSPF协议,并已经通过LSA泛洪交换了网络拓扑信息,建立了拓扑数据库。接下来,每个路由器将执行SPF计算,得出到达每个目的网络的最短路径,并将其存储在自己的路由表中。最终,每个路由器都将拥有一个路由表,其中包含到达所有目的网络的最短路径。这些路由表将用于转发数据包,确保数据包可以按照最短路径到达其目的地。