个人主页:肚子55叫~的博客
无数人所给予我的信任,
让我震撼心灵与心灵的交流,
具有魔力,我敬畏这种沟通和感应,为之感动。
感谢CSDN让我们相遇
前言:
在前一章中学习了动态路由协议RIP,但是对于某些应用来说,RIP路由协议有一些不足。例如,
计算路径的成本以跳数作为唯一的度量值,不能根据带宽来计算路径成本,跳数最大为15跳,限制
了网络的规模,收敛慢,等等。那么有没有更好的路由协议来替代RIP协议呢?
本章将学习一种新的路由协议OSPF,与RIP相比,OSPF具有更适用于规模较大的网络环境,收
敛更快速,依据带宽来计算路径成本等优点。因此,在实际应用环境中,OSPF的使用更广泛。
目录:
- OSPF概述
- OSPF的工作过程
- OSPF的基本概念
- OSPF的数据包类型
- OSPF邻接关系的建立
一、OSPF概述
开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(LinkState Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Intemet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
二、OSPF的工作过程
运行RIP路由协议的路由器只需要保存一张路由表,而使用OSPF路由协议的路由器需要保存以
下三张表。
- 邻居列表:列出每台路由器已经建立邻接关系的全部邻居路由器,
- 链路状态数据库(LSDB):列出网络中其他路由器的信息,由此显示了全网的网络拓扑。
- 路由表:列出通过Dijkstra算法计算出的到达每个相连网络的最佳路径
这三张表的作用和它们之间的关系如下图所示,运行OSPF 的路由器试图与邻居路由器建立邻
接关系,在邻居之间互相同步链路状态数据库,使用最短路径算法(OSPF依据的算法是Dijkstra算法)
从链路状态信息计算得到一个以自己为树根的“最短路径树”,如上图所示。到最后,每一台路由器都将从最短路径树中构建出自己的路由表,OSPF的路由器也仍然是依据路由表进行数据转发的。
三、OSPF的基本概念
- OSPF区域为了适应大型的网络,OSPF在AS内划分多个区域
- 每个OSPF路由器只维护所在区域的完整链路状态信息区域ID
- 区域ID可以表示成一个十进制的数字也可以表示成一个ASIPArea 0
- 骨干区域Area 1Area 0
- 负责区域间路由信息传播Area 2非骨干区域
1.Router ID
OSPF区域内唯一标识路由器的IP地址
2.Router ID选取规则
①选取路由器loopback接口上数值最高的IP地址;
②如果没有loopback接口,在物理端口中选取
IP地址最高的;
③手动配置——使用命令“router-id”指定。
(loopback:本地回环地址 ***)
3.DR和BDR
DR;指定路由器 BDR:备份指定路由器
运行 OSPF 的路由器通过与邻居路由器建立邻接关系,互相传递链路状态信息。如下图所示,
路由器A.B.C、D、E连接在同一广播网段上,如果每两个路由器之间都要建立邻接关系,那么,
就会构成n(n-1)/2个邻接关系,每台路由器都要与其他所有的邻居路由器互相传递链路状态信息,
这时情况就会显得比较混乱,而且也会浪费许多不必要的网络资源,为了避免这些问题的发生,可以在该网段上选举一个指定路由器(Designated Router,DR)。由DR 同网络中的其他路由器建立邻接关系,并负责将网段上的变化告知它们.网络上的每一台路由器都和DR构成一个邻接关系,那么只需要建立n-1个邻接关系就可以了。
其他路由器
4.DR和BDR的选举方法
自动选举DR和BDR
•网段上Router ID最大的路由器将被选举为DR,第二大的
将被选举为BDR
手工选择DR和BDR
•优先级范围是0~255,数值越大,优先级越高,默认为1
•如果优先级相同,则需要比较Router ID
•如果路由器的优先级被设置为0,它将不参与DR和DBR
的选举
四、OSPF的数据包类型
OSPF 信息不使用TCP或UDP,它承载在IP数据包内,使用协议号89(十进制)。
OSPF 路由协议依靠五种不同类型的包来标识它们的邻居及更新链路状态信息。这五种类型的包,使得 OSPF 具备了高级和复杂的通信能力。
五、OSPF邻接关系的建立
OSPF启动的第一个阶段是使用Hello报文建立双向通信的过程
OSPF启动的第二个阶段是建立完全邻接关系
名词解释:
1)失效(Down)状态
这是 OSPF 建立交互关系的初始化状态,路由器没有与任何邻居交换信息。
2)初始(Init)状态
路由器的各个接口通过224.0.0.5发送Hello报文,这里以R1发送Hello报文为例。当邻居路由
器 R2 收到第一个Hello报文后,就进入Init状态。在该状态下,路由器R2已经接收到Hello报文,
但自身的ID并没有出现在该Hello报文内。
3)双向(2-Way)状态
路由器R2向路由器R1发送一个Hello回应报文,该Hello回应报文含有路由器R1的ID。当路由
器R1 收到该Hello回应报文,发现含有自身的D.这时就进入2-Way状态,双向通信已经建立。DR
和 BDR 的选举正是在这个状态下完成的。
4)准启动(ExStart)状态
在选举出 DR 和 BDR 之后,路由器就被认为是处于ExStart状态。在该状态下,DR和BDR 与网络
中其他各路由器建立邻接关系。在这个过程中,两个邻接路由器之间建立起一个主/从(Master/Slave)
关系,路由器ID大的作为主路由器,用来发起通信。
5)交换(Exchange)状态
主/从路由器之间交换一个或多个数据库描述包(DBD),路由器进入Exchange状态,DBD包含
的是链路状态数据库中的LSA条目的摘要信息,主/从路由器之间交换DBD时要确保双方都能接
收到。
6)加载(Loading)状态
如果收到的DBD 有更新的LSA条目的摘要信息,路由器将向对方发送链路状态请求包(LSR)
请求更详细的信息,对方路由器用链路状态更新包(LSU)回应该LSR,此过程称为Loading状态。
7)完全邻接(Full) 状态
当路由器之间完成了数据库同步后,它们的链路状态数据库已经完全一致,此时就达到了 Full
状态。
六、OSPF的应用环境
七、OSPF与RIP的比较(如下图所示)
今天的分享到这里就结束了!
永远不要去美化你从未选择的那条路,不要站在现在的角度去批判过去的自己
谢谢大家,再见!