Datacom-HCIP-07 OSPF基础
路由器根据路由表转发数据包,路由表项可通过手动配置和动态路由协议生成。
静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。
相比较于静态路由,动态路由协议具有更强的可扩展性,具备更强的应变能力。
OSPF(Open Shortest Path First,开放式最短路径优先)具有扩展性强,收敛速度快等特点,作为优秀的内部网关协议被广泛使用。
本文主要介绍OSPF的基本概念、OSPF邻接关系的建立、以及OSPF的基本配置。
动态路由协议简介
动态路由协议的分类
距离矢量路由协议
运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器。
对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的网段方向在哪里,开销有多大。
链路状态路由协议 - LSA泛洪
链路状态路由协议通告的的是链路状态而不是路由信息。
运行链路状态路由协议的路由器之间首先会建立邻居关系,然后彼此之间开始交互LSA(LinkState Advertisement,链路状态通告)。
链路状态路由协议 - LSDB维护
每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过对LSDB中所存储的LSA进行解析,进而了解全网拓扑。
链路状态路由协议 - SPF计算
每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达所有网段的优选路径。
链路状态路由协议 - 路由表生成
链路状态路由协议总结
OSPF简介
OSPF概述
OSPF是IETF定义的一种基于链路状态的内部网关路由协议。目前针对IPv4协议使用的是OSPFVersion 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。
OSPF有以下优点:
基于SPF算法,以“累计链路开销”作为选路参考值
采用组播形式收发部分协议报文
支持区域划分
支持对等价路由进行负载分担
支持报文认证
OSPF应用场景
大型企业网络中通常部署OSPF实现各个楼宇的网络之间的路由可达。
核心和汇聚层部署在OSPF骨干区域。
接入和汇聚层部署在OSPF非骨干区域。
OSPF基础术语 - Router ID
Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。
Router ID选举顺序规则如下:
手动配置OSPF路由器的Router ID(建议手动配置)
使用系统Router ID(华为特性)
系统默认使用第一个配置的IP地址作为系统RID,也可手动配置系统RID。
路由器使用Loopback接口中最大的IP地址作为OSPF的Router ID
路由器使用物理接口中最大的IP地址作为OSPF的Router ID
OSPF基础术语 - 区域
OSPF Area用于标识一个OSPF的区域。
区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。
OSPF的区域ID是一个32bit的非负整数,按点分十进制的形式(与IPv4地址的格式一样)呈现,
例如Area0.0.0.1。为了简便起见,我们也会采用十进制的形式来表示。
OSPF基础术语 - 度量值
OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost =100 Mbit/s接口带宽 。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和
OSPF基础术语 - 度量值修改举例
OSPF三大表项 - 邻居表
OSPF有三张重要的表项,OSPF邻居表、LSDB和OSPF路由表。对于OSPF的邻居表,需要了解:
OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
OSPF的邻居关系通过交互Hello报文建立。
OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。
OSPF三大表项 - LSDB
对于OSPF的LSDB,需要了解:
LSDB会保存自己产生的及从邻居收到的LSA信息,本例中R1的LSDB包含了三条LSA。
Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
使用命令行display ospf lsdb查看LSDB表。
OSPF三大表项 - OSPF路由表
对于OSPF的路由表,需要了解:
OSPF路由表和路由器路由表是两张不同的表。本例中OSPF路由表有三条路由。
OSPF路由表包含Destination、Cost和NextHop等指导转发的信息。
使用命令display ospf routing查看OSPF路由表。
OSPF报文格式和类型
OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。
OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。
OSPF工作过程
建立邻居关系
OSPF工作过程概览
建立邻居关系
OSPF使用Hello报文发现和建立邻居关系。
在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。
OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息。
Hello报文
Hello报文的主要作用:
邻居发现:自动发现邻居路由器。
邻居建立:完成Hello报文中的参数协商,建立邻居关系。
邻居保持:通过周期性发送和接收,检测邻居运行状态。
重要字段解释
Network Mask:发送Hello报文的接口的网络掩码。
HelloInterval:发送Hello报文的时间间隔。通常为10s。
RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,
则认为邻居失效。通常为40s。
Neighbor:邻居,以Router ID标识。
其它字段解释
Options:
E:是否支持外部路由
MC:是否支持转发组播数据包
N/P:是否为NSSA区域
Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与DR或
BDR的选举。
Designated Router:DR的接口地址。
Backup Designated Router:BDR的接口地址
OSPF邻居建立的6个条件:
- 接口正确network宣告
- router-id不同
- Area区域号相同
- Hello Interval/RouterDeadInterval相同
- 认证相同
- MA网络掩码mask相同
- 特殊区域相同
建立邻接关系
DD报文部分字段解释
I:当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
M (More):当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
MS (Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
DD sequence number:DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
DD报文
DD报文包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。
其他字段解释
Interface MTU:指示在不分片的情况下,此接口最大可发出的IP报文长度。在两个邻居发送DD报文中包含MTU参数,如果收到的DD报文中MTU和本端的MTU不相等,则丢弃该DD报文。缺省情况下,华为设备未开启MTU检查。
Optinons:字段同Hello报文。
R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。
R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full。
R1向R2发送LSAck报文,作为对LSU报文的确认。
全局LSDB同步
第一次接入FULL状态时,会进行LSDB全局同步
之后有状态变化时,会进行部分更新
为保证区域内的所有设备LSDB相同,每1800s即30分钟会自动进行一次全局更新
每3600s即一个小时,LSA一直没有得到其他设备的更新,就会触发超时,成为LAS超时,计时器超时就会使LAS失效
OSPF邻居状态的7个状态
- DOWN
发出Hello报文,没有发现邻居 - INIT
收到邻居的Hello报文,报文中没有邻居 - 2-WAY
收到邻居的Hello报文,报文中有邻居 - EXSTART
选举主从 - EXCHANGE
交互DD报文 - LOADING
交互DD报文,通过LSR,LSU,LSACK进行LSDB的同步 - FULL
LSDB同步完成,没有需要待请求的LSA
DR与BDR的作用
MA网络中的问题
n×(n−1)/2个邻接关系,管理复杂。
重复的LSA泛洪,造成资源浪费。
解决办法:
在MA网络中选举DR:
DR(Designated Router,指定路由器)负责在MA网络建立和维护邻接关系并负责LSA的同步。
DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。
为了规避单点故障风险,通过选举BDR(Backup Designated Router,备份指定路由器) ,在DR失效时快速接管DR的工作。
DR与BDR的选举规则
DR/BDR的选举是非抢占式的。
DR/BDR的选举是基于接口的。
接口的DR优先级越大越优先。
接口的DR优先级相等时,Router ID越大越优先。
不同网络类型中DR与BDR的选举操作
OSPF网络类型 | 常见链路层协议 | 是否选举DR | 是否和邻居建立邻接关系 |
---|---|---|---|
Point-to-point | PPP链路;HDLC链路 | 否 | 是 |
Broadcast | 以太网链路 | 是 | DR与BDR 、DRother建立邻接关系 BDR与DR 、DRother建立邻接关系 DRother之间只建立邻居关系 |
NBMA | 帧中继链路 | 是 | DR与BDR 、DRother建立邻接关系 BDR与DR 、DRother建立邻接关系 DRother之间只建立邻居关系 |
P2MP | 需手工指定 | 否 | 是 |
可按需调整设备接口的OSPF网络类型
OSPF的网络类型是根据接口的数据链路层封装自动设置的。
图中的路由器采用以太网接口互联,因此这些接口的网络类型缺省均为Broadcast。
每段链路实际上都是点对点链路,因此在链路上选举DR与BDR是没有必要的。
为了提高OSPF的工作效率,加快邻接关系的建立过程,可以把这些互联接口的网络类型都修改为P2P。
在接口配置视图中使用ospf network { p2p | p2mp | broadcast | nbma }即可修改该接口的网络类型
OSPF排错思路
- 测直连 ping
- 检查接口、环回口是否正确宣告 display ospf inteface display current-confaguration interface
- 检查OSPF报错信息 display ospf errors
- 检查ospf配置 display current-cofiguration configuration ospf
OSPF的基本配置
配置命令介绍
- 启动OSPF进程,进入OSPF视图。
[Huawei] ospf [ process-id | Router ID Router ID ]
路由器支持OSPF多进程,进程号是本地概念,两台使用不同OSPF进程号设备之间也能够建立邻接关系。 - 创建并进入OSPF区域视图
[Huawei-ospf-1] area area-id
- 在OSPF区域中使能OSPF
[Huawei-ospf-1-area-0.0.0.0] network network-address wildcard-mask
执行该命令配置区域所包含的网段。设备的接口IP地址掩码长度≥network命令指定的掩码长度,且接口的主IP地址必须在network命令指定的网段范围内,此时该接口才会在相应的区域内激活OSPF。network宣告的作用:
network的通配符正确理解限定宣告的范围,和具体产生的路由条目没有直接关系路由的掩码长度,由接口的实际配置决定:特殊:环回口在默认情况下总是产生32位路由 - 接口视图下使能OSPF:
[Huawei-GigabitEthernet1/0/0] ospf enable process-id area area-id
ospf enable命令用来在接口上使能OSPF,优先级高于network命令。 - 接口视图下:设置选举DR时的优先级
[Huawei-GigabitEthernet1/0/0] ospf dr-priority priority
缺省情况下,优先级为1。 - 接口视图下:设置Hello报文发送的时间间隔
[Huawei-GigabitEthernet1/0/0] ospf timer Hello interval
缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔的值为10秒,且同一接口上邻居失效时间是Hello间隔时间的4倍 - 接口视图下:设置网络类型
[Huawei-GigabitEthernet1/0/0] ospf network-type { broadcast | nbma | p2mp | p2p }
缺省情况下,接口的网络类型根据物理接口而定。以太网接口的网络类型为广播,串口和POS口(封装PPP协议或HDLC协议时)网络类型为P2P。
环回口路由无论是多少位,邻居接受到的这条路由都是32位
除非把环回口网络类型更改为broadcast
接口上产生的路由掩码不是由network命令宣告觉得的,还是接口原本配置的掩码
OSPF配置举例
基础数据说明:每台设备的Router ID为10.0.x.x,其中x为路由器的编号,例如R5的Router ID为10.0.5.5。设备之间的互联IP地址为10.0.xy(z).x(y/z)/24其中xyz为路由器编号,编号小的放到前面,例如R2 GE0/0/1接口的IP地址为10.0.235.2/24。
拓扑说明:五台路由器均工作在区域0。
以R2为例:
[R2]ospf 1 router-id 10.0.2.2
[R2-ospf-1]area 0.0.0.0
[R2-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0] network 10.0.24.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0] network 10.0.35.2 0.0.0.0
OSPF配置验证
display ospf interface all
可查看当前设备所有激活OSPF的接口信息:
时间参数,例如Hello报文发送间隔,死亡时间。
接口的链路类型、接口的MTU。
对于以太网链路,可查看DR的接口地址,DR的优先级。
[R2]display ospf interface all
OSPF Process 1 with Router ID 10.0.2.2
Area: 0.0.0.0
Interface: 10.0.12.2 (GigabitEthernet0/0/0)
Cost: 1 State: DR Type: Broadcast MTU: 1500 Priority: 1
Designated Router: 10.0.12.2
Backup Designated Router: 10.0.12.1
Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
Interface: 10.0.235.2 (GigabitEthernet0/0/1)
Cost: 1 State: DROther Type: Broadcast MTU: 1500 Priority: 1
Designated Router: 10.0.235.5
Backup Designated Router: 10.0.235.3
Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
Interface: 10.0.24.2 (Serial1/0/1) --> 10.0.24.4
Cost: 48 State: P-2-P Type: P2P MTU: 1500
Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
display ospf peer
可查看当前设备的邻居状态:
邻居路由器的Router ID。
邻居状态,例如FULL,TWO-WAY,DOWN等。
<R2>display ospf peer
OSPF Process 1 with Router ID 10.0.2.2
Area 0.0.0.0 interface 10.0.12.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 10.0.1.1 Address: 10.0.12.1
State: Full Mode:Nbr is Slave Priority: 1
DR: 10.0.12.2 BDR: 10.0.12.1 MTU: 0
Dead timer due in 28 sec
Retrans timer interval: 5
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
Area 0.0.0.0 interface 10.0.235.2(GigabitEthernet0/0/1)'s neighbors
Router ID: 10.0.3.3 Address: 10.0.235.3
State: Full Mode:Nbr is Master Priority: 1
DR: 10.0.235.5 BDR: 10.0.235.3 MTU: 0
Dead timer due in 30 sec
Retrans timer interval: 5
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
在P2P网络中不需要选举DR/BDR。因此在本例中,查看R2的OSPF邻居表时,会发现其Serial1/0/1接口的数据结构中DR/BDR字段为None。
<R2>display ospf peer
OSPF Process 1 with Router ID 10.0.2.2
Area 0.0.0.0 interface 10.0.235.2(GigabitEthernet0/0/1)'s neighbors
Router ID: 10.0.5.5 Address: 10.0.235.5
State: Full Mode:Nbr is Master Priority: 1
DR: 10.0.235.5 BDR: 10.0.235.3 MTU: 0
Dead timer due in 40 sec
Retrans timer interval: 0
Neighbor is up for 00:01:27
Authentication Sequence: [ 0 ]
Area 0.0.0.0 interface 10.0.24.2(Serial1/0/1)'s neighbors
Router ID: 10.0.4.4 Address: 10.0.24.4
State: Full Mode:Nbr is Master Priority: 1
DR: None BDR: None MTU: 0
Dead timer due in 35 sec
Retrans timer interval: 5
Neighbor is up for 00:01:56
Authentication Sequence: [ 0 ]
display ospf lsdb
可查看当前设备的LSDB:
LSDB由多种类型的LSA构成,所有的LSA都有相同的报文头部格式,其中关键字段如Type、LinkState ID、AdvRouter等。下节课程将重点介绍LSA的详细信息
<R2>display ospf lsdb
OSPF Process 1 with Router ID 10.0.2.2
Link State Database
Area: 0.0.0.0
R2
R3 R5
R1
R4
SW1 Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.0.4.4 10.0.4.4 662 72 80000006 48
Router 10.0.2.2 10.0.2.2 625 72 8000000C 1
Router 10.0.1.1 10.0.1.1 638 60 80000007 1
Router 10.0.5.5 10.0.5.5 634 60 8000000B 1
Router 10.0.3.3 10.0.3.3 639 60 80000009 1
Network 10.0.235.5 10.0.5.5 634 36 80000005 0
Network 10.0.12.2 10.0.2.2 629 32 80000003 0
display ospf routing
可查看当前设备的OSPF路由表:
从R2的OSPF路由表可看出,它已经通过OSPF获知到达全网的路由。
<R2>display ospf routing
OSPF Process 1 with Router ID 10.0.2.2
Routing Tables
R2
R3 R5
R1
R4
SW1
Destination Cost Type NextHop AdvRouter Area
10.0.12.0/24 1 Transit 10.0.12.2 10.0.2.2 0.0.0.0
10.0.24.0/24 48 Stub 10.0.24.2 10.0.2.2 0.0.0.0
10.0.235.0/24 1 Transit 10.0.235.2 10.0.2.2 0.0.0.0
10.0.13.0/24 49 Stub 10.0.12.1 10.0.1.1 0.0.0.0
10.0.13.0/24 49 Stub 10.0.235.3 10.0.3.3 0.0.0.0
10.0.45.0/24 49 Stub 10.0.235.5 10.0.5.5 0.0.0.0