动态路由协议之OSPF

OSPF

开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议
动态路由协议之OSPF

OSPF区域

  • 为了适应大型的网络,OSPF在AS内划分多个区域
  • 每个OSPF路由器只维护所在区域的完整链路状态信息(LSA)

区域ID
区域ID可以表示成一个十进制数字,也可以表示一个IP

骨干区域Area-0
负责区域间路由信息传播

非骨干区域Area
需要与骨干区域直连

Router ID

OSPF区域内唯一标识路由器的IP地址

Router ID选取规则

  1. 用router-id命令指定Router-ID
  2. 选取路由器loopback接口上数值最高的IP地址
  3. 如果没有loopback接口,在物理端口选取IP地址最高的

DR

DR:指定路由器
BDR:备份指定路由器
DRothers:其他路由器,只和DR及BDP形成连接关系

动态路由协议之OSPF
DR和BDR选举方法

  • 自动选举DR和BDR
    • 网段上Router ID最大的路由器将被选为DR,第二大的将被选举为BDR
  • 手工选举DR和BDR
    • 优先级范围是0~255,数值越大,优先级越高,默认为1
    • 如果优先级相同,则需要比较Router ID
    • 如果路由器的优先级被设置为0,它将不参与DR和BDR的选举

DR和BDR的选举过程
路由器的优先级可以影响一个选举过程,但是 它不能强制更换已存在的DR或BDR

OSPF组播地址
DRother:224.0.0.5
DR/BDR:224.0.0.6

OSPF度量值为COST
COST=108/BW COST = 10^8/BW

OSPF数据包
承载在IP数据包内,使用协议号89

OSPF包类型

OSPF包类型 描述
Hello包 用于发现和维持邻居关系,选举DR和BDR
数据库描述包(DBD) 用于向邻居发送摘要信息以同步链路状态数据库
链路状态请求包(LSR) 在路由器收到包好新信息的DBD后发送,用去请求更详细信息
链路状态更新包(LSU) 收到LSR后发送链路状态公告(LSA),一个LSU数据包可能包含几个LSA
链路状态确认包(LSAck) 确认已经收到LSU,每个LSA需要被分别确认

OSPF邻接关系的建立
动态路由协议之OSPF
动态路由协议之OSPF

邻居状态机(七个状态)

  1. Down:邻居状态机的初始状态,是指在过去的Dead-Interval时间内没有收到对方的Hello报文
    Attemp:只适用于NMBA类型的接口,处于本状态时,定期向那些手工配置的邻居发送Hello报文

  2. Init:本状态表示已经收到了邻居的Hello报文,但是该报文中列出的邻居中没有包含我的Router-ID(对方并没有接收到我发的Hello报文)

  3. 2-Way:本状态表示双方互相收到了对端发送的Hello报文,建立了邻居关系。在广播和NBMA类型的网络中,两个接口状态时DRother的路由器之间将停留在此状态

  4. ExStart:在此状态下,路由器和它的邻居之间通过互相交换DBD报文(该报文不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要时为了保证在后续的DBD报文交换中能够有序的发送

  5. Exchange:路由器将本地的LSDB用DBD报文来描述,并发给邻居

  6. Loading:路由器发送LSR报文向邻居请求对方的DBD报文

  7. Full:在此状态下,邻居路由器的LSDB中所有的LSA’本路由器全都有了。即,本路由器和邻居建立了邻接(adjacency)状态

OSPF将网络划分为四种类型

  • 点到点网络(Point-to-Point)
  • 广播多路访问网络(BMA)
  • 非广播多路访问网络(NBMA)
  • 点到多点网络(Point-to-Multipoint)

OSPF使用考虑

  • 网络规模
  • 网络拓扑
  • 其他特殊要求
  • 路由器的自身要求

OSPF的特点

  • 可适应大规模网络
  • 路由变化收敛速度块
  • 无路由环路
  • 支持变长子网掩码VLSM
  • 支持区域划分
  • 支持以组播地址发送协议报文