说明:本篇接上一篇继续讲解
为了方便,我把R1/2/3/4/5的router id改成了回环网卡的IP。
OSPF用邻居机制来发现和维持路由的存在,邻居表存储了双向通信的邻居关系OSPF路由器列表的信息。
假如我发现R1和R2之间不能ping通,我们首先要考虑的就是R1和R2之间是否建立了邻居关系。那么如何判断它们建立了邻居关系呢?查看邻居表,命令是:dis ospf peer brief
我们看到上图R1和R2互为邻居:
router id
router id
;如果没有,则问题可能出现在以下几个地方:
- 看State是否为:
Full
;route id
有没有冲突;- IP有没有配置错误;
- 设备宣告的区域错误;
我们还可以通过命令:dis ospf error
来检查ospf协议的报错信息。你可以称他为排错命令。
例如:下图中我把R2和R3的route id改成了相同的ID都是3.3.3.3,R2和R3之间已经无法ping通,用检查命令发现问题归类到router id的问题。说明这个命令还是很管用的。
说明:上图中有错误的是非0的,前面是0的是没错误的。4代表这个错误发生的次数。
dis ospf error
这条命令思科是没有的。
下面是实验整个拓扑的邻居表:
<AR1>dis ospf peer brief
OSPF Process 1 with Router ID 1.1.1.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.1 Serial4/0/0 2.2.2.2 Full
----------------------------------------------------------------------------
<AR2>dis ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 3.3.3.3 Full
0.0.0.1 Serial4/0/0 1.1.1.1 Full
----------------------------------------------------------------------------
<AR3>dis ospf peer brief
OSPF Process 1 with Router ID 3.3.3.3
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 2.2.2.2 Full
0.0.0.2 GigabitEthernet0/0/1 192.168.1.4 Full
0.0.0.2 GigabitEthernet0/0/1 5.5.5.5 Full
----------------------------------------------------------------------------
<AR4>dis ospf peer brief
OSPF Process 1 with Router ID 4.4.4.4
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.2 GigabitEthernet0/0/0 3.3.3.3 Full
0.0.0.2 GigabitEthernet0/0/0 5.5.5.5 Full
----------------------------------------------------------------------------
<AR5>dis ospf peer brief
OSPF Process 1 with Router ID 5.5.5.5
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.2 GigabitEthernet0/0/0 3.3.3.3 Full
0.0.0.2 GigabitEthernet0/0/0 192.168.1.4 Full
----------------------------------------------------------------------------
OSPF用LSA(link state Advertisement链路状态通告)来描述网络拓扑信息,然后OSPF路由器用拓扑数据库来存储网络的这些LSA。
在OSPF协议中,每个路由器先1对1、1对多形成邻居,每个邻居之间传递链路信息,路由器把收集到的链路信息放到一张表里面,这张表就叫做拓扑表。然后运行ospf的spf算法(最短路径树算法),以收集到的链路信息为依据,计算出到达每个节点的最佳路由。
下面是R1的拓扑表:
<AR1>dis ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database #翻译:链路状态数据库
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 1005 48 8000000D 48
Router 1.1.1.1 1.1.1.1 1007 60 80000014 0
Sum-Net 23.1.1.0 2.2.2.2 1019 28 80000009 1
Sum-Net 5.5.5.5 2.2.2.2 1023 28 80000003 2
Sum-Net 3.3.3.3 2.2.2.2 1023 28 80000003 1
Sum-Net 4.4.4.4 2.2.2.2 1023 28 80000003 2
Sum-Net 2.2.2.2 2.2.2.2 1019 28 80000009 0
Sum-Net 192.168.1.0 2.2.2.2 1023 28 80000003 2
路由器对链路状态数据库进行SPF(Dijkstra)计算,而得出的OSPF路由表。
以拓扑表为参数和依据,把自己作为根节点,算出到达每一个枝梢节点的最佳路径。
以下是拓扑中R3的路由表:
<AR3>display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 18 Routes : 18
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 49 D 23.1.1.2 GigabitEthernet0/0/0
2.2.2.2/32 OSPF 10 1 D 23.1.1.2 GigabitEthernet0/0/0
3.3.3.0/24 Direct 0 0 D 3.3.3.3 LoopBack0
3.3.3.3/32 Direct 0 0 D 127.0.0.1 LoopBack0
3.3.3.255/32 Direct 0 0 D 127.0.0.1 LoopBack0
4.4.4.4/32 OSPF 10 1 D 192.168.1.4 GigabitEthernet0/0/1
5.5.5.5/32 OSPF 10 1 D 192.168.1.5 GigabitEthernet0/0/1
12.1.1.0/24 OSPF 10 49 D 23.1.1.2 GigabitEthernet0/0/0
23.1.1.0/24 Direct 0 0 D 23.1.1.3 GigabitEthernet0/0/0
23.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.1.0/24 Direct 0 0 D 192.168.1.3 GigabitEthernet0/0/1
192.168.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
整体看来:每个路由器先1对1、1对多形成邻居关系,生成邻居表。每个邻居之间传递链路状态信息,路由器把收集到的链路状态信息放到一张表内,生成拓扑表。然后OSPF协议以收集到的链路状态信息为依据,通过ospf的spf算法(最短路径树算法),计算出到达每个节点的结果,即最佳路由。并把这些最佳路由放到一张新的表中,生成OSPF路由表。
没有邻居表,就无法收集链路状态信息,也就没有链路状态信息数据库,自然也就没有拓扑表。没有拓扑表,就没有计算的依据,自然也就无法计算出最佳路由。也就没有OSPF路由表。
就没有OSPF路由表。