OSPF协议原理

    Ospf路由协议是一种链路状态路由协议,一般用于同一个路由域内,是一种基于SPF算法的路由协议。作为一种链路状态路由协议,ospf将链路状态广播数据包传递给某一区域的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分路由表传递给与其相邻的路由器。

     Ospf采用的是触发更新的方式,更新周期是30分钟,有效的解决了占用带宽过大的问题。以组播的方式发送报文,支持等代价负载均衡,没有规模限制,可适用于大型网络,并且ospf的收敛速度快,采用无环路径,支持区域划分。

      Router id是一个32bit的无符号整数,是一台路由器的唯一标识,在整个自治域系统内唯一。Ospf是基于ip的,其协议号是89.

Ospf协议区域

Ospf使用area实现了分层--两层模式,其区域号是一个32bit的整数,定义为ip address格式,但也可以用十进制整数表示。例:area 0.0.0.0 or area 0area0为保留骨干区,非骨干区一定要连接到骨干区。

路由选择

路由选取依靠的是整个链路的cost值的总和,而ospf协议的cost值应用于每个启动了ospf的链路,cost值是一个16bit的正数,范围为1--65535,而cost值越小链路越优。

 Ospf的五种报文

(1)hello报文 发现及维持邻居关系,选举DR BDR;

(2)DBD报文(数据库描述包) 描述本地LSDB的情况;

(3) LSR报文(链路状态请求包) 向对端请求本端没有或者对端更新的LSA;

(4)LSU报文(链路状态更新包) 向对方更新LSA

(5)LSAck报文(链路状态确认包)收到LSU之后,进行确认。  

案例1:公司A有5台路由器r1 r2 r3 r4 r5 ,由于公司规模的扩大,收购了B公司,而B公司拥有2台路由器。A公司网络运行的为ospf协议并分为area1 area0 area2 ,B公司运行的为rip协议,为了实现A B公司之间的通信,现做以下配置。

 

配置信息

r1的配置信息

Router(config)#no logg con
Router(config)#lin c 0
Router(config-line)#exec-t 0 0  路由器的优化命令
Router(config-line)#exit   
Router(config)#
Router(config)#int s 0/0
Router(config-if)#no sh
Router(config-if)#ip add 172.16.2.1 255.255.255.0    给端口配置ip地址
Router(config-if)#int loop 1
Router(config-if)#no sh
Router(config-if)#ip add
00:02:57: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up172.16.1.1 255.255.255.0
Router(config-if)#exit
Router(config)#router ospf 1  启动ospf协议
Router(config-router)#net
Router(config-router)#network 172.16.1.0 0.0.0.255 area 1  配置ospf协议
Router(config-router)#network 172.16.2.0 0.0.0.255 area 1
Router#sh ip rout  查看路由信息
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     172.16.0.0/16 is variably subnetted, 7 subnets, 2 masks
O IA    172.16.4.0/24 [110/192] via 172.16.2.2, 00:03:58, Serial0/0
O IA    172.16.5.0/24 [110/256] via 172.16.2.2, 00:01:49, Serial0/0
O IA    172.16.6.1/32 [110/257] via 172.16.2.2, 00:00:23, Serial0/0
O IA    172.16.7.0/24 [110/192] via 172.16.2.2, 00:03:12, Serial0/0
C       172.16.1.0/24 is directly connected, Loopback1
C       172.16.2.0/24 is directly connected, Serial0/0
O IA    172.16.3.0/24 [110/128] via 172.16.2.2, 00:05:50, Serial0/0

Router#sh ip rout  重分发rip后的路由表信息
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     172.16.0.0/16 is variably subnetted, 9 subnets, 2 masks
O E2    172.16.8.0/24 [110/100] via 172.16.2.2, 00:00:44, Serial0/0
O E2    172.16.9.0/24 [110/100] via 172.16.2.2, 00:00:44, Serial0/0
O IA    172.16.4.0/24 [110/192] via 172.16.2.2, 00:31:25, Serial0/0
O IA    172.16.5.0/24 [110/256] via 172.16.2.2, 00:29:15, Serial0/0
O IA    172.16.6.1/32 [110/257] via 172.16.2.2, 00:27:50, Serial0/0
O IA    172.16.7.0/24 [110/192] via 172.16.2.2, 00:30:38, Serial0/0
C       172.16.1.0/24 is directly connected, Loopback1
C       172.16.2.0/24 is directly connected, Serial0/0
O IA    172.16.3.0/24 [110/128] via 172.16.2.2, 00:33:16, Serial0/0
Router#conf t   
Router(config)#router ospf 1
Router(config-router)#area 1 stub  配置末节
Router#sh ip rout  
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 172.16.2.2 to network 0.0.0.0

     172.16.0.0/24 is subnetted, 2 subnets
C       172.16.1.0 is directly connected, Loopback1
C       172.16.2.0 is directly connected, Serial0/0
O*IA 0.0.0.0/0 [110/65] via 172.16.2.2, 00:00:19, Serial0/0

r2上的配置信息

Router(config)#int s 0/0
Router(config-if)#no sh
Router(config-if)#
00:09:19: %LINK-3-UPDOWN: Interface Serial0/0, changed state to up
00:09:20: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0, changed state to up
Router(config-if)#ip add 172.16.2.2 255.255.255.0
Router(config-if)#int s 0/1
Router(config-if)#no sh
Router(config-if)#
00:10:07: %LINK-3-UPDOWN: Interface Serial0/1, changed state to up
00:10:08: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1, changed state to up
Router(config-if)#ip add 172.16.3.1 255.255.255.0
Router(config-if)#exit
Router(config)#router ospf 1
Router(config-router)#net 172.16.2.0 0.0.0.255 area 1
Router(config-router)#net 172.16.3.0 0.0.0.255 area 0
Router(config-router)#exit
Router(config)#router ospf 1
Router(config-router)#area 1 stub
Router(config-router)#area 1 stub no-s

r3上的配置信息

r3
Router(config)#no logg con
Router(config)#lin c 0
Router(config-line)#exec-t 0 0
Router(config-line)#exit
Router(config)#int s 0/0
Router(config-if)#no sh
Router(config-if)#ip add 172.16.4.1 255.255.255.0
Router(config-if)#int s 0/1
Router(config-if)#no sh
Router(config-if)#ip add 172.16.3.2 255.255.255.0
Router(config-if)#int  s 0/2
Router(config-if)#no sh
Router(config-if)#ip add 172.16.7.1 255.255.255.0
Router(config-if)#exit
Router(config)#router ospf 1
Router(config-router)#net 172.16.3.0 0.0.0.255 area 0
Router(config-router)#net 172.16.4.0 0.0.0.255 area 0
Router(config-router)#net 172.16.7.0 0.0.0.255 area 0
Router(config)#router rip
Router(config-router)#net 172.16.7.0
Router(config-router)#exit
Router(config)#router ospf 1
Router(config-router)#redistribute rip metric 100 subnets  rip重发布
Router(config)#router rip
Router(config-router)#redistribute ospf 1 metric 10  ospf重发布

r4的路由信息

Router(config)#no logg con
Router(config)#lin c 0
Router(config-line)#exec-t 0 0
Router(config-line)#exit
Router(config)#int s 0/0
Router(config-if)#no sh
Router(config-if)#ip add 172.16.4.2 255.255.255.0
Router(config-if)#int s 0/1
Router(config-if)#no sh
Router(config-if)#ip add 172.16.5.1 255.255.255.0
Router(config-if)#exit
Router(config)#router ospf 1
Router(config-router)#net 172.16.4.0 0.0.0.255 area 0
Router(config-router)#net 172.16.5.0 0.0.0.255 area 2
Router(config-router)#exit
Router(config)#router ospf 1
Router(config-router)#area 2 stub
Router(config-router)#area 2 stub no-s

r5的路由信息

r5
Router(config)#no logg con
Router(config)#lin c 0
Router(config-line)#exec-t 0 0
Router(config-line)#exit
Router(config)#int s 0/1
Router(config-if)#no sh
Router(config-if)#ip add 172.16.5.2 255.255.255.0
Router(config-if)#int loop 1                    
Router(config-if)#no sh
Router(config-if)#ip add 172.16.6.1 255.255.255.0
Router(config-if)#exit
Router(config)#router ospf 1
Router(config-router)#net 172.16.5.0 0.0.0.255 area 2
Router(config-router)#net 172.16.6.0 0.0.0.255 area 2
Router(config-router)#exit
Router(config)#router ospf 1
Router(config-router)#area 2 stub 在ABR上配置完全末节

r6的配置信息

r6
Router(config)#no logg con
Router(config)#lin c 0
Router(config-line)#exec-t 0 0
Router(config-line)#int s 0/0
Router(config-if)#no sh
Router(config-if)#ip add 172.16.8.1 255.255.255.0
Router(config-if)#int s 0/2
Router(config-if)#no sh
Router(config-if)#ip add 172.16.7.2 255.255.255.0
Router(config-if)#exit
Router(config-router)#router rip  配置rip协议
Router(config-router)#net 172.16.7.0
Router(config-router)#net 172.16.8.0
Router(config-router)#exit
 

r7的配置信息

r7
Router(config-if)#int s 0/0                     
Router(config-if)#no ip add
Router(config-if)#ip add 172.16.8.2 255.255.255.0
Router(config-if)#int loop 1                    
Router(config-if)#no sh                         
Router(config-if)#ip add 172.16.9.1 255.255.255.0
Router(config-if)#exit
Router(config)#router rip
Router(config-router)#net 172.16.8.0
Router(config-router)#net 172.16.9.0
Router(config-router)#exit
Router#sh ip rout
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 3 subnets
C       172.16.8.0 is directly connected, Serial0/0
C       172.16.9.0 is directly connected, Loopback1
R       172.16.7.0 [120/1] via 172.16.8.1, 00:00:15, Serial0/0

Router#sh ip rout      重分发ospf后的路由表
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     172.16.0.0/16 is variably subnetted, 9 subnets, 2 masks
C       172.16.8.0/24 is directly connected, Serial0/0
C       172.16.9.0/24 is directly connected, Loopback1
R       172.16.4.0/24 [120/2] via 172.16.8.1, 00:00:25, Serial0/0
R       172.16.5.0/24 [120/11] via 172.16.8.1, 00:00:25, Serial0/0
R       172.16.6.1/32 [120/11] via 172.16.8.1, 00:00:25, Serial0/0
R       172.16.7.0/24 [120/1] via 172.16.8.1, 00:00:25, Serial0/0
R       172.16.1.1/32 [120/11] via 172.16.8.1, 00:00:25, Serial0/0
R       172.16.2.0/24 [120/11] via 172.16.8.1, 00:00:25, Serial0/0
R       172.16.3.0/24 [120/2] via 172.16.8.1, 00:00:25, Serial0/0
Router#