
OSPF技术基础知识详解.pdf
11页1.1 OSPF 协议简介和特点OSPF 是 Open Shortest Path First (即― 开放最短路由优先协议‖ ) 的缩写它是 IETF(Internet Engineering Task Force)组织开发的一个基于链路状态的自治系统内部路由协议(IGP) ,用于在单一自治系统 (Autonomous system,AS)内决策路由在IP 网络上,它通过收集和传递自治系统的链路状态来动态地发现并传播路由当前OSPF 协议使用的是第二版,最新的RFC 是 2328为了弥补距离矢量协议的局限性和缺点从而发展出链路状态协议,OSPF 链路状态协议有以下优点:适应范围 —— OSPF 支持各种规模的网络,最多可支持几百台路由器最佳路径 —— OSPF 是基于带宽来选择路径快速收敛——如果网络的拓扑结构发生变化,OSPF 立即发送更新报文, 使这一变化在自治系统 中同步无自环——由于 OSPF 通过收集到的链路状态用最短路径树算法计算路由,故从算法本身保证了 不会生成自环路由子网掩码——由于 OSPF 在描述路由时携带网段的掩码信息,所以OSPF 协议不受自然掩码的 限制,对 VLSM 和 CIDR 提供很好的支持。
区域划分—— OSPF 协议允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进 一步抽象,从而减少了占用网络的带宽等值路由—— OSPF 支持到同一目的地址的多条等值路由路由分级—— OSPF 使用4 类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、 第一类外部路由、第二类外部路由支持验证——它支持基于接口的报文验证以保证路由计算的安全性组播发送—— OSPF 在有组播发送能力的链路层上以组播地址发送协议报文,即达到了广播的作 用,又最大程度的减少了对其他网络设备的干扰OSPF 链路状态协议有以下两个问题要注意:在初始发现过程中,链路-状态路由协议会在网络传输线路上进行洪泛(flood) ,因此会大大削弱网 络传输数据的能力链路 -状态路由对存储器容量和处理器处理能力敏感1.2 OSPF 支持的网络类型OSPF支持的网络类型有:图 1.2-1 点到点网络1.Point-to-point 链路层协议是PPP 或 LAPB 时,默认网络类型为点到点网络无需选举DR 和 BDR,当只有两个路由器的接口要形成邻接关系的时候才使用图 1.2-2 广播网络2.Broadcast 链路层协议是Ethernet、FDDI 、Token Ring 时,默认网络类型为广播网,以组播的方式发送协议报文。
图 1.2-3 非广播多路访问网络3.NBMA 链路层协议是帧中继、ATM、HDLC 或 X.25,默认网络类型为NBMA 手工指定邻居图 1.2-4 点到多点网络4.Point-to-multipoint 没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型点到多点必然是由其他网络类型强制更改的,常见的做法是将非全连通的NBMA 改为点到多点的网络多播hello 包自动发现邻居,无需手工指定邻居NBMA 与 P2MP 之间的区别:在 OSPF 协议中 NBMA是指那些全连通的、非广播、多点可达网络而点到多点的网络,则并不需要一定是全连通的NBMA是一种缺省的网络类型点到多点不是缺省的网络类型,点到多点必须是由其它的网络类型强制更改的NBMA 用单播发送协议报文,需要手工配置邻居点到多点是可选的,即可以用单播发送,又可以用多播发送报文在 NBMA 上需要选举DR 与 BDR,而在 P2MP 网络中没有DR 与 BDR另外,广播网中也需要选举DR 和 BDR1.2.1 OSPF 的报文类型OSPF的报文类型一共有五种HELLO 报文( Hello Packet) :最常用的一种报文,周期性的发送给本路由器的邻居。
内容包括一些定时器的数值, DR, BDR, 以及自己已知的邻居 HELLO 报文中包含有Router ID、 Hello/dead intervals、Neighbors、Area-ID 、Router priority 、DR IP address、BDR IP address 、Authentication password、Stub area flag 等信息,其中Hello/dead intervals 、Area-ID、Authentication password 、Stub area flag 必须一致,相邻路由器才能建立邻居关系DBD 报文( Database Description Packet):两台路由器进行数据库同步时,用DBD 报文来描述自己的LSDB ,内容包括 LSDB 中每一条 LSA 的摘要(摘要是指LSA 的 HEAD ,通过该HEAD 可以唯一标识一条LSA)这样做是为了减少路由器之间传递信息的量,因为LSA 的HEAD 只占一条LSA 的整个数据量的一小部分,根据HEAD ,对端路由器就可以判断出是否已经有了这条LSALSR 报文( Link State Request Packet):两台路由器互相交换过DBD 报文之后,知道对端的路由器有哪些LSA 是本地的 LSDB 所缺少的或是对端更新的LSA, 这时需要发送LSR 报文向对方请求所需的LSA。
内容包括所需要的LSA 的摘要LSU 报文( Link State Update Packet ):用来向对端路由器发送所需要的LSA ,内容是多条LSA (全部内容)的集合LSAck 报文( Link State Acknowledgment Packet)用来对接收到的DBD, LSU 报文进行确认内容是需要确认的LSA 的 HEAD (一个报文可对多个LSA 进行确认)1.3 OSPF 的邻居状态机Down:邻居状态机的初始状态,是指在过去的Dead-Interval 时间内没有收到对方的Hello 报文Attempt:只适用于NBMA 类型的接口,处于本状态时,定期向那些手工配置的邻居发送HELLO 报文Init : 本状态表示已经收到了邻居的HELLO 报文, 但是该报文中列出的邻居中没有包含我的Router ID (对方并没有收到我发的HELLO 报文)2-Way:本状态表示双方互相收到了对端发送的HELLO 报文, 建立了邻居关系 在广播和NBMA 类型的网络中,两个接口状态是DROther 的路由器之间将停留在此状态其他情况状态机将继续转入高级状态ExStart:在此状态下,路由器和它的邻居之间通过互相交换DBD 报文(该报文并不包含实际的内容,只包含一些标志位) 来决定发送时的主/从关系。
建立主 /从关系主要是为了保证在后续的DBD 报文交换中能够有序的发送Exchange:路由器将本地的LSDB 用 DBD 报文来描述,并发给邻居Loading:路由器发送LSR 报文向邻居请求对方的DBD 报文Full:在此状态下,邻居路由器的LSDB 中所有的LSA 本路由器全都有了即,本路由器和邻居建立了邻接( adjacency)状态注:红色的状态是指稳定的状态(down 、two-way、full) ,其他状态则是在转换过程中瞬间(一般不会超过几分钟)存在的状态本路由器和状态可能与对端路由器的状态不相同例如本路由器的邻居状态是Full,对端的邻居状态可能是Loading OSPF 是基于链路状态算法的路由协议,所有对路由信息的描述都是封装在LSA 中发送出去 LSA 根据不同的用途分为不同的种类,目前使用最多的是以下五种LSA :Router LSA (Type = 1):是最基本的LSA 类型,所有运行OSPF 的路由器都会生成这种LSA主要描述本路由器运行OSPF 的接口的连接状况,花费等信息对于ABR,它会为每个区域生成一条 Router LSA 这种类型的LSA 传递的范围是它所属的整个区域。
Netwrok LSA (Type = 2):本类型的LSA 由 DR 生成对于广播和NBMA 类型的网络,为了减少该网段中路由器之间交换报文的次数而提出了DR 的概念一个网段中有了DR 之后不仅发送报文的方式有所改变,链路状态的描述也发生了变化在DROther 和 BDR 的 Router LSA 中只描述到 DR 的连接, 而 DR 则通过 Network LSA 来描述本网段中所有已经同其建立了邻接关系的路由器分别列出它们Router ID)同样,这种类型的LSA 传递的范围是它所属的整个区域Network Summary LSA (Type = 3):本类型的LSA 由 ABR 生成当 ABR 完成它所属一个区域中的区域内路由计算之后,查询路由表,将本区域内的每一条OSPF 路由封装成Network SummaryLSA 发送到区域外LSA 中描述了某条路由的目的地址、掩码、花费值等信息这种类型的 LSA 传递的范围是ABR 中除了该 LSA 生成区域之外的其他区域ASBR Summary LSA (Type = 4):本类型的 LSA 同样是由 ABR 生成内容主要是描述到达本区域内部的 ASBR 的路由。
这种 LSA 与 Type3 类型的 LSA 内容基本一样, 只是 Type4 的 LSA 描述的目的地址是ASBR , 是主机路由, 所以掩码为 0.0.0.0 这种类型的LSA 传递的范围与Type3 的LSA 相同AS External LSA (Type = 5):本类型的LSA 由 ASBR 生成主要描述了到自治系统外部路由的信息, LSA 中包含某条路由的目的地址、掩码、花费值等信息本类型的LSA 是唯一一种与区域无关的 LSA 类型, 它并不与某一个特定的区域相关这种类型的 LSA 传递的范围整个自治系统( STUB 区域除外)AS External LSA (Type = 7):类型 7 的 LSA 被应用在非完全末节区域中(NSSA) 1.4 区域种类区域的特性决定着它可以接收的路由信息的类型可能的区域类型包括以下几个:标准区域:这个默认的区域接收链路状态更新、路由汇总和外部路由信息骨干区域(转发区域) :骨干区域是连接所有其他区域的中心点骨干区域的区域号总是“0” 所有其他区域都连接到这个区域以交换路由信息OSPF 骨干区域拥有所有标准区域的特性末节区域:这种区域不接受任何自治系统外部路由的信息,比如非OSPF 网络的信息。
如果路由器需要连接AS 外的网络,它们应用缺省的0.0.0.0 路由末节区域不能包含ASBR完全末节区域: 这种区域不接受任何AS 外部的路由, 也不接收 AS 内部的其他区域的汇总信息如果路由器需要发送数据到外部网络或是其他区域,它使用缺省的路由发送数据包完全末节区域不能包含ASBR 非完全末节区域 (NSSA) : NSSA 是对 OSPF RFC 的补充这种区域定义了类型7 的 LSA NSSA提供类域末节区域和完全末节区域同样的好处但是,在NSSA 中允许存在ASBR ,这的点与末节区域不同为了解决 ASE 路由(自治系统外部路由)单向传递的问题,NSSA 中重新定义了一种LSA —— Type 7 类型的LSA,作为区域内的路由器引入外部路由时使用,该类型的LSA 除了类型标识与Type 5 不相同之外,其它内容基本一样这样区域内的路由器就可以通过LSA 的类型来判断是否该路由来自本区域内协议规定:在 NSSA 的 ABR 上将 NSSA 内部产生的Type 7 类型的LSA 转化为 Type 5 类型的LSA 再发布出去,并同时更改LSA 的发布者为ABR 自己STP 的基本原理基本思想:在网桥之间传递特殊的消息(配置消息,也称作BPDU 消息),包含足够的信息做以下工作:从网络中的所有网桥中,选出一个作为根网桥。












