文章目录
一、ospf链路状态路由协议(无类/带掩码)
1.1 特性
- 使用SPF算法:以自己为根节点计算最短路径树
- 华为设备上,常见路由优先级:RIP=100,ospf=10,静态=60,直连=0
- AD:用来判断路由条目来源的优先级(越小越优)
- 等价负载均衡:从源到目的同时存在多条AD值和度量值一样的路径,默认支持4条负载均衡,最大支持16条。
- 不支持自动汇总,只支持手动汇总
- 传输层协议,需要上层(网络层)IP协议号89,管理距离110
- 只支持等价负载均衡(不等价负载均衡IEGRP,两条路径开销不同也可以实现负载均衡)
- 支持简单口令认证(明文)和MD5(哈希算法,不可逆、雪崩效应)加密校验认证(密文)。为了保证双方身份合法
- 触发更新、增量更新、周期更新1800s=30分钟
- 组播更新地址:224.0.0.5(所有可收)、224.0.0.6(DR和BDR可收)
1.2 链路状态:
- 链路:运行在OSPF进程下的路由器接口
- 链路状态:接口上的描述信息(接口的IP地址、子网掩码、网络类型cost值)
- 只有邻接关系才会交互链路状态信息
1.3 路由表优选:
- 遵循最长掩码匹配原则
- 管理距离AD,越小越优
二、OSPF路由器特殊角色
2.1 角色名称
- DR:指定路由器
- BDR:备用路由器
- Drother:其他路由器
2.2 角色关系
- DR和BDR为邻接关系
- Drother和Drother为邻居关系(在Two-way状态下选举出)
2.3 角色标识 Router-ID
- OSPF路由器的身份标识(以IP的形式表示,不是一个IP地址,是编号)
- 一个OSPF路由器只能有一个Router-ID
- 整个OSPF自治系统的Router-ID不能一致
- 不抢占,清进程/重启路由器
2.3.1 Router-ID的自动确定方法:
- 手动指定Router-ID,最优先
- 活动的loopback回环口IP最大
- 活动的最大的物理接口IP最大
2.3.2 手工指定Router ID
- OSPF进程下:Router(config-router)#router-id 1.1.1.1
- 指定范围0.0.0.0~255.255.255.255
- OSPF邻居已经建立好的情况下,手工指定Router ID不会立刻生效,需要重启ospf进程clear ip ospf process
2.4 角色选举规则
- 接口优先级大的优先
- Router-ID大的优先
- 选举环境:广播,非广播多路访问
- DR不一定为主路由器
- 一个广播域(网段)选一个DR、BDR(在接口选)
- 一个网段中有n台路由器的情况下:构成n*(n-1)/2个邻接关系
三、OSPF区域(基于接口划分)
3.1 OSPF普通区域
- 骨干区域area0:域间通信数据包交互需要经过骨干区域,一定程度上起到防环作用
- 常规区域area其他:常规区域间不能直接交换数据包
- 注意:所有常规区域必须与骨干区域相连
3.2 OSPF 特殊区域
主要用来过滤LSA,骨干区域不能配置
末节区域stub | 完全末节区域 | 不完全末节区域NSSA | Totally NSSA |
---|---|---|---|
过滤外部5类(4类。隐含),允许其他区域条目3类 | 过滤外部5类(4类),以及其他3类 | 过滤外部5类、4类,允许其他3类 | 过滤外部5类、4类、其他3类 |
ABR会自动向末节区域发送一跳指向自己的默认路由(不允许有外部条目引进来产生一条指向ABR的默认路由进行通信) | ABR会自动向末节区域发送一跳指向自己的默认路由3类(不允许有外部条目引进来产生一条指向ABR的默认路由进行通信) | 不产生一条指向ABR的默认路由,手动(允许有外部条目引进来,不产生一条指向ABR的默认路由,手动) | ABR会自动向末节区域发送一条指向自己的默认路由(允许有外部条目引进来产生一条指向ABR的默认路由,) |
本区域内的路由器不能 | 本区域内的路由器不能 | 本区域内的路由器可以 | 本区域内的路由器可以 |
成为ASBR(不能有外部条目引入) | 成为ASBR | 成为ASBR(允许外部条目引进) | 成为ASBR |
无虚链路经过 | 无虚链路经过 | 无虚链路经过 | 无虚链路经过 |
T_T这部分让我想想我写的啥…语言太过精简,后续再修订
注意:
- 末梢区域过滤LSA,在进程下配置。过滤以后路由表里没有外部OE2的路由条目。但是不影响通信,因为有一条指向自己的默认路由(自己产生)
- 将一个特殊特殊区域更改为另一个特殊区域,切记将原来的配置删除干净,再配置新的特殊区域(在进程下,no area 1 stub)
- 配置成nassa以后,外部条目以7类的LSSA存在,传给其他区域时,以5类的LSA传递
- 网络类型:路由器对接入进来的链路的认知,不同的认知处理的方式是不一样的,可以在接口下修改。
四、OSPF虚链路
虚链路是一个逻辑的虚拟通道,让普通区域与骨干区域逻辑相连。在骨干区域和常规区域之间建立虚拟通道,逻辑扩大区域0的范围
- 虚链路配置
- R2(config-router)#area 1 virtual-link 3.3.3.3
- R3(config-router)#area 1 virtual-link 2.2.2.2
- 3.3.3.3 和2.2.2.2 为router-id
- 注意:为了环境稳定。先配置router-id,在创建虚链路环境之前否则会被回环口的ID号替代
五、OSPF认证
用来验证双方身份的合法性
- 不认证、明文认证、MD5认证
- 开启虚链路认证需要做双向认证,否则清进程之后邻居关系down。
六、OSPF路由器类型
- IR-内部路由器:所有接口都属于同一个区域的路由器
- ABR-区域边界路由器:接口不全属于同一个区域的路由器,同时存在两个area中的链路状态信息
- ASBR-自治系统边界路由器:将EIGRP系统的自治区域的条目引到OSPF里面
例如:一台路由器回环口的路由条目没有被通告进ospf的路由器即为ASBR。默认情况下,两个自治系统的路由器不能互相通信 - AS自治系统:一个单独的可以自己管理的网络单元。可以理解为用同一种协议的区域
- 注意:不同自治系统之间无法直接交换数据互相通信需要通过一定的技术手段(双向重分发)
七、OSPF路由条目类型
- O区域内路由
- O IA区域间路由
- 外部路由条目:O E1或O E2(默认)
- O E1:出接口累加开销,每次加1
- O E2:默认初始开销20,不累加,除非手动更改
- 路由类型优先顺序:O>O IA>O E1>O E2
注意:为了让两个不同协议ospf/RIP的网络系统,同时拥有两个协议的路由器,会拥有两个路由条目类型。更优的加表,其他类型不加表。
八、OSPF邻居建立过程
8.1 OSPF的三张表
- 邻居表:存放邻居的相关信息。列出本地路由器全部已经建立邻接关系的邻居路由器信息。
- 拓扑表(链路状态数据表LSDB):存放所有的链路状态信息—链路状态数据库。列出了网络中其他路由器的信息,相当于拥有了整个网络的路由地图。
- 路由表:存放都是最优条目—经过SPF算法的最优路由。列出了到达每个想来了连网络的最佳路径。
8.2 OSPF的五个包
报文类型 | 描述 |
---|---|
Hello=type=1 | 建立和维护邻居关系。 1.建立邻居前发现邻居 2.邻居建立之后用来维护邻居关系,默认10s发送一次 |
DBD数据库描述包=type=2 | 描述每台OSF路由器的LSDB信息。 存放LSA的所有目录信息,链路状态信息 |
LSR链路状态请求包=type=3 | 请求OSPF邻居的链路状态信息 LSA请求,想知道的LSA信息 |
LSU链路状态更新包=type=4 | 传递LSA(包含一条或者多条)给邻居,根据LSR所发 |
LSAck链路状态确认包=type=5 | 回应并确认邻居发来LSU中的LSA已收到 |
8.3 七个状态过程
- 总结:
路由器运行OSPF协议的过程
先建立邻接关系—>知道LSA链路状态—>收敛完成后—>生成链路状态数据库LSDB—>经过SPF算法计算—>选择最优路径树—>形成路由表(每个路由器都拥有一个完整的数据链路图)
九、OSPF常见几类LSA
传播范围 | 通告路由器 | 链路状态ID | 包含内容 | |
---|---|---|---|---|
1类:路由router-LSA | 本区域防洪广播,不穿越ABR | 本地路由器Router-ID | 本地路由器Router-ID | 本路由器的直连邻居,以及直连接口的信息 |
2类:网络Network-LSA | 本区域,不穿越ABR | DR的Router-ID | DR的接口IP | MA网种的路由器、本网掩码信息,DR路由本身的Router-ID |
3类:网络汇总Network summary-LSA | 除本区域外的其他区域 | ABR的Router-ID,经过一个区域改变一次 | 网络号 | 本区域路由信息,包括网络号和掩码 |
4类:ASBR汇总ASBR summary-LSA | 整个AS | ABR的RID,经过一个区域改变一次 | ASBR的RID | 本区域的路由信息,包含网络号和掩码 |
5类:自制系统外部AS external-LSA | 整个AS | ASBR的Router-ID | 网络号 | 域外路由信息,一个LSA即一条路由信息 |
7类:不完全末节区域NSSA external-LSA | NSSA本区域 | ASBR的Router-ID | 网络号 | 域外路由信息,一个LSA即一条路由信息 |
- 1、2类实现区域内的路由
- 1、2、3类实现区域间路由
- 1、2、3、4、5实现自治系统之间的通信
- 只有邻接关系才能交换LSA(链路状态)
十、默认路由
- 没有always参数:没有默认路由不会下放默认路由,要下发一跳,本身也要有一跳默认路由。
- 有always参数:本身没有默认路由也可以下放默认路由
- 出口下放一跳默认路由给内网,使外网能够和内网的通信。
十一、OSPF条目汇总
- 3类O IA在ABR(本区域)上汇总,进程下汇总(可以查看链路状态数据库来查看是谁将条目通告给我,如果有多台边界路由器,则每台都要汇总)
- 命令:area 0 range+IP+掩码
- 5类O E2(默认)在ASBR上汇总,进程下汇总
- 命令:summary-address+IP+掩码
- 要汇总的条目是谁通告进来的就在哪台路由器上汇总
- 生效条件:至少存在也给明细条目
- 汇总条目的开销值:最小的条目的开销值
- 汇总后会产生一条null0(垃圾桶)的条目,为了避免因为明细条目故障产生环路
十二、网络类型及DR/BDR选举
网络类型 | Hello时间 | 选举DR/BDR | 邻居建立方式 |
---|---|---|---|
点到点(point-to-point) | 10S | 否 | 自动 |
点到多点(point-to-multipoint) | 30S | 否 | 自动 |
广播(broadcast) | 10S | 是 | 自动 |
非广播(non-broadcast) | 30S | 是 | 手工 |
点到多点非广播(point-to-multipoint Non-broadcast) | 30S | 否 | 手工 |
-
网路类型不一致而不能起邻居关系是因为hello时间不一致。不能通信是因为处理方式不一样,所以不能学到条目信息。点到多点可以学到。视情况分析能不能建立邻居关系。
-
两端网络类型不一致,可以进行到full,但是不发送LSA
-
点到点:串型链路,封装上ppp协议(支持认证)、HTL协议的链路
思考题
-
在多路访问下一定有DR/BDR?
错。优先级接口为0不选举。 -
在一个网络里一定有DR/BDR?
错,网络类型为点到点等不选举 -
为了实现网络互相通信一定有DR/BDR?
对。DR/BDR邻接关系才能交互链路状态信息 -
为什么要选举DR/BDR?
为了减少不必要邻接关系的建立,减少环境中链路状态信息的交互。以太网环境下,接口优先级为0的不参与DR/BDR的选举,DR/BDR不支持抢占。 -
OSPF区域划分的好处?
1)方便管理
2)减少网络动荡
3)减小LSDB,减少SPF计算,节约进程资源
4)规定区域0为骨干区域,所有常规区域数据包交互必须要经过骨干区域,在一定程度上可以防环 -
为什么OSPF适用于大型网络环境?
收敛速度快
区域的划分方便管理
LSDB减小,减小网络动荡
促发更新,增量
DR/BDR的选举
支持认证支持vlsm和CIDR
支持等价负载均衡
组播更新 -
形成OSPF邻居的四个条件?
1. 区域ID 一致
2. Hello时间(10s默认)和dead时间一致
3. 认证类型和密码一致
4. 特殊区域标签一致 -
邻接关系建立不成功的原因?
1)区域ID不一致
2)Hello时间和死亡时间不一致
3)认证类型不一致
4)认证密码不一致
5)特殊区域标签不一致
6)掩码不一致(在广播环境下,如果是点对点环境,不影响)
7)RID一致
8)MTU不一致 -
接口下认证和进程下认证有何区别?
接口:只对这个接口开启认证
进程:路由器上所有活跃的接口开启认证
认证密码只能在接口下配置,如果同时在进程下和接口下开启认证,那么接口下的认证优先生效。认证不成功,邻居down。