动态路由协议OSPF(一种基于链路状态的内部动态路由协议):
OSPF可以用来学习路由,相比于RIP更好。少量设备做静态路由也许OK,但是面对大量设备时,动态路由协议明显更好。
OSPF不仅可以在区域里配置,也可以在接口下(ospf enable命令的优先级高于network命令)
ospf enable process-id area area-id
OSPF的优点:
采用SPF算法,将cost作为参考值。(SPF算法也用于OSPF防环)
采用组播形式收发部分协议报文
可以做区域划分
支持对等价路由进行负载分担
支持报文认证
区域划分:OSPF可以将一个大型的网络划分成一个个区域,这样既可以减少路由器的负担,也可以保证一定的安全性,某个区域出了事,其他区域不会受到影响。
值得注意的是,非骨干区域(area N)一般要与骨干区域(area 0)相连,这其实也是ospf的一个防环机制。如果出现了一个非骨干区域没有和骨干区域相连,那么临时的解决办法是建立虚连接Vlink peer。(只是临时的办法!!!)
OSPF的一些基本知识:
Route ID:是区域内每台路由器独有的ID,可以手动配置,不手动配的话,会先选Loopback接口中最大的那个ip地址作为Route ID,没有loopback的话,就再选物理接口中最大的那个。
我一般会用路由器的顺序或环回地址作为Route ID,这样子比较好记。
Tips:不同区域间是可以出现重复的Route ID,但是不建议这样,毕竟不太好分辨。。。。
display route id
OSPF区域:区域id是一个32bit的非负整数,例如0.0.0.1。
COST值:cost值的计算方法是100Mbit/s/接口带宽,小于1则结果取1。
修改cost值 ospf cost 【cost-value】
OSPF三表-邻居表、LSDB、OSPF路由表
邻居表:OSPF在传递路由信息之前,需要先通过HELLO报文建立邻居关系,后续维持邻居关系也是用HELLO报文。
查看邻居信息 display ospf peer 查看摘要信息 display ospf peer brief
LSDB:LSDB中包含了自己以及从邻居那里收集到的LSA信息。
查看LSDB display ospf lsdb
OSPF路由表:包含与ospf相关的路由信息,与路由器的路由表不是一个东西。
OSPF报文:ospf定义了五种报文,直接采用IP封装,IP头部中协议号为89
TYPE 报文名称 功能
1 HELLO 建立和维持邻居关系
2 DD 交互链路状态数据库摘要
3 LSR 请求特定的链路状态信息
4 LSU 发送详细的链路状态信息
5 LSA 确认LSA
OSPF工作过程:
通过HELLO报文发现直连链路上的邻居
协商主从 master/slave
交互LSDB摘要信息
更新LSA,同步LSDB
计算路由
OSPF建立连接的过程(尝试陈述?)
两台路由器启用ospf,一开始都处于DOWN的状态,也就是邻居没有发送任何信息。
路由器开始发送HELLO报文,收到邻居的报文后进入init状态,注意,此时的状态我们会发现邻居并不知道我们的存在,也就是单纯的打出招呼。
当我们互相发送HELLO,发现邻居给我的HELLO包里有我们的route id,也就意味着邻居关系基本建立,此时便处于2-way状态。如果此时网络是MA网络,那就还需要选举DR。
由于OSPF的DR选举机制,只有DR、BDR会和其他设备建立邻接。Dother之间该怎么知晓对方的Route ID。此时,就需要通过DR、BDR来实现。也就是other之间是处于2-way状态
接下来对HELLO报文进行分析:
首先从OSPFHELLO报文的头部看起
Version 2也就是ipv4使用的版本
是hello包
源路由器是12.1.1.2,属于area 0骨干区域
校验和为0xc890
验证方式和验证密码都没有
发送此报文的接口,子网掩码是24
发包间隔为10s
接下来分析Options
不是NSSA类型,不支持转发组播数据包,支持外部路由,不是多拓扑结构(?)
DR优先级为1,死亡间隔为40秒(死亡间隔是发送间隔的4倍),DR是12.1.1.1,BDR是12.1.1.2,邻居是.1。