OSPF是标准的链路状态路由协议,其实就是拓扑型协议。它是无类别协议,更新时携带子网掩码,使用组播(224.0.0.5、224.0.0.6)进行更新,管理距离110,度量为cost表示开销值。
OSPF是一个拓扑型协议,它最大的特点就是选路佳,不会出环。但是由于它是拓扑型协议,那么每多一台路由器,就会导致设备的更新量很大,会占用大量的资源。为了减少更新量,OSPF采用了 结构化部署:区域划分、地址规划 。
通过区域之内传拓扑,区域之间传路由这种方式,这就叫做链路状态型的距离矢量特征。
OSPF使用触发更新、周期更新(30分钟)。使用周期更新的原因是:由于更新量太大,会导致网络拥塞,可能无法收到某些数据包,导致数据库不统一,因此用周期更新,让路由器之间每过30分钟比对一次。
数据包 | 数据包的作用 |
---|---|
Hello包 | Hello包用于发现、建立、周期保活邻居关系,通过hello包的互发来发现邻居 Hello包中存在router ID——RID,相当于全网唯一的编号,使用IP地址。 |
DBD包 | DBD包叫做数据库描述包:路由器通过收到这个包之后,来查看该DBD包中那一条LSA信息自己没有,起到比对作用。 |
LSR 链路状态请求包 | 路由器通过发送LSR链路状态请求包来向对端请求自己没有的LSA信息 |
LSU 链路状态更新包 | 该包中携带各种LSA,用于回复其它路由器的请求 |
LSack 链路状态确认包 | 表示自己已经收到更新包 |
(1)启动配置完成后,本地使用组播(224.0.0.5、224.0.0.6)发送hello包到所有邻居处,若收集到其他邻居的hello包,那么建立邻居关系,生成邻居表
(2)紧接着和所有邻居间进行 条件匹配 :
若失败将停留于邻居关系,仅hello包周期保活即可。
若匹配成功,将建立邻接(毗邻)关系(需要DBD共享数据库目录),邻接关系将使用DBD/LSR/LSU/LSack来获取未知的LSA信息,当收集齐所有的LSA信息后,本地生成LSDB(链路状态数据库也就是数据库表)
(3)之后在本地基于LSDB计算到达所有未知网段的最佳路径,然后将其加载到路由表。
(4)收敛完成后,hello包周期保活邻居、邻接关系;每过30min周期性的使用DBD比对数据库。
(5)若结构突变:
①新增、断开网段时,直连设备使用DBD同步信息到所有的邻接处。
②设备断电无法沟通,dead time到时后断开邻居关系。
LSA:链路状态通告,或者说是拓扑或路由。
LSDB:链路状态数据库,用于存放所有的LSA集合。
OSPF协议的收敛被称作LSA洪泛、LSDB同步
状态机 | 意义 |
---|---|
Down | 一旦本地发出hello包就进入下一个状态 |
Init(初始化) | 接收到的hello包中,若存在本地RID,那么进入下一状态 |
2way(双向通信) | 邻居关系建立的标志 |
条件匹配:点到点网络直接进入下一状态,MA网络中将进行DR/BDR选举(40s)非DR/BDR间不得进入下一状态
Exstart(预启动) | 类hello的DBD,进行主从关系选举,RID数字为大者为主,优先进入下一状态 |
---|---|
Exchange(准交换) | 使用真正的DBD包,进行数据库目录的共享,需要ACK确认 |
Loading(加载) | 使用LSR/LSU/LSack来获取未知的LSA信息 |
Full(完成) | 邻接关系建立的标志 |
(1)OSPF的配置解释:
R1(config)#router ospf 1
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R1(config-router)#network 12.1.1.0 0.0.0.255 area 0
#1 router ospf 1中1为进程号可以让一台路由器运行多个ospf进程,仅具有本地意义
#2 router-id 1.1.1.1 配置RID,要求为全网唯一,为手工配置,如果不配置默认取环回接口最大数字,最后再取物理接口最大数字。
#3 宣告所拥有的网段,使用反掩码来匹配可变动范围(12.1.1.0 0.0.0.255 表示为最后8位为可变动范围),达到宣告的目的,同时宣告自己所在的区域。这里的反掩码是说的范围,而掩码说的是网络位与主机位的区分,逻辑上是不一样的。
OSPF划分区域的原因:避免更新量太大,可以工作在更大的环境中。
OSPF划分规则:
①必须为星型结构——区域0为骨干区域,其余为中心站点。
②ABR——区域边界路由器,它是将一边区域拓扑计算所得路由发送到另一边
(2)邻居表
为了更好的说明3张表,这里配置3台路由器。配置就按照上一步进行配置,如图:
邻居表:启动配置完成后,所有设备间使用hello包,发现并建立邻居关系,邻居表生成。Hello time为10s,dead time 为hello time 的4倍,它会从40s开始倒计时,倒到30s时,新的hello包来了,那么又恢复到40s。
(3)数据库表
邻居关系建立后,邻居间进行调节匹配,匹配成功者之间进入邻接关系,基于DBD/LSR/LSU/LSack获取未知LSA信息,生成LSDB(数据库表),这只是几个目录:
详细看其中的一条目录。
r2#show ip ospf database router 1.1.1.1
这里我不会详细解释,之后我会在NP阶段写关于OSPF的详细讲解,敬请期待。
(4)路由表:
LSDB同步完成后,本地使用SPF最短路径选路规则,将到达未知网段的路由加载到路由表
O | 本地区域内的路由,是本地通过拓扑计算所得 |
---|---|
O IA | 域间路由,其他区域的路由,通过ABR共享进入 |
其中管理距离为110,度量为cost值也就是开销值,由于度量值要越小越好,因此使用开销值:
注:当接口带宽大于参考带宽时,比如1000M时,cost值为1。就有可能出现选路不佳,建议修改参考带宽,默认为Mbits
r1(config)#router ospf 1
r1(config-router)#auto-cost reference-bandwidth 1000
切记:整个网络所有设备均需要修改抑制。
邻接关系建立的条件是建立邻居关系:
邻居关系:只存在Hello包的保活,之间没有路由、拓扑的传递。
邻接关系:进行LSA的交互、洪泛(进行拓扑路由的传递)。
网络类型决定了邻接关系是怎样的:
点到点网络:在一个网段内只能存在两个节点。
MA网络:在一个网段内节点之间的数量不限制。
(1)点到点网络:
在点到点网络OSPF中只能直接建立邻接关系
(2)MA网络中:
在MA网络中为 避免重复的更新 ,将进行DR/BDR选举,所有的非DR/BDR间仅建立邻居关系;DR/BDR与其他非DR/BDR建立邻接关系,基于224.0.0.6(DR/BDR专用)沟通。因此要出现DRother与DRother之间的hello包沟通,至少需要4台路由器。
DR为老大,BDR为老二它用于接管DR临时故障导致网络瘫痪而设置的。DROTHER它们只和DR之间进行比对数据库,不和DROTHER比对数据库,减少更新量。
选举规则;
1、比较接口优先级,0-255,越大越好。 默认为1,0表示不参选。
2、接口优先级若相同,比较RID
R1(config)#interface f0/0
R1(config-if)#ip ospf priority 3 修改接口优先级
注:OSPF选举为非抢占的,因此在人为**修改优先级后,必须让所有重启设备一次性敲好所有配置命令,**然后最好在十几秒内重启OSPF进程,超出40s不成功。
或者是将设备的参选接口优先级修改为0,不参选,但至少留一台设备参选,否则无DR,网络将无法同行。
1) 认证----直接在连接邻居的接口上配置
2) 加快收敛—hello time 10s dead time 40s在这里插入图片描述
在直连邻居的接口上修改,且邻居间time必须完全一致,否则无法保持邻居关系匹配
3) 被动接口----仅接受不发送路由协议的信息,用于连接用户的接口,不得用于连接邻居的接口
4) 缺省路由----在边界路由器上配置缺省信息后,向内网发送缺省路由