目录
技术产生原因:因为RIP存在不足
OSPF存在3个版本 :
OSPFV1(实验室阶段就夭折了)
OSPFV2 --- 适用IPV4
OSPFV3 --- 适用IPV6
OSPF优点:
1,OSPF本身是链路状态型协议,所以,计算出的路径不会存在环路;并且使用带宽作为选
路依据,所以,在选路的角度上优于RIP;
2,OSPF的计时器时间也短于RIP,所以,收敛速度会快于RIP;
3,因为OSPF协议传递的是LSA信息,所以,单个数据包的资源占用远大于RIP;但是,因为
RIP存在30S一次的周期更新,而OSPF并没有如此高频率的周期更新,并且,OSPF协议存在
许多针对资源占用的优化措施,所以,从整体的角度看,OSPF资源占用上应该小优于RIP。
RIPV2和OSPFV2比较:
相同点:
1,OSPFV2和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协议可以应用在中大型网络环境中,即
OSPF协议可以实现结构化部署(划分区域)。
OSPF的结构化部署 --- 区域划分
区域划分的主要目的:
区域内部传递拓扑信息---LSA,区域之间传递路由信息。( --- 链路状态型协议的距离矢量特征)
如果一个OSPF网络只存在一个区域,这个网络称为单区域OSPF网络;
如果一个OSPF网络存在多个区域,这样的网络称为多区域OSPF网络。
区域边界路由器 --- ABR :
同时属于多个区域,一个接口对应一个区域,必须有一个接口在区域0中,将区域内的拓扑信息收集计算成路由信息,之后进行传递。
(总结:区域之间可以存在多个ABR设备,一个ABR设备可以处于多个区域。)
区域划分的要求:
1,区域之间必须存在ABR设备;
2,区域划分必须按照星型拓扑结构进行划分。(星型拓扑的中间区域就是骨干区域。)
为了方便区分和标识不同的区域,我们给每一个区域都定义一个区域ID---area id
area id 由 32位二进制构成,有两种表示方法:
1,直接使用十进制进行表示;
2,使用点分十进制进行表示。(骨干区域的区域ID定义为区域0。)
OSPF的数据包(共5个)
(OSPF协议具有周期更新机制,每个30MIN发送一次。)
1.hello包 :包携带自己的router id(RID),周期性的发送,建立和保活邻居关系。
发送hello的周期时间 = 10S(以太网)/ 30S
死亡时间(dead time) = 4倍的hello时间
(当周期时间不同时无法建立联系)
2.DBD包 :数据库(链路状态数据库 (LSDB))描述报文,包携带LSA摘要 ---- “菜单”
LSA:装载和传输链路状态信息。(有多种类型)
3.LSR包 : 链路状态请求报文,基于DBD包,请求未知的LSA信息。 --- “点菜”
LSA三元组:链路状态类型、链路状态ID、通告路由器。
(通过三个参数能够标识出一条唯一的LSA)
4.LSU包 : 链路状态更新报文 --- 真正携带LSA的数据包 --- “上菜”
5.LSACK包 : 链路状态确认报文 --- 确认包
RID:
区分和标识不同的路由器 ,本质由32位二进制构成
特点:1,格式统一;2,全网唯一
RID的生成方式:
1,手工配置
2,自动生成:
首先,设备将优先选择环回接口的IP地址作为RID,如果存在多个环回接口,则将选择所有环回接口中IP地址最大的作为RID;如果没有配置环回接口,则将使用设备的物理接口的IP地址作为RID,如果物理接口存在多个,则选择IP地址最大的作为RID;
OSPF的状态机:
FULL 状态:标志着邻接关系的建立。 ---- 主要目的是为了和之前的邻居关系进行区分,邻居只能通过hello包进行保活,而邻接之间,可以交换LSA信息。
down状态:启动ospf之后,发出hello包进入下一个状态
init(初始化)状态:收到对方的hello包中包含自己本地的RID,则进入到下一个状态
Two-way(双向通信):标志着邻居关系的建立
条件匹配:匹配成功,则进入到下一个状态;失败则停留在邻居状态,仅使用hello包进行周
期保活
exstart(预启动)状态:通过发送没有携带数据的DBD包来进行主从关系选举,比较RID来进行选举,RID大的为主,为主可以优先进入后面的状态
exchange(准交换)状态:交换携带数据(摘要信息)的DBD包进行LSDB数据库目录共享
loading(加载)状态:基于对端发送的DBD包,使用LSR/LSU/LSACK交换未知的LSA信息
OSPF的工作过程
邻居表:
启动配置完成,ospf协议向本地所有运行协议的接口以组播的形式(224.0.0.5)发送hello包;hello包中携带自己本地RID,以及本地已知的邻居的RID。之后,将收集到的邻居关系记录在一张表中。
数据库表:
邻居关系建立完成后,进行条件匹配。失败则停留在邻居关系,仅hello包进行保活。匹配成功,则开始建立邻接关系。
首先,使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包共享目录信息,然后,基本DBD包,通过LSR/LSU/LSACK获取未知的LSA信息,将所有的LSA信息保存本地的LSDB数据库。最后,基于LSDB,使用SPF算法进行计算,得到未知网段的路由信息,将其加载到路由表。收敛完成后,周期性的发送hello包进行保活,每30min一次周期更新。
关系选举:
DR和BDR(DR和BDR是接口的概念)
DR (指定路由器):和广播域内其他设备建立邻接关系
BDR (备份指定路由器) : 和广播域内其他设备建立邻接关系,称为DR设备的备份。
(一个广播域内部,至少需要4台设备才能看到邻居关系。)
条件匹配
在一个广播域中,若所有设备均为邻接关系,将出现大量的重复更新;需要进行DR/BDR的选举,所有DRother之间,仅维持邻居关系即可。
DR/BDR的选举规则 --- 1,先比较优先级,优先级最大的为DR,次大的为BDR;
优先级默认为1 --- 主要目的让人为修改
INTEGER<0-255> Router priority value
注意:如果将一个接口的优先级设置为0,则代表这个接口将放弃DR/BDR的选举。如果优先级相同,则比较RID。RID大的路由器所对应的接口为DR,次大的为BDR。DR/BDR的选举是非抢占模式的 ---- 一旦角色选举出来,则将无法抢占。 ---- 选举时间:40s(等同于死亡时间)
<r1>reset ospf 1 process --- 重启OSPF进程
结构突变情况:
1,突然新增一个网段:触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK
确认
2,突然断开一个网段:触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK
确认
3,无法联系: dead time --- 40后断开
OSPF的基本配置
1,启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1 --- 手工配置RID需要在进程启动时配置
2,创建区域
[r1-ospf-1]area 0
3,宣告
作用:
1,激活接口:只有宣告的网段包含的接口会被激活,只有激活的接口可以收发OSPF
的数据。
2,发布路由:只有激活的接口所对应的直连网段的路由才能被发布
命令:
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 --- 使用反掩码
反掩码由连续的0和连续的1组成,0对应位不可变,1对应位可变。
路由相关信息:
优先级:华为设备,OSPF协议的默认优先级为10
COST值 = 参考带宽 / 真实带宽 (华为设备默认的参考带宽为100Mbps)
(如果计算出来是一个小于1的小数,则直接按照1来算。如果是一个大于1的小数,只取
整数部分。)
参考带宽:[r1-ospf-1]bandwidth-reference 1000 --- 修改参考带宽
拓展配置
1,OSPF的手工认证
[r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
2,手工汇总 --- 区域汇总
在ABR设备上进行配置
[r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.254.0
3,沉默接口
配置了沉默接口的接口,将只接受不发送路由信息
[r2-ospf-1]silent-interface GigabitEthernet 0/0/2
4,加快收敛 --- 减少计时器的时间
[r1-GigabitEthernet0/0/0]ospf timer hello 5 --- 修改hello时间的方法
[r2-GigabitEthernet0/0/0]ospf timer dead ?
INTEGER<1-235926000> Second(s)
注意:邻居双方的hello时间和死亡时间必须相同,否则将断开邻居关系
5,缺省路由
[r3-ospf-1]default-route-advertise
注意:这个命令要求边界设备自身得具有缺省路由才行
[r3-ospf-1]default-route-advertise always --- 在没有缺省的情况下,强制下发缺省