OSPF内部路由

发布于:2022-08-04 ⋅ 阅读:(374) ⋅ 点赞:(0)

OSPF采用划分区域的方式,将一个大网络划分为多个相互连接的小网络。每个区域内的设备只需同步所在区域内的链路状态数据库,一定程度上降低内存及CPU的消耗。

划分区域后,根据路由器所连接区域的情况,可划分两种路由器角色:

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

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

​区域内部路由器维护本区域内的链路状态信息并计算区域内的最优路径。区域边界路由器作为区域间通信的桥梁,同时维护所连接多个区域的链路状态数据库。OSPF区域内和区域间路由描述的是OSPF内部的网络结构。

OSPF区域内路由

在Router-LSA和Network-LSA中,包括了拓扑信息和路由信息。OSPF将依据SPF算法和各类LSA进行最短路径树的计算区域内路由。

Router-LSA

Router-LSA,即Type1 LSA,是一种最基本的LSA。OSPF网络里的每一台路由设备都会发布Type1 LSA。这种类型的LSA用于描述设备的链路状态和开销,在路由器所属的区域内传播。Router-LSA由LSA头部和LSA信息字段两部分组成,其包含的信息如下图所示。

在LSA头部中,主要关注以下三个字段:

  • Type:LSA类型,Router-LSA是一类LSA。

  • LS id:链路状态ID。

  • Adv rtr:产生此Router-LSA的路由器Router ID。

在LSA信息字段中,一条Router-LSA可以描述多条链接,每条链接描述信息由Link ID,Data,Link Type和Metric组成。

其中,Link Type有四种类型,Link ID和Data的含义会根据Link Type不同而不同,具体信息对应关系如下表所示。

Link  Type

描述

Link ID

Data

Metric

1-P-2-P

点对点连接到另一路由器

邻居的Router ID

产生该LSA的路由器的接口IP地址

开销值

2-TransNet

连接到一个传输网络

DR的接口IP地址

产生该LSA的路由器的接口IP地址

开销值

3-StubNet

连接到一个末梢网络

网络IP地址

网络掩码

开销值

4-Virtual

虚链路

邻居的Router ID

产生该LSA的路由器的接口IP地址

开销值

Network-LSA

Network-LSA,即Type2 LSA,由DR产生,描述本网段的链路状态,在所属的区域内传播。Network-LSA中包含的信息如下图所示:

在Network-LSA中关键字的含义如下:

  • Type:LSA类型,Network-LSA是二类LSA。

  • LS id:DR的接口IP地址。

  • Adv rtr:产生此Network-LSA的路由器Router ID,即DR的Router ID。

  • Net mask:该MA网段的网络掩码。

  • Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的路由器的Router-ID,以及DR自己的Router-ID)

SPF计算过程

以下图拓扑为例,进行SPF计算主要通过以下两步完成:

  1. 根据Router-LSA和Network-LSA中的拓扑信息,构建SPF树干。

  2. 基于SPF树干和Router-LSA、Network- LSA中的路由信息,计算最优路由

一、构建SPF树

OSPF路由器将分别以自身为根节点计算最短路径树,以RTA为例,RTA将自己添加到最短路径树的树根位置,然后检查自己生成的Router-LSA,如下图所示

  • 对于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接添加到候选列表中,分节点的候选列表为Link ID,对应的候选总开销为本LSA中描述的Metric值和父节点到达根节点开销之和。

    如上图所示,根节点RTA的Router-LSA中有TransNet中Link ID为10.1.12.2 Metric=1和P-2-P中Link ID为3.3.3.3 Metric=48的两个连接,被添加进候选列表中。

  • RTA将候选列表中候选总开销最小的节点10.1.12.2移到最短路径树上,并从候选列表中删除。因节点10.1.12.2为DR,接下来检查Ls id为10.1.12.2的Network-LSA,如下图所示。

在Attached Router部分:

  • 因为1.1.1.1已经在最短路径树上,所以忽略节点1.1.1.1信息。

  • 将节点2.2.2.2,Metric=0,父节点到根节点的开销为1,所以候选总开销为1,加入候选列表。如上图所示,此时,候选节点列表中有两个候选节点。

  • 将候选总开销最小的节点2.2.2.2加入最短路径树并从候选列表中删除。​继续检查Ls id为2.2.2.2的Router-LSA如下图所示:

  • 第一个TransNet连接中,Link ID为10.1.12.2,此节点已经在最短路径树上,忽略。

  • 第二个TransNet连接中,Link ID为10.1.235.2,Metric=1,父节点到根节点的开销为1,候选总开销为2,加入候选列表。如上图所示,此时,候选节点列表中有三个候选节点。

  • 第三个P-2-P连接中,Link ID为4.4.4.4,Metric=48,父节点到根节点的开销为1,候选总开销为49,加入候选列表。

  • 将节点5.5.5.5,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。如上图所示,此时,候选节点列表中有三个候选节点。​

  • 将候选总开销最小的节点3.3.3.3和5.5.5.5加入最短路径树并从候选列表中删除。此时继续检查Ls id分别为3.3.3.3和5.5.5.5的Router-LSA。

  • 将候选总开销最小的节点10.1.235.2加入最短路径树并从候选列表中删除。接下来检查Ls id为10.1.235.2的Network-LSA,如下图所示:

如上图所示,在Attached Router部分:

  • 因为2.2.2.2已经在最短路径树上,忽略节点2.2.2.2信息。

  • 将节点3.3.3.3,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。

    此时,在候选列表中出现两个节点ID一样但是到根节点的开销不一样的节点,需删除到根节点的开销大的节点,即删除节点3.3.3.3 累计开销为48的候选项。

  • 将节点5.5.5.5,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。如上图所示,此时,候选节点列表中有三个候选节点。​

  • 将候选总开销最小的节点3.3.3.3和5.5.5.5加入最短路径树并从候选列表中删除。此时继续检查Ls id分别为3.3.3.3和5.5.5.5的Router-LSA。

节点3.3.3.3的Router-LSA信息如下:

Ls id为3.3.3.3的LSA中:

  • 因为Link ID为10.1.235.2的节点已经在最短路径树上,所以忽略此信息。

  • 因为Link ID为1.1.1.1的节点已经在最短路径树上,所以忽略此信息。

节点5.5.5.5的Router-LSA信息如下:

Ls id为5.5.5.5的LSA中:

  • Link ID为10.1.235.2的节点已经在最短路径树上,忽略。

  • Link ID为4.4.4.4的P-2-P连接,Metric=48,父节点到根节点的开销为2,候选总开销为50。因为节点4.4.4.4已经在候选列表中出现,且候选总开销为49。49<50,所以子节点4.4.4.4的父节点选择2.2.2.2。

至此,再通过命令display ospf  lsdb router 4.4.4.4发现,LSA中的连接所描述的相邻节点都已经添加到了SPF树中。此时候选列表为空,完成了SPF树的构建,其中10.1.12.2和10.1.235.2是虚节点(DR)。

二、计算最优路由

根据Router LSA中的Stub、Network LSA中的获取路由信息,各节点的路由信息如下。

从根节点开始,按照每个节点加入SPF树的顺序,依次添加LSA中的路由信息:

  • 节点1.1.1.1(RTA)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,Metric=48;

  • 节点10.1.12.2(DR)的Network LSA中,网络号/掩码10.1.12.0/24,Metric=1+0=1;

  • 节点2.2.2.2(RTB)的Router LSA中,共1个Stub连接,网络号/掩码10.1.24.0/24,Metric=1+0+48=49;

  • 节点10.1.235.2(DR)的Network LSA中,网络号/掩码10.1.235.0/24,Metric=1+0+1=2;

  • 节点3.3.3.3(RTC)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,已在RTA上,忽略;

  • 节点5.5.5.5(RTE)的Router LSA中,共1个Stub连接,网络号/掩码10.1.45.0/24,Metric=1+0+0+1+48=50;

  • 节点4.4.4.4(RTD)的Router LSA中,共2个Stub连接,网络号/掩码10.1.24.0/24,已在RTB上,忽略;网络号/掩码10.1.45.0/24,已在RTE上,忽略。

经历上述两个阶段的计算,RTA生成的OSPF路由如下图所示。

OSPF区域间路由

由于ABR同时连接着非骨干区域和骨干区域,因此它分别为这些区域维护着LSDB并且计算出到达直连区域的区域内部路由。ABR将一个区域内的一类和二类LSA转化成三类LSA,然后向某个区域注入Type-3 LSA,以便向该区域通告到达其他区域的区域间路由。

Network-Summary-LSA

Network-summary-LSA,也叫Type3 LSA,由ABR发布,用来描述区域间的路由信息。ABR将Network-summary-LSA发布到一个区域,通告该区域到其他区域的目的地址。实际上,ABR是将区域内部的Type1和Type2的信息收集起来并汇总之后扩散出去,这就是Summary的含义。

​Network-summary-LSA包含的信息如下图所示:

Network-Summary-LSA中主要包括以下内容:

  • Ls id:目的网段地址。

  • Adv rtr:ABR的Router ID。

  • Net mask:目的网段的网络掩码。

  • Metric:ABR到达目的网段的开销值。

区域间路由计算

区域间路由计算规则如下:

  • 根据三类LSA中的Adv rtr字段,判断出ABR。

  • 根据Ls id、Net mask、Metric字段获得ABR到达目的网络号/掩码、开销。

  • 如果多个ABR产生了指向相同目的网段的三类LSA,则根节点将根据本路由器到达目的网段的累计开销进行比较,最终生成最小开销路由。如果根节点到达目的网段的累计开销值相同,则产生等价负载的路由。

如下图所示,以Area 1中RTD上的192.168.1.0/24的网络为例,其对应的一类LSA在Area 1中同步;作为Area 1和Area 0之间ABR的RTB负责将192.168.1.0/24的一类LSA转换成三类LSA并将此三类LSA发送到Area 0。同理,RTC也会将192.168.2.0/24的三类LSA发布到Area0。

Area 0中RTA收到192.168.1.0/24和192.168.2.0/24的三类LSA中,Adv rtr分别是RTB(2.2.2.2)和RTC(3.3.3.3)。其中RTB产生的三类LSA中,网络号/掩码是192.168.1.0/24,开销为1,RTC产生的三类LSA中,网络号/掩码是192.168.2.0/24,开销为1。

通过计算,RTA到达192.168.1.0/24下一跳是RTB,开销是2(RTA至RTB的开销值1+Type3 LSA的开销值1);RTA到达192.168.2.0/24下一跳是RTC,开销是2(RTA至RTC的开销值1+Type3 LSA的开销值1)。

作为Area 0和Area 2之间ABR的RTC,又重新生成一份192.168.1.0/24的三类LSA发送到Area 2中,同理,RTB也会生成一份192.168.2.0/24的三类LSA发送到Area 1中。

通过计算,RTD到达192.168.2.0/24下一跳是RTB,开销是4(RTD至RTB的开销值1+Type3 LSA的开销值3);RTE到达192.168.1.0/24下一跳是RTC,开销是4(RTE至RTC的开销值1+Type3 LSA的开销值3)。

区域间路由防环机制

如下图所示,RTB将Area1中的一类、二类LSA转换成三类LSA,发布到区域0中。RTC重新生成有关192.168.1.0/24网络的三类LSA并发布到Area 2中。同理,RTE也将有关192.168.1.0/24网络的三类LSA发布到Area 3中。RTD又将192.168.1.0/24网络的三类LSA发布到Area 1中,此时会形成了路由环路。

为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则如下:

  • 骨干区域只有一个,骨干区域ID固定为0。

  • 所有非骨干区域均只能和骨干区域相连且非骨干区域之间的通信都要通过骨干区域中转,

  • ABR设备至少有一个接口属于骨干区域。从骨干区域传来的三类LSA不再传回骨干区域。

Virtual Link

新建网络按照区域间的防环规则进行部署,可以避免区域间环路问题。但是部分网络可能因早期规划问题,存在区域间的连接关系违背了骨干区域和非骨干区域的规则的可能,此时该区域间路由计算就会出现问题。

如下图所示,网络中Area1与Area0直接相连,RTB可以将到达Area1内各个网段的OSPF区域间路由通告给Area0、将到达Area0内各个网段的OSPF区域间路由通告给Area1。如此一来这两个区域的设备之间可以正常通信。

但是​Area2并没有与Area0直接相连,因此RTC并非实际意义上的ABR,它也就无法向Area1中注入用于描述到达Area2内网段路由的Type-3 LSA,当然也无法向Area2中注入用于描述到达Area0及Area1内网段路由的Type-3 LSA,这样,Area2就形成了一座孤岛。

此时可以考虑一种临时的解决方案,那就是OSPF虚链路(Virtual Link)。Virtual Link是一种逻辑的链路,并非一条真实的链路,通过搭建一条Virtual Link,可以将原本没有与骨干区域直接相连的区域和后者连接起来。

如下图所示,在RTB和RTC之间建立一条穿越Area1的Virtual Link,如此一来,RTC就可以通过这条Virtual Link与骨干区域相连,当然,Area2也就与骨干区域相连了,现在区域间的路由就可以由RTC来完成传递,Area2的孤岛问题也就解决了。

区域间路由汇总

在大规模部署OSPF网络时,可能会出现由于OSPF路由表规模过大而降低路由查找速度的现象,为了解决这个问题,可以配置路由汇总,减小路由表的规模。

路由汇总是指将多条连续的IP前缀汇总成一条路由前缀。如果被汇总的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告给被汇总的IP地址范围外的设备。因此,路由汇总可以避免网络中的路由振荡,在一定程度上提高了网络的稳定性。

ABR向其它区域发送路由信息时,以网段为单位生成三类LSA。如果该区域中存在一些连续的网段,可以通过命令将这些连续的网段汇总成一个网段。这样ABR只发送一条汇总后的三类LSA,所有属于命令指定的汇总网段范围的LSA将不会再被单独发送出去。

如下图所示,Area 1中存在8个连续网段,汇总前RTB将产生8条三类LSA。在RTB上配置汇总后,RTB仅产生1条三类LSA并泛洪到Area 0。

本文含有隐藏内容,请 开通VIP 后查看

网站公告


今日签到

点亮在社区的每一天
去签到