OSPF之各类LSA
在AS内的每台路由器,都会根据路由器的分类产生一种或者多种LSA。收到LSA的集合形成了LSDB。OSPF中对路由信息的描述都是封装在LSA中发布出去的。LSA有6种,Router-LSA、Network-LSA、Network-Summary LSA、ASBR-Summary-LSA、AS-External-LSA和NSSA-External-LSA。
如图1-1是LSA的头部信息。
LSage:16位,LSA产生后经过的时间,s为单位。默认情况下泛洪时每经过一台路由器Age增加1。
lOption:E、MC及DC位同OSPF头部选项位一致,此处N/P位表示能处理Type-7 LSA:P通告位,代表置了该位的LSA7可以被7/5转换器翻译成为LSA5.
lLS Type:代表不同LSA类型
lLink State ID:与LSA中的LS Type和Advertising Router一起用来在OSPF中唯一标识一个LSA。
lAdvertising Router:记录产生此LSA的路由器的Router ID。
lLS sequence number:32位LSA的序列号。序列号越大代表该LSA越新,其他路由器根据这个值可以判断哪个LSA是最新的。
lLS checksum:除了LS age外其他域的校验和。可用于校验LSA的内容及判断LSA是否最新。
lLength:16位,LSA的总长度,包括LSA Header。
判断LSA新旧的方法:
1、比较Sequence序列号,一共32bit,线性增加越大越优。
2、如果序列号一致,比较Checksum校验和越大越优。
3、如果校验和一致,比较LSA Age,如果差额小于等于15min,则认为一致,不进行更新,如果差额大于15min,age越小越优。
LSA三要素:
LSA类型
链路状态ID
通告路由器的RouterID
1、类型1--LSA-------Router-LSA
每台路由器都会产生,描述自身拓扑信息、路由信息、设备角色信息。
lFlages:V若置位,代表Vlink endpoint;B若置位,代表ABR,E若置位代表是ASBR.
lNumber of Links:Link的数量,代表OSPF画出的有向图上Link的数量,而非物理路由器接口的数量。
1.1 Link类型及描述
OSPF定义了4中类型Link,路由器接口OSPF网络类型不同,产生的Link也不同,路由器把所有接口的Link放到RouterLSA中在区域内泛洪。
Type | 描述 | LinkID | LinkData |
Point-to-Point | 点到点类型链路 | 邻居路由器的RID | 自己接口的IP地址 |
TransNetwork | MA网络类型链路 | DR的接口IP地址 | 自己接口IP地址 |
StubNetwork | 末节类型链路(网络) | 网络号 | 网络掩码 |
Virtual Link | 虚拟点到点链路 | Vlink对端ABR的RID | 本地Vlink的IP地址 |
2、类型2---LSA--------network-lsa
LSA2是由MA网络上的DR路由器产生的,使用DR接口IP地址作为LSA2的Link State ID。相比于LSA1是由实节点产生并描述实节点的周边的链接关系和网络,LSA2是由DR为虚节点产生,描述虚节点周边的连接关系和网络信息。
lNetmask:和Link State ID执行“与”运算,得出LSA2所代表的的网络号。
lAttached Router:连接到本网络的所有邻居路由器的RouterID。
二类LSA能够通过伪节点的引入简化拓扑计算,借助子网掩码和DR地址计算MA网络路由信息,不需要每台参与一类LSA重复计算。
3、类型3---LSA--------summary-lsa
3.1 多区域部署----------从骨干区域0开始,如何避免防环。
OSPF定义四种区域类型:骨干区域、普通区域、Stub区域及NSSA区域。
骨干区域有且只有一个,所有其他区域必须同骨干区域相连,如果没有连接到骨干区域,将不会学习到其他区域路由,OSPF中所有区域间路由必须经骨干区域传递。其他区域若没有连接到骨干区域,要用Vlink连接到骨干区域。
骨干区域不能被分割,一旦分割,必须使用Vlink连接分割的骨干区域使之连续。也可以使用GRE隧道链接。
1、为了避免环路的产生,不允许非ABR产生LSA3。
ABR定义:至少有一个接口连接在Area0且在Area0中有邻居的路由器称为ABR。
2、ABR从非骨干区域学习到三类LSA,不用于路由计算(ABR在区域0有活跃邻居,才是真正意义上的ABR)。
3.2 LSA特性
(1)边界路由器ABR为区域内的每条OSPF路由各产生一份LSA3并向其他区域通告。
(2)边界若有多个ABR,则每个ABR都产生LSA3来通告区域间路由。图中R2和R3是Area0和Area2的ABR,两个ABR都产生LSA3通告路由进入Area2,所以在Area2中每条区域间路由在LSDB中都有两份LSA3,分别由两个ABR产生。这两份LSA3通过Adveritsing Router字段来区分。
(3)区域间传递的是路由,LSA3是由每个区域的ABR产生的、并仅在该区域内泛洪的一类LSA。路由进入其他区域后,再由该区域的ABR产生LSA3继续泛洪。
(4)OSPF在区域边界上具备矢量特性,只有出现在ABR路由表里的路由才会被通告给邻居区域。
(5)计算路由时,路由器计算自己区域内到ABR的成本加上LSA3传递的区域间成本,得到的是当前路由器到目标网络端到端的成本。
(6)如果ABR路由器上路由表中的某条OSPF路由不再可达,则ABR会立即产生一份Age为3600s的LSA向区域内泛洪,用于在区域内撤销该网络。
3.2 区域间路由计算示例分析
OSPF区域之间是通过Type3的LSA来交换路由信息的,这类LSA不携带拓扑信息,结构简单。
如图3-1所示为区域路由计算试验拓扑图,在R3上查看LSDB信息
lLS id:网络号
lAdv rtr:产生LSA3的路由器router id(ABR)
lNet mask子网掩码
lMetric:开销值(为ABR到目标网段的最小开销值。)
R2在这个网络中属于ABR,R3会收到R2产生的LSA3,R2上产生的LSA3开销值为48。当R3要访问24.1.1.0/24网段时,R3做路由计算,把ABR产生的LSA3的路由当做叶子路由,所以Area0中R3计算去往24.1.1.0/24网段的开销值为1+48=49.下一跳为R2.
结论:
R1计算其他区域的LSA3路由,是把LSA3路由直接挂在通告路由器ABR上,当成ABR节点上的叶子节点,所以区域间路由的任何变化,如成本变化或者路由出现、消失都是ABR节点上所挂的叶子节点的变化,并没有影响到Area0内SPF树形的变化。仅叶子节点的变化所引起的计算称为PRC(Partial Route Calculate),这种变化对网络的影响较小。
4 Area分类及特殊类型
4.1 Area分类
Area类型分为四种,普通区域、骨干区域、Stub区域及NSSA区域。骨干区域只有一个,Area0,其他区域连接该骨干区域。在其他区域间传递路由和数据。
普通区域,Area号不等于0,承载Vlink,是最通用的区域,它传递区域内路由,区域间路由和外部路由。
Stub是一类特殊的区域,这个区域LSA4/5不能接收。访问OSPF外部网络仅能通过ABR,所有流量及路由通过ABR进入Stub区域。
Stub区域有一个变体,Totally Stub区域,比Stub区域添加了对区域间LSA3的过滤,Stub区域仅可通过ABR访问区域外任何目的地,不支持Vlink。
NSSA区域可以有LSA7,可以有ASBR,访问任何外部OSPF区域可以通过本区域ASBR,也可以通过ABR访问。
Totally NSSA在上述机制的基础上,在ABR上过滤区域间LSA3.
表中列出了各种特殊类型区域内产生的LSA及区域的配置命令。图中同样列出了特殊区域和普通区域内可能有的各种LSA。图中,Area5是普通区域,其他非0区域是特殊类型区域。
特殊区域 | Stub | Totally Stub | NSSA | Totally NSSA |
区域中LSA类型 | LSA1/2/3 ABR产生LSA3(0.0.0.0) | LSA1/2 ABR产生LSA3(0.0.0.0) | LSA 1/2/3/7 ABR(ASBR)产生LSA7(0.0.0.0) | LSA 1/2/7 LSA3(0.0.0.0)ABR(ASBR)产生LSA7(0.0.0.0) |
ABR/ASBR | 区域内不允许ASBR | 区域内不允许ASBR | 区域内允许部署ASBR区域边界路由是ABR也是ASBR | 区域内允许部署ASBR区域边界路由是 |
配置命令 | Area Stub | Area Stub no-summary | Area nssa | Area Nssa no-summary |
4.2 Stub区域
Stub区域是一些特定的区域,Stub区域的ABR不传播他们接受到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量会大大减少。
Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,Stub区域位于自治系统的边界,是呢些只有一个ABR的非骨干区域。
为保证到自治系统外的路由依然可达,该区域的ABR将生成一条默认路由,并发布给Stub区域中的其他非ABR路由器。
配置Stub区域时需要注意下列几点。
l骨干区域不能配置成Stub区域。
l如果要将一个区域配置成Stub区域,则该区域中的所有路由器都要配置Stub区域属性。
lStub区域内不能存在ASBR,即自治系统外部的路由不能再本区域内传播。
l虚连接不能穿过Stub区域。
4.3 NSSA区域
NSSA区域是OSPF特殊的区域类型。NSSA区域与Stub区域有许多相似的地方,两者都不传播来自OSPF网络其他区域的外部路由。差别在于Stub区域不能引入外部路由,NSSA区域能够将OSPF外部路由引入并传播到整个OSPF中。
当区域配置为NSSA区域后,为保证到自治系统外的路由可达,NSSA区域的ABR将自动生成一条默认路由(LSA7的默认路由),并发布给NSSA区域中的其他路由器。NSSA的其他内容参考后面的LSA7介绍。
配置NSSA区域时需要注意下列几点。
l骨干区域不能配置成NSSA区域。
l如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都要配置NSSA。
l虚连接不能穿过NSSA区域。
5、LSA4和LSA5
5.1 LSA4
LSA4像LSA3一样都是由ABR产生的、并在Area内泛洪的一类LSA。LAS4和LSA3使用相同的报文格式,区别是Type字域是4,Link State ID字域是ASBR路由器的Router ID,LSA4的内容是ASBR到ABR的开销值。
5.2 LSA5
lLs id:引入的外部的网络号
lAdv rtr:Advertising Router,产生的LSA5的路由器的RouterID。
lNet mask:引入的外部路由的掩码。
lForwarding Address:可以是0.0.0.0,也可以是非0,如果是0.0.0.0,访问外部网络的报文转发给ASBR,如果是非0,报文转发给该非0地址。
lTag:用于标记外部路由的标签,在路由引入时配置给外部路由,默认是1.
lMetric:ASBR到外部网络的成本。
lEtype:Metric-type可以是1,也可以是2,默认是2,默认是2。Type和Type2的区别在路由表中可以看出来,Type2路由仅考虑外部成本,Type1路由考虑的是端到端的成本(内外成本之和)。Type1和Type2的另外一个区别是在外部路由的选路上的差别。
5.2.1 LSA5作用
LSA5区别于LSA3/LSA4,LSA5仅负责通告OSPF路由域外其他协议的路由,RIP、BGP等。引入到OSPF后,这些外部路由靠LSA5将其泛洪到OSPF路由域。
LSA5具有其他LSA所没有的泛洪范围,LSA5能够泛洪到所有Area,除了特殊类型区域(Stub及NSSA)。图中,LSA5由R1产生,在区域间泛洪至Area2,泛洪期间仅Age会增加,其他都没有变化。
LSA5作用是除了向路由域中路由器通告外部路由外,还告知其他路由器如何访问该外部网络。根据LSA5中的FA地址决定访问外部网络是经过ASBR还是经过拥有FA地址的路由器。
5.3 FA地址的作用
仅仅出现在LSA5或LSA7中,它是数据包访问外部网络时,在数据报文离开OSPF路由域时必须经过的设备地址。
LSA5携带外部路由,该外部路由一定要出现在路由表中,数据包才能访问到外部目的地。
l如果FA=0,数据包经过ASBR访问外部网络。如果FA!=0,数据包要转发至拥有FA地址的路由设备,再由其转发到外部网络。
在华为设备中,如果FA=0,LSA要判断如何到ASBR,继而决定该外部路由能否进IP路由表。如果ASBR在其他区域,则依赖LSA4来决定如何到达ASBR。如果ASBR在当前区域,则依赖于LSA1/LSA2计算到ASBR的路径。
l如果FA!=0,则要根据OSPF路由表中是否有FA地址所对应的路由来判断可达性。若不可达,则该外部路由不进IP路由表。
5.3.1 场景一:Forwarding Address是0的场景
图中,R1和R3处在两个AS中,R1和R3都运行BGP协议,AS200向AS100通告100.1.1.0/24的BGP路由。如果红标处的接口没有宣告进OSPF那么,该接口所在的网段在OSPF中就不可达FA地址便为0。
5.3.2场景二:Forwarding Address是非0的场景
如果该外部路由的下一跳地址所在的网段的接口发布到OSPF中,那么FA地址便不为零,而是对应的下一跳地址。
5.3.3 总结:如果满足一下四个规则那么FA地址不为0.
1.该外部路由的下一跳地址所在的网段的接口要发布到OSPF中。
2.该外部路由的下一跳地址所在的网段的接口没有被设置成silent接口。
3.下一跳地址所在网段的接口OSPF网络类型不是Point-to-point网络类型。
4.下一跳地址所在网段的接口OSPF网络类型不是Point-to-Multipoint网络类型。
当FA地址不为0,只要Display OSPF Routing中能看到FA地址所对应的路由,则:
l该外部路由能进入路由表。
l访问该外部网络的数据将根据FA路由来转发。
l当前路由器在OSPF路由域中的成本是根据该FA路由计算出来的。
lFA地址所对应路由一定要是OSPF 区域内或者区域间路由,FA路由不能是其他外部路由,
LSA5不会靠OSPF外部路由和非OSPF协议路由决定FA地址的可达性。
当FA地址为0,外部路由是否要进入路由表要依赖于产生通告LSA5的通告路由器ASBR是否可达。
6、NSSA区域及LSA7
NSSA区域中可以部署ASBR,并引入外部路由,不需要经过Area0访问外部网络。
6.1 NSSA ABR = ASBR
NSSA区域连接骨干区域,其他区域边界路由器是ABR,同时也是ASBR。华为NSSA区域边界路由器默认向NSSA区域内泛洪LSA7默认路由。
6.2 NSSA区域边界路由器ABR的特性。
lABR在Area1和Area0间传递区域建立区域间路由。
lLSA7(置P位)经ABR7/5翻译后,产生LSA5泛洪到Area0及其他区域。
l默认情况下,向NSSA区域通告LSA7默认路由。
l如果区域类型为Totally NSSA,ABR也可以向NSSA区域产生LSA3的默认路由。
2.LSA7作用
lType7LSA是为了支持NSSA区域而新增的一种LSA类型,用于通告引入的外部路由信息。
lType7 LSA由NSSA区域的自治边界路由器ASBR产生,其扩散范围仅限于ASBR所在的NSSA区域。
lNSSA区域的区域边界路由器(ABR)收到Type7 LSA时,会有选择地将其转化为Type5 LSA,以便将外部路由信息通告到OSPF网络的其他区域。
lLSA5/LSA4不会流入NSSA区域,所以Area1的ABR会各自注入LSA7的默认路由到Area1,这样区域内路由器可以通过默认路由访问外部网络,ABR同时也是ASBR。
lLSA7的FA一定要为非0,用于在区域间选路。
说明:
FA的构成。
需要强调的一点是LSA7的FA地址和LSA5的FA内容上有如下区别。
LSA5的FA可以是0和非0量种情况。
LSA7的FA值如下。
(1)在NSSA区域边界路由器上引入外部路由,产生LSA7,其FA地址为0。协议规定FA=0的LSA7的路由是不会被通告到骨干区域的。
(2)FA不为0的情况。在NSSA中,ASBR引入的外部路由,除上面特例外,都是非0LSA5的4条规则同样使用LSA7.
l如果满足4条规则,FA!=0,地址是ASBR上外部路由的下一跳地址。
l如果不满足某条规则,FA!=0,地址是ASBR上某个接口IP地址,优选回环接口地址,如果没有回环接口,则使用物理接口地址。
6.3 LSA7翻译
在Area1中LSA7作用和LSA5一致,有相同的格式,包括外部路由及掩码、Forwarding-Address Tag、Cost-Type及Cost。
LSA7与LSA5的不同之处。
lLSA7仅在NSSA区域里泛洪;
lLSA7的FA为非0;如果为0,则不会被ABR翻译为LSA5。
l外部路由在NSSA区域里使用LSA7来传递,在其他区域由LSA5来传递,ABR负责做7/5翻译。
lLSA7中选项位P-bit用于告知翻译路由器该条Type7 LSA是否需要翻译。
l缺省情况下,转换路由器是NSSA区域中Router ID最大的区域边界路由器。
l只有P-bit置位并且FA地址不为0的Type7LSA才能转化为Type5 LSA。
l若在ABR上引入外部路由,产生的Type7 LS不会置P-bit,所以不会再被通告到Area0.4
nssa translator-always 可以指定7/5转换器。
nssa suppress-forwarding-address命令可以指定在7/5转换器翻译时,修改默认的FA地址为0。
nssa default-route-advertise可以指定ABR或任何NSSA区域中路由器产生LSA7默认路由。