动态路由协议的评判标准----收敛速度、选路、占用资源
OSPF---开放式最短路径优先---动态路由协议
动态路由协议好坏的评判标准-----收敛速度(越快越好)、选路、占用资源(设备资源)
RIP---路由信息协议---费尔蒙福特算法
对于RIP的收敛速度不快:RIP的计时器限制了其收敛速度
计时器:三个计时器
更新计时器30s,每三十秒的为一个周期发送一个更新报文
无效计时器180s,每一个通过路由学来的路由项,路由项的计时器,超过180s,路由器会将该路由项的cost值设置为16,而不是删除,后启动垃圾收集计时器
垃圾收集计时器90~120s,倒计时目的是为了向别的路由器通告4次,某条路由项不可用
IGP链路状态型协议SPF 算法组播 224.0.0.5/224.0.0.610/150
相同点无类别路由协议均采用组播通讯均支持等开销负载均衡不同点OSPF可以工作在大型网络中
RIP占用资源大---30s周期跟新,在多设备的拓扑中,每个设备的周期跟新计时器的时间不同,从而导致,在30的周期跟新中,可能会出现很多RIP报文
RIP的开销最大值15跳----只能工作在小型网络中
选路不佳
OSPF的选路优先级高于RIP
OSPF cost算法:根据带宽,默认带宽(100)/实际带宽
OSPF一般不会使用30分钟的周期跟新,OSPF在开启时才会传输LSA信息,仅限第一次,除非出现链路的改变
OSPF的结构化部署---区域划分
设备通过进程号区分不同的域
不同区域访问:
路由信息在区域间传递,告诉有哪些网段属于该区域,当数据包需要跨区域传输时,会看自己的目的网段在哪一个区域,从而选择通过哪一个边界路由器进行转发,
区域内的拓扑信息不会传出自己的区域,而路由信息在区域间传递
论链路状态型协议中的距离矢量特征
链路状态型协议:OSPF---传递拓扑
距离矢量型协议:RIP---传递路由
链路状态型协议中的距离矢量----OSPF中的不同区域之间相互传递路由信息,区域内部传递拓扑信息
拓扑的LSA不会传递出去,能传递的是将LSA转换为路由的信息
LSDB---链路状态数据库
当一个路由器将两个区域相连时
多区域划分要求
Area 0就是骨干区域(默认情况下)
当只有一个区域时,无论该区域编号,该区域就是骨干区域,但一般都会命名为Area 0。
要求:
1、OSPF要求域中的所有的非骨干区域(区域ID不为0的区域)都必须与骨干区域直接相连
2、骨干区域不能被分割,即Area 0区域有且只有一个
ABR:转发计算出来的路由
防止环路:OSPF定义了ABR(区域边界路由器)来确保遵守这条规则---只有真正的ABR设备才可以转发区域间路由信息,路由先传递到骨干,再从骨干传递到其他区域
ABR规则
- 至少连接两个区域
- 连接的区域至少有一个接口连接Area0
- 在Area0当中至少由一个活跃的邻居
内部路由器---IR
所有接口都接入同一个区域的路由器R4、R5、R1
区域边界路由器---ABR
R2 R3
骨干路由器
接入Area0的路由器R2R3R1R6
AS(自治系统)边界路由器
工作在OSPF自治系统边界路由器,负责将OSPF域外的路由器引入本域,可能运行多个不同的路由协议R6
但不是所有运行多个路由协议的路由器都是AS路由器,必须执行力重发布操作的路由器才会被称为ASBR
hello包
用来发现、建立周期保活OSPF邻居关系,通过组播224.0.0.5发送
10s发送一次用以确定邻居存在
hold-time---死亡时间----hello-time*4
Router-ID(RID)在OSPF环境下的RID---全域唯一,标识路由器身份配置方式
手工配置
自动配置
路由器的RID选取规则:默认优选最大环回IP地址,没有环回就选择最大物理IP地址
在华为设备中,若没有接口IP,则OSPF启动后,RID为0.0.0.0
在思科设备中,若没有接口IP,则OSPF无法启动
华为标准:状态最先UP的接口的IP地址作为Router id
FRC标准(网络的所有规则定义的集合):
1、取loopback接口中最大的作为Router id
2、若没有loopback接口,则选择物理接口IP地址中最大的作为Router id
无论是采用手工还是自动选取的方式,一旦OSPF确定了RID,则之后不会改变---重启OSPF进程
DBD报文
1、 数据库描述报文
2、该报文中携带的是路径信息的摘要,收到摘要的一方通过摘要中对应的元素,在对发送方进行申请详细信息----避免重复更新,减少更新量的一种做法
lSR报文
1、链路状态请求报文---用以获取未知的LSA(链路状态通告)信息
LSU报文
1、链路状态更新报文
2、携带真实的LSA信息的数据包
LSAck报文
1、链路状态确认报文
OSPF七种状态机
- down---关闭---一旦启动了OSPF协议,则发出hello报文进入下一个状态
- init---初始化---收到的hello报文中存在本地RID值,进入下一个状态
- 2-way---双向通讯---邻居关系建立的标志
条件匹配:匹配成功则进入下一个状态,匹配失败则停留在邻居状态
- exstart---预启动---使用未携带信息的DBD报文进行主从关系选举,RID大的为主。
- exchange---准交换---使用携带目录信息的DBD报文进行目录共享
- loading---加载---邻居间使用LSR/LSU/LSACK报文来获取完整的LSA信息
- full---转发---拓扑交换完成后,根据算法计算出路由进入该状态,标志在邻接关系的建立
稳定状态:2-way,full
条件匹配
决定了谁给谁传递了拓扑信息。
DR/BDR/DRother---接口角色
选举规则
1. 优先级,0~255;选择优先级大的为DR设备,默认为1,若优先级为0则代表放弃选举
2. 若选举优先级相同,则比较RID值,越大越优先
选取范围---一个广播域
非抢占模式---重选则需要重启OSPF进程
在一个MA网络中,可以没有BDR,但是必须存在DR
条件选举的过程(为了消除重复跟新)
1、DR、BDR的选举是通过Hello报文完成的,条件匹配时间处于two-way之后exstart状态之前,在建立完邻居之后完成条件匹配,条件匹配成功会进入下一个阶段exstart,即开始建立邻接状态,在exstart状态之前都是处于邻居状态,hello报文是处于邻居状态时使用的唯一一种报文结构
2、路由器将自己的接口的DR优先级填写在hello报文的“DR优先字段”
DR选举时先看优先级(接口优先级,每个接口都可以有),后看RootID,所以这些信息都要在hello报文中存在
1、华为数通产品的接口优先级默认为1,该参数值可以通过
进入接口修改的方式修改(DR优先级为0,则代表该接口不具备选举DR和BDR的资格)
OSPF工作过程
三步 确定可达性(2-way ) --- 摘要同步(DBD) --- 完整信息同步(LSR LSU LSACK)
一. 启动OSPF配置后,OSPF向本地所有运行了OSPF协议的接口以组播224.0.0.5发出hello报文;hello报文中携带了本地的RID参数以及本地已知的邻居RID值。1. 邻居的RID获取方式:通过接收其他邻居的hello报文来获取本地邻居2. 建立邻居关系,并生成邻居表。二. 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系,即2-way状态,仅使用hello报文保活。该状态为稳定态。三. 匹配成功的邻居开始建立邻接关系。1. 首先使用未携带数据的DBD报文进行主从关系选举,之后使用携带信息的DBD报文来共享数据库目录;2. 然后本地通过对方共享的目录信息与本地数据库进行对比,通过使用LSR报文请求未知的LSA信息。3. 对端使用LSU报文回复完整LSA信息4. 本端使用LSAck报文确认回复。四. 当本地接收到所有的未知LSA信息后,将信息存放在LSDB中。1. 之后基于本地数据库生成有向图和最短路径树。2. 根据最短路径树计算本地到达拓扑中所有未知网段的最短路径,并将其加入到OSPF路由表中。3. 从OSPF路由表中选择最优路由加载入本地全局路由表。五. 收敛完成后,hello报文周期保活。每30min进行一次周期链路刷新。
1. 新增网段直接使用LSU报文告知邻居,邻居使用 ACK 进行确认。2. 断开网段直接使用 LSU 报文告知邻居,邻居使用 ACK 进行确认。3. 无法沟通dead time----4*hello time ,状态为 down ,删除信息。
1. 启动 OSPF 协议[r1]ospf 1 router-id 1.1.1.12. 创建区域[r1-ospf-1]area 03. 宣告[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 -- -- 精准宣告[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255 ---- 范围宣告
OSPF报文格式
5种报文名称,跨层封装
OSPF协议号---89
报文头部信息
- 版本---恒为2
- 类型---描述OSPF数据包类型
~ hello---1
~ dbd---2
~ lsr---3
~lsu---4
~lsack---5
- 报文长度
不包含头部信息
- 路由器ID---RID
- 区域ID---发出该报文的接口所属区域的ID值
- 校验和---校验完整数据包,包括头部以及数据部分
- 验证类型
指示给数据报文使用的认证类型
不认证;简单认证---1;MD5认证—2
- 验证数据
用于报文认证的内容
多认证类型不为认证,则该字段全为0
1、hello包
网络掩码
- 两台OSPF路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码
- 如果一方在接口上收到的hello报文种,网络掩码字段与本地接口配置的掩码不同,则该路由忽略该hello报文,此时邻居关系无法建立
- 注意:只有在华为设备中才会检测网络掩码信息
hello时间间隔
- 如果两台路由器的hello时间间隔不同,则不会建立邻居关系
- 在Broadcast类型和P2P网络类型中hello时间间隔为10s;而在NBMA或P2MP网络类型中,Hello时间为30s
可选项
- 有8个标志位,每一个标记位为1,则代表其符合OSPF的某种特性
- 会影响特殊区域标记位
- 路由器优先级
接口优先级 8bit
用于选举DR和BDR
在点到点网络中不需要选举DR与BDR
路由器失效时间
两台设备建立ospf邻居需要确保死亡时间相同
默认情况下是hello时间间隔的4倍
若修改hello时间,则死亡时间随之改变;若修改死亡时间,则hello时间不变
指定路由器---DR
该参数位网络中DR的接口地址
若没有选举出来,则使用0.0.0.0 占位
备份指定路由器---BDR
若没有选举出来,则使用0.0.0.0 占位
邻居内容:在直连链路中发现的有效邻居,填充的是邻居的RID
组播:所有224.0.0.X格式的组播地址称为本地链路组播地址,目标是本地链路的数据包的TTl值被设定为1。所有本地链路组播存在对应的组播MAC地址,10-00-5e后23位,后23位为组播IP地址的后23位
限制邻居关系建立的参数
子网掩码 发送数据包的接口网络掩码
- R1修改掩码后会立即将状态置为down,而R2会在40s死亡时间后进行状态切换
- 原因在于:R1在修改IP地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以会直接重置状态机。而R2认为此时属于结构突变中的无法沟通
hello时间 10s
int g/0/0/0
ospf timer hello 20
双方经过死亡时间后,状态才发送改变
dead时间
在接口内:ospf timer dead 80
认证 再更改后再经过死亡时间后才会实施
区域认证 只要处于该区域就开启认证,开启区域内所有接口的认证
ospf 1
area 0
authenticantion-mode simple plain 123456
接口认证 两端需配置相同的认证类型(加密方式)
int 接口
ospf authentication-mode simple plain 123456
可选项 8bit:与修改掩码信息结果相同
2、DBD包
DBD报文:发送数据库的目录信息
- 使用未携带数据的DBD报文进行主从关系选举
- 使用携带数据的DBD报文进行拓扑目录共享
- 使用未携带数据的DBD报文进行确认
MTU---接口最大传输单元(16bit)
- 在华为AR系列路由器上默认为0
- 该字段是用于进行OSPF的MTU检测,而华为默认不开启MTU检测机制
MTU检测机制在两个OSPF路由器上传输,若两台设备开启了MTU检测,就会去比对最大传输单元,若一致就建立邻接关系,不一致就不会进入full状态,在exchange,过一段时间后会去到exstart状态
在接口处打开MTU检测机制:ospf mtu-enable
可选项---与hello报文中的可选项字段一致,与修改掩码信息结果相同
I---主从关系选举
如果该位为1,则代表数据报文是用于进行主从关系选举。且此时的数据包中不会携带真实的数据库目录信息
M
若为1,则代表后续还存在DD报文
若为0,则代表后续没有DD报文
MS---是否为主设备
若为1,则代表本设备为Master设备
若为0,则代表本设备为Slave设备
DD序列号
用于确保DD报文传输的有序性和可靠性
在DD报文交互的过程中,DD序列号被逐次加1。且DD序列号必须由Master路由器来决定,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。
隐形确认机制----通过对方发送的数据包中的DD序列号,起到确认的效果。而主从关系选举就是为了完成隐形确认。(不管报文存不存在都有)
3、LSR包
链路状态类型、链路状态ID、通告路由器----LSA的三元组信息---通过这三个参数可以标识出一条LSA信息
4、LSU包---链路状态跟新报文 ---携带LSA
5、LSAck包---链路状态确认报文
完成显式确认机制