研究OSPF数据结构

【研究OSPF数据结构】OSPF是相当复杂的路由协议,有许多性能和稳定性方面增强的特点 。因此,OSPF使用大量的数据结构就不是希奇的现象 。每个数据结构或信息类型,用于执行一个特定的任务 。所有数据结构共享一个通用头,称为OSPF头 。OSPF头长度为24字节,包括以下各域:
?版本号—分配OSPF头的第一个字节用于标识版本号 。当前的版本是2,但是可能会碰到更老的路由器还在运行RFC1131版本1 。RFC1247、1583、2178和2328都对OSPF版本2的向后兼容作了规范 。因此无需进一步的标识 。
?类型—第二个字节指出5种OSPF报文类型中哪一种附加在头结构后面 。5种类型(HELLO、数据库描述、链路-状态请求、链路-状态更新和链路-状态应答)用数字标识 。
?报文长度—OSPF头中下面两个字节用于通知接收节点报文的总长度 。报文总长度包括数据和头 。
?路由器ID—区中的每个路由器被分配一个惟一的、4字节的标识号 。OSPF路由器在发送任何OSPF消息给其他路由器之前,用自己的ID号填充该域 。
?区ID—头中用4字节标识区号 。
?校验和—每个OSPF头包括一个2字节的校验和域,用于检查在传输过程中对报文造成的破坏 。发送方对每个消息运行数学计算,然后把结果存储在这个域中 。接收方对接收到的报文运行相同的算法并把结果与存储在校验和域中的结果进行比较 。假如报文无损到达,两个结果应一样;不相同,说明OSPF报文在传输过程中被破坏 。接收方会简单地把受损报文丢弃 。
?认证类型—OSPF能通过认证OSPF信息的发送者来防止会导致假路由信息这样的攻击 。两字节的认证类型域标识信息中使用的各种认证形式 。
?认证—头中剩下的9个字节携带的是认证数据,接收方利用此信息来确定信息的发送者 。OSPF答应网络治理员使用各种级别的认证:从无认证,到简单认证,到最强大的MD认证,基本结构中包含OSPF节点所需的用于决定报文是否应接收并作进一步处理,
一点)及没有通过认证的报文会被丢弃 。OSPF使用5种不同的报文类型 。每种类型用于支持不同的,专门的网络功能 。这5种类型是:
?HELLO报文(类型1) 。
?数据库描述报文(类型2) 。
?链路-状态请求报文(类型3) 。
?链路-状态更新报文(类型4) 。
?链路-状态应答报文(类型5) 。这5种报文类型有时用编号指明,而不是用名字 。所以,OSPF类型5报文实际上是指链路-状态应答报文 。所有这些报文类型使用OSPF头 。注重5种基本的OSPF数据结构用5个纯粹的数表示,对这些结构和大小的具体讨论超出了本章的范围 。相反,这一章仅限于讨论这些数据类型的目的和使用 。
1 HELLO报文
OSPF包含一个用于建立和维护相邻站点之间关系的协议(HELLO协议) 。这些关系称为连接性 。连接性是OSPF交换路由数据的基础 。
通过这个协议和报文类型,OSPF节点能发现区中的其他OSPF节点 。它的名字表明了其含义,HELLO协议在可能的相邻路由器之间建立通信 。HELLO协议使用非凡的子报文结构,这个结构附加到标准24字节的OSPF头后面 。这些结构共同构成HELLO报文 。
OSPF网络中的所有路由器必须遵守一定的规则,这个规则在整个网络中要一致 。这些规则包括:
?网络掩码 。
?HELLO报文广播的间隔 。
?网络中的其他路由器认为一个没有反应的路由器为死节点的时间(路由器死时间间隔) 。
OSPF中的所有路由器对这些参数必须使用相同值,否则网络可能不会正常工作 。这些参数通过HELLO报文进行交换 。它们一起构成相邻节点之间通信的基础 。它们要确保在不同网络的路由器之间不形成相邻关系(连接性),并且网络中的所有成员要对多久彼此联系一次成达共识 。

推荐阅读