0
点赞
收藏
分享

微信扫一扫

OSPF复习

Python百事通 2022-04-06 阅读 40

一、基本工作原理

每个设备在网络中宣告自己的位置信息,获取直连的邻居,同时所有的路由器记录下这些相邻路由,这样每个路由器根据自己本身为起点就可以知道整个网络拓扑。

OSPF复习_OSPF

OSPF是基于链路状态的路由协议,这是与距离矢量协议根本性的区别。它是根据链路的状态,如带宽、端口类型、工作协议属于三层网络层协议,报文直接封装在IP报文中,协议号为89。如图:

二、基本知识

为了区分网络中的路由器设备,所以每个路由器都有独一无二的路由器身份号,32bit占4个字节,由于跟IP地址一样是32bit,所以也习惯写出类似ip地址的格式;如1.1.1.1;这里需要注意的是,不同区域之间的路由器ID是可以相同的,但不建议这么做。而Router-ID路由器有两种确认方法,第一种是手工指定第二种是自动选举,路由器会优先查看环回口Loopback是否启用,会选取IP地址最大的作为Router-ID,其次选择设备接口IP地址最大的作为Router-ID。这是可以自己做个小实验去验证一下的,顺便也可以熟悉熟悉命令。

OSPF是划分区域的,每个区域对应一个编号Area-ID,也是32bit;Area0属于骨干区域,而其他编号区域属于非骨干区域,而且所有非骨干区域都需要与骨干区域直连,这也使得非骨干区域之间的通信必须通过骨干区域中转才行,也是一种防环的机制。

对于路由器的类型,在OSPF中有这么几类:

OSPF复习_OSPF_02

  • 内部路由器,Internal Router:路由器所有接口都属于同一个区域。
  • 骨干路由器,Backbone Router:路由器有包含属于Area0的接口。
  • 区域边界路由器,Area Border Router:某些接口属于Area0某些属于非骨干区域。
  • 自治系统边界路由器,Autonomous System Boundary Router:引入外部网络的路由信息进入自身OSPF网络的路由器

其协议支持的网络类型有这几种:

  • 广播型网络,Broadcast,最典型就是以太网
  • NBMA网络,Non-Broadcast Mutil-Access
  • 点到点网络,Point-to-Point,P2P网络
  • 点到多点网络,Point-to-Mutipoint,P2MP网络

我们还需要学习5种报文:

  • Hello报文
  • DD报文
  • LSR报文
  • LSU报文
  • LSAck报文

在这些报文种都有个固定的OSPF 头部信息来表明是属于几类报文,以及其他的信息,如图:

OSPF复习_OSPF_03

三、协议通信建立过程

协议通信建立过程主要分为两个阶段:

1. 建立邻居关系

OSPF复习_OSPF_04

这个阶段路由器的接口会从Down状态到稳定的2-way状态。

① OSPF启用前,路由器的接口均为Down状态,启用后OSPF会向组播地址:224.0.0.5发送Hello包,此时的Hello包大概描述了自己的RID,没有直连邻居谁等信息。

② 当路由器收到Hello包时 ,会将接口转换为init状态(初始化状态),当然也发现自己的RID并不在Hello包邻居内。

③ 当路由器收到Hello包,发现报文中的邻居包含自己,则会将接口转换为2-way状态。这是一个稳定的状态,在以下情况中,路由器就会保持这种状态,不会再继续下去:

1) 路由器的优先级均为0,表示不参加竞选

2) DR与BDR之间的链路

当路由器接口到达2-way状态后,路由器还有另外一个事情是需要做的,就是竞选DR跟BDR(像市长跟副市长一样)。这是因为如果不选一个当头的,那么所有的路由器就会在网络中泛洪自己的Hello包,那么当网络规模巨大时,会增加路由器的工作负担;所以需要选个当头的,由它来向区域内的所有路由器发送、更新等路由信息,同时也减少了路由器的工作负担,其他路由器只需要接收DR的报文信息。而BDR属于备份DR,平时不主导工作,只有当DR不在线时才激活并接管工作。

DR和BDR选举规则:

在区域内会优先选取几个BDR角色,然后再从BDR中选取DR。

a、通过路由器的优先级选举,优先级大的为DR。默认为1,为0则不参加选举。

b、相同则通过Router-ID选举,Rid大的为DR

c、广播网络和NBMA网络是需要选举DR和BDR的

d、P2P和P2MP不需要此步骤,直接跳过。

OSPF复习_OSPF_05

2. 建立邻接关系

OSPF复习_OSPF_06

这个阶段路由器的接口会从ExStart状态到稳定的Full状态

① 首先路由器接口为ExStart状态,开始都会发送DD报文,不包含LSA头部信息并认为自己是主路由器;(主从跟DR是没有太多关系的)以Router-ID大的为主后,采用主路由器发起的数据包序列号开始排号来保证数据包能够正常收到,算协议的隐性确认机制吧;从抓包的情况来看,主要是DR来跟其他路由器进行协商,而不是每个路由器之间相互两个协商,同时也是DR为主路由器。如图:

OSPF复习_OSPF_07

② 确认主从后,路由器由ExStart转为Exchange,从路由器发送确认的数据包序列号开始交互DD报文,开始都是携带自己的LSA头部信息

OSPF复习_OSPF_08

OSPF复习_OSPF_09

③ 收到其他路由器的DD报文并交互开始时,端口由Exchange转为Loading状态,此时路由器发送LSA Request报文向对方请求LSA信息,对方发送LSA Update报文给需求方进行路由更新。从抓包的情况来看,都是由DR来发送请求报文,然后更新路由信息,再通过组播地址向区域内其他路由器发送更新报文,而LSAck报文则是在组播地址中回应确认收到。

OSPF复习_OSPF_10

④ 最后当LSDB同步完成后,端口进入FUll状态。

四、协议链路状态通告

LSA(Link-State Advertisement)链路状态通告作为OSPF中最重要的内容,是路由器之间链路状态信息的载体。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的。它大概分为11类,常用的有6类。

  1. 路由器 LSA
  2. 网络 LSA
  3. 网络汇总 LSA
  4. ASBR 汇总 LSA
  5. AS 外部 LSA
  6. 组成员 LSA
  7. NSSA 外部 LSA
  8. 外部属性 LSA
  9. Opaque LSA(链路本地范围)
  10. Opaque LSA(本地区域范围)
  11. Opaque LSA(AS 范围)

这些LSA都拥有相同的LSA头部信息,如图:

OSPF复习_OSPF_11

1. 1类LSA:Router LSA

描述了设备的链路状态和开销,该LSA只能在所属区域内泛洪。主要描述了产生此LSA路由器的链路数量,链路信息(链路类型、ID、数据、开销值)

OSPF复习_OSPF_12

如上图最后一行中,不同的链路类型代表的内容有少许的区别,Metric是开销

Link Type

Link ID

Link Data

P2P,这是描述本路由器到邻居路由器点到点的链路,属于拓扑信息

邻居路由器的Router ID

本路由器的接口的IP地址

TransNet,描述本路由器到一个Transit网段的连接,属于拓扑信息

DR的接口的IP地址

本路由器的接口的IP地址

StubNet,描述本路由器到一个Stub网段的连接,属于网段信息

本路由器的接口的网络IP地址

该Stub网段的网络掩码

2. 2类LSA:Nerwork LSA

由DR产生,描述本网段的链路状态,在所属的区域内传播。记录该DR所接入的MA网络中所有与之形成邻接关系的路由器,以及DR自己;同时携带了该网段的网络掩码。

OSPF复习_OSPF_13

3. 3类LSA:Nerwork Summary LSA

由ABR产生,描述区域内的某个网段的路由,用于向一个区域通告到达另一个区域的路由。

OSPF复习_OSPF_14

4. 4类LSA:ASBR Summary LSA

由ABR产生,描述到ASBR的路由,通告给出ASBR所在区域外的其他区域,说白了就是告诉其他区域ASBR在哪儿。

OSPF复习_OSPF_15

5. 5类LSA:AS External LSA

由ASBR产生,用于描述到达OSPF域外的路由,会通知所有的区域(除了Stub和NSSA区域)

OSPF复习_OSPF_16

这里的度量值类型需要注意一下:

0:代表Metric-Type-1

当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类外部路由的可信程度较高,将其配置成Metric-Type-1。这一条路由的开销=AS内部开销+AS外部开销

1:代表Metric-Type-2

当ASBR与AS之外的开销远远大于在AS之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成Metric-Type-2。这一条路由的开销=AS外部开销

6. 7类LSA:NSSA LSA

非完全末梢区域LSA,由ABR产生,用于描述到达OSPF域外的路由。与5类LSA功能类似,但泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0

7. LSA新旧处理

  • 如果没有的LSA,则添加LSDB中
  • 如果有这样的LSA,但收到的LSA新,则更新LSDB
  • 如果有这样的LSA,但收到的LSA就,则发送新的LSU给对方
  • 如果有这样的LSA,相同,则丢弃忽略
  • 如果有这样的LSA,损坏,则不接收

OSPF复习_OSPF_17

五、路由计算

1、SPF算法

路由器将自己作为最短路由树的树根,根据1、2类LSA中的拓扑信息,依次将Cost值最小的路由添加到SPF树中。广播网络中DR和其所连接路由器的Cost值为0,已经出现的路由信息不会再添加到SPF树干上。由于像树干一样向外延展,SPF树也是只有单向的最短路径,这保证OSPF区域内路由不会环路。第二步,将1、2类路由信息以叶子节点形式附加再对应的0SPF路由器上,计算最优路径,已经出现的路由信息不会再添加到SPF上。

而OSPF选择最短路径的规则是:区域内→区域间→Metric-type-1→Metric-type-2

2、区域内路由计算

从根路由器出发,依照路由的方向,把链路开销相加起来即可。

如图,R1到达PC1(5.5.5.6)的开销值Metric=1+1+48=50

OSPF复习_OSPF_18

3、区域间路由计算

OSPF复习_OSPF_19

而区域间路由计算会与区域内路由计算过程有稍微的区别,由于区域间的路由传递是依靠3类LSA,而区域内依靠1、2类LSA。

如上图:R2去到192.168.1.0网段的Cost=1,而R2通过3类LSA转发到Area0区域内泛洪,但是当到需要去到Area2内时,R3作为ABR会重新修改发布路由者为自己,所以在Area0区域的最优路径是需要留意的。

域间路由防环机制

  • 非骨干区域必须也骨干区域直接相连,区域间路由需经由Area0中转
  • ABR不会将描述到达某区域内网段路由的3类LSA注入回该区域
  • ABR从非骨干区域收到的3类LSA不能用于区域间路由的计算

虚连接的作用

由于OSPF要求骨干区域必须连续的,但有时候无法做到;就可以使用虚连接使骨干区域在逻辑上连续。虚连接可以在任意两个ABR建立,但要求这两个ABR都有端口连接到一个相同的非骨干区域。

OSPF复习_OSPF_20

4、外部路由计算

OSPF复习_OSPF_21

外部路由信息以节点形式挂在在R1,根据5类LSA报文,R3\R5可以知道5类LSA有R1产生。但是不同的是,R3与R1在同个区域知道经过R1可以去往外部路由;则R3经过区域内SPF计算将R1添加到SPF树干并设置为下一跳。R与R1不在同个区域,R5并不存在R1,而R5根据R3产生的4类LSA将R3设置为下一跳。

六、特殊区域

OSPF区域可分为两种类型:

传输区域(Transit Area):负责自己区域和穿越型的流量

末端区域(Stub Area):承载本区域发起和访问的流量

1. Stub区域

Stub区域的ABR不向Stub区域内传播它接收到的AS外部路由(即4、5类LSA),因为是末梢区域不再需要下下一条路由转发的情况,那么它就可不需要外部路由信息,它就是最后一个人。有因少了4、5类LSA所以LSDB、路由表规模都会大大减小,但是Stub区域的设备还是需要到达AS外部,所以Stub区域的ABR会生成一条缺省路由(3类LSA描述)。

2. Totally Stub区域

比Stub区域来说,它还不支持区域间路由的传播,即不支持3类LSA在区域内传播,但是Totally Stub区域内的设备也需要跟其他区域传播数据的,所以Totally Stub区域不支持明细的3类LSA,而是会生成一个缺省的3类LSA来告诉区域内的设备把数据发往哪个路由器哪个口。这样外部区域拓扑及路由变化都不会导致Totally Stub区域内的路由重计算。

3. NSSA区域

由于Stub区域是不能引入外部路由的,但当需要外部路由引入时就不能满足现有的分类,所以就有了NSSA区域;它可以引入外部路由,同时又不会学习来自其他OSPF网络其他区域的外部路由。

  • 7类LSA就是为了支持NSSA区域而新增的一种LSA类型,用于描述NSSA区域引入的外部路由信息。NSSA区域的ASBR将外部路由引入该区域后,使用7类LSA描述这些路由。
  • 7类LSA的扩散范围仅限于始发NSSA区域,7类LSA不会被注入到普通区域
  • NSSA区域的ABR会将7类LSA转化为5类LSA,并将该LSA注入骨干区域从而在整个OSPF域内防洪
  • NSSA区域的ABR会阻挡其他区域引入的外部路由引入区域,即NSSA区域内不会存在4、5类LSA,为了让NSSA区域内的路由器能够通过骨干区域到达AS外部,NSSA区域的ABR会自动向该区域注入一条缺省路由,该路由采用7类LSA描述

4. Totally NSSA区域

与Stub和Totally Stub区域是一样的,阻挡3类LSA。

七、路由汇总

又称路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。

OSPF复习_OSPF_22

在ABR执行路由汇总:对区域间的路由执行路由汇总

OSPF复习_OSPF_23

在ASBR执行路由汇总:对引入的外部路由执行路由汇总

OSPF复习_OSPF_24

八、其他特性

1. Silent-Interface

在我们的路由器的一些接口上,只是连接了末端设备,他们不需要接收和发送OSPF报文,甚至不处理丢弃这些报文;为了减少系统资源的消耗,以及增强OSPF的组网适应能力,我们可以把这些端口设置为Silent-Interface(静默端口)。

  • Silent-Interface不会接收和发送OSPF报文
  • Silent-Interface的直连路由仍可以发布出去

2. 报文认证

启用报文认证后,只有通过认证的OSPF报文才能被接收

  • 区域认证方式:一个区域中所有的路由器在该区域下的认证模式和口令必须一致
  • 接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致

如果两种认证方式都存在时,优先使用接口认证方式

九、配置命令

1. 基础配置

[R2]ospf 1 router-id 10.0.1.1 ###设置Router-id

[R2]ospf 1 ###启用OSPF并选择进程

[R2-ospf-1]area 0 ###进入区域0

[R2-ospf-1-area-0.0.0.0]network 10.0.0.0 0.0.0.255 ###宣告哪个网段通过

[R2]display ospf routing ###查看OSPF路由表

[R2]display ospf lsdb ###查看LSDB

[R2]display ospf peer ###查看邻居表

[R5]display ospf interface LoopBack 0 ###查看链路接口类型信息

[R5-GigabitEthernet0/0/3]ospf cost 10 ###修改接口开销值

[R5-ospf-1]bandwidth-reference 100000 ###修改带宽参考值

[R5-GigabitEthernet0/0/3]ospf network-type p2p ###修改接口网络类型

[R5-GigabitEthernet0/0/3]ospf authentication-mode simple cipher huawei  ###接口认证

[R5-ospf-1-area-0.0.0.1]authentication-mode md5 1 cipher huawei  ###区域认证

[R5-ospf-1]import-route direct ###引入直连外部路由

[R5-ospf-1]preference 20 ###修改区域内/间路由优先级

[R5-ospf-1]preference ase 50 #修改OSPF外部路由优先级

[R5-ospf-1-area-0.0.0.1]vlink-peer 10.0.3.3 ###创建虚拟链接​​​​

举报

相关推荐

0 条评论