详解OSPF协议原理一
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。OSPF 协议基于链路状态技术,不同于传统Internet 路由协议(如 RIP)中使用的基于距离矢量的算法。OSPF引入了一些新概念,如可变长度子网掩码(VLSM) 、路由汇总等
SPF优点: (1)OSPF 适合在大范围的网络:OSPF 协议当中对于路由的跳数,它是没有限制的,所以 OSPF协议能用在许多场合,同时也支持更加广泛的网络规模。只要是在组播的网络中,OSPF协议能够支持数十台路由器一起运作。 (2)组播触发式更新:OSPF协议在收敛完成后,会以触发方式发送拓扑变化的信息给其他路由器,这样就可以减少网络宽带的利用率;同时,可以减小干扰,特别是在使用组播网络结构,对外发出信息时,它对其他设备不构成其他影响 (3)收敛速度快:如果网络结构出现改变,OSPF 协议的系统会以最快的速度发出新的报文,从而使新的拓扑情况很快扩散到整个网络;而且,OSPF 采用周期较短的 HELLO 报文来维护邻居状态。 (4)以开销作为度量值:OSPF 协议在设计时,就考虑到了链路带宽对路由度量值的影响。OSPF 协议是以开销值作为标准,而链路开销和链路带宽,正好形成了反比的关系,带宽越是高,开销就会越小,这样一来,OSPF选路主要基于带宽因素。 (5)OSPF协议的设计是为了避免路由环路:在使用最短路径的算法下,收到路由中的链路状态,然后生成路径,这样不会产生环路。
OSPF整体拓扑 ? OSPF把自治系统划分成逻辑意义上的一个或多个区域,所有其他区域必须与区域0相连。区域0称为骨干区域。
路由器类型:
区域内路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。
区域边界路由器ABR(Area Border Router):该类路由器可以同时属于两个以上的区域,但其中一个接口必须在骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
骨干路由器(Backbone Router):该类路由器至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部路由器都是骨干路由器。
自治系统边界路由器ASBR(AS Boundary Router):与其他AS交换路由信息的路由器称为ASBR。ASBR并没有特定的位置要求,它可能位于普通的区域,也可能是ABR。**只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
OSPF支持的网络类型 ? 广播类型:数据链路层是Ethernet ? 点对点P2P类型:数据链路层是点到点 ? NBMA类型:数据链路层是帧中继 ? 点到多点P2MP类型:手工配置
点到点类型: 当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。 在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
广播类型: 当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。 在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文。 ○ 224.0.0.5的组播地址为OSPF路由器的预留IP组播地址; ○ 224.0.0.6的组播地址为OSPF DR的预留IP组播地址。 ○ 以单播形式发送DD报文和LSR报文。
NBMA类型(Non-broadcast multiple access): 当链路层协议是ATM或FR时,缺省情况下,OSPF认为网络类型是NBMA。(NBMA方式要求网络中的路由器组成全连接) 在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
点到多点P2MP 类型(Point-to-Multipoint) 没有一种链路层协议会被缺省的认为是Point-to-Multipoint 类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络,例如只使用PVC的不完全连接的帧中继网络。 在该类型的网络中以组播形式(224.0.0.5)发送Hello报文,以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文。
在广播类型或NBMA网络中会选举DR和BDR
DR/BDR的作用 ? 减少邻接关系的数量,从而减少链路状态信息交换的次数。DRother只与DR/BDR建立完全邻接关系。DR与BDR之间建立完全邻接关系。 ? DR产生网络LSA来描述NBMA网段或者广播网段信息。
DR/BDR选举规则 ? DR/BDR由OSPF的Hello协议选举,选举是根据端口的路由器优先级(Router Priority)进行的。 ? 如果Router Priority被设置为0,那么该路由器将不允许被选举成DR或者BDR。 ? Router Priority越大越优先。如果相同,Router ID大者优先。 ? DR/BDR不能抢占。 ? 如果当前DR发生故障,当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR发生故障,则DR不变,重新选举BDR。
报文类型:
Hello报文 ? 用于建立和维护邻居关系
DD报文 ? 描述本地LSDB的摘要信息,用于两台路由器进行数据库同步
LSR报文 ? 用于向对方请求所需的LSA ? 路由器只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文
LSU报文 ? 用于向对方发送其所需要的LSA
LSAck报文 ? 用来对收到的LSA进行确认
OSPF报文直接运行于IP之上,IP协议字段号为89。 OSPF有五种报文类型,但是OSPF报文头部格式都是相同的。 除Hello报文外,其它的OSPF报文都携带LSA信息。
报文头部: ? Version:OSPF协议号,应当被设置成2。 ? Type:OSPF报文类型,OSPF共有五种报文。 ? Packet length:OSPF报文总长度,包括报文头部。单位是字节。 ? Router ID:生成此报文的路由器的Router ID。 ? Area ID:此报文需要被通告到的区域。 ? Checksum:是指一个对整个数据包(包括包头)的标准IP校验和。 ? AuType:验证此报文所应当使用的验证方法。 ? Authentication:验证此报文时所需要的密码等信息。
验证一个OSPF报文头部是否合法包括: ? 1.Version必须为2; ? 2.Area ID应当满足以下两种情况之一: ○ 和接收端口所属区域的Area ID一致; ○ 和接收端口所属区域的Area ID不一致,但是值为0,表示该报文属于骨干区域,而且是在一个虚连接上发送的; ? 3.AuType字段必须与该区域配置的Autype一致; ? 4.Authentication为验证信息,内容与AuType字段相关。
? 只有通过验证的OSPF报文才能被接受,否则将不能正常建立邻居关系。 ? VRP支持两种验证方式:区域验证方式和接口验证方式。当两种验证方式都存在时,优先使用接口验证方式。
|