OSPF概念
开放式最短路径优先(OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。
动态路由评判标准:收敛速度、选路、占用资源。
OSPF特性:
-
IGP协议
-
链路状态型协议
-
使用SPF最短路径优先算法算法
-
组播224.0.0.5/224.0.0.6
-
10/150
-
版本 v1 v2(ipv4) v3(ipv6)
OSPF协议的优点:
(1)OSPF适合在大范围的网络:OSPF协议当中对于路由的跳数,它是没有限制的,所以OSPF协议能用在许多场合,同时也支持更加广泛的网络规模。只要是在组播的网络中,OSPF协议能够支持数十台路由器一起运作。
(2)组播触发式更新:OSPF协议在收敛完成后,会以触发方式发送拓扑变化的信息给其他路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成影响。
(3)收敛速度快:如果网络结构出现改变,OSPF协议的系统会以最快的速度发出新的报文,从而使新的拓扑情况很快扩散到整个网络;而且,OSPF采用周期较短的HELLO报文来维护邻居状态。
(4)以开销作为度量值:OSPF协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF选路主要基于带宽因素。
(5)OSPF协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。
(6)应用广泛:广泛的应用在互联网上,其他会有大量的应用实例。证明这是使用最广泛的IGP之一。
OSPF v2 vs RIP v2:
- 不同点
- OSPF可以在大型网络中使用
- 适用于中小型网络
- 相同点
-
无类别路由协议
-
均采用组播通讯
-
都支持等开销负载均衡
-
OSPF可以在大型网络中使用原因:
OSPF结构化部署
区域内部传递拓扑信息,区域间传递路由信息。---链路状态型协议的距离矢量特征。
多区域提高了网络的扩展性,有利于组建更大规模的网络
OSPF要求域中的所有非骨于区域(区域ID不为o的区域)都必须与骨干区域直接相连。
2.骨干区域不能被分割--有且只能有一个
OSPF定义了ABR(区域边界路由器)来确保遵循这条规则。------只有真正的ABR设备才可以转发区域间路由信息。
规则:
-
至少连接两个区域
-
连接的区域中至少有一个接口连接区域0
-
在区域0中至少有一个活跃的邻居
非骨干区域之间不允许直接相互发布区域间路由信息。----因为非骨干区域之间的边界设备不是ABR。
区域内的路由优于区域间的路由
骨干区域不能被分割规则:
OSPF规定:从非骨干区域收到的路由信息,ABR能接收到不会使用这条路由信息(这条规则,被称为OSPF的区域水平分割机制)----从一个区域学习到的路由信息,不能再传递回该区域。看但不用。
OSPF有以下规定:
-
伪ABR设备不允许转发区域间路由信息
-
对于真实ABR设备
-
能够将自己直连的非骨干区域的路由信息传递给骨干区域
-
能够将自己直连的骨干区域路由信息传递给非骨干区域
-
能够将自己从骨干区域学习到的非骨干区域路由信息传递给直连的非骨干区域。
-
OSPF路由器
-
内部路由器--IR
-
所有接口都接入同一个OSPF区域的路由器
-
-
区域边界路由器ABR
-
区域边界路由器是指连接到多个区域的路由器。ABR为每一个所连接的区域维护一个LSDB
-
ABR将所连接的非骨干区域内的链路状态信息抽象成路由信息,并发布到骨干区域中,由骨干区域进一步发布到其他非骨干区域
-
ABR也要将骨干区域的链路状态信息抽象成路由信息,并发布到所连接的非骨干区域中
-
-
骨干路由器--BR
-
接入Area0的路由器
-
-
自治系统边界路由器--ASBR
-
工作在OSPF自治系统边界的路由器,负责将OSPF域外的路由引入本域
-
并不是所有运行了多种路由协议的OSPF路由器就一定是ASBR;必须执行了重发布操作的路由器才会被称为ASBR
-
OSPF数据包
- hello包
-
用来发现、建立并周期保活OSPF邻居关系,通过组播224.0.0.5发送
-
10s发送一次用来确认邻居存在
-
hold-time--死亡时间--hello-time*4
-
Router-ID(RID)--全域唯一,标识路由器身份。
-
配置
-
手工配置
-
自动配置
-
默认优选最大环回IP地址,没有环回就选择最大物理IP地址
-
-
在华为设备中,若没有接口IP,则OSPF启动后,RID为0.0.0.0
在思科设备中,若没有接口IP,则OSPF无法启动。
display ospf brief--查看ospf Router-ID
display router id --查看路由器标识
华为标准:状态最先UP的接口的IP地址作为Router id
FRC标准:
1、取1oopback接口IP中最大的作为Router id
2、若没有1oopback接口,则选择物理接口IP地址中最大的作为Router id
2.DBD报文
-
数据库描述报文
-
该报文中携带的是路径信息的摘要--避免重复更新,减少更新量的一种做法
- 3.LSR报文
- 链路状态请求报文---用以获取未知的LSA(链路状态通告信息)
- 携带真是的LSA信息的数据包
4.LSAck报文--链路状态确认报文
OSPF七种状态机
-
down---关闭---旦启动了OSPF协议,则发出hello报文进入下一个状态
-
init----初始化--收到的hello报文中存在本地RID值,进入下一个状态
-
2-way----双向通讯--邻居关系建立的标志--稳定态
条件匹配:匹配成功则进入下一个状态,匹配失败则停留在邻居状态。
-
exstart----预启动--使用未携带信息的DBD报文进行主从关系选举,RID大的为主。
-
exchange----准交换--使用携带目录信息的DBD报文进行目录共享
-
loading----加载---邻居间使用LSR/LSU/LSACK报文来获取完整的LSA信息
-
fulI---转发--拓扑交换完成后,根据算法计算出路由才会进入该状态,标志着邻接关系的建立。--稳定态
条件匹配:
决定了谁给谁传递拓扑信息
-
选举规则
-
优先级,0-255;选择优先级大的为DR设备,默认为1。若优先级为0则代表放弃选举
-
若优先级相同,则比较RID值,越大越优先。
-
-
选举范围为一个广播域
-
非抢占模式--重选需要重启OSPF进程
-
在一个MA网络中,可以没有BDR,但是必须存在DR
条件匹配的选举过程:
1.DR、BDR的选举是通过Hello报文实现的,时间发生在2-way状态之后。
⒉.路由器将自己的接口的DR优先级填写在hello报文的"DR优先级字段"。
3.华为数通产品的接口DR优先级默认1,该参数值可以通过
-
[Huawei-GigabitEthernet0/0/0]ospf dr-priority ?INTEGER<O-255> Router priority value DR优先级为0则代表该接口不具备选举DR和BDR的资格。
5.当接口激活OSPF后,设备首先会检查网络上是否已经存在DR,如果存在则接收已经存在的DR设备。否则优先级最大的设备成为DR,若优先级相同,则拥有最大RID的路由器成为DR设备。
6.BDR选举过程与DR相同,但是是在DR选举之后进行。
OSPF工作过程
-
启动OSPF配置后,OSPF向本地所有运行了OSPF协议的接口以组播224.0.0.5发出hello报文; hello报文中携带了本地的RID参数以及本地已知的邻居RID值。
-
邻居的RID获取方式:通过接收其他邻居的hello报文来获取本地邻居
-
建立邻居关系,并生成邻居表。
-
-
邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系,即2-way状态,仅使用hello报文保活。该状态为稳定态。
-
匹配成功的邻居开始建立邻接关系。
-
首先使用未携带数据的DBD报文进行主从关系选举,之后使用携带信息的DBD报文来共享数据库目录;
-
然后本地通过对方共享的目录信息与本地数据库进行对比,通过使用LSR报文请求未知的LSA信息。
-
对端使用LSU报文回复完整LSA信息
-
本端使用LSAck报文确认回复。
-
-
当本地接收到所有的未知LSA信息后,将信息存放在LSDB中。
-
之后基于本地数据库生成有向图和最短路径树。
-
根据最短路径树计算本地到达拓扑中所有未知网段的最短路径,并将其加入到OSPF路由表中。
-
从OSPF路由表中选择最优路由加载入本地全局路由表。
-
-
收敛完成后,hello报文周期保活。每30min进行一次周期链路刷新。
结构突变:
1.新增网段--直接使用LSU报文告知邻居,邻居使用ACK进行确认。 2.断开网段--直接使用LSU报文告知邻居,邻居使用ACK进行确认。 3.无法沟通---dead time----4*hello time,状态为down,删除信息。(删除的是路由信息)
OSPF基础配置
1.启动OSPF协议
-
[r1]ospf 1 router-id 1.1.1.1
2.创建区域
-
[r1-ospf-1]area 0
3.宣告
-
[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 ----范围宣告
反掩码:32位二进制,点分十进制表示;由连续的o和连续的1组成;其中0表示IP对应位不变,1代表IP对应位可变。
display ospf peer--ospf邻居表
display ospf peer brief
display ospf lsdb
cost值--参考带宽/实际带宽
[r2-ospf-1]bandwidth-reference ?----修改参考带宽 INTEGER<1-2147483648> The reference bandwidth (Mbits/s) 一条OSPF路径的cost等于从目的地到本地路由器沿途的所有入接口cost的总和。
OSPF报文格式
OSPF协议号为89
OSPF报文头部
-
版本恒为2
-
类型--描述OSPF数据包类型
-
hello--1
-
dbd--2
-
lsr--3
-
lsu--4
-
lsack--5
-
-
路由器ID--RID
-
区域ID--发出该报文的接口所属区域的ID值
-
校验和--完整数据包
-
验证类型
-
指示该数据报文使用的认证类型
-
不认证--0;简单认证---1;MD5认证---2
-
-
验证数据
-
用于报文认证的类型
-
若认证类型为不认证,则该字段全为0
-
hello包
长度不固定,取决于邻居
224.0.0.x--本地链路组播
-
网络掩码--由接口填充
-
两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码。
-
如果一方在接口上收到的hello报文中,网络掩码字段与本地接口配置的掩码不同,则该路由器忽略该hello报文,此时邻居关系无法建立。
-
只有在华为设备中会检查网络掩码信息
-
-
hello间隔
-
如果两台路由器的hello时间间隔不同,则不会建立邻居关系。
-
在Broadcast类型和P2P网络类型中hello时间间隔为10S;而在NBMA或P2MP网络类型中,Hello时间为30S。
-
-
可选项--八个标志位,每个标志位为1则代表其符合ospf的某种特性
-
路由器优先级(接口优先级)--用于选举DR和BDR
-
路由器失效时间
-
两台设备建立ospf邻居需要确保死亡时间相同
-
默认情况下是hello间隔的4倍
-
若修改hello时间,则死亡时间随之改变;若修改死亡时间,则hello时间不变。
-
-
指定路由器--DR
-
该参数为网络中DR的接口IP地址。
-
若没有选举出DR,则使用0.0.0.0来占位
-
-
备份指定路由器--BDR
-
该参数为网络中DR的接口IP地址。
-
若没有选举出DR,则使用0.0.0.0来占位
-
-
邻居
-
在直连链路上发现的有效邻居,此处填充的是邻居的RID值
-
限制邻居关系建立的参数
子网掩码
-
R修改掩码后,会立即将状态置为down,而R2会在40S死亡时间后进行状态切换。
-
原因在于:R1在修改IP地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以会直接重置状态机。而R2则认为此时属于结构突变中的无法沟通。
hello时间
-
ospf timer hello/dead 秒--修改hello/死亡时间
-
双方经过死亡时间后,状态发生改变。
dead时间
-
[r1-GigabitEthernet0/0/0]ospf timer dead 80
-
结果与修改hello时间一致。
认证
-
[r2-GigabitEthernet0/0/0]ospf authentication-mode simple plain 123456 ----接口认证
-
[r2-ospf-1-area-0.0.0.0]authentication-mode simple plain 123456 ----区域认证
可选项
与修改掩码信息结果相同。
所有224.0.0.X格式的组播地址称为本地链路组播地址,目标IP是本地链路组播的数据包的TTL值被设定为1。所有本地链路组播都存在对应的组播MAC地址,01-00-5e-0后23位,后23位为组播IP地址的后23位。
DBD包
-
使用未携带数据的DBD报文进行主从关系选举
-
使用携带数据的DBD报文进行拓扑目录共享
-
使用未携带数据的DBD报文进行确认。
-
接口最大传输单元--MTU
-
在华为AR系列路由器上,该参数值默认为0
-
该字段是用于进行OSPF的MTU检测,而华为默认不开启MTU检测机制。
-
[r1-GigabitEtherneto/0/0]ospf mtu-enable ----开启OSPF的SMTU检测机制
-
[r2-GigabitEtherneto/0/0]mtu ?----修改MTU参数 <46-1600>MTu value
-
如果设备两端开启了OSPF的MTU检测机制,则进行MTU检测,若双方的MTU参数相同,则正常进行邻接关系建立。若不同,则双方卡在exstart状态。
-
-
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包
链路状态类型、链路状态ID、通告路由器--LSA的三元组信息。通过这三个参数可以唯一标识出一条LSA信息
LSU包
LSAck包--完成显式确认机制
OSPF的接口网络类型
华为将tunnel接口的传输速率定为了64Kbps
OSPF的接口网络类型,实际上是说OSPF的接口在某种网络类型下的一种工作方式或特征。
ospf的DR选举在点到点网络中不存在
display ospf interface 接口 ---查看OSPF网络接口类型
ospf network-type 接口类型 ---修改接口网络类型
-
广播型多路访问类型--BMA
OSPF在BMA类型的接口上通常以组播的方式发送hello报文、LSU及LSACK报文;以单播的形式发送DD报文和LSR报文。 接口类型为Broadcast,可以建立多个邻居关系,需要进行DR和BDR的选举,hello 10S,dead 40S。 -
点到点类型--P2P
OSPF在网络类型为P2P的接口上以组播的方式发送所有数据报文。---不以单播形式发送的原因在于点到点网络可以不需要IP地址。OSPF在点到点网络和环回接口中不会选举DR和BDR。开销值----在华为设备中,P2P网络的实际带宽默认为2.048 (E1标准,T1标准1.544)接口类型为P2P,只能建立一个邻居关系,不需要进行DR和BDR选举,Hello 10S; dead 40s。 -
环回接口
开销值恒定为o,这样的结果就是修改参考带宽不会影响到环回接口的开销值。type----华为使用P2P来填充,而cisco使用loopback填充。所有通过OSPF学习到的环回接口的路由掩码都是32位,因为该接口是一个模拟的接口,实际没有连接用户,所以并没有其他IP地址存在与该接口之下,只有一个可用IP。如果使用其他掩码,可能会导致环路或者路由黑洞witing---该字段代表正在进行条件匹配,当该计时器超时后,接口会认为自己为DR设备,且将接口的状态切换为exstart状态。
-
点到多点类型
Hub节点此时属于P2P类型,只能建立一个邻居,无法建立多个邻居,故修改Tunnel接口的网络类型为Broadcast类型。
不同的网络类型,可以建立邻居关系,但是可能会造成不同的问题。故修改接口网络类型时,全网保持一致。
如果链路两端,一端需要选举DR,另一端不需要,可能会成功建立full状态,也可能有一个卡在exstart或2-way状态。
让分支节点放弃DR选举,在MGRE环境下,hub节点必须成为DR设备。否则网络路由信息无法学习全面。必须修改分支节点的接口优先级为0
[r7-Tunnel0/0/0]ospf network-type p2mp
在P2MP环境下,设备会学习所有邻居的接口IP地址,形成主机路由。
在P2MP环境下,只有hello报文是以组播形式发送,其他所有报文以单播形式发送数据。
5.
NBMA--非广播型多路访问类型
在NBMA网络中,所有数据包以单播数据通讯。在NBMA网络中,所有的OSPF路由器都需要使用peer命令单播指定邻居,该命令是双向的。
OSPF不规则区域划分
-
非骨干区域必须与区域0直接相连
-
骨干区域不能被分割
不规则区域
-
远离骨干的非骨干区域
-
不连续骨干区域
Vlink--虚链路
Vlink机制:
1、可以用来修复不连续的骨干区域
2、将非骨干区域和骨干区域直接相连
基本概念:
1、只要创建了Vlink的路由器,就可以成为ABR
2、虚拟链路Vlink永远属于区域0
3、Vlink只可以在非骨干区域创建,并且只能跨越一个非骨干区域
4、Vlink可以创建多个
5、特殊区域不能创建Vlink
6、Vlink可以做骨干区域的备份
配置:
vlink-peer 对端的router-id