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报文格式
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 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的时候,当两台路由器之间相互配置好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关系起来?
网络类型混合
左边是P2P 右边是广播网络 看下是否能够建立起OSPF的关系
在R1这边查看OSPF的接口状态是P2P
在R2这边查看OSPF的接口状态时Broadcast状态
R1和R2已经建立起OSPF的FULL的邻接关系了
R2和R1已经建立起OSPF的FULL的邻接关系了
在R1上面查看状态机如下
在R2上面查看状态机如下
NBMA和P2MP
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表示精确匹配)
在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的配置
配置完成之后 通过命令查看是否配置成功
[R1]display ospf peer brief
OSPF Process 10 with Router ID 192.168.12.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 192.168.12.2 Full
----------------------------------------------------------------------------
[R1]
在R1查看ospf学习到的路由
<R1>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 2 Routes : 2
OSPF routing table status : <Active>
Destinations : 2 Routes : 2
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.45.0/24 OSPF 10 3 D 192.168.12.2 GigabitEthernet0/0/0
192.168.234.0/24 OSPF 10 2 D 192.168.12.2 GigabitEthernet0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
<R1>
总结:
ospf这边是基于接口划分区域的 在我们OSPF区域当中 其中area 0必须得有 area 0是骨干区域 其他的非区域0叫非骨干区域 非骨干区域必须连接到骨干区域周边
怎么样查看OSPF当中LSDB
<R2>display ospf lsdb
OSPF Process 10 with Router ID 192.168.12.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 192.168.234.3 192.168.234.3 1462 36 80000005 1
Router 192.168.234.4 192.168.234.4 1374 36 80000006 1
Router 192.168.12.2 192.168.12.2 1459 36 80000007 1
Network 192.168.234.4 192.168.234.4 1462 36 80000003 0
Sum-Net 192.168.45.0 192.168.234.4 1362 28 80000001 1
Sum-Net 192.168.12.0 192.168.12.2 1554 28 80000001 1
Sum-Net 192.168.2.0 192.168.234.4 327 28 80000001 2
Sum-Net 192.168.1.0 192.168.12.2 367 28 80000001 2
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 192.168.12.2 192.168.12.2 1572 36 80000004 1
Router 192.168.12.1 192.168.12.1 325 48 80000007 1
Network 192.168.12.1 192.168.12.1 80 32 80000003 0
Sum-Net 192.168.45.0 192.168.12.2 1361 28 80000001 2
Sum-Net 192.168.234.0 192.168.12.2 1554 28 80000001 1
Sum-Net 192.168.2.0 192.168.12.2 326 28 80000001 3
OSPF的开销计算方式
rip这边是通过跳数来计算开销
ospf协议是通过带宽来计算开销
OSPF的开销计算公式为带宽参考值/带宽
[RTA- GigabitEthernet0/0/0]ospf cost 20
一般可以出接口上面修改开销
OSPF认证
OSPF的认证方式分为三种
不认证(默认情况就是不认证)
接口下启动OSPF认证
区域下启用认证
OSPF认证的类型分为二种
明文认证(在抓包的时候可以看到密码)
密文认证(在抓包的时候看不到密码)
要么两端都不配置认证
要么两端都都配置simple认证
要么两端都都配置md5认证
(其实 ospf的认证 接口和区域是一样的)因为认证在OSPF头部当中,区域下认证的含义就是把该设备运行OSPF的所有接口都启用该认证
例子:R1配置接口认证 R2在area 1配置区域认证
R1的配置
#
interface GigabitEthernet0/0/0
ip address 192.168.12.1 255.255.255.0
ospf authentication-mode simple plain Huawei
#
R2的配置
#
area 0.0.0.1
authentication-mode simple plain Huawei
#
怎么检查是否配置成功
你可以把接口down一下 然后再undo shutdown一下 通过命令行检查一下
[R1]display ospf peer brief
OSPF Process 10 with Router ID 192.168.12.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.1 GigabitEthernet0/0/0 192.168.12.2 Full
----------------------------------------------------------------------------
看到full就成功了
Key id的作用
R1和R2之间无full的邻接关系
检查OSPF的错误信息
Key id的作用:平滑过渡的作用
原文地址:https://blog.51cto.com/13817711/2452446