ospf介绍和原理
OSPF:开放式最短路径优先协议
无类别链路状态型路由协议:组播更新224.0.0.5 224.0.0.6 支持等开销负载均衡;
链路状态型协议,邻居间共享拓扑,优势在于防环和选路,缺点为更新量和计算量很大,故OSPF为了能够在大型网络运用,设计了结构化部署规则:
- 良好的地址规划
- 区域划分
协议存在触发更新,每30min一次周期更新
链路状态型协议的距离矢量特征:区域内部传拓扑,区域之间传路由;
区域边界设备-----ABR设备(同时属于多个区域)
区域划分的要求:
- 区域之间必须存在ABR设备(可以存在多台)
- 区域划分必须按照星形拓扑结构划分
区域ID
-32位二进制构成,表示方式:1. 十进制;2. 点分十进制。——骨干区域定义为0
OSPF的数据包
- hello包——邻居,邻接关系的发现,建立和周期保活(hello time 默认10s,dead time 默认4倍hello时间)
routeID(RID)表示网络中不同的路由器:要求全网唯一,格式统一
配置:手工或者自动获取(存在环回接口选取ip地址最大的环回接口,没有环回接口就从物理地址选择) - DBD包——数据库描述包—本地数据库目录
- LSR包——链路状态请求----用于询问本地未知的LSA信息
(LSA链路状态通告是具体的一条一条拓扑或者路由信息) - LSU包——链路状态更新—用于共享具体的LSA信息.
- LSack——链路状态确认
OSPF的状态机
down——一旦接收到其他设备发出的hello包进入下一个状态
init 初始化——一旦接收到的hello包中有本地我放RID进入下一个状态
2way 双向通讯——邻居关系建立的标志
exstart 预启动——使用不携带数据库目录的DBD包,进行主从关系的选举,RID数值大的为主,有限进入下一个状态--其目的在于对DBD包进行排序,避免更新量同一时间的激增
exchange 准交换——使用DBD包进行数据库目录信息的交换
loading 加载——基于接受的数据库目录和本地比对,然后基于本地未知的LSA信息,使用LSR进行查询,对端使用LSU来应答,需要本地最后ack确认--获取本地未知LSA信息
full转发——邻接关系建立的标志
(邻接与邻居的区别:邻接关系交换LSA信息,邻居关系仅发送hello,进行保活)
OSPF的工作过程
- 启动配置完成后,本地路由器开始收发ospf的hello包,建立邻居关系,生成邻居表;之后与邻居表中所有邻居进行条件匹配,匹配失败者间维持邻居关系,仅hello包周期保活即可;
- 匹配成功者间将建立邻接关系:先使用类hello的DBD进行主从关系选举,之后使用DBD包进行数据库目录的共享;再使用LSR进行查询,LSU进行应答,ack确认---使用DBD/LSR/LSU/LSack来获取本地未知的LSA信息;
- 当本地的数据库与邻居的数据库一致时,同步完成本地存在数据库表(LSDB链路状态数据库--所有LSA集合);
- 同步完成后,本地启动SFP算法,将数据库转换为有向图(最短路径树);然后以本地为起点,到达所有未知网段的最短路径,加载于本地路由表中;
- 收敛完成后,仅hello包每10s周期保活邻居,邻接关系,再每1800s(30分钟)周期和邻接对比数据库(防止突变(新增网段,断开网段,无法沟通))
- 新增网段–直连新增网段的设备,将直接使用LSU告知本地所有的邻接,再扩散到全网;需要邻接关系确认该更新包;
- 断开网段–直连断开网段的设备,将直接使用LSU告知本地所有的邻接,再扩散到全网;需要邻接关系确认该更新包;
无法沟通–存在dead time,默认为hello time的4倍;dead time到时时,将断开邻居关系,删除信息
OSPF的基础配置
[Huawei]ospf 1 router-id 1.1.1.1 启动时可以定义进程号,仅具有本地意义,默认为1,建议同时定义该设备的RID–使用ipv4地址,全网唯一;手工配置–环回接口的最大值ip地址–>物理接口的最大值ip地址,一旦RID生效,默认不能直接修改(重启进程)
reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y (重启ospf进程)
宣告:1. 激活接口协议 2. 共享接口信息 3. 区域划分
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 192.168.1.64 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255 (反掩码,0表示关注(不许变),全1表示不关注(可变)形成范围,0.0.0.0为精准匹配)
区域划分规则:
(1) 星型结构——中间为骨干区域,区域编号为0;大于0的为非骨干编号,所有非骨干区域必须连接股骨干区域,否则无法正常收敛
(2) 必须存在ABR——区域边界路由器
宣告配置后,邻居间开始收发hello包,获取对端的RID,建立邻居关系,生成邻居表;
[Huawei]display ospf peer 查看邻居表(详细)
[Huawei]display ospf peer brief 查看邻居简表
邻居关系建立后,邻居间进行条件匹配,匹配失败,仅hello保活邻居关系即可,匹配成功者间,可建立邻接关系,基于DBD/LSR/LSU/LSack来获取本地未知 的所有LSA信息,完整本地的数据库;
[Huawei]display ospf lsdb 查看数据库
[Huawei]display ospf lsdb router + id 查看目录下某个ip的详细表
当本地数据库同步完成后,本地启动SFP(最短路径优先算法),将数据库中所有的1/2类LSA整合为有向图,再生成最短路径树,然后以本地为起点计算到达本地所有未知网段的最短路径,将它们加载于本地的路由表中来完成收敛
cost值=开销值=参考带宽/接口带宽(大于一取整,小于一为1)
默认为100兆,若接口带宽大于参考带宽,cost值为1(可能导致选路不佳,建议修改参考带宽,若修改,全网一致)
[Huawei-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[Huawei-ospf-1]bandwidth-reference 1000 (修改参考带宽)
OSPF默认选择cost值之和最小的路径,为最佳路径加载到路由表中
结构突变:
- 增加网段——触发更新;
- 减少网段——触发更新,第一时间将变更的信息铜鼓LSU包发布出去,需要ACK确认;
- 无法访问——死亡时间;
条件匹配——在一个广播域内,若所有设备均建立邻接关系,将会出现大量的重复更新,所以需要进行DR与BDR的选举,所有DRother设备之间仅维持邻居关系;
- 指定路由器——DR–在一个广播域内,DR设备与其他所有设备建立邻接关系;
- 备份指定路由器——BDR–在一个广播域内,BDR设备与其他所有设备建立邻接关系;
- DRother
224.0.0.5与224.0.0.6
所有ospfv2都会监听224.0.0.5,只有DR与BDR会监听224.0.0.6
DR与BDR选举
- 先比较优先级,选择优先级大的作为DR设备,选择完DR设备后,剩余设备继续比较,选择次优先级最大的为BDR;
- 优先级默认为1;(优先级priority)
- 若优先级为0,则放弃选举
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
[r1-GigabitEthernet0/0/0]ospf dr-priority 10 更改该优先级 - 如果优先级相同,则比价RID,大的设备对应的接口为DR
- 选举模式:
● 抢占模式
● 非抢占模式——一旦选举成功,则不会因为后加入的设备重新选举
● 选举时间——默认与死亡时间40s,40s后选举完毕将不会改变,若想重新选举,重启ospf协议
OSPF的扩展配置
1)从邻居关系变邻接关系的条件
以下用处与RIP一致(见RIP文)
2)认证
[Huawei-GigabitEthernet0/0/0]ospf authentication-mode md5 1(key id 锁编号,可以有多个密码) cipher 1238
3)汇总
[r1-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.254.0 在ABR设备上进行配置
4)沉默接口
[r1-ospf-1]silent-interface g0/0/0
5)加快收敛
[r1-GigabitEthernet0/0/0]ospf timer hello 5 (hello时间改变死亡事件也改变,默认为hello的四倍)
[r1-GigabitEthernet0/0/0]ospf timer dead 40 (死亡事件改变hello时间不变)
邻居双方的hello时间与死亡事件必须相同,如果不同,则邻居关系无法建立
6)缺省路由
[r1-ospf-1]default-route-advertise (需要本身存在一条缺省路由才能下发)
[r1-ospf-1]default-route-advertise always (强制下发)
ospf实验
分析题目拓扑
拓扑分为两个区域,区域零中主干是由三个路由相连,而区域一中是两个路由器相连,这将会影响我们的区域划分(我们后边再说);区域零中r3为DR设备,没有BDR设备我们可以通过调节优先级为零处理(优先级为零意味着放弃DR选举);r4环回不能宣告,r3需要下发缺省路由;保障更新安全,需要在接口配置手工认证;减少路由条目,进行手工汇总;
以上分析完毕。
IP地址划分
我们可以先将192.168.1.0/24分为两个作用于两个区域:
区域零用192.168.1.0/25;
区域一用192.168.1.128/25;
区域零中我直接将192.168.1.0/25分成了8个(28的子网掩码),然后取192.168.1.0/28作主干IP,从其他七个中选择了三个作环回地址;因为目前主干接口比较少所以我干脆直接用29作掩码节省IP地址;
区域一中,用30作子网掩码的IP地址用于主干IP,由于r4环回确定就不再分IP
搭建拓扑
配置命令:
-
配置接口IP地址;
-
检擦IP地址配置正确;相邻路由器间互相ping是否能通
-
IP检查无误后开启ospf服务,将参考带宽改为1000,进入区域0(或者区域1,r3宣告要分别进入区域0和区域1),宣告接口网段,
-
进入0/0/0接口调整优先级为0(r3不改)
-
手工汇总(r3上进行)
-
添加手工认证;
至此配置完毕
验证:
完毕