链路状态数据库和LSA总结

链路状态数据库和LSA总结

 

一:链路状态数据库简述:

每一台OSPF路由器都会把所有有效的LSA放入自己的链路状态数据库中,这些LSA代表着这个路由器对这个区域的认识,区域内的每一个OSPF路由器都要利用到这些LSA去计算路由,因此,保证同区域内的链路状态数据库的统一性和正确性就显得尤为重要。

我们知道,每一条LSA都有着其最大老化时间(时间是一小时),一旦该条LSA到达了老化时间,他将被路由器从链路状态数据库中清除。那么为了避免出现这种状况,路由器引入一种

重刷新机制(link-state refresh),每隔30分钟(这个时间称为

LSRefreshTime,即重刷新计时器),LSA的始发路由器将会将这条LSA泛洪出去。并将该条LSA的序列号加一,老化时间设为 0 ,其他路由器收到此新的拷贝信息后,将会用这条新的拷贝来替换该条LSA的原来的拷贝。

这里需要注意的是,由于每条LSA都是使用的单独的重刷新计时器,那么这里就会出现一个问题,那就是可能在单位时间内泛洪出去的LSA很少,甚至只有一条,那么链路带宽的使用将会变得效率极低。

在早期的IOS中,思科路由器是采用的一个单独的LSRefreshTime,即所有的的LSA共用一个LSRefreshTime,这样做固然是可以提高带宽的使用效率,但是其所带来的问题是,如果LSA的数量非常多的话,那么网络每隔30分钟将会出现一次区域通信量和CPU使用率的高峰。

为了平衡这种问题,思科引入了一种LSA的组步调机制(group pacing),即作为一种每个LSA使用一个单独的重刷新计时器和所有LSA共用一个重刷新计时器之间的一个折衷方法。在此机制下,每一个LSA都会有自己单独的重刷新计时器,但是当其计时器到期后,路由器不会立即将其泛洪出去,而是会引入一个时延来延迟这些LSA的发送,通过这种方法,可以将更多的LSA编制成一组发送出去,思科默认的时延是240秒,可以通过命令timers lsa-group-pacing 来修改这个时间。如果说链路状态数据库非常的庞大(LSA的数量大于10000 条),那么适当减小这个延迟时间是有好处的,如果链路状态数据库比较小的话,那么适当增减这个延迟时间是有好处的。

 

二:LSA-1

每一个OSPF路由器都会产生一类LSA,此类LSA描述了路由器所连接的全部链路或接口,以及此链路上所连接的邻居。可以通过命令:

Ship ospf database router 来查看:

 

 LS age: 385

  Options: (No TOS-capability, DC)

  LS Type: Router Links

  Link State ID: 1.1.1.1

  Advertising Router: 1.1.1.1

  LS Seq Number: 80000003

  Checksum: 0x1743

  Length: 60 

Number of Links: 5

Link connected to: a Stub Network

     (Link ID) Network/subnet number: 1.1.1.1

     (Link Data) Network Mask: 255.255.255.255

      Number of TOS metrics: 0

       TOS 0 Metrics: 1

 

    Link connected to: another Router (point-to-point)

     (Link ID) Neighboring Router ID: 2.2.2.2

     (Link Data) Router Interface address: 12.0.0.1

      Number of TOS metrics: 0

       TOS 0 Metrics: 64

 

    Link connected to: a Stub Network

     (Link ID) Network/subnet number: 12.0.0.0

     (Link Data) Network Mask: 255.255.255.0

      Number of TOS metrics: 0

       TOS 0 Metrics: 64

 

    Link connected to: a Transit Network

     (Link ID) Designated Router address: 10.0.0.1

     (Link Data) Router Interface address: 10.0.0.1

      Number of TOS metrics: 0

       TOS 0 Metrics: 1

 

    Link connected to: a Virtual Link

     (Link ID) Neighboring Router ID: 2.2.2.2

     (Link Data) Router Interface address: 12.0.0.2

      Number of TOS metrics: 0

       TOS 0 Metrics: 64

 

 

 

 

 

下面来看下一类LSA的字段:

 

 

Link State ID for Router LSAs is the originating router's Router ID.(不同的LSA此字段的含义也将会不同)

V, or Virtual Link Endpoint bit, is set to one when the originating router is an endpoint of one or more fully adjacent virtual links

having the described area as the transit area.

 

E, or External bit, is set to one when the originating router is an ASBR.

提出问题:一类LSA中,此字段的作用是什么?

解决问题:OSPF某一区域引入了外部路由时,那么在此区域内的路由器是不需要LSA-4的,那么此时,就依靠LSA-1 当中的E字段来确定ASBR的位置。

 

B, or Border bit, is set to one when the originating router is an ABR.

提出问题:一类LSA中,此字段的作用是什么?

解决问题:先思考下三类LSA的作用:ABR路由器会将一个区域的的信息发送到另一个区域去(特殊区域除外),通过的就是三类LSA,那么区域路由器有必要知道 ABR的位置,而如果三类LSA中,宣告者的route-id B 位中的显示的不一致的话,那么接收路由器将会认为这条 LSA-3 是非法的,而拒绝把它放入路由表

 

Number of Links specifies the number of router links the LSA describes. The Router LSA must describe all of the originating

router's links, or interfaces, to the area in which the LSA is flooded.

 

Link Type describes the general type of connection the link provides. Table 8-9 lists the possible values of the field and the

associated connection types.

Table 8-9. Link type values.

Link Type Connection

1 Point-to-point connection to another router

2 Connection to a transit network

3 Connection to a stub network

4 Virtual link

请注意:Link type value 将会导致 Link ID Link Date的不同

 

Link ID identifies the object to which the link connects. This is dependent on the link type, as shown in Table 8-10. Note that

when the connected object is another router, the Link ID is the same as the Link State ID in the header of the neighboring

router's LSA. During the routing table calculation, this value is used to find the neighbor's LSA in the link-state database.

Table 8-10. Link ID values.

Link Type Value of Link ID Field

1 Neighboring router's Router ID

2 IP address of the DR's interface

3 IP network or subnet address

4 Neighboring router's Router ID

Link Data also depends on the value of the Link Type field, as shown in Table 8-11.

Table 8-11. Link data values.

Link Type Value of Link Data Field

1 IP address of the originating router's interface to the network[*]

2 IP address of the originating router's interface to the network

3 Network's IP address or subnet mask

4 The MIB-II ifIndex value for the originating router's interface

[*] If the point-to-point link is unnumbered, this field will instead carry the MIB-II ifIndex value of the interface.

 

二:LSA-2

 

LSA-1 LSA-2的关系:

OSPF中,LSA-2是由网络中的DR产生的,而LSA-2类的信息是极为简洁的,如下所示:

二类LSA示例:

  Routing Bit Set on this LSA

  LS age: 257

  Options: (No TOS-capability, DC)

  LS Type: Network Links

  Link State ID: 10.0.0.1 (address of Designated Router)

  Advertising Router: 1.1.1.1

  LS Seq Number: 80000003

  Checksum: 0x9761

  Length: 40

  Network Mask: /24

        Attached Router: 1.1.1.1

        Attached Router: 2.2.2.2

        Attached Router: 3.3.3.3

        Attached Router: 4.4.4.4

因此在广播多路访问网络中,要想构建出一个完整的网络拓扑,还必须借助LSA-1的帮助。可是我们会问,在多路访问网络中,为什么还需要LSA-2类呢?要知道LSA-2类中仅仅只包含了DR自身的信息以及连入此多路访问网络中路由器的 ID,而DR的基本信息在每个路由器连入此网络的接口的数据库中都有保存,因此LSA-2看起来似乎多余。但是仔细想想在多路访问网络中每个路由器之间的关系我们会发现,Drother之间所建立的仅仅只是 2-way 关系。我们现在来假设有三台路由器,分别是ABC。其中A路由器是DR,其余两台是Drother,当B路由器向A发送了一条LSA-1的更新信息,由于LSA-1的特性是在整个OSPF区域内泛洪,所以DR会将此信息转发C路由器,假设没有LSA-2,那么由于B路由器与C路由器所建立的仅仅只是 2-way关系,所以C路由器会认为这条信息不可信,而拒绝使用此条LSA进行路由的计算。而此时若有LSA-2的话,情况就不一样了,我们来看下LSA-2中的这样一段信息:

Attached Router: 1.1.1.1

        Attached Router: 2.2.2.2

        Attached Router: 3.3.3.3

        Attached Router: 4.4.4.4

这个字段中的含义是,连入此多路访问网络中的路由器有哪些。由于DR与多路访问网络中的其他路由器建立的是完全邻接关系,换而言之,DR对整个网络有着完全清晰的认识,所以当C路由器接受到了B路由器的更新信息以后,如果在LSA-2类所显示的连入此多路访问网络中的路由器包含有B路由器的话,那么C路由器就会认为此条LSA更新信息合法,将会把它用于路由选择计算,否则就认为不合法,而不被用于路由计算。

LSA-3

每台ABR路由器都会将他所连的某一区域的的路由信息告诉ABR所连的其他的区域,

 

三类LSA示例:

  LS age: 586

  Options: (No TOS-capability, DC, Upward)

  LS Type: Summary Links(Network)

  Link State ID: 10.0.0.0 (summary Network Number)

  Advertising Router: 2.2.2.2

  LS Seq Number: 80000001

  Checksum: 0x2FF1

  Length: 28

  Network Mask: /24

        TOS: 0  Metric: 10

 

该条LSA中,ABR向其他区域宣告了某个区域的一条汇总信息(注意:一条LSA-3信息只包含了一个网段),当区域内路由器受到了LSA-3类信息后,不会进行SPF算法进行计算,而只会简单的将3LSA中所宣告的网段的cost值简单的与其到ABR路由器之间的cost值进行简单的累加,这有点像距离矢量路由协议的做法,因此这也就带来了潜在环路的可能,所以必需得要有一种防环机制,也就是:任何非骨干区域的必须要和骨干区域相连,而且非骨干区域不能传送LSA

提出疑问:如果ABR路由器连接了两个区域,分别是区域0和区域1,区域0中有一个网段是1.1.1.1/32,且ABR 路由器有两条路径到该网段,那么ABR路由器又该产生怎样的LSA-3向区域1宣告呢?

解决疑问:这个问题要分两种情况:第一种是:ABR1.1.1.1的两条路径的cost值不等,第二种是:ABR1.1.1.1的两条路径的cost值相等。这里需要说明的是,无论如何,ABR都将宣告1.1.1.1这个网段的信息,而至于ABR会选择哪条路径则是通过其中的cost值来体现

首先来讨论第一种情况:在此种情况下,ABR会选择cost值最低的那条路径来产生3LSA

第二种情况:这种情况貌似多余的,因为选择哪条路径来产生3LSA是通过cost值来决定的,而两条路径的cost值都相等,所以无论选择哪条,其所产生的3LSA都是相同的,那么这里我们就会问,假设区域1的某台路由器发送了一个到1.1.1.1ping包,那么ABR是否会进行负载均衡的转发呢?答案是否定的,因为这时候的ABR路由器作为转发路由器,会进行快速交换,即在缓存表中建立一个映射关系,即:

 

R2#sh ip cache

Prefix/Length           Age       Interface       Next Hop

1.1.1.1/32              00:10:03  Serial0         12.0.0.1

 

一般而言,负载均衡只是针对始发路由器而言的。

 

 

 

LSA-1LSA-3之间的关系:

LSA-3类信息是由ABR产生的,为了使接收路由器能将这条LSA认定为有效,接收路由器必须可达ABR,而这个任务就是交由

LSA-1类完成。

可通过如下命令来查看边界路由器是否可达(包括ABRASBR

 

show ip ospf border-routers

Destination  Next Hop         Type  Area SPF No

 

i 4.4.4.4 [10] via 10.0.0.4, Ethernet0, ABR, Area 2, SPF 7

i 2.2.2.2 [10] via 10.0.0.2, Ethernet0, ABR, Area 2, SPF 7

i 2.2.2.2 [64] via 12.0.0.2, Serial0, ABR, Area 1, SPF 5

i 3.3.3.3 [10] via 10.0.0.3, Ethernet0, ABR, Area 2, SPF 7

 

Field

Description

Destination

Destination's router ID.

Next Hop

Next hop toward the destination.

Cost

Cost of using this route. (有些IOS可能不会显示此项)

Type

The router type of the destination; it is either an area border router (ABR) or autonomous system boundary router (ASBR) or both.

Rte Type

The type of this route, it is either an intra-area or interarea route.

(有些IOS可能不会显示此项

Area

The area ID of the area that this route is learned from.

SPF No

The internal number of SPF calculation that installs this route.

 

 

注:此表摘录自思科官方技术文档,原文对此部分的讲解为:

 

 

Router# show ip ospf border-routers

 

OSPF Process 109 internal Routing Table

 

Destination      Next Hop        Cost   Type     Rte Type Area           SPF No

 

192.168.97.53     172.16.1.53    10     ABR      INTRA    0.0.0.3        3

192.168.103.51    192.168.96.51    10     ABR      INTRA    0.0.0.3        3

192.168.103.52    192.168.96.51    20     ASBR     INTER    0.0.0.3        3

192.168.103.52    172.16.1.53    22     ASBR     INTER    0.0.0.3        3

 

Table 190 describes the fields shown in the display.

Table 190 Show IP OSPF Border-Routers Field Descriptions 

Field

Description

Destination

Destination's router ID.

Next Hop

Next hop toward the destination.

Cost

Cost of using this route.

Type

The router type of the destination; it is either an area border router (ABR) or autonomous system boundary router (ASBR) or both.

Rte Type

The type of this route, it is either an intra-area or interarea route.

Area

The area ID of the area that this route is learned from.

SPF No

The internal number of SPF calculation that installs this route.

 

对比思科官方技术文档的示例和我做实验显示的结果可以看出,对于不同的IOS,其显示的内容可能会略有差异

 

 

 

 

LSA-4

LSA-4是为LSA-5服务的,若无LSA-5就不会有有LSA-4LSA-4的作用是通告ASBR的位置,使得区域内路由器到ASBR可达,这样的话,ASBR所产生的LSA-5将被接收路由器认定为合法,并被用于路由计算。

提出疑问:是否有LSA-5类就一定会有LSA-4呢?

解决疑问:首先来想想LSA-4的作用:LSA-4的作用在于通告ASBR的位置,使得区域内路由器到ASBR可达,那么是否意味着,如果区域内路由器到ASBR可达的话,LSA-4将没有必要?

整个OSPF域中只有一个区域。

在此种情况下,区域内路由器可以通过LSA-1来知道ASBR的位置,所以此时LSA-4将没有必要。

提出疑问:在多区域的时候,LSA-3是能够把ASBR所在网段宣告到其他区域的,那为什么不能使得LSA-5合法?

解决疑问:首先我们来看下LSA-5的内容

Routing Bit Set on this LSA

  LS age: 32

  Options: (No TOS-capability, DC)

  LS Type: AS External Link

  Link State ID: 10.0.0.0 (External Network Number )

  Advertising Router: 2.2.2.2

  LS Seq Number: 80000001

  Checksum: 0x2965

  Length: 36

  Network Mask: /24

        Metric Type: 2 (Larger than any link state path)

        TOS: 0

        Metric: 20

        Forward Address: 0.0.0.0

        External Route Tag: 0

我们会发现,关键问题在于,接收路由器是否可达router-id2.2.2.2ASBR路由器。而LSA-3仅仅只是包含了网段信息而已,而接收路由器显然无法得知到router-id2.2.2.2ASBR路由器应该如何走,所以LSA-5将会由于宣告路由器不可达而认为不合法。

LSA-4就很好的解决了这个问题,其具体内容如下:

Routing Bit Set on this LSA

  LS age: 18

  Options: (No TOS-capability, DC, Upward)

  LS Type: Summary Links(AS Boundary Router)

  Link State ID: 3.3.3.3 (AS Boundary Router address)

  Advertising Router: 2.2.2.2

  LS Seq Number: 80000001

  Checksum: 0x37B0

  Length: 28

  Network Mask: /0

        TOS: 0  Metric: 64

因为LSA-4是由ABR路由器产生的,所以这实际上就是告诉区域内路由器,通过我可到达router-id2.2.2.2ASBR路由器。

LSA-5

LSA-5的特性是能在整个OSPF域内泛洪,因此在“被分割的Area0的实验拓扑中,LSA-5使能够穿越非骨干区域进行泛洪的。

LSA-5实例如下:

Routing Bit Set on this LSA

  LS age: 97

  Options: (No TOS-capability, DC)

  LS Type: AS External Link

  Link State ID: 10.0.0.0(External Network Number )

  Advertising Router: 5.5.5.5

  LS Seq Number: 80000001

  Checksum: 0x6A0E

  Length: 36

  Network Mask: /32

        Metric Type: 2 (Larger than any link state path)

        TOS: 0

        Metric: 20

        Forward Address: 0.0.0.0

        External Route Tag: 0

 

 

提出疑问:既然LSA-5能在整个OSPF域内泛洪,那在么在如下所示的拓扑图中,A 0引入了1.1.1.0/24这个网段,那么在如下拓扑图所示的环境下,是否会造成LSA-5在整个OSPF域内循环泛洪?

 

 

 

 

 

解决疑问:我们首先来做这样一个假设,1.1.1.0先到达A1后到达A2A1会迅速的向A2方向的端口(这里为了简化讨论,假设每个区域都只有一台路由器,且每台路由器都只有两个端口,分别连接着另外连个区域)建立一个泛洪列表,并发送给A2,而此时A2也接收到了来自A0的信息,而由于相对于A0而言,A1发过来的信息是陈旧的,所以A2不会再继续向A0泛洪此信息,因此不会形成环路,其他情况亦可类似分析,均不会有环路的产生。

注意:路由器从始发路由器收到了一条陈旧的LSA后,并不会反过来向始发路由器发送一条关于此LSA的最新描述,只有在这种情况下:路由器从始发路由器收到了一条LSA,此LSA的头部信息与自身数据库中的某条LSA的头部信息相同,但是序号更小,且LSA的具体内容不同(如果内容相同将不理睬)。此时路由器会认为始发路由器关于此LSA的信息是错误的,于是会将自身数据库中的该条LSA拷贝一份,发送给始发路由器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值