简述动态路由协议OSPF的特点及工作原理(一)
详细内容
0 引言
根据是否在一个自治域内部使用,动态路由协议分为内部网关协议(IGP)和外部网关协议(EGP)。这里的自治域指一个具有统一管理机构、统一路由策略的网络。自治域内部采用的路由选择协议称为内部网关协议,常用的有RIP、OSPF;外部网关协议主要用于多个自治域之间的路由选择,常用的是BGP和BGP-4。
路由协议(Routing Protocol):用于路由器动态寻找网络最佳路径,保证所有路由器拥有相同的路由表,一般路由协议决定数据包在网络上的行走路径。这类协议的例子有OSPF,RIP等路由协议,通过提供共享路由选择信息的机制来支持被动路由协议。路由选择协议消息在路由器之间传送。路由选择协议允许路由器与其他路由器通信来修改和维护路由选择表。
1 路由和路由协议
顾名思义,动态路由协议是一些动态生成(或学习到)路由信息的协议。在计算机网络互联技术领域,我们可以把路由定义如下,路由是指导IP报文发送的一些路径信息。动态路由协议是网络设备如路由器(Router)学习网络中路由信息的方法之一,这些协议使路由器能动态地随着网络拓扑中产生(如某些路径的失效或新路由的产生等)的变化,更新其保存的路由表,使网络中的路由器在较短的时间内,无需网络管理员介入自动地维持一致的路由信息,使整个网络达到路由收敛状态,从而保持网络的快速收敛和高可用性。
路由器学习路由信息、生成并维护路由表的方法包括直连路由(Direct)、静态路由(STatic)和动态路由(Dynamic)。直连路由是由链路层协议发现的,一般指去往路由器的接口地址所在网段的路径,该路径信息不需要网络管理员维护,也不需要路由器通过某种算法进行计算获得,只要该接口处于活动状态(Active),路由器就会把通向该网段的路由信息填写到路由表中去,直连路由无法使路由器获取与其不直接相连的路由信息。
2 动态路由协议的分类
按照区域(指自治系统),动态路由协议可分为内部网关协议IGP(Interior Gateway Protocol)和外部网关协议EGP(Exterior Gateway Protocol),按照所执行的算法,动态路由协议可分为距离向量路由协议(Distance Vector)、链路状态路由协议(Link State),以及思科公司开发的混合型路由协议。
3 OSPF协议的特点
OSPF全称为开放最短路径优先。“开放”表明它是一个公开的协议,由标准协议组织制定,各厂商都可以得到协议的细节。“最短路径优先”是该协议在进行路由计算时执行的算法。OSPF是目前内部网关协议中使用最为广泛、性能最优的一个协议,它具有以下特点:
◆ 可适应大规模的网络;
◆ 路由变化收敛速度快;
◆ 无路由自环;
◆ 支持变长子网掩码(VLSM);
◆ 支持等值路由;
◆ 支持区域划分;
◆ 提供路由分级管理;
◆ 支持验证;
◆ 支持以组播地址发送协议报文。
采用OSPF协议的自治系统,经过合理的规划可支持超过1000台路由器,这一性能是距离向量协议如RIP等无法比拟的。距离向量路由协议采用周期性地发送整张路由表来使网络中路由器的路由信息保持一致,这个机制浪费了网络带宽并引发了一系列的问题,下面对此将作简单的介绍。为了完善这些协议,只能采取若干措施,在自环发生前,降低其发生的概率,在自环发生后,减小其影响范围和时间。
在IP(IPV4)地址日益匮乏的今天,能否支持变长子网掩码(VLSM)来节省IP地址资源,对一个路由协议来说是非常重要的,OSPF能够满足这一要求。在采用OSPF协议的网络中,如果通过OSPF计算出到同一目的地有两条以上代价(Metric)相等的路由,该协议可以将这些等值路由同时添加到路由表中。从衡量路由协议性能的角度,我们可以看出,OSPF协议确实是一个比较先进的动态路由协议,这也是它得到广泛采用的主要原因。
4 OSPF协议的工作原理
上文提到,OSPF协议是一种链路状态协议,那么OSPF是如何来描述链路连接状况呢?
抽象模型Model 1表示路由器的一个以太网接口不连接其他路由器,只连接了一个以太网段。此时,对于运行 OSPF的路由器R1,只能识别本身,无法识别该网段上的设备(主机等);抽象模型Model 2表示路由器R1通过点对点链路(如PPP、HDLC等)连接一台路由器R2;抽象模型Model 3表示路由器R1通过点对多点(如Frame Relay、X.25等)链路连接多台路由器R3、R4等,此时路由器R5、R6之间不进行互联;抽象模型Model 4表示路由器R1通过点对多点(如FrAME Relay、X.25等)链路连接多台路由器R5、R6等,此时路由器R5、R6之间互联。以上抽象模型着重于各类链路层协议的特点,而不涉及具体的链路层协议细节。该模型基本表达了当前网络链路的连接种类。
在OSPF协议中,分别对以上四种链路状态类型作了描述:
对于抽象模型Model 1(以太网链路),使用Link ID(连接的网段)、Data(掩码)、Type(类型)和Metric(代价)来描述。此时的Link ID即为路由器R1接口所在网段,Data为所用掩码,Type为3(Stub),Metric为代价值。
对于抽象模型Model 2(点对点链路),先使用Link ID(连接的网段)、Data(掩码)、Type(类型)和Metric(代价)来描述接口路由,以上各参数与Model 1相似。接下来描述对端路由器R2,四个参数名不变,但其含义有所不同。此时Link ID为路由器R2的Router ID,Data为路由器R2的接口地址,Type为1(Router),Metric仍为代价值。
对于抽象模型Model 3(点对多点链路,不全连通),先使用Link ID(连接的网段)、Data(掩码)、Type(类型)和Metric(代价)来描述接口路由,以上各参数与Model 1相似。接下来分别描述对端路由器R3、R4的方法,与在Model 2中描述R2类似。
对于抽象模型Model 4(点对多点链路,全连通),先使用Link ID(网段中DR的接口地址)、Data(本接口的地址)、Type(类型)和Metric(代价)来描述接口路由。此时Type值为2(Trans),然后是本网段中DR(指定路由器)描述的连接通告。
