目录
OSPF:开放式最短路径优先协议
一、OSPF的数据包 -- 5种
二、OSPF的状态机
三、OSPF的工作过程
四、OSPF的基础配置
五、关于OSPF协议从邻居建立成为邻接的条件
六、OSPF的接口网络类型
OSPF:开放式最短路径优先协议
无类别链路状态型IGP协议;由于其基于拓扑进行更新收敛,故更新量会随着拓扑的变大而成指数上升;故OSPF协议为了能在大、中型网络中运行,需要结构化的部署----合理的区域划分、良好的地址规划 正常等开销负载均衡;它是一种跨层封装协议,协议号为89;
组播更新地址为: 224.0.0.5 224.0.0.6 更新机制:触发更新+周期更新(每30min)
距离矢量 DV | 链路状态LS |
RIP、EIGRP | OSPF、ISIS |
邻居间共享路由条目 | 邻居间传递的是拓扑信息 |
传闻性协议 | 本地计算路由 |
OSPF协议优点分为三方面:
一、OSPF的数据包 -- 5种
OSPF的头部内容
版本:OSPF协议的版本号IPV4版本(OSPFV1,OSPFV2),IPV6版本(OSPFV3),在IPV4环境下一般使用OSPFV2版本
类型:OSPF的数据包的类型
(1)hello包 -- 组播收发,用于邻居、邻接关系的发现、建立、周期保活
(2)DBD -- 数据库描述包-- 本地LSDB(链路状态数据库)目录
(3)LSR---链路状态请求 -- 用于询问对端本地未知的LSA信息
(4)LSU-- 链路状态更新 -- 用于共享具体的每一条LSA信息
(5)LSack 链路状态确认 -- 确认包
路由器ID:发送数据包的路由器的RID
区域ID:代表数据包从哪个区域发出
认证类型:①null,不认证,标识为0;②simple,明文认证,标识为1;③MD5认证,通过对比摘要值进行认证,标识为2
1、Hello包
网络掩码:发出hello包接口配置的IP地址的子网掩码,在华为设备中,要求邻居设备接口的子网掩码必须相同,否则将无法 正常建立邻居关系。注:这个限制只针对以太网。
hello时间以及后面的死亡时间:在建立邻居关系的时候也必须相同,如果不同则将无法正常建立邻居关系。
8位可选项:每一位都代表路由器的某个OSPF特性,8位中存在特殊区域的标记位,如果邻居间特殊区域标记位不同,则也无法正常建立邻居关系。
路由器的优先级:进行DR/BDR选举时使用,代表发出这个数据包的接口的优先级。
指定路由器/备份指定路由器:DR/BDR,一旦DR和BDR选举完成,则将会把DR/BDR对应接口的IP地址携带上。在DR和BDR没选出来或不需要选举时,对应字段使用0.0.0.0来填充。
接口的最大传输单元(MTU):华为设备默认不进行MTU值的检测,所以,一般携带值为0。可以通过命令开启MTU值的检测,但注意,MTU值要求邻居双方必须相同,不同可能导致邻居关系停留在EXSTART状态。
I(Init):该位置1,则代表这个数据包是用来进行主从关系选举的,主从关系选举的数据包将不携带LSA头部信息(LSDB摘要信息)
M(More)该位置1,则代表该DBD包后面还有更多的DBD包。置0则代表该数据包为最后一个DBD包。
MS(Master)该位置1,则代表这个DBD包由主发送,置0则代表由从发送
序列号:在DBD包交互过程中,会逐次加1,用来确保DBD报文传输的有序性,同时还可以进行隐形确认,保证DBD包传输的可靠性。
3、LSR包
链路状态类型,链路状态ID,通告路由器---可以唯一的标定出一条LSA 信息,为我们将他们称为LSA的“三元组”
4、LSU包
5、LSACK包
LSA --- 链路状态通告:具体的一条一条 路由或者拓扑信息,不是一种数据包,所有的LSA是使用LSU这种包来转发的;
OSPF的数据包是跨层封装于3层报头后方 ,协议号89
二、OSPF的状态机
两台OSPF路由器间不同关系的阶段、
1、Down 一旦接收到对端的hello包进入下一个状态
2、Init 初始化 若接收到的hello包中存在本地的RID,那么进入下一个状态机
3、2way 双向通讯 邻居关系建立的标志
条件:点到点网络直接进入下一个状态机;MA网络进行DR/BDR选举,非DR/BDR之间不能进入下一个状态机;
4、Exstart预启动 使用不携带数据库目录信息的DBD包,进行主从关系的选举,RID数值大为主,优先进入下一个状态机
5、exchange准交换 使用携带数据库目录信息的DBD包,进行目录共享,需要ACK确认
6、loading加载 接收到其他邻接的目录信息后,和本地进行比对,若本地存在未知的LSA信息,将使用LSR询问对端,对端使用LSU来更新这些LSA信息,直至双方数据库一致;
注:LSU需要ACK确认;
7、Full 转发 标志着邻接关系已经建立;
三、OSPF的工作过程
1、路由器上启动OSPF协议后,直连的邻居间,开始组播收发hello包,hello包中将存储本地已知邻居的RID,在双方RID均已知的情况下,建立邻居关系,生成邻居表;
2、邻居关系建立后,邻居间将进行条件匹配,匹配失败将停留为邻居关系,仅hello周期保活即可;匹配成功者间将进行邻接关系的建立;
3、邻接关系间的路由器,将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息;使得同一区域内所有路由器的数据库完全一致;---- 数据库表;
4、当本地数据库完成同步后,将数据库-->有向图-->树型结构图-->将本地到达所有未知网段的最短路径加载于本地路由表中;
5、收敛完成后,仅hello包周期保活即可;正常每30min,邻接关系间再进行一次DBD的对比,若一致及正常;若不一致将马上进行同步;
结构突变:触发更新
四、OSPF的基础配置
1、启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1
启动时,定义进程号,仅具有本地意义;建议配置RID;
RID格式为ipv4地址,且需要全网唯一; 手工配置--环回接口上取最大数值的ip地址---物理接口上最大ip地址的数值
2、创建区域
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
3、宣告网段 --- 自己的路由器上直连什么网段就宣告什么网段
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
宣告:1、区域划分 2、接口激活协议 3、传递接口信息
区域划分规则:
启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表:
hello包 --- 组播收发,周期发送 --- hello time 10s 或30s dead time 为hello time 4倍
邻居间hello包中有一些参数必须完全一致,否则无法建立邻居关系;
Hello 和dead time 、区域ID、认证参数、末梢区域标记;另外在华为的设备中OSPF要求邻居间接口上配置的ip地址,其掩码长度必须一致;
[r1]display ospf peer
#查看OSPF邻居表
[r1]display ospf peer brief
#查看OSPF邻居关系简表
当邻居关系建立后,邻居间进行条件匹配,匹配失败,将保持为邻居关系;匹配成功,将建立为邻接关系,邻接关系将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息,同步生成数据库表 --- LSDB (链路状态数据库)
[r1]display ospf lsdb
#查看数据库表
[r1]display ospf lsdb router 2.2.2.2
#查看一条LSA信息
数据库表同步完成后,邻接间的互动完成,仅hello包保活;之后本地基于本地的数据库表转换为有向图,再转换为树形结构,最终将本地到达所有未知网段的最短路径,加载于本地的路由表中:
display ip routing-table protocol ospf
查看OSPF路由协议的优先级
默认ospf协议在华为设备中,优先级为10;度量为cost值
cost值=开销值= 参考带宽/接口带宽 默认参考带宽为100M
ospf协议将cost值之和最小定义为最佳路径,加载于本地路由表中
若接口带宽大于参考带宽,cost值为1,将可能导致选路不佳;可以修改默认的参考带宽
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
切记:一旦修改,整个网络所有ospf路由器需要一致;
关于ospf的MTU问题
在ospf协议的DBD包中将携带本地接口的MTU值,若两端一致可以正常建立邻居关系;若不一致将无法建立邻接关系;
默认华为设备不携带MTU;
[r1-ospf-1] int g0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable 两端设备均需开启
五、关于OSPF协议从邻居建立成为邻接的条件
根据网络类型决定:
1、在点到点网络中,所有的邻居关系必然成为邻接关系
2、在MA网络中从邻居到邻接前将利用一个周期的dead time;进行DR/BDR选举;
先比较这些参选接口的优先级,默认1,取值范围0-255;越大越好,0标识不参选;
DR优先级最大,BDR次大;选举非抢占,故若希望干涉选举,需要重启ospf进程,或者将非DR/BDR修改为0;
[r2]interface GigabitEthernet 0/0/1
[r2-GigabitEthernet0/0/1]ospf dr-priority 3 修改优先级
重启进程
reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
非DR/BDR间为邻居关系;
六、OSPF的接口网络类型
OSPF协议在不同的网络类型,其工作的方式不同
[r1]display ospf interface GigabitEthernet 0/0/1
以下为OSPF接口信息
OSPF Process 1 with Router ID 1.1.1.1
Interfaces
Interface: 12.1.1.1 (GigabitEthernet0/0/1)
Cost: 1 State: DR Type: Broadcast MTU: 1500
网络类型 | OSPF接口网络类型 | ||
LoopBack | P2P(LoopBack) | 无hello包 | 环回使用32位主机路由 |
点到点(PPP/HDLC/GRE) | P2P | 10s hello time | 不选DR/BDR |
BMA(以太网) | Broadcast | 10s hello time | 选DR/BDR |
NBMA(MGRE) | P2P | 30s hello time | 选DR/BDR |
在tunnel接口上,ospf的默认工作方式为P2P,这种工作方式,只能建立一个邻居关系,故在MGRE环境中将无法正常工作;
修改接口的默认工作方式:
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ospf network-type ?
broadcast Specify OSPF broadcast network
nbma Specify OSPF NBMA network
p2mp Specify OSPF point-to-multipoint network
p2p Specify OSPF point-to-point network
切记:一个网段中所有接口的ospf工作方式必须一致;否则将无法建立邻居关系,或者因为不同工作方式的hello time一样,错误建邻,无法收敛;
当MGRE环境中,使用OSPF,且所有tunnel接口修改为broadcast工作方式后,必须基于拓扑接口考虑DR位置问题
MGRE可以构建不同的拓扑结构: