1,因为OSPF是链路状态型协议,算出来的路径不会出现环路,并且,OSPF是以带宽作为开销值的评判标准的,所以,相较于RIP选出来的路径更加合理
2,因为OSPF的计时器时间短于RIP,所以,从收敛速度的角度看,OSPF优于RIP
3,RIP传递的数据是路由信息,而OSPF传递的数据是拓扑信息,从单个数据包的角度来看,OSPF的资源占用量是大于RIP的。但是,由于RIP存在30S一次的周期更新,而OSPF并没有这样高频的周期更新,并且,OSPF本身就设计了很多减少资源占用的措施。所以从整体的角度来看,OSPF在资源占用上小优于RIP。
RIP--RIPV1,RIPV2---IPV4
RIPNG--IPV6
OSPF--OSPFV1(在实验室阶段夭折),OSPFV2---IPV4
OSPFV3---IPV6
RIPV2和OSPFV2
相同点:
1, OSPFV2和RIPV2一样,都是无类别的路由协议,都支持VLSM和CIDR
2,OSPFV2(224.0.0.5和224.0.0.6)和RIPV2(224.0.0.9)都是以组播的形式发送信息--本地链路组播----TTL值为1
3,OSPFV2和RIPV2都支持等开销负载均衡
不同点:
RIPV2只能应用在小型网络当中,OSPFV2可以应用在中大型网络当中。
OSPF为了适应中大型网络,需要进行----结构化部署 -----区域划分
区域划分的目的 --- 区域内部传递拓扑信息,区域之间传递路由信息。
区域边界路由器 ---- ABR-- 同时属于多个区域,并且一个接口对应一个区域。且至少有一个接口在area 0。区域之间可以存在多个ABR设备,并且一个ABR设备也可以属于多个区域
区域划分的要求:1,区域之间必须存在ABR设备
2,区域划分必须遵循星型拓扑进行划分--星型拓扑中间区域称为骨干区
为了方便对区域进行管理,我们给每个区域设置一个区域ID--
area ID-----32位二进制构成(表示方法存在两种--1,采用点分十进制的形式来表示 2,直接采用10进制的形式来表示)----规定骨干区域的ID定义为0
如果网络规模不大,则不进行区域划分,则这样的网络成为单区域OSPF网络。(在华为设备中要求OSPF网络的区域ID必须设置为area 0)
如果网络规模较大,需要进行划分,则称为多区域OSPF网络
1, OSPF的数据包类型
hello包 --- 用来周期发现,建立和保活邻居关系
hello包默认以10S为周期来进行周期保活的。 ---hello时间
OSPF中进行失效判断的时间为4倍的hello时间。--dead time死亡时间
因为OSPF需要收集网络拓扑信息,所以就必须区分和标定不同的路由器。我们给每台路由器设计一个RouterID
1, 全网唯一
2,格式统一 --- 必须按照IP地址的格式来进行配置
1,如果存在环回接口,则在环回接口中取IP地址最大的为RouterID;
2, 若不存在环回接口,则需要在所有的物理接口中选择IP地址最大的作为RouterID
hello包中会携带RouterID
DBD包-----数据库描述报文 ----携带的是路径信息的摘要
LSR包------链路状态请求报文----基于DBD包请求未知LSA的信息
LSU包-----链路状态更新报文-----真正携带LSA信息的数据包
LSAck包---链路状态确认报文-----确认包
OSPF协议存在30min一次的周期更新。
2, OSPF的状态机
Two-Way State----标志着邻居关系的建立。 只发hello包维持关系
(条件匹配)-----条件匹配成功,则可以进入下一个状态,如果条件匹配失败,则仅保持邻居关系即可。周期性的发送hello包进行保活即可
LSDB-------链路状态数据库
Exstart State 主从关系选举----通过未携带数据的DBD包来比较RouterID,RouterID大的为主,为主则可以优先进入下一个状态-Exchange State,RouterID小的为从。
使用未携带数据的DBD包进行主从关系选举,主要目的是为了和之前的邻居状态做区分
DBD包的确认使用的不是ACK包来确认的(显性确认),而是通过数据包中的序号参数来进行的隐形确认。
FULL状态----标志着邻接关系的建立-----邻接设置的目的是为了和之前的邻居状态做区分
3, OSPF的工作过程
启动配置完成后,OSPF向本地所有运行协议的接口以组播224.0.0.5的形式发送hello包。hello包中携带本地的RouterID以及本地已知的邻居的RouterID。之后,将收集到的邻居关系记录在一张表中----邻居表
邻居关系建立完成后,进行条件匹配;失败则停留在邻居关系,仅使用Hello包进行保活。
匹配成功,则开始建立邻接关系。首先先使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包共享数据库目录信息。之后使用LSR/LSU/LSACK来获取本地未知的LSA信息。完成本地数据库的建立 --- 生成数据库表(LSDB---链路状态数据库)
最后,基于本地链路数据库中的LSA信息,生成有向图,之后使用SPF算法转换成最短路径树,之后,计算到达未知网段的路由信息。将生成的路由信息添加到路由表中。
收敛完成后,依然使用hello包每10S进行周期保活。每30min进行一次周期更新
结构突变的情况
4, OSPF的基本配置
[r1]ospf 1 router-id 1.1.1.1 ---手工配置RID在启动进程时配置
[r1-ospf-1]
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255(反掩码)----由连续的0和1组成,0对应的位不可变,1对应的位可变
查看邻居表
[r1]display ospf peer
查看邻居关系简表
[r1]display ospf peer brief
查看数据库表
[r1]display ospf lsdb
展开一条LSA信息
[r1]display ospf lsdb router 2.2.2.2
查看路由表
[r1]display ip routing-table
在华为体系中,OSPF协议默认的优先级为10
OSPF是以带宽作为开销值作为评判标准的
COST = 参考带宽/真实带宽 --华为设备默认的参考带宽为100Mbps
[r1-ospf-1]bandwidth-reference 1000 ---因为默认的参考带宽值较小,在目前传输速率都比较大的情况下,会出现选路不佳的情况,可以将参考带宽改大来改善该问题
注意:一台路由器参考带宽修改了,则所有路由器的参考带宽都必须改成一样的
条件匹配
指定路由器 --- DR ----DR和一个广播域内其他设备建立邻接关系
备份指定路由器 --- BDR ------ BDR和其他设备之间建立的也是邻接关系
因为DR和BDR是在一个广播域中选举出来的,所以,其实质是一个接口概念。
原理:在一个广播域中,如果所有设备之间都保持邻接关系的话,则将可能出现大量的重复更新。所以,需要进行DR/BDR的选举,所有DRother之间仅保持邻居关系即可
DR/BDR选举规则:
1,先比较优先级 (Rriority),优先级最大的为DR,优先级次大的为BDR,默认值为1
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
如果将一个接口的优先级修改为0,则其效果是该接口直接放弃DR和BDR的选举。
2,当优先级相同时,则比较RouterID。RouterID大的路由器对应的接口为DR,次大的对应的接口为BDR。
DR/BDR的选举是非抢占模式的---选举时间为40S(和dead time一致)
重启OSPF进程
5,OSPF的拓展配置
[r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
[r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.254.0 ---
在ABR设备上进程中需要汇总的区域视图里配置
[r1-ospf-1]silent-interface GigabitEthernet 0/0/2
[r1-GigabitEthernet0/0/0]ospf timer hello 5 --修改hello时间的方法,hello时间修改,死亡时间将自动按照4倍关系进行匹配
邻居之间,hello时间和死亡时间必须一致,不一致将导致邻居关系断开
[r3-ospf-1]default-route-advertise ---需要保证边界路由器本身存在缺省路由,才能下发缺省
[r3-ospf-1]default-route-advertise always ---可以强制下发缺省信息