开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);OSPF作为基于链路状态的协议,OSPF具有以下优点:
• OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
• OSPF支持无类型域间选路(CIDR)。
• OSPF支持对等价路由进行负载分担。
• OSPF支持报文认证。
由于OSPF具有以上优势,使得OSPF作为优秀的内部网关协议被快速接收并广泛使用。
掌握OSPF的基本配置命令
掌握如何查看OSPF的运行状态
掌握如何通过cost控制OSPF的选路
掌握OSPF发布默认路由的方法
掌握OSPF认证配置方法
拓扑图就是按照前面第一个实验的图,可按照前文配置物理接口和LoopBack接口的IP地址。
或者 使用
undo ip route-static all
命令删除前实验配置的静态路由。
设备命名、物理及逻辑接口的ip地址略去。
也可以在第一个实验基础上 使用
undo ip route-static all
命令可以删除前文第一个实验配置的静态路由。这样可以减小工作量。
# 查看AR1的路由表
可以看出是没有Loopback接口的相关路由,即loopback接口之间是ping不通的。
# ping Loopback接口
# 创建OSPF进程
[AR1]ospf 1 router-id 10.0.1.1 # 创建进程,并将逻辑接口设为设备id号
创建OSPF进程是配置与OSPF协议有关参数的首要步骤。
OSPF支持多进程,在同一台设备上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。可以在创建OSPF进程时指定进程号,若不指定,默认进程号为“1”。
router-id:用于手工指定设备的ID号,一般设为逻辑接口地址。如果没有通过命令指定ID号,系统会从当前接口的IP地址中自动选取一个作为设备的ID号。
# 创建OSPF区域并使能相应的接口
[AR1-ospf-1]area 0
area:命令用来创建OSPF区域,并进入OSPF区域视图。
[AR1-ospf-1-area-0.0.0.0]network 10.0.12.1 0.0.0.255
[AR1-ospf-1-area-0.0.0.0]network 10.0.13.1 0.0.0.255
[AR1-ospf-1-area-0.0.0.0]network 10.0.1.1 0.0.0.0 # Loopback逻辑接口
此时三个接口都被使能,同时属于区域0
network network-address wildcard-mask:用来指定运行OSPF协议的接口和接口所属的区域。
network-address为接口所在的网段地址。
wildcard-mask:通用符掩码、反掩码。
满足下面两个条件,OSPF协议才能在接口上运行:
接口的IP地址掩码长度≥network命令中的掩码长度。OSPF使用反掩码,例如0.0.0.255表示掩码长度24位。
接口的IP地址必须在network命令指定的网段范围之内。
[AR2]ospf router-id 10.0.1.2 # 默认进程1
[AR2-ospf-1]area 0
[AR2-ospf-1-area-0.0.0.0]network 10.0.12.2 0.0.0.255
[AR2-ospf-1-area-0.0.0.0]network 10.0.23.2 0.0.0.255
[AR2-ospf-1-area-0.0.0.0]network 10.0.1.2 0.0.0.0
当network命令配置的wildcard-mask为全0时,如果接口的IP地址与network-address配置的IP地址相同,则此接口也会运行OSPF协议。
[AR3]ospf 1 router-id 10.0.1.3
[AR3-ospf-1]area 0
[AR3-ospf-1-area-0.0.0.0]network 10.0.13.3 0.0.0.255
[AR3-ospf-1-area-0.0.0.0]network 10.0.23.3 0.0.0.255
[AR3-ospf-1-area-0.0.0.0]network 10.0.1.3 0.0.0.0
# 查看OSPF邻居
[AR1]display ospf peer
OSPF Process 1 with Router ID 10.0.1.1
Neighbors
Area 0.0.0.0 interface 10.0.12.1(GigabitEthernet0/0/0)'s neighbors
Router ID: 10.0.1.2 Address: 10.0.12.2
State: Full Mode:Nbr is Master Priority: 1
DR: 10.0.12.2 BDR: 10.0.12.1 MTU: 0
Dead timer due in 39 sec
Retrans timer interval: 0
Neighbor is up for 00:02:19
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.0 interface 10.0.13.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 10.0.1.3 Address: 10.0.13.3
State: Full Mode:Nbr is Master Priority: 1
DR: 10.0.13.3 BDR: 10.0.13.1 MTU: 0
Dead timer due in 34 sec
Retrans timer interval: 5
Neighbor is up for 00:01:47
Authentication Sequence: [ 0 ]
display ospf peer:命令用来显示OSPF中各区域邻居的信息。包括邻居所属的区域、邻居Router ID、邻居状态、DR和BDR路由器等信息。
- OSPF Process 1 with Router ID 1.1.1.1∶ 本地OSPF进程号为1与本端OSPF Router lD为1.1.1.1
- Router ID:邻居OSPF路由器ID
- Address:邻居接口地址
- GR State:使能OSPF GR功能后显示GR的状态(GR为优化功能),默认为Normal
- State:邻居状态,正常情况下LSDB同步完成之后,稳定停留状态为Full
- Mode:用于标识本台设备在链路状态信息交互过程中的角色是Master还是Slave
- Priority:用于标识邻居路由器的优先级(该优先级用于后续DR角色选举)
- DR:指定路由器
- BDR:备份指定路由器
- MTU:邻居接口的MTU值
- Retrans timer interval:重传LSA的时间间隔,单位为秒
- Authentication Sequence:认证序列号
# 查看IP路由表中由OSPF学习到的路由
[AR1]display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 3 Routes : 4
OSPF routing table status : <Active>
Destinations : 3 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.1.2/32 OSPF 10 1 D 10.0.12.2 GigabitEthernet0/0/0
10.0.1.3/32 OSPF 10 1 D 10.0.13.3 GigabitEthernet0/0/1
10.0.23.0/24 OSPF 10 2 D 10.0.12.2 GigabitEthernet0/0/0
OSPF 10 2 D 10.0.13.3 GigabitEthernet0/0/1
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
OSPF认证分为两种:
区域认证:在OSPF区域视图下配置,对本区域的所有接口下的报文进行认证。
接口认证:在接口视图下配置,对本接口的所有报文进行认证。
# 在R1上配置接口认证
[AR1]interface GigabitEthernet 0/0/0 # 与AR2的接口
[AR1- GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR1]interface GigabitEthernet 0/0/1 # 与AR3的接口
[AR1- GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR1-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 10.0.13.1 255.255.255.0
ospf authentication-mode md5 1 cipher %$%$>V0V$=pU#M(N8f&=lKS>s]MA%$%$ # 加密后的密码
#
return
由于cipher是密文口令类型,所以查看配置时以密文方式显示口令。
# 再次查看当前的邻居状态
[AR1]display ospf peer brief
OSPF Process 1 with Router ID 10.0.1.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
----------------------------------------------------------------------------
由于其他路由器还未配置认证,所以认证不通过,无邻居。
配置认证的密码要相同。
# 配置R2上的接口认证
[AR2]interface GigabitEthernet 0/0/0 # 与AR1的接口
[AR2- GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR2]interface GigabitEthernet 0/0/1 # 与AR3的接口
[AR2- GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR2-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 10.0.23.2 255.255.255.0
ospf authentication-mode md5 1 cipher %$%$x.y0~cMjg*HujNVEtZc3saW1%$%$
#
return
# 查看R2的邻居状态
[AR2]display ospf peer brief
OSPF Process 1 with Router ID 10.0.1.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 10.0.1.1 Full
----------------------------------------------------------------------------
此时R2已经可以和R1建立起正常的邻居关系。
# 在R3上配置区域认证
[AR3]ospf # 默认进程 1,已创建好则进入。
[AR3-ospf-1]area 0
[AR3-ospf-1-area-0.0.0.0]authentication-mode md5 1 cipher huawei
# 查看R3上的邻居状态
[AR3]display ospf peer brief
OSPF Process 1 with Router ID 10.0.1.3
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 10.0.1.1 Full
0.0.0.0 GigabitEthernet0/0/1 10.0.1.2 Full
----------------------------------------------------------------------------
此时R3已经和R1与R2建立邻接关系。
说明OSPF接口认证与区域认证产生的效果都是在设备的OSPF接口上实现OSPF报文认证。
别忘了所有设备 save 保存
假设R1为所有网络的出口,所以在R1上向OSPF宣告默认路由
# 在R1上宣告默认路由
[AR1]ospf
[AR1-ospf-1]default-route-advertise always
default-route-advertise:命令用来将默认路由通告到普通OSPF区域,如果没有配置always参数,本机路由表中必须有激活的非本OSPF默认路由时才向其他路由器发布默认路由。本例中,本地路由表中没有默认路由,所以需要增加always参数。
# 查看R2与R3上的IP路由表
[AR2]display ip routing-table
R2与R3上已经学习到相应的默认路由。
[AR3]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 15 Routes : 16
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 O_ASE 150 1 D 10.0.13.1 GigabitEthernet0/0/0 # 默认路由
10.0.1.1/32 OSPF 10 1 D 10.0.13.1 GigabitEthernet0/0/0
10.0.1.2/32 OSPF 10 1 D 10.0.23.2 GigabitEthernet0/0/1
…………………………………… # 略去
通过修改R1相应接口的Cost值,使得R1的 LoopBack0 接口通过 R1->R3->R2 的路径访问R2的 LoopBack0 接口
# 从R1的路由表可知,R1通过R1->R2的路径访问R2的LoopBack0接口的路由开销为1,从R1->R3->R2的路由开销为2,故只要使R1->R2的路由开销大于2即可。
[AR1]interface GigabitEthernet 0/0/0 # 与AR2的接口
[AR1- GigabitEthernet0/0/0]ospf cost 10 # 开销值设为 10
# 查看R1的路由表
[AR1-GigabitEthernet0/0/0]display ip routing-table
如图,此时R1访问R2的 LoopBack0 接口的下一跳为R3的 GigabitEthernet0/0/1 接口
# 通过Tracert命令验证
[AR1]tracert -a 10.0.1.1 10.0.1.2
traceroute to 10.0.1.2(10.0.1.2), max hops: 30 ,packet length: 40,press CTRL_C
to break
1 10.0.13.3 30 ms 10 ms 20 ms
2 10.0.23.2 30 ms 30 ms 20 ms
由此可看出,ospf 路由路径已改变,R1是通过路径 R1->R3->R2 的路径访问 R2。
删除OSPF时,要注意需要先将OSPF认证删除,接口认证的就依次进入认证过的接口进行删除,区域认证的进入区域删除即可。
# 接口认证删除
[AR1-GigabitEthernet0/0/0]undo ospf authentication-mode
# 区域认证删除
[AR2-ospf-1-area-0.0.0.0]undo authentication-mode