动态路由协议之OSPF
OSPF
开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议
OSPF区域
- 为了适应大型的网络,OSPF在AS内划分多个区域
- 每个OSPF路由器只维护所在区域的完整链路状态信息(LSA)
区域ID
区域ID可以表示成一个十进制数字,也可以表示一个IP
骨干区域Area-0
负责区域间路由信息传播
非骨干区域Area
需要与骨干区域直连
Router ID
OSPF区域内唯一标识路由器的IP地址
Router ID选取规则
- 用router-id命令指定Router-ID
- 选取路由器loopback接口上数值最高的IP地址
- 如果没有loopback接口,在物理端口选取IP地址最高的
DR
DR:指定路由器
BDR:备份指定路由器
DRothers:其他路由器,只和DR及BDP形成连接关系
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
OSPF数据包
承载在IP数据包内,使用协议号89
OSPF包类型
OSPF包类型 | 描述 |
---|---|
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR) | 在路由器收到包好新信息的DBD后发送,用去请求更详细信息 |
链路状态更新包(LSU) | 收到LSR后发送链路状态公告(LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已经收到LSU,每个LSA需要被分别确认 |
OSPF邻接关系的建立
邻居状态机(七个状态)
-
Down:邻居状态机的初始状态,是指在过去的Dead-Interval时间内没有收到对方的Hello报文
Attemp:只适用于NMBA类型的接口,处于本状态时,定期向那些手工配置的邻居发送Hello报文 -
Init:本状态表示已经收到了邻居的Hello报文,但是该报文中列出的邻居中没有包含我的Router-ID(对方并没有接收到我发的Hello报文)
-
2-Way:本状态表示双方互相收到了对端发送的Hello报文,建立了邻居关系。在广播和NBMA类型的网络中,两个接口状态时DRother的路由器之间将停留在此状态
-
ExStart:在此状态下,路由器和它的邻居之间通过互相交换DBD报文(该报文不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要时为了保证在后续的DBD报文交换中能够有序的发送
-
Exchange:路由器将本地的LSDB用DBD报文来描述,并发给邻居
-
Loading:路由器发送LSR报文向邻居请求对方的DBD报文
-
Full:在此状态下,邻居路由器的LSDB中所有的LSA’本路由器全都有了。即,本路由器和邻居建立了邻接(adjacency)状态
OSPF将网络划分为四种类型
- 点到点网络(Point-to-Point)
- 广播多路访问网络(BMA)
- 非广播多路访问网络(NBMA)
- 点到多点网络(Point-to-Multipoint)
OSPF使用考虑
- 网络规模
- 网络拓扑
- 其他特殊要求
- 路由器的自身要求
OSPF的特点
- 可适应大规模网络
- 路由变化收敛速度块
- 无路由环路
- 支持变长子网掩码VLSM
- 支持区域划分
- 支持以组播地址发送协议报文