IP路由基础

IP路由概述

当路由器收到一个IP报文时,路由器根据该IP报文的目的地址匹配路由条目即路由表项。

  • 若有匹配的路由条目,则依据该条目中的出接口或下一跳等信息进行报文转发。
  • 若无匹配的路由条目,则路由器没有相关路由信息用于指导报文转发,此时会丢弃该报文。

image-1

RIB与FIB

具有路由功能的网络设备都维护两种重要的数据表:一是路由表RIB(Routing Infomation Base,路由信息库);二是转发表FIB。

image-2

路由表

每个路由器都有路由表,而路由表又分为本地核心路由表和协议路由表。

image-3

IP路由查找的最长匹配原则

路由表查找FIB表时,将报文的目的IP地址和FIB表中各表项的掩码进行按位“逻辑与”,得到的地址符合FIB表中的网络地址则匹配。

最终选择一个掩码最长的FIB表项转发报文。

动态路由协议

动态路由协议根据作用范围不同,可分为:

内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。常见的IGP协议包括OSPF和IS-IS。

外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP时目前最常用的EGP协议。

image-4

路由迭代

路由必须有直连的下一跳能够指导转发,静态路由或BGP路由的下一跳可能不是直连的邻居,因此需要计算出一个直连的下一跳,这个过程就叫做路由迭代。

image-5

IP路由高级应用

IP路由高级应用场景

场景1

假设A公司和B公司各有自己的网络,这两个网络被独立管理及运维,A公司网络使用的路由协议为OSPF,B公司网络使用的路由协议为IS-IS。

现在两家公司合并成一家公司,导致原有的两张网络不得不进行整合,为了使合并后的新公司业务流量能够正常都在整合后的网络上交互,最重要的就是实现路由互通。

image-6

场景2

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。

或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。

在这样的网络环境下,也需要实现全网路由互通。

image-7

路由引入的基本概念

image-8

路由引入指的是将路由信息从一种路由协议发布到另一种路由协议的操作。

  • 通过路由引入,可以实现路由信息在不同路由协议间传递。
  • 执行路由引入时,还可以部署路由控制,从而实现对业务流量的灵活把控。

路由引入的方向性

路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。

路由引入时需要注意:

  • 路由优先级
  • 路由回灌
  • 路由度量值

image-9

路由引入

路由优先级

场景描述:

  1. R1将直连路由10.1.1.0/24引入到OSPF中。
  2. R3通过OSPF学习到10.1.1.0/24网段路由(OSPF外部路由,路由优先级为150)。
  3. R2在IS-IS进程中引入OSPF路由。
  4. R3也会通过IS-IS学习到10.1.1.0/24网段路由(路由优先级为15)。
  5. 对R3而言,IS-IS路由优于OSPF外部路由,因此优选来自R4的IS-IS路由。

后续R3访问10.1.1.0/24网段的路径为:R3→R4→R2→R1,这是次优路径。

image-10

路由回灌

场景描述:

  1. R1将直连路由10.1.1.0/24引入到OSPF中。
  2. 10.1.1.0/24网段路由全OSPF域内通告。
  3. R2在IS-IS进程中引入OSPF路由。
  4. 10.1.1.0/24网段路由全IS-IS域内通告。
  5. R3在OSPF进程中引入IS-IS通告。
  6. 10.1.1.0/24网段路由再次被通告进OSPF域内,形成路由回灌。

image-11

路由度量值

场景描述:

  1. 在IS-IS中引入OSPF路由。
  2. 在OSPF中引入IS-IS路由。

image-12

路由引入场景

路由引入主要涉及以下几种场景:

  1. 动态路由协议之间的路由引入。
  2. 引入直连路由到动态路由协议。
  3. 引入静态路由到动态路由协议。

image-13

路由引入的基础配置

配置OSPF引入外部路由

在OSPF视图下,引入BGP路由/直连路由/静态路由/IS-IS路由/OSPF其他进程路由

1
import-route {bgp|direct|static|isis[process-id-isis]|ospf[process-id-ospf]}

OSPF基础

路由器根据路由表转发数据包,路由表项可通过手动配置和动态路由协议生成。

静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时,只需要配置静态路由就可以使网络正常工作。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。

相比较于静态路由,动态路由协议具有更强的可扩展性,具备更强的应变能力。

OSPF(Open Shortest Path First,开放式最短路径优先)具有扩展性强,收敛速度快等特点,作为优秀的内部网关协议被广泛使用。

LSA泛洪

与距离矢量路由协议不同,链路状态路由协议通告的时链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)

image-14

LSDB维护

每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB中所存储的LSA进行解析,进而了解全网拓扑。

image-15

SPF计算

每台路由器基于LSDB,使用SPF(Shortest Path First最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这颗“树”路由器就已经知道了到达网络各个角落的优选路径。

image-16

路由表生成

路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。

image-17

OSPF概述

OSPF时IETF定义的一种基于链路状态的內部网关路由协议。目前针对IPv4协议使用的是OSPF Version2;针对IPv6协议使用OSPF Version 3。

OSPF有以下优点:

  • 基于SPF算法,以“累计链路开销”作为选路参考值。
  • 采用组播形式发部分协议报文。
  • 支持区域划分。
  • 支持对等价路由进行负载分担。
  • 支持报文认证。

OSPF应用场景

大型企业网络中通常部署OSPF实现各个楼宇的网络之间的路由可达。

  • 核心和汇聚层部署在OSPF骨干区域。
  • 接入和汇聚层部署在OSPF非骨干区域。

image-18

OSPF基础术语

Router ID

Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。

Router ID选举规则如下:

手动配置OSPF路由器的Router ID(建议!!)。

如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID。

如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID。

image-19

区域

OSPF Area用于标识一个OSPF的区域。

区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。

OSPF的区域ID是一个32Bit的非负整数,按点分十进制的形式呈现,例如Area0.0.0.1。为了简便起见,我们也会采用十进制的形式来表示。

image-20

度量值

OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost=100 Mbit/s / 接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。

OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和。

image-21

OSPF报文格式和类型

OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。

OSPF报文直接采用IP封装,在报文的IP头部种,协议号为89。

Type 报文名称 报文功能
1 Hello 发现和维护邻居关系
2 Database Description 交互链路状态数据库摘要
3 Link State Request 请求特定的链路状态信息
4 Link State Update 发送详细的链路状态信息
5 Link State Ack 确认LSA

image-22

Hello报文

Hello报文的主要作用:

邻居发现:自动发现邻居路由器。

邻居建立:完成Hello报文中的参数协商,建立邻居关系。

邻居保持:通过周期性发送和接收,检测邻居运行状态。

image-25

重要字段解释:

Network Mask:发送Hello报文的接口的网络掩码。

Hello Interval:发送Hello报文的时间间隔,通常为10s。

RouterDeadInterval:失效时间,如果在此时间内未收到邻居发来的Hello报文,则认为邻居失败,通常为40s。

Neighbor:邻居,以Router ID标识。

其它字段解释:

Options:

​ E:是否支持外部路由

​ MC:是否支持转发组播数据包

​ N/P:是否为NSSA区域

Router Priority:DR优先级,默认为1,如果设置为0,则路由器不能参与DR或BDR的选举。

Designated Router:DR的接口地址。

Backup Designated Router:BDR的接口地址。

DD报文

DD报文包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。

image-27

其他字段解释:

Interface MTU:指示在不分片的情况下,此接口最大可发出的IP报文长度。在两个邻居发送DD报文种包含MTU参数,如果收到的DD报文中MTU和本端的MTU不相等,则丢弃该DD报文。缺省情况下,华为设备未开启MTU检查。

Options:字段同Hello报文。

OSPF邻居/邻接关系建立

工作过程概览

image-23

建立邻居关系

OSPF使用Hello报文发现和建立邻居关系。

在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。

OSPF Hello报文种包含了路由器的Router ID、邻居列表等信息。

image-24

建立邻接关系

DD报文部分字段解释:

I:当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0.

M(more):当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,标识后面还有其他的DD报文。

MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master,当值为1时表示发送方为Master。

DD sequence number:DD报文序列号,主从双方利用序列号来保证DD报文传输的可靠性和完整性。

image-26

R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。

R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full。

R1向R2发送LSAck报文作为对LSU报文的确认。

image-28

DR与BDR

DR与BDR用于解决多路访问网络MA中的问题:邻接关系多且管理复杂,重复的LSA泛洪造成资源浪费。

image-29

在MA网络中选举DR就能很好解决问题:

DR(Designated Router,指定路由器)负责在MA网络建立和维护邻接关系并负责LSA的同步。

DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。

为了规避单点故障风险,通过选举BDR(Backup Designated Router,备份指定路由器),在DR失效时快速接管DR的工作。

选举规则

DR/BDR的选举是非抢占式的。

DR/BDR的选举是基于接口的。

  • 接口的DR优先级越大越优先。
  • 接口的DR优先级相等时,Router ID越大越优先。

image-30

不同网络类型中的选举

image-31

按需调整设备接口的OSPF网络类型

OSPF的网络类型是根据接口的数据链路层封装自动设置的。

路由器通常采用以太网接口互联,因此这些接口的网络类型缺省均为Broadcast。

每段链路实际上都是点对点链路,因此在链路上选举DR与BDR是没有必要的。

为了提高OSPF的工作效率,加快邻接关系的建立过程,可以把这些互联接口的网络类型都修改为P2P。

在接口配置视图中即可修改该接口的网络类型。

1
ospf nework-type {p2p|p2mp|broadcast|nbma}

OSPF区域计算

LSA概述

基本概念

LSA是OSPF进行路由计算的关键依据。

OSPF的LSU报文可以携带多种不同类型的LSA。

各种类型的LSA拥有相同的报文头部。

image-47

重要字段解释:

  • LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒。
  • Options(可选项):每一个bit都对应了OSPF所支持的某种特性。
  • LS Type(链路状态类型):指示本地LSA的类型。
  • Link State ID(链路状态ID):不同的LSA,对该字段的定义不同。
  • Adevertising Router(通告路由器):产生该LSA的路由器的Router ID。
  • LS Sequence Number(链路状态序列号):当LSA每次都有新的实例产生时,序列号就会增加。
  • LS Checksum(校验和):用于保证数据的完整性和准确性。
  • Length:是一个包含头部在内的LSA的总长度值。

链路状态类型、链路状态ID、通告路由器三元组唯一地标识来一个LSA。

链路状态老化时间、链路状态序列号、校验和用于判断LSA地新旧。

常见LSA的类型

类型 名称 描述
1 路由器LSA
(Router LSA)
每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪。
2 网络LSA
(Network LSA)
由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器以及DR自己。该LSA只能在接口所属区域内泛洪。
3 网络汇总LSA
(Network Summary LSA)
由ABR产生,描述区域内某个网段的呢路由,该类LSA主要用于区域间路由的传递。
4 ASBR汇总LSA
(ASBR Summary LSA)
由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
5 AS外部LSA
(AS External LSA)
由ASBR产生,用于描述到达OSPF域外的路由。
7 非完全末梢区域LSA
(NSSA LSA)
由ASBR产生,用于描述OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area 0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area 0。

区域内路由计算

Router LSA

详解

Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息。

Router LSA只能在所属的区域内泛洪。

image-52

重要字段解释:

  • V(Virtual Link):如果产生此LSA的路由器是虚连接的端点,则置为1。
  • E(External):如果产生此LSA的路由器是ASBR,则置为1。
  • B(Border):如果产生此LSA的路由器是ABR,则置为1。
  • links:LSA的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息。

Router LSA使用Link来承载路由器直连接口的信息。

每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息。

路由器可能会采用一个或者多个Link来描述某个接口

image-53

Link Type Link ID Link Data
Point-to-Point(P2P):描述一个从本路由器到邻居路由器之间的点到点链路,属于拓扑信息 邻居路由器的Router ID 宣告该Router LSA的路由器接口的IP地址
TransNet:描述一个从本路由器到一个Transit网段(例如MA或者NNMA网段)的连接,属于拓扑信息 DR的接口IP地址 宣告该Router LSA的路由器接口的IP地址
StubNet:描述一个从本地路由器到一个Stub网段(例如Loopback接口)的连接,属于网段信息。 宣告该Router LSA的路由器接口的网络IP地址 该Stub网络的网络掩码

Router LSA描述P2P网络

image-54

R1向R3发送Router-LSA,携带拓扑和网段信息。

image-55

Router LSA描述TransNet(广播型网络)

image-48

R2向R3和R5发送Router-LSA,携带拓扑信息。

image-49

Network LSA

详解

Network LSA(2类LSA):由DR产生,描述本网段的链路状态,在所属的区域内传播。

Network LSA记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码。

image-50

重要字段解释:

  • Link State ID:DR的接口IP地址。
  • Network Mask:MA网络的子网掩码。
  • Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的Router-ID),如果有多台路由器接入该MA网络,则使用多个字段描述。

描述MA网络

image-48

R2向R3和R5发送Network-LSA,携带拓扑和网段信息。

image-51

区域间路由计算

Summary LSA

大型网络单区域存在的问题

一系列连续的OSPF路由器构成的网络称为OSPF域(domain)。

OSPF要求网络内的路由器同步LSDB,实现对于网络的一致认知。

当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器地路由表规模也变大了,这些无疑都将加大路由器的性能损耗。

当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网地路由重计算。

单区域的设计,使得OSPF无法部署路由汇总。

image-56

区域划分

image-57

Router LSA和Network LSA只在区域内泛洪,因此通告区域划分在一定程度上降低网络设备地内存及CPU的消耗。

划分区域后,路由器可以分为两种角色:

区域内部路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。如R1、R4、R5。

区域边界路由器(Area Border Router):该类设备分别连接两个及两个以上的不同区域。如R2、R3。

区域间路由信息传递

OSPF区域间路由信息是通过ABR产生的Network Summary LSA(3类LSA)实现的。

以192.168.1.0/24路由信息为例:

R2依据Area 1内所泛洪的Router LSA及Network LSA计算得出192.168.1.0/24路由(区域内路由),并将该路由通过Network Summary LSA通告到Area 0。R3根据该LSA可计算出到达192.168.1.0/24的区域间路由。

R3重新生成一份Network Summary LSA通告到Area 2中,至此所有OSPF区域都能学习到去往192.168.1.0/24的路由。

image-58

详解

Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由。

image-59

重要字段解释:

  • LS Type:取值3,代表Network Summary LSA。
  • Link State ID:路由的目的网络地址。
  • Advertising Router:生成LSA的Router ID。
  • Network Mask:路由的网络掩码。
  • metric:到目的地址的路由开销。

区域间路由防环机制

域间路由环路的产生

image-60

OSPF区域间路由的传播过程与距离矢量路由协议的路由传播过程非常相似。

对于区域间路由的传递,OSPF也需要一定的防环机制。

防环机制

image-61

OSPF要求所有的非骨干区域必须与Area 0直接相连,区域间路由需经由Area 0中转。

区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。

image-62

ABR不会描述到达某个区域内网段路由的3类LSA再注入回该区域。

image-63

ABR从非骨干区域收到的3类LSA不能用于区域间路由的计算。

  • R1和R2、R3和R4之间的链路中断导致骨干区域不连续。
  • R4将10.0.2.2/32路由以3类LSA的形式发送到Area 1。
  • R5和R6可以根据上述3类LSA计算出10.0.2.2/32路由。
  • R3从非骨干区域收到3类LSA,不进行路由计算,也不会将此3类LSA发送到其他区域。
  • 此时,R1和R3都无法和10.0.2.2/32通信。

虚连接

作用及配置

OSPF要求骨干区域必须是连续的,但是并不要求物理上连接,可以使用虚连接使骨干网再逻辑上连接。

虚连接可以再任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。

image-64

虚连接实验

image-65

基本的接口IP地址配置好后开始配置ospf。

AR1

1
2
3
4
5
6
ospf 1 router-id 1.1.1.1
area 0
network 1.1.1.1 0.0.0.0
network 12.1.1.0 0.0.0.255
quit
quit

AR2

1
2
3
4
5
6
7
8
ospf 1 router-id 2.2.2.2
area 0
network 12.1.1.0 0.0.0.255
quit
area 1
network 23.1.1.0 0.0.0.255
quit
quit

AR3

1
2
3
4
5
6
ospf 1 router-id 3.3.3.3
area 1
network 23.1.1.0 0.0.0.255
network 34.1.1.0 0.0.0.255
quit
quit

AR4

1
2
3
4
5
6
7
8
ospf 1 router-id 4.4.4.4
area 1
network 34.1.1.0 0.0.0.255
quit
area 2
network 45.1.1.0 0.0.0.255
quit
quit

AR5

1
2
3
4
5
6
ospf 1 router-id 5.5.5.5
area 2
network 5.5.5.5 0.0.0.0
network 45.1.1.0 0.0.0.255
quit
quit

在AR4查看lsdb表会发现,区域2没有区域0的条目。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[AR4]dis ospf lsdb 

OSPF Process 1 with Router ID 4.4.4.4
Link State Database

Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 207 36 80000003 1
Router 2.2.2.2 2.2.2.2 253 36 80000005 1
Router 3.3.3.3 3.3.3.3 205 48 80000008 1
Network 34.1.1.3 3.3.3.3 207 32 80000002 0
Network 23.1.1.2 2.2.2.2 254 32 80000002 0
Sum-Net 12.1.1.0 2.2.2.2 299 28 80000001 1
Sum-Net 1.1.1.1 2.2.2.2 276 28 80000001 1

Area: 0.0.0.2
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 148 36 80000005 1
Router 5.5.5.5 5.5.5.5 148 48 80000004 0
Network 45.1.1.4 4.4.4.4 149 32 80000002 0

配置虚连接

在AR2和AR4之间建立一个虚连接,虚连接就是属于区域0的接口。

AR2

1
2
3
ospf
area 1
vlink-peer 4.4.4.4

AR4

1
2
3
ospf
area 1
vlink-peer 2.2.2.2

配置好之后即可看到虚连接建立的内容。

1
2
3
4
5
6
7
8
9
10
11
12
[AR2]dis ospf vlink 

OSPF Process 1 with Router ID 2.2.2.2
Virtual Links

Virtual-link Neighbor-id -> 4.4.4.4, Neighbor-State: Full

Interface: 23.1.1.2 (GigabitEthernet0/0/0)
Cost: 2 State: P-2-P Type: Virtual
Transit Area: 0.0.0.1
Timers: Hello 10 , Dead 40 , Retransmit 5 , Transmit Delay 1
GR State: Normal

此时区域2和区域0的设备就可以实现互通了。

总结

对于非骨干区域和骨干区域之间不连续的问题,可以使用虚连接来解决。并且虚连接还可以用于骨干区域与骨干区域之间不连续问题的解决方案,但仅仅只是临时方案,用作永久解决方案会出现诸多问题。

外部路由计算

OSPF外部路由引入背景

网络中存在部分链接未开启OSPF协议如:

路由器连接外部网络使用静态路由或者BGP协议;

服务器直连的链路未开启OSPF协议。

image-32

外部路由引入的基本概念

ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR。

ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在OSPF网络内泛洪。

image-33

AS-external LSA

AS-external LSA(5类LSA):由ASBR产生,描述到达AS外部的路由,该LSA会被通告到所有的区域(除了Stub区域和NSSA区域)。

可理解为用于区域间的路由通告。

image-34

重要字段解释:

LS Type:取值5,代表AS-external-LSA。

Link State ID:外部路由的目的网络地址。

Advertising Router:生成该LSA的Router ID。

Network Mask:网络掩码。

E:该外部路由所使用的度量值类型。

  • 0:度量值类型为Metric-Type-1
  • 1:度量值类型为Metric-Type-2

metric:到目的网络的路由开销。

Forwarding Address(FA):到所通告的目的地址的报文将被转发到这个地址。

AS-external LSA示例

R1与服务器直连的网段为192.168.1.0/24,在R1上将直连路由引入OSPF,此时R1会向OSPF注入用于描述192.168.1.0/24路由器的AS-external LSA,该LSA将在整个OSPF区域内泛洪。

image-35

image-36

R3路由计算过程

外部路由信息以叶子节点形式挂载到R1上。

根据5类LSA的Advertising Router,R3判断到达外部路由,需要先经过R1。

R3经过区域内SPF计算,已经将R1添加到SPF树干,R3将到达外部路由的下一跳路由器设置为R1。

R2的计算方式和R3类似。

image-37

ASBR-Summary LSA

ASBR-Summary LSA(4类LSA):由ABR产生,描述到ASBR的路由,通告给ASBR所在区域的其他相关区域。

可理解为跨区域通告,不同区域的路由所指向的ASBR不同。

image-38

image-39

重要字段解释:

LS Type:取值4,代表ASBR-Summary LSA。

Link State ID:ASBR的Router ID。

Advertising Router:生成LSA的Router ID。

Network Mask:仅保留,无意义。

metric:到目的地址的路由开销。

ASBR-Summary LSA示例

以R3向Area 2通告的ASBR-Summary LSA为例。

image-40

image-41

R5的路由计算过程

外部路由信息以叶子节点形式挂载到R1上。

根据5类LSA的Advertising Router,R5判断5类LSA是由R1产生的,但是在R5的SPF树干中并不存在R1。

根据R3产生的4类LSA,R5将到达外部网络的下一跳路由设置为R3。

R4的路由计算计算方式和R5类似。

image-42

在物理组网上,R3和R5到达外部路由的Cost值不同,但是并未在路由表中真实体现。

实验

image-43

实验开始之前需先配置好各个接口的IP地址及ospf。

在AR5上新建一个环回口设置IP为50.50.50.50/32。

新建的环回口不在ospf中广播通告,采用引入直连的方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[AR5]ospf 1
[AR5-ospf-1]import-route direct
[AR5-ospf-1]quit
[AR5]dis ospf lsdb

OSPF Process 1 with Router ID 5.5.5.5
Link State Database

Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 157 84 80000007 48
Router 5.5.5.5 5.5.5.5 62 60 80000006 48
Router 3.3.3.3 3.3.3.3 220 48 80000004 48
Sum-Net 6.6.6.6 3.3.3.3 73 28 80000003 49
Sum-Net 23.1.1.0 3.3.3.3 258 28 80000003 48
Sum-Net 3.3.3.3 3.3.3.3 258 28 80000003 0
Sum-Net 2.2.2.2 3.3.3.3 258 28 80000003 48
Sum-Net 10.1.1.0 3.3.3.3 258 28 80000003 49
Sum-Net 1.1.1.1 3.3.3.3 258 28 80000003 49


AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 45.1.1.4 5.5.5.5 62 36 80000001 1
External 45.1.1.0 5.5.5.5 62 36 80000001 1
External 5.5.5.5 5.5.5.5 62 36 80000001 1
External 50.50.50.50 5.5.5.5 62 36 80000001 1

会发现在AR5路由器中的AS External Database会有50.50.50.50的条目,并且指定了Router ID为5.5.5.5。

在同一区域的AR4中查看ospf lsdb表,也会有50.50.50.50的条目。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[AR4]dis ospf lsdb 

OSPF Process 1 with Router ID 4.4.4.4
Link State Database

Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 306 84 80000007 48
Router 5.5.5.5 5.5.5.5 213 60 80000006 48
Router 3.3.3.3 3.3.3.3 369 48 80000004 48
Sum-Net 6.6.6.6 3.3.3.3 222 28 80000003 49
Sum-Net 23.1.1.0 3.3.3.3 407 28 80000003 48
Sum-Net 3.3.3.3 3.3.3.3 407 28 80000003 0
Sum-Net 2.2.2.2 3.3.3.3 407 28 80000003 48
Sum-Net 10.1.1.0 3.3.3.3 407 28 80000003 49
Sum-Net 1.1.1.1 3.3.3.3 407 28 80000003 49


AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 45.1.1.4 5.5.5.5 213 36 80000001 1
External 45.1.1.0 5.5.5.5 213 36 80000001 1
External 5.5.5.5 5.5.5.5 213 36 80000001 1
External 50.50.50.50 5.5.5.5 213 36 80000001 1

在同一区域又是跨区域的AR3查看lsdb,会发现area0区域的四类LSA Sum-Asbr,通告去往5.5.5.5的链路的路由id为AR3的Router ID。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[AR3]dis ospf lsdb 

OSPF Process 1 with Router ID 3.3.3.3
Link State Database

Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 498 60 80000005 48
Router 3.3.3.3 3.3.3.3 486 60 80000006 48
Sum-Net 6.6.6.6 2.2.2.2 293 28 80000003 1
Sum-Net 5.5.5.5 3.3.3.3 370 28 80000003 96
Sum-Net 4.4.4.4 3.3.3.3 415 28 80000003 48
Sum-Net 34.1.1.0 3.3.3.3 476 28 80000003 48
Sum-Net 10.1.1.0 2.2.2.2 601 28 80000003 1
Sum-Net 1.1.1.1 2.2.2.2 601 28 80000003 1
Sum-Net 45.1.1.0 3.3.3.3 426 28 80000003 96
Sum-Asbr 5.5.5.5 3.3.3.3 282 28 80000001 96

Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 377 84 80000007 48
Router 5.5.5.5 5.5.5.5 284 60 80000006 48
Router 3.3.3.3 3.3.3.3 438 48 80000004 48
Sum-Net 6.6.6.6 3.3.3.3 291 28 80000003 49
Sum-Net 23.1.1.0 3.3.3.3 476 28 80000003 48
Sum-Net 3.3.3.3 3.3.3.3 476 28 80000003 0
Sum-Net 2.2.2.2 3.3.3.3 476 28 80000003 48
Sum-Net 10.1.1.0 3.3.3.3 476 28 80000003 49
Sum-Net 1.1.1.1 3.3.3.3 476 28 80000003 49


AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 45.1.1.4 5.5.5.5 284 36 80000001 1
External 45.1.1.0 5.5.5.5 284 36 80000001 1
External 5.5.5.5 5.5.5.5 284 36 80000001 1
External 50.50.50.50 5.5.5.5 284 36 80000001 1

区分OSPF外部路由的2中度量值类型

Metric-Type-1

当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类路由的可信度较高,将其配置成Metric-Type-1。

适用于内部开销与外部开销相差不大的情况。

Metric-Type-1外部路由的开销为AS内部开销(路由器到ASBR的开销)与AS外部开销之和。

Metric-Type-2

当ASBR到AS之外的开销远远大于AS之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成Metric-Type-2。

适用于内部开销与外部开销相差很大,内部开销对于外部开销可忽略的情况。

Metric-Type-2外部路由的开销等于AS外部开销。

比较

Type 描述 开销计算
Metric-Type-1 可信度较高 AS内部开销+AS外部开销
Metric-Type-2 可信度较低,AS外部开销远大于AS内部开销 AS外部开销

image-44

外部路由类型为Metric-Type-1,因此在R3的路由表中,192.168.1.0/24路由的开销为该路由的外部开销加上R3自己到达ASBR R1的内部开销。

image-45

192.168.1.0/24路由在R5的路由表中的开销等于该路由的外部开销加上R5到达ASBR R1的内部开销。

image-46

OSPF特殊区域及其它特性

Stub区域和Totally Stub区域

网络规模变大引发的问题

OSPF路由器计算区域内、区域间、外部路由都需要依靠网络中的个LSA,当规模变大时,设备的LSDB规模也变大,设备的路由计算变得更加吃力,造成设备性浪费。

image-66

image-67

传输区域和末端区域

OSPF的区域可以分为两种类型:

传输区域(Transit Area):除了承载本区域发起的流量和访问本区域的流量外,还承载了源IP和目的IP都不属于本区域的流量,即“穿越型流量”,如下图中的Area 0。

末端区域(Stub Area):只承载本区域发起的流量和访问本区域的流量,如下图的Area 1和Area 2。

image-68

Stub区域

Stub区域一定是为末端区域,传输区域是不能为特殊区域的。

Stub区域的ABR不向Stub区域内传播它接收到的AS外部路由,Stub区域中路由器的LSDB、路由表规模都会大大减小。

为保证Stub区域能够到达AS外部,Stub区域的ABR将生成一条缺省路由(使用3类LSA描述)。

配置Stub区域时需要注意:

  • 骨干区域不能被配置为Stub区域。
  • Stub区域中的所有路由器都必须将该区域配置为Stub。
  • Stub区域内不能引入也不接收AS外部路由。
  • 虚连接不能穿越Stub区域。

image-69

Stub区域的路由表及3类LSA

image-70

R1作为ASBR引入多个外部网段,如果Area 2是普通区域,则R3将向该区域注入5类和4类LSA。

当把Area 2配置为Stub区域后:

  • R3不会将5类LSA和4类LSA注入Area 2。
  • R3向Area 2发送用于描述缺省路由的3类LSA,Area 2内的路由器虽然不知道到达AS外部的具体路由,但是可以通过该默认路由到达AS外部。

image-71

实验

image-72

需要提前将接口IP配置好,ospf区域0和区域1正常配置。

AR2

1
2
3
4
ospf
area 2
network 10.1.1.2 0.0.0.0
stub

AR1

1
2
3
4
5
ospf
area 2
network 10.1.1.1 0.0.0.0
network 1.1.1.1 0.0.0.0
stub

AR6

1
2
3
4
5
ospf
area 2
network 10.1.1.6 0.0.0.0
network 6.6.6.6 0.0.0.0
stub

在AR3新创建一个环回口,IP地址为30.30.30.30/32。采用路由引入的方式将新创建的环回口IP引入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int lo1
ip add 30.30.30.30 32
quit
ospf
import-route direct
[AR3]dis ospf lsdb

OSPF Process 1 with Router ID 3.3.3.3
Link State Database

Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 1574 60 80000006 0
Router 3.3.3.3 3.3.3.3 10 60 80000007 0
Sum-Net 6.6.6.6 2.2.2.2 356 28 80000001 1
Sum-Net 5.5.5.5 3.3.3.3 1551 28 80000001 96
Sum-Net 4.4.4.4 3.3.3.3 1563 28 80000001 48
Sum-Net 34.1.1.0 3.3.3.3 1573 28 80000001 48
Sum-Net 10.1.1.0 2.2.2.2 444 28 80000002 1
Sum-Net 1.1.1.1 2.2.2.2 357 28 80000001 1
Sum-Net 45.1.1.0 3.3.3.3 1561 28 80000001 96

Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 1552 84 80000009 0
Router 5.5.5.5 5.5.5.5 1553 60 80000005 0
Router 3.3.3.3 3.3.3.3 10 48 80000003 48
Sum-Net 6.6.6.6 3.3.3.3 355 28 80000001 49
Sum-Net 23.1.1.0 3.3.3.3 1573 28 80000001 48
Sum-Net 3.3.3.3 3.3.3.3 1573 28 80000001 0
Sum-Net 2.2.2.2 3.3.3.3 1572 28 80000001 48
Sum-Net 10.1.1.0 3.3.3.3 443 28 80000002 49
Sum-Net 1.1.1.1 3.3.3.3 356 28 80000001 49


AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 23.1.1.0 3.3.3.3 10 36 80000001 1
External 23.1.1.2 3.3.3.3 10 36 80000001 1
External 34.1.1.4 3.3.3.3 10 36 80000001 1
External 34.1.1.0 3.3.3.3 10 36 80000001 1
External 3.3.3.3 3.3.3.3 10 36 80000001 1
External 30.30.30.30 3.3.3.3 10 36 80000001 1

可以看到AR3生成了5类LSA AS External,但是在AR6中查看会发现没有5类LSA的条目,有一条缺省路由指向AR2。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[AR6]dis ospf lsdb 

OSPF Process 1 with Router ID 6.6.6.6
Link State Database

Area: 0.0.0.2
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 551 36 80000007 1
Router 6.6.6.6 6.6.6.6 549 48 80000004 1
Router 1.1.1.1 1.1.1.1 551 48 80000006 1
Network 10.1.1.2 2.2.2.2 551 36 80000003 0
Sum-Net 0.0.0.0 2.2.2.2 638 28 80000001 1
Sum-Net 23.1.1.0 2.2.2.2 638 28 80000001 48
Sum-Net 5.5.5.5 2.2.2.2 638 28 80000001 144
Sum-Net 3.3.3.3 2.2.2.2 638 28 80000001 48
Sum-Net 4.4.4.4 2.2.2.2 638 28 80000001 96
Sum-Net 2.2.2.2 2.2.2.2 638 28 80000001 0
Sum-Net 34.1.1.0 2.2.2.2 638 28 80000001 96
Sum-Net 45.1.1.0 2.2.2.2 638 28 80000001 144

AR6访问AR3的lo1接口IP会发现能够正常访问。

image-73

Totally Stub区域

Totally Stub区域既不允许AS外部路由在本区域内传播,也不允许区域间路由在本区域内传播,即没有明细的3类LSA。

Totally Stub区域内的路由器通过本区域ABR下发的缺省路由(使用3类LSA描述)到达其他区域,以及AS外部。

配置Totally Stub区域时需要注意:

与Stub区域配置的区别在于,在ABR上需要追加no-summary关键字。

image-74

Totally Stub区域访问其他区域及AS外部是通过默认路由实现的。

AS外部、其他OSPF区域的拓扑及路由变化不会导致Totally Stub区域内的路由器进行路由重计算,减少了设备性能浪费。

image-75

当Area 2配置为Totally Stub区域后:

  • R3不会将5类LSA和4类LSA注入Area 2.
  • R3不会将3类LSA注入Area 2,但是会向该区域注入一条使用3类LSA描述的缺省路由。
  • R5通过缺省路由到达AS外部网络和其他OSPF区域。

Stub区域、Totally Stub区域解决了末端区域维护过大LSDB带来的问题,但是对于某些特定的场景,它们并不是最佳解决方案。

要配置Totally Stub,只需在边界路由设备ABR上配置,即进入区域后输入stub no-summary。配置好后再查看ospf 的lsdbdis ospf lsdb,可以看到区域2的明细三类LSA都变成了缺省的三类LSA。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[AR2-ospf-1-area-0.0.0.2]stub no-summary
[AR2-ospf-1-area-0.0.0.2]dis ospf lsdb

OSPF Process 1 with Router ID 2.2.2.2
Link State Database

Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 183 60 80000008 0
Router 3.3.3.3 3.3.3.3 422 60 80000008 0
Sum-Net 6.6.6.6 2.2.2.2 35 28 80000001 1
Sum-Net 5.5.5.5 3.3.3.3 163 28 80000003 96
Sum-Net 4.4.4.4 3.3.3.3 176 28 80000003 48
Sum-Net 34.1.1.0 3.3.3.3 185 28 80000003 48
Sum-Net 10.1.1.0 2.2.2.2 44 28 80000004 1
Sum-Net 1.1.1.1 2.2.2.2 35 28 80000001 1
Sum-Net 45.1.1.0 3.3.3.3 174 28 80000003 96

Area: 0.0.0.2
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 35 36 80000009 1
Router 6.6.6.6 6.6.6.6 36 48 8000000A 1
Router 1.1.1.1 1.1.1.1 37 48 8000000C 1
Network 10.1.1.6 6.6.6.6 36 36 80000004 0
Sum-Net 0.0.0.0 2.2.2.2 36 28 80000003 1


AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 23.1.1.0 3.3.3.3 422 36 80000002 1
External 23.1.1.2 3.3.3.3 422 36 80000002 1
External 34.1.1.4 3.3.3.3 422 36 80000002 1
External 34.1.1.0 3.3.3.3 422 36 80000002 1
External 3.3.3.3 3.3.3.3 422 36 80000002 1
External 30.30.30.30 3.3.3.3 422 36 80000002 1

同样的,区域内的所有设备都不会有明细的三类LSA,只会有一条缺省的三类LSA。

NSSA区域和Totally NSSA区域

Stub区域和Totally Stub区域存在的问题

OSPF规定Stub区域是不能引入外部路由的,这样可以避免大量外部路由引入造成设备资源消耗。

对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub区域和Totally Stub区域就不能满足需求了。

image-76

NSSA与Totally NSSA区域

NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其他区域引入的外部路由。

Totally NSSA与NSSA区域的配置区别在于前者在ABR上需要追加no-summary关键字。

image-77

image-78

OSPF路由汇总

在ABR执行路由汇总

路由汇总又被称为路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。

OSPF路由汇总的类型:

在ABR执行路由汇总:对区域间的路由执行路由汇总。

在ASBR执行路由汇总:对引入的外部路由执行路由汇总。

image-79

image-80

执行路由汇总后,ABR R2指向Area 0通告汇总路由172.16.0.0/21。

明细路由对应的网段如果产生翻动(Up/Down),该拓扑变更造成的影响将被限制在Area 1内。

在ASBR执行路由汇总

在ASBR配置路由汇总后,ASBR将对自己所引入的外部路由进行汇总。

NSSA区域的ASBR也可以对引入NSSA区域的外部路由进行汇总。

在NSSA区域中,ABR执行7类LSA转化成5类LSA动作,此时它也是ASBR。若配置路由汇总,则对由7类LSA转化成的5类LSA进行汇总。

image-81

OSPF协议特性

Silent-Interface

通过Silent-Interface(静默接口)的配置增强OSPF的组网适应能力,减少系统资源的消耗。

Silent-Interface有以下特性:

  • Silent-Interface不会接收和发送OSPF报文。
  • Silent-Interface的直连路由仍可以发布出去。

image-82

R1的G0/0/1接口在OSPF network命令的网段范围内。

到达该接口的路由将被通告到OSPF,使得其他设备能够访问Server。

由于该接口上未连接任何其他OSPF路由器,因此挂你元将该接口配置为Silent-Interface,该接口将不再收发Hello报文,从而避免了对Server的性能降低。

image-83

OSPF报文认证

OSPF支持报文认证功能,只有通过认证的OSPF报文才能被接收。

路由器支持两种OSPF报文认证方式,当两种认证方式都存在时,优先使用接口认证方式:

区域认证方式:一个OSPF区域中所有的路由器在该区域下的认证模式和口令必须一致。

接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致。

image-84