一、OSPF基础
1、技术背景(RIP中存在的问题)
RIP中存在最大跳数为15的限制,不能适应大规模组网
周期性发送全部路由信息,占用大量的带宽资源
路由收敛速度慢
以跳数作为度量值
存在路由环路可能性
每隔30秒更新
2、OSPF协议特点
没有跳数限制,适合大规模组网
使用组播更新变化的路由和网络信息
路由收敛快
以COST作为度量值
采用SPF算法有效避免环路
每隔30分钟更新
在互联网上大量使用,是运用最广泛的路由协议
注意:OSPF传递的是拓扑信息和路由信息,RIP传递的是路由表
3、OSPF三张表
邻居表:记录邻居状态和关系
拓扑表:链路状态数据库(LSDB)
OSPF路由表:记录由SPF算法计算的路由,存放在OSPF路由表中
4、OSPF数据包(可抓包)
OSPF报文直接封装在IP报文中,协议号89
头部数据包内容:
版本(Version):对于OSPFv2,该字段值恒为2。
类型(Type):该OSPF报文的类型。该字段的值与报文类型的对应关系是:1-Hello;2-DD;3-LSR;4-LSU;5-LSAck。
报文长度(Packet Length):整个OSPF 报文的长度(字节数)。
路由器ID (Router Identification):路由器的OSPF Router-ID。
区域ID (Area Identification):该报文所属的区域ID,这是一个32bit 的数值。
校验和(Checksum):用于校验报文有效性的字段。
认证类型(Authentication Type):指示该报文使用的认证类型。
认证数据(Authentication Data):用于报文认证的内容。
(1)hello:hello包携带自己的router ID、被发现的邻居标识,用来周期保活的,发现,建立邻居关系。
网络掩码(Network Mask):一旦路由器的某个接口激活了OSPF,该接口即开始发送Hello报文,该字段填充的是该接口的网络掩码。两台OSPF 路由器如果通过以太网接口直连,那么双方的直连接口必须配置相同的网络掩码,否则影响邻居关系建立。
Hello间隔(Hello Interval):接口周期性发送Hello报文的时间间隔(单位为s)。两台直连路由器要建立OSPF邻居关系,需确保接口的Hello Interval相同,否则邻居关系无法正常建立。
可选项(Options):该字段一共8bit,每个比特位都用于指示该路由器的某个特定的OSPF 特性。Options字段中的某些比特位会被检查,这有可能会直接影响到OSPF邻接关系的建立。(特殊区域的标记)
路由器优先级(Router Priority):路由器优先级,范围:0-255,默认是1,值越大,优先级越高,也叫DR优先级,该字段用于DR、BDR 的选举
路由器失效时间(Router Dead Interval):在邻居路由器被视为无效前,需等待收到对方Hello报文的时间(单位为s)。两台直连路由器要建立OSPF 邻居关系,需确保双方直连接口的Router Dead Interval相同,否则邻居关系无法正常建立。缺省情况下,OSPF路由器接口的Router Dead Interval为该接口的Hello Interval的4倍。
指定路由器(Designated Router):网络中DR的接口IP地址。如果该字段值为0.0.0.0,则表示没有DR,或者DR尚未选举出来。
备份指定路由器(Backup Designated Router):网络中 BDR的接口IP地址。如果该字段值为0.0.0.0,则表示网络中没有BDR,或者BDR尚未选举出来。
邻居(Neighbor)。在直连链路上发现的有效邻居,此处填充的是邻居的Router-iD,如果发现了多个邻居,则包含多个邻居字段。
(2)DBD(数据库描述报文):仅包含LSA摘要
接口最大传输单元(Interface Maximum Transmission Unit):接口的MTU。
可选项(Options):路由器支持的OSPF可选项。
DBD报文置位符:
I:init位,I=1,这是发给对方的第一个DBD报文,是空报文
M:more位,M=1表示后续还有DBD报文
MS:master位,MS=1,表示本端为主
DBD序列号(DD Sequence Number): DBD报文的序列号,在DD报文交互的过程中,DD序列号被逐次加1,用于确保DD报文传输的有序和可靠性。值得注意的是,DD序列号必须是由Master路由器来决定的,而Slave路由器只能使用Master路由器发送的DD序列号来发送自己的DD报文。主从角色根据RID大小决定,大为主。
LSA头部(LSA Header):当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在此处。一个DD报文可能包含一条或多条LSA的头部。
(3)LSR:请求自己没有的或则比自己更新的链路状态详细信息
链路状态类型,链路状态ID,通告路由器 ---- “LSA三元组” --- 通过着三个参数可以唯一的标识出一条LSA
(4)LSU:链路状态更新信息
一个LSU报文可以包含多个LSA
当路由器感知到网络发生变化时,也可以触发LSU报文的泛洪,以便将该变化通知给网络中的其他OSPF 路由器。
在MA网络中,非 DR、BDR路由器向224.0.0.6这个组播地址发送LSU报文,而DR及 BDR会侦听这个组播地址,DR在接收LSU报文后向224.0.0.5发送LSU报文,从而将更新信息泛洪到整个OSPF区域,所有的OSPF 路由器都会侦听224.0.0.5这个组播地址。
总结:
224.0.0.5所有运行OSPF的接口会监听
224.0.0.6所有DR\BDR的接口会监听
(5)LSAck:对LSU的确认
报文中包含着路由器所确认的LSA的头部(每个LSA头部的长度为20byte)
5、OSPF工作过程
邻居:通过HELLO相互认识----2-way
邻接:邻居关系建立好后,进行已系列报文交互,最终形成完全邻接关系--full
(1)确认可达性,建立邻居
router ID :标明的是路由器身份
手工配置:IPV4地址格式
自动选举:
环回口:IP地址大的优先
物理口:IP地址大的优先
2-way前,确认DR/BDR
选举原因:广播网络中使路由信息交换更加高速有序,可以降低需要维护的邻接关系数量
选举范围:每个网段都需要选出一个DR和BDR(0-255)
选举规则:1.优先级大的优先,默认优先级是1;2.router-id大的优先
DR/BDR的选举没有抢占性
关系状态:DRother与DR建立邻接关系;
DRother与BDR建立邻接关系;
DR /BDR建立邻接关系;
DRother之间保持邻居关系
(2)摘要同步,开始建立邻接关系
1、向邻居发送DBD报文,此时报文中包含了LSA的摘要信息;
2、收到DBD后,与本地LSDB对比,向对方发送LSR,请求对方将自己没有的或者比自己更新的LSA的完整信息发过来;
3、将对方需要的LSA的完整信息打包成一条LSU,发给对方;
4、对方收到LSU后,回复LSAck报文,确认自己已收到LSU;
邻接建立过程:
(3)完整信息同步,完全邻接关系建立
完全邻接关系建立,LSDB表与OSPF路由表形成
6、OSPF的状态机
(1)down:关闭状态(稳定状态),这种情况处于手动指定邻居的情况下,发送hello包之后进入下一个状态
(2)INIT:初始化状态,收到对方的hello报文(第二个HELLO),但没有收到对方的hello确认报文(第三个HELLO包)
(3)Attempt:一般不会出现,只出现在NBMA网络中,发出hello,但收不到对方的hello包
(4)2-way(稳定状态):双方互相发现,邻居状态稳定,并确认了DR/BDR的角色;
当选举完毕后,就算出现一台优先级更高的路由器,也不会替换成新的DR\BDR;
需要原DR\BDR失效,或重置OSPF进程才会成为新的DR\BDR;
2-way的前提:
Router-id无冲突,修改router-id需要重置ospf进程使生效;
掩码长度一致(MA网络中);
区域ID一致;
验证密码一致;
hello-time一致;
dead-time一致;
特殊区域类型一致;
(5)Exstart:交换开始状态;发送第一个DD报文,但不发送LSA摘要,仅用于确定LSDB协商的主从,ROUTER-ID大的成为master
(6)Exchange:交换状态;发送后续DD报文,用于通告LSDB摘要
(7)Loading:读取状态,进行LSA的请求、加入和确认
(8)Full:邻接状态(稳定状态),两端同步LSDB;
FULL的前提:两端MTU一致,否则可能卡在EXSTART\Exchange状态
能够计算路由的前提:两端网络类型一致,否则邻居状态full,但无法学习路由
7、LSDB的更新
二、OSPF的区域划分
1、区域产生背景
OSPF路由器在同一个区域中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。
如果OSPF域仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸多问题。
2、分区好处
减少LSA泛洪范围;
减小路由表规模;
提高网络扩展性,有利于组建大规模的网络;
3、区域类型
骨干区域:
非骨干区域:
特殊区域:减少邻居关系
邻居关系过多缺点:
(1)大量产生hello包,消耗CPU性能
(2)产生重复路由通告,消耗CPU性能
(3)任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源
多区互连原则:
非骨干区域与非骨干区域不能直接相连;
所有非骨干区域必须与骨干区域相连;
此设计是为防止区域间环路;
4、OSPF的路由器类型
区域内路由器(IR):所有接口在同一区域
边界路由器(BR):连接多个区域的路由器
区域边界路由器(ABR):连接骨干区域和非骨干区域
自治系统边界路由器(ASBR):连接外部自治系统并引入外部路由
一、LSA的头部
LSA是OSPF的一个核心内容,如果没有LSA,OSPF是无法描述网络的拓扑结构及网段信息的,也无法传递路由信息,更加无法正常工作,在OSPFV2中,需要我们掌握的主要有6种。
LSA头部一共20byte,每个字段的含义如下。
链路状态老化时间(Link-State Age):指示该条LSA的老化时间,即它存在了多长时间,单位为秒,
1800s周期归0,触发当下归0
MAX age --- 3600S ------ 当一条LSA的老化时间到达最大老化时间时,将被认定失效,将从本地的LSDB中删除掉。
可选项(Options):每一个比特位都对应了OSPF 所支持的某种特性。 ------ 和hello包中的一样,包含特殊区域标记
链路状态类型(Link-State Type): 指示本条LSA的类型。每种 LSA用于描述OSPF 网络的某个部分,所有的LSA类型都定义了相应的类型编号。
链路状态ID(Link-State ID): LSA的标识。不同的LSA类型,对该字段的定义是不同的。
通告路由器(Advertising Router): 始发路由器, 产生该LSA的路由器的Router-ID
链路状态序列号(Link-Sate Sequence Number)
该LSA的序列号,该字段用于判断LSA的新旧或是否存在重复
链路状态校验和(Link-State Checksum):校验和会参与LSA的新旧比较。当两条LSA三元组相同,并且序列号也相同时,则可以使用校验和比较,和大的认定为新。
长度(Length):一条LSA的总长度
二、6种类型的LSA(课堂演示)
1、type1-LSA:----重要且复杂
(1)定义:router LSA
描述区域内部与路由器直连的链路信息(链路类型、开销值等)
仅在区域内部传输
每台路由器都会产生Type1 LSA
[R1]dis ospf lsdb router 查看Type1 LSA的具体信息
(2)LS ID:发出该LSA的路由器的router-id
(3)Adv Rtr:始发路由器,产生该LSA的路由器的router-id
(4)链路ID:不同的链路类型,对链路ID值的定义是不同的。
(5)链路数据(Link Data):不同的链路类型对链路数据的定义是不同的。
(6)link-type:链路类型,描述该接口的二层类型
transnet:
类型:广播网络或者NBMA
link-id:本网段的DR的IP地址
Date:本路由器在该网段的IP地址
P2P:
类型:ppp
link-id:该网段对端路由器的router-id
Date:本路由器在该网段的与对端路由器相连的接口的IP地址
stubnet(末梢网络):
类型:p2p\环回口
link-id:该网段的网络地址
data:该网段的子网掩码
Virtual(虚链路):
类型:虚链路
link-id:虚链路邻居的router id
data:去往该虚连接邻居的本地接口的IP地址
(7)VEB标志位:
V位(Virtual Link Endpoint Bit):如果该比特位被设置为1,则表示该路由器为Virtual Link的端点。
E位(External Bit):如果E比特位被设置为1,则表示该路由器为ASBR。在Stub区域中,不允许出现E比特位被设置为1的Type-1 LSA,因此Stub区域内不允许出现ASBR。
B位(Border Bit):如果B比特位被设置为1,则表示该路由器为两个区域的边界路由器,字母B意为Border(边界)。
2、type2-LSA:
(1)定义:
network LSA
描述区域内的MA网络(广播网络、NBMA网络)链路的路由及掩码信息
仅在区域内部传输
只有DR才会产生type2_LSA
[R1]dis ospf lsdb network 查看Type2 LSA的具体信息
(2)内容:
LS ID:该网段的DR的IP地址
Adv Rtr:该网段DR的router-id
network mask:该网段DR的IP地址的子网掩码信息
3、type3-LSA:
(1)定义:
Summary LSA(聚合LSA)
在整个OSPF域内,描述其他区域的链路信息
以子网形式传播,类似直接传递路由
只有ABR会产生type3_LSA
[R1]dis ospf lsdb summary 查看Type3 LSA的具体信息
(2)内容:
LS ID:其他区域某个网段的网络地址
Adv Rtv:通告该LSA的ABR的router-id
net mask:该网段的子网掩码
注:3类LSA的传递范围在ABR相邻的单区域中进行,跨区域传递时,需要进行通告者的转换,通告者变了,则将不是同一条LSA
4、type4-LSA:
(1)定义:
Asbr-summary LSA
描述ASBR的信息
只有ABR才会产生TYPE4 LSA
(2)内容:
LS ID:ASBR的router-id
Adv Rtv:通告描述该ASBR的ABR的router-id
[R1]dis ospf lsdb asbr 查看Type4 LSA的具体信息
注:在ASBR本区域的内部路由器,不会产生到达该ASBR的4类LSA
5、type5-LSA:
(1)定义:
AS_extenal LSA,传递域外路由信息
描述AS外部引入的路由信息,会传播到所有区域(特殊区域除外)
只有ASBR才会产生type5_LSA
(2)内容:
LS ID:外部路由的目的网络地址
Adv Rtv:引入该网络路由的ASBR的ABR的router-id
net mask:引入的该目标网段的子网掩码
[R1]dis ospf lsdb ase 查看Type5 LSA的具体信息
6、type7-LSA:
(1)定义:
NSSA LSA
描述在NSSA区域引入的AS外部路由信息
只会出现在NSSA和totolly NASS区域,不能进入area 0
7类LSA生成路由信息的标记位,O_NSSA,优先级150
(2)内容:
LS ID:外部某个网段的网络地址
Adv Rtv:引入该网络路由的ASBR的ABR的router-id
三、OSPF的网络类型
1、定义:
对于不同的二层链路类型的网段,OSPF会生成不同的网络类型
不同的网络类型,DR\BDR选举,LSA细节,协议报文发送形式等会有所不同
2、类型:
(1)NBMA(非广播多点可达网络)
非广播多点可达网,帧中继默认的网络类型
单播发送协议报文(天生不支持广播和组播),需手动指定邻居(麻烦,手工一个个配置邻居麻烦,万一邻居地址变动,又得重新配置)
命令:[r2-ospf-1]peer 192.168.1.1 (邻居IP地址)
需要选举DR\BDR,为了减少LSA的泛洪,减少网络负担
hello-time 是30秒,dead-time 是120秒
(2)P2MP(点到多点网络)
点到多点网络,由其他网络类型手动更改:例如在ospf接口下:ospf network-type 网络类型
模拟组播发送协议报文(帧中继建立子接口模拟组播发报文),需要手动指定邻居;
不选举DR\BDR,因为设备少,所以不选举
hello-time 是10秒,dead-time 是40秒
(3)Broadcast(广播网络)
广播网络,以太网默认的网络类型
组播发送协议报文
需要选举DR\BDR,224.0.0.5是所有运行OSPF的接口会监听,224.0.0.6是所有DR/BDR的接口会监听
hello-time 是30秒,dead-time 是120秒
(4)P2P(点到点网络)
点到点网络,ppp默认网络
组播协议发送报文
不选举DR\BDR,直接形成邻接关系
hello-time 是10秒,dead-time 是40秒