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

问个问题,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。————————————————版权声明:本文为CSDN博主「平囧囧囧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/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接口
  • 改为p-to-p即可

阶段

  • 1. 邻居路由器发现阶段,交换hello,携带对端IP
  • 2. Two-way双向通信阶段;
  • 3. Database Synchronization数据库同步阶段;
  • 路由器之间交换DBD、LSR、LSU、LSAck数据包,确保邻居间拥有相同的LSDB。其中一台路由器成为Master(router-id高的路由器),另一台成为Slave,Master将控制DBD的信息交换过程;
  • 4.Full Adjacency完全邻接状态;

OSPF状态机

down

init

假设RTA发送第一个Hello报文。1. RTA发送第一个Hello报文,在该Hello报文中邻居列表为空。RTB收到这个Hello报文以后,在端口上创建一个新邻居RTA,并将邻居状态从Down转换成Init。2. RTB发送Hello报文给RTA,而且RTA被包含在此Hello报文的邻居列表中。RTA在收到此Hello报文以后,在端口上创建一个新邻居RTB,并将邻居状态从Down转换成Init,由于RTA本身被包含在此Hello报文的邻居列表中,所以会生成一个2-WayReceived事件,而且RTA和RTB之间是点到点网段,RTA需要和RTB建立邻接关系,因此RTA将邻居状态从Init转换成ExStart。3. RTA将邻居状态转换成ExStart状态以后,向RTB发送一个Database Description报文。如果在邻居状态为Init的时候从邻居收到DD报文,会产生一个2-WayReceived事件,而且RTB需要和RTA建立邻接关系,所有RTB将邻居状态从Init转换成ExStart。

  • 相互交换hello,双向通信建立阶段,init为单向邻居
  • dead-interval时间内路由器收到了来自邻居的Hello包

attempt //NBMA网络下才存在

在NBMA网络上的邻居路由器是手动配置。当NBMA网络上具有DR选举资格的路由器和邻居路由器的接口开始变为Active时或者成为DR/BDR时,这台具有DR选举资格的路由器将会把邻居路由器的转该转换到Attempt状态。在Attempt状态下,路由器使用Hello-interval的时间作为Poll-interval的时间来作为向邻居发送Hello数据包的时间间隔。

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

  • 选举DR/BDR
  • 建立了双向通信--Hello字段看到了自己的router-id
  • 如Init状态从邻居收到DBD,则邻居状态直接转换到Two-way状态
  • Init后,如邻接建立成功则进入ExStart状态,开始数据库同步,如果不能与邻居建立邻接关系则进入2-Way
  • 双向通信已经建立,但是没有与邻居建立邻接关系,是邻接关系前状态
  • 与DRother间处于此状态

exstart 【选举master/slave】

1. 邻居状态机变为ExStart以后,RTA向RTB发送第一个DD报文,在这个报文中,DD序列号被设置为552A(假设),Initial比特为1表示这是第一个DD报文,More比特为1表示后续还有DD报文要发送,Master比特为1表示RTA宣告自己为主路由器。2. 邻居状态机变为ExStart以后,RTB向RTA发送第一个DD报文,在这个报文中,DD序列号被设置为5528(假设)。由于RTB的Router ID比RTA的大,所以RTB应当为主路由器,Router ID的比较结束后,RTA会产生一个NegotiationDone的事件,所以RTA将状态机从ExStart改变为Exchange。3. 邻居状态机变为Exchange以后,RTA发送一个新的DD报文,在这个新的报文中包含LSDB的摘要信息,序列号设置为RTB在步骤2里使用的序列号,More比特为0表示不需要另外的DD报文描述LSDB,Master比特为0表示RTA宣告自己为从路由器。收到这样一个报文以后,RTB会产生一个NegotiationDone的事件,因此RTB将邻居状态机改变为Exchange。4. 邻居状态变为Exchange以后,RTB发送一个新的DD报文,该报文中包含LSDB的描述信息,DD序列号设置为5529(上次使用的序列号加1)。5. 即使RTA不需要新的DD报文描述自己的LSDB,但是做为从路由器,RTA需要对主路由器RTB发送的每一个DD报文进行确认。所以,RTA向RTB发送一个新的DD报文,序列号为5529,该报文内容为空。发送完最后一个DD报文之后,RTA产生一个ExchangeDone事件,将邻居状态改变为Loading;RTB收到最后一个DD报文之后,改变状态为Full(假设RTB的LSDB是最新最全的,不需要向RTA请求更新)。

  • 形成邻接关系的第一个步骤
  • 本地路由器与邻居建立起Master/Slave关系

• Router ID大的优先为主

• 主路由发DD,从路由不能主动发DD

• 从路由的DD序号必须和所回应主路由发送DD序号一致

  • 确定DBD的序列号
  • 此状态下发送的DD报文不包含链路状态描述

exchange

  • 向邻居发送描述自己的DBD,即DBD导航链路状态信息的摘要
  • 发送LSR给邻居路由器,请求最新的LSDBD

loading

1. 邻居状态变为Loading之后,RTA开始向RTB发送LS request报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。2. RTB收到LS Request报文之后,向RTA发送LS Update报文,在LS Update报文中,包含了那些被请求的链路状态的详细信息。RTA收到LS Update报文之后,将邻居状态从Loading改变成Full。3. RTA向RTB发送LS Ack报文,确保信息传输的可靠性。LS Ack报文用于泛洪对LSA的确认,而不是对LS Update报文的确认。邻居状态变成Full,表示邻接关系已经完全建立。

  • 开始同步LSDB
  • 互发LS Request请求LSA,发送LS Update通告LSA

full

  • 两路由器的LSDB已经同步

1-WayReceived事件

  • 路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成

OSPF建立邻接关系的流程

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

OSPF网络类型

MA --- broadcast-默认

  • 以太网
  • 组播发现邻居

• DR和BDR之间也是Adjacency

• 所有路由器与DR和BDR建立Adjacency

• 互相之间为Neighbor(DRothers)

  • 10s hello 40s 死亡时间
  • 需要DR/BDR

• DR发送数据包到224.0.0.5

• BDR发送数据包到224.0.0.5

• 只有DR/BDR侦听224.0.0.6

• DR/BDR不能被抢占

• .6上传,.5下发

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

  • 常见类型

• DSVPN

• ATM

• 帧中继的物理接口

  • 需要DR/BDR
  • 需指定peer
  • 单播发现邻居
  • 30s hello 120s 死亡时间
  • hello是单播

p-to-p/p2MP

  • 常见类型

• PPP

• HDLC

• 帧中继

  • 不需要DR/BDR
  • 网络类型也为加速网络收敛提供方便
  • 组播发现邻居
  • 30s hello 120s 死亡时间
  • 组播,224.0.0.5
  • P2P

  • P2MP

  • 虚连接是属于骨干区域(Area 0)的一条虚拟链路
  • hello是单播,虚链路一旦建立,就不再发送Hello消息,没有HELLO 死亡时间
  • 万不得已才使用,其它区域与骨干区域不相邻的情况一定要规划前避免
  • 创建的原则

• 必须是两台ABR(区域边界)之间

• Virtual-link所经过的区域必须拥有全部的路由选择信息,必须是Transit Area,不能为Stub Area

• RouterA#sh ip ospf virtual-links

TransitNetwork

StubNetwork

  • 仅和一台路由器相连
  • 所有数据要么始发与这个末梢网络上的某个设备,要么终止于这个末梢网络上的某个设备
  • Loopback口是末梢网络节点,将其作为32位主机路由来通告

LSA Type 1 ——Router LSA all->all

  • 区域内所有OSPF接口都会产生的最基本LSA,列出了路由器所有的链路或接口,仅在同区域内泛洪
  • 链路出站cost决定开销,及该链路上所有已知的OSPF邻居

• T1链路(1.544M)cost为64

• Ethernet cost是10(10M)

• Fast Ethernet是1(100M)

• 环回口cost默认1

• 参考值(100)除以带宽(Mb单位)

LSA Type 2 ——Network LSA DR->DRother

  • DR产生

• LSA LSA Type2类型在OSPF的数据库中呈现了 link id 为DR的ip 地址

在MA网络中,DROther和BDR的Router LSA只描述到DR的连接,而DR则通过Network LSA来描述本网段中所有已经同其建立了邻接关系的路由器(分别列出它们Router ID),这样的话,在本网段内链路发送改变时,DROTHER直接将LSA的变化通过224.0.0.6发给DR, DR再通过224.0.0.5发送给其他的DROTHER

  • T2 LSA仅在区域内泛洪
  • 为减少本网段路由器间交换报文次数,DRother将LSA的变化通过224.0.0.6发给DR,DR通过224.0.0.5发送给DRother

LSA Type 3 ——Network Summary LSA

  • 描述到其它AS或其它区域的路由
  • Summary LSA

• 区域边界路由器(ABR)产生,将其它区域的LSA Type1类和LSA Type2类路由转换为LSA Type3路由泛洪到本区域,并将该LSA Type3路由泛洪到其它区域,实现跨区域传递路由

• 用于计算域间路由--非LSDB LSA,T3 LSA为路由条目

• 区域间路由:inter-area route

• 在该LSA所生成的区域内泛洪

• 默认路由也可通过T3 Network-Summary-LSA发布

  • 双点双向ABR场景LSA Type3防环

• 比较router-id,较大方进行LSA Type3泛洪

• ABR身份认定更加严格

• ABR必须有一个接口属于area0

• area 0内必须有一个处于full状态的邻居

LSA Type 4 ——ASBR Summary LSA

  • 边界路由器(ABR)产生,描述到自治系统边界路由器(ASBR)路由信息,区域间泛洪
  • LSA Type1类LSA到达ABR配合LSA Type5泛洪到其他区域,使得其它区域可以计算到达ASBR最优路径

LSA Type 5 ——AS External LSA

  • 自治系统边界路由器(ASBR)产生,描述到AS外部网段路由信息,LSA Type5泛洪所有OSPF区域
  • type5是数据库中唯一没有area 属性的lsa,是非ospf设备的路由信息, 通常边界路由器存在大量此类lsa, stub area来限制此类lsa的传播
  • 整个OSPF AS内部泛洪(Stub 区域除外)

• stub区域到AS外部的路由(即stub区域不存在T5,但T3还存在)只能基于由ABR生成的一条Network-Summary-LSA默认路由

• Stub区域可减少Stub区内部路由器LSDB规模和对内存的需求

• 虚连接不能跨越Stub area

• 完全stub则比stub减少很多不必要的T3,只需要一条默认路由即可,T1\T2\T3

  • AS 的缺省路由也可通过 T5 AS-external-LSAs发布

LSA Type 7 ——NSSA External LSA

  • LSA Type7 LSA由NSSA区域ASBR产生,泛洪范围仅限ABR路由器所在NSSA区域
  • 当T7到达ABR时ABR将LSA Type-7 LSAs 转换成LSA Type-5 LSAs 再发布。T7仅在NSSA泛洪。
  • NSSA 区域(Not-So-Stubby Area)内产生和发布,可以看作NSSA内替代T5的LSA,NSSA不会产生或发布LSA Type-5 LSAs使用T7取而代之。
  • 由于NAAS特殊性,ABR不会产生LSA Type4 LSA,取而代之ABR在LSA Type5 LSA中插入Forwarding Address,但其它区域不存在到达Forwarding Address的路由,LSA Type7转LSA Type5路由不会写入路由表。要避免上述情况,可以在转换的ABR上输入下面命令:area X nssa translate LSA Type7 suppress-fa,将FA地址变为0.0.0.0
  • 头部P-bit标志(0或1)

• ABR接收到的NSSAExternal LSA的P-bit被置为1,则将该LSA Type 7 LSA转化为LSA Type 5 LSA,并将这条LSA泛洪扩散到其他区域中区

• ABR接收到的NSSAExternal LSA的P-bit被置为0,则不会将该LSA Type 7 LSA转化为LSA Type 5 LSA,这条LSA只能被限制在本地NSSA区域中传递

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

LSA Type 8

  • IPV6OSPFv3类似于1类

LSA Type 9

  • IPV6OSPFv3类似于2类  Opaque LSA (链路本地范围)

LSA Type 10

  • Opaque LSA (本地区域范围)

LSA Type 11

  • Opaque LSA (AS范围)

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

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

OSPF区域

Area 0骨干区域

  • 骨干区域负责在非骨干区域之间发布由区域边界路由器汇总的路由信息
  • 为避免域间路由环路,非骨干区域间不允许直接相互发布区域间路由信息
  • 因此,所有区域边界路由器都至少有一个接口属于Area 0,即每个区域都必须连接到骨干区域

非Area 0骨干区域

  • 常规区域(普通区域)

• 可能存在Type1、Type2、Type3、Type4、Type5共计5中类型的LSA

  • 特殊区域

• NSSA区域与STUB区域异同

• 相同点

• 核心作用:减少区域内LSA数量,降低边缘区域设备性能消耗

• 都不引入OSPF其它区域外部路由

• 区别

• STUB区域不能引入本AS外的路由,stub允许T3_OIA可以学习到T3区域间路由

• STUB没有ASBR,NSSA有ASBR

• NSSA区域能将AS外部路由引入并传播整个OSPF域

• NSSA使用场景:引入AS外部路由到OSPF AS内又避免路由引入带来的资源消耗问题,STUB没有T4\T5不满足,配置NSSA满足无需学习OSPF其它区域路由,又发布AS域外路由到OSPF AS诉求

• stub

• stub

• stub区域到AS外部的路由(即stub区域不存在T4、T5)基于ABR生成的一条Network-Summary-LSA(LSA Type3)默认路由,cost为2

• Stub网段表示该网段只有数据出口

• area [area-id] stub

• 注意事项

• •骨干区域(Area0)不能配置成Stub区域。

• •如果要将一个区域配置成Stub区域,则该区域中的所有设备都要配置Stub区域属性。

• •Stub区域内的设备不能再作为ASBR,即自治系统外部的路由不能在Stub区域内传播。

• •Stub区域内不能存在虚连接。

• totally stub

• totally stub过滤T3区域间路由,ABR需要配置以下命令,totally stubby area其它路由器按stub配置即可

• Totally Stub区域既不允许OE1/OE2路由在区域内传播,也不允许OIA路由在区域内传播,进一步减少区域内LSA数量

• area [area-id] stub no-summary

• NSSA

• NSSA(Not So Stub Area)

• LSA Type7  --> LSA Type5,T7扩散范围仅限于边界路由器所在NSSA区域

• 过滤T4/T5路由,NSSA的ABR自动发布缺省路由,保证NSSA到外部可达,ABR使用T7向OSPF域宣告AS域外路由area 1 nssa default-information-originate以LSA Type7 LSA宣告默认路由

• 双点双向ABR选举防环:ABR不计算彼此发布的缺省路由,Router ID较大者进行7转5,NSSA的ABR被标记为ASBR flag E位置位1

• 一个区域内所有路由器配置的区域类型必须一致Hello报文中使用N-bit来标识路由器区域类型,区域类型选择不一致的路由器不能建立OSPF邻居关系

• area area-id nssa

• Totally NSSA

• 过滤T3/T4/T5除了一条T3 LSA指向ABR的默认路由,只允许区域内路由T1\T2\T7,Totally NSSA不发布自治系统外部路由和区域间的路由,只发布区域内路由

• area area-id nssa no-summary

• area area-id nssa area area-id nssa no-summary

OSPF路由类型

O

  • 1、2类LSAOSPF intra-area(router LSA)and network LSA
  • 本地运算得出,无法进行汇总

O IA

  • Inter-Area - 区域间路由
  • 3类LSA,区域外路由由ABR发布summary LSA,包含路由信息而不是链路状态信息,由ABR进行汇总

O E1

  • LSA Type 1 External - 第一类外部路由,(可指定,cost累加)内部开销+外部开销
  • 5类LSA

O E2

  • LSA Type 2 External -第二类外部路由(外部重分布默认类型,cost20)仅计算内部开销
  • 5类LSA

O N1

  • NSSA类型的路由
  • 7类LSA

O N2

  • 7类LSA

OSPF路由类型优先级

  • O > OIA > OE1 > OE2

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

OSPF路由汇总

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

ABR汇总本区域内路由 T3

  • Router(config-router)#area area-id range address mask [advertise | not-advertise] [cost cost]

ASBR汇总外部路由 T4 T5

  • Router(config-router)#summary-address ip-address mask  [not-advertise] [tag tag]
  • 默认路由不会自动下发

• default-information originate [always] [metric metric-value] [metric-LSA Type LSA Type-value] [route-map map-name] //always为判断运营商是否下发了默认路由,如不加,如运营商不下发OSPF则不会下发默认路由

• 此默认路由为LSA Type5类LSA,不会泛洪到NSSA区域内,NSSA ABR需独立配置默认路由下发策略

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

OSPF邻居认证

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

OSPF认证范围

  • 区域认证-OSPF进程下配置

• 明文认证

• MD5认证

  • 接口认证-接口下配置

• 明文认证

• MD5认证

LSDB 过载保护

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

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

LSDB过载保护配置

  • maximum-number:不是自己产生的LSA.
  • threshold-percentage:达到多大比例以后将发出警告:默认为75%
  • [warning-only]:只发出警告,而OSPF不会进入忽略状态.默认被禁用.
  • [ignore-time minutes]:超过最大LSA数量限制后,忽略所有邻居LSA宣告。默认为5分钟。
  • [ignore-count count-number]:指定OSPF进程可连续进入忽略状态次数。默认为5次。
  • [reset-time minutes]:指定多长时间后将忽略状态计数器置0,默认为10分钟。
  • max-lsa maximum-number [threshold-percentage] [warning-only] [ignore-time minutes] [ignore-count count-number] [reset-time minutes]

OSPF配置

华为

  • 全局下reset ospf process 1
  • display ospf interface
  • display ospf peer brief
  • display ospf peer
  • display ospf lsdb
  • display cu conf ospf
  • display ospf  1 brief
  • display ip routing-table protcol ospf
  • display ospf interface 2/0(brief)//查看ospf在接口(设备)开启的情况
  • ospf network-tpye p2p
  • ip ospf priority 0-255
  • display ip ospf database router
  • display ip ospf database network
  • show ip
  • display ospf routing
  • display ospf error

思科

  • Router(config)#router ospf process-id [vrf vpn-name]
  • Router(config-router)#network ip-address wildcard-mask area area-id
  • Router(config-if)#ip ospf process-id area area-id [secondaries none]
  • Router(config-router)#router-id ip-address
  • Router#clear ip ospf [process number] process
  • debug ip ospf packet
  • show ip ospf database
  • RouterB#sh ip ospf查看OSPF router ID, 时间和统计信息
  • Router#show ip protocols观察所配置的所有路由协议进程,参数和统计信息
  • show ip route ospf [process-id ]查看所有由ospf进程产生的路由表信息
  • show ip ospf interface [LSA Type number]查看ospf route-id,区域号,和邻接关系信息
  • show ip ospf neighbor [LSA Type number] [neighbor-id] [detail]查看OSPF的邻居信息,包括广播链路上的DR,BDR信息
  • RouterB# show ip ospf neighbor detail
  • Router#debug ip ospf adj //debug显示OSPF邻接相关事件

• LSA Type 0 不认证

• LSA Type 1 明文认证

• LSA Type 2 MD5认证

注意

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

修改OSPF的AD

  • distance AD ip-src wildmask acls

• AD:针对本地生效的OSPF优先级

• ip-src:更新源,对OSPF来说就是route-id

• wildmask:更新源的反掩码

• acls:指定ACL编码,针对匹配的ACL路由进行优先级调整

  • distance ospf external ad1 inter-area ad2 intra-area ad3

• 此针对全局生效

• external ad1 :外部OSPF

• inter-area ad2 :区域内OSPF

• intra-area ad3:区域间OSPF

修改OSPF COST

  • RouterA(config-if)#ip ospf cost interface-cost
  • RouterA(config-router)#auto-cost reference-bandwidth ref-bw //修改分子,默认100
  • 以上两个参数,全局修改有效

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

  • OSPF默认将环回口IP宣告为32位的主机路由供管理员使用环回口进行路由测试,但在特殊场景如MPLS VPN场景需保证环回口路由与主机配置一致避免标签断裂,需使用命令欺骗OSPF环回口下有设备(P2P)
  • 环回口下R1(config-if)#ip ospf network point-to-point

OSPF简版

距离矢量 DV

基于传闻直接信任

扁平式

链路状态 LS

构建全网拓扑

树形结构

链路状态

层次性

三张表

邻居表

  • 邻居

• 邻居只交互hello

  • 邻接

• 邻接交互链路状态更新

拓扑表

  • 链路状态数据库LSDB
  • 同个区域内LSDB相同
  • 备选链路

OSPF路由表

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

网络类型

点对点

  • full

点对多点

  • full
  • 2way

SPF最短路径树

学习LSA→LSDB

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

最佳路径放入路由表

数据包

Hello

  • 建立邻居
  • 维持邻居
  • LSA Type 1
  • 字段

• area id

• hello&dead

• authentication password

• stub area flag

Datebase Description

  • 描述拓扑目录数据库
  • LSA Type2
  • 链路状态请求包
  • LSA Type 3
  • 链路更新包
  • LSA Type 4
  • 链路状态确认包
  • LSA Type 5

建立过程

Init

  • A hello发送出去邻居

Two Way

  • A接收到回复hello包含自己的router-id,DRother与DRother间为two way

Exstart

  • 多路访问链路
  • 选举DR、BDR
  • 仅多路径类型下存在

Exchange

  • 在选举主从路由器(选举谁先发送DBD,router-id大为master,另一个为slave)

Loading

  • 发送DBD的过程,发送LSR,LSU,LS-Ack

FULL

  • 发送链路状态更新完成邻接

协议号

eigrp 88

ospf 89

rip udp 520

路由汇总节点

ABR

  • area 1 range 172.16.0.0255.255.0.0

ASBR

  • summary 172.17.0.0255.255.0.0

默认路由

通过LSA5

Cost为O E2

特殊区域

Always

  • 路由表没有默认
  • 路由表有默认
  • Always压倒一切

没有Always

  • 路由表没有默认

• 不可以发送默认

  • 路由表有默认

• 可以发送默认

OSPF区域类型

特殊区域

  • Stub

• stub

• 过滤LSA5、LSA4

• 非骨干

• 自动产生一条默认路由

• 默认cost1

• ABR LSA3

• OIA

• totally stub

• 过滤LSA5、LSA4、LSA3

• default route (LSA3)

• 非骨干

  • NSSA(Not-So-Stubby Area)

• nssa

• 过滤LSA5、LSA4

• 允许存在外部路由

• ASBR产生

• LSA7→LSA5

• 只允许自己产生

• 过滤别人产生的的外部路由

• 手动下发默认路由

• O N2

• LSA7

• totally nssa

• 过滤LSA5、LSA3

• 允许存在外部路由

• 产生一条LSA3默认路由

• ASBR产生

普通区域

  • 标准区域
  • 骨干区域

• 骨干与非骨干可以交换路由

• 非骨干之间不可以交换路由

特点

  • 减小网络故障域
  • 减少路由表项
  • 区域间防环

认证

接口认证

  • 明文

• KEY

  • MD5

• KEY

• KEYID

区域认证

  • 明文

• KEY

  • MD5

• KEY

• KEYID

虚链路

  • 在虚链路的2个ABR认证

LSA

LSA序列号

  • 标记是否最新(值越大越新)
  • ox80000001~0×7ffffff

LSU中传输

更新方式

  • 触发更新
  • 增量更新
  • 周期性更新30min

LSA1

  • router LSA
  • 每台路由器都能产生
  • 本区域内防洪
  • router-id标识
  • sh ip ospf da router

LSA2

  • network LSA
  • DR产生,选举DR和BDR

• 本区域内有哪些路由器

  • broadcast/NBMA
  • 本区域内防洪
  • 本区域内的路由
  • summary LSA

LSA3

  • summary LSA
  • ABR产生
  • 泛洪到整个自治系统
  • 本区域内的链路信息和掩码
  • sh ip ospf da summary

LSA4

  • summary LSA
  • 起始ABR产生的
  • 泛洪到整个自治系统
  • 通告ASBR信息(到达外部系统)
  • sh ip ospf da asbr-summary

LSA5

LSA7

  • external LSA
  • ASBR产生
  • 泛洪到整个自治系统
  • 学习外部的路由
  • sh ip ospf da external

思考路径

  • 谁产生
  • 泛洪范围
  • 用途

metric

100/带宽

调整

OSPF路由类型

O

  • LSA1、LSA2
  • 区域内路由

O IA

  • LSA3
  • 区域间路由

O E1/O E2[default]

  • LSA5
  • 外部自制系统路由
  • OE2不计算内部cost

• O E2 cost 20

  • OE1计算内部和外部cost

router-id

自动选举

  • 存在环回口

• 环回口地址最大

  • 不存在环回口

• 物理接口地址最大

  • 不具备抢占性

• 物理接口地址最大

手动指定

  • 可以不存在的地址

• clear ip ospf process

网络类型

广播【邻居自动建立】

  • 点对点【cisco】

• 不需要选举DR

  • 点对多点【RFC】

• 不需要选举DR

  • 广播多路访问

• 需要选举DR

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

  • 非广播多路访问【帧中继默认、RFC】

• 需要选举DR

  • 点对多点非广播【cisco私有】

• 不需要选举DR

角色

DR

  • 接收(侦听)224.0.0.6发送224.0.0.5
  • 优先级大优先

• router-id

• 优先级默认为1,255强制为DR

• 优先级为0不参与选举

BDR

  • 接收(侦听)224.0.0.6发送224.0.0.5

DROther

  • 发送224.0.0.6接收(侦听)224.0.0.5

面试常见问题

OSPF如何防环

简述LSA

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

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

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

link id的作用

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值