Telemetry技术白皮书-6W101

手册下载

Telemetry技术白皮书

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2021 新华三技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。

本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。



Telemetry

1.1  产生背景

随着网络的普及和新技术的涌现,网络规模日益增大,部署的复杂度逐步提升,用户对业务的质量要求也不断提高。为了满足用户需求,网络运维务必更加精细化、智能化。当今网络的运维面临着如下挑战:

·     超大规模:管理的设备数目众多,监控的信息数量非常庞大。

·     快速定位:在复杂的网络中,能够快速地定位故障,达到秒级、甚至亚秒级的故障定位速度。

·     精细监控:监控的数据类型更多,且监控粒度更细,以便完整、准确地反应网络状况,据此预估可能发生的故障,并为网络优化提供有力的数据依据。网络运维系统不仅需要监控接口上的流量统计信息、每条流上的丢包情况、CPU和内存占用情况,还需要监控每条流的时延抖动、每个报文在传输路径上的时延、每台设备上的缓冲区占用情况等。

传统的网络监控手段(SNMPCLI、日志)已无法满足网络需求:

·     SNMPCLI主要采用“拉模式”获取数据,即发送请求来获取设备上的数据,限制了可以监控的网络设备数量,且无法快速获取数据。

·     SNMP Trap和日志虽然采用“推模式”获取数据,即设备主动将数据上报给监控设备,但仅上报事件和告警,监控的数据内容极其有限,无法准确地反映网络状况。

Telemetry是一项监控设备性能和故障的远程数据采集技术。它采用“推模式”及时获取丰富的监控数据,可以实现网络故障的快速定位,从而解决上述网络运维问题。

1.2  技术优势

Telemetry具有如下优势:

·     支持多种实现方式(如gRPCINTERSPAN),满足用户的不同需求。

·     采集数据的精度高,且类型十分丰富,可以充分反映网络状况。

·     一次订阅,持续上报。相比传统网络监控技术的查询一次上报一次,Telemetry仅需配置一次,设备就可以持续上报数据,减轻了设备处理查询请求的压力。

·     故障定位更快速、精准。

1.3  Telemetry网络模型

1所示,Telemetry网络模型中包括如下组成部分:

·     网络设备:接受监控的设备。网络设备对指定的监控数据进行采样,并将采样数据通过gRPCGoogle Remote Procedure CallGoogle远程过程调用)、INTIn-band Telemetry,带内遥测)、ERSPANEncapsulated Remote Switch Port Analyzer,封装远程端口镜像)等方式定时上送给采集器。

·     采集器:用于接收和保存网络设备上报的监控数据。

·     分析器:用于分析采集器接收到的监控数据,对数据进行处理,并以图形化界面的形式将分析结果展现给用户。

·     控制器:通过NETCONF等方式向设备下发配置,实现对网络设备的管理。控制器可以根据分析器提供的分析数据,为网络设备下发配置,对网络设备的转发行为进行调整;也可以控制网络设备对哪些数据进行采样和上报。

图1 Telemetry网络模型

 

1.4  Telemetry实现方式

根据数据上报方式的不同,Telemetry的实现方式包括:

·     基于gRPCTelemetry

基于gRPCTelemetry技术可以采集设备的接口流量统计、CPU、告警等数据,对采集到的数据进行Protocol Buffer编码后,实时上报给采集器进行接收和存储。

·     基于INTTelemetry

INTBarefootAristaDellIntelVmware提出,是一种从设备上采集数据的网络监控技术。设备主动向采集器上送采集数据,提供实时、高速的数据采集功能,达到对网络设备的性能及网络运行情况进行监控的目的。

INT主要用来采集报文经过的路径和报文传输时延等数据平面信息。INT监控粒度为单个数据包,可以实现完整的网络状态实时监控。

·     基于ERSPANTelemetry

ERSPAN是一种端口报文镜像技术,它能够将端口上的报文镜像后,封装为协议号为0x88BEGRE报文,并将其发送到远端监控设备。

用户可以根据实际需求定义待镜像的报文,例如镜像TCP三次握手报文以便监控TCP连接建立情况、镜像RDMA信令报文以便监控RDMA会话状态。

1.5  典型组网应用

2所示,网络中可以同时部署多种Telemetry技术,实现全方位、多角度的网络监控;也可以根据实际需要仅部署所需的Telemetry技术,针对某一方面进行实时监控。

gRPCINTERSPAN将采集到的数据发送到数据采集和分析器后,数据分析结果以图形化界面展现出来,以便管理员更加清晰地了解网络状态,快速定位网络故障。管理员还可以及时发现网络中潜在的问题,及时优化网络,以避免网络故障的发生。

图2 Telemetry典型应用

 

基于gRPCTelemetry

采用基于gRPCTelemetry技术时,设备自动读取各种统计信息(CPU、内存、接口等),根据采集器的订阅要求将采集的信息通过gRPC协议上报给采集器,实现了比传统监控方式更加实时、高效的数据采集功能。

2.1  gRPC概述

2.1.1  gRPC协议

gRPC协议栈分层如1所示。

表1 gRPC协议栈分层模型

分层

说明

内容层

用于承载编码后的业务数据。业务数据的编码格式包括:

·     GPBGoogle Protocol Buffer):高效的二进制编码格式,通过proto文件描述编码使用的数据结构。在设备和采集器之间传输数据时,该编码格式的数据比其他格式(如JSON)的数据具有更高的信息负载能力。业务数据使用GPB格式编码时,需要配合对应的业务模块proto文件才能解码。

·     JSONJavaScript Object Notation):轻量级的数据交换格式,采用独立于编程语言的文本格式来存储和表示数据,易于阅读和编写。业务数据使用JSON格式编码时,通过公共proto文件即可解码,无需对应的业务模块proto文件。

设备和采集器通信时,双方的proto文件必须保持兼容。

gRPC

定义了RPCRemote Procedure Call,远程过程调用)的协议交互格式

公共RPC方法定义在公共proto文件中,例如grpc_dialout.proto

HTTP 2.0

当传输协议为TCP时,gRPC承载在HTTP 2.0协议上

HTTP 2.0协议具有首部数据压缩、单TCP连接支持多路请求、流量控制等性能增强特性

TLSTransport Layer Security,传输层安全)层

该层是可选的,设备和采集器可以基于TLS协议进行通道加密和双向证书认证,实现安全通信

传输层

本特性支持以下两种传输协议:

·     TCP:提供面向连接的、可靠的数据链路

·     UDP:提供无连接的快速通信,不对传送数据进行可靠保证

 

2.1.2  gRPC网络架构

3所示,gRPC网络采用客户端/服务器模型。

图3 gRPC网络架构

 

设备作为服务器时,gRPC网络的工作机制如下:

(1)     服务器通过监听指定服务端口来等待客户端的连接请求。

(2)     用户通过执行客户端程序登录到服务器。

(3)     客户端调用.proto文件提供的gRPC方法发送请求消息。

(4)     服务器回复应答消息。

说明

设备既可以作为gRPC服务器,也可以作为gRPC客户端,具体与两者的连接模式有关,请参见“2.1.3  Dial-in模式和Dial-out模式”。

 

2.1.3  Dial-in模式和Dial-out模式

2中,网络设备和采集器通过建立gRPC连接来输送设备的数据信息。设备支持以下两种gRPC连接模式:

·     Dial-in模式:设备作为gRPC服务器,采集器作为gRPC客户端。由采集器主动向设备发起gRPC连接并订阅需要采集的数据信息。

Dial-in模式适用于小规模网络以及采集器需要向设备下发配置的场景。

Dial-in模式支持以下操作:

¡     Get操作:获取设备运行状态和运行配置,以及向设备订阅事件。

¡     gNMI类操作,具体包括:

-     gNMI Capabilities操作:获取设备的能力集。

-     gNMI Get操作:获取设备运行状态和运行配置。

-     gNMI Set操作:向设备下发配置。

-     gNMI Subscribe操作:向设备订阅数据推送服务,包括事件触发类数据和周期采样类数据。

¡     CLI操作:向设备下发命令行。

·     Dial-out模式:设备作为gRPC客户端,采集器作为gRPC服务器。设备主动和采集器建立gRPC连接,将设备上配置的订阅数据推送给采集器。

Dial-out模式适用于网络设备较多的情况下向采集器提供设备数据信息。

说明

gNMIgRPC Network Management InterfacegRPC网络管理接口)是基于gRPC框架开发的一种操作协议,定义了一系列用于设备状态获取和配置操作的RPC方法。gNMI支持通用数据模型,不需要为内容层额外提供业务模块.proto文件。

 

2.2  gRPC可采集的数据信息

gRPC可采集的数据信息主要包括:

·     设备状态信息:例如CPU和内存状态。

·     物理接口状态信息:例如光模块状态和接口的带宽利用率。

·     接口的报文/队列统计数据:例如接口丢包和错包统计、队列丢包统计、队列Buffer资源占用状态。

·     表项/资源数据:例如转发表项资源、ACL流表资源和虚拟接口资源的使用情况。

2.3  基于gRPCTelemetry应用场景

4所示,设备(SW ASW B)作为gRPC客户端,采用Dial-out模式主动向采集和分析器上报事件数据。采集和分析器(作为gRPC服务器)通过上报的事件可以感知设备的业务状态,以便进行网络的状态和健康度分析,实现状态可视化。

图4 基于gRPCTelemetry应用场景图

 

基于INTTelemetry

3.1  INT概述

3.1.1  产生背景

在传统网络中,我们对报文做转发路径探测时,经常会使用雷达探测技术。但是雷达探测技术,需要控制器软件的干预。由于没有硬件的支持,一系列的设计实现都比较复杂,而且还不能完全模拟真实的报文转发。

PingTracert功能虽然可以定位网络延时和路径,但都不是很精确的方法。在对时延要求比较高的网络中,这两种方法都不能精准的定位出在哪台设备的哪个端口上转发最耗时,因而不能有针对性地优化网络架构。INTIn-band Telemetry,带内遥测)技术正是为了满足这一需求而生。

INT作为可视化技术的一个重要组成部分,让网络管理和运维走向真正自动化的第一步,也是最关键的一步。通过INT技术,我们可以获知报文实际转发路径上的每台网络设备信息、报文在每台设备上的入出端口和队列信息、以及相应的时间戳信息等。

3.1.2  技术优点

通过INT技术,我们可以监测到报文转发路径上每台设备的入出端口和队列信息、入出设备的时间戳信息、队列的拥塞信息等;并且在路径探测的最后一跳上,将收集到的数据封装成UDP数据发送给采集器。最终通过部署在采集器上的网管软件,对监测数据进行分析,提取有用信息。

INT技术的主要优点有:

·     设备使用专用的INT处理器完成INT业务的处理。

·     管理员仅需对设备下发一次INT配置即可,INT采集数据会持续上报给采集器。

·     支持配置采样集数据的采样率。

·     通过QoS策略或ACL,可以灵活地调整需要进行路径探测的报文范围。

·     在路径探测的最后一跳,直接封装报文并发送给采集器。

·     收集探测路径上每台设备的设备信息、接口信息、队列信息、时间戳信息和转发路径信息等。

3.1.3  技术标准化

目前,INT技术已经在IETFInband Flow Analyzer draft-kumar-ippm-ifa-02草案中定义。在该草案中,对INT报文的固有头部和meta-data(即监测信息)的数据格式做了详细说明。对于支持该草案的网络设备来说,理论上可以实现INT报文分析处理的互通。

3.2  INT组网模型

根据配置方式和运行机制的不同,INT又分为普通型INT和灵活型INT

·     普通型INT:每个节点的设备需要在入接口配置设备在INT网络中的角色。首节点通过QoS策略定义数据流,中间节点和尾节点自动识别INT报文并对报文进行相应的INT处理。因此,流量转发路径的每个入接口上都只支持对首节点定义的数据流进行INT处理。

·     灵活型INT:不需要配置设备在INT网络中的角色,每个节点的设备都可以通过ACL定义数据流(对于同一条流,首节点匹配原始报文,中间节点和尾节点匹配INT报文),并针对该数据流配置相应的INT处理动作(例如首节点上的镜像动作和添加采集信息动作)。设备支持在同一接口上通过ACL匹配多条数据流并针对不同的数据流分别配置INT处理动作。

图5 INT组网模型

 

3.3  INT报文格式

3.3.1  INT报文头组成及封装位置

INT报文头包括INT Probe HDRINT固有头部)和MD #1N(监测信息meta-data)两部分。INT报文头的封装位置如6所示。根据传输层协议的不同,INT报文可以分为INT over TCPINT over UDP两种类型:

·     INT over TCP报文:对原始TCP报文进行镜像复制,并在TCP头后插入INT报文头。

·     INT over UDP报文:对原始UDP报文进行镜像复制,并在UDP头后插入INT报文头。

图6 INT报文格式

 

3.3.2  INT固有头部格式

图7 INT固有头部格式

 

INT报文固有头部格式如7所示,各字段含义如下:

·     Probe Maker:设备通过此字段识别INT报文,目前固定填充为0xaaaaaaaabbbbbbbb

·     Version:目前固定填充为0x01

·     Message Type:消息类型,目前固定填充为0x01

·     Flags:保留字段,目前固定填充为0x0000

·     Telemetry Request Vector:目前固定填充为0xffffffff

·     Hop Limit:最大跳数。

·     Hop Count:报文已经过网络节点数量。

·     Must Be Zero:目前固定填充为全0

·     Maximum LengthINT报文采集数据的最大长度,单位为字节。

·     Current LengthINT报文采集数据的当前长度,单位为字节。

·     Sender`s Handle:由首节点自动填充,采集器根据此字段识别INT流,唯一标识流。

·     Sequence NumberINT流中报文的序号,同一个流中报文的唯一标识。

3.3.3  INT监测信息meta-data格式

说明

对于INT报文格式,不同产品实现情况不同,请以实际情况为准。

 

图8 INT监测信息meta-data格式

 

INT监测信息meta-data格式如8所示,各字段含义如下:

·     Device-ID:设备ID

·     Template-Id:保留字段,目前固定填充为000

·     Congestion:拥塞标志位,即ECN。高3位固定填充0,低2位为ECN域。

·     Egress Port Drop Pkt Byte Cnt Upper:出接口丢包数,单位为字节,目前固定填充为0x00

·     IP_TTL:报文的TTL值。

·     Queue-Id:出接口队列ID,目前固定填充为0x00

·     Rx Timestamp Seconds Upper/Rx Timestamp Seconds:入接口时间戳,单位为秒。

·     Rx Timestamp Nano-Seconds Upper:入接口时间戳,单位为纳秒。

·     Tx Timestamp Nano-Seconds Upper:出接口时间戳,单位为纳秒。

·     Egress Port Utilization [%]:出接口利用率,目前固定填充为0x0000

·     Ingress Port [module, port]:入接口标识。

·     Egress Port [module, port]:出接口标识。

·     Egress Port Drop Pkt Byte Cnt:出接口丢包数,单位为字节,目前固定填充为0x00000000

3.4  运行机制

3.4.1  普通型INT

普通型INT中各节点实现功能如下:

·     首节点

流量入接口上通过QoS策略将命中规则的报文镜像、采样至设备内部的INT处理器。处理器对其添加INT报文头,然后将INT报文环回至入接口。入接口根据INT标记自动识别INT报文,添加采集信息,查表转发。出接口添加采集信息,并发送给中间节点。

·     中间节点

流量入接口根据INT标记自动识别INT报文,添加采集信息,查表转发。出接口添加采集信息,发送给尾节点。

·     尾节点

流量入接口根据INT标记自动识别INT报文,添加采集信息,上送至INT处理器,INT处理器将INT报文封装在新的UDP报文中,然后查表转发至出接口,发送给采集器。

3.4.2  灵活型INT

以同一条流的INT处理为例,灵活型INT中各节点实现功能如下:

·     首节点

入接口通过ACL对原始报文进行筛选,命中规则的报文被镜像、采样至设备内部的INT处理器。处理器为其添加INT报文头,然后将INT报文环回至入接口。入接口通过ACL筛选出本机环回INT报文,对其添加采集信息,查表转发。出接口添加采集信息,并发送给中间节点。

·     中间节点

入接口通过ACL筛选出INT报文,为命中规则的报文添加采集信息后,查表转发。出接口添加采集信息,发送给尾节点。

·     尾节点

入接口通过ACL筛选出INT报文,命中规则的报文被镜像至INT处理器,INT处理器将INT报文封装在UDP报文中,然后查表转发至出接口,发送给采集器。

3.4.3  不同网络中INT的运行机制

INT在普通网络和EVPN/VXLAN网络中运行机制如910所示。

图9 INT在普通网络中的运行机制示意图

 

图10 INTEVPN/VXLAN网络中的运行机制示意图

 

3.5  INT可采集的数据信息

INT可监测的数据信息主要有:

·     设备ID

报文转发路径上,每台设备的设备ID,即配置INT功能时指定的设备ID

·     流量入接口ID

报文在INT网络各个节点的逻辑入接口。

·     入接口时间戳

报文从各个节点的流量入接口进入设备时的设备本地时间。对于首节点来说,是INT报文进入环回口的时间。

·     流量出接口ID

报文在INT网络各个节点的逻辑出接口。

·     出接口时间戳

报文从各个节点的流量出接口离开设备时的设备本地时间。

·     缓存信息

¡     缓存原始报文的队列ID

¡     ECN信息

基于ERSPANTelemetry

4.1  简介

ERSPANEncapsulated Remote Switch Port Analyzer,封装远程端口镜像)是一种三层远程镜像技术,通过复制指定端口、VLANCPU的报文,并通过GRE隧道将复制的报文发送到远程数据监测设备,使用户可以利用数据监测设备分析这些报文(称为镜像报文),以进行网络监控和故障排除。

ERSPAN支持端口镜像和流镜像两种实现方式。

4.2  报文封装格式

ERSPAN将镜像报文封装为协议号为0x88BEGRE报文,如图11所示。

图11 ERSPAN报文封装格式

 

ERSPAN为镜像报文添加ERSPAN头后,重新计算CRC,并为报文添加GRE头和IPv4报文头。GRE头和ERSPAN头中的关键字段含义为:

·     GRE头:

¡     标记位:S比特取值为1,表示可以通过序列号检查报文是否乱序;其余标记位取值为0

¡     版本号:取值为0

¡     协议类型:取值为0x88BE,表示GRE的乘客协议为ERSPAN type II

¡     序列号:报文的序列号,每增加一个报文,序列号加1

·     ERSPAN

¡     版本号:ERSPAN封装的版本,ERSPAN type II取值为1

¡     VLAN:镜像报文的原始VLAN

¡     CoS:镜像报文的原始CoSClass of Service,服务等级)。

¡     EnERSPAN流量源端口的数据帧封装类型。取值00表示不携带VLAN标签;01表示ISL封装;10表示802.1Q封装;11表示数据帧中携带VLAN标签。

¡     T:取值为1表示由于镜像报文超过接口的MTUERSPAN报文中封装的数据帧被进行了分片。

¡     Session IDERSPAN会话的标识,也称为ERSPAN ID。在同一个源和目的设备之间必须唯一。

¡     IndexERSPAN流量源端口和镜像方向的索引。

4.3  端口镜像方式的ERSPAN

4.3.1  网络构成

端口镜像方式的ERSPAN网络由以下几部分构成:

·     镜像源:被监控的对象,可以是端口、VLANCPU,分别称为源端口、源VLAN和源CPU。经镜像源收发的报文会被复制一份,并发送到数据监测设备,以便对镜像报文进行监控和分析。

·     源设备:镜像源所在的设备。

·     镜像目的:镜像报文所要到达的目的地,即与数据监测设备相连的端口,该端口称为目的端口。目的端口会将镜像报文转发给与之相连的数据监测设备。

·     目的设备:目的端口所在的设备称为目的设备。

·     数据监测设备:接收镜像报文、对镜像报文进行分析处理的设备。

4.3.2  工作机制

端口镜像方式的ERSPAN又分为Tunnel和配置封装参数两种方式。

1. Tunnel方式

Tunnel方式ERSPAN需要在源设备和目的设备上均指定各自的镜像源和目的端口。

·     在源设备上

¡     源端口为待监控的端口。

¡     VLAN为待监控的端口所在的VLAN

¡     CPU为待监控的端口所在的CPU

¡     目的端口为用于传输镜像报文的Tunnel接口。

·     在目的设备上

¡     源端口为Tunnel接口对应的物理端口。

¡     VLANTunnel接口对应物理端口所在的VLAN

¡     目的端口为连接数据监测设备的端口。

Tunnel方式三层远程端口镜像报文的转发过程如12所示。

(1)     源设备将镜像源的入方向(收到的报文)、出方向(发出的报文)或双向(收到和发出的报文)报文复制一份给Tunnel接口(即目的端口)。

(2)     报文经由GRE隧道转发至目的设备端的Tunnel接口。

(3)     目的设备从该Tunnel接口对应的物理接口(即源端口)收到镜像报文后,将其复制一份给目的端口。

(4)     由目的设备上的目的端口将镜像报文转发到数据监测设备。

图12 Tunnel方式三层远程端口镜像示意图

2. 配置封装参数方式

配置封装参数方式ERSPAN仅需在源设备上指定镜像源和目的端口。指定目的端口时,需要同时指定镜像报文封装的目的IP地址为监测设备的地址,源IP地址为目的端口的IP地址。

13所示,配置封装参数方式ERSPAN报文的转发过程为:

(1)     源设备将镜像源的入方向(收到的报文)、出方向(发出的报文)或双向(收到和发出的报文)报文复制一份。

(2)     源设备为复制的报文添加ERSPAN封装,封装的源IP地址为目的端口的IP地址20.1.1.1,目的IP地址为监测设备的IP地址40.1.1.2

(3)     封装后的报文通过IP网络路由转发到监测设备。

(4)     监测设备对报文进行解封装,并分析镜像报文的内容。

由于镜像到监测设备的报文为封装后的报文,因此监测设备必须支持报文解封装。

图13 配置封装参数方式三层远程端口镜像示意图

 

 

4.4  流镜像方式的ERSPAN

4.4.1  简介

流镜像是指将指定报文复制到指定目的地,以便于对报文进行分析和监控。

流镜像通过QoS实现,设备先通过流分类匹配待镜像的报文,再通过流行为将符合条件的报文镜像至指定目的地。该方式可以灵活配置报文的匹配条件,从而对报文进行精细区分,并将区分后的报文镜像到目的地。

当流镜像的目的地为接口时,可以通过流镜像实现ERSPAN

4.4.2  工作机制

14所示,流镜像方式ERSPAN的工作机制为:

(1)     源设备上,配置流分类来匹配待镜像的报文,配置流行为将符合条件的报文镜像到接口,配置QoS策略为流分类指定流行为,并应用QoS策略。

(2)     源设备接收到符合流分类规则的报文后,复制一份该报文。

(3)     源设备为复制的报文添加ERSPAN封装,封装的源IP地址为20.1.1.1,目的IP地址为监测设备的IP地址40.1.1.2

(4)     封装后的报文通过IP网络路由转发到监测设备。

(5)     监测设备对报文进行解封装,并分析镜像报文的内容。

由于镜像到监测设备的报文为封装后的报文,因此监测设备必须支持报文解封装。

图14 流镜像方式ERSPAN示意图

 

4.5  基于ERSPANTelemetry应用场景

ERSPAN可以将用户感兴趣的报文(如某个端口接收到的报文)通过隧道镜像到远端分析器。分析器通过分析镜像报文,了解网络的状况,例如:

·     如果镜像报文中包括TCP三次握手报文,则可以监控TCP连接建立情况。

·     如果镜像报文中包括RDMARemote Direct Memory Access,远程直接内存访问)信令报文,则可以监控RDMA会话状态。

图15 基于ERSPANTelemetry应用场景图

 

15中,管理员通过基于ERSPANTelemetry监控源和目的间的TCP连接状态,监控过程为:

(1)     源端发起TCP连接建立请求,向目的端发送TCP SYN报文。

(2)     沿途交换机捕获TCP SYN报文,将其封装为ERSPAN镜像报文,通过GRE隧道将镜像报文发送到远端的分析器。

(3)     分析器解封装ERSPAN镜像报文,并对其进行分析。

(4)     沿途交换机捕获后续TCP控制报文(SYN/FIN/RST报文)并发送给分析器。

(5)     分析器根据接收到的ERSPAN镜像报文获取报文转发路径。配合Telemetry实时上报的接口队列信息,还可以实现应用体验分析。

 

联系我们