网络技术:配置 OSPF 协议

OSPF 协议

开放最短路径优先(OSPF)是一个开放标准的路由选择协议,也就是说无论是什么厂商的路由器都可以使用 OSPF 协议配置动态路由。OSPF 基于 Dijkstra 算法进行工作的,OSPF 要构建一个最短路径树,然后使用最佳路径的计算结果来组建路由选择表。OSPF 也支持对相同目标的等价多路径路由,也支持 IP 和 IPv6 被路由协议。
OSPF 运行在某个自治系统内部,同时通过 OSPF 协议也可以将多个自治系统连接起来,用于连接 AS 的路由器被称为自治系统边界路由器(ASBR)。可以创建网络的多个不同的区域来保持路由更新的最小化,并阻止故障在整个网络中传播,基本思路就是要将更新限定在单一区域内。

OSPF 组件

数据库和表

OSPF 使用路由协议消息来交换路由信息,OSPF 路由协议的 3 个主要组件包括数据结构、路由协议消息、算法。数据结构是 OSPF 为了运作而建立的表或数据库,包括以下 3 种:

数据库 说明
邻接数据库 邻居表 路由器已建立双向通信的所有邻居路由器的列表
链路状态数据库 拓扑表 列出网络中所有其他路由器的相关信息,显示网络拓扑
转发数据库 路由表 在链路状态数据库上运行算法时生成的路由列表

分组类型

OSPF 使用路由协议消息来传递路由信息,这些数据包用于发现相邻路由器,并交换路由信息以保持相关网络的准确信息。

  1. Hello:发现、维持邻居路由器的可达性;
  2. 数据库描述:向邻居给出自己的链路状态数据库中,所有链路状态项目的摘要信息;
  3. 链路状态请求:向邻居请求发送某些链路状态的详细信息;
  4. 链路状态更新:使用洪泛法对全网更新链路状态;
  5. ASK:对更新分组的确认。

SPF 树

在一个区域的内部,每个路由器都要为同一区域中的每个网络计算最佳/最短路径。这个计算是基于拓扑数据库中收集的信息,并且还需要使用最短路径优先(SPF)算法。在 SPF 树中进行计算的路由器就是树根,而所有其他的网络则会被编排为树枝和树叶,运算出 OSPF 最佳路由插入到路由选择表中。如果某个路由器的接口存在于多个区域中,那么就需要为每个区域都构建一棵单独的树。
OSPF 使用开销作为度量,完整路径开销是沿这条路径的所有输出接口开销的总和,也被称之为累计开销,开销越低表示路径越好。接口的开销与接口的带宽成反比。因此带宽越高,开销就越低。负载和延时越多,开销越高。计算 OSPF 开销的公式为:

开销 = 参考带宽 / 接口带宽

默认的参考带宽为 10^8(100 000 000),因此公式为:

开销 = 100000000 bit/s / 接口带宽

利用这个规则,100Mbit/s 的快速以太网接口将有一个默认为 1 的 OSPF 开销,而 10Mbit/s 的以太网接口将有一个取值为 10 的开销。

IPv4 网络配置 OSPF

实验拓扑

设备 接口 IP 地址 子网掩码 默认网关
R1 G0/0 172.16.1.1 255.255.255.0 不适用
S0/0/0 172.16.3.1 255.255.255.252 不适用
S0/0/1 192.168.10.5 255.255.255.252 不适用
R2 G0/0 172.16.2.1 255.255.255.0 不适用
R2 G0/1 209.165.200.225 255.255.255.224 不适用
S0/0/0 172.16.3.2 255.255.255.252 不适用
S0/0/1 192.168.10.9 255.255.255.252 不适用
R3 G0/0 192.168.1.1 255.255.255.0 不适用
S0/0/0 192.168.10.6 255.255.255.252 不适用
S0/0/1 192.168.10.10 255.255.255.252 不适用
PC0 NIC 209.165.200.225 255.255.255.224 209.165.200.225
PC1 NIC 172.16.1.2 255.255.255.0 172.16.1.1
PC2 NIC 172.16.2.2 255.255.255.0 172.16.2.1
PC3 NIC 192.168.1.2 255.255.255.0 192.168.1.1

配置 OSPFv2 路由

使用进程 ID 10,每台路由器的路由器 ID:R1 = 1.1.1.1、R2 = 2.2.2.2、R3 = 3.3.3.3,LAN 接口设置为被动接口在所有三台路由器上配置 OSPF 路由。

R1(config)#router ospf 10
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 172.16.1.0 0.0.0.255 area 0
R1(config-router)#network 172.16.3.0 0.0.0.3 area 0
R1(config-router)#network 192.168.10.4 0.0.0.3 area 0
R1(config-router)#passive-interface GigabitEthernet0/0

R2(config)#router ospf 10
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 172.16.2.0 0.0.0.255 area 0
R2(config-router)#network 172.16.3.0 0.0.0.3 area 0
R2(config-router)#network 192.168.10.8 0.0.0.3 area 0
R2(config-router)#passive-interface GigabitEthernet0/0

R3(config)#router ospf 10
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 192.168.1.0 0.0.0.255 area 0
R3(config-router)#network 192.168.10.4 0.0.0.3 area 0
R3(config-router)#network 192.168.10.8 0.0.0.3 area 0
R3(config-router)#passive-interface GigabitEthernet0/0

验证 OSPF 路由

在每台路由器上,路由表应具有至拓扑中每个网络的路由。

R1#show ip route

R2#show ip route

R3#show ip route




每台 PC 都应能 ping 通其他两台 PC。

修改 OSPF 默认设置

调整 R1 和 R2 之间的 Hello 计时器和 Dead 计时器。

R1(config)# interface s0/0/0
R1(config-if)# ip ospf hello-interval 15
R1(config-if)# ip ospf dead-interval 60

在一小段时间后,与 R2 的 OSPF 连接将失败,连接的双方需要有相同的计时器才能保持邻接关系。

R2(config)# interface s0/0/0
R2(config-if)# ip ospf hello-interval 15
R2(config-if)# ip ospf dead-interval 60

调整 R1 上的带宽设置,首先配置下 R2 的 G0/1 所在的网络加入 OSPF 协议。

R2(config)#router ospf 10
R2(config-router)#network 209.165.200.224 0.0.0.31 area 0

此时从 R1 到 209.165.200.225 的路径通过 R2 路由。

在 R1 S0/0/0 接口上将带宽设置为 64 Kb/s,这不会改变实际端口速度,只是 OSPF 在 R1 上的处理的度量将用于计算最佳路由。

R1(config)# int s0/0/0
R1(config-if)# bandwidth 64

此时从 R1 到 209.165.200.225 的路径通过 R3 路由,这是因为 OSPF 首选开销较低的路径。

IPv6 网络配置 OSPF

实验拓扑

设备 接口 IPv6 地址/前缀 默认网关
R1 G0/0 2001:db8:cafe:1::1/64 不适用
S0/0/0 2001:db8:cafe:a001::1/64 不适用
S0/0/1 2001:db8:cafe:a003::1/64 不适用
R2 G0/0 2001:db8:cafe:2::1/64 不适用
S0/0/0 2001:db8:cafe:a001::2/64 不适用
S0/0/1 2001:db8:cafe:a002::1/64 不适用
R3 G0/0 2001:db8:cafe:3::1/64 不适用
S0/0/0 2001:db8:cafe:a003::264 不适用
S0/0/1 2001:db8:cafe:a002::2/64 不适用
PC1 NIC 2001:db8:cafe:1::10/64 fe80::1
PC2 NIC 2001:db8:cafe:2::10/64 fe80::2
PC3 NIC 2001:db8:cafe:3::10/64 fe80::3

这里给出配置的命令。

R1(config)#int g0/0
R1(config-if)#ipv6 enable
R1(config-if)#ipv6 address 2001:db8:cafe:1::1/64
R1(config-if)#no shutdown
R1(config-if)#int s0/0/0
R1(config-if)#ipv6 enable
R1(config-if)#ipv6 address 2001:db8:cafe:a001::1/64
R1(config-if)#no shutdown
R1(config-if)#int s0/0/1
R1(config-if)#ipv6 enable
R1(config-if)#ipv6 address 2001:db8:cafe:a003::1/64
R1(config-if)#no shutdown
 
R2(config)#int g0/0
R2(config-if)#ipv6 enable
R2(config-if)#ipv6 address 2001:db8:cafe:2::1/64
R2(config-if)#no shutdown
R2(config-if)#int s0/0/0
R2(config-if)#ipv6 enable
R2(config-if)#ipv6 address 2001:db8:cafe:a001::2/64
R2(config-if)#no shutdown
R2(config-if)#int s0/0/1
R2(config-if)#ipv6 enable
R2(config-if)#ipv6 address 2001:db8:cafe:a002::1/64
R2(config-if)#no shutdown
 
R3(config)#int g0/0
R3(config-if)#ipv6 enable
R3(config-if)#ipv6 address 2001:db8:cafe:3::1/64
R3(config-if)#no shutdown
R3(config-if)#int s0/0/0
R3(config-if)#ipv6 enable
R3(config-if)#ipv6 address 2001:db8:cafe:a003::2/64
R3(config-if)#no shutdown 

配置 OSPFv3 路由

使用进程 ID 10,每台路由器的路由器 ID:R1 = 1.1.1.1、R2 = 2.2.2.2、R3 = 3.3.3.3,-在每个接口上启用 OSPFv3。

R1(config)#ipv6 unicast-routing
R1(config)#ipv6 router ospf 10
R1(config-rtr)#router-id 1.1.1.1
R1(config-rtr)#passive-interface GigabitEthernet 0/0
R1(config)#interface GigabitEthernet 0/0
R1(config-if)#ipv6 ospf 10 area 0
R1(config-if)#interface Serial0/0/0
R1(config-if)#ipv6 ospf 10 area 0
R1(config-if)#interface Serial0/0/1
R1(config-if)#ipv6 ospf 10 area 0

R2(config)#ipv6 unicast-routing
R2(config)#ipv6 router ospf 10
R2(config-rtr)#router-id 2.2.2.2
R2(config-rtr)#passive-interface GigabitEthernet 0/0
R2(config)#interface GigabitEthernet 0/0
R2(config-if)#ipv6 ospf 10 area 0
R2(config-if)#interface Serial0/0/0
R2(config-if)#ipv6 ospf 10 area 0
R2(config-if)#interface Serial0/0/1
R2(config-if)#ipv6 ospf 10 area 0

R3(config)#ipv6 unicast-routing
R3(config)#ipv6 router ospf 10
R3(config-rtr)#router-id 3.3.3.3
R3(config-rtr)#passive-interface GigabitEthernet 0/0
R3(config)#interface GigabitEthernet 0/0
R3(config-if)#ipv6 ospf 10 area 0
R3(config-if)#interface Serial0/0/0
R3(config-if)#ipv6 ospf 10 area 0
R3(config-if)#interface Serial0/0/1
R3(config-if)#ipv6 ospf 10 area 0

验证连接

每台 PC 都应能 ping 通其他两台 PC。

R1#show ipv6 route

R2#show ipv6 route

R3#show ipv6 route




参考资料

《思科网络技术学院教程(第6版):扩展网络》,[加] Bob Vachon,[美] Allan Johnson 著,思科系统公司 译,人民邮电出版社
《CCNA 学习指南(第 7 版)》,[美] Todd Lammle 著,袁国忠 徐宏 译,人民邮电出版社

原文地址:https://www.cnblogs.com/linfangnan/p/14799623.html