OSPF协议基础
OSPF 路由协议基础:
OSPF概述:
-
OSPF(开放式最短路径优先)
-
基于链路状态信息的内部网关协议(IGP协议)
-
基于IP协议,协议号:89
-
SPF算法:OSPF区域中所有的路由器会从与他相邻的路由器获得LSA,将这些LSA存入LSDB中,计算到每一地方的最优路径,然后将最优路径存入全局路由表中。在计算的过程中,就已经消除了环路
OSPF特点:
-
使用区域化的概念:区域内部独立计算,减少对内存和cpu的占用。构建了一个层次化的网络拓扑。
-
支持无类路由,支持划分子网。
-
没有开销限制,
-
局部更新
-
支持负载分担(最多8条)
-
使用组播更新报文(DR:224.0.0.6,其他路由器:224.0.0.5)
-
支持md5认证
OSPF区域:
-
分为骨干区域和非骨干区域
-
每个网络拓扑里面只允许存在一个骨干区域,所有的非骨干区域必须与骨干区域相连。
OSPF网络类型
网络类型 | Hello时间 | Dead时间 | 邻居与邻接关系 |
---|---|---|---|
广播 | 10s | 40s | 自动建立邻居,选举DR/BDR |
P2P | 10s | 40s | 自动建立邻居,无需选举DR/BDR |
P2MP | 30s | 120s | 手动指邻居,无需选举DR/BDR |
NBMA | 30s | 120s | 手动指邻居,选举DR/BDR |
OSPF 报文类型:
报文类型 | 报文作用 |
---|---|
Hello | 周期性的发送,用来发现,建立,维护邻居关系。 |
DD-First DBD | 用来确定主从关系的 |
DD-DBD | 用来描述本地链路数据库的摘要信息 |
LSR | 用于向邻居请求所需LSA的详细信息。 |
LSU | 用与向对方回复所请求LSA的详细信息 |
LSACK | 用于对收到的LSA的详细信息做确认 |
注:DBD报文需要做确认,哪怕master设备发送的DBD报文是空的,slave也需要做确认,否则5s重传一次。
通过keepalive机制,检测邻居的建立状态。
OSPF状态机:
状态 | 效果 |
---|---|
DOWN(无效状态) | 表示在dead时间内没有收到hello报文 |
Init(初始状态) | 收到hello报文,没有发现自己的R-id |
2-way(双向通信状态) | 接受到了hello报文,且在active neighbor字段看到了自己的R-ID |
Exstart(信息交互初始状态) | 交互first DBD报文,确定主从关系,R-ID大的为master |
Exchange(信息交换状态) | 交互DBD报文,携带LSA的头部信息 |
Loading(信息加载状态) | 当收到本地DBD报文中M位为0是,进入该状态 |
Full(完全邻接状态) | 路由器之间建立完全邻接状态,LSDB同步完成 |
注意点:
2-way:当进入到2-way状态后,表明邻居关系建立完成,如果在MA的网络中,还需要选举DR/BDR.
DR/BDR的选举过程:
- 先比较接口优先级,华为默认为1,当为0时不参与选举。
- 接口优先级一致时,比较R-ID,R-ID大的为DR
- DR/BDR不具有抢占性。
Exstart:当DBD报文中,I 位置位时表明这是第一个DBD报文,为first-DBD报文,确定主从关系是为了方便进行lsdb的同步,确定完主从关系后,slave需要做确认,确认自己知道了谁是master,
Exchage:master路由器向slave路由器发送LSDB摘要信息,并规定其实序列号,每发送一个DBD报文序列号+1,slave路由器则使使用master路由器的序列号进行应答。
loading:LSR-LSU-LSACK报文的运用,LSDB的同步过程。
attempt:该状态只有在NBMA网络类型中才有,表示本地路由器在dead时间超时后,没有收到邻居回复的hello报文,而此时路由器仍然会向对方发送hello报文。
OSPF影响建立邻居关系的因素
- R-ID一致:1.直连设备(邻居关系无法建立)2.同区域不直连(可以建立邻居,LSDB不能同步),3.不同区域不直连(不影响邻居关系的建立, )
- area-id不一致
- area类型不一致
- hello/dead时间不一致
- 认证参数及密钥不一致
- 掩码不一致(只针对于MA网络)
- 接口被静默
- options可选项置位不一致
OSPF影响邻接关系建立的因素:
- MTU(华为默认填充字段为0)
- 如果主的MTU比较大,那么master发送的DD,slave就不会收到,所以双方会停留在exstar
- 如果从的MTU比较大,那么slave跟master回应的DD,master不会收到,那么从会停留在exchange,主会停留在master。
- DR优先级为(只针对于MA网络)
- 链路状态请求列表(LSR)或链路重传列表(LSU)不为空
DR/BDR的概念:
-
为什么要有DR/BDR:
选举DR的目的是为了避免在广播网络和非广播网络中LSA的重复通告而带来的带宽浪费问题
选举BDR是为了做DR的备份。
-
为什么DR没有抢占机制:
因为DR区域内的路由器没有建立全连接的邻接关系,所以如果进行抢占的话,会DRother会与新的DR建立邻接关系,
-
DR/BDR何时可以抢占:
当新加入的设备发送的Hello报文中,DR/BDR字段不为空,即可以发生强占,若为空的话,DR/BDR会之间把自己的地址进行填充。
-
DR/BDR的选举流程:
先选BDR,在BDR的集合里选举DR,BDR成为了DR后,再从优先级非0的集合中选举BDR.
OSPF认证:
- 认证类型:
- 接口认证,
- MD5:密码,OSPF内容,Key-id
OSPF撤销路由:
- 3600 3,4,5,7类 PRC算法。
- 一类,二类,直接更新序列号。
OSPF不同网络下报文的发送方式:
网络类型 | 组播 | 单播 |
---|---|---|
BMA | Hello,LSU,LSAck | DD,LSR |
NBMA | Hello,LSU,LSAck,DD,LSR | |
P2P | Hello,LSU,LSAck,DD,LSR | |
P2MP | Hello | DD,LSU,LSAck,DD,LSR |
OSPF一类LSA所描述的链路类型
链路类型 | Link id | Data |
---|---|---|
TrantNet | DR接口IP地址 | 去往DR的出接口地址 |
StubNet | 网络地址 | 网络掩码 |
P2P | 邻居的R-ID | 去往邻居的出接口地址 |
V-link | 对端的R-ID | 本地Vlink 的地址 |