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.
1DR/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网络)==
- 接口被静默
OSPF影响邻接关系建立的因素:
- MTU(华为默认填充字段为0)
- DR优先级为(只针对于MA网络)
- 链路状态请求列表(LSR)或链路重传列表(LSU)不为空
DR/BDR的概念:
为什么要有DR/BDR:
选举DR的目的是为了避免在广播网络和非广播网络中LSA的重复通告而带来的带宽浪费问题
选举DR也可以减少邻居关系关系的建立,避免发送大量的hello包来占用带宽
选举BDR是为了做DR的备份。
为什么DR没有抢占机制:
因为DR区域内的路由器没有建立全连接的邻接关系,所以如果进行抢占的话,会DRother会与新的DR建立邻接关系,
DR/BDR何时可以抢占:
当新加入的设备发送的Hello报文中,DR/BDR字段不为空,即可以发生强占,若为空的话,DR/BDR会之间把自己的地址进行填充。
DR/BDR的选举流程:
先选BDR,在BDR的集合里选举DR,BDR成为了DR后,再从优先级非0的集合中选举BDR.