OSPF部分笔记

定义

OSPF(Open Shortest Path First,开放最短路径优先)是IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的自治系统内部网关协议。目前针对IPv4协议使用的是OSPF Version 2。ospf直接工作在ip层之上,ip协议号89,ospf以组播方式发送协议包

链路状态路由协议使用SPF最短路经优先算法(shortest path first spf)计算和选择路由,这类路由协议只关心网络中链路或接口的状态(up down ip地址,掩码带宽,利用率和时延等),每个路由器将已知的链路状态信息向该区域的其他路由器通告,通过这种方式,网络上的每台路由器对网络结构都会有相同的认识,随后路由器以其为依据,使用spf算法计算和选择路由

注意:区域内部传递拓扑信息,区域间传递路由信息   --链路状态型协议的距离矢量特征

区域划分规则

  • 非骨干区域必须与区域0直接相连

  • 骨干区域不能被分割

ABR --区域边界路由器

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

注意:只有真正的ABR才可以转发路由信息

OSPF相关数据包

hello包 

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

2、10S发送一次用以确认邻居存在。

3、死亡时间:4倍hello时间

DBD --链路状态数据库描述包

该报文中携带的是路径信息的摘要。---避免重复更新,减少更新量的一种做法

 LSR --链路状态请求包

请求未知的LSA信息

LSU --链路状态更新包

携带真实的LSA信息 

LSAck --链路状态确认包

OSPF状态机

Down:初始状态,没有收到来自邻居的hello包

Attempt:只存在于NBMA网络中,当一台设备试图联系自己邻居时,没有收到回应报文时,就会将邻居状态设置为Attempt

Init:收到的hello报文中存在本地RID值,标识着自身邻居表创立完成

2-way:收到的hello包含自己的RID,建立邻居关系

条件匹配:匹配成功则进入下一个状态,匹配失败则停留在邻居状态。 --选举DR,BDR,决定了谁给谁传递拓扑信息

Exstart:使用未携带信息的DBD报文进行主从关系选举,RID大的为主

Exchange:使用携带目录信息的DBD报文进行目录共享

Loading:邻居间使用LSR/LSU/LSACK报文来获取完整的LSA信息

Full:拓扑交换完成后,根据算法计算出路由进入该状态,标志着邻接关系的建立

条件匹配

选举DR和BDR

为什么选举DR和BDR

在一个共享的广播网络多台路由器建立OSPF,有可能会产生大量的OSPF邻居
在这些大量的OSPF邻居发送大量的OSPF报文,造成其他路器接收到大量的OSPF重复报文浪费带宽资源和设备CPU计算资源

注意:DR和BDR都是接口角色

条件匹配选举规则

  1. 优先级,0-255;选择优先级大的为DR设备,默认为1。若优先级为0则代表放弃选举

  2. 若优先级相同,则比较RID值,越大越优先。

注意:

  • 选取范围---一个广播域

  • 非抢占模式----重选则需要重启OSPF进程。

  • 在一个MA网络中,可以没有BDR,但是必须存在DR

条件匹配的选举过程 

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

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

  3. 华为数通产品的接口DR优先级默认1,该参数值可以通过

  4. 当接口激活OSPF后,设备首先会检查网络上是否已经存在DR,如果存在则接收已经存在的DR设备。否则优先级最大的设备成为DR,若优先级相同,则拥有最大RID的路由器成为DR设备。

  5. BDR选举过程与DR相同,但是是在DR选举之后进行

 [Huawei-GigabitEthernet0/0/0]ospf dr-priority ? --修改优先级
  INTEGER<0-255>  Router priority value
  
  DR优先级为0则代表该接口放弃选举DR和BDR。

OSPF工作过程

  1. 启动OSPF配置后,OSPF向本地所有运行了OSPF协议的接口以组播224.0.0.5发出hello报文;hello报文中携带了本地的RID参数以及本地已知的邻居RID值。

    1. 邻居的RID获取方式:通过接收其他邻居的hello报文来获取本地邻居

    2. 建立邻居关系,并生成邻居表。

  2. 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系,即2-way状态,仅使用hello报文保活。该状态为稳定态。

  3. 匹配成功的邻居开始建立邻接关系。

    1. 首先使用未携带数据的DBD报文进行主从关系选举,之后使用携带信息的DBD报文来共享数据库目录;

    2. 然后本地通过对方共享的目录信息与本地数据库进行对比,通过使用LSR报文请求未知的LSA信息。

    3. 对端使用LSU报文回复完整LSA信息

    4. 本端使用LSAck报文确认回复。

  4. 当本地接收到所有的未知LSA信息后,将信息存放在LSDB中。

    1. 之后基于本地数据库生成有向图和最短路径树。

    2. 根据最短路径树计算本地到达拓扑中所有未知网段的最短路径,并将其加入到OSPF路由表中。

    3. 从OSPF路由表中选择最优路由加载入本地全局路由表。

  5. 收敛完成后,hello报文周期保活。每30min进行一次周期链路刷新。

结构突变

  1. 新增网段-----直接使用LSU报文告知邻居,邻居使用ACK进行确认。

  2. 断开网段-----直接使用LSU报文告知邻居,邻居使用ACK进行确认。

  3. 无法沟通-----dead time----4*hello time,状态为down,删除信息。

基础配置

[r1]ospf 1 router-id 1.1.1.1 --启动ospf,定制进程号和RID
[r1-ospf-1]area 0 
[r1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0  --精准宣告,宣告接口,为了激活接口
[r1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255  --范围宣告,

[r1]dispaly ospf peer (brief) --查看邻居表
[r1]dispaly ospf int g 0/0/0  --查看接口信息
[r1-ospf-1]bandwidth-reference 1000    --修改默认带宽为1000M,修改时需要整个网络的默认带宽一致。

cost=默认带宽(1000)/实际带宽; 

OSPF报文格式 

OSPF报文头部

固定24字节

  • 版本---恒为2

  • 类型----描述OSPF数据包类型

    • hello---1

    • dbd-----2

    • lsr------3

    • lsu----4

    • lsack----5

  • 报文长度

  • 路由器ID----RID

  • 区域ID---发出该报文的接口所属区域的ID值。

  • 校验和----完整数据包

  • 验证类型

    • 指示该数据报文使用的认证类型

    • 不认证--0;简单认证---1;MD5认证---2。

  • 验证数据

    • 用于报文认证的内容

    • 若认证类型为不认证,则该字段全为0;

hello包

  • 网络掩码

    • 两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码。

    • 如果一方在接口上收到的hello报文中,网络掩码字段与本地接口配置的掩码不同,则该路由器忽略该hello报文,此时邻居关系无法建立。

    • 注意:只有在华为设备中会检查网络掩码信息

  • Hello间隔

    • 如果两台路由器的hello时间间隔不同,则不会建立邻居关系。

    • 在Broadcast类型和P2P网络类型中hello时间间隔为10S;而在NBMA或P2MP网络类型中,Hello时间为30S。

  • 可选项

    • 有8个标记位,每一个标记位为1,则代表其符合OSPF的某种特性。

    • 特殊区域标记

  • 路由器优先级

    • 用于选举DR和BDR。

  • 路由器失效时间

    • 两台设备建立OSPF邻居需要确保死亡时间相同。

    • 默认情况下是hello间隔的4倍。

    • 若修改hello时间,则死亡时间随之改变;若修改死亡时间,则hello时间不变。

  • 指定路由器---DR

    • 该参数为网络中DR的接口IP地址。

    • 若没有选举出DR,则使用0.0.0.0来占位

  • 备份指定路由器---BDR

    • 该参数为网络中DR的接口IP地址。

    • 若没有选举出BDR,则使用0.0.0.0来占位

  • 邻居

    • 在直连链路上发现的有效邻居,此处填充的是邻居的RID值。

限制邻居关系建立的参数:

1、子网掩码   2、hello时间  3、dead时间 4、认证类型  5、可选项

DBD报文

  • 使用未携带数据的DBD报文进行主从关系选举

  • 使用携带数据的DBD报文进行拓扑目录共享

  • 使用未携带数据的DBD报文进行确认。

  • 接口最大传输单元----MTU

    • 在华为AR系列路由器上,该参数值默认为0。

    • 该字段是用于进行OSPF的MTU检测,而华为默认不开启MTU检测机制。

    • [r1-GigabitEthernet0/0/0]ospf mtu-enable ----开启OSPF的MTU检测机制
      [r2-GigabitEthernet0/0/0]mtu ?   ----修改MTU参数
         <46-1600>  MTU value</span>
    • 如果设备两端开启了OSPF的MTU检测机制,则进行MTU检测,若双方的MTU参数相同,则正常进行邻接关系建立。若不同,则双方卡在exstart状态。

  • 可选项---与Hello报文内容中的可选项字段一致。

  • I------主从关系选举

    • 如果该为为1,则代表该数据报文是用于进行主从关系选举。且此时的数据包中不会携带真实的数据库目录信息。

  • M

    • 若为1,则代表后续还存在DD报文

    • 若为0,则代表后续没有DD报文

  • MS----代表是否为主设备

    • 若为1,则代表本设备为Master设备

    • 若为0,则代表本设备为Slave设备

  • DD序列号

    • 用于确保DD报文传输的有序性和可靠性

    • 在DD报文交互的过程中,DD序列号被逐次加1。且DD序列号必须由Master路由器来决定,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。

    • 隐形确认机制----通过对方发送的数据包中的DD序列号,起到确认的效果。

    • 而主从关系选举就是为了完成隐形确认。

LSR包

 链路状态类型、链路状态ID、通告路由器----LSA的三元组信息。---通过这三个参数可以唯一标识出一条LSA信息

LSU包

LSAck包

用于完成显示确认机制 

OSPF的接口网络类型 

OSPF的接口网络类型,实际上是说OSPF的接口在某种网络类型下的一种工作方式或特征。

广播型多路访问类型---BMA

OSPF在BMA类型的接口上通常以组播的方式发送hello报文、LSU及LSACK报文;以单播的形式发送DD报文和LSR报文。

点到点类型---P2P

OSPF在网络类型为P2P的接口上以组播的方式发送所有数据报文。----不以单播形式发送的原因在于点到点网络可以不需要IP地址。

OSPF在点到点网络中不会选举DR和BDR。

开销值----在华为设备中,P2P网络的参考实际带宽默认为2.048(E1标准)

环回接口

 

 开销值恒定为0,这样的结果就是修改参考带宽不会影响到环回接口的开销值。

type----华为使用P2P来填充,而cisco使用loopback填充。

所有通过OSPF学习到的环回接口的路由掩码都是32位,因为该接口是一个模拟的接口,实际没有连接用户,所以并没有其他IP地址存在与该接口之下,只有一个可用IP。----如果使用其他掩码,可能会导致环路或者路由黑洞。

witing----该字段代表正在进行条件匹配,当该计时器超时后,接口会认为自己为DR设备,且将接口的状态切换为exstart状态。

点到多点类型---P2MP

只能手工修改。

[r7-Tunnel0/0/0]ospf network-type p2mp

在P2MP环境下,设备会学习所有邻居的接口IP地址,形成主机路由。

在P2MP环境下,只有hello报文是以组播形式发送,其他所有报文以单播形式发送数据。

Vlink---虚链路

vlink是专门为了解决OSPF不规则区域所诞生的技术,是一种虚拟的、逻辑的链路

vlink必须找到一个真实的ABR设备建立虚拟链路。

[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3

[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2

注意:配置位置在需要vlink穿越的区域中,且配置的是RID,而非邻居IP地址

虚链路的配置条件---->只能穿越一个区域

 

 总结

网络类型OSPF接口工作方式--接口类型
BMAType:Broadcast --可以建立多个邻居关系,需要进行DR和BDR的选举,hello 10S,dead 40S。
P2PType:P2P --只能建立一个邻居关系,不需要进行DR和BDR选举,Hello 10S;dead 40S
环回接口(虚拟接口)Type:华为定义为P2P,但是实际上无数据转发 --环回接口默认学习32位主机路由。不需要进行DR和BDR选举。hello 10S;dead 40S。
Type:P2MP --可以建立多个邻居,不需要DR选举,hello 30S;dead 120S。会学习邻居的接口主机路由。
NBMAType:NBMA --可以建立多个邻居,需要DR选举,hello 30S;dead 120S。无法自动建立邻居关系。
VlinkType:Vlink --只能建立一个邻居,不需要DR选举,Hello 10S;dead 40S。以单播形式发送hello报文
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值