一.ospf的概念:ospf是由IETF定义的一种基于链路状态的内部网关路由协议
1.基于IP协议89
2.目前针对IPv4协议使用的是OSPFv2(RFC2328)
3.目前针对IPv6协议使用的是OSPFv3(RFC2740)
二.OSPF优点:
1.基于SPF算法,以“累计链路开销”作为选路参考值
2.采用组播形式收发部分协议报文
3.支持区域划分
4.支持区域认证
5.支持对等价路由进行负载分担
6.支持手工路由汇总
7.可伸缩性和快速收敛
8.在互联网上大量使用,是运用最广泛的路由协议
三.OSPF的三张表
1.领居表:存放领居的相关信息
领居关系→只要hello报文能够被对方发现并认可,就可以建立邻居关系
建立邻居关系的条件:
①地址以及掩码要一致
②hello time和dead time要一致
③区域要一样
④认证类型要一样
⑤特殊区域要一样
邻接关系:设备要形成邻居之后,互换hello报文,但是不一定会互换LSA报文,只要设备能交换LSA报文,就能成为邻接状态(full)
2.拓扑表:存放每台设备对整个网络的认知
3.路由表:用于存放从数据库中运行SPF算法得到的最优路径
路由类型:
- O:同一区域之间
- O IA:不同区域之间
- O E1/E2:通过重分发的方式从其他路由协议学习到的(O E1:在OSPF区域中传播时,开销是会进行累加的。 O E2(默认为O E2):在OSPF区域中传播时,开销保持不变,永远为20)
- O N1/N2:只有在NSSA区域才会产生,属于NSSA区域的外部路由
修改开销和带宽:1.R1(config-if)#ip ospf cost 50
2.R1(config-if)#bandwidth 1000
四.OSPF的五个报文
1.hello报文:
用来发现、建立、维持邻居之间的关系
主要参数:区域、hello time、dead time、优先级、认证类型、组播地址
2.DD:数据库的摘要
用于向邻居通告自己所知道LSA的摘要信息
参数:I:init(初始位,最开始为1,表示自己是第一个)
M:More(M置1,表示后面还有很多报文,我不是最后一个)
MS:主从关系(值为1,则为主;值为0,则为从,最开始的都是1,认为自己是主,通过RID的选举,最大的为主)
3.LSR:链路状态请求包
根据DD,设备会向邻居发送LSR,告诉邻居自己需要哪些LSA相关信息
4.LSU:链路状态更新包
邻居接收到其他路由器发过来的LSR,根据LSR将邻居需要的完整LSA内容全部发送
5.LSAck:链路状态确认包
对邻居发送过来的学习进行确认
五.OSPF七个状态
Down:没有收到其他设备的hello包,刚刚启用OSPF进程
1.Init:初始化状态(单向通信),接口刚启用OSPF,往组播地址224.0.0.5中发送hello包,同时也会收到其他设备发来的hello包
2.two-way:邻居关系(双向通信状态),在组播地址中收到其他设备的hello包,并且对方添加了网段RID的hello
3.Exstart:预启动状态,交换DBD,在交换DBD报文之前会选举主从关系,由主导链路状态信息的交流(两遍的MTU值不一样)
4.Exchange:交换状态,先进行数据库摘要的交换,然后再进行详细信息的交换(LSR、LSU、LSAck)
5.Loading:加载状态,在加载LSA的过程
6.Full:邻接状态,双方数据库到达同步的状态
7.Attempt(特殊):尝试状态,只有可能出现非广播多路访问环境中,想要建立OSPF的邻居关系,但不知道发数据包给谁
六.OSPF的网络类型
1.以太网链路:
- 广播多路访问环境
- 需要进行DR和BDR的选举
- 可以发送组播hello报文
- hello time(10s)
2.串行链路:
- 点对点
- 不需要进行DR和BDR的选举
- 发送组播的hello报文
- hello time(10s)
3.回环接口:
- 网络类型是loopback,相当于一种主机接口,邻居会默认学习到/32位的路由
- 如果想要邻居学习到准确的路由信息,可以在接口内修改网络类型为点对点
4.非广播多路访问环境(NBMA):
- 早期的广域网链路
- 不能发送组播的hello包
- 可以发送单播的hello
- hello time(30s)
今天和大家分享一些关于ospf的知识,希望对大家有所帮助💛觉得有帮助的友友们可以点赞关注收藏,谢谢支持!💛如果有建议欢迎随时向我提出(◦˙▽˙◦)💛