OSPF协议总结(1)

OSPF协议总结(1)

OSPF协议总结

OSPF:开放式最短路径优先协议(Open Shortest Path First)

OSPF概述

版本:V1/V2/V3(V3使用的是IPv6)

属于无类别链路状态路由协议–基于拓扑信息进行收敛

组波更新:224.0.0.5

触发更新 仅对变化量进行更新

周期更新 基于时间周期进行更新—更新量大

若一个协议希望实现增量更新— 仅触发无周期;hello机制(周期保活) ACK确认机制

1.OSPF数据包类型

在这里插入图片描述
在这里插入图片描述

  • OPSF Version:是指OSPF的版本号。v2表示IPv4;v3表示IPv6
  • Message Type:指出跟在头部后面的数据包类型

在这里插入图片描述

  • Packet Length:OSPF数据包的长度,包括数据包头部的长度,以八位组字节计。
  • Source OSPF Router:始发路由器的ID
  • Area ID:始发数据包的路由所在区域。如果数据包是在一个虚链路上发送的,那么区域ID为0.0.0.0,也就是骨干区域ID,因为虚链路被认为是骨干的一部分。
  • Packet Checksum:一个对整个数据包的标准IP校验和。
  • Auth Type:正在使用的认证模式

在这里插入图片描述

  • Auth Data:未完!!!!!!!!!!

在这里插入图片描述

ospf跨层封装在IPv4报头,协议号为89;

存在5种不同类型的数据包

在这里插入图片描述

类型 作用
Hello包 邻居、邻接的发现、建立、周期保活;hello time10s或30s;dead time为hello time 四倍 邻居、邻接的发现、建立、周期保活;hello time10s或30s;dead time为hello time 四倍
DBD包 数据库描述包 (数据库目录) LSA更新时的主从选举;LSA交互
LSR包 链路状态请求 请求自身缺少的LSA信息
LSU包 链路状态更新(携带具体的LSA信息) LSA更新信息(回应对方的LSR的请求)
LSack包 链路状态确认包 LSA更新的确认回复

LSA(链路状态通告):路由或者拓扑信息(在不同条件下产生不同类型的拓扑或路由信息)

hello包

在这里插入图片描述

  • **网络掩码(Network Mask):**指发送数据包的接口的网络掩码。如果这个掩码和接收该数据包的接口网络掩码不匹配,那么该数据包将被丢弃。(可以确保路由器之间只有他们共享网络的地址精确匹配时才能互相成为邻居)。
  • **Hello时间间隔(Hello Interval ):**接口上Hello数据包传送之间的时间间隔,也是一个周期性的时间段。如果接收和发送路由器没有相同的值,就不能建立邻接关系。
  • 可选项(Option):未完待续!!!!!!!!!!!
  • **路由优先级(Router Priority):**用来做DR和BDR路由器选举。如果该字段为0,则始发路由器没有资格被选成DR和BDR路由器。
  • **路由器死亡时间(Router Dead Interval):**始发路由器在宣告邻接路由器无效之前,将要等待从邻接路由器发出的Hello数据包的时长。
  • 指定路由器(Designated Router):网络上指定路由器接口的IP地址。注:不是指定路由器的路由器ID。如果没有DR(DR还没有选出或者网络类型不需要DR),那么这个字段设置为0.0.0.0
  • **备份路由器(Backup Desinated Router):**网络上备份指定路由器接口的IP地址。没有选出设置为0.0.0.0
  • **邻居(Active Neighbor):**是一个递归字段,如果始发路由器在过去的一个Router DeadInterval时间内,从网络上已经收到来自他的某些邻居的有效Hello包,那么将会在这个字段中列出所有这些邻居的RID。

DBD包

(Database Description)数据库描述包

在这里插入图片描述

  • 接口MTU(Interface MTU):在数据包不分段的情况下,始发路由器接口可以发送的最大IP数据包大小。(华为设备默认不检测MTU值,Cisco默认检测)
  • 可选项(option):
  • **I位(初始位(initial bit)):**当发送的是一系列数据库描述数据包中的最初的一个数据包,该位设置为1.后续的数据库描述数据包将该位设置为0.
  • **M位(后继位(More bit)):**当发送的数据包不是一系列数据库描述数据包的最后一个时,该位设置为1
  • MS位(主/从位(Master/Slave bit)):在数据库同步过程中,该位设置为1,用来指明始发数据库描述数据包的路由器是“主”路由器。
  • **数据库描述序列号(DD Sequence):**在数据库同步过程中,用来确保路由器能够收到完整的数据库描述数据包序列。这个序列号将由“主”路由器在最初发送的数据库描述数据包中设置一些唯一的数值,后续数据包的序列号将依次增加。
  • **LSA头部(LSA Header):**列出了始发路由器的链路状态数据库中部分或全部LSA头部。注:在进行DR/BDR选举的时候不会出现LSA Header

关于DBD的一些问题:

1、 接口MTU,在cisco体系中,邻居间接口的MTU值默认被检测,华为默认不检测;

OSPF协议要求直连接口上邻居间的MTU值必须完成一致;

[r1]interface GigabitEthernet 0/0/1

[r1-GigabitEthernet0/0/1]ospf mtu-enable 开启华为MTU检测

2、 关于DBD的标记位

I 为1标识本地发出的第一个DBD包 M 为1标识不是本地的最后一个DBD包

MS 为1代表主 为0 代表从

3、 使用序列号进行隐性确认 DBD的隐性确认,基于序号进行的,从使用主的序号来对主进行确认

邻接关系建立后,邻居间使用真正DBD来获取对端邻接的LSDB目录,之后使用LSR/LSU/LSack来获取本地未知的LSA信息;生成LSDB—数据库表;

LSR包

链路状态请求数据包

在这里插入图片描述

  • 链路状态通告类型(Link-state Advertisement Type):LSA类型
  • 链路状态ID(link state ID):始发路由器ID
  • 通告路由器(advertising router):始发LSA通告的路由器路由器ID

LSU包

链路状态更新数据包

在这里插入图片描述

  • LSA数量(number of LSAs):这个数据包中包含的LSA数量。
  • 链路状态通告(LSA):在OSPF协议的LSA数据包格式中描述的全部LSA。每个更新数据包都可以携带多个LSA。

LSAck包

链路状态确认数据包

在这里插入图片描述

被确认的LSA是根据在LSAck包中是否包含包含他的头部兰确认的。所以一个LSAck的组成只有OSPF包头和LSA头部。

2.OSPF状态机

(标准7个,还存在第八个)

  • Down:一旦本地发出Hello包,进入下一状态机

  • Init初始化:接收到的Hello包中若存在本地RID,那么进入下一状态

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

    ​ 条件:

    ​ 1、点到点网络类型直接进入下一状态

    ​ 2、MA网络,将进行DR/BDR选举(40s),非DR/BDR间不得进入下一状态

  • **Exstart预启动:**使用未携带目录信息的DBD包,进行主从关系选举,RID数值大为主,优先进入下一状态。

  • Exchange准交换:使用真正的DBD包进行数据库目录的交互,需要ack进行确认。

  • **Loading加载:**通过对端的数据库目录比对本地,就本地未知的LSA信息,使用LSR来进行请求,对端使用LSU进行应答,最终需要ack进行确认。

  • **FUll转发:**邻接关系建立的标志。

3.OSPF工作过程

启动OSPF协议后,本地基于所有激活接口使用组播224.0.0.5进行周期的hello收发;接收到的hello包若存在本地的RID,那么建立邻居,生成邻居表

表中所有邻居存在条件,条件匹配失败将停留在邻居关系,仅hello周期保活即可。;条件匹配成功后,需要进一步建立为邻接关系邻接关系间,需要使用DBD包来进行数据库目录共享,使用LSR/LSU/LSACK来获取本地未知的LSA信息,补全本地的LSDB(链路状态数据库—所有LSA的集合)–生成数据表

数据库同步完成后,本地其余SFP算法,基于数据库生成有向图,合成最短路径树,最终将所有未知网段的路由加载于本地的路由表中;–收敛完成,hello包周期保活,每30min再周期比对一次数据库目录;

网络结构突变:

1、 新增网段 – 直连新增网段的设备,使用更新包告知本地所有邻接,之后扩散到全网,需要ACK确认;

2、 断开网段-直连断开网段的设备,使用更新包告知本地所有邻接,之后扩散到全网,需要ACK确认;

3、 无法沟通 — dead time到时间时,断开邻居,删除邻居;且通过该邻接获取的LSA将不再被使用;

4.OSPF接口网络类型

OSPF协议在不同网络类型的接口工作方式不同。

网络类型 OSPF工作方式
loopback 华为虽然标记为点到点,实际为环回的特殊工作,无hello包收发,直接学习32位主机路由
点到点 10s hello time;直接邻接关系,不进行DR选举;(串线上的PPP/HDLC;普通GRE)
BMA(以太网) broadcast;10s hello time;进行DR/BDR选举,最终建立邻接关系
NBMA(MGRE) 默认为点到点的工作方式,该方式只能建立一个邻居;故在NMBA环境下将无法和所有节点建立关系;

NBMA拓扑结构:

1、 星型—中心到站点

2、 部分网状结构,除去星型

3、 全连网状结构

NBMA不能和所有节点建立邻接关系解决方法:修改接口类型为broadcast

[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ospf network-type broadcast  该网段所有接口修改为broadcast;

注:

1.若一端为点到点,另一端为broadcast,由于hello time均为10s,将建立邻居关系,但无法正常工作;因此一旦修改任何一个的ospf类型,就必须保障该网段所有节点类型一致;

2.在星型和部分网状结构中,若使用broadcast工作方式,必须考虑dr的位置;建议直接固定放置于中心站点; 若为全连网状结构,可以不用dr位置;

5.OSPF的DR选举

邻居关系成为邻接关系的条件:

​ 在MA网络中,由于节点数量不限制,故俩俩间均为邻居,若不加管制将出现大量的重复更新;距离矢量协议(RIP/EIGRP)均存在水平分割机制来解决;但OSPF协议无法使用接口水平分割(从此口进不从此口出),因此ospf选择了DR/BDR选举方式来解决,在MA网段中存在一个DR和一个DBR,其他设备非DR/BDR,非DR/BDR之间不建立邻接关系,仅维持邻居关系,避免重复更新。

选举规则:

1、 比较接口优先级,0-255默认为1;数值大优 为0标识不参选

2、 若接口优先级一致,比较参选设备的RID,数值大优;

[r1]interface GigabitEthernet 0/0/0
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
  INTEGER<0-255>  Router priority value

6.OSPF基础配置

[r1]ospf 1 router-id 1.1.1.1 
1.启动时需要定义进程号,仅具有本地意义;

2.同时建议配置RID,ipv4地址编写规则;必须全网唯一;

3.手工---》环回最大数值-》物理接口最大数值

[r1-ospf-1]

宣告:
1、激活—被选中接口可以收发ospf 的数据包
2、传递接口信息—被选中接口的信息将被共享给本地的其他邻接  3、区域划分
[r1-ospf-1]area 0

[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

[r1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.255

区域划分规则:

1、 星型结构拓扑 – 区域0 为骨干,大于0为非骨干;非骨干必须连接骨干区域;

2、 区域间必须存在ARB—区域边界路由器

启动配置完成后,邻居间收发hello包建立邻居关系,生成邻居表:

Hello包中的内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sAWzwWax-1601902102827)(file:///C:/Users/Lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png)]

邻居间hello包中必须完全一致的参数;否则无法建立邻居关系;

1、hello、dead time 2、区域ID (ABR) 3、认证 4、末梢区域标记(特殊区域)

5、在华为设备的hello包中,还存在本地接口ip地址的的子网掩码,邻居间接口掩码不一致将无法建立邻居关系

[r2]display ospf peer 查看邻居关系

[r2]display ospf peer brief 摘要表格

邻居关系建立后,邻居间基于条件决定是否建立邻接关系;邻接关系间将使用DBD包来沟通;

优先级为10;cost的参考带宽为100M; COST=参考带宽/接口带宽

Ospf选择cost值之和最小的路径为最短路径;若接口带宽大于参考带宽,cost值为1,将可能导致选路不佳,建议修改参考带宽,修改时全网设备必须修改为一致;

[r1]ospf 1

[r1-ospf-1]bandwidth-reference ?

 INTEGER<1-2147483648> The reference bandwidth (Mbits/s)

[r1-ospf-1]bandwidth-reference 1000

7.OSPF不规则区域

1.远离骨干的非骨干区域

2.不连续骨干区域

注:一台ABR设备若未连接到骨干区域,将被定义为非法ABR,不得进行区域间信息共享;

解决方案:

1、 Tunnel 在非法ABR与合法ABR间建立一条隧道,之后将该隧道链路宣告于OSPF协议中;

在OSPF协议,若接收到去往相同目标的多条路由;先优选从骨干区域传递过来的路由;

若所有路由器均基于骨干区域,或均基于非骨干区域传递,进行cost值对比;

缺点:

  1. 选路不佳

  2. 周期性的信息对中间穿越的区域存在资源占用

2、 OSPF的虚链路

合法的ABR对非法ABR进行授权,使得非法ABR可以进行区域间路由信息共享;

优点:由于没有新增链路,故不存在选路的问题;正常选路

缺点:

cisco为了避免周期信息对中间区域的影响,在虚链路上关闭了周期行为—失去可靠性

华为选择保持周期行为 —继续对中间区域资源占用

[r2]ospf 1 

[r2-ospf-1]area 1  两台ABR共同存在的区域

[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 对端ABR设备的RID;

[r2-ospf-1]display ospf vlink

3、 多进程双向重发布(推荐)

一台设备运行所有路由协议进程,不同进程存在独立的数据库,相互间不进行共享;

仅将计算所得路由加载于同一张路由表中;

将不规则部分的区域宣告到其他的ospf进程中,之后使用重发布机制进行路由共享;

避免了周期信息和选路问题;

[r2]ospf 1 

[r2-ospf-1]import-route ospf 2 

[r2-ospf-1]q

[r2]ospf 2 

[r2-ospf-2]import-route ospf 1
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100129.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况

    各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程网络产品推广和新闻消息推送时,经常用到的工具就是用客户邮箱发送邮件了,如果是要发送的邮件量非常大的话,一般的建议是搭建自己的邮局服务器,或者是花钱购买专业的邮件群发服务,免费邮箱的SMTP适合少量的邮件群发需求。例如Wordpress的评论邮件通知功能,每天要发送的邮件数量…

  • 使用matlab绘制分段函数的三种方法

    使用matlab绘制分段函数的三种方法找到了三种绘制分段函数的方法,绘制如下函数第一种方法:%第一种分段函数t1=0:0.1:10;v1=t1;t2=10:0.1:20;v2=0*t2+10;t3=20:0.1:30;v3=30-t3;t=[t1t2t3];v=[v1v2v3];plot(t,v);axis([032012]);第二种方法:%第二种分段函数表示方法t=0:0.01:30;v=zeros(size(t));fori=1:length(t)ift(i…

  • apache 80端口被占用_tomcat8005端口被占用

    apache 80端口被占用_tomcat8005端口被占用参考:https://jingyan.baidu.com/article/1876c8527b1fc3890b13763b.html1.win+R,输入cmd,打开命令行窗口2.命令行输入netstat-ano3.找到80端口及对应进程 4.在任务管理器中的进程处查看与上述80端口对应的PID相同的进程,并关闭。如果没有PID,选择“查看”–&gt;"选择列"–…

    2022年10月30日
  • 优先级队列的使用[通俗易懂]

    优先级队列的使用[通俗易懂]优先级队列(priorityqueue)中的元素可以按照任意的顺序插入,却总是按照排序的顺序进行检索。也就是说,无论何时调用remove方法,总会获得当前优先级队列中最小的元素.然后,优先级队列并没有对所有的元素进行排序。如果用迭代的方式处理这些元素,并不需要对它们进行排序。优先级队列使用了一个优雅且高效的数据结构,称为堆(heap)。堆事一个可以自我调整的二叉树,对树执行添加(add)和删除(

  • 请说下封装 vue 组件的过程?_组件二次封装的必要性

    请说下封装 vue 组件的过程?_组件二次封装的必要性vue组件的定义●组件(Component)是Vue.js最强大的功能之一●组件可以扩展HTML元素,封装可重用代码●在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能●有些情况下,组件也可以表现用is 特性进行了扩展的原生的HTML元素●所有的Vue组件同时也都是Vue实例,所以可以接受相同的选项对象(除了一些根级特有的选项),并提供相同的生命周…

  • 语义分割 实例分割 全景分割_语义分割应用场景

    语义分割 实例分割 全景分割_语义分割应用场景之前看过一篇使用分割思想进行目标检测,所以这里补习下一些分割相关的基础知识。这里重点说下语义分割、实力分割和全景分割的区别。1、semanticsegmentation(语义分割)通常意义上的目标分割指的就是语义分割,图像语义分割,简而言之就是对一张图片上的所有像素点进行分类语义分割(下图左)就是需要区分到图中每一点像素点,而不仅仅是矩形框框住了。但是同一物体的不同实例不需要单独分…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号