OSPF(Open Shortest Path First )是由IETF开发:链路状态路由协议 、使用的是Dijkstra算法、计算路由,优点有快速收敛,层次化多区域结构设计。多部署在中大型园区网,城域网,企业网中 , 目前的OSPF 版本v2 主要用在点分型十进制数,OSPFv3主要用于128位的ipv6协议中。
算法:SPF算法(最短路径优先算法)把收集的信息组成一个完整的图形结构转化为树形结构,主要目的是因为树形结构不会出现环路。
组播地址:224.0.0.5/224.0.06
优先级:10/150
进程号:没有用,仅具有本地意义。区分不同进程。
OSPF版本:
V1 ---- 实验室版本
V2 ---- IP4版本
V3 ---- IP6版本
RIPV2与OSPFV2的相同点
1.RIPV2(224.0.0.9)和OSPFV2(224.0.0.5 224.0.0.6)都是以组播的形式发送信息的。 --- 224.0.0.X的组播地址 --- 本地链路组播 --- TTL设置为1
2.RIPV2和OSPFV2都被称为无类别的路由协议
3.OSPFV2和RIPV2都支持手工认证
4.OSPFV2和RIPV2都支持等开销负载均衡
RIP与OSPF的区别
RIP只能应用在小型网络当中,OSPF可以适用于中大型网络当中 --- OSPF支持结构化部署 --- 区域划分 --- 目的 --- 区域内部传输拓扑信息,区域之间传递路由信息
OSPF的计时器
Hello包 --- 周期发现,建立和保活另据关系
Hello时间 --- 10S(30s)
Dead time ---- 4倍的hello时间
区域划分
OSPF的结构化部署:区域划分 区域划分的主要目的:区域内部传递拓扑信息,区域之间传递路由信息。称为链路状态型协议的距离矢量特征。所以可以在大型网络中应用。
多区域提高了网络的扩展性,有利于组件更大规模的网络。
OSPF的多区域划分
区域边界路由器 --- ABR --- 同事属于两个区域,一个接口对应一个区域,并且有一个接口在区域0中
区域划分要求 --- 1.区域之间必须存在ARB设备
2.区域划分必须按照星型拓扑划分 --- 星型拓扑中间区域我们称为骨干区域
区域ID(area ID) ---- 区分和标定OSPF网络中不同的区域 --- 32位二进制构成 --- 1.点分十进制表示;2.直接使用十进制表示 --- 骨干区域的区域ID定义为区域0.
假定没有“所有非骨干区域都必须连接骨干区域”这条规则:
OSPF定义了ABR(区域边界路由器)来确保遵循这条规则。----只有真正的ARP设备才可以转发区域间路由信息。
非骨干区域之间不允许直接相互发布区域间路由信息。----因为非骨干区域之间的边界设备不是ARP。
假定没有“骨干区域不能被分割”:
OSPF规定:从非骨干区域收到的路由信息,ABR能接收到不会使用这条路由信息(这条规则,被称为OSPF的区域水平分割机制)。----从一个区域学习到的路由信息,不能再传递回该区域。
OSPF路由器角色:
内部路由器---IR
所有接口都接入同一个 OSPF 区域的路由器
区域边界路由器---ABR
R2、R3
骨干路由器----BR
接入 Area0 的路由器
自治系统边界路由器---ASBR
1.工作在 OSPF 自治系统边界的路由器,负责将 OSPF 域外的路由引入本域。
2.并不是所有运行了多种路由协议的 OSPF 路由器就一定是 ASBR ;必须执行了重发布操作的路由器才会被称为ASBR
OSPF的数据包:
hello包
1.用来发现、建立并周期保活 OSPF 邻居关系 ,通过组播 224.0.0.5 发送。
2.10S 发送一次用以确认邻居存在。
3.hold-time---- 死亡时间 ----hello-time*4
4.Router-ID ( RID ) --- 全域唯一,标识路由器身份。 IP 地址形式
配置方式
1.手工配置
2.自动配置
.默认优选最大环回 IP 地址,没有环回就选择最大物理 IP 地址
在华为设备中,若没有接口 IP ,则 OSPF 启动后, RID 为 0.0.0.0
在思科设备中,若没有接口 IP ,则 OSPF 无法启动。
华为标准:状态最先 UP 的接口的 IP 地址作为 Router id
FRC 标准:
1 、取 loopback 接口 IP 中最大的作为 Router id
2 、若没有 loopback 接口,则选择物理接口 IP 地址中最大的作为 Router id
DBD报文
数据库描述报文
该报文中携带的是 路径信息的摘要 。 --- 避免重复更新,减少更新量的一种做法。
LSR报文
链路状态请求报文 ---- 用以获取未知的 LSA (链路状态通告)信息。
LSU报文
链路状态更新报文
携带真实的 LSA 信息的数据包
LSAck报文
链路状态确认报文
OSPF 七种状态机
down--- 关闭 ----- 一旦启动了 OSPF 协议,则发出 hello 报文进入下一个状态
init---- 初始化 ---- 收到的 hello 报文中存在本地 RID 值,进入下一个状态
2-way---- 双向通讯 ---- 邻居关系建立的标志 。 --- 稳定态。
条件匹配:匹配成功则进入下一个状态,匹配失败则停留在邻居状态。
exstart---- 预启动 ---- 使用未携带信息的 DBD 报文进行主从关系选举, RID 大的为主。
exchange---- 准交换 ----- 使用携带目录信息的 DBD 报文进行目录共享
loading---- 加载 ---- 邻居间使用 LSR/LSU/LSACK 报文来获取完整的 LSA 信息
full--- 转发 ---- 拓扑交换完成后,根据算法计算出路由进入该状态,标志着 邻接关系的建立 。 --- 稳定 态。
条件匹配
指定路由器---DR----和MA网络中其他所有设备建立邻接关系
备份指定路由器----BDR---和MA网络中其他所有设备建立邻接关系
在DR和BDR都存在的情况下网络中至少需要四台设备才能看到邻居关系。
DR和BDR在其工作范围在一个MA网络中所有,其实质是接口
条件匹配 --在MA网络中,所有设备均为邻接关系,则将出现大量的重复更新。
DR和BDR的选举
1,比较接口的优先级(Priority),最大为DR,次大的为BDR,默认优先级为1。
2,当优先级相同时,则比较RID,RID大的路由器对应的接口为DR,次大的为BDR。
DR、BDR的选举--非抢占模式的选举---选举时间等于死亡时间
RID--路由的ID
满足条件:1.全网唯一 2.格式统一
获取方式:1.手工配置 2.自动生成
手工配置 --- 仅需要满足以上两个条件即可
自动生成 ---
1.先看设备是否配置环回接口,如果存在选择换回接口的IP地址作为 RID;如果存在多个换回接口,则选择其中数值最大的作为RID
2.如果不存在环回接口,则将与设备的物理接口作为IP地址作为RID,如
果存在多个物理接口,则将选择其中数值最大的作为RID。
OSPF的状态机:
down状态—-启动ospf之后,发出hello包之后进入到下一个状态
init(初始化)状态--收到Hello包中包含本地的RID,则进入到下一个状态
Two-way(双向通信)状态 --标志着邻居关系的建立(条件匹配)匹配失败,则将停留在邻居关系,仅使用Hello包进行周期保活;匹配成功则进入下一个状态
exstart(预启动)状态 --使用未携带数据的DBD包进行主从关系选
举,RID大的为主,为主可以优先进入下一个状态
exchange(准交换) 状态 --- 使用携带目录信息的DBD包进行目录共享
loading(加载)状态--基于对端发送的DBD包,使用LSR/LSU/LSACK三种数据包获取未知LSA信息。
FULL状态 --标志着邻接关系的建立。
稳定状态只有2-way和full两个状态。
OSPF的工作过程:
启动配置完成后,OSPF将向本地所有运行协议的接口以组播224.0.0.5的形式发送hello包;hello包中会携带自己本地的RID和本地已知的RID;之后,将实际到的邻居关系记录在本地的一张表中 --- 邻居表
邻居关系建立完成之后,将进行条件陪陪。失败,则停留在另据关系,仅使用hello包进行周期保活
匹配成功则开始建立邻接关系,首先使用未携带的DBD包进行主从关系选举,之后,使用携带信息的DBD包共享数据库目录信息。之后,完成本地使用LSR/LSU/LSACK三种数据包获取未知的LSA信息。之后,完成本地数据库的建立,生成数据库表 --- LSDB
最后,基于本地链路状态数据库LSA信息,生成有向图及最短路径树,之后,计算出本地到达未知网段的路由信息。将这些路由信息添加到 --- 路由表
收敛完成后,OSPF依然会每隔10s(30s)发送hello包进行周期保洁;每隔30min进行一次周期更新。
结构突变的情况
1.新增一个网段 --- 触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK确认
2.断开一个网段 --- 触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK确认
3.无法通信 --- dead time
条件匹配
设备接口角色
指定路由器------DR
备份指定路由器-----BDR
其他路由器----DRother
角色之间的关系
DR与BDR----邻接
DR与DRother---邻接
BDR与DRother---邻接
DRother与DRother----邻居
OSPF条件匹配的情况
在以太网网络中-----必须进行条件匹配
在点到点网络中-----不需要进行条件匹配
选举规则
1.优先级,默认为1,0-255,越大越优
2.RID,越大越优
选举范围
一个广播域,进行一次条件匹配。
条件匹配是属于非抢占模式-----一旦选举成功,不会因为新加入的设备而重新选举。
OSPF的基本配置:
启动OSPF协议:
1.[r1]ospf 1 router-id 1.1.1.1 ---- 手工配置RID需要在进程启动时配置。
2.OSPF ProcessID只是本地有效,用来在本地区分不同的OSPF进程
3.虽然OSPF ProcessID本地有效,但是我们仍然建议,除非有特殊需求,否则全网使用一致的OSPF进程ID,这将方便网络管理和维护。
创建区域:
[r1-ospf-1]area 0
宣告:
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 ---- 精准宣告
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255 ---- 范围宣告
查看OSPF的表格:
[r1]display ospf peer ---- 查看邻居表,显示的是详细的信息
[r1]display ospf peer brief ---- 查看邻居关系简表
[r1]display ospf lsdb ---- 查看数据库表
[r1]display ospf routing ---- 查看
[r1]display ospf lsdb router 2.2.2.2 ---- 展开一条LSA的方法
[r1]display ip routing-table protocol ospf ---- 查看ospf路由表
[r1]display this ---- 查看当前页面所有配置信息
OSPF的报文格式:
头部文件为24字节
版本---恒为2
类型----描述OSPF数据包类型
hello---1
dbd-----2
lsr------3
lsu----4
lsack----5
报文长度
路由器ID----RID
区域ID---发出该报文的接口所属区域的ID值。
校验和----完整数据包
验证类型
指示该数据报文使用的认证类型
不认证--0;简单认证---1;MD5认证---2。
验证数据
用于报文认证的内容
若认证类型为不认证,则该字段全为0;
注意:
当两个路由器去验证的时候,会先比较验证类型。当验证类型相同是才会比较验证数据。如果验证类型不同就不会去比较验证数据,更不会去建立邻居关系。
并且由于验证类型是在OSPF头部报文中,所以OSPF的五种报文都要去验证。
Hello报文:
网络掩码
两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码。
如果一方在接口上收到的hello报文中,网络掩码字段与本地接口配置的掩码不同,则该路由器忽略该hello报文,此时邻居关系无法建立。
注意:只有在华为设备中会检查网络掩码信息。
Hello间隔
如果两台路由器的hello时间间隔不同,则不会建立邻居关系。
在Broadcast类型和P2P网络类型中hello时间间隔为10S;而在NBMA或P2MP网络类型中,Hello时间为30S。
可选项
有8个标记位,每一个标记位为1,则代表其符合OSPF的某种特性。
特殊区域标记。
路由器优先级
用于选举DR和BDR。
路由器失效时间
两台设备建立OSPF邻居需要确保死亡时间相同。
默认情况下是hello间隔的4倍。
若修改hello时间,则死亡时间随之改变;若修改死亡时间,则hello时间不变。
指定路由器---DR
该参数为网络中DR的接口IP地址。
若没有选举出DR,则使用0.0.0.0来占位
备份指定路由器---BDR
该参数为网络中DR的接口IP地址。
若没有选举出BDR,则使用0.0.0.0来占位
邻居
在直连链路上发现的有效邻居,此处填充的是邻居的RID值。
所有224.0.0.X格式的组播地址称为本地链路组播地址,目标IP是本地链路组播的数据包的TTL值被设定为1。所有本地链路组播都存在对应的组播MAC地址,01-00-5e-0后23位,后23位为组播IP地址的后23位。
BDB包:
作用:
-
使用未携带数据的DBD报文进行主从关系选举
-
使用携带数据的DBD报文进行拓扑目录共享
-
使用未携带数据的DBD报文进行确认。
接口最大传输单元----MTU
-
在华为AR系列路由器上,该参数值默认为0。
-
该字段是用于进行OSPF的MTU检测,而华为默认不开启MTU检测机制。
如果设备两端开启了OSPF的MTU检测机制,则进行MTU检测,若双方的MTU参数相同,则正常进行邻接关系建立。若不同,则双方卡在exstart状态。
可选项---与Hello报文内容中的可选项字段一致。
I------主从关系选举
如果该为为1,则代表该数据报文是用于进行主从关系选举。且此时的数据包中不会携带真实的数据库目录信息。
M
若为1,则代表后续还存在DD报文
若为0,则代表后续没有DD报文
MS----代表是否为主设备
若为1,则代表本设备为Master设备
若为0,则代表本设备为Slave设备
DD序列号
用于确保DD报文传输的有序性和可靠性。
在DD报文交互的过程中,DD序列号被逐次加1。且DD序列号必须由Master路由器来决定,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。
隐形确认机制----通过对方发送的数据包中的DD序列号,起到确认的效果。
而主从关系选举就是为了完成隐形确认。
LSR包:
LSU包:
LSAck包:
OSPF的接口网络类型
网络类型
-
P2P
-
P2MP
-
-
MA
-
BMA
-
NBMA
-
OSPF的接口网络类型,实际上是说OSPF的接口在某种网络类型下的一种工作方式或特征。
BMA(广播型多点接入网络):
点到点类型---P2P:
MGRE环境下的OSPF:
非广播型多路访问类型----NBMA:
Vlink---虚链路
vlink是专门为了解决OSPF不规则区域所诞生的技术,是一种虚拟的、逻辑的链路。
vlink必须找到一个真实的ABR设备建立虚拟链路。
注意:
1.配置位置在需要vlink穿越的区域中,且配置的是RID,而非邻居IP地址。
2.虚链路的配置条件:只能穿越一个区域。
3.它需要通过RID递归查找IP地址,即R2通过LSA找到R3,只有在相同区域内才能拿到拓扑信息;如果是多个区域,传递的是路由信息,拿不到拓扑信息,计算不到目标地址。所以只能穿越一个区域。找到之后如果有多个接口,就找开销值最小的一条。
4.Vlink被视为骨干区域的一段延伸,即Vlink永远属于Area 0,但是要在被穿越的区域配置,并且这条隧道不穿数据。