介绍:
1.OSPF产生背景:
路由器根据路由表转发数据包,路由表项可通过手动配置和动态路由协议生成。
静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。相比较于静态路由,动态路由协议具有更强的可扩展性,具备更强的应变能力。
OSPF(Open Shortest Path First,开放式最短路径优先)具有扩展性强,收敛速度快等特点,作为优秀的内部网关协议被广泛使用。
该博客主要介绍OSPF的基本概念,OSPF的基础特性。
以下是OSPF 的基础特性:
2.思维导图如下:
1.名词解释:
2,OSPF的数据包(五种)
(1)hello包(可修改) --- 周期性的发现,建立和保活邻居关系。
hello报文
Hello报文的主要作用:
- 邻居发现:自动发现邻居路由器,
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系。
- 邻居保持:通过周期性发送和接收,检测邻居运行状态。
字段解释:
Network Mask:发送Hello报文的接口的网络掩码。
Hello lnterval:发送Hello报文的时间间隔。通常为10s
Router Dead lnterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。通常为40s。
Neighbor:邻居,以Router ID标识。Options:
E:是否支持外部路由
MC:是否支持转发组播数据包
N/P:是否为NSSA区域Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与0DR或BDR的选举。
Designated Router: DR的接囗地址。
Backup Designated Router: BDR的接囗地址。
(2)DBD包 --- 数据库描述报文 --- LSDB --- 链路状态数据库 --- LSA ---- “菜单”
报文字段解释:
接口最大传输单元(MTU):默认为0——华为设备默认未开启MTU值检测功能
注意:如果邻居的该字段不一致,则会停留在exstart状态
I (init)—— 该位为一,则代表该DBD是在进行主从关系选举的数据包
M (more) —— 该位为一,则代表后续还有更多的数据包,该位为0,则代表这个DBD包是最后一个DBD包
MS (master)——该位为一,则代表发送DBD包设备为主
在主从关系未选举出时,邻居双方都会将自己的MS位为1,认为自己是主,选举完成后,只有主置1
DBD的序列号 —— 在DBD报文交互过程中,会逐次加一,用于确保BDB报文传输的有序性和可靠性
隐性确认:DBD包的确认机制是通过序列号实现
—— 隐性确认:为主的设备发送一个DBD包,其中包含一个序列号,”从“收到这个数据包后将使用相同的序列号回复DBD包,起到确认的作用
显性确认:通过LSACK数据包实现确认
LSA 头部信息 —— 不是完整的LSA信息,是LSA信息的摘要
(3)LSR包 --- 链路状态请求报文 --- 基于DBD包,请求未知的LSA信息。 --- “点菜”
报文字段解释:链路状态类型,链路状态ID,通告路由器
——LSA的三元组(可唯一标识一条LSA)
(4)LSU包 --- 链路状态更新报文 --- 真正携带LSA的数据包 --- “上菜”
报文字段解释:LSA个数LSA详情信息
(5)LSACK包 --- 链路状态确认报文 --- 确认包
报文字段解释:通过LSA头部内容进行确认
OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。
6.以下是五种报文共有的头部信息:
3.OSPF的状态机:
down状态 --- 启动ospf之后,发出hello包进入下一个状态init(初始化)状态 --- 收到对方的hello包中包含自己本地的RID,则进入到下一个状态Two-way (双向通信) --- 标志着邻居关系的建立(条件匹配)匹配成功,则进入到下一个状态;失败则停留在邻居状态,仅使用hello包进行周期保活exstart(预启动)状态 --- 通过发送没有携带数据的DBD包来进行主从关系选举,比较RID来进行选举,RID大的为主,为主可以优先进入后面的状态exchange(准交换)状态 --- 交换携带数据(摘要信息)的DBD包进行LSDB数据库目录共享loading(加载)状态 --- 基于对端发送的DBD包,使用LSR/LSU/LSACK交换未知的LSA信息FULL状态 --- 标志着邻接关系的建立。注:其中down状态,two-way,FULL状态是稳定状态.
4.OSPF工作过程:
(1)确认可达性,建立邻居关系。
(2) 摘要同步,开始建立邻接关系。
(3)完整信息同步,完全邻接关系建立。
OSPF工作过程详细总结为:
启动配置完成,ospf协议向本地所有运行协议的接口以组播的形式(224.0.0.5)发送hello包;hello包中携带自己本地RID,以及本地已知的邻居的RID。之后,将收集到的邻居关系记录在一张表中 --- 邻居表 ;邻居关系建立完成后,进行条件匹配。失败则停留在邻居关系,仅hello包进行保活。匹配成功,则开始建立邻接关系。首先,使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包共享目录信息,之后,基本DBD包,通过LSR/LSU/LSACK获取未知的LSA信息。将所有的LSA信息保存本地的LSDB数据库 --- 数据库表 ;最后,基于LSDB,使用SPF算法进行计算,得到未知网段的路由信息,将其加载到 路由表 。收敛完成后,周期性的发送hello包进行保活,每30min一次周期更新。
结构突变:
1,突然新增一个网段:触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK确认2,突然断开一个网段:触发更新,第一时间将变更信息通过LSU包传递出去,需要ACK确认3,无法联系 --- dead time --- 40s
工作过程流程图如下:
(1)确认可达性,建立邻居关系。
OSPF使用Hello报文发现和建立邻居关系。在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。
OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息
此时OSPF对应的状态机如下:
(2) 摘要同步,开始建立邻接关系。
R1和R2的Router ID分别为10.0.1.1和10.0.2.2并且二者已建立了邻居关系。当R1的邻居状态变为ExStart后,R1会发送第一个DD报文。此报文中,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示R1宣告自己为Master。DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文。
同样当R2的邻居状态变为ExStart后,R2也会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(1-bit=1,M-bit=1,MS-bit=1,含义同上)。由于R2的Router ID较大,所以R2将成为真正的Master。收到此报文后,R1会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。
当R1的邻居状态变为Exchange后,R1会发送一个新的DD报文,此报文中包含了LSDB的摘要信息,序列号设置为R2在步骤2中使用的序列号Y,I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示R1宣告自己为Slave。收到此报文后,R2将邻居状态从ExStart变为Exchange。
当R2的邻居状态变为Exchange后,R2会发送一个新的DD报文,此报文包含了LSDB的摘要信息。DD序列号设置为Y+1,MS-bit=1,表示R2宣告自己为Master。
虽然R1不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,R1需要对Master发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,序列号为Y+1,该报文内容为空。发送完此报文后,R1产生一个Exchange-Done事件,将邻居状态变为Loading。R2收到此报文后,会将邻居状态变为Full(假设R2的LSDB是最新最全的,不需要向R1请求更新)。
(3)完整信息同步,完全邻接关系建立。
3.DR与BDR:
DRother:既不是DR也不是BDR的路由器就是DRother路由器
MA(Multiple Access,多路访问)分为BMA( Broadcast Multi-Access,广播多路访问)和NBMA(Non-Broadcast Multiple Access,非广播多路访问)。以太网链路组成的网络是典型的BMA网络。帧中继链路通过逻辑上的划分组成典型的NBMA网络。
DR与BDR的选举规则:
DR/BDR的选举是非抢占式的。
DR/BDR的选举是基于接口的。
- 接口的DR优先级越大越优先。
- 接口的DR优先级相等时,RouterID越大越优先。
广播链路或者NBMA 链路上DR和BDR的选举过程如下:
接口UP后,发送Hello报文,同时进入到Waiting状态。在Waiting状态下会有一个WaitingTimer,该计时器的长度与DeadTimer是一样的。默认值为40秒,用户不可自行调整。
在WaitingTimer触发前,发送的Hello报文是没有DR和BDR字段的。在Waiting阶段如果收到Hello报文中有DR和BDR,那么直接承认网络中的DR和BDR,而不会触发选举。直接离开Waiting状态,开始邻居同步。
假设网络中已经存在一个DR和一个BDR,这时新加入网络中的路由器,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的DR和BDR。
当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR。
只有当不同Router ID,或者配置不同DR优先级的路由器同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR
5.OSPF的基本配置
宣告的作用:1,激活接口 --- 只有宣告的网段包含的接口会被激活,只有激活的接口可以收发OSPF的数据。2,发布路由 --- 只有激活的接口所对应的直连网段的路由才能被发布
[r1]display ospf peer --- 查看邻居表[r1]display ospf peer brief --- 查看邻居关系简表[r1]display ospf lsdb --- 查看数据库表[r1]display ospf lsdb router 2.2.2.2 --- 展开一条LSA的方法[r1]display ip routing-table protocol ospf --- 查看路由表
6.OSPF的拓展配置:
1,OSPF的手工认证[r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 1234562,手工汇总 --- 区域汇总在ABR设备上进行配置[r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.254.03,沉默接口配置了沉默接口的接口,将只接受不发送路由信息[r2-ospf-1]silent-interface GigabitEthernet 0/0/24,加快收敛 --- 减少计时器的时间[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 --- 在没有缺省的情况下,强制下发缺省