0x00 汇总

汇总链接 等这个整理完ia写完再好好写OSPF吧,有些东西ia讲细了其实也没什么用。


0x01 开放式最短路径优先(OSPF)

  • OSPF是一种基于链路状态的路由协议,它从设计上就保证了无路由环路。
  • OSPF支持区域的划分,区域内部的路由器使用SPF最短路径算法保证了区域内部的无环路。OSPF还利用区域间的连接规则保证了区域之间无路由环路。
  • OSPF支持触发更新,能够快速检测并通告自治系统内的拓扑变化。
  • OSPF可以解决网络扩容带来的问题。当网络上路由器越来越多,路由信息流量急剧增长的时候,OSPF可以将每个自治系统划分为多个区域,并限制每个区域的范围。OSPF这种分区域的特点,使得OSPF特别适用于大中型网络
  • OSPF可以提供认证功能。OSPF路由器之间的报文可以配置成必须经过认证才能进行交换。
OSPF的三张表

多实例ospf路由环路 ospf 环路_OSPF


OSPF要求每台运行OSPF的路由器都了解整个网络的链路状态信息,这样才能计算出到达目的地的最优路径。

  • 邻接表:在收敛之前OSPF需要进行邻接关系的判定。当建立了邻接关系后才会开始交换路由信息
  • 拓扑表:OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始,LSA中包含了路由器已知的接口IP地址、掩码、开销和网络类型等信息。收到LSA的路由器都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Database),并在LSDB的基础上使用SPF算法进行运算,建立起到达每个网络的最短路径树。
  • 路由表: 最后,通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。
OSPF报文

OSPF直接运行在IP协议之上,使用IP协议号89。

OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。

  • Hello报文:最常用的一种报文,用于发现、维护邻居关系。并在广播和NBMA(None-Broadcast
    Multi-Access)类型的网络中选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup
    Designated Router)。
  • DD报文:两台路由器进行LSDB数据库同步时,用DD报文来描述自己的LSDB。DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,所以,这样就可以减少路由器之间的协议报文流量。
  • LSR报文:两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
  • LSU报文:用来向对端路由器发送所需要的LSA。
  • LSACK报文:用来对接收到的LSU报文进行确认。
邻居状态机

多实例ospf路由环路 ospf 环路_链路_02


邻居和邻接关系建立的过程如下:

  • Down:这是邻居的初始状态,表示没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
  • Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
  • Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
  • 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
  • ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
  • Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
  • Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
  • Full:路由器的LSDB已经同步。
Router ID、邻居和邻接

多实例ospf路由环路 ospf 环路_邻接关系_03


Router ID是一个32位的值,它唯一标识了一个自治系统内的路由器,管理员可以为每台运行OSPF的路由器手动配置一个Router ID。如果未手动指定,设备会按照以下规则自动选举Router ID:

  • L如果设备存在多个逻辑接口地址,则路由器使用逻辑接口中最大的IP地址作为Router ID;
  • 如果没有配置逻辑接口,则路由器使用物理接口的最大IP地址作为Router ID。

在为一台运行OSPF的路由器配置新的Router ID后,可以在路由器上通过重置OSPF进程来更新Router ID。通常建议手动配置Router ID,以防止Router ID因为接口地址的变化而改变。

运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前路由器之间首先需要建立邻接关系。
邻居(Neighbor)
OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中所定义的一些参数,如果双方的参数一致,就会彼此形成邻居关系,状态到达2-way 即可称为建立了邻居关系。
邻接(Adjacency)
形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,并同步LSDB后,才形成真正意义上的邻接关系。
本例中,RTA通过以太网连接了三个路由器,所以RTA有三个邻居,但不能说RTA有三邻接关系。

OSPF区域

多实例ospf路由环路 ospf 环路_链路_04


OSPF支持将一组网段组合在一起,这样的一个组合称为一个区域。划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量。

区域内的详细拓扑信息不向其他区域发送,区域间传递的是抽象的路由信息,而不是详细的描述拓扑结构的链路状态信息。每个区域都有自己的LSDB,不同区域的LSDB是不同的。路由器会为每一个自己所连接到的区域维护一个单独的LSDB。由于详细链路状态信息不会被发布到区域以外,因此LSDB的规模大大缩小了。

Area 0为骨干区域,为了避免区域间路由环路,非骨干区域之间不允许直接相互发布路由信息。因此,每个区域都必须连接到骨干区域。

运行在区域之间的路由器叫做区域边界路由器ABR(Area Boundary Router),它包含所有相连区域的LSDB。自治系统边界路由器ASBR(Autonomous System Boundary Router)是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通告AS外部路由信息。

在规模较小的企业网络中,可以把所有的路由器划分到同一个区域中,同一个OSPF区域中的路由器中的LSDB是完全一致的。OSPF区域号可以手动配置,为了便于将来的网络扩展,推荐将该区域号设置为0,即骨干区域。