无类别链路状态型IGP协议;由于其基于拓扑进行更新收敛,故更新量会随着拓扑的变大而成指数上升;故OSPF协议为了能在大、中型网络中运行,需要结构化的部署----合理的区域划分、良好的地址规划 。正常等开销负载均衡; 跨层封装协议,协议号89;
更新方式:组播更新 224.0.0.5 224.0.0.6 触发更新+周期更新(30min)
距离矢量 DV | 链路状态LS | |
---|---|---|
分类 | RIP EIGRP | OSPF ISIS |
特点 | 邻居间共享路由条目 | 邻居间传递的是拓扑 |
传闻性协议 | 本地计算路 |
判断一个路由协议好坏的三方面:
-
收敛速度快
-
选择路径佳(前提防环)
-
占用资源少
一、OSPF的数据包 -- 5种
种类 | 名称 | 作用 |
---|---|---|
HELLO | hello包 | 组播收发,用于邻居、邻接关系的发现、建立、周期保活 |
DBD | 数据库描述包 | 本地LSDB(链路状态数据库)目录 |
LSR | 链路状态请求 | 用于询问对端本地未知的LSA信息 |
LSU | 链路状态更新 | 用于共享具体的每一条LSA信息 |
LSack | 链路状态确认 | 确认包 |
LSA--链路状态通告--具体的一条一条 路由或者拓扑信息,不是一种数据包,所有的LSA是使用LSU这种包来转发的;
OSPF的数据包是跨层封装于3层报头后方 ,协议号89
二、OSPF的状态机 -- 两台OSPF路由器间不同关系的阶段
状态 | 工作方式 |
---|---|
Down | 一旦接收到对端的hello包进入下一个状态 |
Init 初始化 | 若接收到的hello包中存在本地的RID,那么进入下一个状态机 |
2way 双向通讯 | 邻居关系建立的标志 |
Exstart预启动 | 使用不携带数据库目录信息的DBD包,进行主从关系的选举,RID数值大为主,优先进入下一个状态机 |
exchange准交换 | 使用携带数据库目录信息的DBD包,进行目录共享,需要ACK确认 |
loading加载 | 接收到其他邻接的目录信息后,和本地进行比对,若本地存在未知的LSA信息,将使用LSR询问对端,对端使用LSU来更新这些LSA信息,直至双方数据库一致;LSU需要ACK确认 |
Full 转发 | 标志着邻接关系已经建立 |
条件:点到点网络直接进入下一个状态机;MA网络进行DR/BDR选举,非DR/BDR之间不能进入下一个状态机;
三、OSPF的工作过程
-
路由器上启动OSPF协议后,直连的邻居间,开始组播收发hello包,hello包中将存储本地已知邻居的RID,在双方RID均已知的情况下,建立邻居关系,生成邻居表;
-
邻居关系建立后,邻居间将进行条件匹配,匹配失败将停留为邻居关系,仅hello周期保活即可;匹配成功者间将进行邻接关系的建立;
-
邻接关系间的路由器,将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息;使得同一区域内所有路由器的数据库完全一致; ---- 数据库表;
-
当本地数据库完成同步后,将数据库-->有向图-->树型结构图-->将本地到达所有未知网段的最短路径加载于本地路由表中;
-
收敛完成,仅hello包周期保活即可;正常每30min,邻接关系间再进行一次DBD的对比,若一致及正常;若不一致将马上进行同步;
结构突变:触发更新
-
断开网段 直连断开网段的设备,直接使用LSU告知邻接,需确认
-
新增网段 直连新增网段的设备,直接使用LSU告知邻接,需确认
-
无法沟通 hello time 对应的 dead time ;dead time 到时时,断开邻居关系,去除基于该邻接共享的LSA计算所得路由;
四、OSPF的基础配置
启动时,定义进程号,仅具有本地意义;建议配置RID;
RID格式为ipv4地址,且需要全网唯一;
手工配置-->环回接口上取最大数值的ip地址--->物理接口上最大ip地址的数值
[r1]ospf 1 router-id 1.1.1.1
宣告:1、区域划分 2、接口激活协议 3、传递接口信息
[r1-ospf-1]area 0
[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
区域划分规则:
-
星型结构 -- 区域0为骨干 大于0为非骨干 非骨干区域必须直连骨干区域
-
ABR--区域边界路由器 两个区域间必须依靠ABR连接
1.启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表:
hello包 -- 组播收发 周期发送 -- hello time 10s 或30s dead time 为hello time 4倍
邻居间hello包中有一些参数必须完全一致,否则无法建立邻居关系;(图中带星号)
Hello 和dead time 、区域ID、认证参数、末梢区域标记;另外在华为的设备中OSPF要求邻居间接口上配置的ip地址,其掩码长度必须一致;
[r2]display ospf peer 查看邻居表
[r2]display ospf peer brief 查看邻居关系简报
2.当邻居关系建立后,邻居间进行条件匹配,匹配失败,将保持为邻居关系;匹配成功,将建立为邻接关系,邻接关系将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息,同步生成数据库表---LSDB 链路状态数据库
[r2]display ospf lsdb 查看数据库表
3.数据库表同步完成后,邻接间的互动完成,仅hello包保活;之后本地基于本地的数据库表;转换为有向图,再转换为树形结构,最终将本地到达所有未知网段的最短路径,加载于本地的路由表中:
<r1>display ip routing-table protocol 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;
-
开启MTU---两端设备均需开启MTU
[r1-ospf-1] int g0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable