一、ospf的原理
OSPF (Open Shortest Path First开放式最短路径优先)协议【协议号89】。
ospf协议是一种链路状态路由协议(ps:IS -IS协议也为链路状态路由协议 ),采用触发更新的方式来向链路中其他路由器通告链路增量变化的状态。
同时ospf也是一个内部网关协议(IGP Interior Gateway Protocal),它工作在一个自制系统内,用于自制系统内部的路由选择和信息交换。
在广播多路网络中(例如以太网),运行ospf协议的路由器会选举出DR 和BDR ,区域中的路由器会将链路状态信息发送以组播的方式发送给DR(地址为224.0.0.6),DR 再通过组播的方式将链路状态通告给区域内的其他路由器(地址为224.0.0.5)。
OSPF的协议管理距离(AD)是110。
ospf的特点
1.触发更新
2.发送的链路状态信息
3.以组播方式通告状态
4.metric 带宽
5.网络规模无限制
6.等代价负载均衡(cost值相同时才实现负载分担)
7.收敛速度快
8.无路由环
9.三张表
邻居表:或称邻接数据库(AD)存储邻居路由器的信息
链路状态数据库:通过LSA(链路状态通告)学习到的网络状态信息
路由表:或称转发数据库(FD),包含到达目标网络的最优路径
10.支持可变长子网掩码(vlsm)
11.支持子网不连续
12.体系化管理(分区域)
ospf定义的五种网络类型
1.点到点网络,比如T1线路,是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5,这个组播地址称为AllSPFRouters.
2.广播型网络,比如以太网,Token Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR以外发送的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters.
3.NBMA网络,比如X.25,Frame Relay,和ATM,不具备广播的能力,因此邻居要人工来指定,在这样的网络上要选举DR和BDR,OSPF包采用unicast的方式
4.点到多点网络 是NBMA网络的一个特殊配置,可以看成是点到点链路的集合. 在这样的网络上不选举DR和BDR.
5.虚链接: OSPF包是以unicast的方式发送
OSPF路由器在完全邻接之前,所经过的几个状态:
1.Down:此状态还没有与其他路由器交换信息。首先从其ospf接口向外发送hello分组,还并不知道DR(若为广播网络)和任何其他路由器。发送hello分组使用组播地址224.0.0.5。
2.Attempt: 只适于NBMA网络,在NBMA网络中邻居是手动指定的,在该状态下,路由器将使用HelloInterval取代PollInterval来发送Hello包。
3.Init: 表明在DeadInterval里收到了Hello包,但是2-Way通信仍然没有建立起来。
4.two-way: 双向会话建立,而RID彼此出现在对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该选举DR,BDR。)。
5.ExStart: 信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,并确定DD Sequence Number,路由器ID大的的成为Master.
6.Exchange: 信息交换状态,本地路由器和邻居交换一个或多个DBD分组(也叫DDP)。DBD包含有关LSDB中LSA条目的摘要信息)。
7.Loading: 信息加载状态:收到DBD后,将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则向对方发送一个LSR,用于请求新的LSA。
8.Full: 完全邻接状态,邻接间的链路状态数据库同步完成,通过邻居链路状态请求列表为空且邻居状态为Loading判断。
DR/BDR选举
1.比较hello报文的优先级,默认为1,优先级高的为DR ,次高的为BDR。当把优先级设置为0,该路由器将不能成为DR/BDR。
2.优先级相同的情况下,比较RID,高的为DR ,次高的为BDR。
二、案例
案例一:ospf虚链路与eigrp互联
案例说明:
有ospf区域和eigrp区域。ospf区域有area0、area1、area2,其中area1与骨干区域area0直接相连,area2与area1相连接。需要将ospf区域路由重发布到eigrp中,将默认路由重发布到ospf区域中。
实验设备:
6台cisco 3620路由器
实验要求:
1.发布路由信息
2.实现虚链路
3.ip汇总
案例思路:
由于ospf的三个区域中的area2未和area0骨干区域直接相连,所以要在area1 区域的两台边界路由器上配置虚链路,使area2区域间接和area0 相连。将默认路由发布到ospf区域时,要加上关键字”always “
实验拓扑
配置步骤:
R1的基本配置
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#
Router(config)#hostname r1
r1(config)#line console 0
r1(config-line)#logging synchronous
r1(config-line)#no exec-timeout
r1(config-line)#exit
r1(config)#interface loopback 1
r1(config-if)#ip address 192.168.1.1 255.255.255.0
r1(config-if)#no shutdown
r1(config)#interface serial 0/0
r1(config-if)#ip add 192.168.2.1 255.255.255.0
r1(config-if)#no shutdown
r1(config-if)#
R1的ospf area 0的配置
r1(config)#router ospf 1
r1(config-router)#network 192.168.1.0 0.0.0.255 area 0
r1(config-router)#network 192.168.2.0 0.0.0.255 area 0
R2的基本配置
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname r2
r2(config)#line con 0
r2(config-line)#logg sync
r2(config-line)#no exec
r2(config-line)#exit
r2(config)#int s0/0
r2(config-if)#ip add 192.168.2.2 255.255.255.0
r2(config-if)#no shut
r2(config-if)#int s0/1
r2(config-if)#ip add 192.168.3.1 255.255.255.0
r2(config-if)#no shut
r2(config-if)#int s0/2
r2(config-if)#ip add 192.168.7.1 255.255.255.0
r2(config-if)#no shut
R2的ospf 区域配置
r2(config)#router ospf 1
r2(config-router)#network 192.168.2.0 0.0.0.255 area 0
r2(config-router)#network 192.168.3.0 0.0.0.255 area 1
默认路由重分发到ospf中
r2(config-router)#default-information originate always
添加area1为虚拟链路
r2(config-router)#area 1 virtual-link 192.168.4.1
R2的eigrp的配置
r2(config)#router eigrp 100
r2(config-router)#network 192.168.7.0
将ospf重分发到eigrp中
r2(config-router)#redistribute ospf 1 metric 1000 1000 200 29 1000
查看r2的route id
r2#show ip ospf
Routing Process "ospf 1" with ID 192.168.7.1
r3的基本配置
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#line cons 0
Router(config-line)#logg sync
Router(config-line)#no exec
Router(config-line)#exit
Router(config)#hostname r3
r3(config)#int s0/1
r3(config-if)#ip add 192.168.3.2 255.255.255.0
r3(config-if)#no shut
r3(config-if)#int s0/0
r3(config-if)#ip add 192.168.4.1 255.255.255.0
r3(config-if)#no shut
r3(config-if)#
在r3中设置ospf
r3(config)#router ospf 1
r3(config-router)#network 192.168.3.0 0.0.0.255 area 1
r3(config-router)#network 192.168.3.0 0.0.0.255 area 2
在区域1中添加虚拟链路
r3(config-router)#area 1 virtual-link 192.168.7.1
查看r3的route id
r3#show ip ospf
Routing Process "ospf 1" with ID 192.168.4.1
r4的基本配置
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname r4
r4(config)#line cons 0
r4(config-line)#logg sync
r4(config-line)#no exec
r4(config-line)#exit
r4(config)#int s0/0
r4(config-if)#ip add 192.168.4.2 255.255.255.0
r4(config-if)#no shut
r4(config-if)#int lo1
r4(config-if)#ip add 192.168.5.1 255.255.255.0
r4(config-if)#no shut
R4的ospf区域配置
r4(config)#router ospf 1
r4(config-router)#network 192.168.4.0 0.0.0.255 area 2
r4(config-router)#network 192.168.4.0 0.0.0.255 area 2
r6的基本配置
Router>en
Router#conf t
Router(config)#host r6
r6(config)#line cons 0
r6(config-line)#logg sync
r6(config-line)#no exec
r6(config-line)#exit
r6(config)#int s0/2
r6(config-if)#ip add 192.168.7.2 255.255.255.0
r6(config-if)#no shut
r6(config-if)#int s0/0
r6(config-if)#ip add 192.168.8.1 255.255.255.0
r6(config-if)#no shut
r6(config-if)#
R6的eigrp配置
r6(config)#router eigrp 100
r6(config-router)#network 192.168.7.0
r6(config-router)#network 192.168.8.0
r7的基本配置
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname r7
r7(config)#line cons 0
r7(config-line)#logg sync
r7(config-line)#no exec
r7(config-line)#exit
r7(config)#int s0/0
r7(config-if)#ip add 192.168.8.2 255.255.255.0
r7(config-if)#no shut
r7(config-if)#int lo 1
r7(config-if)#ip add 192.168.9.1 255.255.255.0
r7(config-if)#no shut
r7(config-if)#
r7的eigrp配置
r7(config)#router eigrp 100
r7(config-router)#network 192.168.8.0
r7(config-router)#network 192.168.9.0
设备互通后的路由表截图如下
R1的路由表:
R2的路由表:
R3的路由表:
R4的路由表:
R6的路由表:
R7的路由表:
查看路由器的route id
ping命令的截图
转载于:https://blog.51cto.com/shdw1999/950702