OSPF依据的根本概念是一种称为链路状态数据库(LSDB)的数据结构。AS中的每台路由器均维护该数据库的一个副本,到一个网络或另一台路由器的每条链路载数据库中都表示为一条记录。
LSDB:可以将LSDB看作一个数据集合,该集合等价于一张表示AS拓扑的表。
OSPF的两种拓扑:基本拓扑、层次拓扑
1.基本拓扑:当只存在少量路由器时,把整个AS作为一个单独的实体来管理。
AS中的所有路由器均作为对等方来工作。每台路由器都与其他所有路由器交流选路信息,每台路由器都维护关键的OSPF数据结构LSDB 的一个副本。
2.层次拓扑:在拥有十几个甚至数百台路由器的规模很大的互联网络中采用基本拓扑将导致性能下降,出现这一原因在于需要传递大量的选路信息,且每台路由器都需要维护一个包含整个AS中所有路由器和网络的很大的LSDB,这时就需要层次拓扑来提供更好的支持。
在层次拓扑中AS被划分为多个称为区域的结构,每个区域都包含许多相邻的路由器和网络。
OSPF层次拓扑中的路由区角色
内部路由器:只与自己区域内的其他路由器或网络相连
区域边界路由器:与多个区域中的路由器或网络相连
主干路由器:OSPF主干组成部分。包括所有的区域边界路由器,也可以是仅与其他主干(或区域边界)路由器相连的路由器,不属于任何区域(除0号区域)
该拓扑把AS分为区域1、区域2。区域0包含包含RB、RC,是区域1、2共同的边界路由器
使用SPF树的OSPF路由确定
SPF树:路由器通过提取LSDB中的信息并将其转为一颗最短路径优先树。并把负责构造这棵树的路由器放在最顶端,所有与此路由器直接相连的路由器或网络都放在树上根的下一级,一次类推。
OSPF路由确定:
以RC构造最短路径优先树
1.第一级
与RC能够直接到达的设备
*RB:开销5
*N2:开销3
*N3:开销6
2.第二级
RB:
*路由器RC,开销5,总开销10(加上第一级开销)
*N2:开销4,总开销9
*N3:开销5,总开销10
N2:
*RA:开销0,总开销3(网络到路由器开销为0)
*RB:开销0,总开销3
*RC:开销0,总开销3
N3:
*RD:开销0,总开销6
*RB:开销0,总开销6
*RC:开销0,总开销6
这时会存在到达同一设备的不同路径,有一些没有任何意义。这些应该被去除
去除后只剩下:
N2到RA开销3
N3到RD开销6
3.第三级:
同理:
RA到N1 开销5
RD到N4 开销 10
计算得到OSPF路由示例:
目的网络 | 开销 | 下一跳 |
N1 | 5 | RA |
N2 | 3 | 本地 |
N3 | 6 | 本地 |
N4 | 10 | RD |
OSPF报文类型(直接产生IP数据包 协议号89)
Hello:使路由器发现基地链路和网络上的其他相邻路由器
数据库描述:包含AS或区域的拓扑描述信息
链路状态请求:由一台路由器向另一台路由器请求LSDB某个部分的更新
链路状态更新:响应链路状态请求,同时也定期发送广播或多播这些报文
链路状态确认:对更新报文显示确认