OSPF基础内容与网络类型实验
概述:
OSPF(开放式最短路径优先)协议是IETF组织开发的一个基于链路状态的AS内部的IGP,广泛运用在接入网和城域网中。
在OSPF出现之前,网络上广泛使用RIP作为内部网关协议。但由于RIP是基于距离矢量算法的路由协议,存在着收敛速度慢、路由环路、可扩展性差等问题,所以最终逐渐被可全面解决RIP的这些问题的OSPF所取代,RIP到现在都有很多小BUG没有解决,已经基本上没有进行使用了。目前针对IPv4的是OSPFv2版本,针对IPv6的是OSPFv3版本,此笔记内容为OSPFv2。
OSPF网络拓扑设计原理:
设计原理:
- OSPF把自治系统划分成逻辑意义上的一个或多个区域,所有其他区域必须与区域0相连。区域0称为骨干区域,一个AS中只能有一个骨干区域。
- OSPF通过RID来标识路由器,RID是一个32比特无符号整数。并且要求在一个AS中每个路由器ID必须唯一,为什么要这么规定呢,我们等会在后面进行讨论。
- 在OSPF中,一条链路只属于一个区域。
设备角色:
- 区域内路由器IR(Internal Router):该类设备的所有接口都属于同一个OSPF区域。
- 区域边界路由器ABR(Area Border Router):该类路由器可以同时属于两个以上的区域,但其中一个接口必须在骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接(虚连接)。
- 骨干路由器BR(Backbone Router):该类路由器至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部路由器都是骨干路由器。
- 自治系统边界路由器ASBR(AS Boundary Router):与其他AS交换路由信息的路由器称为ASBR。ASBR并没有特定的位置要求,它可能位于普通的区域,也可能是ABR。只要一台OSPF路由器引入了外部路由的信息(产生5类或者7类LSA),它就成为ASBR。
OSPF划分区域的原因:
OSPF区域分类:
OSPF定义区域类型为四种:骨干区域(Area0)、 普通区域(Normal Area)、Stub 区域及NSSA区域(两种特殊区域,后续特殊区域专题进行分析)。骨干区域有且只有一个,所有其他区域必须同骨干区域相连,如果没有连接到骨干区域,将不会学到其他区域路由,OSPF中所有区域间路由必须经骨干区域传递。其他区域若没有连接到骨干区域,要使用Vlink连接到骨干区域。
骨干区域不能被分割,一旦分割,必须使用Vlink连接分割的骨干区域使之连续。也可以使用GRE隧道连接被分割的区域, OSPF 这种特殊的分层的设计结构用来避免区域间的路由所致的环路,具体在后续区域间路由计算的时候进行分析。
OSPF网络类型:
四种类型:
OSPF支持的网络类型有四种:ospf中有这么多网络的类型是为了适应不同的网络,例如带宽大的可以多发点报文,带宽小的链路就少发点等等。
- 点到点P2P类型:当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文);自动组播建立邻居,hello 10s,Dead 40s,不选举DR和BDR。
- 点到多点P2MP 类型(Point-to-Multipoint):没有一种链路层协议会被缺省的认为是Point-to-Multipoint 类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中以组播形式(224.0.0.5)发送Hello报文,以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文);只有手动进行部署,组播更新建立邻居,hello30s,Dead 120s,不选DR和BDR。
- NBMA类型(Non-broadcast multiple access):当链路层协议是ATM或FR时,缺省情况下,OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文);只有单播指邻居,因为NBMA的环境中不允许组播和广播的报文,hello30s,Dead 120s,因为是多路访问的环境,也需要选举DR和BDR。
- 广播类型(Broadcast):当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF路由器的预留IP组播地址;224.0.0.6的组播地址为OSPF DR的预留IP组播地址。以单播形式发送DD报文和LSR报文;自动组播建立邻居,hello 10s,Dead 40s,选举DR和BDR。
总结:
不同网络类型之间能否建立邻居关系:
由于特殊的网络结构,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路由协议的工作原理,特别是路由更新机制,需要要对它的各种报文格式有一个全面的了解。OSPF报文主要有5种:Hello报文、DD (Database Description,数据库描述)报文、LSR (LinkState Request,链路状态请求)报文、LSU(LinkState Update,链路状态更新)报文和LSAck(LinkState Acknowledgment,链路状态应答)报文。它们各自在OSPF路由更新中所担当的用途不一样,报文格式也存在比较大的差别。LSA报文是LSU报文中的具体报文,有着不同的种类。
具体格式在OSPF报文格式的专题分析。
OSPF邻接关系建立过程:
R1和R2通过交互Hello报文,建立邻居关系。
涉及三个状态机:down、init、2-way。
在邻居关系建立后,双方交互DD、LSR、LSA、LSAck报文完成数据库同步。
涉及四个状态机:ExStart、Exchange、loading和Full。
具体内容再OSPF邻接关系建立专题分析。
参考资料:华为HCIE培训资料。