动态路由协议-OSPF原理与推举实验

一、什么是动态路由?

动态路由指路由器根据路由器之间的交换的路由信息自动建立自己的路由表,并且能够根据链路变化自动调整。当链路发生故障或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。动态路由是基于某种路由协议实现的。

1.1动态路由协议特点

不需要管理员手动维护,减轻了工作负担
适用于网络规模大、拓扑复杂的网络
可以根据链路变化自动进行调整
占用网络带宽

1.2 收敛

收敛:使所有的路由表都达到一致状态的过程;即路由器知道达到自治系统任一网络的最短距离和下一跳地址,网络中静态路由和动态路由互相补充。

1.3 动态路由协议

距离-矢量路由协议:主要根据源网络到目标网络的路由器个数选择路由;RIP、IGRP
链路状态路由协议:综合考虑从源网络到目标网络的各条路径的情况选择路由;OSPF、IS-IS

1.4 动态路由协议概述

路由器之间用来交换信息的语言

1.5 度量值

跳数、带宽、负载、时延、可靠性、成本

二、OSPF协议

2.1 什么是OSPF?

OSPF(Open Shortest Path First开放式最短路径优先)是一种内部网关协议。用在同一自治系统(Autonomous System,简称AS)内决策路由。

2.2 链路状态协议工作原理简介

  • ospf架构:一般为花瓣形状,有一个花瓣为骨干区域,其他区域都围绕区域0相连,极个别的特殊情况,可以通过虚拟链路来连接

  • 信息传递:向邻居发送是自己知道的所有状态的链路状态信息

  • 路由标识:Router-ID是网络上唯一用于标识的一台路由器,线网用路由器的环回口来配置Router-ID,这边的地址是32位的公网IP地址,如果没有标,通过物理口来确认

  • 区域规划:划分多个区域是为了优化网络性能

2.3 Router-id及DR选举原则

  • 选举DR、BDR是为在广播多路访问中减少连接关系的建立,优化性能 默认Router-ID最大是DR,第二大是BDR,其他是Drother
  • DR一旦被选定就不会被抢占
  • Drother会通过224.0.0.6向DR和BDR通告网络状态信息,DR会通过
    224.0.0.5向所有邻居通告信息

2.4 OSPF协议5种报文分析

1、Hello				|	发现邻居并建立和维护邻居关系	(Hello报文)


2、DataBase Description		|	检查所有路由器的LSDB是否同步(数据库描述报文DBD)


3、Link-State Request		|	向另外一台路由器请求特定的链路状态记录	(链路请求报文LSR)


4、Link-State Update		|	发送被请求的链路状态记录	(链路回应报文LSU)


5、Link-State Acknowledgment	|	对其他类型的分组进行确认	(链路确认报文LSA)
  1. 传送的LSA link status advertisement 链路状态通告,包括拓扑信息 具体包括:网段的前缀
    掩码 连接的路由器的哪些接口 直连哪些路由器 LSA分为Down State、Init State、Two-Way
    State、Exstart State、Exchange State、Loading State、Full State七种状态。
    某些包含的是拓扑信息 但是有些包含的是路由信息
  2. LSDB 他是LSA的的集合 链路状态数据库 对此进行spf 算法 得到spf 树
    (基于cost代价)再得出最优的路由 并将其加入到路由表中
  3. 既支持vlsm 可变掩码、又支持 cidr(无类别域间选路)
  4. 封装 layer2| ip |ospf| fcs 直接封装到IP报头内 上层协议号为89 eigrp为88

三、OSPF推举实验

实验目的

通过抓包验证OSPF选举DR与BDR的过程

实验环境

ensp软件中三台路由、一台二层交换机,wireshark抓包软件

实验步骤

1、 我们在配置R1、R2、R3时,暂时不要配置network 13.0.0.0 0.0.0.0命令,也就是不要宣告直连路由,在任一接口抓包,再同时宣告13.0.0.0 (同时回车宣告),我们通过抓包查看谁是DR与BDR
2、 我们将选举出来的DR给down掉,也就是再接口处配shutdown,再抓包查看谁是DR与BDR
3、 我们再将down掉的接口启动,同时抓包查看谁是DR与BDR
4、 这时候我们再将上一步中的DR接口down掉,同时抓包查看谁是DR与BDR

实验过程

首先按照下图在ensp中建立拓扑图
在这里插入图片描述

我们对R1、R2、R3进行配置,注意:此时配置不要宣告直连路由
R1配置
在这里插入图片描述
在这里插入图片描述

R2配置
在这里插入图片描述
在这里插入图片描述
R3配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时候我们在任一节点抓包,此时抓包没有任何信息

在这里插入图片描述

我们为R1、R2、R3宣告直连路由,以R1为例
在这里插入图片描述
这时抓包软件上已经出现了抓包信息,DR是R3,BDR是R2,R1是DRother。

但是这里出现了一个问题,就是在抓包软件中我们的hello报文还没有选举出结果,DBD报文就已经开始发了,这是因为抓包是在几毫秒甚至更低的时间内完成,抓包软件的延迟导致了这种结果。理论上应该是DBD报文出现在hello报文之后。

在这里插入图片描述
此时实验的第一个步骤已经完成,我们进行第二个步骤,down掉R3的接口
在这里插入图片描述
这时候DR是R2,BDR是R1,没有DRother
在这里插入图片描述
我们再来进行步骤3,我们启动R3的接口,并抓包查看,此时DR、BDR不变,DRother变成了R3
在这里插入图片描述
在这里插入图片描述
接下来我们进行第4步,此时DR是R1,BDR是R3,没有DRother

在这里插入图片描述

最后一步我们将R2接口恢复,宣告环回路由,抓包查看。我们发现并没有因为我们宣告了环回地址而重新进行推举,所以DR、BDR保持不变R2变成了DRother。
R1、R2、R3分别是
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kimowinter/article/details/106497080
今日推荐