动态路由-链路状态协议详解(LS之OSPF)(20210821)

本文深入探讨了OSPF协议的工作原理,包括LSA泛洪、SPF算法、区域划分以及防环机制。介绍了OSPF的网络类型、路由类型、LSA类型和路由计算流程,并详细阐述了OSPF的邻居建立、认证和区域类型。此外,还讨论了OSPF的配置和优化,如路由汇总、认证和接口成本调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问个问题,IS-IS协议有必要了解吗?感觉IS-IS使用场景比较少。。。可以说较为小众,相关概念应该和OSPF差别不大吧?

目录

OSPF 【RFC1147】Open Shortest Path First 开放最短路径优先

OSPF工作原理

通过LSA泛洪扩散到整个区域,同区域内所有路由器都会形成相同的LSDB

当路由器LSDB完全相同时,每台路由器将以自身为根,使用SPF计算一个无环拓扑,描述自己所知道的到达每一个目的地的shortest path

区域内OSPF是一种链路状态协议,而在区域间是一种距离矢量协议。OSPF的SPF算法使得区域内无环,层次化结构区域设计,通过骨干区域确保区域间无环路。

每一台路由器都将从SPF算法树中构建出自己的路由表

OSPF路由计算流程

OSPF技术特征概括

协议号 89 运行在IP层

支持CIDR无类域间路由

一个设备可以存在多个ospf进程

同一设备不同ospf进程路由表相互独立,不同进程Router-ID可以一致,区域内不能一致

使用IP组播收发协议数据,占用的网络流量很小

支持ECMP等价多路径

支持协议报文的认证

无路由自环

收敛速度快,触发式更新

接口敏感型协议

OSPF技术基本概念

自治系统(Autonomous System)

邻居关系(Neighbor)HELLO

邻接关系(Adjacency)HELLO LSU DBD

OSPF的三张表

OSPF路由角色

OSPF设备角色的作用

OSPF分区分域

OSPF路由信息维护发送地址

OSPF DBD 3个标志位

OSPF计时器

OSPF Link  State ID

OSPF防环机制

OSPF RID(router ID)

FA(Forwarding address)

一个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息

减少邻接关系减少交换次数节约计算资源与流量开销

OSPF报文类型类比点菜过程打招呼--要菜单--请求点菜--上菜--确认

HELLO

DBD(DatabaseDescribe)

LSR(LinkState Request)

LSU(LinkState Update)

LSAck

只在建立了邻接关系的路由器间发送

OSPF邻居建立

OSPF邻居建立的条件

阶段

OSPF状态机

down

init

attempt //NBMA网络下才存在

2-way 【2-Way Received事件】选举DR/BDR

exstart 【选举master/slave】

exchange

loading

full

1-WayReceived事件

OSPF建立邻接关系的流程

OSPF建立邻接关系的过程状态详细描述

OSPF网络类型

MA --- broadcast-默认

NBMA -- 非广播多点接入  不支持广播组播

p-to-p/p2MP

TransitNetwork

StubNetwork

LSA Type 1 ——Router LSA all->all

LSA Type 2 ——Network LSA DR->DRother

LSA Type 3 ——Network Summary LSA

LSA Type 4 ——ASBR Summary LSA

LSA Type 5 ——AS External LSA

LSA Type 7 ——NSSA External LSA

LSA Type 6 ——Group Membership LSA(用于MOSPF)*

LSA Type 8

LSA Type 9

LSA Type 10

LSA Type 11

T3=T1+T2,T3为路由条目

T1/T2为LSDB链路状态描述报文

OSPF区域

Area 0骨干区域

非Area 0骨干区域

OSPF路由类型

O

O IA

O E1

O E2

O N1

O N2

OSPF路由类型优先级

ASBR发布external LSA路由信息而不是链路状态信息由发布的ASBR汇总

OSPF路由汇总

目的:减少T3和T5 LSA泛洪和节省CPU资源,最大限度减少路由条目,降低由于拓扑变化导致的路由震荡。LSA Type1(O路由)不可汇总,由于传递的是LSDB而非路由条目

ABR汇总本区域内路由 T3

ASBR汇总外部路由 T4 T5

使用OSPF多进程,进程间重分布实现LSA Type5路由重分布

OSPF邻居认证

目的:认证授权邻居发送LSDB

OSPF认证范围

LSDB 过载保护

路由层面攻击,通过虚构LSA使得LSDB数据库溢出

LSDB通过限制不是自己生成的LSA数量保护LSDB稳定

LSDB过载保护配置

OSPF配置

华为

思科

注意

华为设备,接口加入ospf area没有相关ospf进程已经区域接口ospf不会生效,需定义ospf进程和区域后接口下配置才生效

修改OSPF的AD

修改OSPF COST

OSPF宣告非32位掩码环回口 -- 末节端口属性

OSPF简版

距离矢量 DV

基于传闻直接信任

扁平式

链路状态 LS

构建全网拓扑

树形结构

链路状态

层次性

三张表

邻居表

拓扑表

OSPF路由表

网络类型

点对点

点对多点

SPF最短路径树

学习LSA→LSDB

SPF算法构建最短路径树,计算到目标网络最短路径(cost)

最佳路径放入路由表

数据包

Hello

Datebase Description

建立过程

Init

Two Way

Exstart

Exchange

Loading

FULL

协议号

eigrp 88

ospf 89

rip udp 520

路由汇总节点

ABR

ASBR

默认路由

通过LSA5

Cost为O E2

特殊区域

Always

没有Always

OSPF区域类型

特殊区域

普通区域

特点

认证

接口认证

区域认证

虚链路

LSA

LSA序列号

LSU中传输

更新方式

LSA1

LSA2

LSA3

LSA4

LSA5

LSA7

思考路径

metric

100/带宽

调整

OSPF路由类型

O

O IA

O E1/O E2[default]

router-id

自动选举

手动指定

网络类型

广播【邻居自动建立】

非广播【邻居需静态指定】

角色

DR

BDR

DROther

面试常见问题

OSPF如何防环

简述LSA

有哪些特殊区域,stub和naas区别

什么场景需要、不需要选举DR\BDR

FA地址的作用,全零非全零

link id的作用


 

OSPF 【RFC1147】Open Shortest Path First 开放最短路径优先

OSPF工作原理

通过LSA泛洪扩散到整个区域,同区域内所有路由器都会形成相同的LSDB

当路由器LSDB完全相同时,每台路由器将以自身为根,使用SPF计算一个无环拓扑,描述自己所知道的到达每一个目的地的shortest path

区域内OSPF是一种链路状态协议,而在区域间是一种距离矢量协议。OSPF的SPF算法使得区域内无环,层次化结构区域设计,通过骨干区域确保区域间无环路。

每一台路由器都将从SPF算法树中构建出自己的路由表

  • 1)  区域内路由(最优)
  • 2)   区域间路由
  • 3)    E1外部路由
  • 4)    E2外部路由

OSPF路由计算流程

  • 建立OSPF邻居
  • 传递LSA
  • SPF计算最小路径
  • 放入路由表

OSPF技术特征概括

协议号 89 运行在IP层

支持CIDR无类域间路由

一个设备可以存在多个ospf进程

同一设备不同ospf进程路由表相互独立,不同进程Router-ID可以一致,区域内不能一致

使用IP组播收发协议数据,占用的网络流量很小

支持ECMP等价多路径

支持协议报文的认证

无路由自环

收敛速度快,触发式更新

接口敏感型协议

OSPF技术基本概念

自治系统(Autonomous System)

邻居关系(Neighbor)HELLO

  • 有端口连接到同一个网段且HELLO互达的两个路由器就是邻居路由器
  • DRother间为邻居关系,但非邻接关系,并保持2-way状态

邻接关系(Adjacency)HELLO LSU DBD

  • 邻居关系由OSPF的Hello协议维护
  • 邻接关系是为交换路由信息而形成的关系,不交换路由不建立该状态
  • DR与DRother为邻接关系,full状态
  • 此阶段表示设备间交换LSA(exStart状态)

OSPF的三张表

  • 邻居表(邻接数据库)

• 包含所有邻居列表

  • 拓扑表(链路状态数据库 LSDB)

• 区域所有路由器及其连接状态,同一区域内所有路由器的LSDB相同

  • OSPF路由表(转发数据库)

• 描述OSPF进程到达目的网段的最佳路径

• OSPF路由表最佳路径才可能写入全局路由表

OSPF路由角色

  • 指定路由器(Designated Router,DR)
  • 备份指定路由器(Backup Designated Router,BDR)

OSPF设备角色的作用

  • 内部路由器(Internal Router)

• 同一个区域的IR维护相同的LSDB

  • 区域边界路由器(Area Border Router)

• 连接到多个区域的路由器

• 为每一个区域维护一个LSDB

  • 骨干路由器(Backbone Router)

• 至少有一个端口(或者虚连接)连接到骨干区域的路由器

  • AS边界路由器(AS Boundary Router)

• 与其它AS路由器交换路由信息的路由器

• 向整个AS通告AS外部路由信息

OSPF分区分域

  • 1.最大限度地减少路由表条目
  • 2.本地区域内拓扑变化的影响
  • 3.在区域边界阻止LSA的泛洪
  • 4.需要分层网络设计扩大网络容量
  • 5.路由器A和B都是骨干路由器
  • 6.骨干路由器属于区域0
  • 7.路由器C,D和E被称为区域边界路由器ABR
  • 8.ABR连接着骨干区域和非骨干区域
  • 概要【缺图】

OSPF路由信息维护发送地址

  • DRother发送至DR的LSU是通过组播地址224.0.0.6
  • DR发送至DRother的LSU是通过组播地址224.0.0.5

OSPF DBD 3个标志位

  • I位 或称为初始位(initial bit)用于exstart协商主从关系的初始化协商的DBD包,置位1。
  • MS位,或称为主/从位(Master/Slave bit)如果始发路由器是Master,置位1,slave置位为0
  • M位,或称为后继位(More bit),如果不是路由器发送的最后一个DBD包,置位1.
  • 当DBD报文中I位置位0,则意味着ex-start状态结束,主从已经选出,则进入exchange状态,开始用包含LSA头部的DBD交换LSDB

OSPF计时器

  • 1800刷新一次LSALSRefreshTime(30分钟)--实际会随机在1790-1810秒内刷新
  • 3600秒路由老化时间 MaxAge(1小时)
  • 同时收到同一条LSA的两个实例,并且LS序列号也一样时,LS age小的更优先

OSPF Link  State ID

OSPF-- LSA类型  定义了不同的路由器类型,因此需要多种LSA, 通常考试考Type1 , Type2, Type3,Type4,Type5, Type7。  type1 是router lsa , 所有的ospf speaker都会产生该类lsa,只在区域内传播,包括路由器自身的接口信息。  type2是network lsa,由DR产生,包括DR相连的所有网络的信息,只在区域内传播。  type3是network summary lsa,由ABR产生,告知区域内路由器区域外的路由条目, 当有多个ABR时使用cost来确定,这个cost是由区域内路由器将外部路由cost和内部cost简单相加所得(metric-type 1), 而不是运行SPF算法,因此 可以说在区域内OSPF是一种链路状态协议,而在区域间是一种距离矢量协议。  type4是ASBR summary, 由ABR产生,用来广播ASBR的位置, 用show ip ospf database 可以看到type4 lsa总是一个host mask 255.255.255.255,并且type5是数据库中唯一没有area 属性的lsa。  type5是external summary,由ASBR产生,是非ospf设备的路由信息, 通常在一个大型网络中,路由器的数据库中会存在大量的此类lsa, 给路由器形成较重的负荷。因此我们可以用stub area 来限制此类lsa的传播。  但是考虑以下情景,如果一台运行ospf的路由器需要连接一个非ospf网络net1,并将非ospf网络中的路由条目通告到ospf中,而又不想在数据库中保存大量的由其他路由器通告的外部网络路由  ,那么这时我们不可以用stub,因为这将阻止所有的external路由,ospf网络将丢失net1的路由信息, type 7 因此被写入了ospf标准。 为了解决这个问题, cisco 规定了nssa, type7在nssa中传播external route,在nssa 的ABR上,type7 被转换成type5 (当然必须type7 lsa P-bit=1),然后由ABR将这些路由条目通告到backbone。————————————————版权声明:本文为优快云博主「平囧囧囧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/jkoxck/article/details/6449033

  • 连接标识(Link  State ID)标识此连接的对端。
  • 按网络类型区分

• Point-to-Point

• LINK ID 是邻居的RID

• 表示这是一个从本路由器到邻居路由器之间的点到点连接

• TransNet

• 表示这是一个从本路由器到一个Transit网段(例如广播型网段或者NBMA网段)的连接

• LINK ID 是DR的ip地址

• StubNet:表示这是一个从本路由器到一个Stub网段(例如Loopback接口)的连接。

• Virtual:表示这是一个从本路由器到虚连接对端ABR的连接。

  • 按LSA类型区分

• Type 1

• link state id 是本身的RID

• Advertising router是本身的RID

• Type 2

• link state id 是DR的ip接口地址

• Advertising router是 DR的RID

• Type 3

• link state id 是ip的网络号

• Advertising router是 ABR的RID

• Type 4

• link state id 是ASBR的RID

• Advertising router是ABR的RID

• Type 5

• link state id 是是ip的网络号

• Advertising router是ASBR的RID

OSPF防环机制

区域间通过ABR将域内路由封装成Type3类LSA发送到其它区域传递域间路由。注意:Type3类LSA不是链路状态信息,是纯粹的路由信息。此时OSPF基于D-V算法,不基于链路状态算法算路。这导致问题:路由自环。因为D-V算法无法消除路由自环。如果无法解决区域间路由环路问题,则区域分层概念就是失败的。分析D-V算法中路由环的产生的原因,主要因为生成路由的路由器没有加入生成者信息,即学习者无法知道最初的生成。而OSPF在生成LSA Type3时先将自己的Router ID加入到LSA中,但如果路由信息传递超过两个区域后,Router ID被覆盖,丧失了最初生成者信息。解决方法:所有ABR将本区域内路由封装成LSA后,统一发给骨干区域,再由骨干区域转发给其他区域。由于骨干区域知道每一条LSA都确切生成者。区域间路由都发送到骨干区域,就不会产生路由自环。由此可知:所有的区域必须和骨干区域相连,每个ABR连接的区域至少有一个是骨干区域。而且骨干区域自身也必须是一体连通的,这就能防止环路产生。

  • 区域内通过SPF算法保证无环
  • 区域间水平分割Area0统一分发域间路由+DV算法保证无环

OSPF RID(router ID)

  • 点分十进制表述
  • 配置方式

• 自动

• 将router id作为RID(如存在)

• 最大的环回口IP

• 最大的接口IP(无论开启OSPF或活跃与否)-HW,Cisco为当时最大活动接口IP

• 华为设备,检测RID冲突自动修改RID

• auto-recover 检测到冲突的RID将自动更改

• 手动

• ospf 1 router-id 1.1.1.1 //进程的路由器ID

• router id //全局的路由器ID

  • 作用

• AS内唯一标识一台运行OSPF的路由器

• 标识路由源发布者,双点双向等特殊场景供区域间防环(较大方泛洪)

  • 注意:修改RID要重置OSPF进程生效,网络需要重新收敛

• reset ospf process 1

• 建议使用lookback口保持RID稳定

FA(Forwarding address)

  • 由ASBR产生,由于导入外部路由OSPF域,7类LSA转5类LSA产生的字段
  • FA字段值

• 地址全为0(0.0.0.0)

• OSPF域内访问域外以ASBR为下一条查询最优路径,LSA Type 5 LSA的FA地址为0.0.0.0,其他路由器将考虑如何到达产生该LSA Type 5 LSA的路由器来计算外部网段

• 地址不为0

• OSPF域内访问域外以如何到FA地址后算最优路径,LSA Type 5 LSA的FA地址不为0,其他路由器将考虑如何到达该FA地址来计算外部网段

• 产生LSA Type 5 LSA时,FA不为0.0.0.0同时满足

• 引入的外部路由,其出接口启用OSPF

• 引入的外部路由,其出接口未设置为passive-interface(被动接口)

• 引入的外部路由,其出接口的OSPF类型为broadcast(广播或NBMA)

一个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息

减少邻接关系减少交换次数节约计算资源与流量开销

  • DR/BDR

• 特性

• 所有的路由器都与DR和BDR形成邻接关系,DR与BDR互相形成邻接关系

• DR将OSPF packets发往224.0.0.5,所有OSPF路由器都会接受(一般为HELLO报文)

• DRothers将OSPF packets发往224.0.0.6,只有DR/BDR路由器侦听该地址并接受数据

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

• 如MA所有路由都没有资格选举,会卡在Two-way状态,即没有DR/BDR产生

• 选举

• OSPF DR BDR优先级判断

• 接口priority -- 接口敏感型

• priority取值范围为0-255,接口priority为0,路由器退出DR/BDR选举,255指定为DR

• priority最高的路由器为DR;次优的为BDR

• priority相同,最高router-id为DR

• OSPF DR/BDR选举策略

• 2-way communication状态时即为选举DR/BDR状态

• DR失效,BDR接管并激活一个新BDR选举进程

• 即使拥有最高的priority也不会去抢占现有的DR/BDR

• 选举进程由Hello包承载所需要的参数字段(priority、DR/BDR’srouter-id)

OSPF报文类型类比点菜过程打招呼--要菜单--请求点菜--上菜--确认

HELLO

  • 在MA/NBMA网络中自动发现邻居
  • 完成OSPF邻居关系建立的参数协商,维护邻接关系

  • 组播224.0.0.5,TTL=1,组播节约带宽
  • 间隔默认10s(与链路状态挂链)超时时间40s 需要一致
  • 是否建立邻接关系,看hello包是否有active neighbor(RID)但还没有交换DBD

• init --> 2-way

• 如果在hello中看到自己的RID进入2-way

  • 邻居之间交换的Hello数据包称为keepalive

DBD(DatabaseDescribe)

  • 数据库描述,建立邻居时发送,描述自身接口状态

LSR(LinkState Request)

  • 链路状态请求,向邻居请求

LSU(LinkState Update)

  • 链路状态更新,发送的是LSA

LSAck

  • 对DBD、LSR、LSU进行确认

只在建立了邻接关系的路由器间发送

OSPF邻居建立

OSPF邻居建立的条件

  •  Router-id不冲突,域内必须唯一,否则出现邻居翻滚(直接在down状态,由于以为是自身发出所以有可能导致路由环路)
  • Area-id 必须一致
  • Hello-interval/Dead-interval一致
  • Authentication一致
  • stub位一致
  • MTU一致(不一致卡exstart,用ip ospf mtu-ignore忽略)
  • 邻居间IP地址掩码一致(broadcast环境,p to p环境可以不一致)
  • broadcast环境,priority不可以均为0(无法选举出DR-BDR卡2-way)
  • OSPF hello包被ACL过滤了(224.0.0.5)
  • Network-LSA Type一致(Area-LSA Type不一致 -- 可以建立邻居,在MA网络由于配置网络类型不一致导致没有LSA Type2 LSA无法传递LSU不会更新路由条目
  • 非被动接口 passive接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值