开放式最短路径优先 OSPF(Open Shortest Path First)是 IETF 组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
在OSPF出现前,网络上广泛使用 RIP(Routing Information Protocol)作为内部网关协议。由于 RIP 是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被 OSPF 取代。OSPF 作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF 还有以下优点:
- OSPF 采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
- OSPF 支持无类型域间选路(CIDR)。
- OSPF 支持对等价路由进行负载分担。
- OSPF 支持报文加密。
由于 OSPF 具有以上优势,使得 OSPF 作为优秀的内部网关协议被快速接收并广泛使用。
OSPF 基本原理
OSPF 协议路由的计算过程可简单描述如下:
(1) 建立邻接关系,过程如下:
1. 本端设备通过接口向外发送Hello报文与对端设备建立邻居关系。
2. 两端设备进行主/从关系协商和DD报文交换。
3. 两端设备通过更新LSA完成链路数据库LSDB的同步。
此时,邻接关系建立成功。
(2) 路由计算
OSPF 采用 SPF(Shortest Path First)算法计算路由,可以达到路由快速收敛的目的。
命令功能
ospf
命令用来创建并运行OSPF进程。undo ospf
命令用来关闭OSPF进程。
缺省情况下,系统不运行OSPF协议,即不运行OSPF进程。
命令格式
ospf [ process-id | router-id router-id | vpn-instance vpn-instance-name ]
undo ospf process-id [ flush-waiting-timer time ]
参数说明
使用指南
使用场景
创建OSPF进程是配置与OSPF协议有关参数的首要步骤。
OSPF支持多进程,在同一台设备上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。
设备的ID可以手工配置,如果没有通过命令指定ID号,系统会从当前接口的IP地址中自动选取一个作为设备的ID号。其选择顺序是:Loopback口的IP地址从大到小排序,然后非Loopback接口IP地址从大到小排序,按照排序后的ID选择第二大的ip作为ID。当设备出现router id冲突时,会将该IP从以上排序中剔除。以下3种情况会进行Router ID的重新选取:
- 通过本命令重新配置OSPF的Router ID,然后重启OSPF进程
- 重新配置系统的Router ID,并且重新启动OSPF进程
- 原来被选举为系统的Router ID的IP地址被删除并且重新启动OSPF进程
配置影响
使用undo ospf命令关闭OSPF进程后,接收端会一直保留这个OSPF进程早先产生的已无效的LSA,占用了系统内存,只有这些LSA超时(即LSA中的age字段达到3600秒)才会被删除。使用undo ospf process-id flush-waiting-timer time命令关闭OSPF进程后,设备会在设定的时间内再次产生自己的LSA,并将其age字段置为3600。其他设备收到age字段为3600的LSA后,会立刻删除保留在本机的此条LSA。若本机没有在设定的时间发送完所有的LSA,则其他设备仍会继续保留着一部分已无效的LSA。
注意事项
设备的一个接口只能属于某一个OSPF进程。如果指定了VPN实例,那么OSPF进程属于此实例,否则属于全局实例。进程实例不可更改,只能在第一次使能该进程时指定。
使用实例
<Huawei> system-view
[Huawei] ospf 100 router-id 1.1.1.1
简单示例
如下图所示,所有的路由器都运行OSPF,其中粉色区域都在同一网段(可观察期间主从关系的现象),蓝色区域不在同一网段。要求 AR1 能够 ping 通 7.7.7.7,且 4.4.4.4 访问 7.7.7.7 时,去走 AR6,回走 AR5。
配置思路
- 配置各路由器的接口IP。
- 使各路由器上运行OSPF(都在area0区域)。
- 按照要求方便实验,配置AR4和AR7上的环回地址。
- 在AR4和AR7上分别宣告两个环回口地址。
- 在AR5和AR6上设置相对应接口的开销值。
操作步骤
(1) 配置各路由器接口的IP地址
这里以AR1举例,其余路由器命令一致,只需进入相应接口修改IP地址即可。
<Huawei> system-view
[Huawei] sysname R1
[R1] interface gigabitethernet 0/0/0
[R1-GigabitEthernet0/0/0] ip address 192.168.1.1 255.255.255.0
[R1-GigabitEthernet0/0/0] quit
检查各路由器接口地址是否配置成功:
[R1]display ip interface brief
结果如下图:
(2) 配置各路由器OSPF基本功能
以AR1举例,其余路由器命令一致。可由路由器ID进行RID命名(可默认),如AR1对应RID为1.1.1.1,然后根据当前路由器所处网段来宣告不同网段。
[R1]ospf 100 router id 1.1.1.1
[R1-ospf-100]area 0
[R1-ospf-100-area-0.0.0.0]network 192.168.1.0 0.0.0.255
(3) 配置AR4和AR7上的环回地址(LoopBack)
两台配置命令一样,修改IP即可。(这里以 AR4 为例,命令已简写)
<R4>sy
Enter system view, return user view with Ctrl+Z.
[R4]int lo 0
[R4]ip add 4.4.4.4
[R4-LoopBack0]q
[R4]dis ip int br
....
(4) 宣告环回地址
两台配置命令一样,修改IP即可。
[R4-ospf-100-area-0.0.0.0]network 4.4.4.4 0.0.0.0
检查当前宣告的直连网络:
[R4-ospf-100-area-0.0.0.0]display this
(5) 配置OSPF的接口开销值
这里以 AR5 为例修改,AR6也是相同的命令。
首先我们检查当前AR4的路由表:
很清楚的看到当前到达7.7.7.7有两条路径,为满足需求在优先级一致的情况下,依据路由加表原则我们修改AR5下的g0/0/1接口的开销即可,这里我们修改为 2。
<R5>system-view
[R5]interface gigabitethernet 0/0/1
[R5]ospf cost 2
修改完成后再查看当前AR4的路由表:对比上一次的路由表可以发现当前路由已经只有一条。
示例验证
(1) AR1来 ping
通 7.7.7.7
由AR1的路由表可以看到是有到达7.7.7.7的路由的,并且下一跳是192.168.1.4,此时确定结果无误。
(2) 4.4.4.4 访问 7.7.7.7 时,去走 AR6,回走 AR5。
这里我们需要使用的tracert命令跟踪。
1.在AR4上以4.4.4.4为源地址去向7.7.7.7,可以看到选择的是下面的路由。
2.在AR7上以7.7.7.7为源地址去向4.4.4.4,可以看到选择的是上面的路由。
相关配置
AR1:
#
interface GigabitEthernet0/0/0
ip address 192.168.1.1 255.255.255.0
#
ospf 100 router-id 1.1.1.1
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
AR2:
#
interface GigabitEthernet0/0/0
ip address 192.168.1.2 255.255.255.0
#
ospf 100 router-id 2.2.2.2
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
AR3:
#
interface GigabitEthernet0/0/0
ip address 192.168.1.3 255.255.255.0
#
ospf 100 router-id 3.3.3.3
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
AR4:
#
interface GigabitEthernet0/0/0
ip address 192.168.1.4 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 45.1.1.4 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 46.1.1.4 255.255.255.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
ospf 100 router-id 4.4.4.4
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 45.1.1.0 0.0.0.255
network 46.1.1.0 0.0.0.255
network 192.168.1.0 0.0.0.255
#
AR5:
#
interface GigabitEthernet0/0/0
ip address 45.1.1.5 255.255.255.0
ospf cost 1
#
interface GigabitEthernet0/0/1
ip address 57.1.1.5 255.255.255.0
ospf cost 2
#
ospf 100 router-id 5.5.5.5
area 0.0.0.0
network 45.1.1.0 0.0.0.255
network 57.1.1.0 0.0.0.255
#
AR6:
#
interface GigabitEthernet0/0/0
ip address 67.1.1.6 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 46.1.1.6 255.255.255.0
ospf cost 2
#
ospf 100 router-id 6.6.6.6
area 0.0.0.0
network 46.1.1.0 0.0.0.255
network 67.1.1.0 0.0.0.255
#
AR7:
#
interface GigabitEthernet0/0/0
ip address 57.1.1.7 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 67.1.1.7 255.255.255.0
#
interface LoopBack0
ip address 7.7.7.7 255.255.255.255
#
ospf 100 router-id 7.7.7.7
area 0.0.0.0
network 7.7.7.7 0.0.0.0
network 57.1.1.0 0.0.0.255
network 67.1.1.0 0.0.0.255
#