一、路由相关基础知识
1.自治系统
在网络通信中,一个自治系统是指由若干个二层网络及若干台路由器组成的集合,集合中的这些网络及路由器均属于同一个管理机构。
例如下图包括 自治系统x、自治系统y、自治系统z。
2.路由协议的分类
路由协议分为两大类,一类称为IGP(内部网关协议),运行在一个自治系统内;另一类称为EGP(外部网关协议),运行在不同自治系统。IGP的成员有RIP协议、OSPF协议、IS-IS协议等,EGP虽然也有若干个成员协议,但目前在实际的网络中得到应用的协议只有一个,那就是BGP协议。
二、OSPF的相关知识
1.OSPF协议的基本原理
借用我学习中的例子,假设一个方形教室内坐满25名新同学,他们都只知道自己前、后、左、右的邻居的姓名(中间的有4名邻居,四角的有2名邻居),这时每个同学的记忆库内只有邻居的姓名。游戏开始后,每个同学都尽快一次性地大声地对全班同学说出自己所有邻居的姓名(假设教室里的声音无论有多么嘈杂,同学们都能听见、能分辨、能记住这些声音的内容)。显然,当最后一个同学说完之后,每个同学的记忆库中便有了全班所有同学的姓名。
这个例子就简单的介绍了OSPF的原理,OSPF协议在运行是通过一种“宣告”的方式收集自治系统内的全部路由信息。路由收敛后OSPF较为安静,后续传递信息少。同时OSPF协议是一种无类路由协议。
2.OSPF协议的开销
路由的开销简单的理解就是走某一路由所消耗的资源多少,例如:在RIP协议中,只以跳数作为开销的唯一标准。
理论中OSPF协议可以将任何参数设定为开销的定义,但是日常使用中多为链路带宽。
3.OSPF网络区域化结构
a.区域划分
在一个自治系统内的一个OSPF网络中可以划分成多个区域,单个区域的OSPF网络称为单区域OSPF网络,多个区域的OSPF网络称为多区域OSPF网络;每个区域有自己的Area-ID编号,Area-ID为0的成为骨干区域,Area-ID不为0的称为非骨干区域。单区域网络中只有一个骨干区域,多区域网络中有一个骨干网络和多个非骨干区域。
如图:包含4个区域的多区域网络。骨干区域Area 0 ,非骨干区域Area 1、Area 2、Area 。
b.路由器划分
路由器在OSPF中的划分是针对每一个接口的。
路由器的全部接口都位于一个区域的路由器叫内部路由器;
路由器部分接口连接骨干区域的路由器叫骨干路由器;
路由器的部分接口属于Area 0,部分属于其他区域的叫做ABR路由器;
路由器与本OSPF网络相连,同时能将外部的路由信息传回本OSPF的路由器叫ASBR路由器。
如3.a:R11、R12是Area 1的内部路由器;R9、R10、R1称为骨干路由器;R9、R10、R1也称为ABR路由器;R11、R8称为ASBR路由器。
4.链路状态与LSA
OSPF协议是一种基于链路状态(Link-State)运行的路由协议,在OSPF中的Link相当于Interface,链路状态就是接口状态。
LSA是链路状态通告的简称,LSA是链路信息的载体。每台路由器将自己的接口状态共享给其他路由器,每台路由器根据自己的接口状态以及接受的LSA计算出去每台路由器的路由。
LSA分为Type-1 LSA,由全体路由器产生,描述每个路由器的接口信息、开销等;
Type-2 LSA,由DR路由器产生,描述二层网络的掩码及二层内有多少路由器;
Type-3 LSA,由ABR路由器产生,描述不同Area之间的路由;
Type-4 LSA,由ASBR所在Area 的ABR产生,描述去往ASBR的信息;
Type-5 LSA,由ASBR路由器产生,描述去往其他自治系统的信息。
5.OSPF报文的类型
OSPF报文是封装在IP报文内的,IP报文中的协议字段值必须为89。
OSPF报文本身有5种类型,分别是Hello报文、DD报文、LSR报文、LSU报文、LSAck报文。
LSA报文是包含在LSU报文内的。
6.单区域OSPF网络
如下图一个单区域OSPF网络,整个网络只有Area 0,该Area 0也就是整个自治系统。在这个OSPF网络中,没有ABR,假设也没有ASBR。我们将以这个网络为例子来简要地描述一下单区域OSPF网络的工作过程。
a.链路状态数据库
每台路由器都会产生Type-1 LSA,并向整个Area 0泛洪。另外,具有DR角色的路由器还会产生Type-2 LSA,并向整个Area 0泛洪。
每台路由器将所有接收到的LSA以及自己产生的LSA集中在一起,便得到了一个数据库,我们把这样的数据库称为 LSDB(链路状态数据库)。
一个LSDB其实就是若干条LSA的集合。因为LSA是以泛洪方式在Area 0中进行通告的,所以Area 0中的每台路由器都能够接收到所有其他路由器产生的LSA。不同路由器上的LSDB的内容其实是完全一样的。LSDB完完全全地表征了Area 0中的各种信息,包括Area 0中共有多少台路由器,每台路由器有多少个接口,各个接口的类型和开销,路由器之间是怎样连接的,如此等等。也就是说,LSDB相当于是一张关于Area 0的详细地图。
b.最短路径树图
每台路由器上的LSDB的内容都是完全一样,每台路由器便可以从中找到从自己的位置去往地图中各个目的地的路线。
由于环路的存在,路由器是可以通过不同的路径(路线)从自己的位置去往同一个目的地的。在这种情况下,路由器必需根据路径开销的情况从不同的路径中选择出最优(即开销最小)的路径,这个过程也就是最短路径树(Shortest Path Tree,SPT)的生成过程。
每台路由器都会将SPF算法(Shortest Path First Algorithm)作用于自己“脑海”中的地图,从而生成一棵属于自己的SPT。SPT具有无环结构,其树根就是生成这棵STP的路由器,并且,从树根出发沿树干的指引去往某个目的地时,所经过的路径一定就是最优路径。
c.OSPF路由表
OSPF路由器在生成了自己的SPT后,便可以很容易地根据自己的SPT计算出从自己的位置去往各个目的地的路由。这些路由信息的集合,便是所谓的OSPF路由表。
7.多区域OSPF网络
对于多区域的OSPF网络来说,在每个Area内执行单区域OSPF的运行规则,
根据自己的LSDB中的Type-3 LSA,路由器可以使用DV算法计算出自己去往其他Area中各个目的地的路由;
根据自己的LSDB中的Type-4 LSA和Type-5 LSA,路由器可以使用DV算法计算出自己去往本OSPF网络(本自治系统)之外的目的地的路由。
8.邻居关系与邻接关系
在OSPF协议中,如果路由器A的某个接口和路由器B的某个接口位于同一个二层网络中,则我们就说A和B存在“相邻”关系,但“相邻”关系并不等于“邻居(Neighbor)”关系,更不等于“邻接(Adjacency)”关系。
在OSPF协议中,每台路由器都会通过它的每个接口(接口必需使用OSPF功能)以HelloInterval为周期向外发送Hello报文。如果两台相邻路由器彼此发送给对方的 Hello 报文的内容完全一致,那么这两台相邻路由器就会成为彼此的邻居路由器;否则,这两台相邻路由器就不能成为彼此的邻居路由器。
两个相邻路由器之间存在相邻关系,但并不一定存在邻居关系;只有彼此发送给对方的 Hello 报文的内容完全一致,它们之间才存在邻居关系。
如果两台邻居路由器之间的二层网络类型是P2P网络或P2MP网络,则这两台邻居路由器一定会进入彼此之间的 LSDB 同步过程。当这两台邻居路由器成功地完成了LSDB 同步之后,它们之间便建立起了邻接关系,也就是说,彼此成为了对方的邻接路由器。LSDB同步过程的目的是要保证参与LSDB同步过程的两台邻居路由器最终能够拥有内容完全一致的LSDB。LSDB同步的过程是通过交互OSPF DD报文、OSPF LSR报文、OSPF LSU报文来实现的。
如果两台邻居路由器之间的二层网络类型是Broadcast网络或NBMA网络,并且其中一台路由器是这个二层网络的DR或BDR,那么这两台邻居路由器一定会进入彼此之间的LSDB同步过程。当这两台邻居路由器成功地完成了LSDB同步之后,它们之间便建立起了邻接关系。如果这两台邻居路由器都不是这个二层网络的DR或BDR,那么,这两台邻居路由器就不会进入彼此之间的LSDB同步过程,也就是说,彼此之间是不可能建立起邻接关系的。
9.DR与BDR
在P2P网络或P2MP网络中,完全不存在DR与BDR的概念。DR与BDR的概念只适用于Broadcast网络或NBMA网络。在Broadcast网络或NBMA网络中,DR及BDR是通过选举(Election)而产生的。选举DR及BDR有两个目的,一个目的是让DR来产生针对这个 Broadcast 网络或 NBMA 网络的 Type-2 LSA,另一个目的是减少这个Broadcast网络或NBMA网络中邻接关系的数量。另外,BDR的作用是:当DR出现故障时,BDR能够迅速替代DR的角色。在一个Broadcast网络或NBMA网络中,DR会与所有其他的路由器(包括BDR)建立邻接关系,BDR也会与所有其他的路由器(包括DR)建立邻接关系,除此之外,不能再有其他的邻接关系。