目录
HCIP第二天,不积跬步无以至千里,不积小流无以成江海,希望每次都能坚持听完一天课,做好总结!加油!
一、概念
OSPF:open shortest path first 链路状态路由协议
-
路由信息传递与路由计算分离
-
基于SPF算法
-
以“累计链路开销”,作为选路参考值
Link State(链路状态)指的是路由器的接口状态,在ospf中路由器的某一接口的链路状态包含了
-
该接口的IP地址以及掩码
-
该接口的带宽
-
该接口所连接的邻居
OSPF作为链路状态路由协议,不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由
OSPF工作过程:1、邻居建立 2、同步链路状态数据库 3、计算最优路由
OSPF的路由计算过程可以简化描述为
-
路由器之间发现并建立邻居关系
-
每台路由器残生并向邻居泛洪链路状态信息,同时手机来自其他路由器状态信息,完成LSDB(Link State Database)的同步
-
每台路由器基于LSDB通过SPF算法,计算 得到一颗以自己为根的SPT(shortest path tree),再以SPT为基础计算去往各邻居连接网络的最优路由,并形成路由表。
二、OSPF的5种数据包
-
hello :发现和建立邻居关系、维持、周期保活;存在全网唯一的Router ID,使用IP地址表示;
-
DBD:交互链路状态数据库摘要(即数据库描述包,本地数据库的目录(LSDB目录(所有LSA集合)));
-
LSR:链路状态查询(请求)包,目的是基于DBD包中未知信息进行查询;
-
LSU:链路状态更新包,携带了真正的LSA信息(链路状态通告),路由信息或拓扑信息,单播回复LSR,用于确认LSR请求;
-
LSack:链路状态确认包,对传递LSA信息进行确认,保障可靠性;
三、OSPF的7种状态机 (背熟)
1.down: 未启动协议,一旦启动OSPF协议后,进行hello的收发,进入下一状态;
2.Init(初始化):在此状态下,路由器已经从邻居收到了Hello报文,若自己的Router ID不在所收到的Hello报文的邻居表中,表示尚未与邻居建立双向通讯关系,若收到了携带了自己的RID的hello包,则和对方一起进入下一状态;
3.two-way(双向通信):邻居关系建立的标志;此时进行条件匹配,若成功,RID大的优先进入下一状态;若失败,则保持邻居关系,hello包10s周期保活即可;
条件匹配:点到点网络直接进入下一状态;MA网络将进行DR/BDR选举 选举DR:
1.比较接口的优先级(0-255),越大越优
2.比较router-id ,越大越优。 注意:DR是接口概念,DR不能抢占,若优先级为0,视为放弃选举
4.Exstart(预启动):使用假的dbd包进行主从选举,RID数值大的优先进入下一状态。
使用类似hello 的DBD进行主从关系选举,route-id数值大为主;优先进入下一状态;若MTU不一样的话,就停留在这个状态,MTU在OSI中是2层或3层 2层的大于3层
主从选举的目的: 在下一状态时,被选举为主路由器的优先将自己的LSDB发送出去
5.Exchange(准交换):使用真正的DBD包进行数据库目录的共享,共享的是LSDB;(交换完成后需要用LSAck包进行确认)
6.Loading (加载):使用LSR/LSU/LSack来获取未知的LSA信息(共享拓扑图)
7.Full(转发):邻接(毗邻)关系建立的标志
以上7种状态串联起来就组成了OSPF的工作过程,整个过程是围绕三个表来进行的,下面根据三张表来详细说明OSPF的工作过程
四、OSPF的3张表
1.邻居表
2.数据库表
3.路由表
启动完协议后(down后),本地使用组播地址224.0.0.5收发OSPF的hello包,若收到的hello包中携带了本地的RID之后,邻居关系建立,生成邻居表;
此时进行条件匹配,匹配失败将维持邻居关系,仅hello包10s周期保活即可;匹配成功者间可以建立邻接关系,邻居间使用DBD进行数据库目录的比对;之后使用LSR查询目录中未知的LSA信息,对端使用LSU来携带传递LSA,最终需要LSack进行接收确认;当本地收集到区域内所有设备的LSA后,生成LSDB—链路状态数据库表;
本地基于LSDB启用SPF算法,计算到达所有未知网段的最短路径,然后将其加载到路由表内;
两种关系的建立标志
邻居关系:two-way双向通信
邻接关系:Full状态