OSPF:开放路径最短优先
链路状态路由协议
基于IP,协议号为89
以组播地址(244.0.0.5和224.0.0.6)发送协议数据包,也支持单播发送
支持验证(明文和MD5)
支持划分区域
支持VLSM和CIDR
支持手工汇总(没有自动汇总)
触发更新,每30min同步LSA
OSPF路由协议
三张表:
邻居表:存放所有的直连邻居的简要信息
拓扑表:整个网络中的LSA的集合,即是LSDB(链路状态数据库)
路由表:存放通过SPF算法计算出来的最佳路由
专业名词:
LSA:链路状态通告,用来描述路由器的本地状态,包括其本身的接口状态和其形成的邻接状态
LSDB:链路状态数据库,LSA的集合
邻居:直连路由器的关系,相互间发送OSPF部分报文
邻接:直连路由器的关系,前提必须是邻居,相互间学习LSA(先说话在学习)
Router-ID:在OSPF网络中,唯一的标示一台运行OSPF协议的路由器,使用点分十进制表示
DR/BDR:指定路由器/备份指定路由器(是接口属性)
DRother:既不是DR也不是BDR的接口
区域:接口的集合,区域的边界点必须在路由器上
区域ID:32位,使用点分十进制或者十进制表示 范围:0~(2^32 -1)
路由器角色的分类:
IR:内部路由器,所有的接口处在同一区域内
BR:骨干路由器,至少有一个接口在0区域
ABR:区域边界路由器,至少有两个接口处在不同的区域,并且有一个一定是0区域
ASBR:AS边界路由器,处在OSPF域和其它域之间
五种报文:
-hello:发现、建立和维护邻居关系;为选举DR/BDR提供参数
hello-interval:周期更新hello报的时间,默认10S
dead-interval:若邻居连续一段时间没有发送hello,认为该邻居失效;默认40S
-DBD:数据库描述报文
包含本地所有的LSA的摘要信息
可靠传输
-LSR:链路状态请求报文
向对端请求本地没有而对端有的LSA2
可靠传输
-LSU:链路状态更新报文
回复对端的LSR,包含某些LSA的详细信息
触发更新LSA
可靠传输
-LSACK:链路状态确认报文
确认对端的LSU、LSR,DD
七种状态机:本地路由器记录对端设备的状态(熟记)
Down:没有启用OSPF的状态;邻居失效后变为该状态
Init:初始化状态,第一次收到对端发来的hello包(包含对端route-id)时,将对端的状态设置为init
2-way:邻居状态,相互间周期发送hello的状态(双方建立会话)
Exstart:交换信息的初始化状态
发送DBD(包含本地的LSA的摘要信息)报文,选举主从路由器(利用HELLO报文中的ID和优先权来进行选举,不允许抢占,DR没了,DBDR才能上)
Exchange:交换信息的状态
该状态下,相互间发送DBD,告知对端本地所有的LSA的目录;同时,可以发送 LSR,LSU,LSACK来学习对端的LSA
Loading:加载状态(没有学习完的状态)
发送LSR,LSU,LSACK,专门学习对端的LSA的详细信息
Full:邻接状态(学习完的状态)
彼此的LSDB同步,即所有的LSA相同
Router-ID的选举规则
1、手工指定,可任意指定,但不能重复
2、最大的loopback口地址
3、最大的物理接口地址(必须是up状态)
邻居建立的条件:(邻居建立是以链路为单位的)
-Router-ID不能相同
-hello-interval和dead-interval相同
-接口的子网掩码必须相同
-区域ID必须相同
-验证必须相同
-特殊区域的flag必须相同
(以上参数在hello包中都有包含)
DR/BDR的选举目的:
-减少整个链路上LSA的泛洪,同时也减少邻接关系的维护
选举原则:
-先比较优先级,以大为优
*优先级范围:0-255
-再比较Router-ID,以大为优
当优先级为0,没有资格参加DR/BDR的选举,只能成为DRother
注意:
每一个链路上都有且仅有一个DR!
DR/BDR是路由器接口的属性。
DR/BDR不支持抢占!
DR/BDR组播地址224.0.0.5,DRother全局监听这个地址
DRother组播地址224.0.0.6,只有DR/BDR监听这个地址(相当于皇上传旨让大臣来见,大臣上奏求见皇上)
区域ID的分类:
骨干区域:0区域,负责OSPF网络中所有的数据转发
非骨干区域:非0区域;非0区域之间不能直接通信,必须经过0区域传输数据。