今天我们简单介绍一下OSPF路由协议。比我们之前介绍的RIP(动态路由协议)功能更强大。
OSPF(开放式最短路径优先协议)是居于开放标准的链路状态路由选择协议,它完成各路由选择协议算法的两大主要功能:路径选择和路径交换。
OSPF是内部网关路由协议,在共同管理域下的一组运行相同路由选择协议的路由器的集合为一个自治系统(AS)
自治系统(AS)狭义:运行相同路由协议的一组路由协议;广义:有权自主决定使用哪种路由协议。比如:它可以是一个企业、一座城市或一个电信运营商。
OSPF路由协议
内部网关路由协议(IGP)用于在单一AS内决策路由,内部网关路由协议包括RIP、OSPF等。
OSPF路由协议
外部网关路由协议用于在多个AS之间执行路由。例如BGP就是外部网关路由协议。
OSPF路由协议
IGP是用来解决AS内部通信的,而EGP是用来解决AS间通信的。
OSPF是链路状态路由协议
在之间我们介绍的距离矢量路由协议(RIP),路由器之间互相传递路由表来学习路由信息,距离矢量协议的路由器只知道某个网段可以通过哪个下一跳到达和到达这个这个网络有多少跳等这样的信息,并不了解整个网络拓补结构;
而我们今天介绍的链路状态路由协议(OSPF)通过与邻居建立邻接关系,互相传递链路状态信息,来了解整个网络的拓补信息,在链路状态信息中,包含哪些链路,这些链路与那个路由器相连,连接的成本是多少等信息。
我们通过简单的拓补图来看一下
OSPF路由协议
通过邻居之间交换信息,就是这样
OSPF路由协议
在一个区域内的所有路由器都保存着完全相同的链路状态数据库
运行RIP的路由协议的路由器只需要保存一张路由表,而使用OSPF路由协议的路由器需要保存以下三种表:
1.邻居列表:列出每台路由器已经建立邻接关系的全部邻居路由器;
2.链路状态数据库:列出网络中其他路由器的信息,由此显示了全网的网络拓补;
3.路由表:列出了通过Dijkstra算法计算出的到达每个相连网络的最佳路径。
这三张表之间的关系是:运行OSPF的路由器视图域邻居路由器建立邻接关系,在邻居之间互相同步链路状态数据库,然后使用最短路径算法从链路状态信息计算得出一个以自己为树根的“最短路径树”
OSPF路由协议
OSPF路由协议
OSPF路由协议与RIP路由协议相比,OSPF更适合更大型的网络环境。那么它是如何实现的?
1.OSPF是一种链路状态型的路由协议,不会产生环路问题,因此不需要使用直达跳数等限制来防止环路的产生;
2.OSPF将AS分割成多个小的区域,OSPF的路由器只在区域内部学习完整的链路状态信息,没有必要了解整个AS内部所有的链路状态。
划分区域的目的:1.便于扩展;2.快速收敛。
OSPF路由协议
区域是通过一个32位的区域ID来标识的,区域ID可以是一个十进制的数字,也可以表示成一个点分十进制的数字。(骨干区域的ID必须是0.)
因为运行OSPF的路由器要了解每条链路是连接子啊那个路由器上的,因此,就需要一个唯一的标识来标记OSPF网络中的路由器,每个标识成为Router ID。
Router ID选取规则:
1.选取路由器loopback接口上数值最高的IP地址;
2.如果没有loopback接口,在物理端口中选取IP地址最高的;
3.也可使用“router-id”指定Router ID(手工指定的router ID优先)。
在实际工作中配置OSPF时都需要手工指定路由器的Router ID,这已经成为了一种标准配置。
选举过程中:路由器都具有非抢占性;
运行OSPF的路由器与邻居路由器建立邻接关系,互相传递链路状态信息,
OSPF路由协议
如图这样就显得情况比较复杂,而且会浪费许多不必要的网络资源。
为了避免这些问题的发生,可以在网段上选举一个指定路由器(DR)由DR通网络中的其他路由器建立邻接关系,并负责将网段上的变化情况及时告知其他路由器
OSPF路由协议
为了实现冗余,当DR突然失效时,需要有一个新的DR来接替它,这个路由器称为备份指定路由器(BDR)网络上所有的路由器将和DR、BDR同时形成邻接关系,DR和BDR之间也将形成邻接关系。(如果DR失效了,BDR将称为新的DR,不考虑别的任何情况)
OSPF路由协议
DR和BDR的选举:
自动选举:网段上Router ID最大的路由器将被选举为DR,第二大将被选举为BDR。
手工选举:
1.根据优先级进行选举,优先级越大越有可能称为DR(默认的优先级是1);
2.如果优先级相同,再比较Router ID;
3.如果路由器的优先级设置为0,则表示它不参与DR和BDR的选举。
选举DR和BDR一样都具有非抢占性,就表示如果某个AS中已经有DR和BDR的话,优先级再大,Router ID再大,也不可能替换已经存在的DR和BDR路由器。
组播地址224.0.0.5代表所有参与OSPF的路由器,而组播地址224.0.0.6表示只有DR和BDR路由器侦听,但BDR只侦听不响应。在广播多路访问网络上,链路更新信息先发送到224.0.0.6,再由DR路由器使用组播地址224.0.0.5泛洪更新报文到区域中的其他路由器。
OSPF用来度量路径优劣的度量值成为开销(Cost),是指从该接口发送出去的数据包的出站接口的开销。
OSPF路由协议
OSPF信息不使用TCP和UDP,它承载在IP数据包内,使用协议号89(十进制)
OSPF路由协议依靠五种不同类型的包来标识他们的邻居及更新链路状态信息。
OSPF路由协议
两台路由器运行OSPF路由协议,当它们同时启动时将开始建立邻接关系的过程,需要经历7种状态。
OSPF启动的第一个阶段是使用Hello报文建立双向通信的过程(建立邻居关系)
OSPF路由协议
DR和BDR就是在双向(2-Way)状态下产生的。
OSPF启动的第二个阶段是建立完全邻接关系
OSPF路由协议
根据路由器所连接的物理网络不同,OSPF将网络划分为以下四种类型:
1.点到点网络(s-s串口,邻居肯定是邻接关系,无需选举DR和BDR,在这种网络中OSPF报文的目的地址总是224.0.0.5,一般采用的协议PPP协议、HDLC协议等)
2.广播多路访问网络(以太网,选举DR和BDR,邻居不一定是邻接关系,这种网络也是采用组播的方式发送)
3.非广播多路访问网络(帧中继,选举DR和BDR,这种网络所有的OSPF报文都是单播)
4.点到多点网络(多个点到点的链路的链路集,不用选举DR和BDR,OSPF报文是组播)
使用OSPF的原因:1.网络的规模较大;2.网络的拓补结构为网状;3.其他特殊需求(如快速收敛)4.路由器自身的要求(如果路由器性能较低,将不建议使用OSPF路由协议)
OSPF的特点:1.可适应大规模的网络;2.路由变化收敛速度快(触发更新)3.无路由环;4.支持可变长的子网掩码;5.支持区域划分;6.支持以组播地址发送协议报文。
OSPF和RIP的区别
OSPF路由协议
那我们接下来通过一个简单的拓补图来了解一下如何配置OSPF
OSPF路由协议
接下来我们简单的进行配置一下(建议每台路由器都配置loopback接口,除非路由器坏,要不loopback接口不会出现问题,loopback接口就是虚拟出来的一个接口,并不存在)

R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f0/1
R1(config-if)#ip add 10.1.1.1 255.255.255.252
R1(config-if)#no sh
R1(config-if)#int f1/0
R1(config-if)#ip add 20.2.2.1 255.255.255.252
R1(config-if)#no sh
R1(config-if)#int loopback 0
R1(config-if)#ip add 1.1.1.1 255.255.255.255             #配置loopback接口
R1(config)#int f0/1
R1(config-if)#ip ospf priority 100                                 #针对接口配置优先级,优先级为100
R1(config)#router ospf 1                                             #启动OSPF路由协议,进程号为1(不许为0)
R1(config-router)#router-id 1.1.1.1                             #手工指定Router -ID为1.1.1.1 (建议手动指定loopback的地址)
R1(config-router)#net 1.1.1.1 0.0.0.0 area 0              #宣告网段(注意反掩码)区域是0
R1(config-router)#net 192.168.1.0 0.0.0.255 area 0
R1(config-router)#net 10.1.1.0 0.0.0.3 area 0            #(/30的反掩码就是0.0.0.3)
R1(config-router)#net 20.2.2.0 0.0.0.3 area 0

其他的路由跟这个形式一样
配置完后我们查看一下R1
OSPF路由协议
OSPF路由协议
OSPF路由协议
别的路由器查看的结果跟这个差不多,这样网络肯定就通了
实验完成!愿我们在学习的道路上共同进步,共同努力!加油!