OSPF LSA分析详解.docx
- 文档编号:24050158
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:30
- 大小:402.36KB
OSPF LSA分析详解.docx
《OSPF LSA分析详解.docx》由会员分享,可在线阅读,更多相关《OSPF LSA分析详解.docx(30页珍藏版)》请在冰豆网上搜索。
OSPFLSA分析详解
LSA是LSDB建立的基础。
每条LSA都包含序列号,校验和以及老化时间。
一台路由器始发一个LSA,之后每产生一个该LSA的拷贝就在序列号上加1,序列号从0x80000001到0x7fffffff(不用考虑8和7的大小),数值越大视为越新。
LSA存放在LSDB中每5mins就会进行一次校验,以确保该LSA没有损坏。
一条LSA的老化时间为1h,始发路由器发出一条LSA时会将其时间设置为0,每经过一台路由器就增加一个由InfTransDelay设定的秒数(Cisco路由器上默认为1),当LSA在LSDB中驻留时,老化时间也会逐渐增大。
当一条LSA在LSDB中一直没有被新的LSA实例刷新直到老化计时器超时,就会从本地的LSDB中清除,但是这个动作不会影响到别的路由器,在OSPF网络中只有始发路由器能够提前使该LSA老化,即有意识的清除该LSA,具体动作是将该LSA的老化时间设为最大然后重新泛洪出去。
LSA的刷新时间是30mins,关于刷新机制是个值得关注的问题。
如果每个LSA都关联一个独自的重刷新计时器,这样会使链路带宽的利用没有效率,如果统一为一个计时器,那么每隔30mins都会产生一个流量和CPU利用率的高峰。
作为折衷的的解法,引入LSA组步调机制,即每一条LSA依然保持各自的重刷新计时器,不过在超时的时候,会引入一个时延(缺省为240s)来推迟这些LSA通告泛洪的时间,并在这个时间段内将更多的LSA通告编为一组,使一个LSU可以携带更多的LSA再通告出去。
如果LSDB非常大,那么减小这个时延会比较好,而如果LSDB较小的话,增大这个时延会更有效率,该组步调计时器的范围从10到1800s。
每一个LSA都必须要得到接收路由器的确认,确认分为显式确认和隐式确认两种,显示确认就是用LSAck给予回应,LSAck中只含有该LSA的头部,因为这样就足够了;而隐式确认是发送包含该LSA拷贝的数据包给始发路由器,当邻居路由器收到该LSA,又刚好要向始发路由器发送自己的LSU的时候,隐式确认就显得很方便。
在OSPF的Hello,DBD和LSA中都有一个Option字段,即可选字段。
下面重点说一下LSA中的一些位:
DN位,用于基于MPLS的三层VPN技术。
当一条路由通过OSPF从某个客户网络学到,就会穿过使用多协议BGP的VPN被通告到网络对端,接着再通过OSPF被通告回客户网络。
通告回的OSPF网络会被重新分配到VPN运营商网络,这样就产生环路。
而DN位就是用来避免环路,当LSA3&5&7设置了DN位后,接收路由器就不能用该LSA进行SPF计算。
O位,用来表明始发路由器支持OpaqueLSA,即LSA9&10&11,可用做MPLS网络应用的流量工程参数。
N位,设置N-bit=1,表明该LSA支持NSSA外部路由,即为LSA7,N-bit=0则不支持。
需要注意的是如果N-bit=1,那么E-bit必须为0。
E位,设置E-bit=0,表明该LSA始发于Stub区域路由器,如果是NSSA区域该位也设为0,其他类型区域始发的LSA都设置E-bit=1,另外可以在Hello中设置该位表明这个接口能接受和发送LSA5,形成邻居时会检查该字段看对端接口是否属于相同类型的区域。
P位,P位和N位在同一字段内,如果该字段选择设置P-bit,可以告诉一个NSSA中的ABR将LSA7转换为LSA5,即将P-bit位从1设置为0。
LSA类型
LSA1:
RouterLSA,始发于Area内的任何路由器。
LSA1列出了路由器的链路和接口,链路的出站Cost以及接口状态。
LSA1只在本Area内Flooding,本Area内其它路由器收到LSA1形成的路由条目以“O”表示。
简单来讲,LSA1描述自身的直连信息。
LSA2:
NetworkLSA,本Area内DR始发。
LSA2通告的对象:
该LAN内所有的DRother和Area内的其他路由器(一个Area里面可能还有其他链路,比如点到点,或者另一个LAN,他们作为Area成员需要知道该LAN的信息)。
LSA2通告的内容:
该LAN内所有和DR形成Full邻接关系的路由器的Router-id以及DR本身的Router-id,再就是该LAN的网络掩码(LAN中的各接口掩码肯定是一样的,否则无法形成OSPF邻居)。
LSA2只在本Area内Flooding。
Attention:
就字段分析,LSA1的重点在于链路ID和链路数据,针对不同的链路类型有不同的内容,而LSA2本身是广播型链路的产物,重点在于和DR相连的路由器ID以及该广播型链路的网络掩码。
路由器在SPF运算时,使用LSA1确定如何到达此LAN内的各个接口,使用LSA2确定此LAN的网络掩码。
这就是LSA2要求被泛洪到整个Area的原因,也是LSA2最大的一个作用。
LSA1通告的链路类型 链路ID 链路数据
1我连着点到点链路 邻居路由器的ID 与其直连所用的本端接口IP地址
2我连着传送网络 这个网络DR的地址 我和DR相连的那个接口的IP地址
3 我连着末节网络 这个网段的地址 这个网段的子网掩码
4我连着一条虚链路 虚链路对端的路由器ID 我的虚链路接口的MIB-IIifIndex
这里所说的传送网络在实际中就是广播型链路,而末节网络可能是所连的点到点链路,一个环回口代表的网段,或者一个实际连接的主机子网段。
而MIB-IIifindex就是虚链路所依托的实际链路的入口IP地址,虚链路的建立是在两台ABR之间选择一条Cost最低的路径。
Eg:
(Lo0:
1.1.1.1)R1-.1----12.1.1.0----.2-R2(Lo0:
2,2.2.2)
R1会向R2通告一个LSA1,其中包含3条自己有关的链路:
1.AStubNetwork,LinkID=1.1.1.1&LinkData=255.255.255.255
R1认为学到一个末节网络(实际是通过Lo0模拟的主机地址)
2.AnotherRouter(Point-to-Point),LinkID=2.2.2.2&LinkData=12.1.1.1
R1认为自己通过点到点链路连着另一个Router,它的ID是2.2.2.2,R1通过12.1.1.1这个接口和它相连。
3.AStubNetwork,LinkID=12.1.1.0&LinkData=255.255.255.0
R1认为自己学到一个末节网络(实际是一条点到点的链路)
LSA3:
NetworkSummaryLSA,ABR始发。
LSA3通告的是ABR相连Area的链路信息,具体来讲就是将自己Area内的链路告诉Area0,也将其他Area(包括Area0)的信息传到自己的Area。
其通告的链路是所有链路中Cost最小的,在路由表中以“OIA”表示。
如果LSA3通告的是一条缺省路由,那么链路状态ID和网络掩码字段中都将设为0.0.0.0。
Attention:
如果在OSPF中执行了Area间汇总,那么LSA3中通告的就是汇总路由而不是明细的,其实这里就应该说成是“路由”而不是“链路”,因为LSA3本身通告的就是各网络如何可达,接收路由器并不明了该Area的拓扑结构,只是以DV的思想,将LSA3中通告的链路加上自己到ABR(即ADVRouter)的开销就放进路由表了。
LSA4:
ASBRSummaryLSA,ABR始发。
LSA4通告了ASBR的具体位置,是一条到达ASBR的主机路由。
LSA3和LSA4都由ABR始发,报文格式是相同的,只不过有几处字段内容不一样。
在“链路状态ID”这个字段中,LSA3通告的是网络或子网的IP地址,而LSA4通告的是ASBR的路由器ID;而“网络掩码字段”对LSA4没什么意义,设置为0.0.0.0。
一台Router成为ABR的前提是必须有运行OSPF进程的接口与Area0直连,否则不会产生LSA3和LSA4,也就无法完成ABR的任务,解决办法一般是通过虚链路。
Attention:
LSA3和LSA4都只能在单Area内泛洪。
具体来看,LSA4就是在Area0内泛洪让ABR都知道ASBR在哪;而LSA3这里要注意,比如Area1的ABR将Area1的路由信息通告进Area0,该LSA3仅在Area0内泛洪,Area2会收到这个LSA3,但不是将其直接发送到Area2,而是新生成一个LSA3,因为不仅要加上自己到那个ABR的链路开销,而且ADVRouter也要改为自己,新的LSA3会进入到Area2并泛洪开来,所以还是遵守了LSA3的泛洪原则。
从一个侧面也可以看出,OSPF进行Area间路由是典型的距离矢量的行为。
LSA5:
ASExternalLSA,ASBR始发。
LSA5通告了与ASBR直连的其它AS的路由信息,不同于BGP中AS的概念,这里指IGP区域。
LSA5被Flooding至除Stub,TotalStub,,NSSA以外的所有Area,是唯一的一个不与任何Area相关联的LSA通告。
LSA5形成的路由条目以E1或E2表示(默认为E2),可以通过命令改为E1类型redistributeigpsubnetsmetric-type1。
E2Cost=ASBR到AS外部目的网络的Cost
E1Cost=本地到ASBR的Cost+ASBR到AS外部目的网络的Cost。
Attention:
当OSPF路由器获得一条LSA5,在装进路由表之前会检查“转发地址”是否可以通过Area内或Area间路由到达,若不可达,不会装进路由表。
LSA7:
NSSAExternalLSA,由NSSA区域的ASBR始发。
该LSA内容和LSA5基本一样(只有转发地址字段不同),关键是LSA7只在始发该LSA的NSSA区域内Flooding,并在ABR转换成LSA5,LSA7形成的路由条目以N1或N2表示。
事实上LSA7和LSA5内容一样,只不过泛洪区域有限制所以要标记一下,而且是可以相互转换的。
在NSSA区域中,ASBR将外部路由信息封装进LSA,设置其P-Bit位为1,使其在NSSA区域里泛洪。
在ABR那里会将P-Bit位改为0,由LSA7转换为LSA5,再传到OSPF其他的Area。
同样的,如果有别的Area通告进来的外部路由要注入到这个NSSA区域中,在该NSSA区域的ABR那里会将LSA5转换为LSA7。
OSPF区域
OSPF特殊区域类型有四种:
Stub,TotalStub ,NSSA和TotalNSSA。
其本质都是“LSA精简的Area”。
当一个Area被定义为Stub区域时,该Area内的路由器所发送的hello数据包都会将E-Bit位设为0,而普通区域的应该是1,所以区域内的所有路由器都敲入area1stub这样的命令才能正常形成邻接关系。
LSA的精简决定了Stub区域在接收LSA时会有所取舍,但对本Area信息的向外通告不会有任何影响,因此别的Area对Stub区域的信息是完全了解的。
像是要成为TotalStub区域只需要在ABR上加上关键字no-summary,因为阻止的是ABR向Stub区域内发送LSA3。
Stub区域中不通告AS外部路由,也无法实现重发布,但是有OSPFArea内和Area间的完整信息,并通过一条默认路由O*IA保持和AS外部的联系,该默认路由通过LSA3学到。
Stub区域设计是出于对该区域路由器性能及路由条目需求的考虑而进行的LSA精简,但不可避免的引起信息不对称,进而出现次优选路。
TotalStub比Stub“末节”得更为彻底,连OSPF Area间的路由也不要,只有本Area的信息。
ABR将默认路由注入TotalStub区域,不仅外部路由要通过它走,Area间的路由也要通过它走,同时ABR会阻止LSA3&5&7在TotalStub区域内泛洪 --除了通告默认路由的那一条LSA3。
普通区域的Router进行Area间的选路原则为:
路由总Cost=本Router到ABR的Cost+ABR到目的网络的开销 Cost最小的路由放进路由表
而设置为TotalStub的区域的Router选路原则为:
路由总Cost=本Router到达ABR的Cost Cost最小的路由放进路由表
NSSA是当Stub区域中存在ASBR时形成的区域,本身Stub不能有AS外部路由,也不能进行重发布,但无奈自己成为了OSPF和其它IGP通信的边界,变得NotSoStubby,于是形成NSSA 区域,在NSSA区域内注入的外部路由以LSA7传递,并在ABR处还原为LSA5。
简单来讲:
NSSA =Stub +ASBR TotalNSSA =TotalStub+ASBR
在Stub,TotalStub ,NSSA和TotalNSSA中只有NSSA不会自动注入默认路由,不过可以用命令实现:
area1nssadefault-information-originate,这样即使是其他Area注入的外部路由也可达,基本上就是cangoanywhere。
如果NSSA区域的ABR同时也是一个ASBR,会将外部路由以LSA7的形式注入到NSSA区域当中,那么针对这种特殊情况可以用命令area1nssano-redistribution来阻止外部路由的注入。
外部路由在NSSA中以LSA7存在,在ABR那里会转换为LSA5向Area0通告,我们可以用命令summary-addressprefixmasknot-advertise针对具体的条目控制LSA转换的过程,如果不用关键字not-advertise这条命令是用来外部路由汇总的,在ASBR上进行。
拓朴结构:
R5(S0/0)-------------------(S0/2)R1(F2/0)-------------------(F2/0)R7
R5#showipospfdatabase
OSPFRouterwithID(5.5.5.5)(ProcessID1)
RouterLinkStates(Area0)
LinkIDADVRouterAgeSeq#ChecksumLinkcount
1.1.1.11.1.1.112180x800000080x00BDD24
5.5.5.55.5.5.511610x800000050x00E9813
7.7.7.77.7.7.713720x800000040x006B752
NetLinkStates(Area0)
LinkIDADVRouterAgeSeq#Checksum
192.168.2.107.7.7.7180x800000010x00AFDB
----------------------------------------------------------------------------------
R5在LSDB中,以自已产生的LSA为根进行查询,生产OSPF路由!
R5#showipospfdatabaseroute5.5.5.5
OSPFRouterwithID(5.5.5.5)(ProcessID1)
RouterLinkStates(Area0)
LSage:
1430
Options:
(NoTOS-capability,DC)
LSType:
RouterLinks
LinkStateID:
5.5.5.5
AdvertisingRouter:
5.5.5.5
LSSeqNumber:
80000005
Checksum:
0xE981
Length:
60
NumberofLinks:
3
Linkconnectedto:
aStubNetwork-----------------直联网段,对产生路由无帮助
(LinkID)Network/subnetnumber:
192.168.1.8
(LinkData)NetworkMask:
255.255.255.252
NumberofTOSmetrics:
0
TOS0Metrics:
64
Linkconnectedto:
aStubNetwork-----------------直联网段,对产生路由无帮助
(LinkID)Network/subnetnumber:
5.5.5.5
(LinkData)NetworkMask:
255.255.255.255
NumberofTOSmetrics:
0
TOS0Metrics:
1
Linkconnectedto:
anotherRouter(point-to-point)
(LinkID)NeighboringRouterID:
1.1.1.1
(LinkData)RouterInterfaceaddress:
192.168.1.10
NumberofTOSmetrics:
0
TOS0Metrics:
64
--------类型是P-T-P,需要跳到LinkID为1.1.1.1的LSA进行递归查询:
R5#showipospfdatabaserou1.1.1.1
OSPFRouterwithID(5.5.5.5)(ProcessID1)
RouterLinkStates(Area0)
LSage:
1619
Options:
(NoTOS-capability,DC)
LSType:
RouterLinks
LinkStateID:
1.1.1.1
AdvertisingRouter:
1.1.1.1
LSSeqNumber:
80000008
Checksum:
0xBDD2
Length:
72
NumberofLinks:
4
Linkconnectedto:
anotherRouter(point-to-point)
(LinkID)NeighboringRouterID:
5.5.5.5
(LinkData)RouterInterfaceaddress:
192.168.1.9
NumberofTOSmetrics:
0
TOS0Metrics:
64
-------这条是R1指向R5的,对R5本身没有意义!
Linkconnectedto:
aStubNetwork-----------------直联网段,对产生路由无帮助
(LinkID)Network/subnetnumber:
192.168.1.8
(LinkData)NetworkMask:
255.255.255.252
NumberofTOSmetrics:
0
TOS0Metrics:
64
Linkconnectedto:
aStubNetwork
(LinkID)Network/subnetnumber:
1.1.1.1
(LinkData)NetworkMask:
255.255.255.255
NumberofTOSmetrics:
0
TOS0Metrics:
1
----------------------------------------------------------------------------------找到第一条有意义的,生成路由,目标网段1.1.1.1,掩码:
255.255.255.255,metric值为64+1=65,下一跳为192.168.1.9(通过showipospfnei得出邻居的接口地址R1的S0/2地址):
R5#showipospfneighbor
NeighborIDPriStateDeadTimeAddressInterface
1.1.1.10FULL/-00:
00:
33192.168.1.9Serial0/0
因此,找到第一条有用的路由:
R5#showiprouteospf
1.0.0.0/32issubnetted,1subnets
O1.1.1.1[110/65]via192.168.1.9,00:
19:
06,Serial0/0
Linkconnectedto:
aTransitNetwork
(LinkID)DesignatedRouteraddress:
192.168.2.10
(LinkData)RouterInterfaceaddress:
192.168.2.9
NumberofTOSmetrics:
0
TOS0Metrics:
1
-------类型是TransitNetwork的,表明连接的是一个多路访问网络,跳到LSID为192.168.2.10的LSA进行递归查询:
R5#showipospfdatabasenetwork
OSPFRouterwithID(5.5.5.5)(ProcessID1)
NetLinkStates(Area0)
RoutingBitSetonthisLSA
(路由选择位,并不是LSA本身的一部分,而是IOS软件中用来作内部网络维护的位。
表示通过这个LSA通告到目的路由是有效的。
因此,当你看到“RoutingBitSetonthisLSA”时,表示到这个目的路由在路由选择表中。
)
LSage:
24
Options:
(NoTOS-capability,DC)
LSType:
NetworkLinks
LinkStateID:
192.168.2.10(addressofDesignatedRouter)
AdvertisingRouter:
7.7.7.7
LSSeqNumber:
80000001
Checksum:
0xAFDB
Length
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OSPF LSA分析详解 LSA 分析 详解