OSPF协议简述

  在IP网络上,OSPF通过收集和传递自治系统的链路状态来动态地发现并传播路由.当前 OSPF协议使用的是第二版,最新的RFC是2328.

OSPF协议具有如下特点:

适应范围--OSPF支持各种规模的网络,最多可支持几百台路由器.

快速收敛--如果网络的拓扑结构发生变化,OSPF立即发送更新报文,使这一变化在自治系统中同步.

无自环--由于OSPF通过收集到的链路状态用最短路径算法计算路由,故从算法本身保证了不会生成自环路由.

子网掩码--由于OSPF在描述路由时携带网段的掩码信息,所以OSPF协议不受自然掩码的限制,对VLSM提供很好的支持.

区域划分--OSPF协议允许自治系统的网络被划分成区域来管理区域间传送的路由信息被进一步抽象,从而减少了占用网络的带宽.

等值路由--SOPF支持到同一目的地址的多条等值路由.

路由分级--OSPF使用4类不同的路由,按优先顺序来说分别是:区域内路由,区域间路由,第一类外部路由,第二类外部路由.

支持验证--它支持基于接口的报文验证以保证路由计算的安全性.

组播发送--OSPF在有组播发送能力的链路层上以组播地址发送协议报文,即达到了广播的作用,又最大程度的减少了对其他网络设备的干扰.

OSPF协议的一些基本概念

Router ID

一个32bit的无符号整数,是一台路由器的唯一标识,在整个自治系统内唯一.

协议号

OSPF的协议号是89.

一台路由器如果要运行OSPF协议,必须存在Router ID,可以使用命令:

 [Quidway]router id 1.2.3.4 

手工配置。如果没有配置,则系统会优先选择Lookback接口的IP地址作为lD(因为Lookback口总是处于UP状态),如果没有配置Lookback接口,OSPF会从当前接口的IP地址中自动选一个IP址作为ID

如果一台路由器的Router ID在运行中改变,必须重启OSPF协议或重启路由器才能使新的Router ID生效。

如果想查看本路由器的Router lD.执行命令display ospf

协议号:OSPF协议用lP报文直接封装协议报文,协议号是89

 OSPF协议计算路由是以本路由器周边网络的拓扑结构为基础的。每台路由器将自己周边的网络拓扑描述出来,传递给其他所有的路由器。

OSPF将不同的网络拓扑抽象为以下四种类型: 

  该接口所连的网段中只有本路由器自己。(stub networks)

该接口通过点到点的网络与一台路由器相连。(point-to-point)

该接口通过广播或NBMA的网络与多台路由器相连。(broadcast or NBMAnetworks)

该接口通过点到多点的网络与多台路由器相连。(point-to-multipoint)

 NBMA与点到多点的区别: 

OSPF协议中NBMA和点到多点都是指非广播多点可达的网络,但NBMA网络必须满足全连通(full meshed)的要求,即任意两点部可以不经转发而使报文直达对端。否则,我们称该网络是点到多点网络。

 如上图所示.RTA周围的链路状态情况可归纳为以下四种:

1)通过PPP协议与另一台路由器RTB直接相连:

 2)通过一个X25网络与RTCRTD相连(该网络是全连通的)   

3)通过一个Frame Relay网络与RTERTF相连(该网络不是全连通的RTERTF不直接相连)

4)直接连接着一个局域网。

上图中描述了通过OSPF协议计算路由的过程。

 (1)由四台路由器组成的网络,连线旁边的数字表示从一台路由器到另一台路由器所需要的花费。为简化问题,我们假定两台路由器相互之间发送报文所需花费是相同的。

(2)每台路由器都根据自己周围的网络拓扑结构生成一条LSA(链路状态广播),并通过相互之间发送协议报文将这条LSA发送给网络中其它的所有路由器。这样每台路由器都收到了其它路由器LSA,所有的LSA放在一起称作LSDB(链路状态数据库)。显然,4台路由器的LSDB都是相同的。

(3)由于一条LSA是对一台路由器周围网络拓扑结构的描述,那么LSDB则是对整个网络的拓扑结构的描述。路由器很容易将LSDB转换成一张带权的有向图。这张图便是对整个网络拓扑结构的真实反映。显然,4台路由器得到的是一张完全相同的图。

(4)接下来每台路由器在图中以自己为根节点,使用SPF算法计算出一棵最短路径树,由这棵树得到了到网络中各个节点的路由表。显然,4台路由器各自得到的路由表是不同的。这样每台路由器都计算出了到其它路由器的路由。

由上面的分析可知:OSPF协议计算出路由主要有以下三个主要步骤: 

 描述本路由器周边的网络拓扑结构,并生成LSA。

将自己生成的LSA在自治系统中传播。并同时收集所有的其他路由器生成的LSA

 根据收集的所有的LSA计算路由。

OSPF的报文类型一共有五种:   

 HELL0报文(Hello Packet)  

最常用的一种报文.周期性的发送给本路由器的邻居。内容包括一些定时器的数值,DRBDR.以及自己已知的邻居。

DD报文(Database Description Packet) 

两台路由器进行数据库同步时,用DD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘(摘要是指LSAHEAD.通过该HEAD可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量.因为LSAHEAD只占一条LSA的整个数据量的一小部分.根据HEAD.对端路由器就可以判断出是否已经有了这条LSA 

LSR报文(Link State Request Packet)

两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的或是对端更新的LSA,这时需要发送LSR报文向对方清求所需的LSA。内容包括所需要的LSA的摘要。

LSU报文(Link State Update Packet)

用来向对端路由器发送所需要的LSA.内容是多条LSA(全部内容)的集合。

LSAck报文(Link State Acknowledgment Packet)

 用来对接收到的LSU报文进行确认。内容是需要确认的LSAHEAD(一个报文可对多个LSA进行确认)

区域划分

为什么需要划分区域:     

随着网络规模日益扩大,网络中的路由器数量不断增加。当一个巨型网络中的路由器都运行OSPF路由协议时.就会遇到如下问题:

每台路由器都保留着整个网络中其他所有路由器生成的LSA.这些LSA的集合组成LSDB,路由器数量的增多会导致LSDB非常庞大,这会占用大量的存储空间。

LSDB的庞大会增加运行SPF算法的复杂度,导致CPU负担很重。  

由于LSDB很大,两台路由器之间达到LSDB同步会需要很长时间。 

网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“动荡”之中.为了同步这种变化,网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更糟糕的是:每一次变化都会导致网络中所有的路由器重新进行路由计算。

解决上述问题的关键主要有两点:减少LSA的数量:屏蔽网络变化波及的范围。OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是在逻辑上将路由器划分为不同的组。区域的边界是路由器,这样会有一些路由器属于不同的区域,(这样的路由器称作区域边界路由器ABR),而一个网段只能属于一个区域。

划分成区域之后,给OSPF协议的处理带来了很大的变化。

 每一个网段必须属于一个区域,或者说每个运行OSPF协议的接口必须指 名属于某一个特定的区域,区域用区域号(Area ID)来标识。区域号是一个从O开始的32位整数

 不同的区域之间通过ABR来传递路由信息。   

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值