一.简介
- 纵观全站关于OSPF介绍,众说纷纭,作为传统最核心的动态路由协议之一,我欲“究天人之际,通古今之变,成一家之言”,写出全网最详细的OSPF介绍。
- 本文为结合了华为技术和新华三技术的大成,即结合了HCIA,HCIP,HCIE Datacom和H3CNE-RS+,H3CSE-RS+,H3CIE-RS+。本文将分为OSPF基础概念、OSPF路由计算、OSPF特殊区域及其它特性、OSPF高阶特性、OSPF的详细配置 五个大模块进行详细介绍。
二.OSPF基础概念
1.前言
- 路由器根据路由表转发数据包,路由表项可通过手动配置和动态路由协议生成。
- 静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。
- 相比较于静态路由,动态路由协议具有更强的可扩展性,具备更强的应变能力。
- OSPF(Open Shortest Path First,开放式最短路径优先)具有扩展性强,收敛速度快等特点,作为优秀的内部网关协议被广泛使用。
- 该模块主要介绍OSPF的基本概念,OSPF的邻接关系的建立。
2.动态路由协议简介
(1)动态路由协议分类
【1】距离矢量协议
运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器。
对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的网段方向在哪里,开销有多大。
【2】链路状态路由协议-LSA泛洪
链路状态路由协议通告的的是链路状态而不是路由信息。
运行链路状态路由协议的路由器之间首先会建立邻居关系,然后彼此之间开始交互LSA(LinkState Advertisement,链路状态通告)。
【3】链路状态路由协议-LSDB维护
每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过对LSDB中所存储的LSA进行解析,进而了解全网拓扑。
【4】链路状态协议-SPF计算
每台路由器基于LSDB,使用SPF(Shortest Path first,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达所有网段的优选路径。
【5】链路状态路由协议-路由表生成
路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。
【6】小总结
3.OSPF简介
(1)OSPF概述
OSPF是IETF定义的一种基于链路状态的内部网关路由协议。目前针对IPv4协议使用的是OSPFVersion 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。
OSPF有以下优点:
- 基于SPF算法,以“累计链路开销”作为选路参考值
- 采用组播形式收发部分协议报文
- 支持区域划分
- 支持对等价路由进行负载分担
- 支持报文认证
(2)OSPF基础术语
【1】Router ID
Router lD用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。
Router lD选举规则如下:
- 手动配置OSPF路由器的Router ID(建议手动配置)
- 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
- 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID
【2】区域
- OSPF Area用于标识一个OSPF的区域。
- 区域是从逻辑上将设备划分为不同的组,每个组用区域号(AreaID)来标识。
- OSPF的区域ID是一个32bit的非负整数,按点分十进制的形式(与IPv4地址的格式一样)呈现例如Area0.0.0.1。为了简便起见,我们也会采用十进制的形式来表示。
【3】度量值
- OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的Cost =100 Mbits/接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
- OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和。
【4】度量值修改举例
(3)OSPF三大表项
【1】邻居表
OSPF有三张重要的表项,OSPF邻居表、LSDB和OSPF路由表。对于OSPF的邻居表,需要了解:
- OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
- OSPF的邻居关系通过交互Hello报文建立。
- OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。
【2】LSDB
对于OSPF的LSDB,需要了解:
- LSDB会保存自己产生的及从邻居收到的LSA信息,本例中R1的LSDB包含了三条LSA。
- Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
- 使用命令行display ospf lsdb查看LSDB表。
【3】OSPF路由表
对于OSPF的路由表,需要了解:
- OSPF路由表和路由器路由表是两张不同的表。本例中OSPF路由表有三条路由。
- OSPF路由表包含Destination、Cost和NextHop等指导转发的信息。
- 使用命令display ospf routing查看OSPF路由表。
(4)OSPF报文格式
- OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。
- OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。
- 后文会有详细介绍
4.OSPF工作过程
(1)建立邻居关系
【1】OSPF工作工程概览
【2】建立邻居
- OSPF使用Hello报文发现和建立邻居关系。
- 在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。
- OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息。
【3】hello报文
Hello报文的主要作用:
- 邻居发现:自动发现邻居路由器,
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系。
- 邻居保持:通过周期性发送和接收,检测邻居运行状态。
重要字段解释
- Network Mask:发送Hello报文的接口的网络掩码。
- Hello lnterval:发送Hello报文的时间间隔。通常为10s
- Router Dead lnterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。通常为40s。
- Neighbor:邻居,以Router ID标识。
其它字段解释
- Options:
E:是否支持外部路由
MC:是否支持转发组播数据包
N/P:是否为NSSA区域
- Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与0DR或BDR的选举。
- Designated Router: DR的接囗地址。
- Backup Designated Router: BDR的接囗地址。
(2)建立邻接关系
【1】建立邻接阶段一
- R1和R2的Router ID分别为10.0.1.1和10.0.2.2并且二者已建立了邻居关系。当R1的邻居状态变为ExStart后,R1会发送第一个DD报文。此报文中,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示R1宣告自己为Master。DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文。
- 同样当R2的邻居状态变为ExStart后,R2也会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(1-bit=1,M-bit=1,MS-bit=1,含义同上)。由于R2的Router ID较大,所以R2将成为真正的Master。收到此报文后,R1会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。
- 当R1的邻居状态变为Exchange后,R1会发送一个新的DD报文,此报文中包含了LSDB的摘要信息,序列号设置为R2在步骤2中使用的序列号Y,I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示R1宣告自己为Slave。收到此报文后,R2将邻居状态从ExStart变为Exchange。
- 当R2的邻居状态变为Exchange后,R2会发送一个新的DD报文,此报文包含了LSDB的摘要信息。DD序列号设置为Y+1,MS-bit=1,表示R2宣告自己为Master。
- 虽然R1不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,R1需要对Master发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,序列号为Y+1,该报文内容为空。发送完此报文后,R1产生一个Exchange-Done事件,将邻居状态变为Loading。R2收到此报文后,会将邻居状态变为Full(假设R2的LSDB是最新最全的,不需要向R1请求更新)。
【2】DD报文
DD报文包含LSA头部信息。
【3】建立邻接阶段二
(3)DR与BDR的作用
【1】作用
- MA(Multiple Access,多路访问)分为BMA( Broadcast Multi-Access,广播多路访问)和NBMA(Non-Broadcast Multiple Access,非广播多路访问)。以太网链路组成的网络是典型的BMA网络。帧中继链路通过逻辑上的划分组成典型的NBMA网络。
- DRother:既不是DR也不是BDR的路由器就是DRother路由器
【2】DR与BDR的选举规则
DR/BDR的选举是非抢占式的。
DR/BDR的选举是基于接口的。
- 接口的DR优先级越大越优先。
- 接口的DR优先级相等时,RouterID越大越优先。
广播链路或者NBMA 链路上DR和BDR的选举过程如下:
- 接口UP后,发送Hello报文,同时进入到Waiting状态。在Waiting状态下会有一个WaitingTimer,该计时器的长度与DeadTimer是一样的。默认值为40秒,用户不可自行调整。
- 在WaitingTimer触发前,发送的Hello报文是没有DR和BDR字段的。在Waiting阶段如果收到Hello报文中有DR和BDR,那么直接承认网络中的DR和BDR,而不会触发选举。直接离开Waiting状态,开始邻居同步。
- 假设网络中已经存在一个DR和一个BDR,这时新加入网络中的路由器,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的DR和BDR。
- 当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR。
- 只有当不同Router ID,或者配置不同DR优先级的路由器同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR。
【3】不同网络类型中DR与BDR的选举操作
【4】可按需调整设备接口的OSPF网络类型
- OSPF的网络类型是根据接口的数据链路层封装自动设置的。
- 图中的路由器采用以太网接口互联,因此这些接口的网络类型缺省均为Broadcast。
- 每段链路实际上都是点对点链路,因此在链路上选举DR与BDR是没有必要的。
- 为了提高OSPF的工作效率,加快邻接关系的建立过程,可以把这些互联接口的网络类型都修改为P2P。
- 在接口视图使用 ospf network-type p2p 即可修改接口网络类型。
5.模块总结
如果您认真学完以上模块,您将能够:
- 描述OSPF路由计算的整体过程
- 阐明DR与BDR的作用
- 描述OSPF报文类型和作用
- 区分OSPF邻居关系和邻接关系
三.OSPF路由计算
1.前言
- 同一区域内的OSPF路由器拥有完全一致的LSDB,在区域内部,OSPF采用SPF算法完成路由计算。
- 随着网络规模不断扩大,路由器为了完成路由计算所消耗的内存、CPU资源也越来越多通过区域划分可以在一定程度上缓解路由器的压力。
- 在大规模网络中除了OSPF之外,还可能存在其它路由协议,OSPF支持外部路由引入,从而使得OSPF路由器知晓到达域外的路由。
- 该模块主要介绍OSPF路由计算原理,包括区域内部路由、区域间路由及外部路由的计算过程。
2.区域内路由计算
(1)LSA概述
【1】LSA的基本概念
- LSA是OSPF进行路由计算的关键依据。
- OSPF的LSU报文可以携带多种不同类型的LSA。
- 各种类型的LSA拥有相同的报文头部。
重要字段解释:
- LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒。
- Options(可选项):每一个bit都对应了OSPF所支持的某种特性。
- LS Type(链路状态类型):指示本LSA的类型。
- Link state lD(链路状态ID):不同的LSA,对该字段的定义不同。
- Advertising Router(通告路由器):产生该LSA的路由器的Router ID,
- LS Sequence Number(链路状态序列号):当LSA每次有新的实例产生时,序列号就会增加。
- LS Checksum(校验和):用于保证数据的完整性和准确性。
- Length:是一个包含LSA头部在内的LSA的总长度值。
链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA。
链路状态老化时间 、链路状态序列号 、校验和用于判断LSA的新旧。
LS Age:当LSA被始发时,该字段为0,随着LSA在网络中被泛洪,该时间逐渐累加,当到达MaxAge(缺省值为3600s)时,LSA不再用于路由计算。
LS Sequence Number:该字段用于判断LSA的新旧或是否存在重复的实例。席列号范围是0x80000001-0x7FFFFFFF,路由器始发一个LSA,序列号为0x80000001,之后每次更新序列号加1,当LSA达到最大序列号时,重新产生该LSA,并且把序列号设置为0x80000001。
【2】常见LSA类型
在许多场合中,我们习惯使用类型值来称呼对应的LSA,例如1类LSA等同于Router LSA,2类LSA等同于Network LSA,以此类推。
(2)Router-LSA
【1】Router-LSA详解1
- Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息。
- Router LSA只能在所属的区域内泛洪。
- V(Virtual Link):如果产生此LSA的路由器是虚连接的端点,则置为1。
- E(External):如果产生此LSA的路由器是ASBR,则置为1
- B(Border):如果产生此LSA的路由器是ABR,则置为1.
- links: LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息。
Link State lD:1类LSA的Link State lD 为OSPF 的Rouer lD 。
【2】Router-LSA详解2
- Router LSA使用Link来承载路由器直连接口的信息。
- 每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息。
- 路由器可能会采用一个或者多个Link来描述某个接口。
(3)Network-LSA
【1】Network-LSA详解
- Network LSA(2类LSA):由DR产生,描述本网段的链路状态,在所属的区域内传播。
- Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码。
- Link state lD :DR的接囗IP地址。
- Network Mask:MA网络的子网掩码。
- Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的RouterID),如果有多台路由器接入该MA网络,则使用多个字段描述。
(4)SPF计算过程
【1】SPF算法1
Phase 1:构建SPF树。
- 路由器将自己作为最短路径树的树根,根据Router-LSA和Network-LSA中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。路由器以Router ID或者DR标识。
- 广播网络中DR和其所连接路由器的Cost值为0。
- SPF树中只有单向的最短路径,保证了OSPF区域内路由计算不会出现环路。
【2】SPF算法2
Phase 2:计算最优路由。
- 将Router-LSA、Network-LSA中的路由信息以叶子节点形式附加在对应的OSPF路由器上,计算最优路由。
- 已经出现的路由信息不会再添加到SPF树干上。
【3】SPF算法举例
a.构建SPF树阶段1
b.构建SPF树阶段2
c.构建SPF树阶段3
d.构建SPF树阶段4
e.构建SPF树阶段5

f.构建SPF树阶段6
g.构建SPF树阶段7
【4】计算最优路由
- 从根节点开始依次添加各节点LSA中的路由信息。
- 添加顺序为各节点加入SPF树的顺序,已经出现的忽略。
根据Router LSA中的Stub、Network LSA中的路由信息,完成最优路由的计算。
从根节点开始,依次添加LSA中的路由信息(添加顺序按照每个节点加入SPF树的顺序):
- 10.0.1.1(R1)的Router LSA中,共1个Stub连接,网络号/子网掩码10.0.13.0/24,Metric=48;
- 10.0.12.2(DR)的Network LSA中,网络号/子网掩码10.0.12.0/24,Metric=1+0=1;
- 10.0.2.2(R2)的Router LSA中,共1个Stub连接,网络号/子网掩码10.0.24.0/24,Metric=1+0+48=49;
- 10.0.235.2(DR)的Network LSA中,网络号/子网掩码10.0.235.0/24Metric=1+0+1=2;
- 10.0.3.3(R3)的Router LSA中,共1个Stub连接,网络号/子网掩码10.0.13.0/24,已在R1上,忽略
- 10.0.5.5(R5)的Router LSA中,共1个Stub连接,网络号/子网掩码10.0.45.0/24Metric=1+0+0+1+48=50;
- 10.0.4.4(R4)的Router LSA中,共2个Stub连接,网络号/子网掩码10.0.24.0/24,已在R2上,忽略;网络号/子网掩码10.0.45.0/24,已在R5上,忽略。
【5】结果验证
3.区域间路由计算
(1)区域间路由计算过程
【1】大型网络中单OSPF区域存在的问题
- 一系列连续的OSPF路由器构成的网络称为OSPF域(Domain)。
- OSPF要求网络内的路由器同步LSDB,实现对于网络的一致认知。
- 当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗。
- 当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网的路由重计算。
- 单区域的设计,使得OSPF无法部署路由汇总。
【2】区域划分
【3】区域间信息传递
OSPF区域间路由信息传递是通过ABR产生的NetworkSummary LSA(3类LSA)实现的。
以192.168.1.0/24路由信息为例:
- R2依据Area 1内所泛洪的Router LSA及Network LSA计算得出192.168.1.0/24路由(区域内路由),并将该路由通过DNetwork Summary LSA通告到Area 0。R3根据该LSA可计算出到达192.168.1.0/24的区域间路由、
- R3重新生成一份Network summary LSA通告到Area 2中,至此所有OSPF区域都能学习到去往192.168.1.0/24的路由。
【4】Network Summary LSA详解
Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由。
重要字段解释:
- LS Type:取值3,代表Network Summary LSA.
- Link State lD:路由的目的网络地址。
- Advertising Router:生成LSA的Router lD。
- Network Mask:路由的网络掩码。
- metric:到目的地址的路由开销。
【5】Network Summary LSA示例
a.R1和R3的路由计算
通过区域内SPF的计算,R1到达R2的Cost值为1,R3到达R2的Cost值为2。
R1和R3根据收到的Network Summary LSA进行路由计算:
- R1将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R1到达192.168.1.0/24的Cost值为2。
- R3将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R3到达192.168.1.0/24的Cost值为3。
b.R5的路由计算
- R3作为ABR,它通过Area 0 内泛洪的 Network Summary LSA计算出到达192.168.1.0/24的路由,然后重新向Area 2 注入到达该网段的Network SummaryLSA,其中包含自己到达该网段的Cost(值为3)。
- R5在SPF中计算得知到达R3的Cost为1,因此R5到达192.168.1.0/24的Cost为4.
c.结果验证
(2)区域间路由防环机制
【1】域间环路的产生
- OSPF区域间路由的传播过程与距离矢量路由协议的路由传播过程非常相似。
- 对于区域间路由的传递,OSPF也需要一定的防环机制。
【2】区域间路由防环机制1
- OSPF要求所有的非骨干区域必须与Area 0直接相连,区域间路由需经由Area 0中转。
- 区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。
【3】区域间路由防环机制2
ABR不会将描述到达某个区域内网段路由的3类LSA再注入回该区域。
【4】区域间路由防环机制3
ABR从非骨干区域收到的3类LSA不能用于区域间路由的计算。
R1和R2、R3和R4之间的链路中断导致骨干区域不连续。
- R4将10.0.2.2/32路由以3类LSA的形式发送到Area1。
- R5和R6可以根据上述3类LSA计算出10.0.2.2/32路由。
- R3从非骨干区域收到3类LSA,不进行路由计算,也不会将此3类LSA发送到其他区域。
- 此时,R1和R3都无法和10.0.2.2/32通信。
(3)虚连接的作用及配置
- OSPF要求骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域在逻辑上连续。
- 虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。
- 注意:虚连接的创建使OSPF协议可以通过非骨干区域通信,违背了OSPF区域间的防环规则在某些场景下会导致路由环路的产生,因此不建议部署OSPF虚连接。
4.外部路由计算
(1)OSPF外部路由引入背景
网络中存在部分链路未开启OSPF协议如:
- 路由器连接外部网络使用静态路由或者BGP协议;
- 服务器直连的链路未开启OSPF协议。
(2)外部路由引入基本概念
- ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR。如图中的R1。
- ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在OSPF网络内泛洪。
(3)AS-external LSA详解
AS-external LSA(5类LSA):由ASBR产生,描述到达AS外部的路由,该LSA会被通告到所有的区域(除了Stub区域和NSSA区域)。
重要字段解释:
- LS Type:取值5,代表AS-external-LSA。
- Link State lD:外部路由的目的网络地址。
- Advertising Router:生成该LSA的Router lD。
- Network Mask:网络掩码。
- E:该外部路由所使用的度量值类型
- metric:到目的网络的路由开销。
- Forwarding Address(FA):到所通告的目的地址的报文将被转发到这个地址。
Forwarding Address:当FA为0.0.0.0时,则到达该外部网段的流量会被发往引入这条外部路由的ASBR。而如果FA不为0.0.0.0,则流量会被发往这个转发地址。FA这一概念的引入,使得OSPF在某些特殊的场景中得以规避次优路径问题。
External Route Tag(外部路由标记):这是一个只有外部路由才能够携带的标记,常被用于部署路由策略。
【1】AS-external LSA示例
【2】R3的路由计算过程
- 外部路由信息以叶子节点形式挂载在R1上。
- 根据5类LSA的Advertising Router,R3判断到达外部路由,需要先经过R1。
- R3经过区域内SPF计算,已经将R1添加到SPF树干,R3将到达外部路由的下一跳路由器设置为R1。
- R2的计算方式和R3类似。
(4)ASBR-Summary LSA
ASBR-Summary LSA(4类LSA):由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
重要字段解释:
- LS Type:取值4,代表ASBR-Summary LSA。
- Link State lD : ASBR的Router lD。
- Advertising Router:生成LSA的Router ID。
- Network Mask:仅保留,无意义。
- metric:到目的地址的路由开销。
【1】ASBR-Summary LSA实例
【2】R5的路由计算过程
- 外部路由信息以叶子节点形式挂载在R1上。
- 根据5类LSA的Advertising Router,R5判断5类LSA是由R1产生的,但是在R5的SPF树干中并不存在R1。
- 根据R3产生的4类LSA,R5将到达外部网络的下一跳路由设置为R3。
- R4的路由计算方式和R5类似。
从物理组网上,R3和R5到达外部路由的Cost值不同,但是并未在路由表中真实体现。下面给出解释
【3】整体效果
(5)区分OSPF外部路由的2种度量值类型
Metric-Type-1
- 当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类路由的可信程度较高,将其配置成Metric-Type-1。
- Metric-Type-1外部路由的开销为AS内部开销(路由器到ASBR的开销)与AS外部开销之和。
Metric-Type-2
- 当ASBR到AS之外的开销远远大于在AS之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成0Metric-Type-2。
- Metric-Type-2外部路由的开销等于AS外部开销。
举个栗子:
5.模块总结
如果您认真学完本模块后,您将能够:
- 解释LSA关键字段的作用;
- 描述常见的LSA类型及其功能:
- 阐明SPF算法;
- 描述OSPF区域内路由、区域间路由计算原理;
- 描述OSPF区域间路由的防环机制;
- 描述OSPF外部路由计算原理。
四.OSPF特殊区域及其他特性
1.前言
- 在一个大型网络中,OSPF路由器通常需要同时维护由域内路由、域间路由、外部路由构成的数据库。当网络规模不断扩大时,LSDB规模也不断增长。如果某区域不需要为其他区域提供流量中转服务,那么该区域内的路由器就没有必要维护本区域外的链路状态信息。
- OSPF通过划分区域可以减小区域内路由器LSDB的规模,对于那些位于自治系统(AS)边界的非骨干区域的低端路由器来说仍然无法承受,通过OSPF的特殊区域特性可以进一步减少LSA数量和路由表规模。
- 该模块主要介绍OSPF特殊区域,以及OSPF协议相关特性。
2.Stub区域和Totally Stub区域
(1)网络规模变大引发的问题
OSPF路由器计算区域内、区域间、外部路由都需要依靠网络中的LSA,当网络规模变大时,设备的LSDB规模也变大,设备的路由计算变得更加吃力,造成设备性能浪费。
(2)传输区域和末端区域
OSPF的区域可分为两种类型:
- 传输区域(Transit Area):除了承载本区域发起的流量和访问本区域的流量外,还承载了源IP和目的IP都不属于本区域的流量,即“穿越型流量”,如本例中的Area0。
- 末端区域(Stub Area):只承载本区域发起的流量和访问本区域的流量,如本例中的Area 1和Area 2。
(3)Stub区域
- Stub区域的ABR不向Stub区域内传播它接收到的AS外部路由,Stub区域中路由器的LSDB、路由表规模都会大大减小。
- 为保证Stub区域能够到达AS外部,Stub区域的ABR将生成一条缺省路由(使用3类LSA描述)。
(4)Totally Stub区域
- Totally Stub区域既不允许AS外部路由在本区域内传播,也不允许区域间路由在本区域内传播。
- Totally Stub区域内的路由器通过本区域ABR下发的缺省路由(使用3类LSA描述)到达其他区域,以及AS外部。
- 配置Totally Stub区域时需要注意:
与Stub区域配置的区别在于,在ABR上需要追加no-summary关键字。 - Totally Stub区域访问其他区域及AS外部是通过默认路由实现的。
- AS外部、其他OSPF区域的拓扑及路由变化不会导致Totally Stub区域内的路由器进行路由重计算,减少了设备性能浪费。
3.NSSA区域和Totally NSSA区域
(1)Stub区域和Totally Stub区域存在的问题
- OSPF规定Stub区域是不能引入外部路由的,这样可以避免大量外部路由引入造成设备资源消耗。
- 对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub和Totally Stub区域就不能满足需求了。
(2)NSSA区域和Totally NSSA区域
- NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域引入的外部路由。
- Totally NSSA与NSSA区域的配置区别在于前者在ABR上需要追加no-summary关键字。
- NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域的外部路由
- 7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述NSSA区域引入的外部路由信息。NSSA区域的ASBR将外部路由引入该区域后,使用7类LSA描述这些路由。
- 7类LSA的扩散范围仅限于始发NSSA区域,7类LSA不会被注入到普通区域
- NSSA区域的ABR会将7类LSA转化为5类LSA,并将该LSA注入到骨干区域,从而在整个OSPF域内泛洪。
- NSSA区域的ABR会阻挡其他区域引入的外部路由引入本区域,即NSSA区域内不会存在4类及5类LSA,为了让NSSA区域内的路由器能够通过骨干区域到达AS外部,NSSA区域的ABR会自动向该区域注入一条缺省路由,该路由采用7类LSA描述。
(3)NSSA区域和Totally NSSA区域的LSDB
- 场景1(将Area 2配置为NSSA区域):当R5将外部路由192.168.3.0/24引入NSSA区域时R5作为ASBR生成7类LSA在Area 2内泛洪;R3生成使用7类LSA描述的缺省路由注入Area2Area 2内的路由器依然会收到R3注入的3类LSA,并计算出到达其他区域的区域间路由。
- 场景2(将Area2配置为Totally NSSA区域):Totally NSSA区域和NSSA区域类似,只是Totally NSSA区域的ABR会阻挡3类LSA进入该区域,因此在场景2中,R3不会将区域间路由注入Area 2,故而在R5的LSDB中,仅会看到一条描述缺省路由的3类LSA。
(4)OSPF LSA回顾
(5)路由器对LSA的处理原则
OSPF通过交互LSA实现链路状态数据库同步,路由器收到LSA后,按照以下原则处理:
- 如果收到的LSA本地没有,则更新LSDB并泛洪该LSA。
- 如果本地LSDB已存在该LSA,但是收到的更新,则更新LSDB并泛洪该LSA。
- 如果收到的LSA和LSDB中相同,则忽略,并终止泛洪。
- 如果收到的LSA损坏,例如Checksum错误,则不接收该LSA。
4.区域间路由汇总和外部路由汇总
(1)在ABR执行路由汇总
- 路由汇总又被称为路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。
(2)在ABSR执行路由汇总
- 在ASBR配置路由汇总后,ASBR将对自己所引入的外部路由进行汇总。
- NSSA区域的ASBR也可以对引入NSSA区域的外部路由进行汇总。
- 在NSSA区域中,ABR执行7类LSA转化成5类LSA动作,此时它也是ASBR。若配置路由汇总,则对由7类LSA转化成的5类LSA进行汇总。
- R1、R3、R5分别对引入的外部路由执行路由汇总。
5.OSPF协议特性
(1)Silent-Interface
通过Silent-Interface的配置,增强OSPF的组网适应能力,减少系统资源的消耗。
Silent-Interface有以下特性:
- Silent-Interface不会接收和发送OSPF报文。
- Silent-Interface的直连路由仍可以发布出去。
- R1的GE0/0/1接口在OSPFnetwork命令的网段范围内。
- 到达该接口的路由将被通告到OSPF,使得其他设备能够访问Server。
- 由于该接口上未连接任何其他OSPF路由器,因此管理员将该接口配置为Silent-Interface,该接口将不再收发Hello报文,从而避免了对Server的性能降低。
(2)OSPF报文认证
OSPF支持报文认证功能,只有通过认证的OSPF报文才能被接收。
路由器支持两种OSPF报文认证方式,当两种认证方式都存在时,优先使用接口认证方式:
- 区域认证方式:一个OSPF区域中所有的路由器在该区域下的认证模式和口令必须一致。
- 接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致。
6.模块总结
如果您认真学完本模块后,您将能够:
- 描述OSPF特殊区域类型及相关特征
- 阐明OSPF路由汇总的应用场景及功能优势
- 实现OSPF报文认证的配置
五.OSPF高阶特性
1.前言
- OSPF都是基于链路状态的内部网关路由协议,运行这两种协议的路由器通过同步LSDB,采用SPF算法计算最优路由。
- 当网络拓扑发生变化时,OSPF支持多种快速收敛和保护机制,能够降低网络故障导致的流量丢失。
- 为了实现对路由表规模的控制,OSPF支持路由选路及路由信息的控制,能够减少特定路由器路由表的大小。
- 本模块将介绍OSPF的高阶特性,包括:快速收敛机制、路由控制、其他特性等。
2.OSPF快速收敛
(1)概述
- OSPF快速收敛是为了提高路由的收敛速度而做的扩展特性,包括: PRC(Partial Route Calculation,部分路由计算)和智能定时器。
- 同时,OSPF支持故障恢复快速收敛,例如通过OSPF IP FRR (Fast ReRoute,快速重路由)实现备份链路的快速切换,也可以与BFD联动实现对故障的快速感知。
(2)PRC
- PRC的工作原理:当网络上路由发生变化的时候,只对发生变化的路由进行重新计算。
- PRC不计算节点路径,而是根据SPF算法算出来的最短路径树来更新路由。
场景介绍:
- 某网络运行OSPF,网络收敛后,左图是以R1为根的最短路径树。此时R1访问节点R5时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
- R5将环回口Loopback0开启OSPF,即OSPF网络内有新增网段。
PRC计算:
- R5全网泛洪新增LSA。
- R1收到该LSA后会创建新的路由,继承原有访问节点R5的路径及下一跳,即最短路径树不变,只在节点R5上新增叶子。
- 因此R1访问R5的Loopback0时,通过[R1下行链路的出接口,R3上行链路接口的IP地址]到达该目的地。
价值:
- OSPF网络新增网段时,只关注发生变化的路由,加快了路由的计算。
(3)智能定时器
智能定时器是在进行SPF计算和产生LSA的时候用到的一种定时器,
智能定时器既可以对少量的外界突发事件进行快速响应,又可以避免过度地占用CPU。
【1】控制LSA的生成与接收
OSPF通过如下两个规定来避免网络连接或者路由频繁动荡引起的过多占用设备资源的情况。
- 同一条LSA在1秒内不能再次生成,即LSA的更新时间间隔5秒。
- LSA被接收的时间间隔为1秒。
·在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以通过智能定时器指定LSA的更新时间间隔为0来取消LSA的更新时间间隔,使得拓扑或者路由的变化可以立即通过LSA发布到网络中,或者立即被感知到,从而加快网络中路由的收敛速度。
【2】控制路由计算
- 当网络发生变化时,OSPF的LSDB会发生改变,需要重新计算最短路径。如果网络频繁变化,由于不断地计算最短路径,会占用大量系统资源,影响设备的效率。
- 通过配置智能定时器,设置合理的SPF计算的间隔时间,可以避免占用过多的路由器内存和带宽资源。
【3】智能定时器的基础命令
(4)OSPF IP FRR
【1】概述
- OSPF IP FRR是动态IP FRR,利用LFA(Loop-Free Alternates)算法预先计算出备份路径,保存在转发表中,以备在故障时将流量快速切换到备份链路上,保证流量不中断,从而达到流量保护的目的,该功能可将故障恢复时间降低到50 ms以内。
- LFA计算备份链路的基本思路是:
- 以可提供备份链路的邻居为根节点,利用SPF算法计算出到目的节点的最短距离。然后,按照不等式计算出开销最小且无环的备份链路
【2】OSPF IP FRR组网应用
【3】OSPF IP FRR的基础命令
【4】OSPF IP FRR配置举例
(5)OSPF与BFD联动
【1】概述
- 网络上的链路故障或拓扑变化都会导致设备重新进行路由计算,所以缩短路由协议的收敛时间对于提高网络的性能是非常重要的。
- OSPF与BFD联动就是将BFD和OSPF关联起来,一旦与邻居之间的链路出现故障,BFD对链路故障的快速感应能够加快OSPF对于网络拓扑变化的响应。
【2】OSPF与BFD联动的基础配置命令
3.OSPF路由控制
(1)等价路由
【1】概述
- 当路由表中存在到达同一目的地址,且同一路由协议发现的多条路由时,若这几条路由的开销值也相同,那么这些路由就是等价路由,可以实现负载分担。
- 设备将按照负载分担的方式从多条等价路由发送报文到同一目的地址。
【2】等价路由配置举例
(2)缺省路由
【1】概述
OSPF实际组网应用中,区域边界和自治系统边界通常都是由多个路由器组成的多出口冗余备份或者负载分担。此时,为了减少路由表的容量,可以配置缺省路由,保证网络的高可用性。
OSPF缺省路由通常应用于下面两种情况:
- 由区域边界路由器(ABR)发布Type3 LSA,用来指导区域内路由器进行区域之间报文的转发。
- 由自治系统边界路由器(ASBR)发布Type5 LSA或Type7 LSA,用来指导OSPF路由域内路由器进行域外报文的转发。
【2】将缺省路由通告到OSPF路由区域
(3)过滤LSA
【1】概述
- 当两台路由器之间存在多条链路时,可以在某些链路上通过对发送的LSA进行过滤,减少不必要的重传,节省带宽资源。
- 通过对OSPF接口出方向的LSA进行过滤可以不向邻居发送无用的LSA,从而减少邻居LSDB的大小提高网络收敛速度。
【2】对ABR Type3 LSA进行过滤
- 对区域内出、入方向ABR Type3 LSA(Summary LSA)设置过滤条件,只有通过过滤的LSA才能被发布和接收。
- 通过对区域内的LSA进行过滤可以不向邻居发送无用的LSA,从而减少LSDB的大小,提高网络收敛速度。
(4)配置举例
【1】OSPF路由控制案例分析
网络部署:
- 某企业网络内有财务部和市场部两张网络。
- 该企业网络通过OSPF实现内部网络的互联互通,其中骨干网络部署在Area0,财务部网络客户端部署在Area1,市场部网络客户端部署在Area2。
- 边界设备通过静态路由访问各部门服务器,并在OSPF进程内引入该静态路由。
需求:
- 只要边界-1路由器及其上联链路正常运行,财务部数据流就只会通过边界-1路由器进行数据转发。
- 只要核心-1路由器及其上联链路正常运行,财务部数据流就只会通过核心-1路由器进行数据转发。
- 本案例以分析财务部数据转发路径为例,市场部相关内容不再赘述。
【2】需求分析
1.控制数据转发的网络出口:
- 财务部数据始终向边界-1的方向进行转发;
- 市场部数据始终向边界-2的方向进行转发。
要保证网络会选择固定的ASBR执行数据转发,要求忽略内部网络变化,即不计算内部路由开销。
--使用OSPF的Type2外部路由
2.控制数据流在内部的精确路径:
- 不出现负载分担路径。
要在网络内部按照规划路径将数据发往特定的ASBR。
--调整内部路径开销
【3】控制流量出口
实现方式:
- 在R1(边界-1)和R2(边界-2)的OSPF进程内引入去往财务部服务器的静态路由,实现出口备份(可以通过路由策略实现);
- 设置引入外部路由类型为Type2;
- 在R1上设置外部路由开销为100,在R2上设置外部路由开销为200。
配置结果:
- 网络中存在2条同一网段不同开销的Type2外部路由时:网络设备会优选开销较小的路由。此时,网络中各设备会优选R1作为出口。
【4】控制内部路径
网络需求分析:
- 若网络正常运行,则S3(汇聚-1)会选择路径1。
- 若S1(核心-1)与R1间链路故障,则S3会选择路径2。
- 若S1设备故障,则S3会选择路径3。
实现方式:
- 路径1-Cost<路径2-Cost<路径3-Cost。
【5】调整汇聚到核心开销

若S1与R1间链路故障,由于S1运行正常,则要求S3优选路径1,次选路径2。
实现方式:
- 路径1-Cost<路径2-Cost,即[Cost(S3-51)+Cost(S1-S2)+Cost(S2-R1)]<[Cost(S3-S2)+ Cost(S2-R1)]
- 通过调整汇聚到核心设备间的路径开销可以实现路径1。
【6】调整核心到边界开销
若S1与R1间链路故障,由于S1运行正常,则要求S3优选路径1,次选路径2。
实现方式:
- 路径1-Cost<路径2-Cost,即[Cost(S3-51)+Cost(S1-S2)+Cost(S2-R1)]<[Cost(S3-S2)+ Cost(S2-R1)]
- 通过调整汇聚到核心设备间的路径开销可以实现路径1。
【6】主要配置命令
4.OSPF其它特性
(1)OSPF多进程
- OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。
- 路由器的一个接口只能属于某一个OSPF进程。
(2)OSPF与BGP联动
当有新的设备加入到网络中,或者设备重启时,可能会出现在BGP收敛期间内网络流量丢失的现象。这是IGP收敛速度比BGP快造成的。
- 通过使能OSPF与BGP联动特性,可以解决流量丢失问题。
- 使能了OSPF与BGP联动特性的设备会在设定的联动时间内保持为Stub路由器,也就是说,该设备发布的LSA中的链路度量值为最大值(65535),从而告知其它OSPF设备不要使用这个路由器来转发数据。
(3)OSPF转发地址
【1】概述
FA(ForwardingAddress,转发地址):
- 到达所通告的目的地的数据包应该被转发到的地址,如果转发地址为0.0.0.0,那么数据包将被转发到始发ASBR上。
【2】没有FA引发的问题
R2、R3和R4运行OSPF,均部署在Area0中。其中R2和R3的GE0/0/1接口都激活OSPF并建立邻接关系但是两者与外部路由器R1并不建立OSPF邻接关系。
- R2配置到达10.1.1.1/32的静态路由,下一跳为10.1.123.1.
- R2将静态路由引入OSPF,产生Type5LSA在区域内泛洪。
- R3接收到R2产生的5类LSA,计算出到达10.1.1.1/32的外部路由,并且将路由的下一跳指定为R2(10.1.123.2)。
OSPF域内的路由器如R4到达10.1.1.1/32的路径是:
- R4-R3-R2-R1,该路径是次优路径的。
【3】利用FA解决次优路径问题
- R2向OSPF域内通告到达10.1.1.1/32的外部路由时为对应的Type5 LSA设置FA,值为其自己到达该外部路由的下一跳:10.1.123.1。
- 当R3收到该LSA后,计算到达10.1.1.1/32的路由时发现FA为非0,因此它认为到达目标地址10.1.1.1/32的下一跳为FA所指定的地址,即:10.1.123.1。
【4】FA的取值
当ASBR引入外部路由时,若Type5 LSA中的FA字段为0,表示路由器认为到达目的网段的数据包应该发往该ASBR;若Type5 LSA中的FA字段不为0,表示路由器认为到达目的网段的数据包应该发往这个FA所标识的设备。
当以下条件全部满足时,FA字段才可以被设置为非0:
- ASBR在其连接外部网络的接口(外部路由的出接口)上激活了OSPF;
- 该接口没有被配置为Silent-Interface;9
- 该接口的OSPF网络类型为Broadcast或NBMA;8
- 该接口的IP地址在OSPF配置的network命令指定的网段范围内;
- 到达FA地址的路由必须是OSPF区域内部路由或区域间路由,这样接收到该外部LSA的路由器才能够加载该LSA进入路由表。加载的外部LSA生成的路由条目下一跳与到达FA地址的下一跳相同。
5.模块总结
如果您认真学完本模块后,您将能够:
- 描述OSPF的各种快速收敛的技术
- 实现OSPF等价路由的配置
- 实现OSPF发布缺省路由
- 描述OSPF多进程使用场景
- 描述OSPF转发地址的使用场景
六.OSPF的详细配置
1.观察OSPF报文交互过程
(1)实验目的
配置基本的OSPF,观察其建立邻居关系时的报文交互过程。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
【1】基本的IP地址配置(本步骤省略)
【2】在AR1和AR2上配置OSPF,配置之前先在链路上开启抓包
这里先复习一下OSPF报文类型及作用:
- hello 报文:type 类型为1。作用是自动发现邻居路由器,协商参数并维护邻居关系
- Database(DD 报文):type类型为2。作用是交互链路状态数据库摘要信息,并完成 Master Slave 的选举。
- Link State Request(LSR 报文):type 类型为 3。作用是请求特定的链路状态信息
- Link State Update(LSU 报文):type 类型为 4。作用是发送详细的链路状态信息
- Link State Ack(LSA 报文):type 类型为 5。作用是对 LSU 报文的确认。
打开Wireshark查看OSPF邻居建立过程中的报文交互过程,如图所示
从上图可以看出,在OPSF邻居建立过程中,涉及到了所有OSPF报文的交互,接下来分析整体的OSPF邻居关系的建立过程及报文内容。
a.先打开AR1与AR2发出的OSPF hello报文,报文如下:
在AR1的初始hello包中,可以得到以下信息:
- 发送源地址为 AR1 的接口地址 10.1.12.1,目的IP 为组播 IP 地址 224.0.0.5
- OSPF 协议版本为 V2,信息类型为1 hello packet。
- 源 OSPF 的 router id 为 1.1.1.1。属于区域 0。
- 掩码信息为 255.255.255.0,hello 间隔为 10S。
- Options Ebit置位,表示本区域可以支持外部路由的泛洪。
- DR BDR 尚未选举。
b.打开AR2发给AR1的hello报文:
- 与AR1发出的初始报文类似,目的就是探测邻居路由器。当两台设备互相收到邻居的hello包后,就可以进行协商参数了。协商通过后开始发送DD报文。
c.打开AR1发给AR2的DD报文:
从 AR1 发出的 DD 报文得到以下信息
- DD 报文在 MA 网络中通过单播发送。
- 初始的 DD 报文中三个 bit 全部置1。(I:表示是初始化的 firstDD报文,M:表示 AR1后面还有更多的 DD报文,MS:表示要竞选 Master。)
- DD序列号:729
d.打开AR2发送给AR1的DD报文:
从 AR2 的初始化 DD 报文中可以得到以下信息:
- 依旧使用单播发送。
- DD 报文中的3个bit 位全部置1,表示此 DD为 first DD,同时后面有更多的 DD 报文,同时 AR2 也要竞选 Master角色。
- DD 序列号:729
通过上面两个初始化的 DD 报文,可以看出,此 DD 报文只有一个头部信息,没有具体的数据库摘要信息,作用就是为了选举 Master和 Slave。选举 Master和 Slave 的目的是为了控制序列号的顺序,以此保证后期 DD 报文的可靠性。
Master和 Slave 的选举采用 routerid,routerid 大的获胜。所以在本实验中 AR2 会作为Master,AR1 会作为 Slave。当角色选定后,由slave 先发送真正的 DD 报文,同时使用Master 初始 DD 报文的序列号作为初始序列号。
e.如下图所示:
- 此时AR1为Slave设备,同时DD报文序列号使用了Master的初始序列号,并且携带了LSA的摘要信息。
f.继续查看下一个AR2发出的DD报文,内容如下图所示:
- AR2发送的DD报文,角色为Master,序列号加1为730。并且携带了摘要信息。
当DD报文交互完毕后,设备相互了解到了各自设备所具有的LSA,此时设备会互相发送LSR报文进行LSA请求。
g.AR2向AR1发送1类LSA请求报文如下:
h.当AR1收到AR2的LSA请求后,立即发送LSU报文,LSU报文内容如下:
i.当AR2收到LSU后,AR2回复LSACK进行确认,LSACK报文内容如下所示:
- 同理,AR1也会向着AR2发送LSR请求,AR2回复LSU,以此同步数据库。
2.观察OSPF状态机变迁
(1)实验目的
配置基本的OSPF,观察其建立邻居关系时的状态变化。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
【1】配置基本的IP地址及基本的OSPF配置。(本步骤省略)
【2】在AR1上开启以下命令来查看OSFP的状态变迁:
【3】在AR2上查看OSPF 信息,如下:
- 从邻居那收到了hello包,邻居状态由down进入init
- 再次收到邻居发来的hello包,同时在hello包中包含自己的router-id,此时状态由init进入到2way
- 发送DD报文进入Exstart状态
- 交互DD报文并发送LSR请求LSU,并进入Exchange状态
- 交互完毕进入Loading状态
- 最后邻居状态为Full
3.观察OSPF各类LSA
(1)实验目的
通过基础实验,观察各类LSA的内容,并理解每种LSA的作用。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
【1】根据以下需求独立完成基础配置
- 在 AR5与 AR1 之间配置 RIPv2,关闭自动汇总,将AR5 的所有接口及 AR1 的 G0/0/1口宣告进入 RIP。
- 将AR1的 G0/0/0口、loopback0口、AR2的 G0/0/0 口宣告进入 OSPF 的区域1。
- 将AR2的G0/0/1口、loopback0口、AR3的G0/0/1 口、AR3 的 loopback0口宣告进入区域0。
- 将 AR3 的 G0/0/0 口及 AR4 的所有接口宣告进入 OSPF 区域 2。
【2】完成基础配置后,在AR1上通过以下命令检查路由学习情况。
- 在AR1上查看从RIP学习到的路由
- 在AR1上查看从OSPF学习到的路由
【3】在AR1上执行RIP与OSPF的双向引入
【4】在AR2上查看引入的外部路由是否存在
【5】接下来观察各类LSA。首先在AR1上观察1类LSA(Router LSA)。
- 通过命令可以看到在区域1中只有两个1类LSA,分别由AR1和 AR2产生。作业就是为了描述本区域的拓扑数据库及传递路由信息,只能在所属区域内泛红。在该区域1中,AR1的 loopback0 口在 LSA 中携带了其掩码信息,但是两台路由器互联网段没有包含掩码信息。此时需要在此处查看2类LSA。
【6】对于2类LSA是由 DR产生的,通过以下命令查看实际内容。
- 通过以上信息得知,2类LSA只能在所属区域泛洪,通告者为 DR,传递的内容为 transit网络掩码及拓扑信息。
- 实际1类和 2类结合起来就是用来传递区域内的网络拓扑及域内路由信息。
【7】接下来查看 3类 LSA,在 AR4 上输入以下命令查看 3类 LSA;
- 在 AR4 上看到大量的3类LSA,3类 LSA 全部属于区域 2,表示这些 3类 LSA 传递范围为区域 2。通过 3类LSA的内容可以得知,3类 LSA 就是传递的其他区域的路由信息(域间路由),由本区域的 ABR AR3 进行了通告。
- 在 OSPF 区域中引入了外部路由,就会产生5类LSA,同时也会伴随 4类LSA 的产生在本实验中区域1中的 AR1上引入了外部路由,此时AR1为 ASBR路由器。
【8】所以在 AR1上输入以下命令可以查看自身是否产生了5类LSA。
- 从5类LSA 中可以看到,5类 LSA主要用来传递外部路由,并且它不像1类、2 类、3 类有区域所属,它不属于任何一个区域,所有5类 LSA 的泛洪范围为整个 OSPF 区域,并且在整个 OSPF 区域中进行泛洪时所有信息保持不变,那么此时其他区域就无法知道通告者是谁,无法知道通告者也就无法进行路由计算。(本区域有本区域的完整的数据库,很清楚的知道通告者 1.1.1.1 是谁,但是其他区域,比如区域0、区域2不知道谁是1.1.1.1,此时就需要使用 4类 LSA。)
【9】所以在本实验拓扑中在区域0或者区域2中可以观察看到4类LSA,区域1中是没有四类LSA。
- 此 4类 LSA 表达的意思为可以通过 AR2 设备,到达目标设备 ASBR 1.1.1.1,且开销为此时其他区域有了4类LSA的指引,就知道了5类LSA的方向,就可以计算外部路由。接下来将区域1 配置为 NSSA 区域。(本基本配置省略)
【10】配置完毕后在AR2上查看7类LSA如下:
- 其实 7 类 LSA 和 5 类 LSA 基本保持一致,只不过7类 LSA 只能在 ASBR 所在区域泛洪当需要泛洪到其他区域的时候,由ASBR所在区域的ABR进行7转5的操作。
【11】所以在本实验环境中,在 AR2、AR3、AR4 上看到的会是5类LSA。
- 在AR3上是看不到nssa的LSA的。
4.配置OSPF汇总
(1)实验目的
理解并掌握OSPF汇总的配置
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
在实验三的基础之上完成OSPF汇总实验。
对于OSPF的汇总,有两种汇总:
- 在ABR上对域间路由进行汇总。
- 在ASBR上对外部路由进行汇总。
【1】在AR4上查看AR2的环回口路由,显示如下:
【2】现在需要对AR4收到的这条AR2的路由进行汇总,此时需要再本区域中的ABR设备AR3上进行汇总,命令如下:
- 继续在AR4上查看AR2的Lookback路由:
【3】在AR4上查看AR5的lookback0的路由:
【4】在AR1上进行外部路由的汇总,在AR1上配置以下命令:
【5】在AR4上继续查看AR5的lookaback0的路由:
5.配置OSPF认证并查看认证报文
(1)实验目的
能够熟练的配置OSPF认证,并掌握OSPF认证报文的封装格式。
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
OSPF认证有以下三种类型:
- 接口认证,直接配置在接口,通过本接口发出的 OSPF 报文都会携带认证信息。
- 区域认证,配置在某个区域,在本设备上属于本区域的接口发出的 OSPF 报文都会携带认证信息。
- 虚链路认证,在虚链路上配置的认证。本质属于接口认证,在虚链路上配置了认证,在虚链路上发出的 OSPF 报文都会携带认证信息。
【1】首先在 AR1与 AR2 互联链路上配置接口认证,配置命令如下:
【2】在AR1的G0/0/0开启抓包,OSPF认证信息如下:
所以 OSPF 的认证信息是封装在 OSPF 报头中,而不是说封装在 OSPF的 hello 包、LSR、LSU 等报文。
- Auth Type:认证类型,此处为 MD5。
- Auth Crypt Key ID:配置的ID 号
- Auth Crypt Data Length:数据长度为 16
- Auth Crypt Data:经过 HMAC-MD5 哈希得到的字符串
【3】接下来在Area0中配置区域认证,要求区域0所有设备都必须配置,配置命令如下:
6.OSPF IP FRR实验
(1)实验目的
配置并观察OSPF IP FRR
(2)IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
(3)实验拓扑
(4)实验步骤
- 完成拓扑的底层配置,配置接口的IP地址,每台路由器都运行 OSPF,全部宣告到区域1中。R3 新建环回口 10.1.3.3 也宣告到区域1中,修改链路上的 OSPF 开销值为上图中的数值。
- 这时候我们如果将 R2上的0口 Down 掉,因为是直连的缘故,所以 R1很快能将路线从下一跳 R2 切换到下一跳 R4。我们这中间是重新经历了一次 SPF 计算,在这个拓扑中我们网络规模不大,所以 OSPF 很快就可以完成收敛,没有发生丢包现象,但如果网络规模变大,OSPF链路状态数据库中存在上万条或者数万条链路状态信息,可能就会导致收敛非常缓慢。
- 所以,在生产中我们可能会运用到一项技术就是 OSPF IP FRR,这项技术的原理是在主链路正常的时候就将备用链路提前计算好,方便如果主链路产生故障的时候在 50 毫秒内切换到备用链路上,保证通信的正常进行,但是配置 FRR后,被选成备用链路是有条件的,必须要满足链路保护公式:就是图中 R4到R3的开销 < R4到R1+R1到R3的。这样可以保证没有环路产生。
- 打开R2的0口,然后在R1上查看R3的路由,可以看到是没有备份路由的。
- 这时候我们去使能FRR,然后开启LFA计算
- 然后我们再看去往R3的路由
可以看到是有备份链路的,如果主链路发生故障,切换到备份链路会在50ms内完成。
至此,本文结束,一共两万四千余字,既然您能看到这里,请留下您的点赞再走呗!有任何问题可私信博主。
评论记录:
回复评论: