什么是OSPF(开放式最短路径优先)

OSPF开放式最短路径优先

OSPF简介

  • OSPF是IETF定义的一种基于链路状态的内部网关路由协议。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。
  • OSPF有以下优点:
    • 基于SPF算法,以“累计链路开销”作为选路参考值(源设备到目的设备的最优路径)
    • 采用组播形式收发部分协议报文
    • 支持区域划分
    • 支持对等价路由进行负载分担
    • 支持报文认证
  1. 属于IGP内部网关路由协议
  2. 协议基于链路状态算法
  3. OSPF直接运行于IP协议之上,使用IP协议号89
  4. 组播地址是224.0.0.5和224.0.0.6

补充:

*距离矢量型路由协议度量值:跳数

*链路状态型路由协议度量值:带宽

OSPF基本特点

  1. 支持无类域间路由(CIDR)

OSPF是专门为TCP/IP环境开发的路由协议,支持无类域内路由(CIDR)和可变长子网掩码(VLSM)。所以我们在OSPF中通告网段时要注意匹配子网。

可理解为超网

  1. 支持区域划分
  2. 无路由自环

因为OSPF路由的计算基于详细链路状态信息(网络拓扑信息),因此不会出现自环。

补充:

“路由自环”是指某个报文从一台路由器发出,经过几次转发之后又回到初始的路由器。原因是其中部分路由器的路由表出现错误。

产生的原因可能是配置静态路由有误,或者是动态路由协议错误地计算路由(虽然这种情况发生地几率很小)。当产生路由自环时,报文会在几个路由器之间循环转发,直到TTL=0时才被丢弃,极大地浪费了网络资源,因此应该尽量避免“路由自环”地产生。

TTL是指该字段指定IP包被路由器丢弃之前允许通过最大网段数量,每经过一个路由器TTL值减一。

  1. 路由变化收敛速度快

触发式更新(事件发生的时候就更新,比如连到了互联网,就触发了更新这个动作),一旦拓扑结构发生变化,新的链路状态信息立刻泛洪,对拓扑变化敏感。

  1. 使用IP组播收发协议数据

OSPF路由器使用组播和单播收发协议数据,因此占用的网络流量很小。

  1. 支持多条等值路由

当到达目的地的等开销路径有多条时,流量被均衡地分担在这些等开销路径上。也可以保证冗余。

  1. 支持协议报文的认证

OSPF路由器之间交换的所有报文都可以被验证。一定程度上保证了路由的安全。

OSPF基础术语

1、OSPF基础术语:区域

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

(1)骨干区域:Area 0

(2)非骨干区域:Area 1 2 3 4 5 ...

(3)特殊区域:末节区域,次末节区域

非骨干区域必须与骨干区域相连才能传输路由

2、OSPF基础术语:Router-ID

  1. Router-ID(Router Identifier,路由器标识符),用于在一个OSPF域中唯一地标识一台路由器。
  2. Router-ID的设定可以通过①手工配置的方式,或使用②系统自动配置的方式。【建议手工配制,自动配制存在Router-ID冲突风险】(自动配置前需要先设置IP地址)【一旦Router-ID冲突,则路由器无法建立邻居关系,无法进行数据通信】
  3. 在实际项目中,通常会通过手工配置方式为设备指定OSPF Router-ID。请注意必须保证在OSPF域中任意两台设备的Router-ID都不相同。通常的做法是将Router-ID配置为与该设备某个接口(通常为Loopback接口)的IP地址一致。
  4. Router ID选举规则如下:
    • 手动配置OSPF路由器的Router ID(建议手动配置)
    • 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
    • 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID

3、OSPF的基础术语:度量值

  • OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost值=100 Mbit/s /(÷)接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
  • 一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有出接口的Cost值累加。

串口默认开销为64

默认情况下:

10M链路cost=100M/10M=10

100M链路cost=100M/100M=1

1G链路cost=100M/1000M=1

【cost值不满1的按1表示】

更改带宽参考值为1000M:

10M链路cost=1000M/10M=100

100M链路cost=1000M/100M=10

1G链路cost=1000M/1000M=1

OSPF五种报文类型

OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。

OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。

  • Hello:发现与维护邻居关系--周期性发送
  • DD(Database Description):描述本地LSDB的摘要信息,进行数据库同步
  • LSR(Link State Request):请求邻居的LSA的信息
  • LSU(Link State Update):发送和更新LSA信息(完整的lsa信息)
  • LSACK(Link State ACK):确认收到LSA信息(邻接关系建立成功)

SPF:最短路径优先(源设备到目的设备的最优路径)

LSA:链路状态通告

LSDB:链路状态数据库

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的接口地址。

DD报文

  • DD报文包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。(主要是通过这三个字段来LS Type、LS ID、Advertising Router唯一的标识一条lsa信息)
  • 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报文传输的可靠性和完整性。
  • 其他字段解释
    • Interface MTU:指示在不分片的情况下,此接口最大可发出的IP报文长度。在两个邻居发送DD报文中包含MTU参数,如果收到的DD报文中MTU和本端的MTU不相等,则丢弃该DD报文。缺省情况下,华为设备未开启MTU检查。
    • Optinons:字段同Hello报文。

OSPF路由器邻接关系建立过程:

  1. 建立邻居关系

发送Hello包建立邻居关系

  1. 协商主从

发送DD报文,比较Router-ID(因为ospf是基于IP协议的所以需要确认主从关系,用来保证数据传递的可靠性,Router-ID大的为主)(只要发送DD报文邻居状态就会变成ExStart状态)

  1. 描述自己的LSDB摘要信息

发送DD报文描述LSDB摘要信息

  1. 链路状态数据库同步

发送LSR/LSU/LSACK报文进行LSDB数据库同步

OSPF三大表项

1、OSPF三大表项 - 邻居表:存放路由器邻居信息

display ospf peer brief 【查看邻居表信息】

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

2、OSPF三大表项 - LSDB表:存放链路状态信息

display ospf lsdb 【查看LSDB表】

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

3、OSPF三大表项 - OSPF路由表:用来存放OSPF路由信息;最优路由--->IP路由表中

display ospf routing 【查看OSPF路由表】

  • OSPF路由表和路由器路由表是两张不同的表项。本例中OSPF路由表有三条路由。
  • OSPF路由表包含Destination(目的地址)、Cost(开销值)和NextHop(下一跳IP地址)等指导转发的信息。
  • 使用命令display ospf routing查看OSPF路由表。

OSPF与RIP区别

SPF:最短路径优先(源设备到目的设备的最优路径)

LSA:链路状态通告

LSDB:链路状态数据库

OSPF网络类型

点到点网络【用串口(串口上没有Mac地址)】、非广播网络-点到多点 不需要选举

广播型网络、非广播网络-非广播多路访问(NBMA)需要选举

DR:指定路由器

BDR:备份指定路由器

非DR与BDR路由器被称为:Drother

Router-ID:路由标识符

OSPF路由器之间的关系

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

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

补充:

邻居关系:该关系在OSPF状态机里显示的是2-way的状态。

邻接关系:该关系在OSPF状态机里显示的是Full的状态。

DR和BDR选举

DR:指定路由器

BDR:备份指定路由器

非DR与BDR路由器被称为:Drother

选举的依据:路由器的选举依赖于hello消息,建立邻居关系时广播型网络、非广播网络-非广播多路访问(NBMA)需要选举 (选举是基于端口,而不是基于路由器本身,设定优先级是在端口视图模式下设定的)ospf dr-priority XXX(范围0-255) 设置选举DR优先级 做完此操作后该网络参与选举的设备要重启ospf进程 reset ospf 1 process

选举的步骤:

第一步:比较路由器优先级(值越大越优先,范围:0-255,默认为1,如果为0则表示该路由器不参与选举)

第二步:比较路由器的Router-ID(值越大越优先)

Router-ID:手动设定命令 router id 1.1.1.1(router ID 不是IP地址,只是格式一样)

如果没有手动设定,那么以路由器上环回接口 IP地址最大的,作为该路由器的router ID

如果没有环回接口  ,那么以路由器上物理接口IP地址最大的,作为该路由器的router ID

补充:

  • MA(多路访问):广播多路访问(广播)、非广播多路访问(NBMA)需要选举
    • 所有的Drother都要和DR/BDR建立邻居关系和邻接关系
    • DR与BDR之间也要建立邻居和邻接关系
    • drother之间只需要建立邻居关系,不建立邻接关系
  • p2p点到点(如串口),p2mp点到多点 不需要选举
    • 所有的路由器建立邻居关系和邻接关系

OSPF工作过程概览

建立邻居关系

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

邻接关系建立 (1)

OSPF邻居和邻接关系

  1. OSPF协议中,路由器在泛洪LSA(链路状态信息)之前,必须建立起邻居和邻接关系。
  2. ospf是使用HELLO报文来建立和维护邻居关系

hello报文里面包含的参数:router-ID、area -ID、认证信息、网络掩码、hello的时间间隔。

  1.    只有当路由器hello包里的各类参数值一致情况下,邻居关系才会建立起来
  2. 路由器邻居关系建立起来之后,需要建立邻接关系。(不是所有的路由器都需要建立邻接关系)。取决于OSPF邻居之间的网络类型。
    1. 点到点   点到多点 不需要选举
    2. 广播   NBMA  需要选举   :DR BDR之间要形成邻居和邻接关系,Drother之间形成邻居关系,不需要形成邻接关系;DR BDR与Drother形成邻接关系。
  3. full表示邻接关系已经形成
  4. 因为配置的先后顺序问题,可能会导致选举结果与所设定的不一致,只需要同时开启进程或同时连线即可 reset ospf 1 process 重启ospf进程
  5. P-2-P接口与广播型接口的hello时间间隔与dead时间间隔一致

 10S    40S

  1. debugging  ospf packet
  • down--init --2way(邻居关系确立)
  • --ExStart(交换LSA初始)
  • --Exchange(信息交换)
  • --Loading(信息加载)
  • --full(邻接关系)
  1. P2P网络里面,形成邻接关系后,交互LSA,需要确定一个主路由器进行DD报文交换     (routerID大的)

思考:OSPF 广播型网络里,为什么DR与BDR之间需要建立邻接关系?

注意事项:

1、由于OSPF选举具有不可更新性,所以在配置OSPF需要首先设定路由器的router ID。如果在启用OSPF协议后,再设定路由器的router ID,那么所设定的ID号是不参与到OSPF协议的。

2、OSPF选路  ----通过修改端口开销,来控制路由

例:

ospf cost  

源进源出

3、OSPF的被动接口(静默端口)

passive interface   不会发送和接受OSPF报文

命令:silent-interface  端口

4、OSPF认证

在区域视图下 authentication-mode simple plain 123456

同一区域内生效

思考:非骨干区域必须要和骨干区域相连接,也就是去他区域之间的通信,需要经过骨干区域的转发才能实现,为什么要这么设计?

5、OSPF多区域的基本配置

    步骤1  sysname    给路由器更名 

    步骤2  router id  X.X.X.X  设置路由器ID号

    步骤3  给端口配置IP地址

              环回接口 int  loopback 0

    步骤4  启动OSPF协议

    步骤5  设置OSPF区域   area

    步骤6  宣告网段(宣告的是路由器在对应区域所连接的网段)

              network (可以使用对应端口的IP,也可以使用所连接的网络的网络地址)

              network 10.0.12.1 0.0.0.0

              network 10.0.12.0 0.0.0.255

命令扩展:

display ospf peer brief  【看邻居、邻接关系】

【Huawei】display ospf interface 【 查看DR BDR的选举状况】

reset ospf 1 process  【重启OSPF进程】

ospf dr-priority 0-255  【修改路由器优先级(端口模式)】

tracort IP地址【跟踪路由】

[r2-ospf-1-area-0.0.0.1]vlink-peer < router id >【设置虚连接】

[r2-ospf-1-area-0.0.0.1]dis ospf vlink 【查看虚连接】

[r2]display current-configuration 【查看所有配置】

路由DR BDR重新选举需要重启ospf进程

OSPF路由器类型

  • OSPF路由器根据其位置或功能不同,有这样几种类型:
    • 区域内路由器IR(Internal Router)
    • 区域边界路由器ABR(Area Border Router)
    • 骨干路由器BR(Backbone Router)
    • 自治系统边界路由器ASBR(AS Boundary Router)

一网络邻居关系为n-1

dis cu

有向图

Router-LSA

stub网段(末节网络)

Transit网段

点到点网段(不同网段)

点到点网段(同网段)

1类LSA点到点网络它会产生1、p-2-p 2、stubnet

1类LSA MA网络它会产生TransNet但是需要与类型2相结合应用

SPF计算

  • 计算过程的两个阶段:
    • 第一阶段:计算Transit节点,忽略Stub节点,(计算开销)生成一个最短路径树
    • 第二阶段:只计算Stub节点,将Stub网段挂到最短路径树上去

补充:

配置端口开销

  • (1)直接修改cost值(常用)

[RTB]interface Ethernet 0/0

[RTB-Ethernet0/0]ospf cost 5

[RTB-Ethernet0/0]quit

[RTB]

  • (2)修改默认带宽基数(见ospf基本参数Cost算法)

[RTC]ospf

[RTC-ospf-1]bandwidth-reference 500

Info: OSPF 1 Reference bandwidth is changed

Please ensure reference bandwidth is consistent across all routers.

[RTC-ospf-1]quit

Router-LSA中的重要字段

每个路由器都会产生,用来描述路由器的直连路由状态以及开销值,只能在所在区域内泛洪。

[RTA]display ospf lsdb router self-originate(显示路由器本身的ospf链路状态数据库)

[RTA]display ospf lsdb router (router id)一类

[RTA]display ospf lsdb network (router id)二类

LSA头部:

  • type:LSA类型
  • Ls id:与路由的router ID相对应(与类型有关)
  • Adv rtr:通告路由器(产生LSA的路由信息)
  • Ls age:生存周期
  • Len:长度
  • chksum:检测值
  • seq#:序列号

LSA内部(内容):

  • Link count:编号
  • Link id:链路ID,相当于他所要连接的地址
  • Data:自己的地址
  • type:所连接的网络类型
  • metric:开销

p2p:点到点网络(同网段和不同网段)

trans net(跨网):

stub net:末节网络

LSA概述

       OSPF 是一种基于链路状态的动态路由协议,每台 OSPF 路由器都会生成相关的LSA,并将这些 LSA 通告出去。路由器收到LSA 后,会将它们存放在链路状态数据库LSDB 中.

       LSA 有多种不同的类型,不同类型的 LSA 的功能和作用是不同的,下面介绍几种常见的 LSA。(LSA传递时不会发生改变,三类LSA在同一区域不会发生改变,但是跨区域后会发生改变,如果想要查看实际开销dis ospf routing)

  • 1类LSA(router LSA):
    • 产生:每台设备都会产生:
    • 作用:携带设备的链路状态以及开销
    • 泛洪范围:只在接口所属的区域内泛洪
  • 2类LSA(network LSA):
    • 产生:DR产生
    • 作用:描述该DR连接的所有路由器
    • 泛洪范围:只在接口所属的区域内泛洪
  • 3类LSA(network summary LSA):
    • 产生:ABR产生
    • 作用:描述区域内某个网段的路由
    • 泛洪范围:可以在区域之间进行传递
  • 4类LSA(ASBR summary LSA):
    • 产生:ABR产生
    • 作用:描述到达ASBR的位置
    • 泛洪范围:除ASBR所在区域的其他相关区域
  • 5类LSA(AS external LSA)
    • 产生:由ASBR产生
    • 作用:描述到达ospf外部路由
    • 泛洪范围:泛洪到整个OSPF区域

  1. Type-1 LSA (Router LSA):每台路由器都会产生,用来描述路由器的直连链路状态和开销值。Type-1LSA 只能在所属区域内部泛洪,不能泛洪到其他区域。

display ospf lsdb router查看当前设备的所有1类LSA信息

display ospf lsdb router self-originate只查看自己产生的1类LSA信息

  1. Type-2 LSA (Network LSA):它是由 DR 产生的,主要用来描述该 DR 所在网段的网络掩码以及该网段内有哪些路由器。Type-2 LSA 只能在所属区域内部泛洪,不能泛洪到其他区域。

  1. Type-3 LSA (Network Summary LSA):它是由 ABR CArea Boundary Router)产生的,ABR 路由器将所连区域的 Type-1和 Type-2LSA 转换为 Type-3LSA,用来描述区域间的路由信息。Type-3LSA 可以泛洪到整个 AS CAutonomous System,自治域)内部,但不能泛洪到 Totally Stub 区域和 Totally NSSA (Not-So-Stubby Area) 区域。(在多区域才会产生,且类型三之后都是路由信息,不再是链路状态)

  1. Type-4 LSA (ASBR Summary LSA):它是由 ASBR CAutonomous System BoundaryRouter)所在区域的 ABR (该路由器一定属于ospf区域的)产生的,用来描述到 ASBR 的路由。Type-4 LSA 可以泛洪到整个 AS 内部,但不能泛洪到 Stub 区域、Totally stub 区域、NSSA 区域和 Totally NSSA区域中。

  1. Type-5 LSA (AS External LSA):它是由 ASBR 产生的,用来描述到 AS 外部网络的路由。Type-5 LSA 可以泛洪到整个 AS 内部,但不能泛洪到Stub 区域、Totally Stub 区域、NSSA 区域和 Totally NSSA 区域中。(在现实中类型五和类型四是伴生的,且先生成类型五再生成类型四)

  1. Type-6LSA: 用于OSPF 组播。
  2. Type-7LSA (NSSA LSA):它是由 NSSA 区域或 Totally NSSA 区域的NSSA ASBR产生的,用来描达到 AS 外部的路由。Type-7LSA 只能出现在所属 NSSA 区域或 Totally NSSA 区域内部。

产生类型五一定会产生类型四

(非骨干区域才可以设置末节区域)

特殊区域:

  • stub(末节区域)
    • 过滤4,5类lsa,ABR会产生缺省(默认)的3类lsa,区域内不能引入外部路由
  • total stub(完全末节区域)
    • 过滤3,4,5类lsa,ABR会产生缺省(默认)的3类lsa,区域内不能引入外部路由
  • nssa
    • 过滤4,5类lsa,ABR会产生缺省(默认)的7类lsa,该区域能引入外部路由
  • total nssa(完全nssa区域)
    • 过滤3,4,5类lsa,ABR会产生缺省(默认)的3类lsa,该区域能引入外部路由
  • 重点: nssa和stub根本区别就是nssa可以引入外部路由。而stub区域不可以引入
  • nssa网络路由器都需要配置。

ospf路由聚合

路由聚合是为了减少路由表的条目(聚合的一定是路由信息,type3和type5包含的都是路由信息,而type4包含的是asbr到abr的开销)

原因:因为OSPF 不支持自动聚合,所以对其进行优化的时候需要进行手动聚合。

两种聚合:

  • 1.区域间的路由聚合
    • ABR将区域内的type-1  type-2 LSA转换成type-3LSA进行聚合
    • ABR不能对外部路由以及区域间传递的路由进行聚合。ABR不能聚合type-5,以及别的区域ABR发送过来的type-3

abr-summary   聚合后的网络地址+掩码

  • 2.外部路由聚合
    • ASBR将外部路由引入时,对type-5 LSA进行聚合
      • 当使用NSSA区域时,ASBR所在区域的ABR会将ASBR产生的type-7 LSA转换成type-5LSA ,此时ABR可以充当ASBR的角色,对所转换的type-5LSA进行聚合。
      • 当NSSA区域中存在多台ABR,会选择router-ID最大的进行转换。
    • NSSA区域外部路由引入时,有两种聚合方式:
      • 1.在NSSA区域的ASBR上进行聚合。
      • 2.在NSSA区域的ABR(router-ID最大)上进行聚合。将type-7 LSA转换成type-5LSA,进行聚合。

asbr-summary   聚合后的网络地址+掩码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值