OSPF(Open Shortest Path First:开放最短链路优先)路由协议是一种基于链路状态的路由协议, 它保证了无路由环路,并且支持划分区域,通过SPF最短路径算法保证了区域内部中的路由器不会出现路由环路问题。另外,OSPF通过触发更新能够快速了解当前网络的拓扑变化。
OSPF还支持网络扩展, 也就是当网络上的路由器越来越多, 路由信息流量急剧增长的时候, OSPF通过划分为多个区域来限制每个区域的范围, 使得OSPF特别适用于大中型网络,也是目前使用最为广泛的路由协议之一,被大量使用在企业网和校园网中。
OSPF 作为一种内部网关协议(Interior Gateway Protocol,IGP),用于在同一个自治系统(AS)中的路由器之间交换路由信息。OSPF 的特性如下:
OSI层次:传输层协议,基于ip协议,协议号为89号
运行特征:链路状态协议
运行范围:IGP(内部网关协议)
有类无类:OSPF是无类路由协议
最佳路径:管理距离(100),度量值(cost) = 100M/带宽(m)
另外,OSPF将网络划分为四种类型: 广播多路访问型 (BMA)、 非广播多路访问型 (NBMA)、点到点型(Point-to-Point)、点到多点型(Point-to-MultiPoint)。不同的二层链路的类型需要 OSPF 不同的网络类型来适应。
1.链路:链路就是路由器用来连接网络的接口
2.链路状态:用来描述路由器接口及其与邻居路由器的关系,也就是整个链路状态信息构成的整个网络拓扑结构
3.区域划分:有相同的区域标志的一组路由器和网络的集合。在同一个区域内的路由器有相同的链路状态数据库
区域划分使得OSPF的网络拓扑变得更加层次性和立体化;
区域划分可以最大程度减少网络动荡和网络路径计算的消耗;
区域划分可以实现区域间防环;常规区域无法直接通信,必须将数据丢给骨干区域,由骨干统一转发(形成星型放射拓扑);
区域划分易于网络管理。
4.自治系统: 采用同一种路由协议交换路由信息的路由器及其网络构成一个自治系统
5.链路状态通告(LSA):LSA 用来描述路由器的本地状态,LSA 包括的信息有关于路由器接口的状态和所形成的邻接状态
6.最短路经优先(SPF)算法:是OSPF路由协议的基础。SPF算法有时也被称为Dijkstra算法,OSPF路由器利用SPF算法可以独立地计算出到达任意目的地的最佳路由。
通过前面的学习我们知道RIP路由协议是一个距离矢量协议,OSPF路由协议是一个链路状态协议,他们的对比如下:
1. 前者是传递路由条目,而后者是传递链路信息,也就是说RIP距离矢量动态路由协议只会把所存储的路由信息全部共享出来,而OSPF路由协议则是把运行OSPF协议的路由连接周边的路由信息全部做一个描述然后打包成一个数据包(即LSA,链路状态通告),然后该路由器以自己为中心把这个数据包通告给周边的所有邻居路由设备。
2. 前者网络能见度只有一跳,后者是整个网络拓扑,运行RIP路由协议的路由设备只知道自己身边连接的邻居路由设备,也就是说运行RIP路由协议的路由设备并不知道整个网络拓扑的信息,而运行OSPF路由协议的路由设备会把整个网络拓扑的信息全部共享出来。同时也说明了运行OSPF路由协议的路由设备消耗的内存更多,由于OSPF拥有整个网络拓扑的路由信息,因此基本不会出现环路,而RIP路由协议消耗的内存更少,容易出现路由环路的问题。
3. 前者计算路由是基于邻居,后者计算路由是基于自己,也就是说RIP的最佳路径是由邻居路由来计算的,而OSPF的最佳路径是通过收集周边的路由信息,然后再自己根据这些信息计算出来最佳路径。
4. 前者可能造成路由环路,后者基本无环路,通过前面的三点我们可以知道;由于RIP不知道全部的网络拓扑路由信息,因此会造成环路问题,而OSPF拥有全部的网络罗拓扑路由信息,不会出现路由环路的问题。
OSPF基本部署用到的命令如下所示:
router ospf 100 //ospf进程号
router-id 1.1.1.1 //路由标识符
network 1.1.1.1 0.0.0.0 area 0 //反掩码方式通告主类网络,area 0表示指定区域号为0
network 12.1.1.0 0.0.0.255 area 0
network 13.1.1.0 0.0.0.255 area 0
我们看到,OSPF部署中有ospf进程号,路由标识符,反掩码方式通告主类网络,区域号,下面是针对OSPF基本部署命令中的解释:
ospf进程号:范围1-65535,本地标识,用于标识或者区分不同的OSPF进程。邻居之间采用不同进程,即R1和R2采用不同的进程,依然可以正常通信。需要明白的是,这里所说的本地是2台不同的设备。因此R1和R2,R1和R3依然可以学习到对方路由,但是R2和R3由于不是邻居,所以学不到对方的路由。
路由标识符(router-id):路由器id是一个用来标识此路由器的ip地址,思科通过路由器配置中的环回接口中最高的ip地址来选取路由标识符,如果环回口没有ip地址,则选择物理接口的最大ip地址,RID用于唯一地标志OSPF路由器(在OSPF域内),不同路由器的RID不能一样,也就是说RID相当于每个路由器的身份证一样。
R1(config-router)#router-id 11.1.1.1
Reload or use “clear ip ospf process” command , for this to take effect
R1(config-router)#
如果要修改路由标识符时,直接修改会报错,错误信息提示需要重启OSPF进程,然后通过以下命令清除:clear ip ospf process
network通告主类网络:区域0(area 0)表示是一个OSPF网络中所必须的区域,也称为主干区域( Backbone Area),其他所有区域要求通过区域0互连到一起。
OSPF基本部署实验要求如下图所示:
分别在R1,R2,R3三台设备上配置OSPF协议,关于R1设备的配置具体如下所示:
R1(config)#router ospf 100
R1(config-router)#router-i
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 12.1.1.0 0.0.0.255 area 0
R1(config-router)#network 13.1.1.0 0.0.0.255 area 0
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R2设备配置具体如下所示:
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router ospf 100
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 12.1.1.0 0.0.0.255 area 0
*Mar 1 00:14:16.883: %OSPF-5-ADJCHG: Process 100, Nbr 1.1.1.1 on FastEthernet0/1 from LOADING to FULL, Loading Done
R2(config-router)#network 23.1.1.0 0.0.0.255 area 0
R2(config-router)#network 2.2.2.2 0.0.0.0 area 0
R2(config-router)#exit
R2(config)#
R3(config)#router ospf 100
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 13.1.1.0 0.0.0.255 area 0
*Mar 1 00:17:21.907: %OSPF-5-ADJCHG: Process 100, Nbr 1.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
R3(config-router)#network 23.1.1.0 0.0.0.255 area 0
*Mar 1 00:17:33.231: %OSPF-5-ADJCHG: Process 100, Nbr 2.2.2.2 on FastEthernet0/1 from LOADING to FULL, Loading Done
R3(config-router)#network 3.3.3.3 0.0.0.0 area 0
R3(config-router)#exit
R3(config)#
查看OSPF的邻居表, 数据库及路由表,例如通过show ip ospf neighbor命令查看R1设备的邻居表,具体信息如下所示:
上图中的Neighbor ID中的3.3.3.3和2.2.2.2是R1设备的两个邻居,它们的路由标识符(router-id)分别是3.3.3.3和2.2.2.2,其他参数的说明:
Pri:表示邻居路由器接口的优先级
State:当前邻居路由器接口的状态
Dead Time:清除邻居关系前等待的最长时间
Address: 邻居接口的地址
Interface:自己和邻居路由器相连接口
通过show ip ospf database命令查看R1设备的数据库表,具体信息如下所示:
OSPF 的数据库放置着整个 OSPF 区域0的“地图”信息, 即 LSA 信息,其他参数说明如下所示:
Link ID:是指 Link State ID,代表整个路由器,而不是某个链路
ADV Router:是指通告链路状态信息的路由器 ID
Age:老化时间
Seq#:序列号
Checksum:校验和
Link count:通告路由器在本区域内的链路数目
通过show ip route ospf命令查看路由表,具体信息如下所示:
可以看到其中2.2.2.2路由和3.3.3.3路由是R1设备从R2和R3学到的环回接口路由,前面大写的“O”表示是通过OSPF协议学到的路由信息。
然后R1去ping R2和R3设备的换回接口以测试网络的连通性,如下所示:
同样的方法在 R2 和 R3 上进行测试, 可以发现, 通过运行 OSPF 协议实现了全网连通, OSPF单区域基本部署实验到此完成。
下面是OSPF的常用配置:
show run | s r o //查看OSPF配置
show ip protocol //查看OSPF协议
show ip ospf neighobr //查看邻居表
show ip ospf database //查看OSPF链路状态数据库
show ip route ospf //查看路由表