OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。适用于IPv4的OSPFv2协议定义于RFC 2328,RFC 5340定义了适用于IPv6的OSPFv3。
开放式最短路径优先(Open Shortest Path First,OSPF)是目前广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障。
OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
多个路由跑相同路由进程协议的区域 成为AS区域系统。
在区域内部跑的进程协议
如:RIP,OSPF,ISIS等
在区域外跑的进程协议
如图,A通过建立邻接关系,学习到所有的链路状态信息,即所有的网段信息。
A将学习到的链路状态信息存储在自己的链路状态数据库中。
A的链路状态数据库通过 Dijkstra算法 算出A到达每一个地点的最短路径,形成最短路径树。最终生成路由表。
OSPF在AS内划分多个区域,其中必须有个骨干区域,且骨干区域有且仅有一个。骨干区域负责区域间路由信息传播。
另,其他区域必须经过骨干区域转发,所有区域必须和骨干区域直接连接!
其他称作标准区域或非主干区域。
区域ID可以表示层一个十进制的数字。即area 0(0-9)
每个OSPF路由器只维护所在区域的完整链路状态信息
OSPF区域内唯一标识路由器的IP地址。
优先选取loopback接口最为Router ID,因为loopback是路由器上的虚接口,这样的话,即使物理端口损坏也不影响Router ID。
也可以使用 router-id 命令指定Router ID。这个命令是我们常用的。
DR ,BDR 和其他路由中
1 DR: 区域当中的主路由,有且仅有一个
2 BDR:区域当中的备份路由,有且仅有一个
3 除了DR 和 BDR 都是其他路由
其他路由器只和 DR 和 BDR 形成邻接关系。主路由负责通告信息,备份路由负责准备顶替 DR
其他路由器发送信息只能到达DR 和BDR(一个组播) ,DR再发送通告信息(第二个组播)。其中存在两个组播信息。
DR 和 BDR 负责监控其他路由发来的信息。
1、自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的
将被选举为BDR。
2、手工选择DR和BDR
路由器的优先级可以影响一个选举过程,但是他不能强制更换已经存在的DR或BDR路由器。
意思就是如果第一个路由器已经开启了DR,然后第二个路由器也开启了BDR,那么第三个路由器就算数值比他们高那也是无法更改现有的DR和BDR!
DR、BDR向Dothers发送的组播的地址是 224.0.0.6
Dothers向DR和BDR发送的组播的地址是 224.0.0.5
COST=10^8/BW BW(带宽) COST 数制越小越好,说明带宽越高
COST越低,带宽越高,路径越短。
承载在IP数据包,协议号是89
①点到点网络(Point-to-Point)
②广播多路访问网络(Broadcast MultiAccess, BMA)
③非广播多路访问网络(None Broadcast MultiAccess,NBMA)
④点到多点网络(Point-to-Multipoint)
①可适应大规模网络
②路由变化收敛速度快
③无路由环
④支持变长子网掩码VLSM
⑤支持区域划分
⑥支持以组播地址发送协议报
最早是静态路由协议,静态路由协议的弊端是必须在每一台机器的端口上配置去往的网段,下一跳。后来出现了距离矢量路由协议RIP,通过跳数(Hop Count)来衡量到达目的地址的距离。它可以做到对运行了协议的机器自动发布路由,省下了繁琐的路由配置过程。
但是rip协议最多只能达到15跳,而且存在着收敛慢、路由环路、可扩展性差等问题,于是诞生了ospf协议,ospf协议作为基于链路状态的路由协议拥有以下优点:
通过三台路由器使用指定Router—ID命令指定DR、BDR、Dothers,然后查看OSPF路由协议的工作过程。
这时候我们要注意!
当我们分别在AR1、AR2、AR3里面输入 network 13.0.0.0 0.0.0.255 的时候
不要按回车!!!不要按回车!!!不要按回车!!!重要的事情说三遍!!!
我们输入完之后,先在AR1里面敲回车,然后在AR2里面敲回车,最后在AR3里面敲回车。
这样做的目的是,我们可以验证之前说的选举DR、BDR、Dothers的规则。
AR1
sysname R1
interface GigabitEthernet0/0/0
ip address 12.0.0.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 12.0.0.0 0.0.0.255
AR2
sysname R2
interface GigabitEthernet0/0/0
ip address 12.0.0.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.252
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 12.0.0.0 0.0.0.255
AR3
sysname R3
interface GigabitEthernet0/0/0
ip address 12.0.0.3 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 12.0.0.0 0.0.0.255
当我们做了如上实验之后,开始进行抓包验证!
首先是Hello报文
然后在Hello报文里面选举DR和BDR。
然后我也标出了两个邻居
如下图就是该实验报文的过程
先后出现了
Hello,DBD,LSR,LSU,LSAck报文
①
其实我们在上面分别输入
AR1、AR2、AR3里面输入 network 13.0.0.0 0.0.0.255 的时候
顺序也可以从R1>R2>R3开始回车,可以验证一下是否是从数值最大的开始选举DR和BDR
②
我们在配置OSPF命令的时候要在同一个Area(区域),这点一定不能弄错!!!