链路-状态更新报文用于把L S A发送给它的相邻节点。这些更新报文是用于对L S A请求的应答。有5种不同的L S A报文类型。这些报文类型用从1到5的类型号标识。
注重由于O S P F通常把链路-状态广播看作L S A,因此会存在潜在的混淆。然而,实际上用于更新路由表的机制为链路-状态更新报文—简记为L S U。还有另一个报文结构,链路-状态应答报文,简写为L S A;由于一些不可知的原因,这种报文称为链路-状态应答,而LSA通常是指更新报文。
这些报文类型及其L S A号,如下所述:
·Rauter LSA (路由器L S A ) (类型1 )—路由器L S A描述了路由器链路到区的状态和耗费。所有这样的链路必须在一个L S A报文中进行描述。同时,路由器必须为它属于的每个区产生一个路由器L S A。所以,区边界路由器将产生多个路由器L S A,而区内的路由器只
需产生一个这样的更新。
·Network LSA (网络L S A ) (类型2 )—网络L S A与路由器L S A相似,它描述的是连接进网络的所有路由器的链路状态和耗费信息。二者的区别是网络L S A是网络中所有链路-状态和耗费信息的总和。只有网络的指定路由器记录这个信息,并由它来产生网络L S A。
·Summary LSA-IP Network (汇总L S A - I P网络) (类型3 )—使用汇总L S A - I P这个名字有些不灵活,因此O S P F的设计者采用了编号策略来记L S A!只有O S P F网络中的区边界路由器能产生这种L S A类型。使用这种L S A类型把一个区的汇总路由信息和O S P F网络中相邻区路由器信息进行交换。它经常汇总缺省的路由而不是传播汇总的O S P F信息至其他网络。
·Summary LSA-Autonomous System Boundary Router(汇总L S A -自治系统边界路由器) (类型4 )—类型4与类型3 LSA的关系密切。二者的区别是类型3描述区内路由,而类型4描述的是O S P F网络之外的路由。
·S -外部L S A (类型5 )—第5个L S A是自治系统外部L S A。正如其名,这种L S A用于描述O S P F网络之外的目的地。这些目的地可以是特定主机或是外部网络地址。作为和外部自治系统相联系的ASBR OSPF节点负责把外部路由信息在它属于的整个区中传播。
这些L S A类型用于描述O S P F路由域的不同方面,它们直接寻址到O S P F区中的每一个路由器并同时传输。这样的洪泛确保O S P F区中的所有路由器关于网络的5个不同方面( L S A类型)有一样的信息。路由器完整的L S A数据存储在链路-状态数据库中。当D i j k s t r a算法应用于这些数据库的内容时会得到O S P F路由表。表和数据库的区别是数据库含有原始数据的完整集合,而路由表包含通过特定路由器接口到已知目的地的最短路径列表。
不必研究每种L S A类型的结构,只需研究它们的头就足够了。
1. LSA头
所有的L S A使用一个通用的头格式。这个头2 0字节长并附加于标准的2 4字节O S P F头后面。L S A头惟一地标识了每种L S A。所以,它包括关于L S A类型、链路-状态I D及通告路由器I D的信息。下面是L S A头域:
·L S年龄—L S A头中的前两个字节包含L S A的年龄。这个年龄是自从L S A产生时已消逝的时间秒数。
·O S P F选项—下面的字节由一系列标志组成,这些标志标识了O S P F网络能提供的各种可选的服务。
·L S类型—1字节L S类型指出5种L S A类型中的一种。每种L S A类型的格式是不同的。因此,指出何种类型的数据附加在头后面必不可少。
·链路-状态I D—链路-状态I D域4字节长用于指明L S A描述的特定网络环境区域。这个域与前面提及的L S类型域关系紧密。实际上,这个域的内容直接依靠于L S类型。比如,在路由器L S A中,链路-状态I D包含产生了这个报文的O S P F路由器I D——通告路由器I D。
·S顺序号—O S P F路由器会递增每个L S A报文的序列号。所以,接收到两个相同L S A事例的路由器有两种选择来决定哪一个是最新的报文, L S顺序号域4字节长。检查这个域可以确定L S A在网络中已传输了多久。从理论上讲,一个新的L S A年龄比一个老的L S A年龄大是有可能的,非凡是在大型复杂的O S P F网络中。所以,接收路由器比较L S顺序号。大号的L S A是最新生成的,这种机制不会因动态路由的变迁而受到损坏,而应认为其是一种更可靠的确定L S A时间的方法。
·L S校验和—3字节的L S校验和用于检查L S A在传输到目的地的过程中是否受到破坏。校验和采用简单的数学算法。它的输出结果依靠于其输入,并且有高度的一致性。给定相同的输入,校验和算法总是给出相同的输出。L S校验和域使用部分L S A报文内容(包括头,不包括L S年龄和校验和域)来生成校验和值。源节点运行F l e t c h e r算法并把结果存于L S校验和域中。目的节点执行相同的算法并把结果与存储在校验和域中的结果比较,假如两个值不相同,就可以认为报文在传输过程中被破坏。之后,产生一个传输请求。
·LS长度—L S长度域用于通知接收方L S A的长度(以字节为单位),这个域1个字节长。
L S A报文体的剩余部分包含一个L S A的列表。每个L S A描述O S P F网络5个不同方面中的一个。所以,路由器L S A报文会广播区内已知存在的路由器信息。
2. 处理L S A更新
O S P F路由表与其他路由表的本质区别是它的更新并不直接被接收站点所使用。从其他路由器接收到的更新包含“从发送路由器角度看”网络得到的信息。所以,在使用和解释接收到的L S A数据之前必须由D i j k s t r a算法,把它转化为自己本身的信息。
表面上讲, L S A的传输是因为一个路由器检测到了链路状态变化。所以,在接收到任何类型的L S A之后,O S P F路由器必须把L S A的内容和自身路由表的对应部分进行比较。只有通过S P F算法,使用新数据形成新的网络视图之后才能进行比较, S P F算法输出的结果是得到网络的新视图。这些结果与已存在的O S P F路由表相比较,看是否它的路由受到了网络状态变化的影响。
假如由于状态变化必须改变一条或多条路由,就要使用新的信息建造一个新的路由表。
3. 复制L S A
考虑到L S A在整个O S P F区内洪泛,就有可能同时存在多个相同L S A类型的事例。因此,O S P F网络的稳定性要求路由器能够识别多个L S A中的最新者。收到两个或多个相同L S A类型的路由器会检查L S A头中的L S年龄、L S顺序号以及L S校验和域。只有包含在最新L S A中的信息才被接受,并且要经过前面一节中描述的处理过程。