一.OSPF基础
动态路由协议的评判标准
----
收敛速度、选路、占用资
OSPF特性:
(1)IGP(路由协议)
(2)链路状态型协议(LS型)
(3)SPF
算法(路径最短优先)
(4)组播
224.0.0.5/224.0.0.6
(5)更新时间:10s/150s
OSPFv2
与
RIPv2
对比
相同点:
无类别路由协议
均采用组播通讯
均支持等开销负载均衡
不同点:
OSPF
可以工作在大型网络中
对比点:
1.选路:没有环路,
RIP的选路依据---跳数
OSPF的选路依据---带宽
2.收敛速度
RIP---30S 180S 120S
OSPF---30MIN 10S 40S
3.占用资源---
OSPF---链路状态路由协议
RIP和OSPF的一些异同点
二. OSPF
结构化部署
区域内部传递拓扑信息,区域间传递路由信息
。
---
链路状态型协议的距离矢量特征。
多区域提高了网络的扩展性,有利于组件更大规模的网络
。
区域
ID
(
Area-ID
):
32
位
bit
组成的非负整数,按点分十进制表示。
OSPF多区域划分要求:
![](https://img-blog.csdnimg.cn/7472057880dc40f684d77cad27c4c931.png)
1.
OSPF
要求域中的所有非骨干区域(区域
ID
不为
0
的区域)都必须与骨干区域直接相连
。
2.
骨干区域不能被分割
。
假定没有
“
所有非骨干区域都必须连接骨干区域
”
这条规则
![](https://img-blog.csdnimg.cn/f4edbb4b934749d8920bc8b1ecd90731.png)
OSPF
定义了
ABR
(区域边界路由器)来确保遵循这条规则
。
----
只有真正的
ARP
设备才可以转发区域 间路由信息。
注意:
1
、至少连接两个区域
2
、连接的区域中至少有一个接口连接区域
0
3
、在区域
0
中至少有一个活跃的邻居
非骨干区域之间不允许直接相互发布区域间路由信息
。
----
因为非骨干区域之间的边界设备不是
ARP
。
假定没有
“
骨干区域不能被分割
![](https://img-blog.csdnimg.cn/587fb9708b994d52aef3caa91e693c16.png)
OSPF规定:从非骨干区域收到的路由信息,ABR能接收到不会使用这条路由信息
称之为:
OSPF
的区域水平分割机
----从一个区域学习到的路由信息,不能再传递回该区域。
总结:
OSPF有如下规定:
OSPF有如下规定:
1
、伪
ABR
设备不允许转发区域间路由信息
2
、对于真实
ABR
设备
能够将自己直连的非骨干区域的路由信息传递给骨干区域
能够将自己直连的骨干区域路由信息传递给非骨干区域
能够将自己从骨干区域学习到的非骨干区域路由信息传递给直连的非骨干区域
OSPF
路由器角色:
![](https://img-blog.csdnimg.cn/d25d66b172c1483bbb3d6d90bde5a2f6.png)
内部路由器---IR
(1)所有接口都接入同一个
OSPF
区域的路由器
区域边界路由器---ABR
(1)R2
、
R3
骨干路由器---
-BR
(1)接入
Area0
的路由器
自治系统边界路由器---ASBR
(1)工作在
OSPF
自治系统边界的路由器,负责将
OSPF
域外的路由引入本域。
(2)并不是所有运行了多种路由协议的
OSPF
路由器就一定是
ASBR
;必须执行了重发布操作的路由 器才会被称为ASBR
OSPF
数据包:
![](https://img-blog.csdnimg.cn/447b8fab18f84b6f847cd5c6842557f6.png)
物种协议报文:
(1)hello报文:用于发现OSPF的邻居
(2)DD报文: 用于描述LSDB报文
(3)LSR报文: 用于向OSPF邻居请求LSU
(4)LSU报文:用于向对方发送详细的网络信息
(5)LSACK报文: 用于回复LSU报文
hello包:
(1) 用来发现、建立并周期保活
OSPF
邻居关系
,通过组播
224.0.0.5
发送。
(2)10S
发送一次用以确认邻居存在。
(3)hold-time----
死亡时间
----hello-time*4
(4)Router-ID
(
RID
)
---
全域唯一,标识路由器身份。
IP
地址形式
配置方式:
(1) 手工配置
(2)自动配置
(3)默认优选最大环回
IP
地址,没有环回就选择最大物理
IP
地址
![](https://img-blog.csdnimg.cn/e08f40dbd866467cb297d7ce9a4ce33b.png)
![](https://img-blog.csdnimg.cn/f3ccfb4ff0b34bdf87fe8ffe9417a1fe.png)
无论采用手工还是自动选取的方式,一旦OSPF确定了RID,则之后不会改变。
---
重启
OSPF
进程
DBD报文:
(1)数据库描述报文
(2)该报文中携带的是
路径信息的摘要
。
---
避免重复更新,减少更新量的一种做法。
LSR
报文
LSR报文
(1)链路状态请求报文
----
用以获取未知的
LSA
(链路状态通告)信息
LSU报文:
(1)链路状态更新报文
(2)携带真实的
LSA
信息的数据包
LSAck报文:
(1)链路状态确认报文
OSPF
七种状态机:
down-
--
关闭
-----
一旦启动了
OSPF
协议,则发出
hello
报文进入下一个状态
init-
---
初始化
----
收到的
hello
报文中存在本地
RID
值,进入下一个状态
2-way
----
双向通讯
----
邻居关系建立的标志
。
---
稳定态
。
条件匹配:匹配成功则进入下一个状态,匹配失败则停留在邻居状态。
exstart
----
预启动
----
使用未携带信息的
DBD
报文进行主从关系选举,
RID
大的为主。
exchange
----
准交换
-----
使用携带目录信息的
DBD
报文进行目录共享
loading
----
加载
----
邻居间使用
LSR/LSU/LSACK
报文来获取完整的
LSA
信息
full
--
转发
----
拓扑交换完成后,根据算法计算出路由进入该状态,标志着
邻接关系的建立
。
---
稳定
态
![](https://img-blog.csdnimg.cn/27a78a6d62804d43825f8eccf902cc31.png)
![](https://img-blog.csdnimg.cn/13ca11ad70de4e058c036434561ecbde.png)
![](https://img-blog.csdnimg.cn/4e580ab4be364502ba9646b064d36895.png)
条件匹配
决定了谁给谁传递拓扑信息
。
DR
、
BDR
、
DRother----
接口角色
。
选举规则:
1.
优先级,
0-255
;选择优先级大的为
DR
设备,默认为
1
。若优先级为
0
则代表放弃选举
2.
若优先级相同,则比较
RID
值,越大越优先。
选取范围---一个广播域:
非抢占模式
----
重选则需要重启
OSPF
进程。
在一个
MA
网络中,可以没有
BDR
,但是必须存在
DR
。
条件匹配的选举过程
1. DR
、
BDR
的选举是通过
Hello
报文实现的,时间发生在
2-way
状态之后。
2.
路由器将自己的接口的
DR
优先级填写在
hello
报文的
“DR
优先级字段
”
。
3.
华为数通产品的接口
DR
优先级默认
1
,该参数值可以通过
(1).
![](https://img-blog.csdnimg.cn/21ed9abe674d4f04956c94ab08b04b18.png)
4.
当接口激活
OSPF
后,设备首先会检查网络上是否已经存在
DR
,如果存在则接收已经存在的
DR
设
备。否则优先级最大的设备成为
DR
,若优先级相同,则拥有最大
RID
的路由器成为
DR
设备。
5. BDR
选举过程与
DR
相同,但是是在
DR
选举之后进行。
![](https://img-blog.csdnimg.cn/20a4e1e38cf549ccaeef634c1fd9b7b9.png)
OSPF
工作过程
![](https://img-blog.csdnimg.cn/0c396a598cf441fb8f8db6e6ac415873.png)
1. 启动OSPF配置后,OSPF向本地所有运行了OSPF协议的接口以组播224.0.0.5发出hello报文;hello
报文中携带了本地的
RID
参数以及本地已知的邻居
RID
值。
(1).
邻居的
RID
获取方式:通过接收其他邻居的
hello
报文来获取本地邻居
(2).
建立邻居关系,并生成邻居表。
2. 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系,即2-way状态,仅使用hello报文保
活。该状态为稳定态。
3. 匹配成功的邻居开始建立邻接关系。
(1).
首先使用未携带数据的
DBD
报文进行主从关系选举,之后使用携带信息的
DBD
报文来共享数
据库目录;
(2).
然后本地通过对方共享的目录信息与本地数据库进行对比,通过使用
LSR
报文请求未知的
LSA
信息。
(3).
对端使用
LSU
报文回复完整
LSA
信息
(4).
本端使用
LSAck
报文确认回复。
4. 当本地接收到所有的未知LSA信息后,将信息存放在LSDB(数据链路库表)中。
(1).
之后基于本地数据库生成有向图和最短路径树。
(2).
根据最短路径树计算本地到达拓扑中所有未知网段的最短路径,并将其加入到
OSPF
路由表
中。
(3).
从
OSPF
路由表中选择最优路由加载入本地全局路由表。
5. 收敛完成后,hello报文周期保活。每30min进行一次周期链路刷新。
结构突变:
新增网段 --- 直连新增网段的设备使用LSU告知本地所有邻接关系,之后扩散到全网 --- 直接使用LSU报文告知邻居,邻居使用ACK进行确认。
断开网段 --- 直连断开网段的设备使用LSU告知本地所有邻接关系,之后扩散到全网 --- 直接使用LSU报文告知邻居,邻居使用ACK进行确认。
无法沟通 --- dead time 到时,断开邻接关系,清除通过该邻接生成的所有路由信息 --- dead time----4*hello time,状态为down,删除信息。
开销值 = 参考带宽/实际带宽
OSPF
基本配置:
![](https://img-blog.csdnimg.cn/510adf4cef3e411a9b5e78be20831c69.png)
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
位二进制,点分十进制表示;由连续的
0
和连续的
1
组成;其中
0
表示
IP
对应位不变,
1
代表 IP对应位可变。
![](https://img-blog.csdnimg.cn/9307cffc49e74c108ce4c468af7019c3.png)
注:
一条
OSPF
路径的
cost
等于从目的地到本地路由器沿途的所有入接口
cost
的总和
OSPF
报文格式
:
OSPF 不用 UDP 而是直接用 IP 数据报传送解封装快:
协议号:89
OSPF
报文头部:
长度:24字节
![](https://img-blog.csdnimg.cn/7d0a50cef4974ded8ca129cee18a1f25.png)
(1)版本 --- 恒为 2
(2)类型
----
描述
OSPF
数据包类型:
hello---1
dbd-----2
lsr------3
lsu----4
lsack----5
(3)报文长度
(4)路由器
ID----RID
(5)区域
ID---
发出该报文的接口所属区域的
ID
值。
(6)校验和
----
完整数据包
(7)验证类型:
指示该数据报文使用的认证类型
不认证
--0
;简单认证
---1
;
MD5
认证
---2
。
(8)验证数据:
用于报文认证的内容
若认证类型为不认证,则该字段全为
0
;
Hello
包:
![](https://img-blog.csdnimg.cn/435305dd960941ef911cab9c9633be85.png)
网络掩码:
(1)两台
OSPF
路由器如果通过
以太网接口
直连,那么双方的直连接口必须配置相同的网络掩码。
(2)如果一方在接口上收到的
hello
报文中,网络掩码字段与本地接口配置的掩码不同,则该路由
器忽略该
hello
报文,此时邻居关系无法建立。
注意:只有在华为设备中会检查网络掩码信息
。
Hello
间隔:
(1)如果两台路由器的
hello
时间间隔不同,则不会建立邻居关系。
(2)在
Broadcast
类型和
P2P
网络类型中
hello
时间间隔为
10S
;而在
NBMA
或
P2MP
网络类型中,
Hello
时间为
30S
。
可选项:
(1)有
8
个标记位,每一个标记位为
1
,则代表其符合
OSPF
的某种特性。
(2)特殊区域标记
。
路由器优先级:
(1)用于选举
DR
和
BDR
。
路由器失效时间:
(1)两台设备建立
OSPF
邻居需要确保死亡时间相同。
(2)默认情况下是
hello
间隔的
4
倍。
(3)若修改
hello
时间,则死亡时间随之改变;若修改死亡时间,则
hello
时间不变。
指定路由器---DR:
(1)该参数为网络中
DR
的接口
IP
地址。
(2)若没有选举出
DR
,则使用
0.0.0.0
来占位
备份指定路由器---BDR:
(1)该参数为网络中
DR
的接口
IP
地址。
(2)若没有选举出
BDR
,则使用
0.0.0.0
来占位
邻居:
(1)在直连链路上发现的有效邻居,此处填充的是邻居的
RID
值。
所有
224.0.0.X
格式的组播地址称为本地链路组播地址,目标
IP
是本地链路组播的数据包的
TTL
值被设
定为
1
。所有本地链路组播都存在对应的组播
MAC
地址,
01-00-5e-0
后
23
位,后
23
位为组播
IP
地址的后
23
位
![](https://img-blog.csdnimg.cn/ad14312993004956855ad9e001e1ceec.png)
限制邻居关系建立的参数:
![](https://img-blog.csdnimg.cn/806829a2e85e4710a2570aadf6c322f0.png)
子网掩码
(1)R1
修改掩码后,会立即将状态置为
down
,而
R2
会在
40S
死亡时间后进行状态切换。
(2)原因在于:
R1
在修改
IP
地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以会直 接重置状态机。而R2
则认为此时属于结构突变中的无法沟通
hello
时间:
[r1-GigabitEthernet0/0/0]ospf timer hello 20]
双方经过死亡时间后,状态发生改变
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 ----
区域认证]
可选项:
与修改掩码信息结果相同
DBD
包 :
(1)使用未携带数据的
DBD
报文进行主从关系选举
(2)使用携带数据的
DBD
报文进行拓扑目录共享
(3)使用未携带数据的
DBD
报文进行确认。
![](https://img-blog.csdnimg.cn/8043e7b3465046d6bb0fe4dee47dd2ee.png)
接口最大传输单元----MTU
(1)在华为
AR
系列路由器上,该参数值默认为
0
。
(2)该字段是用于进行OSPF
的
MTU
检测,而华为默认不开启
MTU
检测机制。
(3)[r1-GigabitEthernet0/0/0]ospf mtu-enable ----
开启
OSPF
的
MTU
检测机制]
![](https://img-blog.csdnimg.cn/6e4833f8bafc4ad9961136edcc13b967.png)
(4)如果设备两端开启了
OSPF
的
MTU
检测机制,则进行
MTU
检测,若双方的
MTU
参数相同,则
正常进行邻接关系建立。若不同,则双方卡在
exstart
状态
。
(5)可选项
---
与
Hello
报文内容中的可选项字段一致。
I------
主从关系选举
(1)如果该为为
1
,则代表该数据报文是用于进行主从关系选举。且此时的数据包中不会携带真实
的数据库目录信息。
M
(1)若为
1
,则代表后续还存在
DD
报文
(2)若为
0
,则代表后续没有
DD
报文
MS----代表是否为主设备
(1)若为
1
,则代表本设备为
Master
设备
(2)若为
0
,则代表本设备为
Slave
设备
DD
序列号
(1)用于确保
DD
报文传输的有序性和可靠性
。
(2)在
DD
报文交互的过程中,
DD
序列号被逐次加
1
。且
DD
序列号必须由
Master
路由器来决定,
而
Slave
路由器只能使用
Master
路由器发送的
DD
序列号来发送自己的
DD
报文。
(3)隐形确认机制
----
通过对方发送的数据包中的
DD
序列号,起到确认的效果。
(4)而主从关系选举就是为了完成隐形确认
LSR
包:
![](https://img-blog.csdnimg.cn/94d3e144fc364942b6e21631346af27b.png)
链路状态类型、链路状态
ID
、通告路由器
----LSA
的三元组信息。
---
通过这三个参数可以唯一标识出一
条
LSA
信息
。
LSU
包:
![](https://img-blog.csdnimg.cn/17e3d2ce7f97422b8b70b5adaa793793.png)
LSAck
包:
完成显式确认机制。
![](https://img-blog.csdnimg.cn/2093ff7439b140658a6889d0835b1be3.png)
OSPF
的接口网络类型:
P2P --- P2MP
MA:
BMA
NBMA
MA:
BMA
NBMA
SPF
的接口网络类型,实际上是说
OSPF
的接口在某种网络类型下的一种工作方式或特征。
![](https://img-blog.csdnimg.cn/2ed24524d0cf4c2ab404f0aed735fa02.png)
![](https://img-blog.csdnimg.cn/591a765877e64e58babab9def35fb6ef.png)
![](https://img-blog.csdnimg.cn/308fcd3319a74d52beee50976bc5b188.png)
广播型多路访问类型
---BMA
[r3]display ospf interface GigabitEthernet 0/0/0 ---查看OSPF网络接口类型
![](https://img-blog.csdnimg.cn/dbf1c603934b4b1ca8c09dc1ec3574bc.png)
OSPF在BMA类型的接口上通常以组播的方式发送hello报文、LSU及LSACK报文;以单播的形式发送 DD报文和LSR报文。
点到点类型
---P2P:
![](https://img-blog.csdnimg.cn/77c80d2667ec4b59be26eeaad391a8ec.png)
OSPF在网络类型为P2P的接口上以组播的方式发送所有数据报文。---不以单播形式发送的原因在于点到点网络可以不需要IP地址。 OSPF在点到点网络中不会选举DR和BDR.
开销值:48----在华为设备中,P2P网络的参考实际带宽默认为2.048 (E1标准)
3、环回接口
[r1-LoopBack0]ospf network-type broadcast ---修改接口网络类型为broadcast
开销值恒定为0,这样的结果就是修改参考带宽不会影响到环回接口的开销值。
type----华为使用P2P来填充,而cisco使用loopback填充。
所有通过OSPF学习到的环回接口的路由掩码都是32位,因为该接口是一个模拟的接口,实际没有连
接用户,所以并没有其他IP地址存在与该接口之下,只有一个可用IP。----如果使用其他掩码,可能会导
致环路或者路由黑洞。
witing----该字段代表正在进行条件匹配,当该计时器超时后,接口会认为自己为DR设备,且将接口的
状态切换为exstart状态。
![](https://img-blog.csdnimg.cn/c0445609f4cc46eb80b6d35e06c1da59.png)
华为将
tunnel
接口的传输速率定为了
64Kbps
。
Hub节点此时属于P2P类型,只能建立一个邻居,无法建立多个邻居,故修改Tunnel接口的网络类型
为Broadcast类型。
不同的网络类型,可以建立邻居关系,但是可能会造成不同的问题。故修改接口网络类型时,全网保
持一致。
如果链路两端,一端需要选举DR,另一端不需要,可能会成功建立full状态,也可能有一个卡在
exstart或2-way状态。
让分支节点放弃
DR
选举,在
MGRE
环境下,
hub
节点必须成为
DR
设备。否则网络路由信息无法学习
全面
。必须修改分支节点的接口优先级为
0。
点到多点类型
---P2MP
只能手工修改。
[r7-Tunnel0/0/0]ospf network-type p2mp
![](https://img-blog.csdnimg.cn/b6e0b5a6236243889a16175f5e2fe7d0.png)
在P2MP环境下,设备会学习所有邻居的接口IP地址,形成主机路由。
在P2MP环境下,只有hello报文是以组播形式发送,其他所有报文以单播形式发送数据
非广播型多路访问类型
----NBMA:
![](https://img-blog.csdnimg.cn/b33162deef70429db1a1dd55d6633aea.png)
在NBMA网络中,所有数据包以单播数据通讯。
在NBMA网络中,所有的
OSPF
路由器都需要使用peer命令单播指定邻居,该命令是双向的。
OSPF的不规则区域划分
:
非骨干区域必须与区域0直接相连
骨干区域不能被分割
不规则区域:
远离骨干的非骨干区域
不连续骨干区域
![](https://img-blog.csdnimg.cn/c7f4eb4a71974d909bce6903a29e218e.png)
根本解决方案:对
OSPF
网络重新规划与配置,满足
OSPF
区域划分规则
。
使用
tunnel
隧道:
使用vpn隧道解决不规则区域的问题
(1)可能产生选路不佳。
(2)造成重复更新。
(3)资源消耗
·这种方法问题太多,所以在工程中几乎见不到。仅作了解