IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> OSPF协议-HCIA -> 正文阅读

[网络协议]OSPF协议-HCIA

链路状态路由协议 - OSPF - HCIA

前言

  • 开放式最短路径优先OSPF(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议。

  • RIP是一种基于距离矢量算法的路由协议,存在着收敛慢、易产生路由环路、可扩展性差等问题,目前已逐渐被OSPF取代。

OSPF概述

  • 大中型网络上使用最为广泛的IGP协议
  • 链路状态路由协议
  • 为无类别协议
  • 使用组播(224.0.0.5和224.0.0.6)
  • 收敛较快
  • 以开销(Cost)作为度量值
    • 每一个激活OSPF的接口都有一个cost值。OSPF接口cost=100M/接口带宽,其中100M为OSPF的参考带宽(reference-bandwidth)。
    • 一条OSPF路由的cost由该路由从路由的起源一路到达本地的所有入接口cost值的总和。
    • image-20210729193138487
  • 采用SPF算法可以有效的避免环路
  • 触发式更新(以较低的频率(每30分钟)发送定期更新,被称为链路状态泛洪)
  • 区域的设置使得OSPF能够支持更大规模的网络
  • 通过LSA的形式发布路由
  • 不支持自动汇总,支持手动汇总
  • 无环路
  • 扩展性好
  • 支持认证

image-20210729131528844

OSPF区域

概述

image-20210729133143082

AS 是自治区域系统

区域类型

image-20210729134731141

image-20210729133748644

image-20210729133808141

在不同区域的接口上,使用 network [网络地址] 命令来告诉路由器这个接口属于那个区域

OSPF路由类型

image-20210729135154511

image-20210729135423429

ASBR 是连接不同的路由协议的路由器,接口两边给不是同一种协议,使用引入的方式导入路由信息

image-20210729135739954

image-20210729140027009

image-20210729140045209

OSPF核心工作流程

  1. 发现并建立邻居

  2. 传播LSA(区别于距离矢量的路由表更新)

    a. Link Statr Advertisement,链路状态宣告(路况信息)

    b. 链路:路由器接口

    c. 状态:描述接口信息(地址、掩码、开销、网络类型、邻居关系等)

  3. 将LSA泛洪到区域中的所有的OSPF路由器,而不仅是直连的路由器

  4. 收集LSA创建LSDB(链路状态数据库、地图)

  5. 使用SPF算法计算到每个目标网络的最短距离,并将其置于路由表中

发现邻居

image-20210729142416129

泛洪建立数据库

image-20210729142441702

根据信息计算最短路径

生成路由表信息

image-20210729142638449

具体流程图

image-20210729142655841

image-20210729143618752

建立的三张表

image-20210729142726497

Router ID

  • 运行OSPF协议前,必须选取一个RID
  • 用来唯一标识一台OSPF路由器
  • RID可以手动配置,也可以自动生成

如果 Router ID 没有选取,则默认为 0.0.0.0,没有启动成功

重新配置ospf Routre ID 之后需要重新启动ospf进程

image-20210729151333353

Router ID 配置规则

  • 如果要运行OSPF协议,必须存在Router ID。Router ID是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。

    Router ID的设定有两种方式:

    • 通过命令行手动配置,在实际网络部署中,建议手工配置OSPF的Router ID,因为这关系到协议的稳定。

    • 通过协议自动选取。

      如果没有手动配置Router ID,设备会从当前接口的IP地址中自动选取一个作为Router ID。其选取顺序是:

      1. 优先从Loopback地址中选择最大的IP地址作为Router ID。
      2. 如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为Router ID。

    在路由器运行了OSPF并确定了Router ID后,如果该Router ID对应的接口Down或者接口消失(例如执行了undo interface loopback loopback-number)或者出现更大的IP地址,OSPF将仍然保持原Router ID。只有重新配置系统的Router ID或者OSPF的Router ID,并且重新启动OSPF进程后,才会进行Router ID的重新选取。

OSPF数据包结构和类型

  • ospf协议封装在IP协议之上,IP的协议号为89

image-20210729153651602

image-20210729154252058

image-20210729154335251

Hello 数据包包头

  • Version 版本

  • Message Type 数据包类型

  • Packet Length 长度

  • Source OSPF Router 源IP

  • Area ID 地区号

  • Auth Type Auth Data 身份验证

image-20210729154703172

  • Network Mask:发送Hello报文的接口的网络掩码。

  • Hello Interval:发送Hello报文的时间间隔,单位为秒。

  • Options:标识发送此报文的OSPF路由器所支持的可选功能。具体的可选功能已超出这里的讨论范围。

  • Router Priority:发送Hello报文的接口的Router Priority,用于选举DR和BDR。即优先级

  • Router Dead Interval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效;单位为秒,通常为四倍HelloInterval。

  • Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。

  • Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR。

  • Neighbor:邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文。

OSPF 数据包类型

  • Hello 报文 Hello报文用来发现和维持OSPF邻居关系 邻居关系具有超时时间

  • DD(Database Description)报文 使用DD报文来对比双方的数据库中的信息,DD报文包含LSA的头部信息,用来描述LSDB的摘要信息。

  • LSR(LSA Request)报文 LSR用于向对方请求所需的LSA,从上面的对比当中发现自身没有的路由信息,可以使用LSR向对方请求详细信息。

  • LSU(LSA Update)报文 LSU用于向对方发送其所需要的LSA。

  • LSACK(Link State Acknowledgment)报文 LSACK用于向对方发送收到LSA的确认。

image-20210729162846732

image-20210729162904291

Hello 数据包

image-20210729170611396

Database Description(DD) 数据包及包含信息

数据包

模拟器数据库中信息

数据包信息

Link State Update(LSU) 数据包

image-20210729170443273

Link State Ackonwledge(LSAck) 数据包

image-20210729170546785

OSPF 状态机制

前四个状态都是在发送Hello报文, 5-8四个状态建立邻接关系

  1. Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
  2. Attempt:此状态只在NBMA(帧中继)网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
  3. Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
  4. 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
  5. ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
  6. Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
  7. Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
  8. Full:路由器的LSDB已经同步。

image-20210729195304035

image-20210729195328437

image-20210729143158637

  • 邻居(Neighbor):

    OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中所定义的一些参数,如果双方的参数一致,就会彼此形成邻居关系。

  • 邻接(Adjacency):

    形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,并能交换LSA之后,才形成真正意义上的邻接关系。

  • 路由器在发送LSA之前必须先发现邻居并建立邻居关系。

运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前路由器之间首先需要建立邻接关系。

OSPF启动流程 - 模拟器显示过程

image-20210729194630313

OSPF工作流程

数据包和状态的切换过程

  • OSPF第一阶段是使用Hello包建立双向通信的过程,成为邻居关系,当经历了OSPF前三个状态,则表示正式建立邻居关系

image-20210729200003394

建立邻居关系之后进入到Exstart 状态,此时会确定路由的主从关系

  • 前两个DD报文格式如下:
    • Init: Set 表示是否是第一个报文
    • More: Set 表示后面是否还有报文
    • Master: Yes 表示是主人还是仆人(Yes为主,No为从)
  • 发出包之后路由器之间根据Route ID 的大小来确认主路由器和从路由器,大的为主路由器,小的为从路由器

image-20210729200845109

  • 邻居关系之后路由器之间的DD报文交换如下,确定主从路由:

    l = 1表示第一个包 M = 1 表示后边还有更多的包 MS = 1表示我是主人

    image-20210817201944936

image-20210729201440650

  • OSPF的第二阶段是通过交换LSA达到LSDB同步,建立邻接关系

image-20210729203412718

OSPF 邻居建立的条件

建立邻居关系必须是三层直连

建立条件

  • Router ID 唯一
  • Hell0/Dead 时间间隔一致 (Hello包的发送间隔和Dead死亡间隔一般是四倍关系,ospf建立邻居关系时,路由器之间的Hello和Dead间隔必须一致,否则无法建立邻居关系)
  • 区域ID一致
  • 认证(如果启用了认证)一致
  • 链路MTU大小一致(默认不开启检查,思科默认开启检查),如果不一致ospf会卡在 Exstart - Exchange 两个状态之间
  • 子网掩码一致(以太网环境),子网掩码不一致时,ospf会自动down掉,如下图
    • image-20210729212014759
  • 网络地址一致
  • 末梢区域设置一致(Option)

image-20210729210525992

OSPF网络类型 - 基于接口

网络类型通过下面两层决定

下面是广播类型网络 BMA

image-20210729212809927

下面为非广播类型 - 非广播多路访问(NBMA)即帧中继网

image-20210730121045500

DR和BDR

DR和BDR的选举,代表着被选举路由器的在某一个对应的网络区域的网络接口,在这个网络区域中是DR或者是BDR,是基于接口的。

image-20210730131629540

  • 模拟器接口信息

image-20210730131922657

  • 多路访问网络根据接口,以太网接口就是多路访问网络

  • 通过选举DR和BDR来减少邻接关系

  • 除了DR和BDR其他的路由器即普通路由器之间都只保持在邻居关系 即 2-way状态

image-20210730125725845

image-20210730123544471

image-20210730123508035

  • 下面是模拟器建立关系之后的数据图

image-20210730125618482

选举规则

image-20210730125837675

image-20210730130124022

image-20210730130340856

image-20210730130414274

  • 模拟器演示图1,DR路由器路由信息发生变化,发送数据包

image-20210730130738877

  • 模拟器演示图2,DRother路由器路由信息发生变化,发送数据包

image-20210730131143716

OSPF 度量值(Cost) - 开销

注:华为的回环口的默认开销为0,思科的回环口的默认开销为1

注: serial接口的默认cost 开销值为 48

  • 每一个运行OSPF的接口上,都维护着一个接口Cost
  • Cost = 10^8/BW(bps) = 100Mbps/BW = 接口带宽参考值/接口带宽 (如果结果小于1,那么默认值为1)
  • 到一个目标网络的度量值 =
    • 从源到目标所有出站接口的Cost累加(数据方向) 即数据发送方向
    • 从源到本路由器沿途所有入站接口的Cost值累加(路由方向)即路由学习方向

image-20210730133907921

image-20210730140243843

OSPF配置

基本配置

system-view 进入系统视图

ospf [进程号] router-id [id号] 开启ospf进程,并配置router-id

area [地区号] 配置区域

network [网络地址]注:这里可以写网络地址也可以写网络号,主要是根据后面的反掩码的区分 网络地址的反掩码就是 0.0.0.0 网络号的反掩码就是对应的掩码取反 [反掩码] 连接相应的网络地址,并设置反掩码(反掩码就是掩码的取反)

? image-20210730141259650

image-20210730141756588

ospf timer hello 10 修改Hello 包发送间隔

ospf timer dead 40 修改hello 包超时时间

ospf dr-priority 100 修改优先级,修改之间得先进入相应的接口

bandwidth-reference 100 调整带宽参考是,默认为100Mbps,需要在整个网络当中统一进行调整

重启

进入用户试图

reset ospf process 重置ospf,即重启ospf 进程

查看命令

display ospf lsdb 查看ospf数据库

display ospf peer 查看邻居

display ospf peer brief 查看ospf 邻居接口信息

display ospf interface [接口号] 查看某个接口的ospf信息

修改cost值

先进入到相关的接口

ospf cost [度量值]

或进入到ospf进程

bandwidth-reference [度量值] Mbit/s

路由认证

技术背景

image-20210801194914062

OSPF认证命令

注:配置认证时,当前网络中所有的路由器对需要配置一样的认证

OSPF认证
      ospf认证解决安全隐患,只要通过认证的ospf路由器才能正常建立邻居关系、交互信息

            认证模式:不认证null(默认);明文simple认证;MD5认证
            OSPF的认证方式
        **接口认证**
             [R1-GigabitEthernet0/0/2]ospf authentication-mode simple cipher 123
             //进入配置进程的接口配置认证方式为明文 密码123
                cipher加密仅表示在查看命令时加密显示,而报文在传输过程中密码是明文显示。
            [R1-GigabitEthernet0/0/2] ospf authentication-mode md5 1 cipher 123         // MD5认证,1为key id,密码为123,cipher表示报文在传输过程中通过MD5算法加密      
        **区域认证**
            Ospf 
            area 0 
            authentication-mode simple cipher 123 
            明文认证,密码为123, cipher加密仅表示在查看命令时加密显示,而报文在传输过程中密码是明文显示。
            authentication-mode md5 1 cipher 123  
            MD5认证,1为key id,密码为123,cipher表示报文在传输过程中通过MD5算法加密

            注意:当simple和MD5都存在时,优先使用接口认证方式
            两台设备之间 要么两端都不配置认证 要么两端都都配置simple认证 要么两端都都配置md5认证

image-20210801195728163

image-20210801195905694

  • 已认证数据包

image-20210801200713024

  • 未认证数据包

image-20210801200905757

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 17:02:36  更:2021-08-23 17:04:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:45:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码