程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

HCIP-datacom--第三课 OSPF基础

balukai 2025-08-03 04:06:20 文章精选 4 ℃

前言
o 路由器根据路由表转发数据包,路由表项可通过手动配置和动态路由协议生成。
o 静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。
o 相比较于静态路由,动态路由协议具有更强的可扩展性,具备更强的应变能力。
o OSPF(Open Shortest Path First,开放式最短路径优先)具有扩展性强,收敛速度快等特点,作为优秀的内部网关协议被广泛使用。
o 本课程主要介绍OSPF的基本概念、OSPF邻接关系的建立、以及OSPF的基本配置。

目标
o 学完本课程后,您将能够:
描述OSPF路由计算的整体过程
阐明DR与BDR的作用
描述OSPF报文类型和作用
实现OSPF的基本配置
区分OSPF邻居关系和邻接关系

一. 动态路由协议简介

动态路由协议的分类

o BGP使用一种基于距离矢量算法修改后的算法,该算法被称为路径矢量(Path Vector)算法。因此在某些场合下,BGP也被称为路径矢量路由协议。
o IGP(内部网关协议)在同一个自治系统内交换路由信息,IGP的主要目的是发现和计算自治域内的路由信息。
o EGP(外部网关协议)主要用于AS(自治系统)之间的互联。

距离矢量路由协议


o运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器。
o 对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的网段方向在哪里,开销有多大。


链路状态路由协议 - LSA泛洪


o 链路状态路由协议通告的的是链路状态而不是路由信息。
o 运行链路状态路由协议的路由器之间首先会建立邻居关系,然后彼此之间开始交互LSA(LinkState Advertisement,链路状态通告)。

o 链路状态通告,可以简单的理解为每台路由器都产生一个描述自己直连接口状态(包括接
口的开销、与邻居路由器之间的关系等)的通告。

链路状态路由协议 - LSDB维护


每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过对LSDB中所存储的LSA进行解析,进而了解全网拓扑。


链路状态路由协议 - SPF计算


每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达所有网段的优选路径。

链路状态路由协议 - 路由表生成


路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。


链路状态路由协议总结

o 链路状态路由协议有四个步骤:
第一步是建立相邻路由器之间的邻居关系。
第二步是邻居之间交互链路状态信息和同步LSDB。
第三步是进行优选路径计算。
第四步是根据最短路径树生成路由表项加载到路由表。

二. OSPF简介


OSPF概述


o OSPF是IETF定义的一种基于链路状态的内部网关路由协议。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。
o OSPF有以下优点:
基于SPF算法,以“累计链路开销”作为选路参考值
采用组播形式收发部分协议报文
支持区域划分
支持对等价路由进行负载分担
支持报文认证

OSPF应用场景


o 接入层:接入层利用光纤、双绞线、同轴电缆、无线接入技术等传输介质,实现与用户连接,并进行业务和带宽的分配。接入层目的是允许终端用户连接到网络,因此接入层交换机具有低成本和高端口密度特性。
o 汇聚层:汇聚层为接入层提供基于策略的连接,如地址合并,协议过滤,路由服务,认证管理等。通过网段划分实现与网络隔离,可以防止网络故障蔓延和影响到核心层。汇聚层同时也可以提供接入层虚拟网之间的互连,控制和限制接入层对核心层的访问,保证核心层的安全和稳定。
o 核心层:核心层的功能主要是实现骨干网络之间的优化传输,核心层任务的重点通常是冗余能力、可靠性和高速的传输。

OSPF基础术语 - Router ID

o Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。
o Router ID选举规则如下:
手动配置OSPF路由器的Router ID(建议手动配置)
如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID


o Router ID一旦选定,之后如果要更改的话就需要重启OSPF进程。
o 在实际工程中,推荐手工指定OSPF路由设备的Router ID。首先规划出一个私有网段用于
OSPF的Router ID选择,例如:192.168.1.0/24。在启用OSPF进程前在每个OSPF路由器上
建立一个Loopback接口,使用一个32位掩码的私有地址作为其IP地址,这个32位的私有地
址即作为该路由设备的Router ID。如果没有特殊要求,这个Loopback接口地址可以不发布
在OSPF网络中。

OSPF基础术语 - 区域


o OSPF Area用于标识一个OSPF的区域。
o 区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。
o OSPF的区域ID是一个32bit的非负整数,按点分十进制的形式(与IPv4地址的格式一样呈现,例如Area0.0.0.1。为了简便起见,我们也会采用十进制的形式来表示。


o 几个例子:Area0.0.0.1等同于Area1,Area0.0.0.255等同于Area255,Area0.0.1.0等同于
Area256。许多网络厂商的设备同时支持这两种区域ID配置及表示方式。

OSPF基础术语 - 度量值


o OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost = 100 Mbit/s接口带宽 。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
o OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和。


o 在实际应用中,推荐根据接口带宽大小手动配置Cost值,而不是修改OSPF参考带宽。

OSPF基础术语 - 度量值修改举例


o 在规划流量路径时,推荐将汇聚层直连链路Cost值>接入环所有链路Cost值之和,这样可以保证从接入层访问R1或R2时,流量可通过接入层路由器直达R1或R2。
o 以上图为例。R1和R2位于企业网中的汇聚层,R1和R2的直连链路属于区域0,R1有一直连网段10.0.1.1/32通过在区域0。
在缺省情况下,R4到达10.0.1.1/32的路由存在两个下一跳。
修改Cost之后,R4到达10.0.1.1的路由仅存在一个下一跳。

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路由表。

o 路由器路由表通常称为全局路由表,并非所有OSPF路由都可以放到路由器路由表。

OSPF报文格式和类型


o OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。
o OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。


o 重要字段解释
Version :对于当前所使用的OSPFv2,该字段的值为2。
Router ID:表示生成此报文的路由器的Router ID。
Area ID:表示此报文需要被通告到的区域。
Type:类型字段。
Packet length:表示整个OSPF报文的长度,单位是字节。
Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。

三. OSPF工作过程

建立邻居关系

OSPF工作过程概览


建立邻居关系

o OSPF使用Hello报文发现和建立邻居关系。
o 在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。
o OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息。

o R1和R2路由器相互发送Hello报文,第一个Hello报文包含的邻居列表为空。
o R2收到R1发送的Hello报文后,如果各项参数匹配,再次发送Hello报文时,将R1加入自己
的邻居列表。
o 在以太网链路上,通常以组播形式发送Hello报文:
224.0.0.5的组播地址为OSPF设备的预留IP组播地址。
224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。
o 对于不支持组播的链路,OSPF支持采用单播的方式发送Hello报文。

Hello报文


o Hello报文的主要作用:
邻居发现:自动发现邻居路由器。
邻居建立:完成Hello报文中的参数协商,建立邻居关系。
邻居保持:通过周期性发送和接收,检测邻居运行状态。


重要字段解释
Network Mask:发送Hello报文的接口的网络掩码。
HelloInterval:发送Hello报文的时间间隔。通常为10s。
RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。通常为40s。
Neighbor:邻居,以Router ID标识。
o 其它字段解释
Options: E:是否支持外部路由 MC:是否支持转发组播数据包 N/P:是否为NSSA区域
Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。
Designated Router:DR的接口地址。
Backup Designated Router:BDR的接口地址

邻接关系建立 (1)


o R1和R2的Router ID分别为10.0.1.1和10.0.2.2并且二者已建立了邻居关系。当R1的邻居状态变为ExStart后,R1会发送第一个DD报文。此报文中,M-bit设置为1,表示后续还有DD报
文要发送,MS-bit设置为1,表示R1宣告自己为Master。DD序列号被随机设置为X,I-bit
设置为1,表示这是第一个DD报文。


o 同样当R2的邻居状态变为ExStart后,R2也会发送第一个DD报文。此报文中,DD序列号被
随机设置为Y(I-bit=1,M-bit=1,MS-bit=1,含义同上)。由于R2的Router ID较大,所以R2将成为真正的Master。收到此报文后,R1会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。


o 当R1的邻居状态变为Exchange后,R1会发送一个新的DD报文,此报文中包含了LSDB的摘要信息,序列号设置为R2在步骤2中使用的序列号Y,I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示R1宣告自己为Slave。收到此报文后,R2将邻居状态从ExStart变为Exchange。


o 当R2的邻居状态变为Exchange后,R2会发送一个新的DD报文,此报文包含了LSDB的摘要信息。DD序列号设置为Y+1, MS-bit=1,表示R2宣告自己为Master。


o 虽然R1不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,R1需要对Master发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,序列号为Y+1,该报
文内容为空。发送完此报文后,R1产生一个Exchange-Done事件,将邻居状态变为Loading。R2收到此报文后,会将邻居状态变为Full(假设R2的LSDB是最新最全的,不需要向R1请求更新)。

DD报文


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


邻接关系建立 (2)


o R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。
o R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full。
o R1向R2发送LSAck报文,作为对LSU报文的确认。

DR与BDR的作用


o MA( Multiple Access,多路访问 )分为BMA( Broadcast Multi-Access,广播多路访问)
和NBMA(Non-Broadcast Multiple Access,非广播多路访问)。以太网链路组成的网络是典型的BMA网络。帧中继链路通过逻辑上的划分组成典型的NBMA网络(注:帧中继相关知识不再介绍)。
o DRother:既不是DR也不是BDR的路由器就是DRother路由器。

DR与BDR的选举规则

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

o 思考:
如果将上图中4台路由器的优先级全部设置为0,OSPF是否可以正常工作?
缺省情况下,哪些链路类型组成的网络是MA网络呢

o 广播链路或者NBMA链路上DR和BDR的选举过程如下:
接口UP后,发送Hello报文,同时进入到Waiting状态。在Waiting状态下会有一个
WaitingTimer,该计时器的长度与DeadTimer是一样的。默认值为40秒,用户不可
自行调整。


在WaitingTimer触发前,发送的Hello报文是没有DR和BDR字段的。在Waiting阶段,
如果收到Hello报文中有DR和BDR,那么直接承认网络中的DR和BDR,而不会触发选
举。直接离开Waiting状态,开始邻居同步。


假设网络中已经存在一个DR和一个BDR,这时新加入网络中的路由器,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的DR和BDR。
当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR。
只有当不同Router ID,或者配置不同DR优先级的路由器同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR。

不同网络类型中DR与BDR的选举操作


o P2MP:point-to-multipoint,点到多点。

可按需调整设备接口的OSPF网络类型


o OSPF的网络类型是根据接口的数据链路层封装自动设置的。
o 图中的路由器采用以太网接口互联,因此这些接口的网络类型缺省均为Broadcast。
o 每段链路实际上都是点对点链路,因此在链路上选举DR与BDR是没有必要的。
o 为了提高OSPF的工作效率,加快邻接关系的建立过程,可以把这些互联接口的网络类型都修改为P2P。

在接口配置视图中使用ospf network-type { p2p | p2mp | broadcast | nbma }即可修改该接口的网络类型。

OSPF的网络类型是协议根据接口的数据链路层封装自动设置的,在图中,两台处于网络接
入层的路由器AS-R1及AS-R2都通过双链路上联到核心层的路由器CO-R1及CO-R2。四台路
由器都在各自接口上激活OSPF。由于这些路由器都是采用以太网接口互联,因此这些接口
的网络类型缺省均为Broadcast,于是在邻居关系的建立过程中,OSPF会在每段以太网链路上选举DR及BDR。
o 然而,这实际上是没有必要而且浪费时间的(DR及BDR的选举过程涉及一个等待计时器,这增加了直连路由器形成邻接关系的时间),因为这些链路其实从逻辑的角度看都是点对点的连接,选举DR或BDR实在是画蛇添足。因此为了提高OSPF的工作效率,加快邻接关系的建立过程,可以把这些互联接口的网络类型都修改为P2P。

四. OSPF的基本配置

配置命令介绍 (1)

1、启动OSPF进程,进入OSPF视图

[Huawei] ospf [process-id | Router ID Router ID ]#路由器支持OSPF多进程,进程号是本地概念,两台使用不同OSPF进程号设备之间也能够建立邻接关系。

2. 创建并进入OSPF区域视图

[Huawei-ospf-1] area area-id

3. 在OSPF区域中使能OSPF

[
Huawei-ospf-1-area-0.0.0.0] network
network-address wildcard-mask#执行该命令配置区域所包含的网段。设备的接口IP地址掩码长度≥network命令指定的掩码长度,且接口的主IP地址必须在network命令指定的网段范围内,此时该接口才会在相应的区域内激活OSPF。

4. 接口视图下使能OSPF:

[
Huawei-GigabitEthernet1/0/0] ospf enable
process-id area area-id#ospf enable命令用来在接口上使能OSPF,优先级高于network命令。

o 缺省情况下,OSPF以32位主机路由的方式对外发布Loopback接口的IP地址,与Loopback
接口上配置的掩码长度无关。如果要发布Loopback接口的实际网段,需要在接口下配置网络类型为NBMA或广播型。

5. 接口视图下:设置选举DR时的优先级

[
Huawei-GigabitEthernet1/0/0] ospf dr-priority
priority#缺省情况下,优先级为1。

6. 接口视图下:设置Hello报文发送的时间间隔

[Huawei-GigabitEthernet1/0/0] ospf timer Hello interval

缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔的值为10秒,且同一接口上邻居失效时间是Hello间隔时间的4倍。

7. 接口视图下:设置网络类型

[Huawei-GigabitEthernet1/0/0] ospf network-type { broadcast | nbma | p2mp | p2p }

缺省情况下,接口的网络类型根据物理接口而定。以太网接口的网络类型为广播,串口和POS口(封装PPP协议或HDLC协议时)网络类型为P2P。

OSPF配置举例



OSPF配置验证





本章总结

o 本章简单介绍了OSPF的基本概念,内容包括Router ID、区域、Cost。运行OSPF的路由
器通过相互发送链路状态信息完成拓扑和路由计算。
o 本章详细介绍了OSPF邻居和邻接关系建立的过程。在MA网络中,需要选举DR和BDR。
OSPF有5种类型的报文,所有报文有相同的报文头部格式。运行OSPF的路由器通过周期性的发送Hello报文发现和维持邻居关系,通过DD、LSR、LSU、LSAck报文配合完成链路状态数据库的同步。最后介绍了OSPF单区域的简单配置。

Tags:

最近发表
标签列表