OSPF路由协议
OSPF路由协议
一、OSPF
OSPF路由协议OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。
直至系统(AS)
内部网关协议(IGP)例如:RIP、OSPF等 自制系统内部路由协议。
外部网关协议(EGP)例如:BGP等 外部网关协议通告的是结果。
优点:
(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路由协议会根据几个主要的因素,生成优先级不同的接口。然而在同一个区域内,路由协议只会通过优先级最高的那个接口。只要是接口优先级低于最高优先级,那么路由就不会通过。在这个基础上,不同等级的路由,无法相互承担负载,只能独自运行。
可适应大规模网络
路由变化收敛速度快
无路由环
支持变长子网掩码VLSM
支持区域划分
支持以组播地址发送协议报
域内通信量(Intra-Area Traffic)
单个区域内的路由器之间交换数据包构成的通信量。
域间通信量(Inter-Area Traffic)
不同区域的路由器之间交换数据包构成的通信量。
外部通信量(External Traffic)
OSPF域内的路由器与OSPF区域外或另一个自治系统内的路由器之间交换数据包构成的通信量。
(1) OSPF路由器接口up,发送Hello包。
(2) OSPF路由器接口收到Hello包,检查Hello中携带的参数,如果匹配,进入Init状态;并将该Hello包的发送者的Router ID,添加到Hello包(自己将要从该接口发送出去的Hello包)的邻居列表中。
(3) OSPF路由器接口收到邻居列表中含有自己Router ID的Hello包,进入Two-way状态,形成OSPF邻居关系,并把该路由器的Router ID添加到自己的OSPF邻居表中。
(4) 在进入Two-way状态后,广播、非广播网络类型的链路,在DR选举等待时间内进行DR选举。点对点没有这个过程。
(5) 在DR选举完成或跳过DR选举后,建立OSPF邻接关系,进入exstart(准启动)状态;并通过交换DBD交换主从路由器,由主路由器定义DBD序列号,Router ID大的为主路由器。目的是为了解决DBD自身的可靠性。
(6) 主从路由器选举完成后,进入Exchange(交换)状态,通过交换携带lsa头部信息的DBD包描述各自的LSDB。
(7) 进入Loading状态,对链路状态数据库和收到的DBD的LSA头部进行比较,发现自己数据库中没有的LSA就发送LSR,向邻居请求该LSA;邻居收到LSR后,回应LSU;收到邻居发来的LSU,存储这些LSA到自己的链路状态数据库,并发送LSAck确认。
(8) LSA交换完成后,进入FULL状态,同一个区域内所有OSPF路由器都拥有相同链路状态数据库。
(9) 定期发送Hello包,维护邻居关系。
二、OSPF的基本概念
为了适应大型的网络,OSPF在AS内划分多个区域,每个OSPF路预期只维护所在区域的完整链路状态信息。
区域ID可以表示成一个十进制的数字,也可以表示成一个IP(32位公网IP地址)。
负责区域间路由信息传播。
根据能够学习的路由种类来区分
标准区域
末梢区域(stub)
完全末梢(Totally stubby)区域
非纯末梢区域(NSSA)
OSPF区域内唯一标识路由器的IP地址。
选取路由器loopback接口上数值最高的IP地址,如果没有loopback接口,在物理端口中选取IP地址最高的,也可以使用router-id命令指定Router ID。
OSPF的路由器类型
内部路由器:只保存本区域内的链路状态信息。
区域边界路由器/ABR:用来连接区域0和其他区域。
自治系统边界路由器/ASBR:用来连接OSPF的AS与外部其他的路由。
自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR。
手工选择DR和BDR
优先级范围是0-255,数值越大,优先级越高,默认为“1”,如果优先级相同,则需要比较Router ID。
如果路由器的优先级被设置为“0”,它将不参与DR和BDR的选举。
路由器的优先级可以影响一个选举过程,但是它不能强制更换已存在的DR或BDR路由器。
224.0.0.5
224.0.0.6
Drother会通过224.0.0.6向DR和BDR通告网络状态信息,DR会通过224.0.0.5向所有邻居通告信息。
OSPF的度量值为COST
COST=108/BW
最短路径是基于接口指定的代价(cost)计算的。
三、OSPF的数据包类型
OSPF数据包
承载在IP数据包内,使用协议号为89。
OSPF的包类型
OSPF的包类型 | 描述 |
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR) | 在路由器收到包含新信息的DBD后发送,用于请求更新详细的信息 |
链路状态更新包(LSU) | 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已收到LSU,每个LSA需要被分别确认 |
四、OSPF的网络类型
点到点网络(Point-to-Point)
广播多路访问网络(Broadcast MultiAccess,BMA)
非广播多路访问网络(None Broadcast MultiAccess,NBMA)
点到多点网络(Point-to-Multipoint)
OSPF | RIPv1 | RIPv2 |
链路状态路由协议 | 距离矢量路由协议 | |
没有跳数的限制 | RIP的15跳限制,超过15跳的路由被认为不可达 | |
支持可变长子网掩码(VLSM) | 不支持可变长子网掩码(VLSM) | 支持可变长子网掩码(VLSM) |
收敛速度快 | 收敛速度慢 | |
使用组播发送链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |
每个路由器都创建了由每个接口对应的相邻节点和接口速度组成的数据库。
链路状态数据库中每个条目称为LSA(链路状态通告),常见的由六中LSA类型。
类型代码 | 描述 | 用途 |
Type1 | 路由器LSA | 由区域内的路由器发出的 |
Type2 | 网络LSA | 由区域内的DR发出的 |
Type3 | 网络汇总LSA | ABR发出的,其他区域的汇总链路通告 |
Type4 | ASBR汇总LSA | ABR发出的,用于通告ASBR信息 |
Type5 | AS外部LSA | ASBR发出的,用于通告外部路由 |
Type7 | NSSA外部LSA | NSSA区域内的ASBR发出的,用于通告本区域连接的外部路由 |
LSA1、LSA2、LSA3、LSA4、LSA5、LSA7
每一种区域种允许泛洪的LSA
区域类型 | 1&2 | 3 | 4&5 | 7 |
骨干区域(区域0) | 允许 | 允许 | 允许 | 不允许 |
非骨干区域,非末梢区域 | 允许 | 允许 | 允许 | 不允许 |
末梢区域 | 允许 | 允许 | 不允许 | 不允许 |
完全末梢区域 | 允许 | 不允许* | 不允许 | 不允许 |
NSSA | 允许 | 允许 | 不允许 | 允许 |
五、末梢区域和完全末梢区域
满足一下条件的区域
只有一个默认路由作为其区域的出口。
区域不能作为虚链路的穿越区域。
Stub区域里无自治系统边界路由器ASBR。
不是骨干区域Area 0.
末梢区域
只有一个区域相连的非骨干区域,不接受外部自治系统的LSA(类型5),路由器会把去往外部的信息采用缺省路由0.0.0.0发送出去。
没有LSA4、5、7通告。
完全末梢区域
一种更加经济的末梢区域,不接受类型3、4、5的LSA,路由器也会把去往外部的信息采用缺省路由0.0.0.0发送出去。
除一条LSA3的默认路由通告外,没有LSA3、4、5、7通告。
•