目录
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协议优点分为三方面:
- 收敛速度快 2、选择路径佳(前提是防环) 3、占用资源少
OSPF的数据包 -- 5种
1、hello包 -- 组播收发,用于邻居、邻接关系的发现、建立、周期保活
2、DBD -- 数据库描述包-- 本地LSDB(链路状态数据库)目录
3、LSR---链路状态请求 -- 用于询问对端本地未知的LSA信息
4、LSU-- 链路状态更新 -- 用于共享具体的每一条LSA信息
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的对比,若一致及正常;若不一致将马上进行同步;
结构突变:触发更新
- 断开网段 直连断开网段的设备,直接使用LSU告知邻接,需要确认
- 新增网段 直连新增网段的设备,直接使用LSU告知邻接,需要确认
- 无法沟通 hello time 对应的 dead time ;dead time 到时时,断开邻居关系,去除基于该邻接共享的LSA计算所得路由;
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、传递接口信息
区域划分规则:
- 星型结构 --- 区域0为骨干 大于0为非骨干,非骨干区域必须直连骨干区域
- ABR --- 区域边界路由器,两个区域间必须依靠ABR连接
启动配置完成后,邻居间使用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包保活;之后本地基于本地的数据库表转换为有向图,再转换为树形结构,最终将本地到达所有未知网段的最短路径,加载于本地的路由表中:
<r1>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 修改优先级
重启进程
<r2>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可以构建不同的拓扑结构:
- 星型--中心到站点--轴辐状 中心站点为DR,取消BDR
- 全连网状 --- 不需要再关注DR
- 部分网状 --- 基于能够全网段内正常共享LSA来考虑最佳的DR位置