精通企业网络当中网红协议OSPF协议
OSPF协议的工作机制类似于咱们的中国地图一样,咱们认拿着地图到达目标地点 ,路由器运行OSPF后,也会有一张类似于地图的东西,叫做LSDB(链路状态数据库)那么,路由器会利用这个LSDB(地图)去寻找到达其他路由器的最优路径(执行SPF算法)。把寻找好的最优路径用笔记记录(就是放在路由表中)下来,以便于以后再去这个地方的时候,直接看下笔记上面的路径就可以了
中国的首都是北京,咱们中国34个省,每一个省份都是紧紧的挨着,并且相互连接着
在OSPF协议当中,有区域的概念,比如area 0、area 1、area 2等区域 我们可以把area 0看作是北京,是最核心的一个区域,把area 1、area 2等区域看作成非北京区
1、所有路由器都使能OSPF进程,并在一个区域中把自己的网段接口宣告
(network)进去
2、然后所有使能OSPF进程的设备之间交互LSA(链路状态通告)直到所有的
设备上的LSDB(链路状态数据库)都一样即可
3、然后在根据LSDB进行SPF计算,算出自己到达其他设备的最优路由出来
4、将算出的最优路由放入IP路由表中
什么是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是单区域结构的话,那这个区域建议是area 0
多区域结构
如果ospf的区域结构是多区域的话,一定会有area 0区域,另外还有非骨干区域,比如area 1或者area 2等等区域
并且所有的非骨干区域一定要连接到area 0周围
什么是反掩码
反掩码也叫做通配符
计算方式:反掩码=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表示精确匹配)
在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的接口。建议参考整个网络的带宽情况建立参考基线,所有路由器修改相同的参考带宽值,从而确保选路的一致性。
cost=参考带宽/实际带宽,默认参考带宽为100M。当计算结果有小数位时,只取整数位;结果小于1时,cost取1。
注意:所有路由器都需要修改,确保选路一致性
出接口上面修改开销
直接在接口下配置,需要注意的是,配置的cost是此接口最终的cost值,作用范围仅限于本接口
[RTA- GigabitEthernet0/0/1]ospf cost 20
安全隐患
非法设备收到财务部的流量之后,进行恶意分析,获取财务部关键信息,造成公司机密泄露 OSPF如何保证路由的安全性呢?
认证解决安全隐患
OSPF支持认证功能,只有通过认证的OSPF路由器才能正常建立邻居关系,交互信息。
OSPF的认证方式
区域认证方式
接口认证方式
注意:在区域下认证,比如在area 0做认证,那么该设备在区域0接口下的所有接口都认证,如果是在该设备启用接口认证,那么只针对于该接口做单独的认证,但是由于认证字段在OSPF头部当中,所以,两台设备之间R1和R2,R1做接口认证,R2做区域认证,只有认证模式一样,密码一样,R1和R2之间依然可以建立起邻居或者邻接关系
支持的认证模式分为
null(不认证)
simple(明文认证)
MD5(密文认证)
当simple和MD5都存在时,优先使用接口认证方式
两台设备之间 要么两端都不配置认证 要么两端都都配置simple认证 要么两端都都配置md5认证
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邻接关系建立正常
R1和R2之间无full的邻接关系
检查OSPF的错误信息
Key id的作用:平滑过渡的作用
OSPF协议是网络层协议 IP协议号为89号
OSPF协议报文结构分为OSPF头部+OSPF数据包 注意:OSPF数据包一共有5个
Hello 报文
DD(Database Description)报文
LSR(LSA Request)报文
LSU(LSA Update)报文
LSACK(Link State Acknowledgment)报文
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的状态机分为如下几个过程
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同步过程完成,路由器与邻居之间形成了完全的邻接关系。
数据链路层协议类型多种多样,工作机制也各不相同。
为适配多种数据链路层协议,必须考虑各类链路层协议在组网时的应用场景。
[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上面查看状态机如下
邻居和邻接关系总结
区域area问题
网段问题
时间问题
router id问题
认证问题
OSPF就介绍到这了,满满的干货,建议收藏起来慢慢观看吧~