OSPF:开放式最短路径优先协议,是无类别链路状态IGP动态路由协议 ;
一. 动态路由协议的两种类别
1. 距离矢量协议:运行距离矢量协议的路由器会周期性的泛洪自己的路由表,通过路由的交互,每台路由器从相邻的路由器中学习到路由,并且加载进自己的路由表中;对于网络中的所有路由器而言,路由器并不清楚网络的拓扑结构,只是简单的知道要去往某个目的地的方向,以及距离开销即跳数,这即是距离矢量协议的本质。
2.链路状态协议:与距离矢量协议不同,链路状态协议通告的是链路状态信息,而不是路由表。运行链路状态协议的路由器之间会先建立一个协议的邻居关系,然后彼此之间开始交互LSA(链路状态通告);每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB(链路状态数据库)中;路由器通过LSDB,掌握了全网所有的拓扑信息。最后,由路由器通过SPF算法,计算出最优路径,随后加载于自己的路由表中。
二. OSPF的特征
(1) 支持等开销负载均衡;
(2) 基于组播进行更新----224.0.0.5 / 224.0.0.6
(3) 支持触发更新 ; 每30min进行一次周期更新
(4) 需要结构化的部署---区域划分 地址规划
(5) 相同区域传递拓扑,不同区域传递路由
三. 区域划分的规则
1. 星型结构: 0区为骨干区域,大于0则为非骨干区域,且所有非骨干区域必须接入到骨干区域上;
2. ABR(域间路由器):同时工作在两个区域上,两个区域相连时,必须存在ABR;
3. Router-ID (路由器标识符) 用于一个OSPF域中唯一的标识一台路由器
Router-ID的设定可以通过手工配置的方式,或使用系统自动生成的方式。
定义RID值,建议使用IP地址,全网唯一,要是不进行手工配置则会自动生成,即优先配置为环回的最大数值;如果没有环回,则自动配置为最大物理接口数值。
四. OSPF的开销度量
OSPF使用COST值作为度量值:Cost=开销值=参考带宽/接口带宽;默认参考带宽为100M,整段路径cost值之和最小为最佳。
若接口带宽大于参考带宽,则度量值为1,可能会导致选路不佳,故而在接口带宽大于参考带宽的网络中,可以人为的修改参考带宽。
修改指令:[R1-ospf-1]bandwidth-reference 1000 修改参考带宽为1000Mbits/s
注意:一旦修改参考带宽,需全网所有设备都修改一致;
五. OSPF详解
1.1 OSPF的数据包类型及作用
(1)HELLO包: 用于邻居间的发现,邻居关系的建立及保活;
(2)DBD包(数据库描述包): 用于携带本地数据库目录;
(3) LSR包(链路状态请求包): 在查看完对端邻居的DBD包后,基于本地的未知查询LSA,随后通过 LSR包,索要未知的LSA信息;
(4) LSU包(链路状态更新包): 用于携带各种LSA信息;
(5) LSACK包(链路状态确认包): 用于确认接收到对端的信息;
1.2 OSPF的状态机
Down状态:表示未激活的状态,一旦本地发出hello包,则进入下一个状态;
Init状态:表示初始化状态;
2-way状态:待能够双向通信,表示建立了邻居关系;
经过条件匹配,成功则进入下一个状态机,失败则停留于2-way状态;
Exstart 状态:预启动状态
Exchange 状态:准交换状态
Loading 状态(加载状态): 在查看完对端邻居的DBD包后,使用LSR包来询问自己位置的LSA信息,对端使用LSU包进行回复,本地还需要使用LSACK进行确认回复。
Full 状态:邻接关系建立的标识;
1.3 OSPF的工作过程
启动配置完成后,通过本地组播地址 224.0.0.5 向外发送HELLO包,HELLO包将携带本地的RID值,及已知的邻居的RID值;若接收到对端的hello包中有自己的RID则视为认识,然后邻居关系的建立,并生成邻居表。
开始条件匹配,若成功则进入下一个阶段,不成功则永远是邻居;使用空的DBD包进行主从选举,对比RID且大为优,并优先进入下一个阶段,共享数据库目录;之后使用 LSR/LSU/LSACK 来获取未知的LSA信息并加载于本地的LSDB中。
启用SPF算法,基于本地LSDB生成有向图,在计算出最短路径树,在基于树形结构算出本地为起始点到达全网各个节点的最优路径,最后加载于本地路由表中,收敛完成后,利用HELLO包保活即可;通过每30min进行一次周期更新,周期更新即为对比数据库目录,如果相同则继续HELLO包保活,如果不相同,则重新收敛 (重新进入Loading状态)
注:特殊情况(结构突变)
- 新增一个网段:直连新增网络设备,直接使用更新包告知邻接关系,需要ack确认。
- 断开一个网段: 直连断开网络设备,直接使用更新包告知邻接关系,需要ack确认。
- 无法沟通: 利用机制hello time 10s ,dead time 40s,时间到了就删除邻居信息。
1.4 OSPF的基础配置
[R1]ospf 1 router-id 1.1.1.1
含义:创建OSPF进程号为1,仅具有本地意义;同时定义RID值(建议使用IP地址,全网唯一);
[R1-ospf-1]area 0 进入0区(骨干区域)
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 宣告IP地址 1.1.1.1 划分到area 0区域;
[R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255 宣告网段 12.1.1.0 划分到area 0区域
<R1>display ospf peer 查询详细邻居关系
<R1>display ospf brief 查询邻居表
<R1>display ospf lsdb 查询链路状态数据库
1.5 OSPF的扩展配置
1. 两种网络类型:
①点到点的网络:在一个网段中,仅支持存在两个节点的网络(在点到点的网络类型中,可以直接成为邻接关系)
②MA:多路访问:在一个网段内,存在的节点数量不限
在MA网络中,若所有设备均是邻接关系,则会造成大量的重复更新,故进行DR/BDR的选举,所有非DR/BDR的设备被称之为DRother,DRother之间维持邻居关系。
DR/BDR选举规则:
(1)先比较参选接口的优先级,默认值为1,取值范围0-255 ,大为优;
(2)若参选接口的优先级相同,比较参选设备的RID,大为优;
[R1-GigabitEthernet0/0/0]ospf dr-priority 2 将参选接口优先级改为2
注:OSPF的DR选举是非抢占性的,故需要重启OSPF进程达到重新选举的目的
<R1>reset ospf process 重启OSPF进程
2. 手工认证
在邻居间接口上定义安全密钥
[R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456