OSPF
1,选路的好坏
2,收敛速度
3,占用资源大小
选路佳,收敛快,占用资源小 0SPF —- 开放式最短路径优先协议 —-- 典型的链路状态型协议 RIP --- RIPV1, RIPV2 -- IPV4
RIPNG --- IPV6 ospf —- OSPFV1(在实验室阶段夭折了),0SPFV2 --- IPV4 ? OSPFV3 -- IPV6
RIPV2和0SPFV2的相同点和不同点
相同点∶
1,0SPFV2和RIPV2都是无类别的路由协议,都支持VLSM和CIDR 传递路由信息时携带子网掩码 2,OSPFV2和RIPV2都是以组播的形式发送。 RIPV2 ---224.0.0.9 ospfv2 -—- 224.0.0.5和224.0.0.6 3,ospfv2和RIPV2一样都支持等开销负载均衡
不同点∶ RIP只能应用在小型的网络环境当中,但是OSPF可以应用在中大型网络环境当中。
区域划分
0SPF为了适应中大型的网络环境,需要进行结构化部署。-- 区域划分 如果一个网络中只包含一个0OSPF区域,则我们将这样的网络称为单区域0SPF网络。 如果一个网络中只包含多个0SPF区域,则我们将这样的网络称为多区域0SPF网络。
划分区域的主要目的∶区域内部传递拓扑信息,区域之间传递路由信息
区域边界路由器(ABR);同时属于两个区域,一个接口属于一个区域,而且至少有一个接口在区域0。 区域之间可以存在多个ABR,一个ABR可以属于多个区域
区域划分的要求∶
1,区域之间必须存在ABR
2,区域划分必须按照星型拓扑结构划分 --- 所有区域都需要围绕骨干区域进行划分 为了方便管理,我们给0SPF的区域增加了编号标识 --- 区域ID(area ID) —-- 由32位二进制构成 --- 我们规定,骨干区域的编号必须是区域0。
工作过程
1,OSPF的数据包类型
0SPF一共有5种数据包 1,hello包 —- 用来周期发现,建立和保活邻居关系的。 0SPF的hello包默认是以10S为周期发送一个 OSPF的失效判定时间为4倍的hello时间 —-- 死亡时间(dead tme)
RID -- 用来区分和标识0SPF网络中的路由器 1,全网唯一(0SPF网络);2,格式统一(统一按照IP地址的格式来定义)
RID的获取方法∶ 1,手动配置 ---符合上述两个要求即可 2,自动生成 --- 先从环回地址中取最大的IP作为RID,若没有环回地址,则取物理接口中最大的IP作为RID。
hello包中会携带RID。
2,DBD包 --- 数据库描述报文 -— lsdb(链路状态数据库) -—--菜单 3,LSR包 -— 链路状态请求报文 -— 基于DBD包请求未知的LSA信息 4,LSU包 --- 链路状态更新报文 --- 真正携带LSA信息的报文 5,LSACK包 —-- 链路状态确认报文
0SPF存在每30Min一次的周期更新。
2,OSPF的状态机
two - way -—- 双向通讯 --—— 标志着邻居关系的建立(条件匹配)--— 条件匹配成功,则进入下一个状态,如果匹配失败则停留在邻居关系,使用hello包进行保活
EXSTART状态 --- 使用未携带数据的DBD包(为了和之前的邻居关系进行区分),进行主从关系选举 -— 通过比较RID,RID大的为主,可以优先进入下一个状态?
full --- 转发状态 --- 标志着邻接关系的建立。
邻接状态 --- 主要目的是为了和前面邻居状态进行区分。邻接关系之间才能真正的进行LSA信息的交换。而邻居之间仅使用hello包进行保活。
总结
1.down状态 --— 启动0SPF,发出hello包,进入下一个状态
2.init(初始化)状态 -—-- 收到hello包中包含本地的RID,进入下一个状态 3.two-way(双向通讯)状态 --- 标志着邻居关系的建立
(条件匹配)条件匹配成功,则进入下一个状态; 失败则停留在邻居状态,仅hello包保活。 4.exstart(预启动)状态 -— 使用未携带数据的DBD包(为了和之前的邻居关系进行区分),进行主从关系选举 --- 通过比较RID.RID大的为主,可以优先进入下一个状态 5.exchange(准交换)状态 —-- 使用携带目录信息的DBD包进行目录共享
6.Loading(加载)状态 —-- 查看对端发送的DBD包与本端LSDB数据库中的LSA信息进行对比,基于未知的LSA信息,使用LSR包请求,邻居使用LSU包进行回复.需要ACK确认。 7.FULL(转发)状态 —-- 交换完成后进入,标志着邻接关系的建立。
3,0SPF的工作过程
启动配置完成后,OSPF将向本地所有运行协议的接口以组播224.0.0.5发送hello包;hello包,中携带本地的RID及本地己知的邻居的RID。之后,将收集到的邻居关系记录在一张表中 ---- 邻居表
邻居表建立完成后进行条件匹配。匹配失败则停留在邻居关系,仅使用hello包进行保活。 匹配成功,则开始建立邻接关系。首先,使用未携带数据的DBD包,进行主从关系的选举。之后使用携带数据的DBD包共享数据库目录。之后。本地使用LSR/LSU/LSACK数据包,获取未知的LSA信息。完成本地数据库的建立。生成数据库表---- LSDB 最后, 基于本地的链路状态数据库, 生成有向图及最短路径树,之后计算本地到达未知网段的路由信息,将生成的路由添加到路由表中。
收敛完成,hello包依然会10S一次进行周期发送,周期保活。每30Min进行一次周期更新。
网络结构发生突变∶ 1,新增一个网段∶触发更新,直接发送携带LSA信息的LSU包进行更新,需要ACK确认 2,断开一个网段∶触发更新,直接发送携带LSA信息的LSU包,进行更新,需要ACK确认 3,无法沟通 --- 40S 死亡时间
4,0SPF的基本配置
1,启动0SPF进程 [r1]ospf 1 router-id 1.1.1.1
r1-ospf-1]
2,创建区域
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
3,宣告 宣告的目的∶激活接口,发布路由 [r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0-—反掩码(0代表不可变,1代表可变)(由连续的0和1组成)
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.255
[r1]display ospf peer—-- 查看OSPF的邻居表 [r1]display ospf peer brief —- 查看0SPF的邻居表简表
[r1]display ospf lsdb -— 查看OSPF的链路状态数据库[r1]display ospf lsdb router 2.2.2.2 -— 查看具体LSA信息
华为设备0SPF协议的默认优先级为10
0SPF是以带宽作为COST值的评判标准 COST = 参考带宽/真实带宽 ---- 华为设备参考带宽的默认值为100Mbps
[r1-ospf-1]bandwidth-reference 1000 --- 修改参考带宽的方法 注意∶一台路由器的参考带宽修改了,则所有路由器的参考带宽都需要修改成一样的。
条件匹配
指定路由器 ---DR
备份指定路由器 --- BDR
剩余的路由 —-- DRother
DR和BDR虽然叫指定路由器或备份指定路由器,但其实是一个接口的概念。
条件匹配∶在一个广播域中,如果所有设备都保持邻接关系,可能会出现大量的重复更新;所以需要进行DR/BDR的选举;所有非DR和BDR的设备之间仅保持邻居关系。
DR/BDR的选举规则∶ 1,先比较优先级,优先级大的为DR,次大的为BDR。优先级初始默认都为1。 [r1-GigabitEthernet0/0/0]ospf dr-priority ? NTEGER<0-255> Router priority value
优先级的取值范围是0-255 如果优先级设置为0.则代表该接口放弃DR和BDR的选举。 2,当优先级相同时,则比较RID。RID大的路由器所对应的接口为DR,次大的为BDR。 DR/BDR的选举是非抢占模式的 -- 即一旦DR和BDR选举完毕后,不会因为新加入的设备而重新选举。选举时间为40S。 <r3>reset ospf 1 process —- 重启0SPF进程
5,0SPF的拓展配置
1,手工认证 [r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
1 —-- 代表的是key ID,需要确保两端的keyID相同即可 2,手工汇总---0SPF区域之间传递路由信息,可以进行汇总,所以,0SPF的手工汇总实际上是区域汇总。 [r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0
255.255.254.0
3,沉默接口 [r1-ospf-1]silent-interface GigabitEthernet 0/0/1
4,加快收敛 --- 减少计时器 [r1-GigabitEthernet0/0/0]ospf timer hello 5 注意∶邻居之间的hello时间必须一致,否则将无法建立邻居关系 hello时间修改之后,死亡时间将自动按照四倍关系进行匹配
5,缺省路由 [r3-ospf-1]default-route-advertise --- 在边界路由器上下发缺省信息(OSPF要求边界路由器自身必须先有缺省才能下发缺省) [r3-ospf-1]default-route-advertise always --- 在边界路由器上没有缺省路由时,可以添加always来强制下发缺省信息