OSPF技术连载1:OSPF基础知识,7000字总结!
你好,这里是网络技术联盟站。
OSPF(开放最短路径优先)是一种用于在IP网络中选择路由的内部网关协议(IGP)。它是一个开放标准协议,由RFC 2328定义,广泛应用于大型企业网络和互联网。
目录:
OSPF的基本概念
1. 路由器ID
在OSPF中,每个路由器都有一个唯一的路由器ID(Router ID),用于标识自己。路由器ID可以是一个IPv4地址,通常是路由器的一个接口IP地址。如果没有明确配置路由器ID,OSPF会根据一组规则自动选择一个。
例如,假设我们有三个路由器,它们的接口IP地址分别是192.168.1.1、192.168.1.2和192.168.1.3。在这种情况下,路由器ID可以是其中任意一个IP地址。
2. 邻居关系
OSPF使用邻居关系(Neighbor Relationship)来交换路由信息。当两个OSPF路由器在它们的接口之间建立了邻居关系后,它们就可以互相交换路由信息。
例如,假设我们有两个相邻的OSPF路由器A和B,它们的接口分别是192.168.1.1和192.168.1.2。当它们通过这两个接口建立邻居关系后,它们就可以开始交换路由信息。
3. OSPF区域
OSPF将网络划分为不同的区域(Area),并使用OSPF区域之间的区域间路由(Inter-Area Routing)和区域内路由(Intra-Area Routing)来确定最佳路径。
例如,假设我们有一个大型企业网络,划分为三个区域:区域0、区域1和区域2。区域0是骨干区域(Backbone Area),连接了所有的OSPF区域。区域1和区域2是非骨干区域,它们通过区域间路由与骨干区域连接。
4. OSPF区域类型
OSPF定义了不同类型的区域,包括骨干区域(Backbone Area)、标准区域(Standard Area)、NSSA区域(Not-So-Stubby Area)和Totally NSSA区域。
骨干区域是连接所有区域的主要区域。标准区域是普通的OSPF区域。NSSA区域是一种特殊类型的区域,可以连接到其他非OSPF域。Totally NSSA区域是NSSA区域的变体,更加灵活。
OSPF工作原理
OSPF使用链路状态路由(Link State Routing)算法来计算最短路径。它通过交换链路状态数据库(Link State Database)来了解整个网络的拓扑结构。
OSPF路由器之间通过洪泛(Flooding)方式交换链路状态信息。每个OSPF路由器都将自己的链路状态信息发送给相邻的路由器,并将接收到的链路状态信息存储在链路状态数据库中。然后,每个OSPF路由器都可以使用Dijkstra算法来计算最短路径。
OSPF报文类型
报文类型 | 描述 |
---|---|
Hello报文 | 用于发现和维护OSPF邻居关系的报文 |
DD报文 | 用于数据库描述,交换链路状态数据库的摘要信息 |
LSR报文 | 用于请求邻居路由器发送缺失的链路状态数据 |
LSU报文 | 用于向邻居路由器发送链路状态数据 |
LSAck报文 | 用于确认接收到的链路状态数据 |
Hello报文
Hello报文是OSPF用于发现和维护邻居关系的重要报文类型。它的主要目的是交换路由器的相关信息以确定邻居是否可达和协商OSPF参数。
Hello报文的字段包括:
- Router ID:发送Hello报文的路由器的ID。
- Area ID:发送Hello报文的路由器所属的OSPF区域ID。
- Network Mask:网络掩码。
- Hello Interval:发送Hello报文的时间间隔。
- Dead Interval:判定邻居路由器失效的时间间隔。
DD报文
DD(Database Description)报文用于交换链路状态数据库的摘要信息。它允许路由器之间比较彼此的数据库,以确定需要交换的更新信息。
DD报文的字段包括:
- Area ID:发送DD报文的路由器所属的OSPF区域ID。
- Interface MTU:发送DD报文的接口的最大传输单元。
- Options:用于指定OSPF的选项和功能。
- Sequence Number:序列号,用于标识DD报文的顺序。
- LSA Headers:链路状态数据库中每个LSA的摘要信息。
LSR报文
LSR(Link State Request)报文用于请求邻居路由器发送缺失的链路状态数据。当一个路由器在其链路状态数据库中缺少某个LSA时,它可以发送LSR报文来请求邻居路由器发送该LSA。
LSR报文的字段包括:
- Area ID:发送LSR报文的路由器所属的OSPF区域ID。
- Link State Requests:要请求的LSA列表。
LSU报文
LSU(Link State Update)报文用于向邻居路由器发送链路状态数据。当一个路由器检测到网络拓扑发生变化时,它会生成LSU报文,并将更新的链路状态数据发送给邻居路由器。
LSU报文的字段包括:
- Area ID:发送LSU报文的路由器所属的OSPF区域ID。
- LSA Headers:要传输的链路状态数据的摘要信息。
LSAck报文
LSAck(Link State Acknowledgment)报文用于确认接收到的链路状态数据。当一个路由器接收到LSU报文后,会发送LSAck报文作为回应,通知发送方链路状态数据已成功接收。
LSAck报文的字段包括:
- Area ID:发送LSAck报文的路由器所属的OSPF区域ID。
- LSA Headers:已接收到的链路状态数据的摘要信息。
OSPF LSA类型
LSA类型 | 描述 |
---|---|
Router-LSA(Type 1) | 用于描述路由器与其直连网络之间的连接状态和链路成本 |
Network-LSA(Type 2) | 用于描述多个路由器连接的广播网络的状态 |
Network-summary-LSA(Type 3) | 用于描述区域内部网络和区域之间的网络汇总信息 |
ASBR-summary-LSA(Type 4) | 用于描述区域边界路由器(ASBR)与其他区域之间的网络汇总信息 |
AS-external-LSA(Type 5) | 用于描述来自其他自治系统(AS)的外部网络的信息 |
NSSA LSA(Type 7) | 用于描述在NSSA区域中来自其他自治系统(AS)的外部网络的信息 |
Opaque LSA(Type 9/Type 10/Type 11) | 用于扩展OSPF协议以支持特定的扩展功能和应用 |
Router-LSA(Type 1)
Router-LSA是用于描述路由器与其直连网络之间的连接状态和链路成本的LSA类型。每个OSPF路由器都会生成一个Router-LSA来描述自己的链路状态信息。
Router-LSA的字段包括:
- 路由器ID:生成该LSA的路由器的唯一标识符。
- 连接类型:描述与路由器相连的网络类型,如点对点、广播、虚拟链路等。
- 链路数据:描述与路由器直接相连的网络和链路的信息,包括IP地址、子网掩码、链路类型、链路状态等。
- 链路状态:描述链路的状态,如启用、禁用、DR(设计者路由器)等。
Network-LSA(Type 2)
Network-LSA用于描述多个路由器连接的广播网络的状态。当OSPF路由器连接到一个共享网络时,它们会生成一个Network-LSA来描述该网络的状态。
Network-LSA的字段包括:
- 路由器ID:生成该LSA的路由器的唯一标识符。
- 网络地址:广播网络的IP地址。
- DR(设计者路由器):指定负责该网络的DR路由器的ID。
- 邻居路由器:与该网络直接相连的OSPF邻居路由器的ID。
Network-summary-LSA(Type 3)
Network-summary-LSA用于描述区域内部网络和区域之间的网络汇总信息。它由区域边界路由器(ABR)生成,用于在区域之间传递网络汇总信息。
Network-summary-LSA的字段包括:
- 路由器ID:生成该LSA的ABR的唯一标识符。
- 汇总网络地址:网络汇总的IP地址。
- 目标区域ID:接收网络汇总信息的目标区域的ID。
- 路由器指示位:指示接收方是否应将该网络视为区域边界路由器。
ASBR-summary-LSA(Type 4)
ASBR-summary-LSA用于描述区域边界路由器(ASBR)与其他区域之间的网络汇总信息。它由ASBR生成,用于在不同区域之间传递外部网络的汇总信息。
ASBR-summary-LSA的字段包括:
- 路由器ID:生成该LSA的ASBR的唯一标识符。
- 汇总网络地址:网络汇总的IP地址。
- 目标区域ID:接收网络汇总信息的目标区域的ID。
- 路由器指示位:指示接收方是否应将该网络视为区域边界路由器。
AS-external-LSA(Type 5)
AS-external-LSA用于描述来自其他自治系统(AS)的外部网络的信息。它由ASBR生成,并用于向OSPF域内部传递外部网络的路由信息。
AS-external-LSA的字段包括:
- 路由器ID:生成该LSA的ASBR的唯一标识符。
- 外部网络地址:来自其他AS的外部网络的IP地址。
- 路径类型:指示路径类型,如Type 1(区域内路径)或Type 2(区域间路径)。
- 路径成本:指示到达该外部网络的成本。
NSSA LSA(Type 7)
NSSA LSA用于描述在NSSA区域中来自其他自治系统(AS)的外部网络的信息。它类似于AS-external-LSA,但用于在NSSA区域内部传递外部网络的路由信息。
NSSA LSA的字段和AS-external-LSA类似,但有一些特定的区别,如NSSA区域的特殊属性和转换机制。
Opaque LSA(Type9/Type 10/Type 11)
Opaque LSA是用于扩展OSPF协议以支持特定的扩展功能和应用的LSA类型。它具有更加灵活的结构,可以用于传递各种自定义的信息。
Opaque LSA的类型包括:
- Type 9:用于扩展OSPF以支持OSPFv2的TE(Traffic Engineering)扩展。
- Type 10:用于扩展OSPF以支持OSPFv3的TE扩展。
- Type 11:用于扩展OSPF以支持广域网(WAN)连接的信息交换,如多协议标签交换(MPLS)。
每种类型的Opaque LSA具有自己特定的字段和用途,可以根据需要灵活地定义和使用。
OSPF 路由器类型
路由器类型 | 描述 |
---|---|
区域内路由器(Internal Router) | 位于同一OSPF区域内的路由器,负责转发区域内的数据包 |
区域边界路由器(ABR) | 连接两个或多个OSPF区域的路由器,负责在区域之间转发数据包,并进行网络汇总和分发 |
骨干路由器(Backbone Router) | 在OSPF中骨干区域(Backbone Area)内的路由器,连接所有的区域,负责转发来自其他区域的数据包 |
自治系统边界路由器(ASBR) | 连接OSPF域与其他自治系统(AS)的路由器,负责在OSPF域与外部网络之间交换路由信息,并进行外部网络的汇总和分发 |
区域内路由器(Internal Router)
区域内路由器是位于同一OSPF区域内的路由器,它们只与同一区域内的其他路由器交互。区域内路由器的主要功能是转发区域内的数据包,维护LSDB(链路状态数据库),计算并选择最佳路径。
区域内路由器的特点包括:
- 在同一区域内的所有路由器都是区域内路由器。
- 区域内路由器只与同一区域内的其他路由器交换LSA信息。
- 用于区域内的内部路由选择和转发数据包。
区域边界路由器(ABR)
区域边界路由器是连接两个或多个OSPF区域的路由器。它们在不同区域之间扮演着关键的桥梁角色,负责在区域之间转发数据包,并进行网络汇总和分发。
区域边界路由器的特点包括:
- 在连接多个区域的边缘处。
- 可以同时属于多个区域,通常至少属于一个区域。
- 负责在区域之间转发数据包。
- 进行区域间的网络汇总和分发。
骨干路由器(Backbone Router)
骨干路由器是位于OSPF中骨干区域(Backbone Area)内的路由器。骨干区域是连接所有区域的主要区域,骨干路由器负责转发来自其他区域的数据包。
骨干路由器的特点包括:
- 在骨干区域内,连接所有区域。
- 用于转发来自其他区域的数据包。
- 负责维护骨干区域的拓扑信息。
自治系统边界路由器(ASBR)
自治系统边界路由器是连接OSPF域与其他自治系统(AS)的路由器。它们负责在OSPF域与外部网络之间交换路由信息,并进行外部网络的汇总和分发。
自治系统边界路由器的特点包括:
- 连接OSPF域与其他自治系统(AS)。
- 负责在OSPF域与外部网络之间交换路由信息。
- 进行外部网络的汇总和分发。
OSPF 路由类型
路由类型 | 描述 |
---|---|
Intra Area | 在同一OSPF区域内选择路由,并用于在该区域内转发数据包 |
Inter Area | 在不同OSPF区域之间选择路由,并用于在区域之间转发数据包 |
第一类外部路由(Type 1 External) | 来自其他自治系统(AS)的外部路由,在OSPF域内部传递并进行成本计算,用于转发到其他区域和AS |
第二类外部路由(Type 2 External) | 来自其他自治系统(AS)的外部路由,在OSPF域内部传递,并将其成本设置为固定值,用于转发到其他区域和AS |
Intra Area
Intra Area路由用于在同一OSPF区域内选择路由,并用于在该区域内转发数据包。当数据包需要从源到达目的地时,Intra Area路由通过查找区域内的最短路径来选择下一跳。
Intra Area路由的特点包括:
- 在同一OSPF区域内选择路由。
- 负责在区域内转发数据包。
- 使用区域内部链路状态数据库(LSDB)计算最短路径。
Inter Area
Inter Area路由用于在不同OSPF区域之间选择路由,并用于在区域之间转发数据包。当数据包需要从源区域到达目的区域时,Inter Area路由通过查找区域间的最短路径来选择下一跳。
Inter Area路由的特点包括:
- 在不同OSPF区域之间选择路由。
- 负责在区域之间转发数据包。
- 使用区域间链路状态数据库(LSDB)计算最短路径。
第一类外部路由(Type 1 External)
第一类外部路由是来自其他自治系统(AS)的外部路由,在OSPF域内部传递并进行成本计算,用于转发到其他区域和AS。当数据包需要到达其他AS时,第一类外部路由将起到关键作用。
第一类外部路由的特点包括:
- 来自其他AS的外部路由。
- 在OSPF域内部传递。
- 通过在区域间链路状态数据库(LSDB)中计算成本来选择下一跳。
第二类外部路由(Type 2 External)
第二类外部路由是来自其他自治系统(AS)的外部路由,在OSPF域内部传递,并将其成本设置为固定值,用于转发到其他区域和AS。与第一类外部路由相比,第二类外部路由不进行成本计算。
第二类外部路由的特点包括:
- 来自其他AS的外部路由。
- 在OSPF域内部传递。
- 将其成本设置为固定值,不进行成本计算。
OSPF 区域类型
区域类型 | 描述 |
---|---|
普通区域(Normal Area) | 标准的OSPF区域类型,包含所有OSPF功能,可以与其他区域进行完全的LSA交换 |
STUB区域 | 通过汇总外部路由并使用默认路由减少区域内路由器的负担,并阻止来自其他区域的LSA信息 |
Totally STUB区域 | 类似于STUB区域,但还阻止来自骨干区域(Backbone Area)的LSA信息 |
NSSA区域 | 允许将外部路由引入OSPF区域,但LSA类型被修改以兼容OSPF,提供更大的灵活性 |
Totally NSSA区域 | 类似于NSSA区域,但还阻止来自骨干区域的LSA信息 |
普通区域(Normal Area)
普通区域是标准的OSPF区域类型,包含所有OSPF功能,并可以与其他区域进行完全的LSA交换。普通区域内的路由器可以直接与同一区域内的其他路由器进行通信,并交换链路状态信息。
普通区域的特点包括:
- 路由器可以与同一区域内的其他路由器进行完全的LSA交换。
- 支持区域内部的内部路由选择和转发数据包。
- 可以与其他区域之间进行区域间路由选择和转发数据包。
STUB区域
STUB区域通过汇总外部路由并使用默认路由减少区域内路由器的负担,并阻止来自其他区域的LSA信息。这样可以简化区域内的路由表,减少内存和计算资源的使用。
STUB区域的特点包括:
- 在STUB区域中,外部路由被汇总为默认路由。
- 区域内的路由器只需要维护默认路由,而不需要具体的外部路由信息。
- STUB区域不会接收来自其他区域的LSA信息。
Totally STUB区域
Totally STUB区域类似于STUB区域,但还阻止来自骨干区域的LSA信息。这样可以进一步简化区域内的路由表,并减少资源消耗。
Totally STUB区域的特点包括:
- 在Totally STUB区域中,外部路由被汇总为默认路由。
- 区域内的路由器只需要维护默认路由,而不需要具体的外部路由信息。
- Totally STUB区域不会接收来自骨干区域的LSA信息。
NSSA区域
NSSA(Not-So-Stubby Area)区域允许将外部路由引入OSPF区域,但LSA类型被修改以兼容OSPF,并提供更大的灵活性。NSSA区域允许在OSPF域内引入外部路由,同时保持区域内的资源消耗较低。
NSSA区域的特点包括:
- 允许在NSSA区域中引入外部路由。
- NSSA区域的ASBR(自治系统边界路由器)将外部路由转换为NSSA LSA类型。
- NSSA区域内的其他路由器可以接收和转发NSSA LSA。
Totally NSSA区域
Totally NSSA区域类似于NSSA区域,但还阻止来自骨干区域的LSA信息。这样可以进一步控制区域内的资源消耗,并提供更高的灵活性。
Totally NSSA区域的特点包括:
- 允许在Totally NSSA区域中引入外部路由。
- Totally NSSA区域的ASBR将外部路由转换为Totally NSSA LSA类型。
- Totally NSSA区域内的其他路由器可以接收和转发Totally NSSA LSA。
OSPF支持的网络类型
网络类型 | 描述 |
---|---|
广播类型(Broadcast) | 具有广播能力的网络类型,如以太网,支持多播和广播传输。 |
NBMA类型(Non-Broadcast Multi-Access) | 非广播多点接入类型的网络,如帧中继、ATM等,不支持广播和多播传输。 |
点到多点P2MP类型(Point-to-Multipoint) | 一对多连接的网络类型,允许一个OSPF路由器与多个其他路由器直接通信,无需逐个建立点到点连接。 |
点到点P2P类型(Point-to-Point) | 一对一连接的网络类型,仅允许两个OSPF路由器之间建立点到点连接,如点到点链路或虚拟专用线路(VPN)。 |
广播类型(Broadcast)
广播类型是指具有广播能力的网络类型,如以太网。广播类型网络支持多播和广播传输,OSPF可以直接在广播网络上运行。
广播类型网络的特点包括:
- 支持广播传输,允许多播和广播流量。
- 路由器可以通过广播通信,交换LSA信息。
- OSPF可以直接在广播网络上运行,无需额外的配置。
NBMA类型(Non-Broadcast Multi-Access)
NBMA类型是指非广播多点接入类型的网络,如帧中继、ATM等。这些网络不支持广播和多播传输,OSPF在NBMA网络上需要特殊的配置。
NBMA类型网络的特点包括:
- 不支持广播和多播传输。
- 路由器之间的通信需要经过专门配置。
- OSPF在NBMA网络上需要使用额外的配置选项,如配置邻居列表或使用特殊的Hello报文选项。
点到多点P2MP类型(Point-to-Multipoint)
点到多点P2MP类型是一种一对多连接的网络类型,允许一个OSPF路由器与多个其他路由器直接通信,无需逐个建立点到点连接。
点到多点P2MP类型网络的特点包括:
- 允许一个OSPF路由器与多个其他路由器直接通信。
- 无需逐个建立点到点连接。
- OSPF路由器可以使用单个Hello报文与所有相邻路由器进行邻居关系的建立。
点到点P2P类型(Point-to-Point)
点到点P2P类型是指一对一连接的网络类型,仅允许两个OSPF路由器之间建立点到点连接,如点到点链路或虚拟专用线路(VPN)。
点到点P2P类型网络的特点包括:
- 仅允许两个OSPF路由器之间建立点到点连接。
- 通常用于连接两个路由器的专用链路或虚拟专用线路(VPN)。
- 点到点连接通常具有较高的带宽和可靠性。
OSPF DR和BDR
主题 | 描述 |
---|---|
DR(Designated Router) | 被选举为网络中某一段子网的代表,负责与其他路由器交换链路状态信息并汇总网络拓扑信息。 |
BDR(Backup Designated Router) | 作为DR的备份,接收并转发链路状态信息,当DR不可用时,BDR将接替其角色并成为新的DR。 |
DR和BDR的选举过程 | 通过Hello报文交换和优先级比较来选举DR和BDR,优先级高的路由器将成为DR,第二高的则成为BDR。 |
DR和BDR的特点 | DR和BDR之间建立邻居关系,DR负责向BDR和其他路由器发送链路状态信息,BDR只向其他路由器发送链路状态信息。 |
DR(Designated Router)
DR(Designated Router)是在OSPF网络中被选举为网络中某一段子网的代表,负责与其他路由器交换链路状态信息并汇总网络拓扑信息。DR起到减少链路状态数据库(LSDB)更新开销的作用,从而提高网络性能。
DR的主要特点和作用包括:
- 在每个多播或非广播多点接入(NBMA)网络中,选举一个DR。
- DR负责与其他路由器交换Hello报文和链路状态信息(LSA)。
- DR汇总其他路由器的链路状态信息,并将其反映在区域内的LSDB中。
- 减少了网络中链路状态信息的交换和更新开销。
- DR能够减少链路状态信息更新的洪泛,提高网络的收敛速度。
BDR(Backup Designated Router)
BDR(Backup Designated Router)是作为DR的备份存在的路由器。BDR接收并转发来自其他路由器的链路状态信息,并在DR不可用时接替其角色成为新的DR。
BDR的主要特点和作用包括:
- 在每个多播或非广播多点接入(NBMA)网络中,选举一个BDR。
- BDR的功能与DR类似,但仅在DR不可用时才接替其角色。
- BDR负责与其他路由器交换Hello报文和链路状态信息(LSA)。
- BDR仅向其他路由器发送链路状态信息,不向其他BDR发送信息。
- BDR能够快速接管DR的角色,并确保网络中的DR角色不会出现间断。
DR和BDR的选举过程
在OSPF网络中,DR和BDR的选举过程是通过Hello报文的交换和优先级比较来实现的。以下是DR和BDR的选举过程:
- 路由器在OSPF网络中发送Hello报文,其中包含自己的优先级。
- 路由器接收到Hello报文后,比较对方的优先级与自己的优先级。
- 优先级较高的路由器将成为DR,并将其选为DR的路由器作为BDR。
- 如果优先级相同或未配置优先级,则使用路由器ID进行比较。
- 如果路由器ID也相同,则通过回环接口的IP地址来决定选举结果。
通过以上选举过程,OSPF网络中的路由器将选举出DR和BDR,并建立相应的邻居关系。
DR和BDR的特点
DR和BDR之间建立邻居关系,这样可以实现更高效的链路状态信息交换和更新。以下是DR和BDR的特点:
- DR负责向BDR和其他路由器发送链路状态信息(LSA)。
- BDR仅向其他路由器发送链路状态信息,不向其他BDR发送信息。
- DR和BDR之间维护特殊的邻居关系,确保在DR发生故障时BDR可以接替其角色。
- DR和BDR的选举过程通过Hello报文的交换和优先级比较来实现。
通过DR和BDR的特点和选举过程,OSPF网络能够减少链路状态信息的洪泛和更新开销,提高网络的性能和可靠性。
OSPF简单配置示例
我会介绍三个厂商的:
华为(Huawei)
拓扑图
配置示例
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.255
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0] network 20.0.0.0 0.0.0.255
思科(Cisco)
拓扑图
配置示例
Router1(config)# router ospf 1
Router1(config-router)# router-id 1.1.1.1
Router1(config-router)# network 192.168.1.0 0.0.0.255 area 0
Router1(config-router)# network 10.0.0.0 0.0.0.255 area 0
Router2(config)# router ospf 1
Router2(config-router)# router-id 2.2.2.2
Router2(config-router)# network 192.168.1.0 0.0.0.255 area 0
Router2(config-router)# network 20.0.0.0 0.0.0.255 area 0
Juniper(Juniper Networks)
拓扑图
配置示例
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0
set protocols ospf area 0.0.0.0 interface ge-0/0/2.0
这些示例仅为演示目的,实际的配置可能因设备型号和操作系统版本而有所不同。在实际配置时,请参考各个厂商的官方文档和设备手册进行详细配置。
总结
OSPF是一种强大而灵活的内部网关协议,它提供了可靠的路由选择机制。通过理解OSPF的基本概念和工作原理,您可以更好地配置和管理您的网络。
- 点赞
- 收藏
- 关注作者
评论(0)