OSPF(Open Shortest Path First)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相对,OSPF是链路状态路由协议,而RIP是距离向量路由协议。
1.骨干区域:起到了让其他非骨干区域能够知道别的区域的网络情况的作用。也就是说,所有非骨干区域的路由信息都要流经骨干区域。
2.虚拟链路:是一个通过非骨干区域到骨干区域的链路。
使用目的:
连接一个非骨干区域到一个骨干区域通过一个非骨干区域
通过一个非骨干区,连接分开的两个骨干区部分
规则:
必须在两个ABR之间进行配置
虚链路通过的区域作为传输区域,必须有完整的路由信息
间传输区不能是存根区。
3. OSPF的分层拓扑的优势:
1) 降低SPF的计算频率
2) 减小路由表
3) 降低LSU更新的开销
一、基础概念:
LSA 链路状态通告
LSDB 链路状态数据库
邻居表--发现并建立邻居
拓扑表--建立DBD
路由表--根据SPF算法计算到各个路由器的最佳路径。
二、OSPF中的四种路由器:
1. 内部路由器:所有端口在同一区域的路由器,维护一个链路状态数据库。
2. 主干路由器:具有连接主干区域端口的路由器。
3. 区域边界路由器(ABR): 具有连接多区域端口的路由器,一般作为一个区域的出口。ABR为每一个所连
接的区域建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负
责将这些信息发送到各个区域。
4. 自治域系统边界路由器(ASBR): 至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF 网络信息传入OSPF网络。
三、OSPF报文格式:
Version:版本字段,占1个字节,指出所采用的OSPF协议版本号,目前最高版本为OSPF v4,即值为4(对应二进制是0100)。
Packet Type:报文类型字段,标识对应报文的类型。前面说了OSPF有5种报文,分别是:Hello报文、DD报文、LSR报文、LSU报文、LSAck报文。具体将在下面各小节介绍。
Packet Length:包长度字段,占2个字节。它是指整个报文(包括OSPF报头部分和后面各报文内容部分)的字节长度。
Router ID:路由器ID字段,占4个字节,指定发送报文的源路由器ID。
Area ID:区域ID字段,占4个字节,指定发送报文的路由器所对应的OSPF区域号。
Checksum:校验和字段,占2个字节,是对整个报文(包括OSPF报头和各报文具体内容,但不包括下面的Authentication字段)的校验和,用于对端路由器校验报文的完整性和正确性。
AuType:认证类型字段,占2个字节,指定所采用的认证类型,0为不认证,1为进行简单认证,2采用MD5方式认证。
Authentication:认证字段,占8个字节,具体值根据不同认证类型而定:认证类型为不认证时,此字段没有数据,认证类型为简单认证时,此字段为认证密码,认证类型为MD5认证时,此字段为MD5摘要消息。
Hello Packet包含信息:
1.源路由器的RID
2.源路由器的Area ID
3.源路由器接口的掩码
4.源路由器接口的认证类型和认证信息
5.源路由器接口的Hello包发送的时间间隔
6.源路由器接口的无效时间间隔
7.优先级
8.DR/BDR接口IP地址
9.五个标记位(flag bit)
10.源路由器的所有邻居的RID
四、OSPF五中类型的数据包:
根据OSPF数据包type字段数值的不同,OSPF数据包类型分为5种,不同的type,其后面的内容也不同。
路由表的形成与这5种数据包的交互息息相关。
1.hello包-----周期10s
编号为1的OSPF数据包
功能:用于发现,和维持邻居关系的,以及DR/BDR的选举(2way)
在成为邻居之前,必须对Hello包里的一些参数进行协商,hello时间间隔默认10s,死亡间隔4倍。
Hello包在邻居之间扮演着keepalive的角色
允许邻居之间的双向通信
用于在NBMA(Nonbroadcast Multi-access)网络上选举DR和BDR
2.链路状态数据库描述数据包-------DBD
编号为2的OSPF数据包
对ospf的网络拓扑进行描述
数据包在链路状态数据库交换期间产生,主要作用有三个:
①选举交换链路状态数据库过程中的主从关系
②确定交换链路状态数据库过程中的初始序列号
③交换所有的LSA数据包头部
虚链路中,MTU字段必须设置为 0 。
在部分路由数据库信息丢失或过时时发送
3.链路状态请求数据包------LSR
编号为3的OSPF数据包
用于请求在DBD交换过程中发现的本路由器中没有的或已过时的LSA包细节
4.链路状态更新数据包---LSU
编号为4的OSPF数据包
功能:用于存储和传递路径信息
用于将多个LSA泛洪,也用于对接收到的链路状态更新进行应答
5.链路状态确认数据包-----LSAck
编号为5的数据包
用于对接收到的LSU进行确认。
如果发送确认的路由器的状态是DR或者BDR,确认数据包发送到OSPF的组播地址224.0.0.5
如果发送确认的路由器状态不是DR或BDR,确认将被发送到OSPF路由器组播地址224.0.0.6