OSPF基础

OSPFv2和RIPv2对比

相同点

1、两者都是无类别路由协议 --- 传播时携带真实掩码

2、两者的更新方式相同

OSPFv2和RIPv2都使用组播更新方式,各组播地址如下:

RIPv2 --- 224.0.0.9

OSPFv2 --- 224.0.0.5/224.0.0.6

3、两者均支持等开销负载均衡

不同点

RIPv2只能应用在小型网络中

OSPFv2可以应用在中大型网络环境

OSPF区域划分 --- 结构化部署

OSPF域(Domain)

将一系列的OSPF路由器组成的网络称为OSPF域。

区域ID:32bit,例如0.0.0.0

OSPF多区域划分要求:

1、OSPF要求域中所有的非骨干区域(区域ID不为0的区域)都必须与Area0相连。

2、骨干区域不能被分割

OSPF区域结构部署规则的必要性

假定没有“所有骨干区域都必须与骨干区域相连”这条规则 --- “原理骨干的非骨干”

后果:会出环

定义了ABR(区域边界路由器)设备 --- 确保所有人遵循区域划分要求

ABR定义:
1、至少连接两个区域
2、连接的区域中至少有一个是区域0
3、在区域0中至少有一个活跃的邻居

作用:用于传递区域间路由

为了避免区域间的路由形成环路,==非骨干区域之间不允许直接相互发布路由==。

假定没有“骨干区域不能被分割”这条规则 --- 不连续骨干区域

后果:会出环

OSPF规定:==从非骨干区域收到的路由信息,ABR能接收,但不会使用这条路由信息(OSPF水平分割原则)==

总结

OSPF有如下规则:
1、对于伪ABR设备不允许转发区域间路由信息
2、对于真实ABR而言
	能够将自己直连的非骨干区域的区域内路由信息传递给骨干区域
	能够将自己直连的骨干区域的区域内路由信息传递给非骨干区域
	能够将自己从骨干区域学习到的区域间路由信息传递给非骨干区域

OSPF路由器角色

  • 内部路由器(IR)
  • 所有接口都接入同一个区域的路由器
  • 区域边界路由器(ABR)
  • 工作在两个OSPF区域之间的路由器
  • 骨干路由器(BR)
  • 接入Area0的路由器,包括ABR,但不包括ASBR
  • ASBR(AS边界路由器)
  • 工作在OSPF自治系统边界的路由器
  • 并不是同时运行多种路由协议的OSPF路由器就一定是ASBR,ASBR一定是将外部路由引入到OSPF域的设备。

OSPF数据包

Hello

  • 用来周期发现、建立、保活OSPF邻居关系,通过组播224.0.0.5发送。
  • 10S发送一次来确认邻居的存在
  • hold-time --- 4倍hello时间
  • Router-ID(RID)
  • 全域唯一,标识路由器身份
  • 用ip地址形式标识(32bit,点分十进制)
  • 配置方法
  • 手工配置
  • 自动配置
  • 默认最大环回IP地址,若没有最大环回则选择最大的物理IP地址(路由器的RID选择)
  • [r1]display router id //查看路由器全局ID值
  • 注意:
  • 启动OSPF进程前,必须要有接口IP地址,若存在IP地址,则第一次启动OSPF进程时,会选取第一个配置的IP地址为RID。
  • 但是,若删除第一个配置的IP地址后,则恢复为上述规则。
  • 在华为设备中,若没有接口IP地址,则OSPF启动后,RID为0.0.0.0
  • 在思科设备中,若没有接口IP地址,则OSPF启动失败。
  • 无论采用手工还是自动选择,一旦OSPF进程启动,==RID被确定,则无法变化,必须重启进程才能生效==。
  • <huawei>reset ospf process //重启所有OSPF进程

DBD

  • 数据库描述报文
  • 该报文携带的是路径信息的摘要(为了减少更新量,并不会直接给邻居发送拓扑信息,而是将拓扑信息的目录发送给邻居)

LSR

  • 链路状态请求报文
  • 基于未知的LSA(链路状态通告)信息进行查询

LSU

  • 链路状态更新报文
  • 携带真正的LSA信息的数据包

LSAck

  • 链路状态确认报文

OSPF七种状态机

  • down --- 关闭状态 --- 一旦启动了OSPF协议,则发出hello包,并进入下一状态
  • init --- 初始化状态 --- 收到的hello包中,存在自己的RID值,则进入下一状态
  • 2-way --- 双向通讯状态 --- ==邻居关系建立的标志==。

条件匹配:匹配成功则进入下一阶段,不成功则停留在2-way

  • exstart --- 预启动状态 --- 使用未携带信息的DBD包进行主从关系选举,RID大的为主
  • exchange --- 准交换状态 --- 使用携带目录信息的DBD报文进行目录共享
  • loading --- 加载状态 --- 邻居间使用LSR/LSU/LSAck三种报文来获取完整的拓扑信息
  • full --- 转发状态 --- ==标志邻接关系的建立==。

OSPF条件匹配

  • 设备接口名称
  • DR --- 指定路由器
  • BDR --- 备份路由器
  • DRother --- 其他路由器
  • OSPF称为邻接关系的条件
  • 点到点 --- 不用选举DR和BDR --- 直接开始建立邻接关系(加快收敛的方法)
  • MA网络 --- 在一个网络中,不限制节点数(会选举DR和BDR)
  • 选举规则
  • 接口优先级 --- 0-255 --- 优先级越大,为DR,次一级为BDR(默认为1)
  • RID --- 越大越优先
  • 选举范围 --- 一个广播进行一次条件匹配
  • 角色之间的关系
  • DR和DRother --- 邻接关系
  • DR和BDR --- 邻接关系
  • BDR和DRother --- 邻接关系
  • DRother和DRother邻居关系
  • 非抢占性选举模式

选举过程

1、DR、BDR的选举是通过Hello报文来实现的,选举过程发生在2-way状态之后

2、路由器将自己的接口的DR优先级填写hello报文中的 “DR优先级” 字段

3、在接口视图下可以修改DR优先级(若DR优先级修改为0,则代表不具备DR和BDR的选举资格)

4、当路由器接口激活OSPF后,首先检查网络上是否已经存在DR设备,如果存在则接收DR角色。若不存在,则拥有最高DR优先级的设备称为DR(RID)

5、BDR的选举过程和DR选举过程相同,但是是在DR选举成功之后。

DR设备使用组播224.0.0.5向该MA网络发送消息。
而DR和BDR使用224.0.0.6监听该MA网络的消息
DRother使用224.0.0.6发送自己的LSU报文

在NBMA网络中,也存在OSPF

在NBMA网络类型下,如果需要启动OSPF协议,需要手工指定邻居,否则不会发送hello报文。

若不发送hello报文,则邻居状态处于down状态。

OSPF第一次收敛的全过程

  1. 启动OSFP配置完成后,OSPF将向本地所有运行OSPF协议的接口组播224.0.0.5发送hello报文; hello报文中携带有本地的RID以及本地已知的邻居RID;之后生成邻居表。
  2. 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系;仅hello报文保活
  3. 匹配成功的邻居将开始建立邻接关系。
  4. 首先使用未携带数据的DBD报文来进行主从关系选举;之后使用携带数据的DBD报文来共享数据库目录;之后本地使用LSR/LSU/LSACK报文来获取未知的LSA信息;
  5. 完成本地数据库的建立---生成数据库表。
  6. 之后本地基于数据库生成有向图和最短路径树,之后计算本地到达拓扑中所有未知网段的最短路径,并将其添加到路由表中。
  7. 收敛完成,hello报文周期保活。每30min进行一次周期更新。

结构突变

1.新增网段 --- 直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。

2.断开网段 --- 直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。

3.无法沟通 --- 到达dead time后,断开邻居关系 --- 4倍的hello时间。

OSPF基础配置

实例:




ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_链路


1、启动OSPF进程

[r1]ospf 1 router-id 1.1.1.1	//进程号仅具备本地意义,手工配置RID方法

2、创建区域

[r1-ospf-1]area 0

3、宣告

[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 	//精准宣告
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255 	//宣告网段
宣告使用反掩码形式:
	32位二进制,使用点分十进制表示。由连续的0和连续的1组成;并且0代表 不可变;1代表 可变。

华为体系中,OSPF路由的优先级为10;
OSPF的COST = 参考带宽(100Mbps)/ 实际带宽
[r1-ospf-1]bandwidth-reference 1000 //修改参考带宽
如果修改参考带宽则所有设备均需修改
一条OSPF路径的COST等于从目的地到本地路由器沿途的所有设备的 入接口

OSPF报文格式

OSPF报文头部


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_Powered by 金山文档_02


  • 版本(version)
  • 对于OSPFv2而言,该字段恒为2
  • 类型(Type)
  • 描述OSPF数据包的类型
  • hello --- 1
  • DBD --- 2
  • LSR --- 3
  • LSU --- 4
  • LSACK --- 5
  • 报文长度(Packet Length)
  • 整个OSPF报文的长度 --- 单位字节
  • 路由器ID
  • 发出该报文的路由器的RID值
  • 区域ID
  • 发出该报文的接口所属于的区域的ID值
  • 校验和
  • 验证OSPF整体数据报文的有效性
  • 验证类型
  • 指示该报文使用的认证类型
  • 不认证 --- 0;简单认证 --- 1;MD5认证 --- 2;
  • 认证数据
  • 用于报文认证所对比的内容
  • 若认证类型为不认证,则该字段全部用0填充。
OSPF的认证功能是存在于所有的数据交互过程中,对于任何一种数据报文,都需要进行认证。

在认证的过程中,需要对比两个字段,首先对比认证类型字段。
	若相同,才会对比认证数据字段

Hello包


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_网络_03


  • ==网络掩码(Network Mask)==
  • 该字段填充的是发送该报文的网络掩码
  • 两台OSPF路由器如果通过==以太网接口==直连,那么双方的直连接口必须配置相同的网络掩码。(点到点网络不需要对比该参数)
  • 注意:OSPF建立邻居关系需要对比子网掩码信息是华为独有,别的厂商没有这个要求。
  • ==Hello间隔==
  • 两台直连路由器需要确保直连接口的Hello时间间隔相同,否则邻居关系无法建立。
  • 缺省情况下,P2P和BMA类型下,为10S;P2MP和NBMA为30S。
  • ==可选项(Options)==
  • 该字段一共8bit,每个比特位都用于指示该路由器的某个特定的OSPF特性。
  • 而OSPF邻居关系建立过程中,该字段中的某些比特位将会被检查,可能影响OSPF邻居关系建立。(特殊区域的标记)
  • 路由器优先级
  • 【接口视角】ospf dr-priority <0-255> //修改OSPF 接口 的DR优先级
  • ==路由器失效时间==
  • 两台直连路由器要建立OSPF邻居关系,需要保证双方接口的dead time时间相同,否则邻居关系无法正常建立
  • 缺省时间为hello的4倍
  • 指定路由器
  • 网络中DR设备的接口IP地址。
  • 若没有DR或DR没有选举出来,则填充0.0.0.0
  • 备份指定路由器
  • 网络中BDR设备的接口IP地址。
  • 若没有BDR或BDR没有选举出来,则填充0.0.0.0
  • 邻居
  • 在直连链路上发现的有效邻居,此处填充的是邻居的RID值,如果发现多个邻居,则包含多个邻居字段。

所有224.0.0.X格式的组播地址称为本地链路组播,目的IP地址是本地链路组播的数据包中的TTL值被设定为1。

所有的本地链路组播都会存在对应的组播MAC地址,01-00-5e-后24位(组播IP地址的后24位)。

限制邻居关系建立的参数
网络掩码

在R2上修改网络掩码后,

R2会将与R3的状态立即修改为Down状态。而R3会在40S死亡时间之后进行状态切换。

原因在于,R2在修改IP地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以重置状态机。

而R3则认为是无法沟通的。故会等待死亡时间超时后才会切换状态。

并且,该情况,在R3等待40S周期内,还是可以向R2转发数据,R2可以接收到数据包,但无法回复。

Hello间隔
[r1-GigabitEthernet0/0/0]ospf timer hello 5
Dead time
[r1-GigabitEthernet0/0/0]ospf timer dead 120

注意:修改hello时间,则死亡时间随之改变,仅修改死亡时间,hello时间不变

OSPF特殊区域标记

跟修改掩码效果一样

认证字段

两者均需要等待死亡时间超时,才会从full状态切换到down状态。

DBD包

使用未携带数据的DBD报文进行主从关系选举
使用携带数据的DBD报文进行目录信息共享
使用未携带数据的DBD报文进行确认


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_网络_04


接口最大传输单元(接口的MTU)
华为默认将该值设置为0
华为默认不对MTU值进行检测
[r1-g0/0/0]ospf mtu-enable //开启ospf MTU值检测
如果两边均开启该功能,则会进行MTU检测,并且进行检测时,若两边不同,则状态卡在exstart状态。

I位 -- 主从关系选举
如果该位置为1,则不会携带LSA头部

M位 -- 代表后续是否有多个DD报文
置为1,则代表后续还有DD报文
置为0,则代表

MS位 -- 代表主设备
该比特位置为1,则代表Master
在主从关系选举完成之前,各个设备均会认为自己的master

DD序列号
==用于确保DD报文传输的有序和可靠性==。 -- DD序列号逐次加1.
DD序列号必须是由Master路由器决定,而从设备只能使用Master设备发送来的DD序列号来发送自己的DD报文。(隐形确认机制)

LSA头部
当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在内。
一个DD报文可以包含一个或多个LSA头部信息。

LSR包

基于DBD报文请求本地未知LSA信息。


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_ospf_05


链路状态类型、链路状态ID、通告路由器 --- LSA三原则。通过三个参数唯一标识一条LSA。

LSU包


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_OSPF_06


LSACK包


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_链路_07


OSPF的不规则区域

远离骨干的非骨干区域

使用tunnel隧道解决

在R2和R3之间构建一条隧道,之后,将这个隧道宣告到OSPF-Area0,相当于将R3这个非法ABR合法化。

使用VPN隧道解决不规则区域的问题
  1. 可能产生选路不佳
  2. 可能造成重复更新
  3. 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越Area1,导致中间区域资源消耗过大。
虚链路--Vlink 解决

专门为了解决OSPF不规则区域所产生的技术,是一种虚拟的

[ospf区域]vlink-peer [邻居] //建立虚链路邻居,需要双向配置

[r1]display ospf vlink //查看vlink表

虚链路的配置条件:==只能穿越一个区域==。

==Vlink被视为骨干区域的一段延伸 --- vlink永远属于Area0==

vlink链路实际上全部使用单播报文来描述信息。

使用vlink解决不规则区域的问题
  1. 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越Area1,导致中间区域资源消耗过大。
  2. 只能穿越一个区域。
使用多进程双向重发布解决

把一种路由信息以另一种路由协议的方式发布出去。

解决方法:将远离的区域修改为不同的OSPF进程,然后通过重发布导入原来的OSPF进程。

[r3-ospf-1]import-route ospf 2 ---将OSPF进程2的路由导入到OSPF进程1
[r3-ospf-2]import-route ospf 1

使用重发布的问题
  1. 路由优先级不再是10,而是150
  2. 开销值为域外路由开销值,不精确。

vlink的应用场景

  1. vlink可以用来解决不规则区域
  2. vlink还可以用来修复一些次优路径或者骨干区域不健壮问题。
  3. vlink还可以用来解决没有骨干区域的场景。

vlink环路问题

场景1:

场景2:

解决方法:OSPF规定,vlink所在区域不允许传递聚合路由。

不同网络接口类型下的OSPF


网络类型

OSPF接口的工作方式

BMA

Broadcast,可以建立多个邻居关系。需要进行DR和BDR的选举。hello 10S;dead 40S

P2P

P2P,只能建立一个邻居关系。不需要进行DR和BDR的选举,hello 10S;dead 40S

环回接口(虚拟接口)

P2P,华为设备定义为P2P类型,但实际上该接口无数据收发。环回接口默认学习32位主机路由。hello 10S;dead 40S

P2MP

P2MP,可以建立多个邻居关系,不需要进行DR和BDR选举;hello 30S,Dead 120S。会学习邻居接口IP地址所对应的主机路由。

NBMA

NBMA,可以建立多个邻居关系,需要进行DR和BDR的选举,hello 30S,Dead 120S。无法自动建立邻居关系。

Vlink

vlink,以单播的形式发送hello包,hello 10S;dead 40S;不需要进行DR和BDR的选举


广播型多路访问类型(BMA)

[r2]display ospf interface GigabitEthernet 0/0/0 //查看ospf接口


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_OSPF_08


OSPF在BMA网络类型的接口上通常以组播的方式发送hello报文、LSU报文和LSACK报文。以单播的 形式发送DBD报文和LSR报文。

  • Interfacce:接口
  • Cost:开销
  • State:身份
  • Type:接口网络类型
  • MTU:最大传输单元
  • Priority:选举DR/BDR优先级
  • Designated Router:DR路由器接口IP
  • BDR:BDR路由器接口IP
  • Timers:hello时间、死亡时间、轮询时间、重传时间、传输延迟
  • 轮询时间:于状态为DOWN的邻居发送hello报的周期时间
  • 重传时间:设备发送数据包需要确认时,在重传时间内没有收到确认包则会重新发送
  • 传输延迟:加在LSA老化时间上,用来补偿LSA在链路传输过程中消耗的时间

P2P


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_网络_09


OSPF在网络类型为P2P的接口上以组播的方式(224.0.0.5)发送所有的协议报文,在P2P网络中,可以不需要IP地址,所以用组播发送所有协议报文。

并且OSPF在P2P类型的网络中不会选举DR和BDR。

该接口类型信息中,缺少了在BMA网络中看到的DR优先级、DR和BDR的描述信息。

[r2]display current-configuration configuration ospf ? //查看所有当前配置中的关于OSPF的配置

环回接口


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_OSPF_10


Type:P2P -- 在思科中有专门定义的Loopback类型作为环回接口的类型,而华为中没有定义,使用P2P来填充(没有意义)。

所有通过OSPF学习到的环回接口的路由掩码信息都是32位,这是因为环回接口是一个模拟的接口,它实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用的IP地址,故而使用32位掩码来直接标识环回接口。保证路由信息的精确性。---避免产生环路或者路由黑洞。

[r1-LoopBack0]ospf network-type broadcast //修改网络类型为BMA

修改过后State会变成Waiting

原因在于环回接口此时并没有邻居,也就无法进行正常的DR和BDR选举,当时间超时后,环回接口会认为自己就是DR,并将相应信息填充到该接口信息中。


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_OSPF_11


华为将tunnel接口的传输速率定义为64Kbps。

P2MP


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_网络_12


OSPF在P2MP类型的接口上通常以组播的方式发送hello报文,以单播的方式发送其它报文。

P2MP类型无法由设备自动生成,必须由管理员手工更改。

P2MP类型网络不需要选举DR和BDR。

NBMA


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_ospf_13


在NBMA场景中,OSPF不会自动建立邻居关系,需要由管理员手工指定邻居。

为了让OSPF路由器之间能够正确建立邻居关系,需要使用单播邻居的方式来发送OSPF报文。需要双向配置。

[r4-ospf-1]peer ? //手工指定邻居接口IP地址
IP_ADDR IP address

LSA头部信息


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_ospf_14


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_OSPF_15


链路状态老化时间(Link-State Age)

- 16bit,单位S

- 当该LSA被始发路由器产生时,该值被设置为0,之后随着该LSA在网络中被洪泛,老化时间逐渐累积。

- 最大老化时间 --- 3600S --- 当达到该时间后,该LSA会被本地路由器删除。

- 在OSPF网络中,只有始发路由器能够提前使该LSA老化,并删除全网该LSA信息。

- 组步调计时器 --- cisco -- 240S

可选项

  • 内容与hello包相同

==链路状态类型(Link-State type)==

  • 指代LSA的类型

==链路状态ID==

  • 用来标识LSA的,不同类型的LSA,对该字段的定义不同。

==通告路由器==

  • 产生该LSA的路由器的RID

链路状态序列号

  • 32位bit,逐次加一
  • 起始:0X80000001;截止:0X7FFFFFFF (80000001是负数,由负转正)
  • 序列号空间
  • 线性序列号空间(IS-IS使用)
  • 循环序列号空间
  • 棒棒糖序列号空间(OSPF使用)

校验和

  • 会参与到LSA的新旧关系对比

长度

  • 整个LSA长度

判断LSA的新旧关系

链路状态序列号、老化时间、校验和

1、具备较高序列号的LSA信息更优

2、具备相同序列号的LSA,选择拥有较大校验和的LSA

3、具备相同序列号和校验和,如果某条LSA的老化时间被设置为最大老化时间,则认为该LSA最新。

4、具备相同序列号和校验和,没有任何一条LSA的老化时间为最大老化时间,会对比两个LSA的老化时间之差。

MaxAge Diff:一个LSA实例从始发设备发出,直到被洪泛到整个AS边界所需要的最长时间),会认为两条LSA是不同的,选择较小的LSA

当差值小于等于15min,会认为两条LSA相同,选择随机一条。


类型

LS ID

通告者

作用范围

携带信息

Type-1 LSA(Router)

通告者的RID

区域内所有运行OSPF协议的路由器的RID

单区域

本地接口直连拓扑

Type-2 LSA(network)

DR接口IP

单个MA网络中DR所在的路由器的RID值

单区域

单个MA网络拓扑补充信息

Type-3 LSA(summary)

目标网络号

ABR,在通过下一个ABR设备时 会被修改为新的ABR的RID

单区域(ABR临近的)

路由信息

Type-5 LSA(ase)

域外目标网络号

ASBR

整个OSPF域

域外路由信息

Type-4 LSA(asbr)

ASBR的RID

与ASBR同区域的ABR设备,在通过下一个ABR设备时会被修改为新的ABR的RID

除去ASBR所在区域的单区域

ASBR位置信息

Type-7 LSA(nass)

域外目标网络号

ASBR;离开NSSA区域后由ABR设备转换为5类LSA

NSSA区域

域外路由信息


Type-1 LSA -- Router

  • 对于一类LSA,网络中所有设备都会发送,并且只发送一条
  • 同属于一个区域的接口共同使用一个一类LSA信息进行描述。
  • 若存在多个区域,路由器会为每个区域单独产生一个一类LSA,并且每个LSA只描述接入该区域的接口。

Type-2 LSA -- network

  • 在一个网络中,只需要一台设备发送
  • 该LSA仅存在于MA网络中,由DR设备产生
  • 链路状态ID为DR的接口IP地址

Type-3 LSA -- summary

  • 通告者均为ABR设备
  • 每一条路由项都使用单独的一条LSA信息进行描述
  • 该LSA中的开销值,指的是通告者到达目的网段的开销值
  • 设备在接收到3类LSA之后,需要根据一类LSA和二类LSA计算的拓扑信息来寻找三类LSA的通告者。
  • 如果,通告者是所在区域的ABR设备,那么自然而言,设备可以通过一类和二类LSA找到通告者;若不是本区域的ABR设备通告的,则需要转换通告者。

Type-5 LSA -- ase

  • 通告者---ASBR
  • LS ID----域外路由信息的目标网络号
  • 传播范围---整个OSPF域
  • 五类LSA中携带的是域外路由信息,通过重发布导入OSPF网络,因为不同协议对开销值的算法标准 不同,所以,在路由导入之后,将直接舍弃原本的开销值,之后给路由赋予一个规定值---种子度量值。
  • OSPF的种子度量值为1
  • [r4-ospf-1]import-route rip 1 cost 5 //导入路由时修改种子度量值
  • E位:
  • 表示外部路由使用的度量值类型,OSPF定义了两种外部路由度量值类型,分别为MetricType-1(E=0)、Metric-Type-2(E=1)
  • Type-1:所有设备到达域外目的网段的开销值为本地到达ASBR的开销值+种子度量值
  • Type-2:域内所有设备到达域外目的网段的开销值等于种子度量值;OSPF默认使用类型2。
  • [r4-ospf-1]import-route rip 1 cost 5 type 1 //修改外部路由度量值类型
  • 外部路由标记
  • 一个只有外部路由才能携带的标记,经常被用于部署路由策略或策略路由。
  • 在华为路由器上,缺省时,该字段值被设置为1。
  • 转发地址---FA
  • FA字段默认为0.0.0.0;则到达该外部网段的流量会被转发引入到发送这条LSA的ASBR设备。
  • 而若FA字段不为0.0.0.0,则流量会被发送给这个FA字段所表示的地址。
  • 作用:解决次优路径问题-----与ICMP中的重定向报文具有相同效果。
  • FA字段被设置为其余数值的条件:
  • 引入外部路由的ASBR在其连接外部网络的接口上激活了OSPF协议。
  • 该接口的网络类型为BMA或者NBMA。
  • 该接口的IP地址属于OSPF协议配置network命令范围。
  • 该接口没有被配置为静默接口。

Type-4 LSA -- sum-asbr


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_链路_16


  • 链路状态ID------ASBR的RID值
  • 度量值----填写的是该通告者到达ASBR的Cost值
  • 四类LSA的任务就是在辅助五类LSA完成验算过程,找到ASBR的位置,里面只携带一个开销值。

Type-7 LSA -- nass

  • E位----表示允许洪泛五类LSA信息,如果做成特殊区域,则E位为0
  • N位---属于opention字段,允许处理七类LSA
  • P位---不属于opention字段,代表支持7转5操作。
  • 在7类LSA中,在不存在选路不佳的情况下,一般会使用通告者(ASBR)设备的环回接口地址作为转发地址。
  • 如果存在多个环回接口,则使用最先宣告的环回接口地址作为转发地址。
  • 如果没有环回接口,则使用武力接口的地址作为转发地址。
  • 华为逻辑-----cisco---选择最后一个宣告的IP。

路由撤销

一类LSA

  • 一类LSA实质是是在通过:序列号+1;校验和不变;老化时间=0的新LSA来覆盖掉老的一类LSA。

二类LSA

  • 与一类LSA玩法相同。

三类LSA

  • 三类LSA的撤销方式:seq不变,校验和不变,老化时间设置为3600S

五类与七类LSA

  • 三类LSA的撤销方式:seq不变,校验和不变,老化时间设置为3600S
  • 若采用seq+1,校验和不变,老化时间不变的方式撤销,当需要撤销的三类LSA数量较大时,会导致路由器会消耗大量计算资源。

OSPF优化方案

主要目的----减少LSA的更新量以及数量。

  1. 路由汇总(减少骨干区域的LSA更新量)
  2. OSPF特殊区域(减少非骨干区域的LSA更新量)

OSPF路由汇总(路由聚合)

  • OSPF路由汇总是由手工部署的
  • OSPF的汇总称为----区域汇总,因为OSPF在区域之间才传递路由信息,并且是对路由进行汇总而非 LSA信息。
  • 域间路由汇总
  • 域外路由汇总
域间路由汇总

[GS-R2-ospf-1-area-0.0.0.1] abr-summary 192.168.0.0 255.255.224.0
[GS-R3-ospf-1-area-0.0.0.2]abr-summary 192.168.32.0 255.255.224.0

只要站点内这条汇总路由所涵盖的所有明细路由中有一条是有效的,则ABR就会通告该汇总路由,而当所有的明细路由全部失效时,ABR设备才不会继续通告该汇总路由。

汇总并不会影响ABR设备自身的明细路由。

汇总会抑制明细路由的发送。

==域间路由汇总只能汇总ABR设备自身通过一类LSA和二类LSA信息学习到的路由条目==。

域外路由汇总

[r1-ospf-1]asbr-summary 10.1.0.0 255.255.0.0

5类LSA汇总之后的开销值计算方法:

  • Type-2------汇总网段的开销值等于所有明细路由开销值中的最大值+1
  • Type-1------汇总网段的开销值等于所有明细路由开销值中的最大值

OSPF特殊区域

==第一大类设置要求:1、不能是骨干区域;2、不能存在虚链路;3、不能存在ASBR设备==

末梢区域(Stub Area)
  • 如果将一个区域配置成末梢区域,则这个区域将不再学习4类和5类LSA。-----ABR设备将不会在给 该区域转发4类和5类LSA信息。
  • 该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设备,会自动生成一条指向骨干区域的3类LSA缺省路由。

[r5-ospf-1-area-0.0.0.2]stub
[r1-ospf-1-area-0.0.0.2]stub

==注意:一旦做特殊区域,则所有区域内的设备都必须做特殊区域。==

完全末梢区域(Totally Stub Area)

在末梢区域的基础上,进一步拒绝学习3类LSA,仅保留3类缺省即可。

[r1-ospf-1-area-0.0.0.2]stub no-summary //该命令仅需要在ABR设备上配置即可

==第二大类特殊区域--1、不能是骨干区域;2、不能存在虚链路;3、存在ASBR设备。==

非完全末梢区域(NSSA)
  • 如果将一个区域配置成非末梢区域,则这个区域将不再学习4类和5类LSA。-----ABR设备将不会在 给该区域转发4类和5类LSA信息。
  • 该区域依然需要将域外路由信息导入,但因为该区域拒绝5类LSA,所以,只能以7类LSA的形式来 继续传递域外路由信息。
  • 之后,在7类LSA信息离开NSSA区域后,需要再转换成5类LSA进行传输。
  • 该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设 备,会自动生成一条指向骨干区域的7类LSA缺省路由。

[r5-ospf-1-area-0.0.0.2]nssa
[r1-ospf-1-area-0.0.0.2]nssa

O_NSSA ------7类域外路由信息的标记,默认优先级也是150。

完全的非完全末梢区域(Totally NSSA)

在NSSA的基础上,进一步拒绝学习3类LSA,产生一条3类缺省LSA。

[r1-ospf-1-area-0.0.0.2]nssa no-summary

NSSA环路问题

  • NSSA区域缺省路由配置错误可能会导致路由环路的产生。

场景一

场景二


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_网络_17


[r3-ospf-1-area-0.0.0.1]nssa default-route-advertise

R4和R5无法下发OSPF缺省路由的原因是本地路由表中的静态缺省路由被R3发送的七类缺省路由所替 代。

当删除R3的下发命令后,R4和R5均会下发七类缺省路由,并学习对方的七类缺省路由,但是并不会将从对方学习到的七类缺省路由加入到路由表中。

总结一下:

  1. NSSA区域的七类LSA实际上是需要ASBR或者ABR自己下发的。
  2. 而如果多台设备均下发成功七类LSA缺省路由,则虽然都会收到LSA信息,但并不会将其余设备的LSA缺省信息加入到本地路由表中。因为始终相信自己的缺省路由是最好的。
  3. 而对于第一台发布七类缺省路由的设备而言,会认为我身上已经有了一条去往外部区域的路由,并且本地作为通告者,那么当他接收到其他设备发送来的七类缺省路由,也不会进行学习。-----华为运用该逻辑解决Totally NSSA中的环路问题。
  4. 华为为了解决环路问题,保留了NSSA区域由ABR产生的七类LSA缺省路由,这样做的好处就是使得设备相信自己产生的这条LSA,而对于其他设备传递来的七类LSA,只接收到不使用。
  5. 这样一来,ABR设备就不会具备指向NSSA区域内部的缺省路由,更不会将这个缺省路由传递给骨干区域,从而避免环路问题。

==OSPF规定:在NSSA区域中,可能同时存在多个ABR或ASBR,为了防止路由环路产生,边界路由器 之间不计算对方发布的缺省路由==。

NSSA负载分担解决次优路径问题


ospf 骨干区域和非骨干区域在怎么通信 ospf骨干区域号必须为0吗_OSPF_18


OSPF对进行7转5操作的规范:

  1. P比特位用于告知路由器该Type-7 LSA是否需要转换
  2. 缺省情况下,转换路由器是NSSA区域中RID值最大的ABR
  3. 只有P比特位和FA字段不为0的Type-7LSA才能被转换为五类。

[r4-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address //在进行7转5时,删除转发地址 
  
[r1-ospf-1-area-0.0.0.1]nssa translator-always //强制开启7转5操作,在ABR设备上配置

若本地存在两条LSA除了通告者不同外,只有FA字段的值不同,那么对于这两条五类或七类LSA而言,FA字段不为0.0.0.0的LSA优先级更高。

==NSSA区域如果没有FA字段,将会有很大的可能因为7转5操作出现次优路径==。