各类LSA的解析(一二三类LSA)

查看LSDB


LSA结构

常见LSA类型


一类LSA

广播型的一类LSA比较复杂,先了解点到点的一类LSA,将实验拓扑修改为点到点的网络类型。

现在在R1上查看LSDB

两条一类的,五条三类的,没有二类的LSA了。

下面的是之前的广播型的网络类型的,少了一条二类的LSA。

少了一条二类的LSA:

广播型网络类型是要选举DR和BDR的,二类的LSA是用来描述DR的信息的。

二类LSA,也叫做 Network LSA(网络链路状态通告)

在广播型多路访问网络(如以太网)中,由指定路由器(DR)负责描述:这个网段上有哪些路由器,以及这个网段本身的网络掩码。

  1. 二类LSA由DR产生,是因为在广播型多路访问网络中,DR被选为该网络的"代表",负责将该复杂网络的拓扑信息(谁连着谁)简化成一个星型结构并通告出去。

  2. P2P链路中没有二类LSA,是因为它的拓扑结构极度简单(只有两个节点),不需要额外的"代表"和"描述"就能被SPF算法理解。

有两个一类LSA,因为区域12里面就两台路由器。

查看骨干区域的R3的LSDB

为一个区域中有几台路由器,就有几个一类的LSA

一类LSA = Router LSA(路由器链路状态通告)

  • 谁产生的: 每台运行OSPF的路由器,为它所在的每个区域单独产生一个一类LSA。

  • 传播范围: 只在本区域内部洪泛,绝不跨区域。

  • 核心作用: 描述这台路由器在某个区域内的所有链路状态信息

一句话:一类LSA就是一台路由器在某个区域里的"自拍照"+"自我介绍信"。

每一个运行OSPF的路由器都会在自己所属的区域产生一个一类LSA。

一台区域边界路由器(ABR)会产生 N个 一类LSA(Router LSA)。这个 N 等于这台路由器所连接的区域的数量(包括骨干区域)。

为什么是N个,而不是1个?

要理解这个,必须回到一类LSA的根本定义:一类LSA是路由器在一个区域内的"自我介绍信"

  • 如果一台路由器只属于一个区域(比如普通内部路由器),它只需要写一封信,介绍自己在这个区域里的情况。

  • 但ABR属于多个区域。它在区域0里有接口,在区域1里也有接口,可能还在区域2里有接口。

问题来了: 它能把所有接口的信息写在同一封信里,然后发到所有区域吗?

绝对不能! 因为一类LSA的传播范围被严格限制在本区域内。区域0的一类LSA绝对不能跑到区域1里去。

所以,ABR的解决方案是:为每一个所属的区域,单独写一封"自我介绍信"

  • 写给区域0的一类LSA:里面只描述ABR在区域0里的接口和链路。

  • 写给区域1的一类LSA:里面只描述ABR在区域1里的接口和链路。

  • 写给区域2的一类LSA:里面只描述ABR在区域2里的接口和链路。

这三封信,分别在各自对应的区域里洪泛,互不干扰。

OSPF三类路由

为什么一类LSA要把"拓扑信息"和"网段信息"塞在同一份LSA里?


一类LSA里到底有什么?

在一类LSA(Router LSA)里,确实包含了两种不同类型的链路信息:

链路类型 具体内容 属于哪类信息
Type 1(P2P) 我连到了谁(邻居Router ID)、我用哪个IP连的、Cost 拓扑信息
Type 2(TransNet) 我连到了哪个广播网(DR的IP)、我用哪个IP连的、Cost 拓扑信息
Type 3(StubNet) 我直接管着哪个网段(网段号+掩码)、进入这个网段的Cost 网段信息

从设计意图看:为什么要放在一起?

核心答案:

因为一台路由器的完整描述,必须同时包含"它在拓扑中的位置"和"它身上挂着的网段"。这两者是同一台路由器的两个不可分割的侧面。

打个比方:

想象你要向别人介绍一个人。你会说两件事:

  1. 这个人在社会关系中的位置(他是谁的儿子、谁的父亲、谁的朋友)------ 这是"拓扑信息"

  2. 这个人拥有什么资产(他有房子、有车子)------ 这是"网段信息"

你不会分开说:"这是张三的社会关系介绍信",另一封是"张三的资产清单"。因为这两者合在一起,才是一个完整的人。

一台路由器也是这样:

  • 拓扑信息告诉别人:我在网络图中连到了谁,我在什么位置

  • 网段信息告诉别人:我直接服务哪些IP网段,你们可以通过我来访问它们

把这两者放在同一封LSA里,是因为它们描述的是同一个实体------这台路由器本身。


从计算逻辑看:为什么要放在一起?

这是更硬核的层面。我们来看看SPF算法是怎么用这些信息的。

步骤1:先用拓扑信息画图

SPF算法首先读取所有一类LSA里的Type 1(P2P)和Type 2(TransNet)链路。这些链路告诉它:

  • 节点A连着节点B

  • 节点A连着广播网C(由DR代表)

有了这些,SPF算法就能画出一张完整的网络拓扑图,并计算出从自己出发到每个节点的最短路径树。

步骤2:再把网段信息挂上去

最短路径树算好后,SPF算法回头去看每个节点的一类LSA里的Type 3(StubNet)链路。它发现:

  • 节点A身上挂着192.168.1.0/24这个网段,Cost=1

  • 节点B身上挂着10.0.0.0/8这个网段,Cost=10

于是,它把这些网段作为"叶子",挂到刚才算好的最短路径树上。

关键点:

如果这两类信息分开放在不同的LSA里,会怎样?

  • SPF算法要先收齐所有"拓扑LSA",画好图

  • 然后还要再收齐所有"网段LSA",一个个去匹配:这个网段是挂在哪个节点上的?

这会产生两个问题:

  1. 匹配困难:你怎么知道192.168.1.0/24是挂在R1身上,而不是R2身上?必须在网段LSA里显式指定"我是R1的网段",这就引入了额外的关联机制,更复杂。

  2. 增加LSA数量:本来一台路由器发1个LSA就够了,现在要发2个(一个拓扑LSA,一个网段LSA),全网LSA数量翻倍,LSDB膨胀。

放在一起,天然解决了关联问题: 因为网段信息就在路由器的"自我介绍信"里,SPF算法在读到这台路由器时,自然就知道它身上挂着哪些网段。

一句话总结:

因为网段信息是附着在路由器上的,就像树叶长在树上。描述一棵树,当然要把"树的枝干"(拓扑)和"树上的叶子"(网段)一起说。分开描述,反而要多费周章去说明"这片叶子是哪棵树的"。


注意P2P有对应的StubNet,是因为它没有别的机制来描述网段信息;TransNet没有对应的StubNet,是因为它的网段信息已经由DR通过二类LSA统一描述了


OSPF的设计遵循一个根本原则:每条信息只在一个地方描述,由最合适的那个实体来描述。

一、P2P场景:为什么网段信息必须放在一类LSA里?

在P2P链路上,情况是这样的:

  • 只有两台路由器,没有第三方

  • 没有DR,没有"代表"

问题: 如果网段信息不放在一类LSA里,能放哪儿?

  • 不能放二类LSA,因为没有DR

  • 不能放三类LSA,因为那是跨区域的

  • 不能放五类LSA,因为那是外部的

唯一能放的地方:每个路由器自己的一类LSA。

所以P2P的设计是别无选择的:既然没有代表,那就每个人都自己说自己这一端的网段。

二、TransNet场景:为什么网段信息不能放在一类LSA里?

在广播网上,情况完全不同:

  • 有多台路由器

  • 有DR作为代表

问题: 如果每个路由器都在自己的一类LSA里用StubNet描述这个广播网的掩码,会发生什么?

假设以太网上有10台路由器,网段是192.168.1.0/24。

错误的设计(每个路由器都放StubNet):

  • R1的一类LSA:StubNet,192.168.1.0/24

  • R2的一类LSA:StubNet,192.168.1.0/24

  • R3的一类LSA:StubNet,192.168.1.0/24

  • ......

  • R10的一类LSA:StubNet,192.168.1.0/24

结果: 同一个网段的信息被重复描述了10次!这带来了几个严重问题:

  1. LSA数量膨胀:本来只需要1条信息,现在变成10条

  2. 资源浪费:每台路由器都要存储和处理这些重复信息

  3. 逻辑混乱:当SPF算法收到10条一模一样的网段信息,它该信谁的?这10条信息其实描述的是同一个网段,但算法无法知道它们是重复的,只能当成10个不同的网段来处理,导致路由计算错误

OSPF的正确设计(只有DR放二类LSA):

  • DR(比如R2)的二类LSA:Network Mask = 255.255.255.0

  • 其他路由器的一类LSA里只有Type 2链路,没有StubNet

结果: 网段信息只被描述1次,所有人都去读DR的二类LSA。

三、两种设计的对比

维度 P2P链路 广播网(TransNet)
参与者数量 2台 N台
是否有DR
网段信息放哪 每个路由器自己的StubNet DR的二类LSA
重复次数 2次(两端各一次) 1次(只有DR发一次)
是否浪费 无法避免,只有2次 避免重复,高效

四、为什么P2P不能也用类似"代表"的方式?

你可能会问:P2P为什么不能也选一个"代表"来统一描述网段信息?

因为在P2P链路上:

  • 只有两台路由器,没有机制选代表(选了也没意义,因为只有两个人)

  • 即使选了一个代表,另一台还是要发自己的StubNet(因为代表无法替另一台描述)

  • 最终还是会变成两台各发一次,和现在一样

所以P2P的"两次描述"是最小必要信息量,无法再优化。

五、从信息论的角度看

OSPF的设计遵循一个原则:信息的不重复度 = 网络拓扑的复杂度。

网络类型 最小必要信息量 OSPF的实现
P2P 两端各描述一次 两类LSA的StubNet各一次
广播网 DR统一描述一次 二类LSA一次

这不是混乱,而是根据不同场景选择最优的信息分布方式。

OSPF的设计原则: 信息放在最该放的地方,由最合适的实体来描述,避免重复,保证效率。这才是真正的"统一"------统一于设计原则,而不是统一于表面形式。


备注:

LSA的三元组:链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA。

判断LSA新旧:链路状态老化时间、链路状态序列号 、校验和用于判断LSA的新旧

bash 复制代码
1类LSA解析
类型:Router-LSA 
名字:取自生产这条LSA的路由器的Router-id
通告路由器:生产这条LSA的路由器的Router-id
传播范围:区域内
特点:每一台运行OSPF的路由器都会在所属的区域生产1条1类LSA
作用:用来计算域内路由
    :如何计算域内路由?  1类LSA是在给路由器做自我介绍
      介绍两类信息:拓扑信息 和网段信息
      拓扑信息:我是谁,我的邻居是谁,我用那个接口IP连接着我的邻居
      网段信息:我的接口IP地址段,我的接口IP的掩码  我接口cost值

查看命令: display  ospf  lsdb  router
              :  display  ospf  lsdb  router  1.1.1.1

P2P的网络中的1类LSA,可以独立计算域内路由
但是广播型网络中的1类LSA无法独立计算域内路由,  为什么?
因为广播型网络的1类LSA:
    1)第一:没有描述DR的IP地址所在网段的掩码信息
    2)第二:没有描述DR所在网段的完整的拓扑信息

如何解决:使用2类LSA来辅助1类LSA,计算域内路由

R1有三条链路,第一条链路告诉R1我有个邻居是2.2.2.2;第二条链路告诉R1我有个接口是192.168.12.0,掩码是24;第三条链路告诉R1我有个接口是192.168.1.0,掩码是24。

一共三条链路。

一个邻居,两个接口,正好三条链路。


查看2.2.2.2这一条一类LSA

R2只有两条链路

R2有两个接口,有两个邻居,LSA里面应该有四条链路信息。

这是因为一类LSA只会描述同一个区域的链路信息。

R2在区域12中,只有一个接口,只有一个邻居,所以一类LSA中在区域12中只有两条链路信息。



计算路由

根据R1的一类LSA能画出的

根据R2的LSA继续画

计算路由

路由表只负责选路,选出最优之后,它就把结果告诉FIB表,自己就歇着了。


总结:

P2P网络中的一类LSA可以独立计算域内路由,实现区域内通信。

在P2P网络中,一类LSA提供了构建全网拓扑和生成路由所需的全部"原材料",因此路由器可以仅凭这些LSA独立完成计算。而在广播网中,则必须依赖二类LSA的补充。


二类LSA

修改广播类型为广播型(默认就是广播型)

在R1上查看LSDB

改成广播型网络就有二类LSA了。

查看广播型网络的一类LSA

原来在点到点链路中,R1有三条LSA链路,改成广播型链路之后,R1只有两天LSA链路。

bash 复制代码
display ospf lsdb router 1.1.1.1
bash 复制代码
display ospf lsdb router 2.2.2.2

画拓扑

计算路由


问题:TransNet为什么会出现在一类LSA里面

一、TransNet到底是什么?

TransNet = Transit Network = 中转网络

在OSPF的术语里,TransNet特指具有"中转"能力的多路访问网络------最典型的就是以太网。

为什么叫"中转"?因为这种网络的作用不仅仅是连接终端设备,更重要的是可以承载多个路由器之间的流量转发。数据包可以从一台路由器进来,经过这个网络,再转发给另一台路由器。

TransNet的核心特征:

  • 可以连接两台以上的路由器

  • 所有路由器都能直接通信(多路访问)

  • 可以作为"中转站"让流量穿过去

  • 典型例子:以太网、帧中继


二、TransNet在一类LSA里长什么样?

先看一个具体例子:

假设R1、R2、R3三台路由器连在同一个以太网上,网段是192.168.1.0/24,DR是R2(接口IP=192.168.1.2)。

R1的一类LSA里会有一条这样的链路信息:

bash 复制代码
链路类型 = 2 (TransNet)
链路ID = 192.168.1.2  (这是DR的接口IP)
链路数据 = 192.168.1.1  (这是R1自己的接口IP)
度量值 = 10

这条链路信息的意思是:"我(R1)连接到了一个广播型网络,这个网络的代表(DR)是192.168.1.2,我用192.168.1.1这个IP连上去的,开销是10。"


三、为什么TransNet要放在一类LSA里?

这是你问题的核心。要理解这个,必须回到一类LSA的根本作用:描述"我自己"的链路状态

1. 一类LSA的视角:"我"为中心

一类LSA是从每台路由器自己的视角来描述自己的情况。它回答的问题是:

  • 我是谁?

  • 我有哪些接口?

  • 每个接口连到了哪里?

对于R1来说,它的G0/0/0接口确实连到了一个以太网。这个事实必须告诉别人。所以,这条TransNet链路放在R1的一类LSA里,是天经地义的------因为它描述的是R1自己的接口情况

2. TransNet链路只描述"我连到了什么",不描述"那个网上有什么"

这是一个关键区分:

链路类型 描述内容 描述的是 放在哪
TransNet 我连到了某个广播网 我自己的连接情况 一类LSA
Network LSA(二类) 这个广播网上有谁、掩码是多少 广播网本身的情况 二类LSA

TransNet链路的作用很单一: 它只说"我连到了那个网",不负责描述那个网上还有什么。就像一个人只说"我住在某某小区",但不负责说小区里还有谁。

3. 类比帮助理解

想象你要向别人介绍一个公寓楼里的情况:

  • 一类LSA的TransNet链路 = 每个住户说:"我住在xx小区"(这是每个人自己的信息)

  • 二类LSA = 物业发一个公告:"xx小区里有张三、李四、王五,地址是yy街zz号"(这是小区的整体信息)

如果每个住户不说"我住在xx小区",别人就不知道谁住在这个小区;如果没有物业的公告,别人就不知道这个小区里具体有谁。

两者缺一不可,且各司其职。


四、如果TransNet不在二类LSA里,会怎样?

你可能会想:为什么不把广播网的全部信息都放在二类LSA里,一类LSA里完全不提TransNet?

这样做的后果是:SPF算法无法知道哪些路由器连到了这个广播网

SPF算法需要知道每个节点(路由器)的连边。R1连到了广播网,这是一条重要的"边"。这条"边"的信息必须由R1自己说出来(在一类LSA里),否则SPF算法画图时就缺了这条连接。

把TransNet放在一类LSA里,保证了每个节点都把自己连到广播网的这个事实告诉了所有人。


五、完整的信息拼图

现在我们把所有碎片拼起来,看SPF算法是怎么用这些信息的:

  1. 从R1的一类LSA(TransNet链路)知道:R1连到了某个广播网(代表是DR=192.168.1.2)

  2. 从R2的一类LSA(TransNet链路)知道:R2也连到了这个广播网(因为它的DR也是192.168.1.2)

  3. 从R3的一类LSA(TransNet链路)知道:R3也连到了这个广播网

  4. 从R2的二类LSA知道:这个广播网的掩码是255.255.255.0,网上有R1、R2、R3

有了这些,SPF算法就能正确画出拓扑图:

bash 复制代码
    R1
     |
     | (广播网)
     |
R2--- ---R3

如果没有TransNet链路(步骤1-3),SPF算法只知道有R1、R2、R3三台路由器,也知道有一个广播网(从二类LSA),但不知道这三台路由器和这个广播网之间是什么连接关系,拓扑图就画不出来。


六、总结

问题 答案
TransNet是什么? 具有"中转"能力的多路访问网络(如以太网),可以连接多台路由器
为什么在一类LSA里? 因为它是每台路由器对自己接口连接情况的描述,属于"我自己的信息",必须由每个路由器自己说出来
和二类LSA什么关系? TransNet链路说"我连到了这个网"(个体),二类LSA说"这个网上有谁"(整体),两者配合才能完整描述广播网

一句话总结:TransNet链路在一类LSA里,是因为它描述的是"我"这个个体和广播网的关系;二类LSA描述的是广播网这个整体的情况。个体信息由个体自己说,整体信息由代表(DR)统一说------这正是OSPF设计的精妙之处。


关于二类LSA的一些思考


P2P的网络中的1类LSA,可以独立计算域内路由

但是广播型网络中的1类LSA无法独立计算域内路由, 为什么?

因为广播型网络的1类LSA:

1)第一:没有描述DR的IP地址所在网段的掩码信息

2)第二:没有描述DR所在网段的完整的拓扑信息

如何解决:使用2类LSA来辅助1类LSA,计算域内路由
2类LSA

类型:Network-LSA

名字:取自DR的接口的IP地址

通告路由器:DR接口所在路由器的Router-id

传播范围: 区域内

作用: 辅助1类LSA,计算域内路由

:如何辅助的?

1) 补全了DR所在网段的掩码信息

2) 补全了DR所在网段的完整的拓扑信息

记录了所有和DR建立完全邻接关系的路由器,描述完整的拓扑信息

备注:在广播型网络中,1类和2类LSA,共同计算域内路由

问题 答案
为什么广播网的1类LSA没有掩码信息? 掩码信息由DR统一通过2类LSA发布,避免N次重复
为什么广播网的1类LSA没有完整拓扑? 1类LSA是"个体视角",无法描述"群体关系",完整拓扑必须由DR的2类LSA提供
为什么P2P网络可以独立计算? P2P的1类LSA同时提供了拓扑信息(P2P链路)和网段信息(StubNet),无需其他LSA补充

一、先明确一个根本问题:SPF算法需要什么才能算出路由?

SPF算法要计算路由,需要两类信息:

  1. 拓扑信息:谁和谁连着?网络图是什么样的?

  2. 网段信息:每个节点上挂着哪些IP网段?(网段号+掩码)

缺了任何一个,路由都算不出来。


二、P2P网络中:为什么1类LSA就够了?

在P2P网络中,两台路由器R1和R2直连,网段是10.0.12.0/24。

R1的1类LSA里有什么?

bash 复制代码
链路1(Type 1 - P2P):
- 链路ID = R2的Router ID(拓扑信息:我邻居是R2)
- 链路数据 = 10.0.12.1(拓扑信息:我用这个IP连的)
- 度量值 = 10

链路2(Type 3 - StubNet):
- 链路ID = 10.0.12.0(网段信息:这个链路的网段号)
- 链路数据 = 255.255.255.0(网段信息:掩码)
- 度量值 = 10

R2的1类LSA同理。

现在,SPF算法收到这两份LSA后:

  1. 拓扑信息完整:从R1的P2P链路知道R1-R2相连,从R2的P2P链路也印证了这一点。拓扑图清晰。

  2. 网段信息完整:从R1的StubNet知道10.0.12.0/24挂在R1上,从R2的StubNet知道10.0.12.0/24也挂在R2上(其实描述的是同一个网段,但SPF算法能处理)。

所以,P2P网络中的1类LSA确实可以独立计算路由。 因为它同时提供了拓扑信息和网段信息。


三、广播型网络中:为什么1类LSA不够?

现在看广播型网络,以太网上有R1、R2、R3,DR是R2,网段是192.168.1.0/24。

1. 1类LSA里有什么?

R1的1类LSA:

bash 复制代码
链路类型 = 2(TransNet)
链路ID = 192.168.1.2(DR的接口IP)
链路数据 = 192.168.1.1(R1自己的IP)
度量值 = 10

R2的1类LSA:

bash 复制代码
链路类型 = 2(TransNet)
链路ID = 192.168.1.2(DR的接口IP)
链路数据 = 192.168.1.2(R2自己的IP)
度量值 = 10

R3的1类LSA:

bash 复制代码
链路类型 = 2(TransNet)
链路ID = 192.168.1.2(DR的接口IP)
链路数据 = 192.168.1.3(R3自己的IP)
度量值 = 10

2. 现在看缺少了什么

第一:缺少掩码信息

  • 在P2P网络中,掩码信息由Type 3(StubNet)链路提供

  • 但在广播型网络中,1类LSA里没有任何Type 3链路来描述这个广播网的掩码

  • SPF算法知道R1连到了一个叫"192.168.1.2"的东西,但它不知道这个网络有多大(是/24还是/16?)

第二:缺少完整的拓扑信息

  • 从R1的1类LSA,只知道R1连到了"192.168.1.2"

  • 从R2的1类LSA,只知道R2也连到了"192.168.1.2"

  • 从R3的1类LSA,只知道R3也连到了"192.168.1.2"

  • 但SPF算法不知道R1、R2、R3之间是什么关系! 它们是两两相连?还是都连到一个中心节点?拓扑图不完整。


四、为什么广播型网络的1类LSA不能放掩码信息和完整拓扑?

你问到了一个关键:为什么不能像P2P那样,也在1类LSA里加一个StubNet来描述这个广播网的掩码?

这个问题要从两个层面回答。

层面一:为什么不能放掩码?

假设允许每个路由器都在1类LSA里加一个StubNet来描述这个广播网的掩码,会发生什么?

  • R1的1类LSA:StubNet,192.168.1.0/24

  • R2的1类LSA:StubNet,192.168.1.0/24

  • R3的1类LSA:StubNet,192.168.1.0/24

  • ......

结果:同一个网段的掩码信息被重复描述了N次!

这带来了几个严重问题:

  1. LSA数量膨胀:本来只需要1条信息,现在变成N条

  2. 资源浪费:每台路由器都要存储和处理这些重复信息

  3. 逻辑混淆:SPF算法收到N条一模一样的网段信息,它该信谁的?这N条信息其实描述的是同一个网段,但算法无法知道它们是重复的,只能当成N个不同的网段来处理,导致路由计算错误

所以,OSPF的设计原则是:能在一条LSA里说清楚的事,绝不用N条。 广播网的掩码由DR统一发一次就够了。

层面二:为什么不能放完整拓扑?

完整拓扑指的是:R1、R2、R3之间的连接关系。

问题:1类LSA是以"我"为视角的,它无法描述"别人之间的关系"。

  • R1的1类LSA只能说"我连到了DR",但不能说"R2和R3也连到了DR"

  • 这是视角限制------每个人只能说自己,不能说别人

要描述"这个网上都有谁",需要一个上帝视角。这个上帝视角就是DR------因为它和所有人都建立了邻接关系,它知道所有人的存在。

所以,完整拓扑信息只能由DR通过2类LSA来提供。


五、完整的拼图

现在把广播型网络的完整信息拼起来:

LSA类型 提供什么信息 谁提供 类比
1类LSA的TransNet链路 每个路由器说"我连到了那个网" 每个路由器自己 每个人说"我住在这个小区"
2类LSA(Network LSA) 这个网的掩码 + 这个网上有谁 DR 物业发公告"小区里有张三、李四、王五,地址是xx街"

SPF算法需要两者结合才能画出完整的拓扑图:

  1. 从1类LSA的TransNet链路知道:R1、R2、R3都连到了同一个网(通过DR的IP识别)

  2. 从2类LSA知道:这个网的掩码是/24,这个网上有R1、R2、R3

  3. 于是SPF算法知道:这个广播网是一个"伪节点",R1、R2、R3都连到这个伪节点上

这就是广播型网络中1类LSA无法独立计算路由的根本原因------它必须依赖2类LSA的补充,才能获得完整的掩码信息和拓扑信息。


2类LSA

类型:Network-LSA

名字:取自DR的接口的IP地址

通告路由器:DR接口所在路由器的Router-id

传播范围: 区域内

作用: 辅助1类LSA,计算域内路由

:如何辅助的?

1) 补全了DR所在网段的掩码信息

2) 补全了DR所在网段的完整的拓扑信息

记录了所有和DR建立完全邻接关系的路由器,描述完整的拓扑信息

备注:在广播型网络中,1类和2类LSA,共同计算域内路由

要让一台网络中同时存在DR和BDR,必须同时满足以下两个条件

  1. 网络类型 :必须是广播型多路访问网络 (如以太网)或 NBMA 网络。

  2. 设备数量 :该网段上必须至少有3台(或更多)运行OSPF的路由器。



三类LSA

类型:sum-net-LSA (network-summary)

名字:取自-区域之间路由网段的名字

通告路由器:本区域的ABR设备的router-id

传递范围:区域内

解析:3类LSA在传播的过程中,每经过一个ABR设备,那个通告路由器就会发送1次变化

变成所经过的那台ABR设备的router-id

判断一个LSA,我们通常看LSA的三元组: 类型,名字,通告路由器

如果一个LSA的三元组发生变化,我们就认为他们不是同一个3类LSA

特点:区域的ABR设备把区域内由1类和2类LSA计算出来的域内路由

变成3类LSA,在相邻的区域内泛洪

区域内的ABR设备还会把从骨干区域学习到的3类LSA泛洪相邻的区域

作用:计算域间路由, 实现区域和区域之间的通信

查询命令:

<R1>dis ospf lsdb summary

<R1>dis ospf lsdb summary 192.168.2.0

查看R1上的OSPF协议路由表

三类LSA跨区域传播

通告路由器已经发生变化了。

三类LSA(Sum-Net LSA)每经过一个ABR(区域边界路由器),Advertising Router 字段一定会变成当前这个ABR的Router ID

只有修改了通告路由器ID,才能算出下一跳


LSA类型 描述对象 对象属于哪类概念 Link State ID是什么 为什么这么设计
一类LSA (Router) 一台路由器 拓扑节点 Router ID 路由器自己的身份证号
二类LSA (Network) 一个广播网段 拓扑节点(伪节点) DR的接口IP 广播网本身没有ID,用它的代表(DR)的IP来标识
三类LSA (Sum-Net) 一个IP网段 地址范围 网段号(如192.168.1.0) 网段号本身就是这个地址范围的ID
四类LSA (Sum-ASBR) ASBR的位置 拓扑节点 ASBR的Router ID 描述的是"ASBR这台路由器在哪"
五类LSA (External) 外部IP网段 地址范围 外部网段号 同三类,描述的是网段本身
概念 本质 对应LSA Link State ID设计
广播网段 物理/逻辑拓扑实体 二类LSA 借用DR的接口IP作为ID
IP网段 地址范围 三类/五类LSA 直接用网段号作为ID

一句话:广播网段是"容器",IP网段是"内容";容器用代表的名字(DR的IP),内容用自己的名字(网段号)。


三类LSA结构

再加上R1出接口的cost=1


不同维度理解OSPF的分类

网络功能角色 (Stub vs Transit)、LSA类型 (一类LSA里的链路类型)、路由范围(域内 vs 域间)

一、先区分三个不同的维度

维度 包含的概念 回答的问题
网络功能角色 Stub网络、Transit网络 这个网络是用来干什么的?(终点还是中转?)
LSA类型 一类LSA、二类LSA、三类LSA 用什么数据结构来描述网络信息?
路由范围 域内路由、域间路由、域外路由 这条路由信息的来源范围是哪里?

二、维度一:网络功能角色(Stub vs Transit)

这是网络本身的属性,和OSPF协议无关,是网络设计层面的概念。

网络类型 定义 例子 特征
Stub网络(末梢网络) 只连接终端设备,不承载穿越流量 一个只连PC的网段 流量只进不出,是"终点"
Transit网络(传输网络) 连接路由器,承载穿越流量 路由器之间的互联链路 流量可以穿过去,是"路径"

这个分类是独立于OSPF的------无论你跑什么路由协议,网络本身就有这个属性。

三、维度二:LSA类型(一类LSA怎么描述这些网络

现在看OSPF的一类LSA是如何描述这两类网络的。

1. 一类LSA如何描述Stub网络?

Type 3(StubNet)链路

例子: R1连着一个终端网段192.168.1.0/24。

R1的一类LSA里会写:

bash 复制代码
链路类型 = 3 (StubNet)
链路ID = 192.168.1.0 (网段号)
链路数据 = 255.255.255.0 (掩码)
度量值 = 1

含义: "我(R1)身上挂着这么一个Stub网络,你们可以通过我来访问它。"

2. 一类LSA如何描述Transit网络

Type 1(P2P)Type 2(TransNet)链路

例子1(P2P): R1和R2直连。

R1的一类LSA:

bash 复制代码
链路类型 = 1 (P2P)
链路ID = R2的Router ID (邻居是谁)
链路数据 = 10.0.12.1 (我的接口IP)
度量值 = 10

例子2(TransNet): R1连到一个以太网,DR是R2。

R1的一类LSA:

bash 复制代码
链路类型 = 2 (TransNet)
链路ID = 192.168.1.2 (DR的IP)
链路数据 = 192.168.1.1 (我的接口IP)
度量值 = 10

含义: "我(R1)连到了这么一个Transit网络,可以通过它到达其他路由器。"

3. 关键点:一类LSA同时包含Stub和Transit信息

一台路由器的一类LSA里,可能同时有:

  • Type 3(StubNet):描述它直连的终端网段

  • Type 1/2(P2P/TransNet):描述它连到的Transit网络

所以,一类LSA是"路由器自己的自我介绍信",里面既有它身上的Stub网络,也有它连到的Transit网络。

四、维度三:路由范围(域内 vs 域间)

这是路由信息的传播范围

路由类型 定义 由什么LSA产生
域内路由(Intra-Area) 同一区域内的路由 一类LSA + 二类LSA
域间路由(Inter-Area) 不同区域间的路由 三类LSA(Sum-Net)
域外路由(External) 从OSPF域外引入的路由 五类LSA / 七类LSA

域内路由的计算:

区域内,路由器通过:

  • 一类LSA:知道每台路由器的连接情况(包括它连到的Transit网络和它身上的Stub网络)

  • 二类LSA:知道广播型Transit网络的完整拓扑(谁在这个网上)

结合起来,就能算出整个区域的拓扑,并把Stub网络作为"叶子"挂上去。

域间路由的计算:

当ABR把一个区域的路由通告到另一个区域时,它不会把一类LSA发过去(因为一类LSA不能跨区域)。它会把区域内的网段信息 提取出来,生成三类LSA

三类LSA只包含:

  • 网段号

  • 掩码

  • 度量值

它不包含拓扑信息------所以其他区域的路由器只知道"有这么个网段,要通过那个ABR过去",但不知道那个区域里面长什么样。

五、现在把三个维度串起来看

用一张表理清:

概念 属于哪个维度 具体内容 和一类LSA的关系
Stub网络 网络功能角色 连接终端的"终点"网络 由一类LSA的Type 3(StubNet)描述
Transit网络 网络功能角色 连接路由器的"路径"网络 由一类LSA的Type 1/2(P2P/TransNet)描述
域内路由 路由范围 区域内部的路由 基于一类LSA(+二类LSA)计算得出
域间路由 路由范围 区域之间的路由 由三类LSA承载,一类LSA不参与

六、为什么要有这些区别?

OSPF这样设计的根本原因,是为了分层、分类地处理不同信息

  1. 区分Stub和Transit:因为它们在网络中的作用不同------Stub是终点,只需要被访问;Transit是路径,需要知道拓扑。所以描述方式也不同。

  2. 区分域内和域间:因为区域内部需要精确拓扑,区域之间只需要路由方向。这是OSPF可扩展性的核心。

  3. 一类LSA同时包含Stub和Transit:因为一台路由器同时扮演两个角色------它既是某些网段的"终点",也是通往其他路由器的"路径点"。一份自我介绍信当然要包含这两个方面。

一句话:Stub/Transit是"网络的功能分类",一类LSA是"描述工具",Inter-area是"传播范围"。工具用来描述功能,传播范围决定信息能走多远。

bash 复制代码
1. 一类LSA:只说自己
只描述"我"这台路由器的情况

说"我"连到了哪些Transit网络(Type 1/2)

说"我"身上挂着哪些Stub网络(Type 3)

绝不描述别人之间的关系

好处: 每个路由器只说自己,LSA数量 = 路由器数量,线性增长。

2. 二类LSA:由代表(DR)说广播网
只由DR发一份,描述这个广播网上的所有路由器

一份LSA,解决一个广播网的完整拓扑

好处: 无论广播网上有多少台路由器,只需要1份二类LSA,O(N²)变O(N)。

3. 三类LSA:由ABR说其他区域
只包含网段信息,不包含拓扑

实现了区域隔离,保证了可扩展性

好处: 区域1的内部拓扑变化,不会影响区域0,只需要更新三类LSA。

4. 五类LSA:由ASBR说外部
只包含外部网段信息

实现了内外隔离

好处: 外部路由震荡,不影响内部OSPF计算。
设计目标 解决方案 对应LSA
每个路由器只说自己 一类LSA只描述自己 一类LSA
广播网拓扑由代表统一说 DR发二类LSA,避免重复 二类LSA
区域间只传路由,不传拓扑 ABR发三类LSA,实现隔离 三类LSA
外部路由单独处理 ASBR发五类LSA,内外隔离 五类LSA

五类LSA

类型:External-LSA

名字:取自引入外部路由网段的名字

通告路由器:ASBR的Router-id

传播范围: 整个OSPF网络

特点:5类LSA会传播到整个OSPF网络

会在所有运行OSPF协议的路由器中泛洪 (特殊区域除外)

5类LSA不属于任何一个区域

作用:用于通告外部路由(用于计算外部路由)

查询命令:

dis ospf lsdb ase

dis ospf lsdb ase 192.168.3.0

相关推荐
observe1012 小时前
网络编程之UDP
网络
战神/calmness2 小时前
CVE-2021-26295:Apache OFBiz 反序列化漏洞
网络安全·漏洞
天赐学c语言2 小时前
Linux - windows作为client访问linux服务端
linux·网络·c++
希赛网2 小时前
2026年华为HCIE数通认证考试,可以在哪里看课程?
网络·华为·华为认证数通学习答疑·hcie数通疑问·hcie-datacom·2026ie数通学习·hcie考试内容
2401_865721333 小时前
WEEK 3 刷题&学习记录
网络·学习·ctf
小小小米粒6 小时前
NAT 模式, 仅主机模式 Host-Only ,桥接模式 Bridge
linux·服务器·网络
Initialize-le6 小时前
WMware桥接模式配置静态IP上网
网络协议·tcp/ip·桥接模式
头疼的程序员10 小时前
计算机网络:自顶向下方法(第七版)第三章 学习分享(二)
网络·学习·计算机网络
Blurpath住宅代理10 小时前
代理协议深度解析:HTTP与SOCKS5如何科学选型?
网络·静态ip·动态代理·住宅代理