OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。
OSPF 路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。适用于 IPv4 的 OSPFv2 协议定义于 RFC 2328,RFC 5340 定义了适用于 IPv6 的 OSPFv3。
概述
开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用 OSPF 协议后,大部分路由将由 OSPF 协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。但如果使用时不结合具体网络应用环境,不做好细致的规划,OSPF 协议的使用效果会大打折扣,甚至引发故障。
OSPF 协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用 LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统 AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他 AS 的路由信息,从而得到整个 Internet 的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成 LSA,路由器通过泛洪机制将新 LSA 通告出去,以便实现路由的实时更新。
实现过程
1、初始化形成端口初始信息:在路由器初始化或网络结构发生变化(如链路发生变化,路由器新增或损坏)时,相关路由器会产生链路状态广播数据包 LSA,该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。
2、路由器间通过泛洪(Floodingl 机制交换链路状态信息:各路由器一方面将其 LSA 数据包传送给所有与其相邻的 OSPF 路由器,另一方面接收其相邻的 OSPF 路由器传来的 LSA 数据包,根据其更新自己的数据库。
3、形成稳定的区域拓扑结构数据库:OSPF 路由协议通过泛洪法逐渐收敛,形成该区域拓扑结构的数据库,这时所有的路由器均保留了该数据库的一个副本。
4、形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表。
OSPF 分组
OSPF 协议依靠五种不同类型的分组来建立邻接关系和交换路由信息,即问候分组、数据库描述分组、链路状态请求分组、链路状态更新分组和链路状态确认分组。
1、问候(Hello)分组
OSPF 使用 Hello 分组建立和维护邻接关系。在一个路由器能够给其他路由器分发它的邻居信息前,必须先问候它的邻居们。
2、数据库描述(Data base Description,DBD)分组
DBD 分组不包含完整的“链路状态数据库”信息,只包含数据库中每个条目的概要。当一个路由器首次连入网络,或者刚刚从故障中恢复时,它需要完整的“链路状态数据库”信息。此时,该路由器首先通过 hello 分组与邻居们建立双向通信关系,然后将会收到每个邻居反馈的 DBD 分组。新连入的这个路由器会检查所有概要,然后发送一个或多个链路状态请求分组,取回完整的条目信息。
3、链路状态请求(Link State Request,LSR)分组
LSR 分组用来请求邻居发送其链路状态数据库中某些条目的详细信息。当一个路由器与邻居交换了数据库描述分组后,如果发现它的链路状态数据库缺少某些条目或某些条目已过期,就使用 LSR 分组来取得邻居链路状态数据库中较新的部分。
4、链路状态更新(Link State Update,LSU)分组
LSU 分组被用来应答链路状态请求分组,也可以在链路状态发生变化时实现洪泛(flooding)。在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用 LSU,用洪泛法向全网更新链路状态。
5、链路状态确认(Link State Acknowledgment,LSAck)分组
LSAck 分组被用来应答链路状态更新分组,对其进行确认,从而使得链路状态更新分组采用的洪泛法变得可靠。
优点
(1)OSPF 适合在大范围的网络:OSPF 协议当中对于路由的跳数,它是没有限制的,所以 OSPF 协议能用在许多场合,同时也支持更加广泛的网络规模。只要是在组播的网络中,OSPF 协议能够支持数十台路由器一起运作。
(2)组播触发式更新:OSPF 协议在收敛完成后,会以触发方式发送拓扑变化的信息给其他路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成其他影响
(3)收敛速度快:如果网络结构出现改变,OSPF 协议的系统会以最快的速度发出新的报文,从而使新的拓扑情况很快扩散到整个网络;而且,OSPF 采用周期较短的 HELLO 报文来维护邻居状态。
(4)以开销作为度量值:OSPF 协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF 协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF 选路主要基于带宽因素。
(5)OSPF 协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。
(6)应用广泛:广泛的应用在互联网上,其他会有大量的应用实例。证明这是使用最广泛的 IPG 之一。
缺点
(1)OSPF 协议的配置对于技术水平要求很高,配置比较复杂的。因为网络会根据具体的参数,给整个网络划分区域或者标注某个属性,所以各种情况都会非常复杂,这就要求网络分析员对 OSPF 协议的配置要相当了解,不但要求具有普通的网络知识技术,还要有更深层的技术理解,只有具备这样的人员,才能完成 OSPF 协议的配置和日常维护。
(2)路由其自身的负载分担能力是很低的。OSPF 路由协议会根据几个主要的因素,生成优先级不同的接口。然而在同一个区域内,路由协议只会通过优先级最高的那个接口。只要是接口优先级低于最高优先级,那么路由就不会通过。在这个基础上,不同等级的路由,无法相互承担负载,只能独自运行。
受到攻击
(一)通过验证漏洞进行攻击
无验证:由于交换信息时不需要验证,攻击者可以直接获取信息。简单口令验证:因为在传输过程中 OSPF 数据包括其口令都是以明文形式传输的,所以攻击者可以用线路分析仪从网络上窃取口令。密码验证:信息—摘要算法 MD5(Message—Digest Algorithm 5)是 OSPF 规范中完整引用的唯一一个签名算法,由于它的逻辑不可逆性,曾被认为是牢不可破的。但是 2004 年中国科学家王小云成功地破解了此算法,说明密码验证方式也不是足够安全。而攻击者一旦获得了交换的信息或口令就可以生成新的伪 OSPF 数据包,发送给该接口的各路由器,致使网络不能正常运行。
(二)通过篡改 OSPF 报文进行攻击
1、篡改 Hello 报文。OSPF 路由器定期向外发送 Hello 报文,用以发现邻居和维护邻接节点关系。攻击者一旦攻破了 OSPF 验证体系,就可以修改报文中的某些参数来达到攻击的目的。如删掉邻居列表上的邻居使所有邻居关系变为 Down,修改指定路由器身份,致使频繁地进行指定路由器的选举,消耗大量的资源。
2、篡改 LSU 报文。LSU 报文用洪泛发对
全网更新链路状态。这个报文是最复杂的,也是 OSPF 协议最核心的部分。如通过 LSU 报文大量注入 Roter Sat Network-LSA,尽管它们可能不参与路由运算,但由于它们存在于每个路由器的数据库中,因而可能造成数据库溢出。
3、大量发送各种类型报文。
攻击者通过不间断发送大量各种类型的 OSPF 报文,很可能造成被攻击实体的资源耗竭而无法正常工作。如发送包含过长邻居列表的超大 Hello 报文,邻居路由器需要为邻居列表上的每个邻居创建邻居结构而消耗大量的资源,起到攻击的效果。