网络基础——OSPF路由

前言:这是最为常见和常用的路由,也是动态路由的一种,它在前面的路由上再次优化

背景

rip是动态路由不错,但是却是存在大的缺陷,那就是不适用于大型网络,并且防止环路的机制会造成一定的后果

相关名词

  • ospf:开放式最短路径优先协议,是基于IP的,协议号是89
  • area:区域,可以分为骨干区域和非骨干区域,其中非骨干区域又可以分为特殊区域和非特殊区域。骨干区域固定为0,取值范围为0-4294967295,特殊区域又分为stub区域、完全stub区域、nass区域、完全nass区域
  • router-ID:是运行了ospf协议的路由器的唯一标识,可以手工指定、如果没有手工指定,那么就是时看loopback地址,如果没有配置loopback接口,那么就是设备最大的IP地址,ps:华为设备的特性是route-ID冲突会自己修改
  • process:进程号,范围是1-65535,不同进程号就是相当于不同的路由协议,不会互相影响
  • DR:指定路由器,会和所有路由建立邻居角色。广播网络和NBMA网络中必须要选举DR
  • BDR:是DR的备份
  • IR:区域内路由器,在ospf中只要在区域内都是该路由器角色
  • BR:骨干路由器,就是有一个接口属于骨干区域
  • ABR:区域边界路由器,同时连接两个或者两个以上的路由器,其中一个区域要是骨干区域
  • ASBR:自治系统边界路由器,只要引入外部路由,那么就是该路由器角色
  • LSA:链路状态通告,是ospf用于交互的信息
  • LSDB:数据库,里面存放着LSA信息

原理

报文

hello报文

  • 发现、维护ospf邻居,同时里面有一个字段(Rtr Pri)用来选举DR,发送方式是广播,目的地址是224.0.0.5
  • DR选举规则:先比较优先级,范围为0-255,默认为1,优先级大的为DR;当优先级相同时,比较router-ID,大的优先。但是在实际中,那台设备先启动,那么就是DR
  • 如果优先级为0,那么就不参与选举,但是如果都为0 ,那么在广播网络中会出现错误,同时DR和BDR不具备抢占性
  • DR和BDR是针对接口来说的,就是说一个广播网段,就要选举一个BR

DD报文

  • 协商主从、确定主从关系、同步LSDB
  • 重要的字段:I(当发送连续多个DD报文时,如果这是第一个DD报文,则置为1, 否则置为0)、M(当发送连续多个DD报文时,如果这是最后一个DD报文,则置为 0,否则置为1,表示后面还有其他的DD报文)、MS(确定主从关系,置位为1表示为主)
  • router-id大的会成为主设备

LSR报文

  • 如果当LSDB同步过程,发现自己缺少的LSA信息,那么就会使用该报文,请求缺少的LSA信息

LSU报文

  • 收到LSR报文,会发送该报文,把所有的LSA全部发送给对方

LSACK报文

  • 确认是否收到LSU数据包,有两种确认方式,分别是显示确认和隐式确认
  • 显式确认:就是直接回复LSACK报文,进行确认
  • 隐式确认:不回复LSACK,而是将LSA进行二次封装,向目的地址224.0.0.5发送,DRother收到后,会看做为隐式确认
  • 条件是必须是DR other,且网络类型是广播型网络

LAS类型

  • 名称 作用 产生者 泛洪区域 携带信息
    router LSA(路由器LSA) 计算区域内路由 所有路由器 本区域内 拓扑+路由
    network LSA(网络LSA) 计算区域内路由,对一类进行补充 DR 本区域内 路由信息
    network summary LSA(网络LSA) 计算域间路由 ABR 区域间 路由信息
    ASBR summary LSA(网络汇总LSA) 告知ASBR所在的位置 ABR 除了ASBR所在的位置 拓扑信息
    external LSA(外部LSA) 计算外部路由 ASBR 整个区域 路由信息
    NSSA LSA(NSSA外部LSA) 计算特殊区域外部路由 NSSA中的ASBR 在NSSA区域 路由信息

状态机

down:是最开始的状态,没有收到任何的报文

attempt:是只在NBMA 环境中存在,没有收到邻居发的任何包,但是自己已经周期性发送hello报文了

init:开始收到hello报文,但是此时的hello报文中只是携带自己的router-ID,没有对方的

2-way:邻居双方都收到了hello报文,此时的DR和BDR也已经选举完成,是邻居建立成功的标志

EX-start:开始进行LSDB同步过程,这里还会进行主从选举

EX-change:会发送自己的LSA摘要信息

loading:等待对方发送缺少的LSA信息

full:表明邻接起来,ospf完全建立成功


过程

  • 首先是发送hello报文,里面携带自己的router-ID,向组播地址224.0.0.5发送,此时的状态是init
  • 当对端设备收到hello报文后,解析获得对端的router-ID,并且加入自己的邻居列表,此时的状态是2-way(可能存在单向的2-way状态)
  • 此时邻居关系已经建立完成,只有邻居关系建立好,才能建立邻接
  • 发送第一份DD报文,开始选举主从,此时的DD报文中没有携带摘要的LSA信息,状态是EXstart,注意当主从选举完成后,序列号以主设备的序列号为起点
  • 会发送第二份DD报文,开始进行LSDB同步,状态是EXchange
  • 如果发现LSA缺少的话,那么就会发送LSR报文进行请求,此时的状态是loading
  • 当收到LSR报文时,那么就会发送LSU,发送完整的LSA信息给请求的设备,此时的状态还是loading
  • 后面设备会回复一个LSACK,表示对LSU进行回复,此时的状态是full

定时器

  • hello time:是hello周期发送的时间,为10秒
  • 超时时间:在规定时间没有收到来自邻居设备的hello报文,会认为邻居出现故障,就会断开邻居关系,时间是hello时间的4倍
  • 可以修改这两个定时器:ospf time hello 时间/ospf time dead 时间(都是在接口视图下修改)

邻居关系建立失败原因

  1. 直连设备的区域ID不一样
  2. router-ID一致
  3. hello time时间和dead时间不一致
  4. 如果配置了认证,那么用户名和密码需要不一致
  5. 掩码不一致

防环机制

区域外防环

  • 就是非骨干区域一定要和骨干区域相连
  • 从骨干区域发出的三类LSA不能再次发回到骨干区域
  • ABR设备从非骨干区域收到的三类LSA不能用作路由计算

区域内防环

  •  本身的算法保证区域内无环 

特殊区域

stub区域

  • 隔离4类LSA以及5类LSA的进入
  • stub区域访问外部路由的方法是通过,stub区域的ABR设备产生一条缺省的三类LSA

totally stub区域

  • 隔离3类、4类、5类LSA的进入
  • totally stub区域访问外部路由的方法是,通过totally stub区域的ABR设备产生一条缺省的三类LSA

NSSA区域

  • 隔离4类LSA以及5类LSA的进入
  • 可以存在ASBR设备,在这个区域引入的外部路由,都是以七类LSA的方式泛洪
  • 访问外部路由的方式是,通过下发一条缺省的七类LSA
  • 其他区域想要访问NSSA区域,需要进行七转五的操作,条件是角色必须是ABR设备,同时N/P字段必须置位

totally NSSA区域

  • 隔离3类、4类、5类LSA的进入
  • 可以存在ASBR设备,也可以正常引入外部路由
  • 访问外部路由的方式是,通过下发一条缺省的七类LSA和缺省的三类LSA

实验

实验拓扑

抓包实例

第一个DD报文

DD报文(可以看出谁是主设备)

最后一个DD报文

hello报文和头部

代码

ospf 1 router-ID 1.1.1.1//进入OSPF视图并且配置router-ID
 area 0.0.0.1 //配置区域ID
  network 10.0.24.0 0.0.0.255 //宣告网段进入OSPF
  network 192.168.1.0 0.0.0.255

ospf enable area 1//在接口视图下启用OSPF,两种宣告2选1

reset ospf process //这是重置进程号,如果需要修改router-ID,那么就要先重新配置,在重启进程

ps:这上面是OSPF的常用命令,但是并不是说OSPF就这些命令

相关推荐

  1. IP基础&ospf

    2024-04-02 16:58:04       26 阅读
  2. 动态-ospf

    2024-04-02 16:58:04       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 16:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 16:58:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 16:58:04       82 阅读
  4. Python语言-面向对象

    2024-04-02 16:58:04       91 阅读

热门阅读

  1. C++---linux运行

    2024-04-02 16:58:04       36 阅读
  2. 使用Docker搭建SmokePing

    2024-04-02 16:58:04       34 阅读
  3. GISTool项目——开始

    2024-04-02 16:58:04       37 阅读
  4. 出栈顺序经典选择题

    2024-04-02 16:58:04       33 阅读