网络通信 频道

研究OSPF数据结构

O S P F是相当复杂的路由协议,有许多性能和稳定性方面增强的特点。因此,O S P F使用大量的数据结构就不是奇怪的现象。每个数据结构或信息类型,用于执行一个特定的任务。所有数据结构共享一个通用头,称为O S P F头。O S P F头长度为2 4字节,包括以下各域:

版本号—分配O S P F头的第一个字节用于标识版本号。当前的版本是2,但是可能会遇到更老的路由器还在运行RFC 11 3 1 版本1。RFC 1247、1 5 8 3、2 1 7 8和2 3 2 8都对O S P F版本2的向后兼容作了规范。因此无需进一步的标识。

类型— 第二个字节指出5 种O S P F 报文类型中哪一种附加在头结构后面。5 种类型( H E L L O、数据库描述、链路-状态请求、链路-状态更新和链路-状态应答)用数字标识。

报文长度—O S P F头中下面两个字节用于通知接收节点报文的总长度。报文总长度包括数据和头。

路由器I D—区中的每个路由器被分配一个惟一的、4字节的标识号。O S P F路由器在发送任何O S P F消息给其他路由器之前,用自己的I D号填充该域。

区I D—头中用4字节标识区号。

校验和—每个O S P F头包括一个2字节的校验和域,用于检查在传输过程中对报文造成的破坏。发送方对每个消息运行数学计算,然后把结果存储在这个域中。接收方对接收到的报文运行相同的算法并把结果与存储在校验和域中的结果进行比较。如果报文无损到达,两个结果应一样;不相同,说明O S P F报文在传输过程中被破坏。接收方会简单地把受损报文丢弃。

认证类型—O S P F能通过认证O S P F信息的发送者来防止会导致假路由信息这样的攻击。两字节的认证类型域标识信息中使用的各种认证形式。

认证—头中剩下的9个字节携带的是认证数据,接收方利用此信息来确定信息的发送者。O S P F允许网络管理员使用各种级别的认证:从无认证,到简单认证,到最强大的M D认证,基本结构中包含O S P F节点所需的用于决定报文是否应接收并作进一步处理,

一点)及没有通过认证的报文会被丢弃。O S P F使用5种不同的报文类型。每种类型用于支持不同的,专门的网络功能。这5种类型是:

HELLO报文(类型1 )。

数据库描述报文(类型2 )。

链路-状态请求报文(类型3 )。

链路-状态更新报文(类型4 )。

链路-状态应答报文(类型5 )。这5种报文类型有时用编号指明,而不是用名字。所以,O S P F类型5报文实际上是指链路-状态应答报文。所有这些报文类型使用O S P F头。注意5种基本的O S P F数据结构用5个纯粹的数表示,对这些结构和大小的详细讨论超出了本章的范围。相反,这一章仅限于讨论这些数据类型的目的和使用。

3.1 HELLO报文

O S P F包含一个用于建立和维护相邻站点之间关系的协议( H E L L O协议)。这些关系称为连接性。连接性是O S P F交换路由数据的基础。

通过这个协议和报文类型,O S P F节点能发现区中的其他O S P F节点。它的名字表明了其含义,H E L L O协议在可能的相邻路由器之间建立通信。H E L L O协议使用特别的子报文结构,这个结构附加到标准2 4字节的O S P F头后面。这些结构共同构成H E L L O报文。

O S P F网络中的所有路由器必须遵守一定的规则,这个规则在整个网络中要一致。这些规则包括:

网络掩码。

HELLO报文广播的间隔。

网络中的其他路由器认为一个没有反应的路由器为死节点的时间(路由器死时间间隔)。

O S P F中的所有路由器对这些参数必须使用相同值,否则网络可能不会正常工作。这些参数通过H E L L O报文进行交换。它们一起构成相邻节点之间通信的基础。它们要确保在不同网络的路由器之间不形成相邻关系(连接性),并且网络中的所有成员要对多久彼此联系一次成达共识。

H E L L O报文也包括最近已与其联系过的其他路由器列表(使用它们自己惟一的路由器I D )。这个N e i g h b o r (相邻者)域使邻居发现过程成为可能。H E L L O报文还包括几个其他的域,如Designated Router(指定路由器)、Backup Designated Router(备份指定路由器)和其他一些域。这些域对于维护连接性,支持O S P F网络的稳定周期和收敛都是有用的。Designated Router和Backup Designated Router的用处将在本章后面的节中描述。

3.2 数据库描述报文

当O S P F中的两个路由器初始化连接时要交换数据库描述( D D )报文。这个报文类型用于描述,而非实际地传送O S P F路由器的链路-状态数据库内容。由于数据库的内容可能相当长,所以可能需要多个数据库描述报文来描述整个数据库。实际上,保留了一个域用于标识数据库描述报文序列。接收方对报文的重新排序使其能够真实地复制数据库描述报文。

D D交换过程按询问/应答方式进行,在这个过程中,一个路由器作为主路由器。另一个路由器作为从路由器,主路由器向从路由器发送它的路由表内容。显然,主从之间的关系会因每个D D交换的不同而不同。网络中的所有路由器会在不同时刻作用,在这个过程中既可能是主又可能是从。

3.3 链路-状态请求报文

O S P F报文的第三种类型为链路-状态请求报文。这个报文用于请求相邻路由器链路-状态数据库中的一部分数据。表面上讲,在收到一个D D更新报文之后,O S P F路由器可以发现相邻信息不是比自己的更新就是比自己的更完全。如果是这样,路由器会发送一个或几个链路-状态请求报文给它的邻居(具有更新信息的路由器)以得到更多的链路状态信息。

请求的信息必须是非常具体的。它必须使用下面的标准规范指明所要求的数据:

链路-状态( L S )类型号( 1到5 )。

LS标识。

通告路由器。

这些规范一起指明了一个具体的O S P F数据库子集,而不是它的一个事例。一个事例是与信息相同的子集,这个子集带有暂时边界(也就是时戳)。记住,O S P F是一个动态路由协议,它能对网络中链路状态的变化自动作出反应。因此,L S请求的接收者把对这些特定路由信息解释为最新数据。

3.4 链路-状态更新报文

链路-状态更新报文用于把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网络之外的路由。

A 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。

L 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中的信息才被接受,并且要经过前面一节中描述的处理过程。

3.5 链路-状态应答报文

第5种O S P F报文是链路-状态应答报文。O S P F的特点是可靠地分布L S A报文( L S A表示链路-状态通告( a d v e r t i s e m e n t ),通告而不是链路-状态应答),可靠性意味着通告的接收方必须应答。否则,源节点将没有办法知道是否L S A已到达目的地。因此,需要一些应答L S A接收的机制。这个机制是链路-状态应答报文。

链路-状态应答报文惟一地标识其要应答的L S A报文。标识以包含在L S A头中的信息为基础,包括L S顺序号和通告路由器。L S A与应答报文之间无需1对1的对应关系。多个L S A可以用一个报文来应答。

4 计算路由

O S P F虽然很复杂,却使用下面两种相当简单的方法之一计算路由耗费:

非带宽敏感的缺省值可以用于每一个O S P F接口。

OSPF 能自动计算使用每个路由接口的耗费。

不管使用哪种方法,任何一条路由的耗费可以通过把路由上遇到的每个路由器接口耗费加起来得到。在O S P F的最短路径树中记录了每一个已知目的地的和耗费。

文章转载地址:http://www.cnpaf.net/Class/OSPF/0512151318547015984.htm

0
相关文章