加载中...

数通 19-OSPF协议特性


OSPF协议特性

1.路由汇总

1.1 在ABR上部署路由汇总

例如在Area 1的ABR-GS-R1上,对Area 1内的路由进行汇总,将站点1内的明细路由汇总成192.168.0.0/19并只将这条汇总路由通告到Area 0,这样Area 0内的CO以及GS-R2将只会学习到这条汇总路由,而不会学习到站点1内的明细路由。

缺省时,汇总路由的Cost值等于被汇总的明细路由的Cost值中最大的那个。

1.2 在ASBR上部署路由汇总

原理和ABR汇总一样,不同的是如果被汇总的明细路由的度量值类型为Metric-Type-2,那么汇总路由的Cost等于明细路由的Cost 中的最大值加1.

OSPF Virtual Link(虚链路)是一种虚拟的、逻辑的链路,被部署在两台OSPF路由器之间,它穿越某个非骨干区域,用于实现另一个非骨干区域与Areao的连接。Virtual Link被视为Area0的一段延伸,当我们在两台路由器上穿越一个非骨干区域建立虚链路后,这两·台路由器即开始在这条Virtual Link上尝试建立邻接关系,当基于Virtual Link的邻接关系建立起来后, Virtual Link两端的路由器会在其产生的Type-1 LSA中描述这条Virtual Link,在Type-1 LSA中, Virtual Link采用类型4的Link来描述。需要强调的是, VirtualLink不能被部署在Stub区域内。

问题:

  1. 虚链路中报文的目的IP地址如何判断呢?

​ 以虚链路邻居为根节点,构建出SPF树,在SPF树中到达自身最短路径的出接口IP地址,即自身向虚链路邻居发送报文的目的IP。

  1. 虚链路中报文源IP地址如何判断?

​ 自身去往目的IP的出接口地址,即为虚链路中报文源IP地址。

  1. 使用Router-ID建立虚链路邻居的优势在哪里?

​ 更加稳定,当区域内存在多条冗余路径的时候,当某条路径出现故障,只要区域内SPF树不会断开,那么虚链路邻居也不会断开。

  1. 虚链路的建立,只能跨越一个常规的非骨干区域。

  2. 虚链路的邻居是如何进行维护?

  • ​ 华为设备中,虚链路邻居之间,会周期性的发送Hello报文,默认10s一次,dead time 40s。

  • ​ 当和虚链路邻居之间的SPF树断开之后,虚链路邻居将会立刻断开。

2.1虚链路环路的产生

在上图的网络中,Area1的AR2和AR4之间建立了虚链路。此时AR4就是一台ABR,它会将AR5上的loopback 5.5.5.5以Type-1 LSA转换为Type-3 LSA注入到Area0中。AR2在收到这条LSA后会将其传递给AR1,对于AR3来说,它就通过Area0学到了到达5.5.5.5的区域间路由。同时AR4会将这一条LSA告诉Area1中的AR3,AR3也知道了到达5.5.5.5的LSA,但是AR3不会使用来自非骨干区域的区域间LSA计算去往5.5.5.5的路由,而是使用来自Area0的LSA。所以AR3去往5.5.5.5的下一条是AR1,而AR1上去往5.5.5.5的下一条是AR2。而AR2到达AR4的虚连接实际上还是使用了AR2——AR3——AR4的真实链路,故而,在AR2上去往5.5.5.5的下一条是AR3.这样就形成了一个环路。

如下图所示。

在实际工作中很少使用虚链路,原因就是非常容易产生环路。

上面产生环路的原因就是,虚链路的选择出现问题,在AR3和AR4之间建立虚链路就可以避免产生环路。

3.默认路由

默认路由( Default Route),也被称为缺省路由,指的是目的网络地址及网络掩码都为0的路由,通常是作为路由器的“最后求助对象”,当去往某个目的网络找不到匹配的具体路由时,如果设备的路由表中存在默认路由,那么该设备将使用默认路由来转发数据。

3.1 在常规区域中发布默认路由

缺省情况下,常规区域中的路由器是不会发布OSPF默认路由的,即使它的路由表·中存在一条默认路由(该默认路由可能是路由器通过其他协议发现的,例如RIP等),也需要通过相应的配置才能使得路由器将默认路由发布到OSPF网络中。

OSPF定义了专门的命令用于引入默认路由,譬如现在要在OR上,将默认路由引入OSPF,则OR的配置如下:Default-route-advertise cost 10 type 2

Default-route-advertise cost 10 type 2这条命令用于向OSPF域发布一条默认路由,这条默认路由采用Type-5 LSA来描述,因此实际上是一条外部路由。在该命令中, cost 关键字用于指定该默认路由的cost值, type关键字用于指定路由的Metric-Type,需要强调的是使用这种方式向OSPF发布默认路由的前提是OR的路由表中必须已经存在一条默认路由,这条默认路由可以是静态的,也可以是从其他动态路由协议(或者其他OSPF进程)学习到的,只有满足这个条件,默认路由才会被顺利下发到该OSPF域。如果在default-route-advertise命令中增加always关键字,则无论OR的路由表中是否已经存在默认路由,它都将始终向OSPF网络下发默认路由。

3.2 在Stub区域中发布默认路由

当一个OSPF区域被配置为Stub区域时,该区域内将不再允许Type-5 LSA进行泛洪,而该区域内部的路由器也就无法学习到OSPF域外的路由,那么这些路由器如何访问域外的网络呢?

Stub区域的ABR会自动向该区域下发一条默认路由(Type-3 LSA),这样Stub区域内的路由器就能够通过这条默认路由将访问域外的流量送达ABR,再由ABR将流量转发出去。

缺省时,这条默认路由的Cost为1,可以在这个Stub区域的ABR的OSPF区域配置视图下使用default-cost命令修改这个Cost值。

3.3 在Totally Stub区域中发布默认路由

Totally Stub区域在Stub区域的基础上进一步禁止其他区域的Type-3 LSA在该区域内泛洪,该区域内的路由器无法学习到OSPF域外的路由以及其他OSPF区域的路由, Totally Stub区域的ABR会自动向该区域发布一条默认路由(Type-3 LSA),这样一来区域内部的路由器就能够通过ABR到达其他区域以及OSPF域外。

缺省时,这条默认路由的Cost为1,可以在这个Totally Stub区域的ABR的OSPF区域配置视图下使用default-cost命令修改这个cost值。

3.4 在NSSA中发布默认路由

当一个区域被配置为NSSA时,该区域将不再允许Type-4 LSA及Type-5 LSA进入,另一方面, NSSA允许在区域本地引入少量的外部路由,这意味着NSSA内的路由器将不会学习到该区域之外引入的外部路由, NSSA的ABR会自动向该NSSA下发一条默认路由(使用Type-7 LSA描述)。

当然我们可能会面对另一种需求,就是NSSA内的路由器希望通过本区域的ASBR (R2)来下发默认路由,那么就需要手工在R2上进行相关配置。R2的关键配置如下:nssa default-route-advertise

完成配置后, R2会向NSSA中注入一条使用Type-7 LSA描述的默认路由,这条默认路由只会在NSSA内传播,不会被ABR转换成Type-5 LSA进入Area 0。值得注意的是,仅当NSSA的ASBR在自己的路由表中已经存在一条默认路由时,使用上述命令才能够向NSSA注入默认路由,否则默认路由将不会被注入。

3.5 在Totally NSSA中发布默认路由

Totally NSSA禁止Type-3, Type-4及Type-5 LSA在该区域中泛洪,同时该区域的ABR向该区域中自动下发一条默认路由 (Tуре-3 LSA), 这样NSSA的路由器可以通过这条默认路由到达其他区域或者域外的网络。

4.报文认证

OSPF支持三种类型的认证方式,分别是空认证(Null Authentication)、简单口令认证(Simple Password)、密文认证(Ctyptograhpic Authentication),这三种认证方式对应的“认证类型”字段值分别为0、1和2。

4.1 空认证

缺省情况下,OSPF的接口上使用的认证方式为空认证,这意味着对接口的OSPF报文不做认证,此时的认证类型字段值为0.

4.2 简单口令认证

简单口令认证又被称为明文认证,一个明文的口令被包含在认证数据字段中用于认证OSPF的报文收发,因此实际上这种认证方式并不安全,只要网络环境有条件进行报文窥探,即可对捕获下来的报文做分析,攻击者就能够直接看到包含在其中的明文口令。

4.3 密文认证

与简单口令认证不同,采用密文认证时, OSPF报文中并不直接包含用于认证的明文形式的口令,而是包含一个哈希(Hash)值,这个哈希值是将用户配置的口令等内容经过MD5算法计算得到的结果。

MD5算法是一种理论上不可逆的散列算法,因此即使OSPF报文被捕获,也无法通过报文中包含的哈希值反推得到明文口令,所以这种认证方式显然要比简单口令认证更加安全。

字段 大小 含义
Key-ID (Key-Identification) 8比特 口令标识。两台直连的OSPF路由器如果都激活了报文认证,那么双方的Key-ID及口令必须一致。
认证数据长度(Authentication Data Length) 8比特 将口令经过散列算法(例如MD5)计算后得到的数据是追加在OSPF报文尾部的(不在OSPF报文头部中),它并不被当作是OSPF协议报文的一部分,所以OSPF报文头部中的“报文长度”字段所显示的值并不将认证数据纳入长度计算。“认证数据长度”字段显示了这个认证数据的长度。
密码序列号(Cryptographic Sequence Number) 32比特 一个持续保持递增的序列号,用于OSPF报文的防重放攻击。由于这个字段的值是只增不减的,因此当收到OSPF报文的密码序列号等于或小于目前的序列号时,路由器认为此报文为重放攻击报文,于是将其丢弃。

5.转发地址-FA

在OSPF的Type-5 LSA及Type-7 LSA中包含着一个特别的字段—转发地址(Forwarding Address, FA), FA的引入使得OSPF在某些特殊的场景下可以避免次优路径问题。

OSPF设计了FA字段,可解决次优路径问题。FA字段只存在于Type-5 LSA及Type-7 LSA当中,有点类似于通往外部网络的“出口(Exit)”的概念。

以Type-5 LSA为例,当一台路由器使用Type-5 LSA计算到达外部网段的路由时,它会根据Type-5LSA的链路状态ID及LSA中所包含的网络掩码进行与运算,从而得到路由的目的网络地址及掩码,此外,该路由器会检查产生这条LSA的ASBR的可达性,如果ASBR不可达,那么这条Type-5 LSA将不会用于计算路由,只有当ASBR可达时,这条LSA才被认为是有效的。

此时如果LSA中所包含的FA为0.0.0.0,则路由器认为到达目的网段的数据包应该发往该ASBR,因此它将到达ASBR的下一跳地址作为这条外部路由的下一跳;而如果FA不为0.0.0.0,则路由器认为到达目的网段的数据包应该发往这个FA(所标识的设备),因此它将在自己的OSPF路由表中查询到达这个FA的路由,如果在OSPF路由表中能够找到匹配这个FA的OSPF区域内部路由或OSPF区域间路由,则使用到达这个FA的下一跳地址作为这条外部路由的下一跳地址。如果没有符合上述条件的路由存在,那么这条Type-5 LSA将不会用于外部路由计算。

当外部路由被ASBR引入OSPF时,一般情况下用于描述这些外部路由的Type-5LSA的FA字段值被设置成0.0.0.0,然而当满足某些特定的条件时, FA字段也可以被ASBR设置成非0.0.0.0的值。

这些条件是:

引入外部路由的ASBR在其连接外部网络的接口(外部路由的出接口)上激活了OSPF;

该接口没有被配置为Silent-Interface;

该接口的网络类型为Broadcast或NBMA;

该接口的IP地址落在OSPF协议配置的network命令范围内。

当同时满足上述四个条件时, FA才允许被设置为非0.0.0.0的值,否则FA被设置为.0.0.0.0。

FA地址的取值为:ASBR去往外部路由的下一跳地址。

如何实现路径优化?

即OSPF路由器,计算带有FA地址的外部路由时,把FA地址当做外部路由的总出口。

cost计算:为自身去往FA地址的cost+外部路由携带的cost。

下一跳:路由器去往FA地址的下一跳,即为外部路由的下一跳地址。

6.OSPF路由防环机制

OSPF与距离矢量路由协议不同,运行OSPF的路由器之间交互并不是路由信息,而是LSA,而路由的计算正是基于网络中所泛洪的各种LSA进行的,所以实际上OSPF路由的环路避免机制还得依赖于LSA相关的诸多设计。

6.1 区域内部路由的防环

依赖Type-1及Type-2 LSA,路由器能够描绘出区域内的拓扑及网段信息,从而运行SPF算法,计算出到达每个网段的最优路径,并将这些路径安装到路由表中,因此区域内的路由可以实现无环路。

6.2 区域间路由的防环

(1) OSPF要求所有的非骨干区域必须与Area 0直接相连,区域间路由需经由Area 0中转。
这个规则使得区域间的路由传递不能发生在两个非骨干区域之间,这在很大程度上,规避了区域间路由环路的发生,也使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。

(2) ABR从非骨干区域收到的Type-3 LSA不能用于区域间路由的计算。
OSPF对ABR有着严苛的要求,区域间路由传递的关键点在于ABR对Type-3 LSA的处理。

OSPF规定, ABR在使用Type-3 LSA计算区域间的路由时,只会使用其在Area 0内所收到的Type-3 LSA进行计算,而从非骨干区域内收到的Type-3 LSA是不会用于路由计算的。这样可以有效地避免环路的发生。

(3) ABR只能将自己到达所连接区域的区域内部路由注入骨干区域(区域间路由则,不被允许) ,另外,可以将其到达所连接区域的区域内部路由及到达其他区域的区域间路由注入非骨干区域。

R3可以把描述Area 2的路由信息注入到Area 0中,同时也会把从R4生成的Type-3 LSA注入到Arae 0中。此时, R2不能够使用这些Type-3 LSA进行区域间路由计算,更不能再将描述这些路由的Type-3 LSA注入Area 0(本条规则的前半句话)。因为R2所有接口都属于Area 0。这样可以有效的防止区域间路由被倒灌回Area0.

另一方面, R3会在Area 0内发现Type-1 LSA (可能还会有Type-2 LSA),也会收到描述区域间路由的Type-3 LSA, R3可以使用这些LSA计算到达Area 0内各网段的区域内部路由,以及到达Area 1内各网段的区域间路由,并且可以将描述这些路由的Type-3 LSA注入非骨干区域–Area 2 (本条规则的后半句)。

注入是单方向的。

(4) ABR不会将描述到达某个区域内网段路由的Type-3 LSA再注入回该区域。

R2作为ABR生成描述Area 1的Type-3 LSA,注入到Area 0中,这些Type-3 LSA不会被发回Area 1里。R3收到R2发的Type-3 LSA后,生成新的Type-3 LSA用来向Area 2区域里的路由器描述到达Arae 1区域的路由,这个Type-3 LSA也不会发回Area 0.

(5) Type-3 LSA还设计了Down-Bit (一个特殊的比特位) ,用于在MPLS VPN环境下进行路由防环。

6.3 外部路由的防环

一台路由器使用Type-5 LSA计算出路由有两个前提,其一是要收到Type-5 LSA,其二是要知道如何到达产生这个Type-5 LSA的ASBR。

Type-5 LSA会被泛洪到整个OSPF域,表面上看,它本身并不具有什么防环的能力,但是实际上,它并不需要,因为它可以依赖Type-1 LSA. Type-2 LSA及Type-4 LSA来实现防环。

7.OSPF路由类型及优先级

它们的优先级按如下顺序排列:

区域内路由(Intra Area Route):区域内路由指的是路由器根据区域内泛洪的Type1、Type-2 LSA计算得到的路由,使用这些路由,路由器可以到达其直连区域内的网段。

区域间路由(Inter Area Route):区域间路由指的是路由器根据Type-3 LSA计算得到的路由,使用这些路由,路由器可以到达其他区域的网段。

Type1外部路由(Metric-Type-1 External Route):此处Type1外部路由指的是路由器根据Type-5 LSA (Metric-Type-1)计算出的外部路由。

Type2外部路由(Metric-Type-2 External Route):此处Type2外部路由指的是路由器根据Type-5 LSA (Metric-Type-2)计算出的外部路由。

type1:其他OSPF路由器计算,type1类型的外部路由,将会累加内部cost值。
type2:其他OSPF路由器计算,type2类型的外部路由,不会累加内部cost值。
外部路由选路原则:
	1、无论任何cost,type1总是优先于Type2. 
	2、同为Type1的时候如何比较:
		①比较Cost和值,越小越优。
		②如果cost和值相同,则负载。
	3、同为type2的时候如何比较:
		①比较引入时的cost值,即5类LSA携带的cost值。
		②如果引入时的cost相同,则比较到达ASBR的cost。
		③如果到达ASBR的cost相同,则负载。
		
什么时候才会使用type1呢?
	管理员希望OSPF路由器,通过自身的算法选出访问外部路由的最短路径,而不加以管理的时候使用type1.
什么时候才会使用type2呢?
	管理员希望人为的控制OSPF路由器访问外部路由的总出口。

文章作者: okra2saber
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 okra2saber !
评论
  目录