9、OSPF基础

前言

由于静态路由由网络管理员手工配置,因此当网络发生变化时,静态路由需要手动调整,这制约了静态路由在现网大规模的应用。

动态路由协议因其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议之中,OSPF(Open Shortest Path First,开放式最短路径优先)协议是使用场景非常广泛的动态路由协议之一。

OSPF在RFC2328中定义,是一种基于链路状态算法的路由协议。 本次将初步介绍OSPF基本概念、工作原理和基础配置。

目录

前言

为什么需要动态路由协议?

动态路由协议的分类

距离矢量路由协议

链路状态路由协议 

1)LSA泛洪

2)LSDB组建

3)SPF计算

4)路由表生成

简述总结:【如下图】

OSPF简介

OSPF基础术语

【后续补充】

反掩码解释:【简单点理解】

区域

Router-ID

后续补充:

度量值(开销)

命令:

OSPF协议报文类型

DD报文携带的参数信息:

OSPF三大表项

邻居表

LSDB表 

OSPF路由表

OSPF路由器之间的关系

初识OSPF邻接关系建立过程

【后续补充】

OSPF网络类型简介

OSPF有四种网络类型:

总结:OSPF默认网络类型如何确定?

DR与BDR的背景

DR与BDR

DR选举:

OSPF域与单区域

OSPF多区域

OSPF路由器类型

OSPF基础配置命令

​编辑

Ospf network的本质:

总结:


为什么需要动态路由协议?

静态路由是由工程师手动配置和维护的路由条目,命令行简单明确,适用于小型或稳定的网络。

静态路由有以下问题:

1)无法适应规模较大的网络:随着设备数量增加,配置量急剧增加。

2)无法动态响应网络变化:网络发生变化,无法自动收敛网络,需要工程师手动修改。

动态路由协议的分类

1)按工作区域分类

IGP(Interior Gateway Protocols,内部网关协议):Rip、OSPF、IS-IS

EGP(Exterior Gateway Protocols,外部网关协议):BGP

2)按工作机制及算法分类

【Distance Vector Routing Protocols】距离矢量路由协议:Rip

【Link-State Routing Protocols】链路状态路由协议:OSPF、IS-IS

距离矢量路由协议

“服务员把所有菜都给你”

运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中。

对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远。这即是距离矢量算法的本质。

链路状态路由协议 

“服务员把菜单给你让你自己选择”

1)LSA泛洪

链路状态通告,将自身的信息(接口、开销、连接的设备),通告给建立的邻居。

与距离矢量路由协议不同,链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA【Link State Advertisement 链路状态通告】

LSA描述了路由器接口的状态信息,例如接口的开销、连接的对象等。

2)LSDB组建

每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB【Link State DataBase,链路状态数据库】 路由器通过LSDB,掌握了全网的拓扑。

3)SPF计算

根据LSDB中的LSA进行拓扑计算,可以得到一颗到达目的地最短的、无环的树。

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

4)路由表生成

最后,路由器将计算出来的优选路径,加载进自己的路由表【Routing Table】。

简述总结:【如下图】

第一步:建立邻居关系

第二步:交互链路状态信息(LSA)

第三步:进行SPF算法计算最短无环路径

第四步:将计算结果中最优路由放到路由表内

OSPF简介

OSPF是典型的链路状态路由协议,是目前业内使用非常广泛的IGP协议之一。

OSPF是基于接口划分的。

目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明后续所指的OSPF均为OSPF Version 2。

运行OSPF路由器之间交互LSA(Link State Advertisement,链路状态通告),而不是直接交互路由。LSA信息是OSPF能够正常进行拓扑及路由计算的关键信息。 OSPF路由器将网络中的LSA信息收集起来,存储在LSDB中。

路由器都清楚区域内的网络拓扑结构,这有助于路由器计算无环路径。 每台OSPF路由器都采用SPF算法计算达到目的地的最短路径。路由器依据这些路径形成路由加载到路由表中。

OSPF支持VLSM(Variable Length Subnet Mask,可变长子网掩码),支持手工路由汇总。 多区域的设计使得OSPF能够支持更大规模的网络。

链路属性:

  1. 链路上的邻居
  2. 链路开销
  3. 直连网络号
  4. 接口地址
  5. 链路类型

如图:

OSPF基础术语

【后续补充】

1)进程ID:可以在一台设备上执行多个OSPF的处理,每一个OSPF的处理都是相互独立的 【ospf 1】

2)network:通告,选择需要进行OSPF传递的网段接口
                   配置方式:
                            1.区域视图下进行network:[AR1-ospf-1-area-0.0.0.0]network 10.1.12.1 0.0.0.0
                                                                          network 10.1.12.1  0.0.0.0  
                                                                              宣告    接口地址   反掩码
                                                                       正掩码 1指代网络位  0指代主机位
                                                                       反掩码 1指代主机位  0指代网络位

反掩码解释:【简单点理解】

正掩码 +  反掩码 = 255.255.255.255

                           2.接收视图下进行OSPF 使能:[AR1-GigabitEthernet0/0/0]ospf enable 1 area 0 
 

区域

Area区域:Area 0骨干区域,非骨干区域必须和骨干区域相连。

OSPF Area用于标识一个OSPF的区域。 区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。如图:

区域ID一定要配置的,可以优化网络拓扑(LSDB),便于设备的管理 。
           配置方式:
                         1.数字配置: 0-4294967295,可以在范围任意选择数字做为区域ID的值
                         2.点分十进制配置:[Huawei-ospf-1]area 0.0.0.1  

 

Router-ID

Router-ID(Router Identifier,路由器标识符),用于在一个OSPF域中唯一地标识一台路由器。

通过点分十进制表示,32bit,如1.1.1.1。

Router-ID的设定可以通过手工配置的方式,或使用系统自动配置的方式,但手动优于自动。

默认情况下,路由器会使用第一个配置的IP地址作为自己的全局router id,管理员也可手动配置。

ospf router id:如果管理员没有手动配置router id,则默认使用全局的router id作为ospf的router id,如果管理员已经配置了router id,则优先使用。

后续补充:

Loopback接口:由管理员手动创建的逻辑接口,只要路由器开机该接口就存在。这个接口不会出现物理故障,所以稳定性好,通常作为ospf router id选择的接口。主要功能:测试接口。

router id:设备ID,用来表示每台设备名称。
     1.手工配置
        [AR1]ospf 1 router-id 10.1.1.1 
       
配置的RID 不是一个地址,只是使用点分十进制的方式进行表示
        实际上RID就是一个32位无符号的整数(可以任意规划)
  配置 300.300.300.300会报错,最大为255.255.255.255
     2.自动生成
        可以根据全局的RID进行借用
                1)全局RID如何生成?
                       
 1.手工配置:[Huawei]router id 100.1.1.1 (和手工配置OSPF RID是相同的概念)
                         2.自动生成:
                                               当设备存在接口IP地址后,全局RID会自动借用接口地址信息
                                              如果设备存在接口和环回接口地址,则设备会优选第一个使能接口地址做为全局RID

     3.RID可以更改吗?
         
可以,将以配置的RID,使用手工配置的方式进行更改
         在更改后,需要重启OSPF的进程来使得新的RID变得可用

         <Huawei>reset ospf process  重启ospf的进程(要在用户视图下执行)
 

度量值(开销)

一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加。默认允许OSPF的接口每条链路的开销都为1。
OSPF开销=所经过链路的出接口的cost  + 目的链路出接口开销

OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,OSPF开销计算公式:参考带宽100M】÷实际带宽【取整数】,得出的值如果小于1,则按照1来计算。
                                          ***如果串口链路(2.083M),对应的链路开销是48

命令:

[AR1-ospf-1]bandwidth-reference  全网保持一致的参考带宽

[AR1-GigabitEthernet0/0/0]ospf cost  在接口下配置ospf cost 优于公式计算

OSPF协议报文类型

OSPF有五种类型的协议报文。这些报文在OSPF路由器之间交互中起不同的作用。

1)Hello:周期性发送,用来发现和维护OSPF邻居关系。

邻居维护:hello报文每隔10s周期性发送,如果4个hello报文时间没有收到邻居的hello报文,则认为邻居失效。

2)Database Description:描述本地LSDB的摘要信息,用于两台设备进行数据库同步。【交互链路状态信息摘要】

3)Link State Request:用于向对方请求所需要的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。

4)Link State Update:用于向对方发送其所需要的LSA。

5)Link State ACK:用来对收到的LSA进行确认。

DD报文携带的参数信息:


i bit:是不是第一个报文
m bit:后续还存不存在携带数据信息的DD报文
ms bit:是不是主设备

OSPF三大表项

邻居表

OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。 OSPF的邻居关系通过交互Hello报文建立。 OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。

LSDB表 

LSDB会保存自己产生的及从邻居收到的LSA信息。 Type标识LSA的类型,AdvRouter标识发送LSA的路由器。 使用命令行display ospf lsdb查看LSDB表。

LSDB中的信息:

Type      //LSA类型

Link state id     //该LSA名称

AdvRouter      //产生该LSA的设备router id

OSPF路由表

OSPF路由表和路由器路由表是两张不同的表项。本例中OSPF路由表有三条路由。

OSPF路由表包含Destination、Cost和NextHop等指导转发的信息。 使用命令display ospf routing查看OSPF路由表。

OSPF路由器之间的关系

关于OSPF路由器之间的关系有两个重要的概念,邻居关系和邻接关系。

考虑一种简单的拓扑,两台路由器直连。在双方互联接口上激活OSPF,路由器开始发送及侦听Hello报文。在通过Hello报文发现彼此后,这两台路由器便形成了邻居关系。

邻居关系的建立只是一个开始,后续会进行一系列的报文交互,例如前文提到的DD、LSR、LSU和LS ACK等。当两台路由器LSDB同步完成,并开始独立计算路由时,这两台路由器形成了邻接关系。 

初识OSPF邻接关系建立过程

OSPF完成邻接关系的建立有四个步骤,建立邻居关系、协商主/从、交互LSDB信息,同步LSDB。

【后续补充】

OSPF状态机:
1.down:没有运行OSPF,或设备处于关闭状态
2.init:收到了邻居的hello报文,但是报文没有携带本端的RID
3.2-way:收到了邻居的hello报文,且报文内携带了本端的RID

4.exstart:用空的DD报文实现设备的主从选举【设备两端通过发送空的DD报文,进行主从的选举
根据携带的RID值,越大越优先的规则】

5.exchange:用携带数据的DD报文实现设备之间链路状态摘要信息的交互
6.loading:使用LSR和LSU报文交互完整的链路状态信息
7.full:使用LSAck报文完成数据完整信息交互的确认

正常DD报文携带数据交互的过程中,备设备使用主设备产生的序列号
主设备将序列号加1,实现有序的报文交互,且存在确认机制
数据信息交互完毕后,会发送一个空的DD报文进行确认(隐式确认机制)

OSPF网络类型简介

 一般情况下,链路两端的OSPF接口网络类型必须一致,否则双方无法建立邻居关系。

OSPF网络类型可以在接口下通过命令手动修改以适应不同网络场景,例如可以将BMA网络类型修改为P2P。

OSPF网络类型是一个非常重要的接口变量,这个变量将影响OSPF在接口上的操作,例如采用什么方式发送OSPF协议报文,以及是否需要选举DR、BDR等。

接口默认的OSPF网络类型取决于接口所使用的数据链路层封装。

OSPF有四种网络类型:

  • Broadcast【Broadcast Multiple Access,广播式多路访问】

BMA也被称为Broadcast,指的是一个允许多台设备接入的、支持广播的环境。 典型的例子是Ethernet(以太网)。当接口采用Ethernet封装时,OSPF在该接口上采用的缺省网络类型为BMA。

  • NBMA【Non-Broadcast Multiple Access,非广播式多路访问】

NBMA指的是一个允许多台网络设备接入且不支持广播的环境。 典型的例子是帧中继(Frame-Relay)网络。

  • P2MP【Point to Multi-Point,点到多点】

P2MP相当于将多条P2P链路的一端进行捆绑得到的网络。 没有一种链路层协议会被缺省的认为是P2MP网络类型。该类型必须由其他网络类型手动更改。 常用做法是将非全连通的NBMA改为点到多点的网络。

  • P2P【Point-to-Point,点对点】

P2P指的是在一段链路上只能连接两台网络设备的环境。 典型的例子是PPP链路。当接口采用PPP封装时,OSPF在该接口上采用的缺省网络类型为P2P 。

总结:OSPF默认网络类型如何确定?

  1. 如果接口是ppp、HDLC,则认为是P2P链路。
  2. 如果接口是eth、FDDI,则认为是广播型链路。
  3. 如果接口是FR【Frame Relay帧中继】或者ATM【异步传输】链路,则认为是非广播多路访问链路(NBMA)。
  4. 没有任何一种链路层协议被认为是P2MP(点到多点),只能由管理员手动配置。

DR与BDR的背景

MA(Multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)及非广播型多路访问网络(NBMA)。以太网(Ethernet)是一种典型的广播型多路访问网络。

在MA网络中,如果每台OSPF路由器都与其他的所有路由器建立OSPF邻接关系,便会导致网络中存在过多的OSPF邻接关系,增加设备负担,也增加了网络中泛洪的OSPF报文数量。

当拓扑出现变更,网络中的LSA泛洪可能会造成带宽的浪费和设备资源的损耗。

DR与BDR

每一段广播链路都要选举一个DR  。

为优化MA网络中OSPF邻接关系,OSPF指定了三种OSPF路由器身份,DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备用指定路由器)和DRother路由器。

DRother和DR、BDR之间建立full邻接关系。DRother之间建立two-way邻居关系。DR和BDR建立full邻接关系。

BDR会监控DR的状态,并在当前DR发生故障时接替其角色。DR要监听两个组播地址,224.0.0.5和224.0.0.6。

  • DR选举:

  • 通过DR接口的优先级选举DR,优先级范围0---255。优先级越大则优先成为DR;如果优先级相同则比较router id,router id大的优先成为DR。优先级次优的成为BDR。
  • 如果接口优先级为0,则默认是DRother【即代表退出DR、BDR的选举】。
  • 默认的接口优先级值都为1,可以通过配置命令进行更改:
    [AR1-GigabitEthernet0/0/0]ospf dr-priority 
     

为了避免单点故障所以要选举BDR,默认就会选举。如果BDR失效,直接在DRother之间选一个。

DR和BDR不具备抢占性,优先级最大的或者router id最大的不一定就是DR或者BDR。

同一个进程下,一个接口不能加入到多个区域。一个接口也不能加入到多个进程中。

如图中的配置:

证明Ospf的进程号仅本地有效,用于隔离路由器中自身不同的ospf网络,没有全局意义。 

OSPF域与单区域

OSPF域(Domain):一系列使用相同策略的连续OSPF网络设备所构成的网络。

OSPF路由器在同一个区域(Area)内网络中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。

如果OSPF域仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸多问题:

  • LSDB越来越庞大,同时导致OSPF路由表规模增加。路由器资源消耗多,设备性能下降,影响数据转发。 基于庞大的LSDB进行路由计算变得困难。
  • 当网络拓扑变更时,LSA全域泛洪和全网SPF重计算带来巨大负担。

OSPF多区域

OSPF引入区域(Area)的概念,将一个OSPF域划分成多个区域,可以使OSPF支撑更大规模组网。

OSPF多区域的设计减小了LSA泛洪的范围,有效的把拓扑变化的影响控制在区域内,达到网络优化的目的。

在区域边界可以做路由汇总,减小了路由表规模。 多区域提高了网络扩展性,有利于组建大规模的网络。

OSPF路由器类型

OSPF路由器根据其位置或功能不同,有这样几种类型:

  • 区域内路由器(Internal Router)
  • 区域边界路由器ABR(Area Border Router)
  • 骨干路由器(Backbone Router)
  • 自治系统边界路由器ASBR(AS Boundary Router)

如图:

OSPF基础配置命令

Ospf network的本质:

  1. 将接口加入到ospf网络中,并且可以接受和发送ospf报文
  2. 启动了ospf的路由器只会描述加入到ospf进程中的接口的链路状态信息(LSA)

总结:

Router ID、区域、OSPF邻居表、LSDB表和OSPF路由表是OSPF的基本概念。能够阐述OSPF的邻居和邻接关系建立过程,可以帮助您更好的理解链路状态路由协议。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小汐睡着了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值