目录
判断一个动态路由配置协议好不好的标准:1. 选路佳;2.收敛快;3. 占用资源少
OSPF-开放式最短路径优先协议
1. OSPF协议与RIP协议对比
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
相同点:
- OSPFV2和RIPV2一样,都是无类别(区域之间传递的是路由信息,区域内部是链路信息)的路由协议,都支持VLSM和CIDR;
- OSPFV2和RIPV2 (224.0.0.9)都是以组播的形式发送信息--- 224.0.0.5和224.0.0.6;--- 本地链路组播地址,TTL值为1。
- OSPFV2和RIPV2都支持等开销负载均衡。
不同点:
RIPV2只能应用于小型网络中,OSPFV2可以应用在中大型网络当中
2. OSPF区域划分
OSPF为了适应中大型网络,需要进行结构化部署:区域划分;
进行区域划分的目的是区域内部传递拓扑信息,区域之间传递路由信息。
区域边界路由器:ABR,同时属于多个区域,并且一个接口对应一个区域。
区域之间可以存在多个ABR设备,并且一个ABR设备也可以属于多个区域
区域划分的要求:
- 区域之间必须存在ARP设备;
- 区域划分必须遵循星型拓扑来进行划分。星型拓扑中间的区域我们称为骨干区域。
为了方便对区域进行管理,我们给每一个区域设置一个区域ID --- area ID --- 由32位二进制构成(表示方法存在两种:① 采用点分十进制的形式表示;② 直接采用10进制的形式表示)骨干区域的区域ID定义为0。
如果网络的规模不大,则可以不进行区域划分,则这样的网络称为单区域OSPF网络。(在华为设备中要求单区域OSPF网络的区域ID必须设置为0)。如果网络规模较大,需要进行划分,则称为多区域OSPF网络。
3. OSPF的数据包类型
① hello包 ---- 用来周期发现,建立和保证邻居关系;
hello时间:hello包默认以10s为周期进行周期保活的,不是所有类型的网络都是10s,以太网网络中是10s。
dead time:OSPF中进行失效判断的时间为4倍的hello时间。
因为OSPF需要收集网络拓扑信息,所以就需要区分和标定不同的路由器。我们给每台路由器设计了一个RID。1. 全网唯一;2. 格式统一:必须按照IP地址的格式来进行配置;RID可以手工配置,手工配置仅需满足以上两个要求即可。
Router-ID自动生成:
1. 如果存在环回接口,则在环回接口中取IP地址最大的为RID;
2. 如果不存在环回接口,则需要在所有的物理接口中选择IP地址最大的作为RID。
hello包中会携带RID。
② DBD包 ---- 数据库(存放的LSA链路状态通告即拓扑结构)描述报文,携带的是路径信息的摘要,相当于是菜单;
③ LSR包 ---- 链路状态请求报文,是基于DBD包请求未知的LSA的信息;
④ LSU包 ---- 链路状态更新报文,真正携带LSA链路状态通告信息的数据包;
⑤ LSAck包 ---- 链路状态确认报文,确认包;
OSPF协议存在30min一次的周期更新。
4. OSPF的状态机
Two-Way:标志着邻居关系的建立。通过Hello包建立。
(条件匹配)条件匹配成功,则进入下一个状态,如果条件匹配失败,则仅保持邻居关系即可。周期性的发送hello包进行保活即可。
LSDB --- 链路状态数据库
主从关系选举:通过未携带数据的DBD包进行比较。比较Router-ID,RID大的为主(DR设备),为主则可以优先进入下一个状态,RID小的为从(BDR设备)。
使用未携带数据的DBD包进行主从关系选举主要目的是为了和之前的邻居状态区分。
DBD包的确认使用的不是ACK包来进行显性确认,而是通过数据包中的序号参数来进行的隐性确认。
FULL状态 --- 标志着邻接关系的建立。邻接设置的目的是为了和之前的邻居状态做区分。
7种状态总结:
- Down状态:启动OSPF,发送hello包之后进行下一个状态;
- Init状态(初始化状态):收到Hello包中有自己本地的RID,则进入下一个状态
- Two-Way:标志着邻居关系的建立。通过Hello包建立。(条件匹配)条件匹配成功,则进入下一个状态,如果条件匹配失败,则仅保持邻居关系即可。周期性的发送hello包进行保活即可。
- exstart(预启动)状态:使用未携带数据的DBD包进行主从关系选举。比较Router-ID,RID大的为主,为主则可以优先进入下一个状态。
- exchange(准交换)状态:使用携带目录信息的DBD包来共享数据库目录。
- loading(加载)状态:基于对端发送的DBD包和本地数据库进行对比,之后,使用LSR包请求自己未知的LSA信息,对端使用LSU包进行LSA信息的传递。需要使用ACK进行确认。
- FULL状态:标志着邻接关系的建立。
5. OSPF的工作过程
启动配置完成后,OSPF向本地所有运行协议的接口以组播224.0.0.5的形式发送hello包。hello包种携带本都的RID以及已知的邻居RID。之后,将收集到的邻居关系记录在一张邻居表表中。
邻居关系建立完成后,进行条件匹配,失败则停留在邻居关系,仅使用hello包进行保活。
匹配成功,则开始建立邻接关系。首先使用未携带数据的DBD包进行主从关系选举。之后,携带数据的DBD包共享数据库的目录摘要信息。之后使用LSR/LSU/LSAck来进行获取本地未知的LSA信息。完成本地数据库的建立,生成数据库表。(LSDB:链路状态数据库)
最后,基于本地链路数据库中的LSA信息,生成有向图,之后使用SPF算法转换成最短路径树,之后,计算到达未知网段的路由信息。将生成的路由信息添加到路由表中。
收敛完成后,依然使用hello包每10s进行周期保活。每30min今昔一次周期更新。
结构突变的情况:
- 新增网段:触发更新,将变更信息第一时间使用LSU包进行传递,需要ACK确认
- 端口网段:触发更新,将变更信息第一时间使用LSU包进行传递,需要ACK确认
- 无法沟通:dead time
OSPF协议是基于IP协议,端口号为89,ospf自身提供主从协商机制,可以保证可靠的传输,另外全网路由器保持着同样的一个lsdb,当拓扑发生变化时,需要携带的变更信息较少,通过IP协议即可完成。
6. OSPF的基础配置
1. 启动OFPS进程:
[r1]ospf
[r1-ospf-1](进程号(默认1))
or
[r1]ospf 1 router-id 1.1.1.1(配置RID,启动OSPF进程)
[r1-ofps-1]
2. 创建区域
[r1-ofps-1]area 0
[r1-ofps-1-area-0.0.0.0]
3. 宣告:所有的直连网段都需要宣告。目的:① 激活接口;②发布路由
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255 ---- 反掩码
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
反掩码:由连续的0和1组成,0对应的位不可变,1对应的位可变
范围宣告:network 12.0.0.0 0.0.0.255,宣告的是12.0.0.0-12.0.0.255这个范围
精确宣告:network 1.1.1.1 0.0.0.0,宣告的是1.1.1.1这个ip对应的接口。
查看邻居表:[r1]display ospf peer
Mode:Nbr is Master/Slave --- 邻居是主/从;
Priority --- 优先级;
MTU --- 最大传输单元,这里为0并不是真实值,只是华为默认没有开启MTU监测功能。
查看邻居关系简表:[r1]display ospf peer brief
查看数据库表:[r1]display ospf lsdb
展开一条LSA信息:[r1]display ospf lsdb router 2.2.2.2
在华为体系中,在路由表中OSPF协议的默认Pre优先级为10。
OSPF是以带宽作为开销值的评判标准的。华为设备的默认的参考带宽为100Mbps
Cost = 参考带宽(100Mbps) / 真实带宽,以带宽为评判标志的选路本不合理。
[r1-ospf-1]bandwidth-reference 1000 --- 因为默认的参考带宽较小,且目前传输速率都比较大的情况下,会出现选路不加的情况,可以将参考带宽调大来改善问题。
注意:一台路由器修改了默认参考带宽,则所有的路由器都需要把默认参考带宽改成一样的。
OSPF协议的路由表中环回接口的网段为4.4.4.1/32
7. 条件匹配
指定路由器DR:DR和一个广播域内其他设备建立邻接关系
备份指定路由器BDR:BDR和其他设备建立的也是邻接关系
因为DR和BDR是在一个广播域中选举出来的,所以,其实质是一个接口概念。
条件匹配:在一个广播域中,如果所有设备之间都保持邻接关系的话,则将可能出现大量的重复更新,所以,需要进行DR和BDR的选举,所有DRother和DRother设备之间仅保持邻居关系即可。
DR和BDR选举规则:
1. 先比较优先级。优先级最大的为DR,优先级次大的为BDR。
优先级默认为1
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
如果将一个接口的优先级设为0,则视为该接口直接放弃DR和BDR选举。
2. 如果优先级相同,则比较RID。RID大的路由器对应接口为DR,次大的对应接口为BDR。
图中RID:1.1.1.1比RID:2.2.2.2小,但是前者为DR,后者为BDR,原因是非抢占选举,在配置完成时,已经超过40s,所以是这样。
DR/BDR的选举模式为非抢占模式,选举时间最大不能超过40s。
重启OSPF进程命令:<r1>reset ospf 1 process
8. OSPF的扩展配置
1. 手工认证
[r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
2. 手工汇总:OSPF中拓扑信息是没有办法汇总的,所有只能针对区域之间传输的路由信息进行汇总,称为区域汇总。
[r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.254.0 ---- 在ARP设备上在进程中需要汇总的区域视图类配置
3. 沉默接口
[r1-ospf-1] slient-interface GigabitEthernet 0/0/2
4. 加快收敛
[r1-GigabitEthernet0/0/1] ospf timer hello 5 ---- 修改hello时间的方法,hello时间修改,死亡时间将自动按照四倍关系进行匹配。
邻居之间,hello时间和死亡时间必须一致,不一致将导致邻居关系断开
5. 缺省路由
[r3-ospf-1]default-route-advertise --- 需要保证边界路由器本身存在缺省路由,才能下发缺省。
[r3-ospf-1]default-route-advertise always --- 可以强制下发缺省信息。