简介:OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运做于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议。算法
实验拓扑数据库
1. 实验步骤网络
1. 配置 R1,R2,R3 的相应接口 IP 地址,保证连通性。而且在每一个路由器上配置一个环回口 0,其地址格式为 X.X.X.X/24。
2. 而后配置 R1 和 R2 之间的区域 0。
R1(config)#router ospf ? //选择一个进程号,进程号只是本地有意义。
<1-65535> Process ID
R1(config)#router ospf 1
R1(config-router)#network 1.1.1.0 0.0.0.255 area 0 //将知足该范围的 IP 接口加入
OSPF 进程中,而且属于区域 0
R1(config-router)#network 10.10.1.0 0.0.0.255 area 0
R1(config-router)#exitide
R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2 //手工指定 OSPF 路由器 ID 为 2.2.2.2
R2(config-router)#network 10.10.1.0 0.0.0.255 area 0
R2(config-router)#exit
R2(config)#
*Mar 1 00:03:52.351: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Ethernet0/1 from
LOADING to FULL, Loading Done //邻居已经同步
对于 OSPF 的路由器 ID(32bit)的选择,采用以下规则:
a) 若是存在命令 router-id X.X.X.X,那么优先采用
b) 若是没有手工指定,那么选取 IP 地址最高的环回口地址做为 RID。即便该环回口并无参与 OSPF 进程
c) 若是没有环回口,那么选取 IP 地址最高的物理接口地址做为 RID。即便该物理接口没有参与 OSPF 进程,但必定要 UP。
RID 对于 OSPF 很是重要,若是没有 RID,OSPF 便没法正常运行。所以建议养成手工指定 RID 的习惯。
3. 配置 R2 和 R3,使得实验拓扑得以完成。
R2(config-router)#network 2.2.2.0 0.0.0.255 area 1 //将 R2 的环回口放在区域 1 中
R2(config-router)#network 12.1.1.0 0.0.0.255 area 1
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 12.1.1.0 0.0.0.255 a 1
R3(config-router)#network 3.3.3.0 0.0.0.255 area 1
R3(config-router)#
*Mar 1 00:13:01.379: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Ethernet0/1 from
LOADING to FULL, Loading Done //R2 和 R3 之间 OSPF 同步测试
在 R2 上使用命令 show ip ospf interface brief 能够查看到 R2 上参与 OSPF 进程的接口状态,参与接口依赖于 network 命令,而且被动接口省略输出。spa
在 R2 上使用命令 show ip protocols 获得的输出,能够显示出 R2 上现存路由进程的相关信息,而且包括 network 命令的明细。orm
在 R2上使用命令 show ip ospf neighbor获得的输出, 能够显示出 R2目前尚存的 OSPF路由器邻居,而且各自邻居的状态,各个邻居以 RID 区别,以及发现接口和地址。router
OSPF 的 DR,BDR 选举的规则为:接口
a) 首先看接口优先级,优先级大的为优进程
b) 若是优先级相同,那么比较路由器 RID,RID 大的为优
c) 选举完成之后,不具备抢占性
更改接口优先级的命令为:
R1(config)#int f0/0
R1(config-if)#ip ospf priority ?
<0-255> Priority //其中 0 表明直接退出选举,成为 Drother
在 R2 上使用命令 show ip ospf database 获得的输出,其中给出了区域0和区域1的链路状态。该命令可以输出本地路由器所包含的链路状态数据库的描述信息集合。其中database 的实际内容为邻居之间同步得到的 LSA(链路状态通告)
在 R2 上使用命令 show ip route 输出 R2 的路由表。发现 1.1.1.0/24 的路由显示为1.1.1.1/32,一样的状况发生在 R3 的环回口上。
回顾上述输出,咱们发现:
OSPF 路由器将环回口的网络类型认为是一种特殊的类型, LOOPBACK 类型。所以无论环回口前缀长度为多少,都一致认为其长度为 32。
所以,只须要更改环回口的网络类型便可。一般更改成点到点网络类型便可。
R1(config)#int lo0
R1(config-if)#ip ospf network point-to-point
R2(config)#int lo0
R2(config-if)#ip ospf network point-to-point
R3(config)#int lo0
R3(config-if)#ip ospf network point-to-point
而后再次查看 R2 的路由表:
环回口的子网掩码位数已经正常。
最后测试一下连通性!
吴迪
2017.12.18