一、OSPF特点
OSPF(Open Shortest Path First)即为开放式最短路径优先协议,采用dijkstra(SPF)即最短路由优先算法。基于IP协议封装,协议号为 89,使用范围:IGP。
特点:
- OSPF 是一种典型的链路状态型路由协议
- 传递的信息称作LSA,LSA 链路状态通告,其包含路由信息(描述本路由器上接口的路由信息)和拓扑信息(描述路由器之间的连接状态)
- 更新方式: 触发更新+30分钟的链路状态刷新
- 更新地址: 组播和单播更新,组播地址: 224.0.0.5(ALL SPFrouter) 224.0.0.6 (ALL DR router)
- 支持区域划分
- 支持路由认证
- 支持手工汇总
二、OSPF区域
区域划分的意义:
- 减少LSA的数量
- 减少LSA的传播范围
区域的标记:
- 十进制
- 32个二进制
区域的分类:
- 骨干区域: 区域标记为0或0.0.0.0
- 非骨干区域:区域标记不等于0或0.0.0.0
区域设计原则:(类似于向日葵型网络结构)
- OSPF网络中必须存在并唯一的骨干区域(单区域除外)
- 若存在非骨干区域,非骨干区域必须与骨干区域直接相连
OSPF中路由器的角色:
- 骨干路由器:路由器的所有接口都属于骨干区域
- 非骨干路由器:路由器的所有接口都属于非骨干区域
- ABR:区域边界路由器,能够产生3类LSA的路由器
- ASBR:自治系统边界路由器,能够产生5类或7类LSA的路由器(比如:将非OSPF协议的路由引入到OSPF当中)
三、OSPF消息数据包
1.Hello
周期性发送,周期时间10s或30s(根据不同的网络类型默认10s或30s)
目的:建立并维持OSPF 邻居关系(邻居关系建立之后充当保活包功能)
Auth Type和Auth Data分别为路由认证的类型和数据
Hello Interval和Router Dead Interval分别为Hello时间和死亡时间,其比例是1:4
Router Priority:DR优先级,DR选举时使用
NP:N代表是否支持7类LSA,P代表是否支持7转5类LSA
E:是否支持5类LSA
2.DBD
数据库描述数据包,会进行主从选举:比较双方的router-id ,router-id大的一方为主 (master ),小的一方为从 (slave)其主要用于控制LSA的交互。
Interface MTU:接口最大传输单元,主从接口MTU必须保持一致
R:保留位。
I:初始化位。第一个发送的包显示为1,其余为0。
M:更多位。最后一个包显示为0,其余为1。
MS:主从位。如果为主的话为1(第一次发送都为1)。
DD Sequence:序列号。用于确认(后续从把序列号设置和主一致)。
携带LSA头部信息的DBD:
3.LSR
链路状态请求,按照DBD中报文的对未知LSA头部进行请求。
4.LSU
链路状态更新,携带LSA信息。
5.LSACK
链路状态确认。
四、OSPF邻居状态机制
邻居状态:Down、 init 、 attempt(尝试过渡) 、 two-way 、 exstart 、 exchange 、loading 、full(其中Down和attempt状态一般很难捕捉到)
1.init
初始化状态,一旦开始发送hello报文,进入初始化状态。
2.two-way
双向通信状态(邻居状态),接收到包含自己router-id 的对方hello报文。
邻居关系建立条件(前五条必须):
- router-id 必须不同
- area ID 必须相同
- 认证类型 (不认证=0 明文认证=1 MD5=2) 和认证数据必须一致
- hello时间,dead时间必须一致
- 特殊区域标识(E(外部路由位)、N(NSSA外部路由位)、P)必须一致
- MA网络中,网络掩码相同
- 必须同时使用单播或组播更新
- 更新源检测(双方的IP地址必须在同一网段)
邻居状态下(two-way):
- MA的网络中会选举DR(指定路由器) BDR(备份指定路由器)
DR选举:
- 比较优先级 (范围:0-255,默认优先级为1 ,越大越优)
- 比较各自的router-id,越大越优
注意:
- DR抢占是关闭的
- DR是一个接口概念
- 优先级范围 0-255,数字为0代表不参与选举
- 先选举BDR ,再升级为DR
3.exstart
预启动状态,一旦开始发送主从DBD,则进入预启动状态。
主从选举:发生在exstart状态, 通过双方的router-id进行比较, router-id大的一方为主。
发送的主从选举DBD,DBD中包含了MTU值(默认思科直接启用,华为中默认不包含MTU,可以使用命令激活传递MTU值的功能,若双方的MTU值不相同则卡在exstart 状态)。
4.exchange
预交换,主从选举完成,则发送携带LSA头部信息的DBD,进入预交换状态,会发送LSR数据包。(但是没有LSU)。
5.loading
加载状态,发送LSR对未知LSA头部信息进行请求,通过LSU进行大量LSA的学习,并通过LSACK进行确认。
6.full
邻接状态。请求列表和学习列表空了之后,双方LSA同步(双方LSA全部学习)。
五、OSPF基本配置
[R1]ospf 1 router-id 1.1.1.1 //进入OSPF的进程(协议视图),手工配置 router-id
[R1-ospf-1]area 0 //进入区域模式,宣告直连网段或地址
[R1-ospf-1-area-0.0.0.0]network 192.168.1.32 0.0.0.0 //精确宣告(宣告地址)
[R1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.31 //网段宣告(宣告网段)
Router-id : 路由器标识符,用于标识本路由器在OSPF网络中的唯一性。
OSPF router-id 选举规则:
- 手工指定最优先
- 选举所有逻辑中IP地址最大的
- 选举所有物理接口IP地址最大的
- 华为中: 若以上三点都不满足,则可以创建router-id 为0.0.0.0 ;在使用逻辑或物理接口IP地址时,接口可以是关闭状态;若一台路由器启用了多个OSPF进程,不同进程可以使用相同的router-id(不推荐);
- 思科中:若以上三点都不满足,则无法启用OSPF;在使用逻辑或物理接口时,接口必须双 up ,该接口可以不通告进入OSPF中;同一路由器上多个OSPF进程必须router-id必须不同;
全局模式下可以选择针对所有的OSPF进程修改router-id ;(若同时在接口部署时,接口优先生效)
OSPF查看三张表:
- 邻居表:display ospf peer brief(简单查看)
- LSDB表(链路状态数据库):display ospf lsdb
- OSPF路由表:display ip routing-table protocol ospf
题外:组播MAC地址
1.组播MAC地址构成
- 前24位:01:00:5e
- 第25位:0
- 后23位:将组播IP地址的后23位映射到组播MAC地址
组播IP地址前4个为1110,中间空了5个,后23个映射到组播MAC地址上。
总结:一个组播MAC地址,会拥有32相同的组播IP地址。
2.组播MAC地址计算
将224.0.0.5转化为组播MAC地址
224.0.0.5——1110 0000.0000 0000.0000 0000.0000 0101
01-00-5E-00-00-05——01-00-5E-0000 0000.0000 0000.0000 0101