首页 > 其他分享 >OSPF笔记

OSPF笔记

时间:2024-11-29 13:37:43浏览次数:8  
标签:LSA 报文 笔记 链路 OSPF id 路由 路由器

一、OSPF

Open Shortest Path First 开放式最短路径优先;属于链路状态路由协议
OSPF被IP协议封装,工作在网络层之上的一种路由协议,协议号为89
OSPF路由信息传递与路由计算分离,基于SPF算法,以累计链路开销作为选路参考值
OSPF四张表:邻居表、链路状态数据库、OSPF路由表、全局路由表
二、OSPF报头

Version(1字节):版本v2代表v4网络,v3代表v6网络
Type(1字节):类型;ospf报文的类型;一共五种(看下面OSPF报文,type1-5顺序)
Pack Length(2字节):总长度;包括报文头部+数据
Router ID(4字节):发送该报文的路由器标识(router id)
Area ID(4字节):发送该报文的所属区域
checksum(2字节):校验和,包含了除认证字段的整个报文的校验和
Auth Type(2字节):验证类型;0:验证 1:简单验证 2:MD5认证
Authentication(8字节):验证信息;0代表没有 1为明文密码 2为key id
三、OSPF报文

hello 报文:发现和建立邻居关系
邻居发现:自动发现邻居路由器
邻居建立:完成hello报文中的参数协商,建立邻居关系
邻居保持:通过keepalive机制,检测邻居运行状态
hello报文:

DD 建立邻接关系:交互链路状态数据库摘要(DD报文两种情况:不携带LSA摘要信息的DD报文和携带LS摘要信息的DD报文)
LSR 链路状态请求:请求特定的链路状态信息
LSU 链路状态更新:发送详细的链路状态信息(拥有完成LSA)
LACK 链路状态确认:发送确认报文
HELLO报文中影响邻居关系的因素:
router id(不冲突)
area id(一致)
认证类型(一致)
认证数据(一致)
Hello时间间隔(一致)
Hello失效时间(一致)
N bit和E bit取值(一致)
DD、LSR、LSU、LSAck与LSA的关系:
  DD报文:携带LSDB所有LSA的摘要信息;摘要信息包括:type、Ls id、Advertising Router、ls age(老化时间)、seq(序列号)、chksum(校验和)等信息

 LSR:携带LSA的标识;type、Ls id、Advertising Router

LSU:携带LSA的头部以及链路状态

 LACK:包含LSA摘要信息,跟DD报文一样

OSPF协议router ID如何确认

管理员手动配置ospf的router id优先级最高
默认使用路由器的全局router id;全局router id:设备第一个配置的IP成为router ID;手动配置全局ID:router id X.X.X.X 需要重启生效
手动配置---->loopback最大--->物理接口最大/或者第二大(一般思科遵循此选举办法,华为设备建议手动配置)
四、OSPF工作状态

dowm:
邻居初始状态;表示没有从邻居收到任何信息,此状态下可以发送hello报文,发送间隔为poll interval通常和router dead interval间隔相同
attempt:
此状态只有在NBMA网络中存在。
init:
此状态已经从邻居收到hello报文,但hello报文中不包含自己route id,将邻居的router id添加到hello报文中再发送出去。
to-way:
收到含有自己router id的hello包进入2-way状态,建立邻接关系;根据网络类型选举DR/BDR
ex-start:
这是形成邻接关系的第一个步骤;进入此状态向邻居发送DD报文(不携带LSA摘要信息的DD报文)主要确认主从路由器(router id较大称为主master)
为什么要选举主从路由器;通过DD报文序列号+1机制实现隐式确认,保障数据可靠传输;
I(init)置1,表示第一个DD报文 M(more)置1表示后续还有其他DD报文 MS(master)置1表示自己为master

ex-change
将自身LSDB中所有LSA信息摘要信息通过DD报文进行交换,实现LSDB同步;(DD报文好处:传递的是邻居之间没有的LSA头部信息,减少无用的LSA传递)
LSDB同步:就是邻居之间最终拥有相同的LSA的信息以及LSA的新旧程度
摘要信息用途:
标识唯一条LSA(由type、ls id、adv rtr三个参数标识一条LSA)
用于判断LSA的新旧(seq(序列号)、chksum(校验和)、ls age(老化时间)三个参数判断新旧程度)


loading
相互发送LSR报文请求LSA,发送LS Updata通告LSA(交互LSR和LSU)
full
运行SPF算法,LSDB已经同步完成(主路由器优先进入full状态)

OSPF 邻居建立和LSDB同步过程:

判断一条LSA新旧:
Seq(序列号)越大的越新,起始值:0x80000001 最大值:0x7fffffff
如果seq相同则比较chksum(检验和)越大越新
chksum相同,则判断LS age(老化时间)是否等于3600s,等于3600s最新
如果LS age不等于3600s则判断ls age差值,如果大于900s则LS age小的最新,小于900s则认为相同

DR/BDR选举
根据优先级选举DR/BDR;优先级高的优先;当优先级相同时router id大的优先;
接口优先级0-255,0代表不选举,默认是1,不具有抢占性;
每条广播/NBMA链路都必须选举一个DR,默认会选举BDR路由器(可选),链路上其他路由器称为Drother
DR/BDR/Drother之间保持full的邻接关系需要进行LSDB同步;Drother之间保持tao-way的邻居关系,不进行LSDB同步;
DR/BDR 监听:224.0.0.5和224.0.0.6 Drother监听:224.0.0.5

五、LSA

LSA(link state Advertisement)是路由器之间链路状态信息的载体,LSA是LSDB最小的组成单位,也就是说LSDB是由一条条LSA构成的;一共6种LSA。
LS age(16位):此字段表示LSA生存时间,单位是秒
LS type(8位):此字段标识了LSA的格式和功能,常用的LSA类型有五种
Link State ID(32位):此字段是该LSA所描述的的那部分链路的标识,例如:router id等
Advertising Router(32位):此字段是产生此LSA的路由器的rouer ID
LS sequence number(32位):此字段用于检测旧的和重复的LSA;序列号越大代表LSA越新。
LSA checksum(16位):校验和
Length(16位):LSA总长度
1800s 更新一次 3600s失效
链路状态信息

什么是链路?路由器之间相连的链路
什么是状态?链路上各种网络参数在某一个时刻的取值
链路的类型、接口IP地址及掩码、链路上所连接的邻居路由器、链路的带宽(开销 cost)

1类LSA
router lsa
每个ospf路由器都会产生,描述路由器自身加入到ospf进程的直连链路的链路状态;只在区域泛洪(右图是建立邻居关系后)
1类LSA的链路状态由4种组成link type来进行描述;Stubnet(描述自身直连的网络号/掩码)、p-to-p(描述点对点、点对多点链路邻居)、transnet(描述广播/NBMA链路上的邻居)、virtual(描述虚链路)
注意:广播/NBMA 网络里会出现一个伪节点概念,广播网络里ospf在计算拓扑的时候都把当成与伪节点相连,依次来计算路由拓扑。
下面三张分别描述:stubnet、p-to-p、transnet





2类LSA
network lsa
由DR路由产生,描述DR周边网络环境(包括拓扑和网络号),只在本区域泛洪
(transNet:用于描述连接伪节点的信息,type2 LSA其实描述了伪节点连接的哪些节点)

3类LSA
network summary lsa
网络汇总lsa,由ABR路由器产生,将区域1、2类LSA做归纳,生成3类LSA泛洪到其他区域中。
一条三类LSA只能传递一条路由;(如果1类2类LSA很多那么生成的三类LSA路由也会很多)

4类LSA
asbr summary lsa
由ABR路由器产生,描述ASBR路由所在区域的位置

5类LSA
AS external LSA 自治系统外部LSA(外部引入路由)由ASBR路由器产生,用来通告网络去往其他路由协议的LSA。
外部路由通过重分布引入到ospf路由域中,以5类LSA进入ospf区域。引入外部路由时默认是type2的路由;
type 1:路由表始终显示引入时开销和AS内部路径开销之和
同类型的路由,选择cost小的,如果cost值相同则负载分担,路由意义上选路方式,OSPF根据SPF算法自动选路;
type2:引入外部路由时在路由表中忽略AS内部路径的开销,仅显示引入的开销,cost默认是1;
同类型的路由,优先比较引入时的开销,引入时的开销值小的优先,如果引入时开销相同则比较AS内部路径开销,即选择到ASBR近的优先,如果内部开销也相同则负载分担;管理意义上的选路方式,人为可控。

七、路由汇总

区域间路由汇总
只能在ABR上执行。只能对直连区域的路由汇总(即对区域内的路由)
汇总路由的开销默认继承明细路由中开销最大的值
明细路由全部失效,汇总路由也会失效(哪怕明细路由只有一条可达,汇总路由也不会失效)
如果区域有多个ABR,所有ABR都要执行汇总,否则失去汇总的效果
外部路由汇总
只能在ASBR上执行
汇总路由开销类型继承明细路由的开销类型,如果明细路由开销类型不一致则默认为type2
NSSA区域的外部路由汇总可以在ASBR上执行,也可以再NSSA区域的ABR执行
八、路由过滤

过滤工具filter-policy
import方向:对接收路由设置过滤策略,只有通过过滤策略的路由才被添加到路由表中,但不影响对外发布路由。ospf路由信息记录在lsdb中,实际上只是对ospf计算出来的路由进行过滤,不能对LSA过滤
export方向:通过引入外部路由后通过filter-policy对引入路由发布时进行过滤,将满足条件的外部路由转换为type5、type7发布出去。先引入路由,再过滤。filete-policy acl name filter-export
九、OSPF防环

区域内
在区域内每个路由器都维护一个独立的lsdb,根据SPF算法得出最优路由,算法本身防环。
区域间:
所有非骨干区域必须和骨干区域相连,区域间路由需要通过骨干区域中转。
ABR只能将本区域内部路由注入到area 0(ABR存在其他区域的路由不会注入到area0中)但可以将区域内部路由以及区域间的路由注入到非0区域
ABR从非骨干区域收到type-3LSA不能用于区域间路由计算
ABR不会将area 0内部路由信息type-3再注入该区域中(情景:三角网络架构其中路由器1、2为区域0,与另一台路由器3非0区域相连,路由1通过路由器3把type-3路由信息传递到了路由器2,路由器2不会把该type-3路由信息再此传递给路由器1)
区域外(mpls)
ospf通过down位防环,3类LSA DN比特不仅可以防环还可以优化数据转发;DOWN比特在把多协议BGP引入到ospf时3类LSA自动添加,其他PE设备如果检测到3类LSA中down位 置位就拒绝再引回BGP(自动完成)
ospf 通过tag防环,主要针对5类和7类;在MPLS VPN环境下,会把BGP的AS号放到5、7类的tag字段,其他PE设备检测到TAG位和自身的AS号相同就拒绝路由。display ospf lsdb ase 可以看到TAG 值
OSPF 不能建立原因:
路由器接口未参与OSPF 进程
网络一二层故障
路由器接口被设置为passive接口
Hello 包被acl 拦截
MA 网络子网掩码不匹配
Hello包时间间隔不匹配
认证类型和认证密钥不匹配
区域ID 和 router id
Stub/NSSA 区域选项不匹配
P2MP 中FR没有配置broadcast
企图用接口辅助地址建立邻居

标签:LSA,报文,笔记,链路,OSPF,id,路由,路由器
From: https://www.cnblogs.com/zjw382285-/p/18576463

相关文章

  • 嵌入式开发之C语言学习笔记day12
    动态内存分配1.常用函数2.malloc函数的细节点2.1malloc创建空间的单位是字节2.2malloc返回的是void类型的指针,没有步长的概念,也无法获取空间中的数据,需要强转2.3malloc返回的不仅仅是首地址,没有总大小,最好定义一个变量记录总大小2.4malloc申请的空间不会自动消失,如果......
  • Task01&Task02学习笔记
    Task01:安装Python编程环境Python解释器安装:进入官网下载搭建集成开发环境:下载pycharm:进入官网下载下载免费专业版教程可观看B站视频教程下面为视频链接(【全网最快速破解pycharm全程无废话!高效!】https://www.bilibili.com/video/BV1wJ4m1b7XZ/?share_source=copy_w......
  • 序列到序列的学习 (seq2seq - 词嵌入 - Embedding层 - mask掩码 - 后续会加入注意力机
    目录0.前言1.编码器 (encoder)补充1:词嵌入(WordEmbedding)补充2:嵌入层(EmbeddingLayer)2.解码器(decoder)3.损失函数4.训练5.预测6.预测序列的评估(BLEU)7.小结0.前言课程全部代码(pytorch版)已上传到附件本章节为原书第9章(现代循环网络),共分为8......
  • 黑马程序员Pink的javaScript课程day5(对象)笔记
    1.什么是对象对象是一种数据类型,是无序的数据集合对象的声明2.对象的操作(增删改)查改增删3.查的两种写法方法一:对象名.属性名方法二:对象名['属性名']4.对象中的方法方法的定义方法的调用对象方法中的实参和形参对象中的方法也可以......
  • 《Django 5 By Example》阅读笔记:p383-p387
    《Django5ByExample》学习第14天,p383-p387总结,总计5页。一、技术总结1.asynchronoustask(异步任务)对于异步任务,书中使用的是celery和RabbitMQ,这也是平时工作中的主流用法。(1)celeryPython使用的celery包的名字也是celery。2.RabbitMQ(1)拉取镜像doc......
  • Task01&Task02学习笔记
    Task01:安装Python编程环境miniconda安装官方网站安装官方网址缺点:下载速度较慢镜像站安装Bing搜索tunamirrors清华软件开源软件镜像站MinicondaForWindows安装配置推荐JustMe(recommended)Clearthepackagecacheuponcompletion换源校园网联合镜像站在A......
  • python初学笔记及感悟
    一、python学习笔记1.输出:直接在print后面加一段文字来输出的话,需要给文字加上双引号或者单引号,除此之外的数字、变量等都不要加引号;在python命令行下(每行前面有>>>的地方),print是可以省略的。2.python有一个接收命令行下输入的方法:input();3.数据类型:包括整数、浮点数、字符......
  • 2024/11月 读书笔记 - 6《构建之法》--- 第六章
    第六章详细介绍了敏捷开发流程,它主要包含三个核心步骤:·ProductBacklog:确定完成产品所需完成的工作。·SprintBacklog:决定当前Sprint(冲刺)需要解决的任务。·Sprint:执行冲刺,完成既定任务。敏捷开发以用户需求的演变为核心,采用迭代和逐步完善的方法进行软件开发。这一流程不仅......
  • 泷羽sec-shell编程(2)永久环境变量和字符串显位 学习笔记
      声明!学习视频来自B站up主**泷羽sec**有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[......
  • 【学习笔记】(二)SpringBoot项目启动的大致流程
    SpringBoot执行流程梳理书接上回,上回说到JarLaunch通过反射调用,进入到了我们的Spring项目main方法中。本节将会大致的梳理Spring启动的执行流程,并把我在阅读源码时碰到的问题做一个简要的记录。为后续引出我们常常叨叨的Spring自动配置打下基础。文章目录SpringBoot执......