什么是OSPF?
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。
OSPF基础概念
Router ID
如果要运行OSPF协议,必须存在Router ID。Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。
Router ID的设定有两种方式:
-
通过命令行手动配置,在实际网络部署中,建议手工配置OSPF的Router ID,因为这关系到协议的稳定。
-
通过协议自动选取。
如果没有手动配置Router ID,设备会从当前接口的IP地址中自动选取一个作为Router ID。其选取顺序是:
优先从Loopback地址中选择最大的IP地址作为Router ID。
如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为Router ID。
在路由器运行了OSPF并确定了Router ID后,如果该Router ID对应的接口Down或者接口消失(例如执行了undo interface loopback loopback-number)或者出现更大的IP地址,OSPF将仍然保持原Router ID。只有重新配置系统的Router ID或者OSPF的Router ID,并且重新启动OSPF进程后,才会进行Router ID的重新选取。
链路状态
OSPF是一种链路状态协议。可以将链路视为路由器的接口。链路状态是对接口及接口与相邻路由器的关系的描述。例如接口的信息包括接口的IP地址、掩码、所连接的网络的类型、连接的邻居等。所有这些链路状态的集合形成链路状态数据库。
COST
OSPF使用cost“开销”作为路由度量值。
每一个激活OSPF的接口都有一个cost值。OSPF接口cost=100M/接口带宽,其中100M为OSPF的参考带宽(reference-bandwidth)。
一条OSPF路由的cost由该路由从路由的起源一路到达本地的所有入接口cost值的总和。
报文类型
报文类型 | 报文作用 |
Hello报文 | 周期性发送,用来发现和维持OSPF邻居关系。 |
DD报文(Database Description packet) | 描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。 |
LSR报文(Link State Request packet) | 用于向对方请求所需的LSA。 设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。 |
LSU报文(Link State Update packet) | 用于向对方发送其所需要的LSA。 |
LSAck报文(Link State Acknowledgment packet) | 用来对收到的LSA进行确认。 |
OSPF是如何工作的?
OSPF协议路由的计算过程可简单描述如下:
-
建立邻接关系,过程如下:
-
本端设备通过接口向外发送Hello报文与对端设备建立邻居关系。
-
两端设备进行主/从关系协商和DD报文交换。
-
两端设备通过更新LSA完成链路数据库LSDB的同步。
此时,邻接关系建立成功。
路由计算
OSPF采用SPF(Shortest Path First)算法计算路由,可以达到路由快速收敛的目的。
实验
拓扑图
实验步骤:
给PC配置ip及网关
各路由配置内容
R1
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1 #更改路由名
[R1]un in en #关闭信息提示
Info: Information center is disabled.
[R1]
[R1]int e0/0/0 #进入接口
[R1-Ethernet0/0/0]ip add 192.168.1.2 24 #设置ip
[R1-Ethernet0/0/0]int e0/0/1
[R1-Ethernet0/0/1]ip add 192.168.2.1 24
[R1-Ethernet0/0/1]q
[R1]ospf router-id 1.1.1.1 #设置标记符router-id
[R1-ospf-1]area 0 #进入区域
[R1-ospf-1-area-0.0.0.0]network 192.168.1.2 0.0.0.0 #宣告ip
[R1-ospf-1-area-0.0.0.0]network 192.168.2.1 0.0.0.0
R2
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R2
[R2]un in en
Info: Information center is disabled.
[R2]int e0/0/0
[R2-Ethernet0/0/0]ip add 192.168.2.2 24
[R2-Ethernet0/0/0]int e0/0/1
[R2-Ethernet0/0/1]ip add 192.168.3.1 24
[R2-Ethernet0/0/1]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.6.1 24
[R2-GigabitEthernet0/0/0]q
[R2]ospf router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 192.168.3.1 0.0.0.0
[R2-ospf-1-area-0.0.0.0]area 2
[R2-ospf-1-area-0.0.0.2]network 192.168.6.1 0.0.0.0
R3
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R3
[R3]un in en
Info: Information center is disabled.
[R3]int e0/0/0
[R3-Ethernet0/0/0]ip add 192.168.3.2 24
[R3-Ethernet0/0/0]int e0/0/1
[R3-Ethernet0/0/1]ip add 192.168.4.1 24
[R3-Ethernet0/0/1]q
[R3]ospf router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.3.2 0.0.0.0
[R3-ospf-1-area-0.0.0.0]area 1
[R3-ospf-1-area-0.0.0.1]network 192.168.4.1 0.0.0.0
R4
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R4
[R4]un in en
Info: Information center is disabled.
[R4]int e0/0/0
[R4-Ethernet0/0/0]ip add 192.168.4.2 24
[R4-Ethernet0/0/0]int e0/0/1
[R4-Ethernet0/0/1]ip add 192.168.5.1 24
[R4-Ethernet0/0/1]q
[R4]ospf router-id 4.4.4.4
[R4-ospf-1]area 1
[R4-ospf-1-area-0.0.0.1]network 192.168.4.2 0.0.0.0
[R4-ospf-1-area-0.0.0.1]network 192.168.5.1 0.0.0.0
R5
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R5
[R5]un in en
Info: Information center is disabled.
[R5]int e0/0/1
[R5-Ethernet0/0/1]ip add 192.168.7.1 24
[R5-Ethernet0/0/1]int e0/0/0
[R5-Ethernet0/0/0]ip add 192.168.6.2 24
[R5-Ethernet0/0/0]q
[R5]ospf router-id 5.5.5.5
[R5-ospf-1]area 2
[R5-ospf-1-area-0.0.0.2]network 192.168.6.2 0.0.0.0
[R5-ospf-1-area-0.0.0.2]network 192.168.7.1 0.0.0.0