以下是一些在学习矢量路由协议与链路状态协议中遇到的一些问题,整理后写出来(只包括简单的概念,深度的解析会在之后的博客中记录)
1、怎样才能说网络已经完成收敛?
在一个网络中,当所有的路由器都学到了通向每个子网的路由信息时,就可以说路由已经完成收敛。
2、什么是分布式路由计算?
在 RIP 中,一台路由器收到邻居发来的路由通告后,自己通过计算后加入路由表才会再通告给自己的邻居。就这样,在整个网络中,多台路由器都会参与路由的计算,这就是分布式恩等路由计算。( RIP 中,这样的算法显然有很大的弊端:只要有一台计算机计算有误,后来接受此路由的路由器都会承担它的错误)
3、运行距离矢量路由协议的网络会有很多问题(路由环路、收敛缓慢、更新消息易被破坏),产生这些问题主要是由于这种协议的哪些共性?
- 路由传播途中的每一台路由器都会参与计算(分布式计算的缺点)
- 只有完成本机的路由计算后,路由器才会向自己的邻居通告相关的路由(如果网络环境很复杂,那等待这个网络完成收敛将会特别漫长)
- 若目的网络为非本机直连,则路由器所知道的与此网络相对应的路由信息都是由跟自己直连的邻居路由器通告(也就是说,路由器完全信任自己邻居通告的路由消息,这对路由的精确性会有很大影响,并且出错对整个网路的影响也是巨大的)
4、链路状态路由协议的基本概念有哪些?
- 邻居关系的建立————两台运行链路状态路由协议的路由器彼此发现、相互协商、交换路由信息的过程。
- 路由信息的泛洪————如何通过可靠的方式,把路由信息转发给网络内所有路由器的过程。
- 链路状态数据库————如何存储并保证路由信息准确无误的过程。
- SPF计算————路由器如何利用存储在链路状态数据库内的信息,执行路由计算的过程。
5、Hello消息有什么作用?
Hello消息中应当包含路由器的 Router-ID 、计时器的设置信息、路由器的接口参数信息、认证信息等,这些信息保证路由器之间在建立邻接关系之前,就已经实现了以下目的。
- 交换路由信息并且维护邻接关系
- 可靠的交换路由信息
- 保证邻居路由器之间相互信任
6、路由器如何利用Hello消息发现只与本机直连的路由器的?
设定规则,让生成 Hello 消息报文的路由器将包含 Hello 小心的 IP 包头的 TTL 字段设置为 1 ,也就是只让 Hello 消息传送一跳,这样也就只能发送到自己的直连路由器了,是没机会发送到更远的地方去的。
7、什么是握手(handshaking)机制?对于链路状态路由协议而言,握手机制有什么作用?
下图表示了握手机制:
作用:验证接入同意链路的邻居路由器的双向连通性。
8、链路状态协议在确保泛洪信息的可靠性方面有什么样的机制?
- 老化机制(及时泛洪):
路由器会根据收到的路由宣告消息并存放进本机的数据库的时间调整其寿命字段,当寿命达到设定的上限或下限( OSPF 中为上限,IS-IS 中为下限),就会视这条消息为无效。这种机制避免了当网络中某个路由器故障时,非直连路由器的数据库中关于故障路由器的信息不会消失的问题。- ***机制(有序泛洪):
如果网络情况比较复杂,链路冗余度很高,那么一台路由器就会收到关于同一个网络的不同的很多路由更新。单凭寿命字段,只能选定除寿命字段外的其他信息完全相同的路由信息的新旧;但是倘若拓扑变更加上链路拥塞等原因,使得拓扑变更后的更新消息的寿命旧于更新前的更新消息的寿命,那这时候单凭寿命字段就会造成 “新旧” 判断失误。所以引入的***机制,在更新消息发送的时候就会有一个***,收到更新消息后再判断***的新旧就不会出错了。
(关于***还有很多复杂的情况,比如由于***有上限,到了上限会重新计数,那如果在一种比较极端的情况下:路由器收到了两条相同的路由,它如何判断***是重新计数后的一轮呢?也就是会出现诸如 “ 1 ” 新于 “ 100 ” 的情况。这种复杂的情况此文章不赘述,只讲解大致理论)- 校验和机制(可靠泛洪):
在泛洪过程中,路由器之间相互传递路由宣告消息时,除了寿命字段,其余所有字段都会涵盖在校验和计算当中,保证了传输数据的完整性,这样才能确保区域内的路由器的链路状态数据库是完全一致的。
9、什么是区域?
由于链路状态数据库包含整个网络中所有路由器生成的路由宣告消息,而每一台路由器都要基于这个数据库进行 SPF 的计算。所以当网络环境复杂时,这样的计算会极大增加路由器的负荷。而且,由于网络维护的是同样的数据库,当网络中存在一台性能差的路由器时,会使得高性能的路由器也发挥不了作用(类似于水桶效应)。
此时就引入的区域的概念:
- 隶属于同一区域的所有路由器必须维护相同的链路状态数据库,不要求整个路由进程内所有的路由器都进行这件事。
- 将某几种路由宣告消息的泛洪范围限制在区域之内。
区域边界路由器会充当一个连接不同区域、交互他们之间信息的一个角色。