HCIA的复习
这边可以与我之前写的HCIA博客结合起来一起看,效果更好
HCIA的学习(6)
OSPF状态机
- down—关闭-----一旦启动OSPF进程,并发出hello报文,则进入下一个状态
- init----初始化状态------当收到的hello报文中存在本地的RID值,则进入下一个状态
- 2-way----双向通讯----邻居关系建立的标志。
条件匹配:匹配成功则进入下一个状态,匹配失败则停留在邻居关系。(发送的是Hello包进行选举)
- exstart—预启动----使用未携带LSA摘要的DBD报文进行主从关系选举,其中RID大的为主设备
- exchange—准交换—使用携带LSA摘要信息的DBD报文进行信息共享
- loading----加载----邻居间使用LSR/LSU/LSAck三种报文来获取完整的拓扑信息
- full----转发----拓扑交换完成后进入该状态,标志着邻接关系的建立。
Attempt状态---尝试状态。仅在NBMA网络中会出现,当设备启动后,从down切换到该状态,尝试向外发送hello报文,当成功发送后,进入到init状态。(因为NBMA网络中不允许发送组播报文,所以只能进入Attempt状态等待网络管理员告知我邻居的IP地址,然后发送单播报文)
条件匹配:
目的:是为了减少网络中LSA信息的重复更新及资源消耗
(假如没有条件匹配,如果A,B,C,D依靠一个交换机使其出于同一个广播域,假设A先给B,C,D发送自己的拓扑信息了,B接收到后又将自己的拓扑信息和获取到的A拓扑信息一起发送给C(因为如果不将A的拓扑信息一起发送,如果网络是A-B-C三台路由器直连,那么C就永远无法接受到A的拓扑信息),那么C就收到两份A的信息造成LSA信息的重复更新及资源消耗)
设备接口名称:
- 指定路由器—DR(负责收取其他所有人的拓扑信息)
- 备份指定路由器—BDR(当DR出现故障时,负责收取其他所有人的拓扑信息)
- 其他路由器—DRother(自身的拓扑信息只发给DR或BDR,不再发给其他DRother)
注意:DR选举是一个广播域选举一个,只有一种情况只有DR,没有BDR,就是广播域中只有一个设备参加选举,其他设备皆接口优先级为0,放弃选举。
选举规则:
- 对比接口优先级----越大越优先,默认值为1,范围为0-255;当优先级为0时代表放弃选举。(先比较)
- 对比设备RID----越大越优先
组播地址:(为什么有两个组播地址的原因)
- DRother发送时使用224.0.0.6
- DR/BDR接收224.0.0.6,发送224.0.0.5
角色关系:
- DRother之间属于邻居关系,其他设备之间属于邻接关系。
条件匹配属于非抢占模式,即一旦选举成功,不会因为新加入的设备而重新选举。如果需要重新选举,则重启OSPF进程。
OSPF工作过程
1、设备在启动配置完成后,OSPF将向本地所有运行了OSPF协议的接口以组播224.0.0.5的方式发送出hello报文。
hello报文中携带有本地的RID值以及自己已经知晓的邻居的RID(通过接收其他邻居的hello包来获取邻居的RID)。
2、当收到的hello报文中存在本地RID数值,则进入2-way状态,且将与邻居的关系加入到邻居表中。
3、进行条件匹配,匹配成功开始建立邻接关系。匹配失败则停留在邻居关系,仅使用hello报文保活。
(注:如果是点到点网络就不需要条件匹配,因为不会重复更新)
4、开始建立邻接关系,首先使用未携带数据的DBD报文进行主从关系选举,主设备先进入下一个状态,从设备先
发送下一个报文。之后使用DBD报文来共享LSA摘要信息。之后双方通过LSR/LSU/LSAck报文完成未知LSA的获取
过程,完成本地数据库的搭建----LSDB
5、基于本地数据库中的LSA信息,通过SPF算法,计算出有向图和最短路径树,并计算所有到达所有节点的路由
信息,将计算出的路由信息加载到OSPF路由表中。
6、基于OSPF路由表以及其他协议路由表,共同选择出最优路由,并将最优路由加载到全局路由表中,以供后续
指导数据包的转发过程。
7、设备之间使用hello报文保活,每30min进行一次周期链路刷新。
下边可以与我之前写的实验报告结合起来一起看,那里有完整配置
OSPF实验
OSPF基本配置
IP划分:192.168.1.0/24
IP划分的原则:
1.每一台设备的环回看做一个网段(不管这台设备有多少个环回)
2. 所有的物理链路看做一个网段
所以上图需要4个网段,借两位
192.168.1.0/26 —链路
-------192.168.1.0/29 —R1、R2、R3
-------192.168.1.8/29
-------------192.168.1.8/30 —R3-R4
-------------192.168.1.8/30 —R4-R5
-------192.168.1.16/29
-------192.168.1.24/29
-------192.168.1.32/29
-------192.168.1.40/29
-------192.168.1.48/29
-------192.168.1.56/29
-------192.168.1.64/29 ----保留地址
192.168.1.64/26 —R1环回
192.168.1.128/26 —R2环回
192.168.1.192/26 —R3环回
(因为需要3个网段,最好掩码为30,因为掩码30只有两个可用IP地址,不会造成IP地址的浪费,但有一个网段需要3个IP地址,所以那个网段我们至少掩码为29)
[r1]ospf 1 router-id 1.1.1.1 ---启动OSPF并手工配置RID,RID满足要求即可(即全网唯一)
[r1-ospf-1]area 0 ---划分区域
[r1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0 ---精准宣告,宣告使用的IP属于本地的IP
[r1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255 ---范围宣告
两种宣告方式任选其一即可,一般推荐使用精准宣告。
[r1]display ospf peer ---查看邻居表
[r1]display ospf peer brief ---查看邻居简表
[r1]display ospf lsdb --查看LSDB
[r1]display ospf routing ---OSPF路由表
[r1-GigabitEthernet0/0/0]ospf dr-priority 2 ----修改OSPF接口优先级缺省路由下放
[r5-ospf-1]default-route-advertise ----非强制性下放,要求本地必须存在一条缺省路由
[r5-ospf-1]default-route-advertise always ---强制性下放[r1-ospf-1]silent-interface LoopBack 0 ----静默接口,配置为静默接口的接口,不会发送和接收OSPF报文区域认证:
[r4-ospf-1-area-0.0.0.1]authentication-mode md5 1 cipher 123456
接口认证:
[r3-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456
一条OSPF路径的COST值等于从目的地到本地路由器沿途所有设备的入接口cost之和。
OSPF数据报文
OSPF头部信息(公共固定)
- 版本:OSPF版本,在IPv4网络中版本字段恒定为数值2(v1属于实验室版本,v3属于IPv6)
- 类型:代表具体是哪一种报文,按照1~5排序(Hello报文或其他四种之一)
- 报文长度:OSPF数据报文的完整长度(OSPF头部信息(24字节)+数据部分大小(可变))
- 路由器ID:就是发送方的router id
- 区域 ID:发送的接口属于的区域(例如属于区域0,就是0.0.0.0)(与接收方入接口区域ID如果不相同,两者不会建立邻居关系)
- 校验和:用来验证数据的完整性,有无被串改
- 验证类型:(3种)
- 不认证
- 明文认证
- 密文认证
如果验证类型字段为0–不认证。则认证数据部分使用全0填充,保证首部大小为24字节。
区域ID用于路由器双方进行验证,如果双方所属区域不同,则无法建立邻居关系。
Hello包
功能:发现、建立以及周期性保活邻居关系。进行DR和BDR的选举。
- 蓝色字体表示会影响到OSPF邻居关系的建立
- 首部中:区域ID、认证类型、路由器ID(router id 相同会影响)
- 网络掩码
- 该报文被路由器的那一个接口发送,该字段填充该接口的掩码信息。
- 两台OSPF路由器会检查该字段内容,如果该字段与收到该报文的接口的掩码信息不符,则会丢弃该hello报文。----网络掩码字段的检查仅在MA网络进行。
- 注意:OSPF建立邻居关系需要对比网络掩码字段是华为厂商独有的手段。
- Hello时间间隔
- 两台直连路由器如果要建立邻居关系,则需要保证该参数取值一致,否则无法正常建立邻居。
- 路由器失效时间(即死亡时间)
- 两台直连路由器如果要建立邻居关系,则需要保证该参数取值一致,否则无法正常建立邻居。
- 默认情况下,路由器失效时间是Hello时间的四倍,会随着Hello时间变化而变化(但不绝对,可以单独更改死亡时间)
- 可选项
- 8个标记位,每个标记位置为1,则代表该设备开启了某一种OSPF特性。
- 可选项中有部分标记位被称为特殊区域标记,该标记在邻居关系建立时会被检查,如果不同则会影响到邻居关系建立。
- 路由器优先级
- 就是接口优先级,默认为1
- 指定路由器/备份指定路由器(DR/BDR)
- 填充的是网络中DR/BDR所在接口的IP地址。
- 如果没有选举出,则填充0.0.0.0
- 邻居
- 填的是邻居的router id,每有一个,都用一行来填充(32bit),没有可以为空
扩展:
所有224.0.0.X格式的组播IP地址被称为本地链路组播;目标IP地址是本地链路组播的数据包中的TTL值被设定为1;所有的本地链路组播都存在与之对应的组播MAC地址。01-00-5e-0+IP地址的后23位。
[r1-GigabitEthernet0/0/0]ospf timer hello 100 --修改hello时间
[r1-GigabitEthernet0/0/0]ospf timer dead 20 ---修改死亡时间
DBD包
功能:
-
使用未携带数据的DBD报文进行主从关系选举
-
使用携带数据的DBD报文进行LSA摘要信息共享
-
使用携带数据的DBD报文进行确认
-
接口最大传输单元(MTU)
- OSPF在exstart状态需要进行MTU数值协商,如果双方数值不同,则会影响后续OSPF工作。
- 该参数会影响OSPF邻接关系的建立,如果参数不同,则双方停留在exstart状态。
- 华为默认情况不开启MTU检测机制。
- 在华为体系下,无论接口的实际MTU数值为多少,该字段数值均为0。
- [r1-GigabitEthernet0/0/0]ospf mtu-enable —开启OSPF对MTU的检测机制,双方均需要开启。
-
标记位
- I位
- 代表此时时候在进行主从关系选举。
- 当该标记位置为1时,则代表此时在进行主从关系选举,且该报文不会携带LSA头部信息。
- M位
- 代表后续是否还存在别的DBD报文。
- 该标记位置为1,则代表此时后续还有其他DBD报文。
- MS位
- 当该标记位置为1,则代表此时发送该报文的接口为主设备。
- 在主从关系选举完成之前,所有DBD报文的MS位均为1。
- I位
-
DD序列号
- 用于确保DD报文在传输过程中的有序性和可靠性。DD报文的序列号在DD报文交互过程中逐次加一。
- 只有主设备才可以规定DD序列号内容。
- 如果从设备发送完数据,而主设备没有发送完毕。从设备也需要回复一个空的DD报文进行确认。
- 如果主设备发送完毕,从设备没有发送完毕。主设备需要发送空的DD报文,目的是给从设备提供DD序列号使用。
- 隐性确认—从设备必须根据主设备发送报文中的序列号来发送自己的DD报文。
-
LSA的头部
- 本地所有LSDB中的LSA的摘要信息
LSR包
链路状态类型、链路状态ID、通告路由器表示一组,后面每多一条LSA信息,就多一组
LSA三元组,可以通过这三个参数唯一的标识一条LSA信息。
LSU包
LSA个数:告知对方,我发送的LSA个数,让对方对比是否发全
LSAck包
LSAck报文的目的—显性确认机制。(告知对方消息以收到)
LSAck报文大小计算:24 + 20*n (24:报文头部的大小 20:一个LSA头部的大小 n:LSA头部的数量)
OSPF的接口网络类型
OSPF的接口在某种网络类型下的工作方式。
网络类型 | OSPF接口的工作方式 |
---|---|
BMA | Broadcast;可以建立多个邻居关系。需要进行DR选举。hello 10S;dead 40S。 |
P2P | P2P;只能建立一个邻居关系,不需要进行DR选举。Hello 10S;dead 40S。(串线cost:48) |
环回接口(虚拟接口) | P2P,华为设备定义为P2P类型,而思科定义为loopback类型。环回接口默认学习32位主机路由。 |
P2MP;可以建立多个邻居关系,不需要进行DR选举;hello 30S,dead 120S。 | |
NBMA(帧中继) | NBMA,可以建立多个邻居关系,需要DR选举;hello 30S,dead 120S。无法自动建立邻居关系。 |
Vlink;hello 10S,dead 40S。不需要DR选举。以单播形式发送hello报文。 |
Vlink单播形式,主要是因为组播224.0.0.5的TTL为1,只能直连发送,而Vlink中间可能有多个设备。
Broadcast:OSPF的接口网络类型(区分网络类型BMA是在所有网络类型中的定义,Broadcast是在OSPF环境下的定义)
Poll--->轮询时间间隔在NBMA网络上,当邻居失效后,路由器将按照设定好的轮询时间间隔定期发送hello报文。以检测邻居是否上线。该时间在修改时最少为hello时间的四倍(在NBMA网络中,hello时间30s,死亡时间120s)。Retransmit--->邻居路由器重传LSA的间隔时间(可以理解为RTO:超时重传时间)一般为5s,因为有可能是串线和网络问题,使其未接收到LSAck报文在LSDB中看LSA,有一个属性是Age:LSA的老化时间,一般为3600s,两倍周期链路刷新时间,以防第一次刷新丢了(OSPF中有触发更新和周期链路刷新30min = 1800s)
Transmit Delay--->LSA延迟时间该字段是针对LSA设置的,因为OSPF网络需要保证全网的LSDB数据库相同,而LSDB数据库中的每一个LSA是具备一个老化时间参数的,该参数也需要统一。而LSA在链路中传递时,老化时间不会改变,导致最终数据不统一。
BMA类型中,Hello、LSU、LSAck三种报文以组播形式通告,而其他报文以单播形式通告。
P2P类型中,所有报文使用组播形式发送。
所有通过OSPF学习到的环回接口的路由,掩码信息均为32位主机路由。—>因为环回接口是一个模拟的接口,实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用IP地址,故而使用32位掩码来直接标识。----->避免了环路或者路由黑洞的产生
在OSPF中,环回接口的开销值恒定为0。
在条件匹配中,会存在一个waiting计时器,该计时器等于该接口的死亡时间,当该时间超时,则代表DR选举失败,此时接口认为自己为DR设备,并且进入exstart状态。
[r3-LoopBack0]ospf network-type broadcast ----修改OSPF接口的网络类型参数为BMA
中心:
[r7]interface Tunnel0/0/0
[r7-Tunnel0/0/0]ip address 192.168.4.7 24
[r7-Tunnel0/0/0]tunnel-protocol gre p2mp
[r7-Tunnel0/0/0]source 107.0.0.7分支:
[r8]interface Tunnel0/0/0
[r8-Tunnel0/0/0]ip address 192.168.4.8 255.255.255.0
[r8-Tunnel0/0/0]tunnel-protocol gre p2mp
[r8-Tunnel0/0/0]source GigabitEthernet0/0/0
[r8-Tunnel0/0/0]nhrp entry 192.168.4.7 107.0.0.7 register[r7-Tunnel0/0/0]nhrp entry multicast dynamic 开启伪广播
华为将tunnel接口的传输速率定义为64Kbps。这是因为华为想人为的将tunnel接口的开销值改大,从而让OSPF的选路尽量避开tunnel接口,而走其他接口。因为隧道接口会进行封装和解封装操作,导致资源消耗增加,数据转发效率降低。
hub节点无法和spoke节点建立邻居关系,因为hub节点无法发送OSPF报文,原因在于在MGRE环境下,不允许组播行为出现,且hub节点发送的是单播报文,而hub节点的nhrp映射表中存在多个映射关系,无法选择,故数据报文无法发送----->在hub节点开启伪广播功能,用单播实现组播行为。
hub节点的tunnel接口此时在OSPF的工作模式为P2P,故只能存在一个邻居,而导致其他spoke节点无法与hub节点建立邻居关系。---->将hub节点的接口网络类型进行修改。
DR选举失败指的是Waiting计时器超时。而条件匹配失败,指的是建立邻居的双方没有任何一方是DR或BDR的身份。
hub节点此时只能与一个spoke节点建立邻接关系,其他节点处于邻居关系,原因在于此时的所有spoke节点都不需要进行DR选举,而hub节点需要进行选举,最终导致选举失败。---->所有节点的接口网络类型均进行修改。
在Hub-Spoke架构中,只有中心节点可以连接每一个分支,而如果DR角色选举在spoke节点,就会导致LSA信息学习和分发不完整,导致全网路由学习缺失。---->干涉DR选举,将DR的位置固定在hub节点。让spoke节点放弃选举。(不要将hub节点router id改大,因为如果hub故障重启,spoke节点间会重新选举出DR,hub重启后因为不抢占模式,会出现问题)
扩展:
hub and spoke 架构 延伸 -->层次架构
full-mesh架构 —> 全连接网络(两两之间都存在连接,也是常说的网状拓扑,每一个站点都是中心)
但是拓扑指的是物理环境 架构指的是广域网虚拟架构
还有部分全连接网络,有些走的是中心节点
P2MP不需要进行条件匹配(DR和BDR的选举)
P2MP环境下,OSPF会主动学习邻居设备接口的IP地址,且自动生成该IP地址所对应的主机路由信息。
OSPF接口的网络类型修改,是全局操作,所有设备均需要修改为相同类型。
在P2MP环境中,hello报文组播发送,其他报文单播发送。
帧中继:进行的是标签交换(交换机是包交换)
在NBMA环境中,所有的OSPF数据报文均以单播形式发送。该环境中不允许组播或广播行为,故需要给每一台运行OSPF协议的设备手工指定其邻居IP地址,在OSPF进程中通过Peer IP命令,双方均需要配置。
OSPF不规则区域划分
区域划分
- 非骨干与骨干区域直接相连
- 骨干区域唯一
限制规则:
- 非骨干区域之间不允许直接相互发布区域间路由信息
- OSPF区域水平分割:从非骨干区域收到的路由信息,ABR设备能接收到不能使用(从某区域传出的路由,不能回归到某区域)
不规则区域:
- 远离骨干区域的非骨干
- 不连续的骨干区域
由于网络升级、合并、割接等操作;或者因为网络单点故障原因,导致网络出现不规则区域划分,从而导致网络出现数据通讯障碍问题。
最根本的解决方案:修改OSPF规划和配置,使得整个OSPF域满足区域划分要求。
解决方案
第一种解决方式,使用tunnel隧道
在R2和R3之间构建一个GRE隧道,将该隧道宣告进骨干区域,实现将R3设备变为ABR设备。
使用该方式的问题:
- 可以产生选路不佳。
- 会造成重复更新
- 因为虚拟链路的存在,R2和R3之间需要建立邻居。导致在维护邻居时使用的hello报文消耗中间区域资源。
第二种解决方案,虚链路—Vlink
思路:使用一个合法的ABR设备为伪ABR设备进行授权,授予其可以执行ABR功能的权限。
[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3
[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
注意:需要在穿越的区域中进行配置,并且配置的是RID值,而非邻居IP地址。
虚链路的配置条件:只能穿越一个区域。原因在于配置时使用的时RID,而RID值只能通过TOPO信息寻找,而跨区域时无法找到相应RID值,故数据无法传输。
Vlink被视作为骨干区域的一段延伸(Vlink永远属于Area 0)
使用该种方式的问题:
- 虚链路只能穿越一个区域。
- 虚链路的两端节点需要通过hello报文进行维护,导致需要周期性发送数据,从而消耗被穿越区域的资源。
Vlink不能在骨干区域进行配置。
Vlink不仅仅应用在解决不规则区域,还可以修复一些次优路径或者骨干区域不健壮问题。Vlink还可以解决没有骨干区域的场景(例:四台路由,之间分别是区域1、2、3,可以在区域2内两台路由加一个Vlink)。
当Vlink两端节点选择不当时,可能会引发环路问题。
骨干链路单点故障(如果R1与R2之间的物理链路断开,会变成两个骨干区域)
可以在R3与R4之间建立Vlink,就会变成一个骨干区域
有影响的是:
如果不在R3与R4之间建立Vlink,R4向13.0.0.3发送信息会走R2-R1-R3,但建立了Vlink,会走34.0.0.3
可以用[r4]tracert 13.0,0,3 —路径跟踪 来查看
Vlink环路问题
如果ping 5.5.5.5 会失败,因为,R1-R2-R3之间会形成环路,例:从R1去Ping5.5.5.5,R1的下一跳为R2,R2的下一跳为R3,R3的下一跳为R1,原因是,建立Vlink时,R4将R5的路由信息依据Vlink走R3发送给R2,其中经过R3时,R3是ABR设备,看不是骨干区域发来的信息就丢弃,不学习,R2因为建立了Vlink,所以学习后将路由信息发送给R1和R3,R3再次检查发现不是骨干区域的信息,再次丢弃,最后R1接收后转发给R3,R3检查后发现是骨干区域的信息,学习下来。
解决方法:
不在R4与R2之间配置Vlink,在R4与R3之间配置Vlink,路径就是R5-R4-R1-R2。
OSPF是一个无环的路由协议,指的是通过SPF算法计算出来的路由无环,即在区域内部无环,区域间可能会有环路
环路:如果R2做了汇总(只有ABR设备才可以汇总拓扑明细),且汇总结果为10.0.0.0/8。将该汇总路由发送给Area 1,而R4设备从Area 1接收该汇总路由时,仅接收不使用(OSPF区域水平分割原理)。但是R4会接收通过Vlink链路传递来的Area 0区域的所有拓扑信息,从而生成路由信息。为了减少Area 2区域的路由信息,故R4也需要进行汇总操作,汇总结果为10.1.0.0/16。----->R2和R4汇总的路由均传递给R3,而因为最大掩码匹配规则,R3选择R4传递的路由,而R4真实数据传递的吓一跳为R3,导致R4<–>R3环路产生。
解决方案:OSPF规定,vlink所在的非骨干区域,不能传递聚合路由。也就是说,ABR设备不能向配置了Vlink链路的区域传递聚合路由信息。
第三种解决方式,多进程双向重发布----->网络中最常用的方式。
将R3设备运行在不同的路由区域,这种设备会被称为是ASBR设备。
重发布是在运行了不同协议或不同进程的边界设备(ASBR)上,将一种协议按照另一种协议的规则发布出去。
[r3-ospf-1-area-0.0.0.2]undo network 34.0.0.3 0.0.0.0
[r3-ospf-1]undo area 2
[r3]ospf 100 router-id 3.3.3.3
[r3-ospf-100]area 2 //也可以区域0,任意都可以
[r3-ospf-100-area-0.0.0.2]network 34.0.0.3 0.0.0.0
[r3-ospf-1]import-route ospf 100 ----将通过OSPF 100学习到的路由以及本地发布到OSPF 100的路由信息重新引入到OSPF 1当中
[r3-ospf-100]import-route ospf 1
display ip routing-table protocol ospf 查看
Proto协议字段: 0_ASE:表示域外路由信息 Pre:150(华为设定的)
协议标志为O_ASE代表该条路由信息时OSPF的域外路由信息,其优先级被设定为150。
该解决方式,会使全网设备正常学习所有路由信息,并且不存在选路不佳以及资源消耗问题。
多进程一般用于网络隔离使用。
OSPF的LSA详解
LSA头部信息
[r2]display ospf lsdb router 1.1.1.1----查看OSPF某一条LSA的详细信息,类型以及LS ID参数。
- 链路状态老化时间
- 指一条LSA的老化时间,即存在了多长时间。
- 当一条LSA被始发路由器产生时,该参数值被设定为0之后,随着该LSA在网络中被洪泛,老化时间逐渐累加。
- 当一条LSA的老化时间为3600S时,则判断该条LSA失效,将被删除。(不是始发路由器的唯一删除方法)
- LSA的老化时间一般应该小于1800S,因为OSPF存在周期链路刷新机制。周期链路刷新机制是只有始发路由器可以执行的,而沿途其余设备执行的是触发更新机制。
- 在OSPF网络中,只有始发路由器可以修改或删除LSA信息。
- OSPF存在周期链路刷新机制(某一个信息到时间只刷新一个,并且只有始发路由器可以通告),rip是周期更新机制(到时间全部一起更新,包括本地和收到的)
- 组步调计时器(思科启用):有LSA到1800s,等待240s,到时间后,老化时间在1800s-2040s的统一发送
- 可选项:与之前Hello包内相同
- 链路状态类型
- 指的是本条LSA的类型属性。
- 链路状态ID
- 根据链路状态类型的不同,该参数的含义不同。
- 通告路由器
- 产生该条LSA的路由器的Router-ID。
- 校验和
- 除了验证LSA的完整性,还会参与到LSA的新旧关系对比。
- 链路状态序列号
- 代表有序性,每发送一条LSA,则序号加1。也是用于判断LSA新旧关系的一种。
- 初始序列号:0x80000001 (数字8代表负数,7代表正数)
- 截止序列号:0x7FFFFFFF (负 -->0x00000000 -->正)
- 序列号由负数开始增长,其中数值越大越优。
- OSPF序列号刷新方式
- 当一条LSA序列号为0x7FFFFFFF时,始发路由器会将其老化时间设定为3600S,其他设备收到该LSA后,因为序列号最大,会无条件接受,此时又因为老化时间参数,会删除该条LSA。
- 而此时始发路由器会重新发送序列号为0x80000001的全新LSA信息,实现序列号的刷新机制。
判断LSA的新旧关系
- 拥有更高序列号的LSA被认为更新。
- 如果序列号相同,则拥有较大校验和的LSA被认为更新。
- 如果序列号与校验和均相同,则对比老化时间。
- 如果某条LSA的老化时间为3600S,则无条件选择该条LSA。
- 如果没有LSA老化时间为3600S,则对比两条LSA的老化时间差值,如果差值大于15min,则认为老化时间较小的为更新。如果差值小于15min,则两条LSA被认为相同。
链路类型 | LS ID | 通告者 | 传播范围 | 携带信息 |
---|---|---|---|---|
Type-1(Router) | 通告者的RID | 区域内所有运行OSPF协议的路由器的RID | 设备所在的单区域 | 本地接口直连拓扑信息 |
Type-2(Network) | DR接口的IP地址 | 每一个MA网络中DR所在的路由器的RID | 单区域 | 对单个MA网络拓扑的补充信息 |
Type-3(summary) | 域间路由信息的网络地址 | ABR设备,在通过下一个ABR设备时会被修改为新的ABR设备的RID | ABR设备相邻的单区域 | 域间路由信息 |
Type-5(ase) | 域外路由信息的网络地址 | ASBR | 整个OSPF网络 | 域外路由信息 |
Type-4(asbr) | ASBR的RID | 与ASBR同区域的ABR设备,在通过下一个ABR设备时会被修改为新的ABR设备的RID | 除去ASBR所在区域的所有单区域 | ASBR的位置信息 |
Type-7(nssa) | 域外路由信息的网络地址 | ASBR,离开NSSA区域后会被转换为5类LSA | NSSA区域 | 域外路由信息 |
Type-1(Router)
Tpye名称为Router即为一类LSA信息。一类LSA信息是所有设备都会发送的LSA,且每一个设备单区域只会发送一条LSA。
路由器会为每个区域单独产生一条一类LSA,用以描述连接在该区域的接口参数信息。
第一行是总数结构,之后是一组一组的
- 标记位
- V----代表发送该LSA的路由器是Vlink的一段端点。
- E----代表发送该LSA的路由器是ASBR
- B----代表发送该LSA的路由器是边界路由器。(不是特指ABR,ABR是必须连接骨干,边界路由器是连接多个区域即可)
- 链路数量
- 特指该LSA中Link的数量。
- 每一个link均包含链路ID、链路数据、链路类型、度量值。路由器使用一条Link或者多条link来共同描述一个接口信息。
- 链路类型---->链路ID与链路数据随着链路类型的改变而改变。(表单须背)
用于根据LSA信息画出具体拓扑图,然后根据拓扑图计算具体路由
Type-2(Network)
对于接入MA网络的OSPF设备而言,仅依靠一类LSA是无法正常补全网络拓扑结构,其中缺少两个信息,分别是该MA网络的掩码信息以及有多少个节点连接在这个MA网络。---->使用二类LSA进行补充。
二类LSA必须由DR设备产生。
OSPF中,拓扑信息全部由一类以及二类LSA进行完善,且每个LSA仅在各自产生区域传递。
Type-3(summary)
三类LSA的通告者都是该区域的ABR设备,且每一条路由信息使用一条独立的LSA进行描述。
三类LSA中携带“网络地址”“网络掩码”“开销值”三个参数。
三类LSA中的开销值等于该LSA通告者到达目的地的开销值。本地路由表中的路由项开销值等于三类LSA中的开销值加上通过一二类LSA计算出到达ABR设备的开销值之和。
当接收者收到一条三类LSA后,首先会根据本地的一二类LSA进行验算,验算是否可以到达这条三类LSA的通告者,如果可以正常到达,则接收该LSA并生成相应路由信息;否则丢弃该LSA信息。
三类LSA在跨区域传递时,需要进行通告者的转换,实际上是重新编写了一条全新的LSA内容。
Type-5(ase)
五类LSA主要传递域外路由信息,该LSA被ASBR产生,并且传播到整个OSPF网络(除了一些特殊区域)。
-
开销值
-
五类LSA中的开销值并不等于ASBR到达目标网段的开销。原因在于外部路由的开销值算法与OSPF内部的开销值算法不同,该数值对于OSPF而言,没有意义。---->故,五类LSA在引入到OSPF网络时,会使用一个常数来标识LSA中的开销,该常数值一般称为种子度量值。
-
种子度量值默认为1,该参数可以在重发布过程中进行修改。(只能在始发路由器改)
-
[r4-ospf-1]import-route rip 1 cost 10 ----将种子度量值修改为10
-
-
E位---->度量值类型
-
Type-1
- 如果E标记位为0。
- 所有设备到达域外目标网段的开销值====本地到达发出这条LSA的ASBR的开销+种子度量值
-
Type-2
- E标记位为1。默认值。
- 域内所有到达目标网段的开销值====种子度量值
-
在重发布时可以进行修改
-
[r4-ospf-1]import-route rip 1 type 1 ----修改开销值类型
-
-
FA—转发地址
-
可以把转发地址就理解为重定向信息。
-
当FA==0.0.0.0时,则到达该外部网段的流量会被发往引入该外部路由的ASBR。
-
当FA不等于0.0.0.0时,则到达该外部网段的流量会被发往FA字段。
-
当同时满足如下四个条件时,FA字段可以被ASBR设置为其他参数数值。
- 引入外部路由的ASBR在其连接外部网络的接口上激活了OSPF协议。
- 该接口没有被配置为静默接口(ospf不接不发,RIP只接不发)。
- 该接口的网络类型为Broadcast或NBMA
- 该接口的IP地址属于OSPF协议配置的network命令范围内。
-
外部路由标记(Tag,应用在路由策略技术上)
-
该参数用于给OSPF域外路由信息打上标签,从而对路由信息进行分组。根据组别使用路由策略对不同组播进行不同操作。
-
在华为路由器上,缺省时,所有路由信息标记为1。
-
在重发布时可以进行修改
-
[r4-ospf-1]import-route rip 1 tag 84512313
-
-
-
Type-4(asbr)
所有传递路由信息的LSA都需要进行验算过程,寻找该LSA的通告者。而5类LSA是全区域传递,对于不与ASBR处于相同区域的设备而言,无法通过1类和2类LSA完成验算过程,需要引入额外的LSA信息----Type-4 LSA。
四类LSA仅在描述如何到达ASBR。---->实际上是一条到达ASBR的路由信息。
四类LSA与三类LSA较为相似,但是不同,因为四类LSA通告的不是目标网段,而是ASBR的RID。
Tos 0 metric(度量值):1 代表4类LSA的通告者到达ASBR的开销值(R3到R4)
路由撤销
- 1类LSA撤销
- 通过更新的方式进行撤销,即发送一条全新LSA,序列号+1,校验和不变,老化时间=0(新的LSA里面就不包含不需要的Link)
- 2类LSA撤销
- MA网络中还存在两个以上节点,此时DR发送序列号+1,老化时间=0的LSA进行更新。
- MA网络中没有任何节点存活,此时DR发送序列号不变,老化时间=3600S的LSA清除全网信息。(发送给整个区域中没断的其他路由器)
- 3类LSA撤销
- 序列号不变,校验和不变,老化时间=3600S进行路由撤销(要比3次,下面原因)。
- 因为三类LSA的数量在网络中占据大量信息,而如果采用序列号增加,则代表始发路由器重新构造了一条LSA信息,该方式会极大的消耗设备资源。而对原本LSA信息进行修改的方式,可以减少始发路由器的资源消耗。
- 5/7类LSA撤销
- 序列号不变,校验和不变,老化时间=3600S进行路由撤销。
- 1、2类LSA撤销是更新,因为一个LSA包含很多信息,3/5/7类LSA撤销是老化时间为3600s,因为一个LSA只有一条路由信息
OSPF优化
OSPF的优化主要目的是为了减少LSA的更新量。
- 路由汇总-----可以减少骨干区域的LSA数量
- 特殊区域-----可以减少非骨干区域的LSA数量
OSPF路由汇总
域间路由汇总-----在ABR设备上进行操作
[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设备上对区域之间传递的三类LSA进行汇总,并且其影响的是除了明细路由所在区域的其他区域的路由表信息。
注意:域间路由汇总只能汇总ABR设备自身通过1类、2类LSA信息学习到的路由信息。
当执行了路由汇总操作后,站点内这条汇总路由所涵盖的所有明细路由当中,只要有一条明细路由有效,则该汇总路由有效。当所有明细路由均失效后,这条汇总路由才会失效。
域外路由汇总
域外路由汇总实质上是在ASBR上,通过重发布时,将导入进来的五类/七类LSA进行修改。
[r1-ospf-1]asbr-summary 10.1.0.0 255.255.0.0
五类LSA汇总后的开销值计算方法:
- Type-1
- 汇总后的五类LSA中的开销值等于所有明细路由开销值中最大值
- Type-2
- 汇总后的五类LSA中的开销值等于所有明细路由开销值最大值+1
OSPF特殊区域
- 成为第一类特殊区域的条件------末梢区域
- 不能是骨干区域
- 不能存在Vlink
- 不能存在ASBR
- 成为第二类特殊区域的条件
- 不能是骨干区域
- 不能存在Vlink
- 必须存在ASBR
第一类特殊区域
末梢区域----Stub Area
当一个区域称为末梢区域后,则该区域不能再学习4类和5类LSA----->ABR设备不会在给该区域转发四类和五类LSA。该区域将会拒绝学习域外路由信息,但是其依旧具有访问域外路由的需求,所以,当称为stub区域后,该区域会自动产生一条指向骨干区域的3类缺省路由。---->由ABR设备进行下发路由信息。
[r5-ospf-1-area-0.0.0.2]stub
[r1-ospf-1-area-0.0.0.2]stub
特殊区域的配置,是该区域中所有设备都需要做的。—不然会影响邻居关系的建立
完全末梢区域----Totally Stub Area
在Stub区域的基础上,进一步拒绝三类LSA传播。
[r1-ospf-1-area-0.0.0.2]stub no-summary ---仅在ABR设备上配置,是末梢区域配置完再加的配置
第二类特殊区域
非完全末梢区域----NSSA
该区域拒绝学习四类和五类LSA信息。但是,该区域还需要将后面的域外路由信息导入,因此,使用七类LSA的形式将域外路由信息传入OSPF网络。7类LSA在离开NSSA区域后,需要转换为5类LSA在OSPF网络中传播。
该区域也会自主产生一条指向骨干区域的缺省LSA信息,该LSA信息为7类。
[r5-ospf-1-area-0.0.0.2]nssa
[r1-ospf-1-area-0.0.0.2]nssa
NSSA该类型即为七类LSA类型,七类LSA的报文格式与五类LSA一致。
路由表中七类缺省Proto为O_NSSA(表示域外七类产生),Pre为150.
Options字段在五类LSA中,显示的是E位,代表允许该五类LSA在网络中传播。
在七类LSA中,N位代表允许处理七类LSA。P代表支持7转5操作(P不属于Options字段的8个标记位,是N位附带出来的)。
FA地址是用来应对选路不佳的情况,如果存在选路不佳的情况,则通告者会将最佳下一跳放入FA字段,接收者看到转发地址中存在数据,则将不按照算法来计算下一跳,而直接使用FA作为下一跳。
- 在五类LSA中,FA字段一般为0.0.0.0。
- 而在七类LSA中,在不存在选路不佳的情况下,一般使用通告者ASBR设备的环回地址作为转发地址。
- 如果存在多个环回地址,则使用最先宣告的地址作为FA地址(华为最先,思科最后)。
- 如果没有环回地址,则使用物理接口地址作为FA地址。
完全的非完全末梢区域—Totally NSSA
该区域在NSSA区域的基础上,进一步拒绝了3类LSA的产生,并且自动产生一条3类缺省LSA。
[r1-ospf-1-area-0.0.0.2]nssa no-summary ---仅在ABR上配置
域内>域间>域外
在Totally NSSA区域中,会看到两条描述缺省路由的LSA,一条七类,一条三类。这两条LSA共存。
NSSA环路
在华三中,RTC作为ASBR有一条缺省路由指向外部ISP,所以会给内部大的网络下发一条缺省(OSPF缺省路由的下发就类似于重发布逻辑),又因为RTB处于完全的NSSA区域,所以RTC向RTB传输一条七类LSA的缺省路由信息,RTB又要传给RTA,因为处于完全的NSSA区域,所以RTA作为ABR就还有一条三类缺省LSA指向区域0,然后将3类缺省往右下发,RTB就有两条缺省,一条是三类缺省指向RTA,一条是七类缺省指向RTC,他会使用三类缺省,所以他会认为去往ISP是去RTA,而RTA身上也有两条缺省,一条七类一条三类,因为三类缺省是由RTA本身明细产生的,所以RTA本身不会使用缺省,使用明细(在ABR视角里就没有三类缺省),所以RTA会使用七类缺省,所以会缺省指向RTB,环路出现。
在华为中,在NSSA区域中,对于第一台发布七类缺省路由的设备(RTC)而言,会认为自己身上已经存在一条去往外部区域的路由信息,并且本地作为通告者,那么当它收到其他设备发送来的七类缺省LSA时,对该LSA仅接收不使用。-----华为通告该逻辑,实现防环机制。---->保留了NSSA区域由ABR产生的七类LSA缺省路由。