Open Shortest Path First OSPF
,开放的最短路径优先协议,是IETF组织开发的一个基于链路状态的内部网关协议,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法,最短路径优先并没有太多特殊的含义,并没有任何一个路由协议是最长路径优先的,所有协议,都会选最短的。
OSPF针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)
目的:
在OSPF出现前,网络上广泛使用RIP(Routing Information Protocol)作为内部网关协议。
由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。
OSPF作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF还有以下优点:
- OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
- OSPF支持无类型域间选路(CIDR)。
- OSPF支持对等价路由进行负载分担。
- OSPF支持报文加密。
由于OSPF具有以上优势,使得OSPF作为优秀的内部网关协议被快速接收并广泛使用。
OSPF协议特点:
- OSPF把自治系统AS(Autonomous System)划分成逻辑意义上的一个或多个区域;
- OSPF通过LSA(Link State Advertisement)的形式发布路由;
- OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一;
- OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。
OSPF工作流程
寻找邻居
OSPF协议运行后,先寻找网络中可与自己交互链路状态信息的周边路由器,可以交互链路状态信息的路由器互为邻居
建立邻居关系
邻接关系可以想象为一条点到点的虚链路,他是在一些邻居路由器之间构成的。只有建立了可靠邻接关系的路由器才相互传递链路状态信息。
链路状态信息传递
OSPF路由器将建立描述网络链路状态的LSA Link State Advertisement,链路状态公告,建立邻接关系的OSPF路由器之间将交互LSA,最终形成包含网络完整链路状态的配置信息。
计算路由
获得了完整的LSBD后,OSPF区域内的每个路由器将会对该区域的网络结构有相同的认识,随后各路由器将依据LSDB的信息用SPF算法独立计算出路由。
Router ID
OSPF Router-ID用于在OSPF domain中唯一地表示一台OSPF路由器,从OSPF网络设计的角度,我们要求全OSPF域内,禁止出现两台路由器拥有相同的Router-ID。
OSPF Router-ID的设定可以通过手工配置的方式,或者通过协议自动选取的方式。当然,在实际网络部署中,强烈建议手工配置OSPF的Router-ID,因为这关系到协议的稳定。
实验:单区域OSPF配置
配置两台路由器
|
|
整理配置
|
|
配置ospf协议
|
|
可以看到对应的已经学习到动态的路由
|
|
配置完成后可以看到对应的报文与状态
|
|
ospf的八种状态
在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。
邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。
邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。
OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
- Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
- Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。
- Init:收到Hello报文后状态为Init。
- 2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
- Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。
- Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange。
- Loading:DD报文交换完成即Exchange done,此时状态为Loading。
- Full:LSR重传列表为空,此时状态为Full
实验 多播网络ospf关系
在广播多路访问网络(Multi Access)中,所有的路由器的接口都是相同网段,这些接口两两建立OSPF邻居关系,这就意味着,网络中共有:n(n-1)/2
。维护如此多的邻居关系不仅额外消耗资源,更增加了网络中LSA的泛洪数量。
为减小多路访问网络中的 OSPF 流量,OSPF 会在每一个MA网络(多路访问网络)选举一个指定路由器 (DR)和一个备用指定路由器 (BDR)。
DR选举规则:最高OSPF接口优先级拥有者被选作DR,如果优先级相等(默认为1),具有最高的OSPF Router-ID的路由器被选举成DR,并且DR具有非抢占性。
指定路由器 (DR):DR 负责使用该变化信息更新其它所有 OSPF 路由器(DR Rother)。备用指定路由器 (BDR):BDR 会监控 DR 的状态,并在当前 DR 发生故障时接替其角色。 注意OSPF为“接口敏感型协议”,DR及BDR的身份状态是基于OSPF接口的。
MA网络中,所有的DRother路由器均只与DR和BDR建立邻接关系,DRother间不建立全毗邻邻接关系。如此一来,该多路访问网络中设备需要维护的OSPF邻居关系大幅减小:M= (n-2)×2+1,LSA的泛洪问题也可以得到一定的缓解。
可以查看到对应两种状态的ospf中的角色
|
|
实验:多区域ospf
对两个区域的路由器设置对应的配置
|
|
对边界路由设置双区域
|
|
可以看到已经学习到对应的路由了
|
|
[ospf-test.zip](......\images\Dynamic Routing - OSPF\ospf-test.zip)