OSPF----开放式最短路径优先协议

OSPF----开放式最短路径优先协议

OSPF基础

IETE—国际互联网工程任务组—RFC2328

OSPFv2和RIPv2对比
相同点
1、两者都是无类别路由协议----传播时携带真实掩码
2、两者的更新方式相同-----组播
​ RIPv2----224.0.0.9
​ OSPFv2----224.0.0.5/224.0.0.6
3、两者均支持等开销负载均衡
不同点
RIPv2只能应用在小型网络中,OSPFv2可以应用在中大型网络环境的
OSPF区域划分----结构化部署

OSPF域(DOmain)----将一系列的OSPF路由器组成的网络称为OSPF域。

单区域OSPF网络
在这里插入图片描述
多区域OSPF网络
在这里插入图片描述
区域ID:32bit

OSPF多区域划分要求:

1、OSPF要求域中所有的非骨干区域(区域ID不为0的区域)都必须与Area0相连。

2、骨干区域不能被分割

OSPF区域结构部署规则的必要性

假定没有“所有非骨干区域都必须与骨干区域相连”这条规则----“远离骨干的非骨干”如下图所示
在这里插入图片描述
如果AR2与AR7断了就会产生环路:AR1说访问R7可以从他那走,可AR7已经断了

​ 定义了ABR(区域边界路由器)设备----确保所有人遵循上述规则

1、至少连接两个区域
2、连接的区域中至少有一个是区域0
3、在区域0中至少有一个活跃的邻居

作用:用于传递区域间路由

为了避免区域间的路由产生环路,非骨干区域之间不允许直接相互发布路由

假定没有”骨干区域不能被分割“这条规则----不连续骨干区域

在这里插入图片描述
四台都是ABR,都互相发信息4到2到1到4成环路

​ OSPF规定:从非骨干区域收到的路由信息,ABR能接收,但不会使用这条路由信息(OSPF水平分割)

总结

OSPF有如下规定:
1、对于伪ABR设备不允许转发区域间路由信息。
2、对于真实ABR而言
	能够将自己直连的非骨干区域的区域路由信息传递给骨干区域
	能够将自己直连的骨干区域的区域路由信息传递给非骨干区域
	能够将自己从骨干区域学习到的区域间路由信息传递给非骨干区域
	

OSPF路由器角色

  • 内部路由器(IR)
    • 所有接口都接入同一个区域的路由器
  • 区域边界路由器(ABR)
  • 骨干路由器(BR)
    • 接入Area0的路由器,包括ABR,但不包括ASBR
  • ASBR(AS边界路由器)
    • 工作在OSPF自治系统边界的路由器
    • 并不是同时运行多种路由协议的OSPF路由器就一定是ASBR,ASBR一定是将外部路由引入到OSPF域的设备。

OSPF数据包
Hello

  • 用来周期发现、建立、保活OSPF邻居关系,通过组播224.0.0.5发送。

  • 10s发送一次来确认邻居的存在。

  • hold-time----四倍的hello时间

  • Router-ID(RID)

    • 全域唯一,表示路由器身份

    • 用IP地址形式表示(32bit,点分十进制)

    • 配置方法

      • 手工配置

      • 自动配置

        • 默认最大环回IP地址,若没有最大环回IP地址则选择最大物理IP地址

      - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnnIlVQs-1678704643692)(C:\Users\天之守护\AppData\Roaming\Typora\typora-user-images\image-20230312112338856.png)]

      • 注意:
        	启动OSPF进程前,必须要有接口IP地址,若存在IP地址,则在第一次启动OSPF进程时,会选取第一个配置的IP地址为RID。
        	但是,若删除第一个配置的IP地址后,则恢复为上述规则。
        	
        在华为设备中,若没有接口IP地址,则OSPF启动后,RID为0.0.0.0
        在思科设备中,若没有接口IP地址,则OSPF启动失败
        
    • 无论采用手工配置还是自动选择,一旦OSPF进程启动,RID配确定,则无法改变,必须重启进程才能生效。

    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-49ph4ZrJ-1678704643693)(C:\Users\天之守护\AppData\Roaming\Typora\typora-user-images\image-20230312113600046.png)]

DBD

  • 数据库描述报文
  • 该报文携带的是路径信息的摘要(为了减少更新量,并不会直接给邻居发送TOPO信息,而是将TOPO信息的目录发送给邻居)

LSR

  • 链路状态请求报文
  • 基于未知的LAS(链路状态通告)信息进行查询。

LSU

  • 链路状态更新报文
  • 携带真正的LSA信息的数据包

LSACK

  • ​ 链路状态确认报文

    OSPF七种状态机

  • down----关闭状态----一旦启动了OSPF协议,则发出hello包,并进入下一状态

  • init----初始化状态----收到的hello包中,存在自己的RID值,则进入下一状态

  • 2-way----双向通讯状态----邻居关系建立的标志

条件匹配:匹配成功则进入下一阶段,不成功则停留在2-way

  • exstar----预启动状态----使用未携带信息的DBD包进行主从关系选举,RID大的为主(大的先学习)
  • exchange----准交换状态----使用携带目录信息的DBD报文进行目录共享
  • loading----加载状态----邻居间使用LSR/LSU/LSAck三种报文来获取完整的TOPO信息
  • full----转发状态-----修成正果-----标志邻接关系的建立

条件匹配

  • 设备接口名称

    • DR—指定路由器
    • BDR—备份指定路由器
    • DRother—其他路由器
  • OSPF成为邻接关系的条件

    • 点到点----不用选举DR和BDR----直接开始建立邻接关系(加快收敛的方法)
    • MA网络-----在一个网络中,不限制节点数(会选举DR和BDR)
  • 选举规则

    • 接口优先级------>0-255---->优先级越大,为DR,次一级为BDR(默认为1)
    • RID----越大越优先
  • 选举范围----一个广播进行一次条件匹配

  • 角色之间的关系

    • DR和DRother---->邻接关系
    • DR和BDR---->邻接关系
    • BDR和DRother---->邻接关系
    • DRother和DRother---->邻居关系
  • 非抢占性选举模式

    选举过程

1.DR、BDR的选举是通过Hello报文来实现的,选举过程发生在2-way状态之后

2.路由器将自己接口的DR优先级填写hello报文中的”DR优先级“字段

3.在接口视图下可以修改DR优先级(若DR优先级修改为0,则代表不具备DR和BDR的选举资格)

4.当路由器接口激活OSPF后,首先检查网络上是否已经存在DR设备,如果存在则接受DR角色。若不存在,则拥有最高DR优先级的设备称为DR(RID)

5.BDR的选举过程和DR选举过程相同,但是是在DR选举成功之后。

DR设备使用组播224.0.0.5向该MA网络发送消息
而DR和BDR使用224.0.0.6监听该MA网络的消息
DRother使用224.0.0.6发送自己的LSU报文

OSPF工作状态

  • 启动OSPF配置完成后,OSPF将向本地所有允许OSPF协议的接口组播224.0.0.5发送hello报文;hello报文中携带有本地的RID以及本地已知的邻居RID;之后生产邻居表
  • 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系;仅hello报文保活
  • 匹配成功的邻居将开始建立邻接关系
  • 首先使用未携带数据的DBD报文来进行主从关系选举。之后使用携带数据的DBD报文来共享数据库目录;之后本地使用LSR/LSU/LSAck报文来获取未知的LSA信息;
  • 之后本地基于数据库生成有向图和最短路径树,之后计算本地到达拓扑中所有未知网段的最短路径,并将其添加到路由表中。
  • 收敛完成,hello报文周期保活。每30min进行一次周期更新。

结构突变

1.新增网段----直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。

2.断开网段----直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。

3.无法沟通----dead time----四倍的hello时间。

OSPF报文格式

OSPF报文头部

  • 版本(version)
    • 对于OSPFv2而言,该字段值恒为2
  • 类型(Type)
    • 描述OSPF数据包的类型
    • Hello----1
    • DBD----2
    • LSR----3
    • LSU----4
    • LSACK----5
  • 报文长度
    • 整个OSPF报文的长度----单位字节
  • 路由器ID
    • 发出该报文的路由器的RID值
  • 区域ID
    • 发出该报文的接口所属的区域的ID值
  • 校验和
    • 验证OSPF整体数据报文的有效性
  • 验证类型
    • 指示该报文使用的认证类型
    • 不认证----0;简单认证----1;MD5认证----2;
  • 认证数据
    • 用于报文认证所对比的内容
    • 若认证类型为不认证,则该字段全部用0填充。
	OSPF的认证功能存在于所有的数据交互过程中,对于任何一种数据报文,都需要进行认证。
	认证的过程中,需要对比两个字段,首先对比验证类型字段。
		若相同,才会对比认证数据字段。

Hello包

  • 网络掩码(Network Mask)

    • 该字段填充的是发送该报文的网络掩码
    • 两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码。(点到点网络不需要对比该参数)
    • 注意:OSPF建立邻居关系需要对比子网掩码是华为独有,别的厂商没有这个要求。
  • Hello间隔

    • 两台直连路由器需要确保直连接口的Hello时间间隔相同,否则邻居关系无法建立。
    • 缺省情况下,p2p和BMA类型下,为10s;P2MP和NBMA为30s。
  • 可选项(Options)

    • 该字段一个8bit,每个比特位都用于指示该路由器的某个特定的OSPF特性。
    • 而OSPF邻居关系建立过程中,该字段某些比特位将被检查,可能影响OSPF邻居关系建立。(特殊区域的标记)
  • 路由器优先级
    在这里插入图片描述

  • 路由器失效时间

    • 两台直连路由器要建立OSPF邻居关系,需要保证双方接口的dead time时间相同,否则邻居关系无法正常建立。
    • 缺省时间为hello的四倍
  • 指定路由器

    • 网络中DR设备的接口IP地址。
    • 若没有DR或DR没有选举出来,则填充0.0.0.0
  • 备份指定路由器

    • 网络BDR设备的接口IP地址
    • 若没有BDR或未选举结束,则填充0.0.0.0
  • 邻居

    • 在直连链路上发现的有效邻居,此处填充的是邻居的RID值,如果发现多个邻居,则包含多个邻居字段。

224.0.0.x

所有224.0.0.x格式的组播地址称为本地链路组播,目的IP地址是本地链路组播的数据包中的TTL值被设定为1.所有的本地链路组播都会存在对应的组播MAC地址,01-00-5e-后24位(组播IP地址的后24位)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值