精通企业网络当中网红协议OSPF协议

OSPF协议

OSPF协议的工作机制类似于咱们的中国地图一样,咱们认拿着地图到达目标地点 ,路由器运行OSPF后,也会有一张类似于地图的东西,叫做LSDB(链路状态数据库)那么,路由器会利用这个LSDB(地图)去寻找到达其他路由器的最优路径(执行SPF算法)。把寻找好的最优路径用笔记记录(就是放在路由表中)下来,以便于以后再去这个地方的时候,直接看下笔记上面的路径就可以了

OSPF协议的区域概念

中国的首都是北京,咱们中国34个省,每一个省份都是紧紧的挨着,并且相互连接着
在OSPF协议当中,有区域的概念,比如area 0、area 1、area 2等区域 我们可以把area 0看作是北京,是最核心的一个区域,把area 1、area 2等区域看作成非北京区

OSPF的原理
OSPF原理总结

1、所有路由器都使能OSPF进程,并在一个区域中把自己的网段接口宣告
(network)进去
2、然后所有使能OSPF进程的设备之间交互LSA(链路状态通告)直到所有的
设备上的LSDB(链路状态数据库)都一样即可
3、然后在根据LSDB进行SPF计算,算出自己到达其他设备的最优路由出来
4、将算出的最优路由放入IP路由表中

OSPF Router ID

什么是route id?

和ip地址类似的32位的值,作为一台设备的标识符 企业网中的设备少则几台多则几十台甚至几百台,每台路由器都需要有一个唯一的ID用于标识自己。

手动配置route id

router id 8.8.8.8        #本地全局生效

ospf 1 router-id 8.8.8.8    #本地ospf进程生效 生产环境优先选择这样

配置自动选举route id(不建议)

  • 如果设备存在多个逻辑接口地址(如环回口loo1口),则路由器使用逻辑接口中最大的IP地址作为Router ID

  • 如果没有配置逻辑接口,则路由器使用物理接口的最大IP地址作为Router ID

Router ID选举规则如下

  • 手动配置OSPF路由器的Router ID(通常建议手动配置);

  • 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID;

  • 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID。

  • OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新Router ID。

reset ospf process   ------Y

华为这边比较奇葩 优先选择第一个UP接口作为router id

OSPF的常见结构

单区域结构

  • 区域的划分是以接口进行划分的,不是以网段进行划分

  • 如果ospf是单区域结构的话,那这个区域建议是area 0

多区域结构 

  • 如果ospf的区域结构是多区域的话,一定会有area 0区域,另外还有非骨干区域,比如area 1或者area 2等等区域

  • 并且所有的非骨干区域一定要连接到area 0周围

OSPF配置介绍

什么是反掩码

反掩码也叫做通配符
计算方式:反掩码=255.255.255.255-掩码
比如:192.168.1.1/24
反掩码=255.255.255.255-255.255.255.0=0.0.0.255

注意:

  • 反掩码中的0表示的意思就是精确值

  • 反掩码中的255表示的意思就是任意值

  • 有的工程师可能会写反掩码为0.0.0.0(0.0.0.0表示精确匹配)

OSPF配置思路

在R1的AREA 1当中

network 192.168.12.0 0.0.0.255

或者

network 192.168.12.1 0.0.0.0

R1配置如下命令:

intterface loopback 0

ip address 1.1.1.1 32

[R1]ospf 10 router-id 1.1.1.1   推荐这种方式配置router id

[R1]ospf 10   进入ospf进程里面

[R1-ospf-10]area 1   进入ospf的区域1当中

[R1-ospf-10-area-0.0.0.1]network 192.168.12.0 0.0.0.255  

是在我们区域1当中宣告我们的网段

R2配置如下命令:

intterface loopback 0

ip address 2.2.2.2 32

[R1]ospf 10 router-id 2.2.2.2   推荐

[R2]ospf 10   进入ospf进程里面

[R2-ospf-10]area 1   进入ospf的区域1当中

[R2-ospf-10-area-0.0.0.1]network 192.168.12.0 0.0.0.255  

是在我们区域1当中宣告我们的网段

同理R3 R4 R5的OSPF配置类似于R1 R2的配置

查看如下三张表

邻居表

路由表

总结:

ospf这边是基于接口划分区域的 在我们OSPF区域当中 其中area 0必须得有 area 0是骨干区域 其他的非区域0叫非骨干区域 非骨干区域必须连接到骨干区域周边

数据库表

OSPF的开销计算方式

OSPF的开销计算公式为带宽参考值/带宽

修改OSPF的默认参考带宽值,作用范围是本路由器使能OSPF的接口。建议参考整个网络的带宽情况建立参考基线,所有路由器修改相同的参考带宽值,从而确保选路的一致性。
cost=参考带宽/实际带宽,默认参考带宽为100M。当计算结果有小数位时,只取整数位;结果小于1时,cost取1。
注意:所有路由器都需要修改,确保选路一致性

出接口上面修改开销

直接在接口下配置,需要注意的是,配置的cost是此接口最终的cost值,作用范围仅限于本接口

[RTA- GigabitEthernet0/0/1]ospf cost 20

OSPF认证

安全隐患

非法设备收到财务部的流量之后,进行恶意分析,获取财务部关键信息,造成公司机密泄露 OSPF如何保证路由的安全性呢?

认证解决安全隐患

OSPF支持认证功能,只有通过认证的OSPF路由器才能正常建立邻居关系,交互信息。

OSPF的认证方式

区域认证方式
接口认证方式
注意:在区域下认证,比如在area 0做认证,那么该设备在区域0接口下的所有接口都认证,如果是在该设备启用接口认证,那么只针对于该接口做单独的认证,但是由于认证字段在OSPF头部当中,所以,两台设备之间R1和R2,R1做接口认证,R2做区域认证,只有认证模式一样,密码一样,R1和R2之间依然可以建立起邻居或者邻接关系

支持的认证模式分为

null(不认证)
simple(明文认证)
MD5(密文认证)
当simple和MD5都存在时,优先使用接口认证方式
两台设备之间 要么两端都不配置认证 要么两端都都配置simple认证 要么两端都都配置md5认证

案例1:OSPF认证导致FULL关系down

R1的配置明文认证

#interface GigabitEthernet0/0/0
ip address 192.168.12.1 255.255.255.0
ospf authentication-mode simple plain Huawei
#

如果此时R2这边不配置明文认证的话,R2和R1之间的FULL的关系就会down掉

[R1]display ospf peer brief

OSPF Process 10 with Router ID 192.168.12.1
         Peer Statistic Information

在R2配置明文认证,密码为Huawei@123 由于R1和R2的密码不一致,所以R1和R2之间的OSPF关系依旧也是down

[R1]display ospf peer brief

OSPF Process 10 with Router ID 192.168.12.1
         Peer Statistic Information

在R2上面配置明文认证,并且密码为Huawei

#interface GigabitEthernet0/0/0
ip address 192.168.12.2 255.255.255.0
ospf authentication-mode simple plain Huawei
#

怎么检查是否配置成功
你可以把接口R1连接R2的接口down一下 然后再undo shutdown一下 通过命令行检查一下

看到full就成功了

区域验证和接口验证

在区域下做认证

在接口下做认证

R1和R2之间的full邻接关系建立正常

Key id的作用

R1和R2之间无full的邻接关系

检查OSPF的错误信息

Key id的作用:平滑过渡的作用

OSPF报文格式

OSPF协议是网络层协议 IP协议号为89号

OSPF协议报文结构分为OSPF头部+OSPF数据包 注意:OSPF数据包一共有5个

  • Hello 报文

  • DD(Database Description)报文

  • LSR(LSA Request)报文

  • LSU(LSA Update)报文

  • LSACK(Link State Acknowledgment)报文

OSPF数据包类型

HELLO报文

Hello报文作用:
1、维护邻居状态
2、选择DR与BDR

DBD(DD)报文

第一份DBD报文作用:
1、选择主从关系,用来控制序列号的顺序
2、无任何LSA的信息

非第一份DBD报文作用:
1、用来描述LSA的头部信息

LSR报文

LSR报文作用:
1、请求对方的LSA信息
2、里面无LSA头部内容

LSU报文

LSU报文作用:
1、这个报文中才含有真正LSA的拓扑信息和网络信息

LSACK报文

LSAck报文作用:
1、用于确认从对方收到的LSU报文
2、LSAck里面包括LSA的头部信息

总结

DD、LSR、LSU、LSAck与LSA的关系:

  • DD报文中包含LSA头部信息,包括LS Type、LS ID、Advertising Router 、LS Sequence Number、LS Checksum。

  • LSR中包含LS Type 、LS ID和Advertising Router。

  • LSU中包含完整的LSA信息。

  • LSAck中包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。

OSPF协议状态机

我们在敲命令配置OSPF的时候,当两台路由器之间相互配置好OSPF协议后,会在显示屏上面出现如下信息 这些类似于广告信息就是OSPF的日志信息,从中可以看出OSPF的建立过程有如下几个阶段

一般情况下,OSPF的状态机分为如下几个过程

邻居过程
  • Down:这是邻居的初始状态,表示没有从邻居收到任何信息。

  • Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己的Router ID不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。

  • 2-Way:在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中,已确认可以双向通信。

邻居建立过程如下

1、RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2。当RTA启动OSPF后,RTA会发送第一个Hello报文。此报文中邻居列表为空,此时状态为Down,RTB收到RTA的这个Hello报文,状态置为Init。
2、RTB发送Hello报文,此报文中邻居列表为空,RTA收到RTB的Hello报文,状态置为Init。
3、RTB向RTA发送邻居列表为1.1.1.1的Hello报文,RTA在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
4、RTA向RTB发送邻居列表为2.2.2.2的Hello报文,RTB在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
因为邻居都是未知的,所以Hello报文的目的IP地址不是某个特定的单播地址。邻居从无到有,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)

DR和BDR的选举及作用

在运行OSPF的MA网络包括广播型和NBMA网络,会存在两个问题:
因为在同一个区域的路由器必须的保证他们的LSDB(链路状态数据库)是一样的,因此在一个有n个路由器的网络,会形成(n×(n−1))/2个邻接关系。

我们可以做一些优化,在一个MA网络中选出一个DR角色出来,DR(Designated Router)即指定路由器和BDR(Backup Designated Router)和DROther(非DR路由器)

规定:DR/BDR和BDR可以建立FULL的连接关系 DROther之间只能建立2-way的关系

DR和BDR监听的地址为224.0.0.6
DROther监听的地址为224.0.0.5

DROther路由器将路由信息发往226.0.0.6这个目标地址。

因为这个目标ip地址是DR或者BDR设备监听的。

然后DR设备会监听到这些路由信息,DR设备会把路由信息发往224.0.0.5这个IP地址。

因为224.0.0.5这个IP地址是所有运行OSPF的路由器监听的。

这样所有的路由器都能够收到这个路由信息

DR作用:

1、减少连接关系数量也就是full的关系
2、产生LSA-2

选举规则:

DR/BDR的选举是基于接口的。
接口的DR优先级越大越优先。
接口的DR优先级相等时,Router ID越大越优先。

注意:

优先级为0是不参与DR与BDR的选举的
一般建议人工干预进行DR和BDR的选择
只有MA的网络才会选择DR和BDR
P2P和P2MP中不选举DR和BDR
接口优先级 默认情况是1 取值范围就是0~255
命令

[R1-GigabitEthernet0/0/0]ospf dr-priority ?  

INTEGER<0-255>  Router priority value

[R1-GigabitEthernet0/0/0]ospf dr-priority 1

通过命令怎么查看

<R1>display ospf interface GigabitEthernet 0/0/0        

    OSPF Process 10 with Router ID 1.1.1.1                

        Interfaces Interface: 192.168.12.1 (GigabitEthernet0/0/0)

Cost: 10      State: BDR       Type: Broadcast    MTU: 1500  

Priority: 1 Designated Router: 192.168.12.2

Backup Designated Router: 192.168.12.1

Timers: Hello 10 , Dead 40 , Poll  120 , Retransmit 5 , Transmit Delay 1
<R1>

选举的过程:

1、首先选择的是DROther集合
2、然后选择的是BDR
3、最后选择的是DR

问题:
1、左边DR、BDR、DROther是谁?
2、右边DR、BDR、DROther是谁?

线路恢复后:
1、DR是谁?BDR是谁?DROther是谁?
2、当DR出现故障后,DR是谁?BDR是谁?DROther是谁?
3、当DR恢复后,DR是谁?BDR是谁?DROther是谁?

总结:
1、DR/BDR是非抢占的进行选择的
2、首先选择的是DROther
3、然后选择的是BDR
4、最后选择的是DR

邻接过程
  • ExStart:邻居状态变成此状态以后,路由器开始向邻居发送DD报文。Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。在此状态下发送的DD报文不包含链路状态描述。

  • Exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。

  • Loading:在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。

  • Full:LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。

OSPF协议网络类型

数据链路层协议类型多种多样,工作机制也各不相同。
为适配多种数据链路层协议,必须考虑各类链路层协议在组网时的应用场景。

[R1-GigabitEthernet0/0/1]ospf network-type

P2P网络

P2P网络连接了一对路由器,广播、组播数据包都可以转发。
P2P网络的例子:两台通过PPP(Point-to-Point Protocol)链路相连的路由器网络。
特点:
仅两台路由互连

查看OSPF的邻居状态

通过抓包可以看到目的ip地址都是224.0.0.5

结论
DR和BDR监听的地址为224.0.0.6
DROther监听的地址为224.0.0.5
P2P所有报文都是224.0.0.5

详细查看OSPF在接口下的信息

观察P2P网络类型的状态机的变化过程

结论:在P2P中是没有2-way邻居关系的,说明P2P类型下,是不需要选择DR和BDR的

OSPF在P2P网络类型不同网段之间建立邻居关系

问题:P2P链路上两边不在同一个网段,full关系能够建立起来吗?

广播型网络

广播型网络的例子:通过以太网链路相连的路由器网络。
两台或两台以上的路由器通过共享介质互连。
支持广播、组播。

其中,DR是123.0.0.5
BDR是123.0.0.4
DROther是123.0.0.3

在R3的G0/0/0接口抓包看到的现象

总结:

广播类型报文中所使用的地址
Hello报文:组播报文:224.0.0.5
DBD报文:单播报文
LSR报文:单播报文
LSU报文:单播、组播报文.5或者.6
LSACK报文:单播、组播报文 .5或者.6

广播网络下不同网段

将R3的G0/0/0地址改为192.168.1.1/24,看看R3能否可以和R4、R5建立OSPF关系起来?

NBMA和P2MP

网络类型混合

左边是P2P 右边是广播网络 看下是否能够建立起OSPF的关系

在R1这边查看OSPF的接口状态是P2P

在R2这边查看OSPF的接口状态时Broadcast状态

R1和R2已经建立起OSPF的FULL的邻接关系了

R2和R1已经建立起OSPF的FULL的邻接关系了

在R1上面查看状态机如下

在R2上面查看状态机如下

邻居和邻接关系总结

影响OSPF之间FULL关系建立不起来的几种情况

区域area问题

网段问题

时间问题

router id问题

认证问题

OSPF就介绍到这了,满满的干货,建议收藏起来慢慢观看吧~

(0)

相关推荐