OSPF(开放式最短路径优先)协议是IETF组织开发的一个基于链路状态的AS内部的IGP,广泛运用在接入网和城域网中。
在OSPF出现之前,网络上广泛使用RIP作为内部网关协议。但由于RIP是基于距离矢量算法的路由协议,存在着收敛速度慢、路由环路、可扩展性差等问题,所以最终逐渐被可全面解决RIP的这些问题的OSPF所取代,RIP到现在都有很多小BUG没有解决,已经基本上没有进行使用了。目前针对IPv4的是OSPFv2版本,针对IPv6的是OSPFv3版本,此笔记内容为OSPFv2。
设备角色:
OSPF定义区域类型为四种:骨干区域(Area0)、 普通区域(Normal Area)、Stub 区域及NSSA区域(两种特殊区域,后续特殊区域专题进行分析)。骨干区域有且只有一个,所有其他区域必须同骨干区域相连,如果没有连接到骨干区域,将不会学到其他区域路由,OSPF中所有区域间路由必须经骨干区域传递。其他区域若没有连接到骨干区域,要使用Vlink连接到骨干区域。
骨干区域不能被分割,一旦分割,必须使用Vlink连接分割的骨干区域使之连续。也可以使用GRE隧道连接被分割的区域, OSPF 这种特殊的分层的设计结构用来避免区域间的路由所致的环路,具体在后续区域间路由计算的时候进行分析。
四种类型:
OSPF支持的网络类型有四种:ospf中有这么多网络的类型是为了适应不同的网络,例如带宽大的可以多发点报文,带宽小的链路就少发点等等。
总结:(图中)
网络类型 | 操作方式 |
---|---|
NBMA | 单播发送所有报文(需手动单播指邻居):HELLO 30 DEAD 120 |
P2P | HDLC、PPP:组播发送所有报文:HELLO 10 DEAD 40 |
P2MP | 需要手动修改;组播发送HELLO(单播发送其它:HELLO 30 DEAD 120 |
Broadcast | Ethernet组播发送HELLOLSU、LSACK,单播发送DD、LSR:HELLO 10 DEAD 40 |
不同网络类型之间能否建立邻居关系:
由于特殊的网络结构,NBMA网络只能和NBMA网络进行邻居的建立。
P2MP和P2P,具体计算拓扑的方式一致,只要hello和dead时间一致的话也能建立好邻居,如果不一致肯定是无法正常建立的,例如一端的dead时间为40s,另一端的hello时间为50s,这样在死亡时间结束后都没有办法收到对方的hello报文,就认为邻居消失,但是又经过10s,又收到了hello报文,就十分的不合理,所以最后要求必须hello和死亡时间相同才能建立邻居关系,报文内带有相应的参数,通常情况下dead时间是hello时间的4倍。
Broadcast和P2P或者P2MP时间间隔一致后,能正常建立邻居,但是因为Broadcast接受信息以后进行路由的计算是按照多路访问环境计算的,而P2P或者P2MP是按照点到点链路的方式进行计算的(具体计算的差别在后面进行相应的分析)所以无法正常计算出路由条目来。
实验:验证不同网络类型之间建立邻居关系的情况
模拟器:eNSP
因为目前以太网链路,默认是识别的为broadcast网络,我们查看邻居关系:
观察路由条目是否学习到,在R1上:已经能够正常学习到路由
现在将R2的一端修改为P2P模式:
[R2-GigabitEthernet0/0/0]ospf network-type p2p
因为hello时间和dead时间还是没有改变,邻接关系是应该能够正常建立的:
但是现在查看是否能学习到路由条目:没有学习到
现在将R1这端修改为P2MP,然后查看邻居关系能否正常建立:
[R1-GigabitEthernet0/0/0]ospf network-type p2mp
查看邻居关系:建立不成功,因为hello时间和dead时间不一致
现在我们将R1这端hello和dead时间修改为10s和40s:
[R1-GigabitEthernet0/0/0]ospf timer hello 10 //dead time自动变为原来的hello time的四倍
现在查看邻居关系建立是否完成:建立成功
查看是否获得了路由条目:成功获取路由条目
注意:
建议配置的dead时间大于20秒。如果失效的时间小于20秒,可能会造成邻居会话的中断。 修改了网络类型后,Hello与Dead定时器都将恢复缺省值。
要理解OSPF路由协议的工作原理,特别是路由更新机制,需要要对它的各种报文格式有一个全面的了解。OSPF报文主要有5种:Hello报文、DD (Database Description,数据库描述)报文、LSR (LinkState Request,链路状态请求)报文、LSU(LinkState Update,链路状态更新)报文和LSAck(LinkState Acknowledgment,链路状态应答)报文。它们各自在OSPF路由更新中所担当的用途不一样,报文格式也存在比较大的差别。LSA报文是LSU报文中的具体报文,有着不同的种类。
具体格式在OSPF报文格式的专题分析。
R1和R2通过交互Hello报文,建立邻居关系。
涉及三个状态机:down、init、2-way。
在邻居关系建立后,双方交互DD、LSR、LSA、LSAck报文完成数据库同步。
涉及四个状态机:ExStart、Exchange、loading和Full。
具体内容再OSPF邻接关系建立专题分析。
参考资料:华为HCIE培训资料。