OSPF协议
一、OSPF(开放最短路径优先)协议简介
1.1 OSPF协议特点
RFC 2328 中定义的OSPF(Open Shortest Path First)是典型的链路状态路由协议,基于SPF(Dijkstra)算法计算最优路径,支持分层路由设计和多类型网络环境。采用IP协议号89,组播地址224.0.0.5/6。
1.2 OSPF版本演进
版本 标准文档 主要特性 OSPFv2 RFC 2328 IPv4支持,经典版本 OSPFv3 RFC 5340 IPv6支持,独立于地址族 本文笔记是OSPFv2
二、OSPF(开放最短路径优先)协议结构
2.1 OSPF报文类型
2.1.1 OSPF Header(公共报文头)
OSPF的报文封装在IP协议之上,分别有五种类型的报文,但这五种报文具有相同的报文头格式,长度为24字节。
字段 长度 说明 Version 1字节 版本号(2表示OSPFv2) Type 1字节 报文类型(1-5) Packet Length 2字节 包含OSPF头部的总长度 Router ID 4字节 发送路由器ID(点分十进制格式) Area ID 4字节 所属区域ID(0表示骨干区域) Checksum 2字节 校验和 AuType 2字节 认证类型(0-无,1-明文,2-MD5) Authentication 8字节 认证数据
2.1.2 Hello报文
Hello报文是最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。
字段 长度 含义 Network Mask 32比特 发送Hello报文的接口所在网络的掩码。 HelloInterval 16比特 发送Hello报文的时间间隔。 Options 8比特
E:允许泛洪AS-External-LSA
MC:转发IP组播报文
N:处理Type-7 LSA,用于支持非完全末节区域,与E bit位不可同时设置。默认置0,表示不支持。
DC:处理按需链路DN:用来避免在MPLS VPN中出现环路。当PE向CE发送3类、5类和7类LSA时需要设置DN位,其他PE从CE接收到该LSA时,不能在它的OSPF路由计算中使用该LSA。
O:用来定义始发路由器是否支持Opaque LSA(9类、10类和11类)。Router Priority 8比特 接口的DR优先级,用于DR、BDR选举。默认为1,如果设置为0,则路由器不能参与DR或BDR的选举。 RouterDeadInterval 32比特 失效时间,单位为秒。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。 Designated Router 32比特 DR的接口地址。 Backup Designated Router 32比特 BDR的接口地址。 Neighbor 32比特 邻居,以Router ID标识。 Options字段可以推理出区域类型
区域类型 E N 常规区域 1 0 stub区域 0 0 NSSA区域 0 1
2.1.3 DD报文
OSPF DD(Database Description)报文描述了本地LSDB的摘要信息,用于两台路由器进行数据库同步。
第一个DD报文不携带LSA摘要信息,后续DD报携带LSA摘要信息
字段 长度 含义 Interface MTU 16比特 在不分片的情况下,此接口最大可发出的IP报文长度,单位为字节。 默认是0,MTU不进行检测,开启后缺省1500字节。 Options 8比特 同Hello Options字段 I 1比特 初始位,如果这是第首个DD报文,则置为1,否则置为0。 M (More) 1比特 更多位,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。 MS (Master/Slave) 1比特 主从位,当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。Slave的M位置0。 DD sequence number 32比特 DD报文序列号,用来作隐式确认。 An LSA Header 每个20字节 该DD报文中所包含的LSA的头部信息。
2.1.4 LSR报文
链路状态请求LSR(Link State Request)包用于向特定邻居请求自己没有的LSA
LSR中携带LSA三要素,确定一个唯一的报文
字段 长度 含义 LS type 32比特 LSA的类型号。 Link State ID 32比特 与LSA中的LS Type和Advertising Router一起在路由域中描述一个LSA。 Advertising Router 32比特 产生此LSA的路由器的Router ID。
2.1.5 LSU报文
OSPF LSU(Link State Update)报文用来向对端路由器发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。
字段 长度 含义 Number of LSAs 32比特 LSA的数量 LSAs
2.1.6 LSAck报文
OSPF LSAck(Link State Acknowledgment)用来对接收到的LSU报文进行确认。内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)
字段 长度 含义 An LSA Header 可变 LSA Header信息
三、OSPF(开放最短路径优先)协议机制
[!TIP]
知识点补充
MA网络(多路访问网络,Multi-Access Network),Broadcast(广播) 和 NBMA(非广播多路访问) 类型都是其中的类型
特性 Broadcast(广播网络) NBMA(非广播多路访问) 典型场景 以太网(Ethernet)、Wi-Fi 帧中继(Frame Relay)、ATM 广播支持 ✅ 支持广播和组播(OSPF使用 224.0.0.5/6)❌ 不支持广播,需单播通信 邻居发现 自动发现(通过组播Hello报文) 需手动配置邻居(单播地址) DR/BDR选举 必须选举DR/BDR以优化LSA泛洪 必须选举DR/BDR,且需保证全网DR可达 默认OSPF网络类型 以太网接口默认类型为 Broadcast需显式声明为 NBMA(华为设备需配置ospf network-type nbma)
3.1 网络类型
网络接口类型 典型二层链路协议 Hello/Dead时间 DR/BDR选举 Hello发送方式 OSPF 32位主机路由 Point-to-Point (P2P) PPP、HDLC、GRE 10s / 40s ❌ 不需要 ✅ 组播(224.0.0.5) ❌ 默认生成24/30位 Broadcast (BMA) Ethernet、Wi-Fi 10s / 40s ✅ 需要 ✅ 组播(224.0.0.5) ❌ 默认生成24/30位 NBMA Frame Relay、ATM、X.25 30s / 120s ✅ 需要 ❌ 单播(需手动配置邻居) ❌ 默认生成24/30位 Point-to-Multipoint (P2MP) 逻辑覆盖网络(如VPN) 30s / 120s ❌ 不需要 ✅ 组播(224.0.0.5) ✅ 生成32位主机路由 Loopback 环回接口(虚拟接口),默认视为P2P(华为设备) - ❌ 不需要 ❌ 不发送Hello ✅ 固定生成32位路由
3.2 邻居建立
3.2.1 邻居建立的先要条件
相同网段
必须保证对Hello报文的源地址通信
在P2P线路中可以跨越子网,在MA链路中会用ARP来检测源地址
Router Id要唯一
Router-id 在MA网络的DR/BDR选举以及正常的DD阶段的Master/Slave选举需要不唯一
Area-id要一致
认证需要通过
Hello报文会进行此数据的检测
掩码要一致(MA网络中有意义)
Hello/Dead时间要一致
Hello报文会进行此数据的检测
区域类型要一致:常规区域和特殊区域
Hello报文中的Options置位会进行检测
MTU要一致
如果开启检测DD报文会MTU检测,不一致会卡Exchange 和 Exstart
接口没有被Silent,Silent接口是不收不发Ospf报文
MA网络中DR-Priority全是0
邻居会卡2-way状态
网络接口类型NBMA只能跟NBMA建立单播邻居关系
因为其Hello是单播报文
3.2.2 邻居建立的过程
本文用Broadcast(广播)网络邻居状态示意
3.2.2.1 邻居状态建立
[!NOTE]
仅交换Hello报文维持存活检测,不交换链路状态数据库(LSDB)的详细信息。
Down
邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
[!NOTE]
Attempt(NBMA网络特有状态)
这种状态适用于NBMA网络,邻居路由器是手工配置的。邻居关系处于本状态时,路由器会每隔HelloInterval时间向自己手工配置的邻居发送Hello报文,尝试建立邻居关系。
Init
收到Hello报文后状态为Init。
2-Way
收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
在MA网络中,在此之前需要选举DR,BDR 见接口状态机
3.2.2.2 邻接状态建立
Exstart
开始协商主从关系,并确定DD的序列号,此时状态为Exstart。
3.2.2.2.1 DD交互
第一个DD报文
在双方第一个DD报文中,会将DB Description中的I,M,MS置位为1,即0x7进行主从选举,并且附带着DD Sequence 序列号
通过比较OSPF Header中的Router ID来分出Master 和 Slave
Slave用Master的DD Sequence来进行第一个报文的回复,并且后续都要用DD Sequence进行隐式回复
Master收到Slave的报文后会DD Sequence + 1来进行隐式回复
在最后Slave会进行收尾的最后确认
Exchange
主从关系协商完毕后开始交换DD报文,此时状态为Exchange。
Loading
DD报文交换完成即Exchange done,此时状态为Loading。对面发送DD报文的LSA接受完毕,可能在DD交互中进入这个状态
Full:LSR重传列表为空,此时状态为Full
3.3 DR和BDR选举
[!TIP]
知识点补充
Router ID全局唯一,参与DR/BDR的选举以及DD交互的主从选举
Router ID的产生
手工指定
OSPF 进程Router ID
全局Router ID 继承
选举环口地址 (华为模拟器实验不可以,只是选举活动接口最大地址)
选举活动接口最大地址
在上述的产生中1重置进程即可覆盖,2 3需要重置协议
3.3.1 接口角色
DR:Designated Router:指定路由器 自行选举,不被抢占
BDR:Backup Designated Router:备份指定路由器 继承DR设备
DRother:除了DR和BDR以外的其他所有本链路上的路由器
3.3.2 接口特点
DR有且只有1个,BDR有且只有一个且可以没有BDR
如果一台路由器的优先级为0,则它不会被选举为DR或BDR
3.3.3 接口工作地址
DR和BDR侦听224.0.0.5和224.0.0.6
Drother侦听224.0.0.5
3.3.4 选举流程
- 等待WaitingTimer(40s),如果没有人跟我竞争,我就是DR
- 在WaitingTimer时间后,开始发送带有DR和BDR字段Hello报文,如果有人跟我竞争DR(priority>=1),优选Priority大的是DR,如果Priority相同,选优Router ID大的是DR
[!IMPORTANT]
这是常规理想状态下,但如果一个接口状态在WaitingTimer时间内收到带有DR的Hello包,会直接承认DR,也可以说后续设备不会抢占DR
当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR
3.4 接口状态机
输入事件 描述 IE1 InterfaceUP:底层协议表明接口是可操作的。 IE2 WaitTimer:等待定时器超时,表明DR和BDR选举等待时间结束。 IE3 BackupSeen:设备已检测过网络中是否存在BDR。发生这个事件主要有下面两种方式:接口收到邻居设备的Hello报文,宣称自己是BDR。接口收到邻居设备的Hello的报文,宣称自己是DR,而没有指明有BDR。这都说明邻居间已进行了相互通信,可以结束Waiting状态了。 IE4 接口所在的设备在网络中被选举为DR。 IE5 接口所在的设备在网络中被选举为BDR。 IE6 接口所在的设备在网络中没有被选举为DR或BDR。 IE7 NeighborChange:与该接口相关的邻居关系变化的事件发生,这表明DR和BDR需要重新选举。下面的这些邻居关系变化可能会导致DR和BDR重新选举:接口所在的设备和一个邻居设备建立了双向通信关系。接口所在的设备和一个邻居设备之间丢失了双向通信关系。通过邻居设备发送的Hello报文检测到邻居设备重新宣称自己是DR或BDR。通过邻居设备发送的Hello报文再一次检测到邻居设备宣称自己不再是DR或BDR。通过邻居设备发送的Hello报文再一次检测到相邻设备的DR优先级都已经改变。 IE8 UnLoopInd:网管系统或者底层协议表明接口不再处于环回状态。 IE9 InterfaceDown:底层协议表明接口不可操作。任何一种状态都可能触发此事件切换到Down状态。 IE10 LoopInd:网管系统或者底层协议表明接口处于环回状态。任何一种状态都可能触发此事件切换到Loopback状态。 MA网络中的Interface状态
InterfaceUP->WaitingTimer->DR/BDR/DRother
仅P2P、P2MP网络的状态
InterfaceUP->P2P
3.5 OSPF开销
OSPF的开销使用的是参考值,基于参考公式取计算结果的整数部分作为接口开销值(当结果小于1时取1)
$$
Cost = 参考带宽 / 接口带宽(取决硬件)
$$
修改带宽参考值
修改接口开销
3.6 OSPF认证
OSPF的认证方式分为明文认证和MD5认证,认证字段见Hello报文
认证类型 配置层级 认证方式 配置命令示例 特点 链路认证 物理接口 明文认证 [Huawei-Serial1/0/0] ospf authentication-mode simple cipher Huawei@123认证信息明文传输,安全性低 MD5认证 [Huawei-Serial1/0/0] ospf authentication-mode md5 1 cipher Huawei@123使用Key ID(1-255)和密钥,安全性高 虚链路(Virtual Link) 明文认证 [Huawei-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2 simple cipher Huawei@123虚链路专用配置,需在两端区域一致 MD5认证 [Huawei-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2 md5 1 cipher Huawei@123支持分段密钥更新(修改Key ID实现无缝切换) 区域认证 OSPF区域 明文认证 [Huawei-ospf-1-area-0.0.0.0] authentication-mode simple cipher Huawei@123区域内所有接口继承认证,减少逐接口配置 MD5认证 [Huawei-ospf-1-area-0.0.0.0] authentication-mode md5 1 cipher Huawei@123统一管理区域内所有接口的认证策略 无认证 全局默认 无 默认不配置 无安全验证,网络易受欺骗攻击
四、LSA
[!NOTE]
本场景图文字都是LSA->ADV(AREA)
4.1 LSA简介
LSA:link state advertisement 链路状态通告,有着不同的类型LSA,通过不同类型的LSA组成OSPF的最短路径算法。
LSA类型 LinkState ID Advertising Router 内容(Content) 传播范围 Type 1 (Router) 路由器自身的Router ID 本路由器 描述本路由器的直连链路状态Link-type Link-id Link data:
- P2P链路(邻居Router ID+接口IP)
- 末节网络(直连前缀+掩码)
- Transit网络(DR接口IP + 我连接对方的IP)
-Virtual(对端接口IP + 我连接对方的IP)区域内 Type 2 (Network) DR的接口IP地址 DR路由器 描述广播网络的成员路由器列表(DR接口IP+子网掩码+所有邻居Router ID) 区域内 Type 3 (Summary) 区域间路由前缀 ABR路由器 包括:
- 区域间路由前缀和掩码
- 到该前缀的路径开销(ABR到目的网络的累计Cost)区域内 Type 4 (ASBR Summary) ASBR的Router ID ABR路由器 指示到达ASBR的路径开销(ABR到ASBR的累计Cost) 区域内 Type 5 (External) 外部路由前缀 ASBR路由器 包括:
- 外部路由前缀和掩码
- 外部路径开销类型(E1/E2)
- 转发地址(FA)全区域 Type 7 (NSSA) 外部路由前缀 ASBR路由器(位于NSSA区域) 类似Type5 LSA,但仅在NSSA区域内传播 NSSA区域
4.2 LSA Header(LSA摘要信息)
LS Type Link State ID Advertising Router字段构成LSR的请求信息
字段 说明 LS Typoe LSA类型 Link State ID 链路状态ID,不同的LSA不同 Advertising Route 通告路由器 Sequence Number 序列号 Checksum 校验和 Length LSA 体现LSA内容大小,LSA里内容越多,Length就越大 AuType 认证类型(0-无,1-明文,2-MD5) LS AGE 老化时间
4.3 LSA更新机制
4.3.1 MA网络更新
从监听角度,224.0.0.5所有路由器监听,224.0.0.6所有DR和BDR侦听
从发送角度角度,DR和BDR的交互在224.0.0.5,Drother发送在224.0.0.6
DRother更新拓扑
Drother1 发送LSU到224.0.0.6(DR和BDR侦听地址)
DR发送LSU到224.0.0.5(所有ospf侦听)
1)发送LSU给所有ospf
2)确认刚才Drother1的LSU
BDR发送LSack到224.0.0.5
非始发Drothter发送Lsack到224.0.0.6
BDR更新
BDR发送LSU到224.0.0.5(所有ospf侦听)
DR发送LSAck到224.0.0.5
DRother发送LSack到224.0.0.6
DR更新
DR发送LSU到224.0.0.5
BDR发送LSack到224.0.0.5
Drother发送LSack到224.0.0.6
4.3.2 非MA网络
直接触发LSU,对方回复ack
4.4 LSA新旧机制
[!NOTE]
T3,T4,T5这种单个网络一个LSA的会触发毒化报文,T1,T2这种一般会触发Sequence更新
4.4.1 序列和
序列号是一个无限循环的数,从0x800000001->0x7FFFFFFFF,这是一个反补的表示,真实的数字是-7FFFFFFFF。
每次路由器生成新的LSA实例时,将LSA的序号加一,到达7FFFFFFFF(序列号溢出) 发送 Age = 3600的毒化报文
4.4.2 LSA计时器
LSA 为1800s时,始发路由器会触发更新,泛洪,更新LSDB
4.4.3 LSA毒化
MaxAge LSA最大老化时间:默认3600秒,所以用最大的老化时间告知路由器删除报文
只有Self-originate的路由器可以毒化
4.5 LSA新旧检测
判断步骤 条件 处理动作 结果 1. 序列号检查 接收的LSA序列号 > 本地存储的LSA序列号 1. 保存新LSA
2. 发送LSack确认
3. 更新拓扑并运行SPF算法
4. 向区域内泛洪新LSA接受更新,触发路由重计算 接收的LSA序列号 < 本地存储的LSA序列号 1. 将本地LSA封装为LSU,发送给对端 反向更新对端LSDB 序列号相同 进入步骤2(校验和检查) - 2. 校验和检查 接收的LSA校验和 > 本地存储的LSA校验和(校验和更大表示数据更完整) 1. 保存新LSA
2. 发送LSack确认
3. 更新拓扑并运行SPF算法
4. 向区域内泛洪新LSA接受更新,触发路由重计算 接收的LSA校验和 < 本地存储的LSA校验和 1. 将本地LSA封装为LSU,发送给对端 反向更新对端LSDB 校验和相同 进入步骤3(毒化检测) - 3. 毒化检测 接收的LSA的 Age= 3600(MaxAge,表示需删除)1. 保存该MaxAge LSA
2. 发送LSack确认
3. 替换本地LSA并泛洪
4. 从LSDB中删除原LSA删除旧LSA,全网同步老化状态 接收的LSA的 Age≠ 3600进入步骤4(MaxAgeDiff检查) - 4. MaxAgeDiff检查 两个LSA的 Age差 > 900秒(15分钟)若接收的LSA Age< 本地LSAAge:
1. 保存新LSA
2. 更新拓扑并运行SPF算法
3. 泛洪新LSA接受较新的LSA(Age越小越新) 若接收的LSA Age≥ 本地LSAAge:
1. 将本地LSA封装为LSU,发送给对端反向更新对端LSDB 两个LSA的 Age差 ≤ 900秒忽略该LSA 视为相同LSA,不处理
4.5 Router-LSA
Router-LSA,一类LSA 用于描述自己路由器直连的网络和开销,在路由器所属的区域内传播。
字段 说明 LS Typoe Type1 Link State ID 自己的Router ID Advertising Route 通告路由器
携带的Type类型有四种
Link Type: 1 - P2P
Link Type: 2 - Transet
Link Type: 3 -Stub
Link Type: 4 -Virtual
4.6 Network-LSA
由DR(Designated Router)产生,描述了所连接广播型链路上所连接的拓扑信息,在所属的区域内传播。
字段 说明 LS Typoe Type2 Link State ID DR接口IP地址 Advertising Route 通告路由器 Netmask
字段是本网段的掩码,与DR接口IP地址结合可以推出网络号
Attached Router
是与DR相连的设备Router ID,包括DR本身
4.7 Network-summary-LSA
由ABR发布,用来描述区域间的路由信息,区域内泛洪,ABR是将区域内部的Type1和Type2的信息收集起来并汇总之后扩散出去(实际上一个叶子的描述)。
字段 说明 LS Typoe Type3 Link State ID 域间路由前缀 Advertising Route 通告路由器
ABR实际上将其他区域的信息改变成了路由信息挂载到ABR上,实际上是一种DV计算(如果ABR收到本区域的T3报文后选择过滤,并且不进入FIB转发表,不会再像其他区域生成T3报文)
到Summary-LSA的目的网段开销=自己SPF内开销+ABR到目的网段的开销
4.7.1 ABR设备
Area border Router 区域边界路由器,有与骨干区域的邻接关系的路由器才能是真正的ABR路由器。ABR路由器负责产生T3报文。
没有与骨干区域有邻接的路由器,比如单独宣告环口进入网络的不会遵守T3传递规则,就是个伪ABR,伪ABR不遵守T3报文规则,比如规则5。
场景图4.1 伪ABR计算非骨干区域的T3路由
4.7.2 T3传递规则
ABR把非骨干区域内T1/T2所计算出来的域内路由,向骨干区域(AREA0)产生T3(叶子)
ABR把骨干区域域内T1/T2所计算出来的域内路由,向非骨干区域(AREA X)产生T3(叶子)
ABR把骨干区区域的T3所计算出来的域间路由,向非骨干区域(AREA X)产生T3(叶子)
- 前提:本区域没有对应的域内路由
场景图4.2 抑制T3场景
ABR不会把非骨干区域的T3向骨干区域产生T3
- 水平分割,防止回灌
场景图4.3 防止路由回灌
ABR不计算非骨干区域的T3路由,除非ABR失去身份
4.8 ASBR-Summary-LSA
由ABR发布,区域内泛洪,T4报文只是告诉了如何去ASBR的位置,让本区域的路由器可以通过自己来到达ASBR路由器,逻辑上是一个拓扑描述。
字段 说明 LS Typoe Type4 Link State ID ASBR Router-ID Advertising Route 通告路由器 **Metric **
到ASBR开销
4.8.1 T4传递规则
- ABR把非骨干区域内T1中LSA含有ASBR FLAG的,向骨干区域(AREA0)产生T4
- ABR把骨干区域的T4,向非骨干区域(AREA X)产生T4
- ABR把骨干区区域的T4,向非骨干区域(AREA X)产生T4
- ABR不会把非骨干区域的T4向骨干区域产生T4 路由回灌
- ABR不会计算非骨干区域的T4
4.9 AS-External-LSA
T5报文只告知了是哪个路由器的产生的,所以在非本区域的路由器,需要借助T4报文来寻找ASBR的位置。
字段 说明 LS Typoe Type5 Link State ID 域外路由前缀 Advertising Route ASBR路由器 Netmask
掩码
External Type
外部路由开销计算方式 默认Type 2
特性 Type 1外部路由(E1) Type 2外部路由(E2) 路径计算方式 总成本 = 外部成本 + 内部路径成本(到ASBR的OSPF内部成本)。 总成本 = 外部成本(忽略到ASBR的内部OSPF成本)。 默认类型 需手动指定(如华为 type 1)。默认类型(无需配置)。 LSA中的标记字段 Type 5 LSA中的 E-type字段值为1。Type 5 LSA中的 E-type字段值为2。适用场景 需综合外部和内部路径成本(如带宽敏感场景)。 外部成本显著高于内部成本(如Internet出口路由)。 路径优先级 优先选总成本更低的路由(包含内部和外部成本)。 仅比较外部成本,若外部成本相同,再比较内部路径成本。 Metric
开销
Forwariding Address
最优转发地址
4.9.1 ASBR设备
Autonomous System Border Router 自治系统边界路由器
具有引入外部路由能力的表现任何一条满足(能够产生T5)
- Import-route
只要有这种动作,路由失效了也会置为ASBR
- default-route-advertise
强制产生缺省路由
- NSSA区域的ABR设备
4.10 NSSA-LSA
T7报文跟T5报文类似,但是T7报文只在NSSA区域泛洪,当T7报文要去往非NSSA区域时,要进行7转5
字段 说明 LS Typoe Type7 Link State ID 域外路由前缀 Advertising Route ASBR路由器(位于NSSA区域) Options字段
Propagate Set 置位1,表示允许链路传播7转5,用于防环
Netmask
掩码
External Type
外部路由开销计算方式 默认Type 2
Metric
开销
Forwarding Address
五、Forwarding Address
5.1 Forwarding Address 的介绍
转发地址(Forwarding Address)是OSPF在 Type 5 LSA(外部路由) 和 Type 7 LSA(NSSA外部路由) 中携带的一个字段,用于指示到达外部网络的流量应直接转发到的下一跳IP地址,而非通过ASBR(自治系统边界路由器)。其主要目的是 优化流量路径,避免次优路由。
[!IMPORTANT]
其实实现的意义是在于整个OSPF计算出了FA地址的路由,通过T1/T2/T3报文来计算出,T1/T2/T3报文自带了防环,进而优化次优路径,绕行ASBR。
5.2 Forwading Address字段的产生意义
5.2.1 FA属性默认继承
nssa suppress-forwarding-address #在进行7转5时,删除转发地址,不继承FA地址 # 用途隐藏NSSA区域细节 # 没有FA地址可能会环路,但是抑制不会,ASBR在NSSA区域自己有FA地址5.2.2 NSSA场景
默认使能LoopBack 接口作为 Forwading Address 地址 最大优先
随机使能的OSPF接口地址
5.2.3 常规区域
- 默认是0.0.0.0 直接计算ASBR
5.2.4 特殊场景
特殊:若满足下列三点,则优先使用到达外部路由的NextHop地址为FA地址
- 外部路由接口使能OSPF (这样才能在OSPF路由上计算出,有优化的可能)
- 外部路由接口的网络接口类型是非P2P、P2mP (点对点的链路没有优化的意义,只有叶子结点才有优化的可能)
- 外部路由接口没有被静默掉 (Silent 的接口不会计算出路由)
# AR2 通告 Type : External Ls id : 192.168.1.1 Adv rtr : 2.2.2.2 Ls age : 228 Len : 36 Options : E seq# : 80000009 chksum : 0xc6d8 Net mask : 255.255.255.255 TOS 0 Metric: 1 E type : 2 Forwarding Address : 10.1.158.8 Tag : 1 Priority : Medium # AR5通告 Type : External Ls id : 192.168.1.1 Adv rtr : 5.5.5.5 Ls age : 6 Len : 36 Options : E seq# : 80000001 chksum : 0x9a05 Net mask : 255.255.255.255 TOS 0 Metric: 1 E type : 2 Forwarding Address : 10.1.158.8 Tag : 1 Priority : Medium在Area 1区域中的R4,R5设备通过T1/T2 计算出R5的FA叶子节点,计算出 ASE 路由,T1/T2会覆盖R2区域传递来的T3路由
在Area 2区域中的R1,R2,R3设备通过T1/T2计算出R1的FA叶子节点 ASE 路由,T1/T2会覆盖R1区域传递来的T3路由
在Area 0区域中的R9设备则是考选择到达FA节点的T3报文哪个更优,哪个进行选择,如果相同进行负载均衡
六、特殊区域问题
6.1 STUB区域
Stub区域(末梢区域)是OSPF中一种优化设计的区域类型,其核心目标是减少区域内的LSA泛洪,降低设备资源消耗。
特性 说明 禁止Type 4/5 LSA Stub区域不接收描述外部路由的Type 5 LSA(AS-external-LSA)和Type 4 LSA(ASBR-Summary-LSA)。 生成默认路由 ABR向Stub区域注入一条默认路由(Type 3 LSA,目标 0.0.0.0/0),用于访问外部网络。变种,Totally Stub区域(完全末梢区域),进一步禁止Type 3 LSA(区域间路由)。
6.2 Stub区域的配置约束
所有路由器必须统一配置为Stub
OSPF邻居建立时,Hello报文中的Options字段的E-bit(External Routing Capability)必须一致
- Stub区域:
E-bit=0(表示不接收外部路由)。- 非Stub区域:
E-bit=1。
骨干区域(Area 0)不能配置为Stub
骨干区域负责传递所有区域间路由
虚链路(Virtual Link)穿越的Transit Area不能为Stub
虚链路依赖Transit Area传递完整的路由信息
ASBR在Stub区域中无效
配置了也不起作用,T1也不会显示Flag置位
多ABR场景下的次优路径问题
发送到STUB区域或NSSA区域的Type3缺省路由的开销为1
6.3 NSSA区域
由于stub区域不支持引入外部路由,提供NSSA区域这种解决方案,通过末端区域的ABR下发的3、7类缺省LSA来计算。ABR还需将NSSA区域的7类LSA转换为5类像其他区域泛洪
特性 说明 禁止Type 4/5 LSA NSSA区域不接收描述外部路由的Type 5 LSA(AS-external-LSA)和Type 4 LSA(ASBR-Summary-LSA)。 允许Type 7 LSA 区域内可存在ASBR,生成Type 7 LSA描述外部路由(如静态路由、其他协议路由)。 生成默认路由 ABR向NSSA区域注入一条默认路由(Type 7 LSA,目标 0.0.0.0/0),用于访问外部网络。变种,Totally NSSA区域,进一步禁止Type 3 LSA(区域间路由),产生Type 3 LSA,目标
0.0.0.0/0,优选T3
6.4 T7-LSA转T5
可以有ASBR,产生T7-LSA,ABR(ASBR)会把Type 7 转成Type 5向其他区域泛洪(7转5)
6.4.1 T7-LSA转T5必要条件
必须携带FA地址
Option的P字段 = 1 Propagate Set 1 允许链路传播7转5,防环
6.4.2 T7-LSA转T5设备
选举默认Router-Id 大,也可
# nssa translator-always 指定在正常情况下,只有一台设备作7转5,避免过多的泛洪T5报文
6.4.3 P字段防环机制(防止回灌)
[!NOTE]
P字段的产生依据
ASBR生成的Type 7 LSA默认P-bit=1(允许转换)
ABR生成的Type 7引入的Type 7 LSA P-bit=0(避免环路)
当R2设备上引入了外部路由的话,会给骨干区域传递T5报文和NSSA区域传一份T7报文(P字段为0),假设R3是7转5设备 当R2在Area 2引入外部路由时,会给骨干区域传递T5报文和NSSA区域各传一份T7报文,当R3再给Area 0区域进行传递会发生路由回灌
6.5 NSSA区域的配置约束
所有路由器必须统一配置为NSSA
OSPF邻居建立时,Hello报文中的Options字段的N-bit必须一致
- Stub区域:
N-bit=1(表示是NSSA区域)- 非Stub区域:
N-bit=0。(非NSSA区域)
骨干区域(Area 0)不能配置为NSSA
骨干区域负责传递所有区域间路由
虚链路(Virtual Link)穿越的Transit Area不能为Stub
虚链路依赖Transit Area传递完整的路由信息
多ABR场景下的次优路径问题
# LSA Type : NSSA Ls id : 0.0.0.0 Adv rtr : 3.3.3.3 Ls age : 556 Len : 36 Options : None seq# : 80000001 chksum : 0xa61e Net mask : 0.0.0.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Priority : Low
6.6 Virtual link
由于网络的拓扑结构复杂,有时无法满足每个区域必须和骨干区域直接相连的要求,为解决被分割的骨干区域,,OSPF提出了虚链路的概念。
图中拓扑R1无法学到R5的10.5.5.5 T3报文,因为R2,R3不是ABR角色
6.6.1 Virtual link配置
# AR4 Ospf Area 1 vlink-peer 2.2.2.2 --对端router id # AR2 Ospf Area 1 Vlink-peer 4.4.4.4
6.6.2 Transit Area
借助建立Virtual link的区域叫 Transit Area区域
Area: 0.0.0.1 Link State Database Type : Router Ls id : 2.2.2.2 Adv rtr : 2.2.2.2 Ls age : 170 Len : 36 Options : ABR VIRTUAL E 虚链路端节点,视本区域为穿梭区域 seq# : 80000011 chksum : 0x61da Link count: 1 * Link ID: 10.1.234.4 Data : 10.1.234.2 Link Type: TransNet Metric : 1
6.6.3 Virtual link建立
虚链路会选择非骨干区域的最优路径地址来计算出来的单播地址(可能两台设备的路径方向不同IP也不同)进行hello报文建立邻居
Virtual link的下一跳是通过Transit Area自己计算的最优路径的下一跳进行传递的
R4 -> R2方向
R2 -> R4方向
一旦拓扑发生变化,自动重新计算路径,配置不需要发生任何修改
6.6.4 Virtual link防环机制
从虚链路端点学到的T3报文,不会向Transit Area回灌
R4不会回灌虚链路的T3报文向穿梭区域,可以理解为Transit Area变为骨干区域
七、SPF计算
7.1 LSA的数量
P2P/P2MP 中 全互联 需要维护 n(n - 1 )+n 的LSA
MA 中 全互联 需要维护 n + 1 的LSA
7.2 P2P的SPF计算
# Router ID 4.4.4.4 Link State Database Type : Router Ls id : 4.4.4.4 Adv rtr : 4.4.4.4 Ls age : 12 Len : 60 Options : ABR E seq# : 80000026 chksum : 0x4bfd Link count: 3 * Link ID: 10.1.4.4 Data : 255.255.255.255 Link Type: StubNet Metric : 0 Priority : Medium * Link ID: 10.1.45.5 Data : 10.1.45.4 Link Type: P-2-P Metric : 48 * Link ID: 10.1.45.0 Data : 255.255.255.128 Link Type: StubNet Metric : 48 Priority : Low# Router ID 5.5.5.5 Link State Database Type : Router Ls id : 5.5.5.5 Adv rtr : 5.5.5.5 Ls age : 1448 Len : 60 Options : E seq# : 8000002e chksum : 0xa40e Link count: 3 * Link ID: 4.4.4.4 Data : 10.1.45.5 Link Type: P-2-P Metric : 48 * Link ID: 10.1.45.0 Data : 255.255.255.0 Link Type: StubNet Metric : 48 Priority : Low * Link ID: 10.1.5.5 Data : 255.255.255.255 Link Type: StubNet Metric : 0 Priority : Medium
7.3 MA的SPF计算
OSPF Process 1 with Router ID 2.2.2.2 Area: 0.0.0.0 Link State Database Type : Network Ls id : 10.1.234.4 Adv rtr : 4.4.4.4 Ls age : 740 Len : 36 Options : E seq# : 8000001b chksum : 0xc14c Net mask : 255.255.255.0 Priority : Low Attached Router 4.4.4.4 Attached Router 2.2.2.2 Attached Router 3.3.3.3 Area: 0.0.0.1OSPF Process 1 with Router ID 2.2.2.2 Area: 0.0.0.0 Link State Database Type : Router Ls id : 4.4.4.4 Adv rtr : 4.4.4.4 Ls age : 768 Len : 36 Options : ABR E seq# : 8000005d chksum : 0x40a1 Link count: 1 * Link ID: 10.1.234.4 Data : 10.1.234.4 Link Type: TransNet Metric : 1 Type : Router Ls id : 2.2.2.2 Adv rtr : 2.2.2.2 Ls age : 765 Len : 48 Options : ABR E seq# : 8000001a chksum : 0xdb3c Link count: 2 * Link ID: 10.1.234.4 Data : 10.1.234.2 Link Type: TransNet Metric : 1 * Link ID: 10.1.2.2 Data : 255.255.255.255 Link Type: StubNet Metric : 0 Priority : Medium Type : Router Ls id : 3.3.3.3 Adv rtr : 3.3.3.3 Ls age : 766 Len : 48 Options : ABR E seq# : 8000005f chksum : 0x3e89 Link count: 2 * Link ID: 10.1.234.4 Data : 10.1.234.3 Link Type: TransNet Metric : 1 * Link ID: 10.1.3.3 Data : 255.255.255.255 Link Type: StubNet Metric : 0 Priority : Medium
八、路由计算
8.1 T1/T2 RC计算
T1/T2 RC计算的是路径+叶子 业务 (叶子)-> 业务所在设备-> 设备接口IP(路径作为Nexthop) -> 计算路径(P2P/到达PN)
8.1.1 MA网络的路由计算
伪节点只是一个逻辑拓扑的虚拟化设备(伪节点到达任意节点不计算Cost)
业务10.1.1.1/32 ( 叶子 0 cost ) -> 设备 1.1.1.1 -> 设备接口IP10.1.123.1 -> 到达伪节点 路径 cost 1
计算出路由 路由
10.1.1.1/32 Nexthop 10.1.123.1 cost 1
8.1.2 P2P网络的路由计算
8.1.2.1 P2P正常情况
业务2.2.2.2 /32 ( 叶子 0 cost )-> 设备 2.2.2.2 -> 设备接口IP10.1.12.2 -> 到达PPP链路 路径 cost 48
路由
2.2.2.2 /32 Nexthop 10.1.123.1 cost 48但是没有意义,因为PPP链路有对面32位的直连路由,不会出现在转发表
8.1.2.2 P2P跨网段情况
业务 2.2.2.2/24 (叶子 48 cost) -> 设备 2.2.2.2 -> 设备接口IP 2.2.2.2 -> P2P链路开销48
路由
2.2.2.2/24 Nexthop 2.2.2.2 cost 96但是没有意义,因为PPP链路有对面32位的直连路由,不会出现在转发表
业务 10.1.1.1/24 ( 叶子 0cost ) -> 设备 2.2.2.2 -> 设备接口IP 2.2.2.2 -> P2P链路开销48
路由
10.1.1.1/32Nexthop 2.2.2.2 cost 48
8.1.3 P2MP网络的路由计算
对端的10.1.3.3 /32 ( 叶子 0cost ) -> 设备 3.3.3.3 -> 设备接口IP 10.1.34.4 -> p2p 1 cost 到达 -> 设备4.4.4.4 ->10.1.24.4 达到4.4.4.4 -> p2p 1 cost 的开销
路由
10.1.3.3/32 Nexthop 10.1.24.4 cost 2
8.2 T3 RC计算
T1 + T3 报文 确定
# T3报文 OSPF Process 1 with Router ID 2.2.2.2 Area: 0.0.0.0 Link State Database Type : Sum-Net Ls id : 10.5.5.5 Adv rtr : 4.4.4.4 Ls age : 290 Len : 28 Options : E seq# : 80000001 chksum : 0xd45e Net mask : 255.255.255.255 Tos 0 metric: 1 Priority : Medium # T1报文 display ospf lsdb router 4.4.4.4 OSPF Process 1 with Router ID 2.2.2.2 Area: 0.0.0.0 Link State Database Type : Router Ls id : 4.4.4.4 Adv rtr : 4.4.4.4 Ls age : 1064 Len : 36 Options : ABR E seq# : 80000012 chksum : 0xd656 Link count: 1 * Link ID: 10.1.234.4 Data : 10.1.234.4 Link Type: TransNet Metric : 1 Area: 0.0.0.2 Link State Database .OIA 10.5.5.5/32 ( 叶子 1 cost ) -> ABR 设备 4.4.4.4 -> 设备接口IP 10.1.234.4 -> transit 1 cost 到达
OIA 10.5.5.5/32 nexthop 10.1.234.4 cost 2
8.3 T5 RC计算
[!TIP]
下文用Type2 计算
8.3.1 ASBR同区域
# AR5 Type : External Ls id : 55.5.5.5 Adv rtr : 5.5.5.5 Ls age : 223 Len : 36 Options : E seq# : 80000001 chksum : 0x4f1e Net mask : 255.255.255.255 TOS 0 Metric: 10 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Priority : Medium Type : Router Ls id : 5.5.5.5 Adv rtr : 5.5.5.5 Ls age : 794 Len : 48 Options : ASBR E seq# : 8000000b chksum : 0xcfab Link count: 2 * Link ID: 10.1.45.5 Data : 10.1.45.5 Link Type: TransNet Metric : 1 * Link ID: 10.5.5.5 Data : 255.255.255.255 Link Type: StubNet Metric : 0 Priority : MediumASE 55.5.5.5/32 (叶子 cost x ) ---> ASBR 设备 5.5.5.5 ---> 设备接口IP 10.1.234.4 ---> t2计算 cost 1 到达
AR4路由表
ASE 55.5.5.5/32 nexthop 10.1.45.5 cost x
8.3.2 ASBR不同区域
# AR5 Type : External Ls id : 55.5.5.5 Adv rtr : 5.5.5.5 Ls age : 223 Len : 36 Options : E seq# : 80000001 chksum : 0x4f1e Net mask : 255.255.255.255 TOS 0 Metric: 10 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Priority : Medium Type : Router Ls id : 3.3.3.3 Adv rtr : 3.3.3.3 Ls age : 123 Len : 48 Options : ABR E seq# : 80000007 chksum : 0x7984 Link count: 2 * Link ID: 10.1.123.3 Data : 10.1.123.3 Link Type: TransNet Metric : 1 * Link ID: 10.3.3.3 Data : 255.255.255.255 Link Type: StubNet Metric : 0 Priority : Medium # 缺个ASBR AR3通告的T5 + T4 + T1/T2报文 确定
ASE 55.5.5.5/32 (叶子 cost x ) ---> ASBR 设备 5.5.5.5 ---> ABR设备 3.3.3.3 ---> 设备接口IP 10.1.123.3 ---> TransNet cost 1 到达
AR1路由表ASE
55.5.5.5/32 nexthop 10.1.123.3 cost x
九、OSPF的其他路由
9.1 静态路由
# default-route-advertise 匹配本地的默认路由下发5类lsa的默认路由 # default-route-advertise always 无论是否有默认路由都强下发默认路由 ------------------上述都可以通过route-policy修改属性 # default-route-advertise cost 5类默认cost = 1,修改开销 # default-route-advertise type 1/2 修改开销类型
9.2 路由汇总
因为域内是SPF链路状态计算,所以只能对3,5类汇总,只要有一条明细在,汇总都会存在
9.2.1 三类汇总
- 三类汇总的本质是将本区域的T1/T2进行汇总
- 进行汇总的设备应该写黑洞路由,防止某条条目丢失后,自身有默认路由成环
- 汇总的Cost,在华为设备中是最大的Cost
abr-summary # ABR设备 明细区域下
9.2.2 五类汇总
asbr-summary ip-address mask #ASBR设备 明细区域下
9.3 路由过滤
9.3.1 汇总过滤
在汇总时候可以加入 no-advertise 进行过滤,实现汇总后不发布进行过滤,实现区域间和外部路由过滤
9.3.2 T3路由过滤(DV过滤)
在OSPF中在视图下使用filter-policy配合各种工具的import过滤,在SPF域内计算范围是不生效的,但是对于T3这种DV路由会有影响,ABR判断公共路由表有没有这个叶子来决定是否产生3类LSA
#filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name [ secondary ] } import #filter-policy import命令是对OSPF计算出来的路由进行过滤,只有通过过滤的路由才被添加到路由表中,没有通过过滤的路由不会被添加进OSPF路由表一般用作在ABR上进行配置
acl 2000 rule 5 deny source 10.5.5.5 0 (1 matches) rule 10 permit (30 matches) ospf filter-policy 2000 import
9.3.3 T5路由过滤
filter-policy export在引入的路由前过滤
# filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ protocol [ process-id ] ] # OSPF通过命令import-route引入外部路由后,为了避免路由环路的产生,通过filter-policy export命令对引入的路由在发布时进行过滤,只将满足条件的外部路由转换为Type5 LSA(AS-external-LSA)并发布出去。不满足的不会产生Type5 LSA。也可以在引入时使用route-policy
9.4 LSA过滤
9.4.1 3类LSA
过滤最好在非骨干上过滤,如果在骨干区域过滤会影响所有非骨干区域
# 因为0和骨干是连接的,所以有以下的注释 ospf 1 router-id 2.2.2.2 area 0.0.0.0 filter acl-name xxx import- 外部区域向区域0进行3类过滤 filter acl-name xxx export- 区域0向外部区域进行3类过滤 area 0.0.0.2 filter acl-name xxx import- 区域0向本区域进行3类过滤 filter acl-name xxx export- 区域2向外部区域进行3类过滤
9.4.2 出接口LSA过滤
配置对OSPF接口出方向的LSA进行过滤
# ospf filter-lsa-out # 来配置对OSPF接口出方向的LSA进行过滤
十、OSPFv3简介
10.1 新增字段
通过不同的instance ID来区分,即单接口可以使用不同的Instance来与多个设备发送报文
不同的Instance全局唯一,替代Router-ID本地唯一
10.2 新增LSA
[!TIP]
通俗解释
将原本的T1的网络信息部分拆分为T8报文
将原本的T2的网络信息部分拆分为T9报文
实现拓扑和网络的解耦合
Link LSA:用于路由器宣告各个链路上对应的链路本地地址及其所配置的IPv6全局地址,仅在链路内洪泛。
Intra Area Prefix LSA:用于向其他路由器宣告本路由器或本网络(广播网及NBMA)的IPv6全局地址信息,在区域内洪泛。
10.3 组播的封装地址
SPFv3运行在IPv6协议上,IPv6是基于链路LLA,且OSPFv3报文头中不再包含AuType和Authentication,而一般依赖IPv6的扩展验证头
10.4 T1/T2-SPF计算
# R1 Router-LSA (Area 0.0.0.1) LS Age: 56 LS Type: Router-LSA Link State ID: 0.0.0.0 Originating Router: 2.2.2.2 LS Seq Number: 0x80000013 Retransmit Count: 0 Checksum: 0xCB21 Length: 40 Flags: 0x01 (-|-|-|-|B) Options: 0x000013 (-|R|-|-|E|V6) Link connected to: another Router (point-to-point) Metric: 1 Interface ID: 0x4 Neighbor Interface ID: 0x4 Neighbor Router ID: 4.4.4.4 # R2 Router-LSA (Area 0.0.0.1) LS Age: 60 LS Type: Router-LSA Link State ID: 0.0.0.0 Originating Router: 4.4.4.4 LS Seq Number: 0x80000010 Retransmit Count: 0 Checksum: 0xED03 Length: 40 Flags: 0x00 (-|-|-|-|-) Options: 0x000013 (-|R|-|-|E|V6) Link connected to: another Router (point-to-point) Metric: 1 Interface ID: 0x4 # 实例号 Neighbor Interface ID: 0x4 Neighbor Router ID: 2.2.2.21类LSA只描述拓扑,通过Instance id 字段8类LSA 得到 ULA地址
# R1 T8 LSA (Area 0.0.0.1) LS Age: 377 LS Type: Link-LSA Link State ID: 0.0.0.4 Originating Router: 2.2.2.2 LS Seq Number: 0x80000001 Retransmit Count: 0 Checksum: 0x6BB7 Length: 56 Priority: 1 Options: 0x000013 (-|R|-|-|E|V6) Link-Local Address: FE80::2E0:FCFF:FE21:599B Number of Prefixes: 1 Prefix: 2001:24::/64 Prefix Options: 0 (-|-|-|-|-) # R2 T8 LSA LS Age: 408 LS Type: Link-LSA Link State ID: 0.0.0.4 Originating Router: 4.4.4.4 LS Seq Number: 0x80000001 Retransmit Count: 0 Checksum: 0xEE2B Length: 56 Priority: 1 Options: 0x000013 (-|R|-|-|E|V6) Link-Local Address: FE80::2E0:FCFF:FEC2:6CE7 Number of Prefixes: 1 Prefix: 2001:24::/64 Prefix Options: 0 (-|-|-|-|-)




























































浙公网安备 33010602011771号