什么是OSPF?

OSPF(Open Shortest Path First,开放最短路径优先)是IETF(Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2。

为什么要用OSPF?

OSPF是动态路由协议众的一种,OSPF基于收集到的链路状态用最短路径树算法计算路由,相对于基于矢量进行路由传输的路由协议,OSPF有更健康的传输机制,适用于任何规模的网络。

OSPF是如何工作的?

每台OSPF路由器根据自己周围的网络拓扑结构生成LSA(链路状态通告),并发送给周围的OSPF路由器;每台路由器都会收集其他路由器的LSA,所有LSA放在一起便组成了LSDB(链路状态数据库)。OSPF路由器将LSDB转换成一张拓扑图,再根据SPF算法算出到每个节点的最短路径。

OSPF的特点

1.适应范围广:OSPF协议支持各种规模的网络,最多可支持几百台路由器。

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

3.无自环:由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。

4.区域划分:OSPF协议允许自治系统的网络被划分成区域来管理。路由器链路状态数据库的减小降低了内存的消耗和CPU的负担;区域间传送路由信息的减少降低了网络带宽的占用。

5.等价路由:OSPF支持到同一目的地址的多条等价路由。

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

7.支持验证:OSPF支持基于接口的报文验证,以保证报文交互和路由计算的安全性。

8.组播发送:OSPF在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。

OSPF的优点

1.Open,开放,兼容性好,各厂家支持。

2.SPF算法为树形算法,清晰区域内真实网络拓扑,路由计算精确,无环

3.相对于RIP,没有跳数限制,可支持中大型网络。

4.相对于RIP,收敛速度更快

5.相对于RIP,以接口Cost(默认由带宽决定)来判断路由优劣,而不是基于跳数。

OSPF的区域

一个OSPF网络可以划分为多个区域(Area),如果只包含一个区域,则这样的OSPF网络称为单区域OSPF网络;如果一个OSPF网络包含了多个区域,则这样的OSPF网络称为多区域OSPF网络。

在OSPF网络中,每一个区域都会有对应的编号,Area-ID,其中ID可以是任意十进制数字。一般称Area-ID为0 的区域称为骨干区域,其他区域称为标准区域。单区域的OSPF网络只包含一个区域,所以这个区域必须是骨干区域(不用Area 0照样可以,只是不利于扩展)。在多区域的OSPF网络之中,所有非骨干区域的网络都必须与骨干区域直接相连,非骨干区域不允许直连。所以,标准区域之间的通信必须通过骨干区域中转才能进行。

OSPF区域中的4种路由器

IR:如果一台OSPF路由器属于单个区域,即该路由器所有接口都属于同一个区域,那么这台路由器称为IR(Internal Router)。

ABR:如果有一台路由器的某些接口属于Area 0,其他接口属于别的区域,则这样的路由器被称为ABR(区域边界路由)。

ASBR:如果有一台路由器是与本网络(OSPF)之外的网络(例如RIP、EIGRP、静态路由等)相连,且将外部网络的路由信息引入本网络,这样的路由器称为ASBR(自治系统边界路由器)。

骨干路由器(Backbone Router):该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。



OSPF中支持的4种网络类型

1.广播类型(Broadcast)

2.NBMA类型Non-Broadcast Multi-Access)

3.点到多点P2MP类型(Point-to-Multipoint)

4.点到点P2P类型(point-to-point)

链路状态LSA

OSPF是一种基于链路状态的路由协议,相对于RIP协议通过矢量判断路径的跳数,它更注重路径的状态。链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等。在OSPF网络中,路由器会毫无保留的把自己所有的链路状态发送给邻居。邻居将收到的所有LSA信息放入链路状态数据库,邻居再发送给邻居,再传递过程中,不会有任何修改。这样,网络中所有的OSPF路由器都拥有整个网络的链路状态,能通过链路状态描绘出相同的网络结构。


OSPF的5种数据报文

1.Hello报文:周期性发送,用来发现和维持OSPF邻居关系。

2.DD报文:描述本地LSDB(Link State Database链路状态数据)的摘要信息,用于两台设备进行数据库同步。

3.LSR报文:用于向对方请求所需的LSA。

4.LSU报文:用于向对方发送其所需要的LSA。

5.LSAck报文:用来对收到的LSA进行确认。


OSPF建立邻接关系过程的7个状态

1.down :双方路由器没有进行任何交互

2.Init:此状态只能交换hello报文,无任何其他信息

3.Two-way:hello报文交换之后,达到two-way状态,建立邻居关系

4.Exstart:进行主从关系选举,确定谁先发送DD报文

5.Exchange:交互DD报文,建立各自拓扑表。

6.Loading:请求对方路由信息,交互LSA,LSU,LSACK报文

7.Full:建立邻接关系,LSDB同步。

邻居和邻接

在OSPF中,邻居(Neighbor)和邻接(Adjacency)是两个不同的概念。

OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文。收到Hello报文的OSPF路由器会检查报文中所定义的参数,如果双方一致就会形成邻居关系。

形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,交换LSA并达到LSDB的同步之后,才形成真正意义上的邻接关系

OSPF的建立过程

OSPF的建立过程可以简单分为以下3个过程

建立邻居关系

建立各自的拓扑表

建立邻接关系


建立邻居关系。

双方路由器初始为down状态,连接之后进入init状态,开始互相交换hello数据包,通过hello报文得到路由器基本信息之后,进入two-way状态,开始建立邻居关系。邻居关系建立之后进入exstart状态。

建立各自的拓扑表

进入exstart状态后确立主从关系,互相交换LSA摘要信息之后变为exchange状态


建立邻接关系


正在同步lsdb(链路状态数据库),但还未同步完成,两台设备的关系是loading

完成lsdb同步,进入full状态,成立邻接关系。

©著作权归作者所有:来自51CTO博客作者众元教育的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 浅谈DHCP Relay
  2. 原创 | 工业网络通讯数据分析之Wireshark插件编写
  3. 2、AP上线的那些事儿(1)capwap建立过程、设备初始化以及二层上线
  4. TCP/IP之TCP报文简介
  5. 多厂商***系列之十七:华为AR系列路由器 实现l2tp over ipsec ***
  6. 多厂商***系列之十九:***技术中的MTU问题总结【部署***常遇到的现
  7. 原来我还有网络天赋
  8. 多厂商***系列之三:Cisco EZ***的实现【PC&路由器拨号】
  9. 多厂商***系列之四:Cisco&H3C Dynamic LAN-To-LAN ***【 包含路由

随机推荐

  1. 【转】Mozilla研究—深入理解mozilla所需
  2. 总结一些更多的针对webkit的HTML, CSS和J
  3. 韩顺平_轻松搞定网页设计(html+css+javas
  4. Python-html课程基础复习
  5. html中页面传递参数不用cookie不用缓存,j
  6. sp_send_dbmail在body中嵌入mhtml文件
  7. 2个div内容交换不用innerHTML似乎办不到?
  8. 8.HTML5 CSS3 背景、边框与补丁相关属性
  9. 我想把桌子设置成全高和宽
  10. HTML中上传与读取图片或文件(input file)--