NFV网络节点的元数据服务方法、服务器及存储介质与流程

文档序号:25490449发布日期:2021-06-15 21:55阅读:147来源:国知局
NFV网络节点的元数据服务方法、服务器及存储介质与流程

本发明实施例涉及通信技术领域,特别涉及一种nfv网络节点的数据服务方法、服务器及存储介质。



背景技术:

传统网络架构使用大量专用硬件设备,来提供防火墙、入侵防御、网络地址转换等网络功能。随着大数据、云计算等新兴行业的迅速发展,应用对网络的要求越来越高,部署新的应用往往需要新的专用设备和网络的支持,为网络运营成本和运维带来很大挑战。为应对这些问题,欧洲电信标准协会(europeantelecommunicationstandardsinstitute,etsi)提出网络功能虚拟化(networkfunctionvirtualization,nfv)。nfv技术利用普通商用服务器为网络功能提供虚拟机、容器等运行环境,用虚拟机或容器中运行的软件来替换网络中硬件设备,提高网络功能的灵活性,降低投资成本、研发成本和运维成本。传统的nfv网络节点一般采用基于内核态的协议栈来处理数据,为了提高nfv网络节点的性能,提出了基于用户态协议栈的nfv网络节点,采用基于dpdk的用户态协议栈实现,采用轮询方式的收包,在用户态处理数据报文,也就是说,在现有技术的nfv网络节点中引入新的基于用户态协议栈的nfv组件,从而形成新的nfv网络节点,新的nfv网络节点通过基于用户态协议栈nfv组件来提供路由转发、网络地址转换nat等网络节点功能,以提高nfv网络节点的性能。

然而,由于新的基于用户态协议栈的nfv网络节点仅设计了路由转发等相关的功能,现有的元数据服务框架,每个元数据代理均为独立进程,需要耗费较多资源,管理和运维较复杂,并且这些元数据代理进程依赖内核态协议栈,因此无法应用于新nfv网络节点。



技术实现要素:

本发明实施例的目的在于提供一种nfv网络节点的元数据服务方法、服务器及存储介质,使得基于用户态协议栈的nfv网络节点能够具有更好的性能且能够为用户提供元数据服务。

为解决上述技术问题,本发明的实施例提供了一种nfv网络节点的数据服务方法,包括:在基于用户态协议栈的网络层监听到客户端发送的元数据请求后,在网络层与元数据应用程序之间建立与客户端对应的代理通道;通过代理通道将元数据请求从网络层转发到元数据应用程序;通过元数据应用程序根据元数据请求向元数据服务中心获取元数据,并将获取的元数据通过代理通道转发至网络层;在网络层将元数据返回给客户端。

本发明的实施例还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的nfv网络节点的元数据服务方法。

本发明的实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的nfv网络节点的元数据服务方法。

本发明实施例相对于相关技术而言,在新的nfv组件所在的网络层监听客户端发送的元数据请求,并在网络层与元数据应用程序之间建立代理通道,通过代理通道将nfv组件在网络层监听到的元数据请求转发到元数据应用程序来进行元数据请求的处理以及相应元数据的获取,使得元数据请求的处理以及相应元数据的获取不消耗新nfv组件的性能,从而实现为新的nfv网络节点提供元数据服务的同时不影响新nfv组件的性能。

另外,本发明实施例中在网络层监听客户端发送的元数据请求之前,还包括:接收云平台下发的元数据服务配置命令,元数据服务配置命令携带各客户端对应用户元数据服务实例的用户配置信息;在网络层的的数据流进程中,根据用户配置信息为各客户端分别设置代理监听任务,代理监听任务与用户元数据服务实例一一对应,用于监听对应的客户端的元数据请求;其中,用户配置信息至少包括元数据服务监听ip和元数据服务监听端口。通过上述技术手段,可以在对新nfv组件性能影响较小的情况下实现在基于用户态协议栈的nfv组件中对客户端发送的元数据请求的监听。

另外,本发明实施例中代理监听任务的设置,包括:向用户态协议栈添加用户空间的元数据目的网络地址转换dnat规则;元数据dnat规则用于将用户空间的元数据请求的目的地址和目的端口转换为客户端的元数据服务监听ip和元数据服务监听端口;配置用于监听客户端的元数据服务监听ip和元数据服务监听端口的监听资源。通过以上技术手段,将客户端针对基于内核态协议栈的nfv网络节点的元数据请求导向新nfv组件中用户态协议栈tcp监听代理,从而保证了后续的元数据请求的处理。

另外,本发明实施例中根据网络层共享得的客户端信息,确定元数据请求对应的客户端;其中,客户端信息包括代理通道的信息和所述客户端的用户信息。由于网络层所共享的客户端信息中包括元数据请求中的原始源ip、端口与代理ip和代理端口的映射关系,使得元数据服务应用程序能够根据代理ip和代理端口确定出原始源ip和端口所指示的客户端,使得基于内核态协议栈实现的元数据服务应用程序能够识别元数据请求所对应的客户端,从而向元数据服务中心请求相应的元数据,实现元数据服务的提供。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。

图1是根据本申请第一实施例中nfv网络节点的元数据服务方法的流程图;

图2是根据本申请第一实施例中元数据服务框架的结构示意图;

图3是根据本申请第二实施例中nfv网络节点的元数据服务方法的流程图;

图4是根据本申请第二实施例中元数据请求在元数据服务框架中处理路径的示意图;

图5是根据本申请第三实施例中nfv网络节点的元数据服务装置的结构示意图;

图6是根据本申请第四实施例中服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

本发明的第一实施例涉及一种nfv网络节点的元数据服务方法,应用于引入基于用户态协议栈的nfv组件的nfv网络节点,具体包括:在基于用户态协议栈的网络层监听到客户端发送的元数据请求后,在网络层与元数据应用程序之间建立与客户端对应的代理通道;通过代理通道将元数据请求从网络层转发到元数据应用程序;通过元数据应用程序根据元数据请求向元数据服务中心获取元数据,并将获取的元数据通过代理通道转发至网络层;在网络层将元数据返回给客户端,使得元数据请求的处理以及相应元数据的获取不消耗新nfv组件的性能,从而实现为新的nfv网络节点提供元数据服务的同时不影响新nfv组件的性能。

下面对本实施例中的nfv网络节点的元数据服务方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。

本实施例中的nfv网络节点的元数据服务方法的流程如图1所示,具体包括:

步骤101,在网络层监听来自客户端的元数据请求。

具体地说,本实施例中的元数据服务框架的结构如图2所示,在网络层的新nfv组件中设有负载均衡lb进程以及数据流进程。其中,lb进程对接收到的数据报文进行识别,通过数据报文中的ip四元组对数据报文采用哈希算法进行负载均衡处理,将处理后的多组数据报文交给数据流进程。数据流进程基于用户态协议栈实现,主要提供用户隔离、路由转发、目的地址转发nat等功能。为了实现本实施例中的元数据服务,在应用层中设有元数据服务应用程序,在网络层中设有元数据服务模块。通过元数据服务应用程序接收云平台下发的元数据服务配置命令,所述元数据服务配置命令携带各客户端的用户配置信息,用户配置信息包括元数据服务监听ip和元数据服务监听端口。通过元数据服务应用程序将各客户端的用户配置信息传递给网络层中的元数据服务模块,由元数据服务模块为各客户端分别设置代理监听任务,代理监听任务与客户端一一对应,用于监听对应的客户端的元数据请求。也就是说,在数据流进程中还添加了用于监听客户端元数据请求的用户代理模块,即图2的元数据服务模块中的用户代理模块,用户代理模块与客户端一一对应,通过分析lb进程发送的数据报文监听对应的客户端的元数据请求。若监听到元数据请求中数据报文的目的ip和端口为对应的客户端的元数据服务监听ip和元数据服务监听端口,则视为监听到对应的客户端的元数据请求,进入步骤102。

步骤102,在网络层与元数据应用程序之间建立与客户端对应的代理通道。

步骤103,通过代理通道将元数据请求从网络层转发到元数据应用程序。

具体地说,代理通道建立在网络层数据流进程中的用户代理模块与元数据应用程序元数据服务应用程序的代理服务模块之间,用于传递网络层到元数据应用程序的元数据请求。数据流进程中的用户代理模块对接收到的数据报文进行监听,当通过用户代理模块监听到客户端的元数据请求时,通过预先从元数据服务应用程序获取的元数据应用程序代理信息,在网络层的用户代理模块和元数据应用程序的元数据服务应用程序之间创建代理通道,其中,元数据服务应用程序的代理信息,包括元数据服务应用程序中代理服务模块的相关接口信息,例如接收元数据请求的代理服务ip与代理服务端口等信息。

在一个例子中,数据流进程在通过代理通道转发元数据请求时,将元数据请求的ip四元组修改为与代理通道对应的四元组信息。同时,将客户端信息共享给元数据服务应用程序,客户端信息包括代理通道的相关信息和用户信息。修改四元组信息的具体过程包括:将元数据请求中的原始源ip、端口修改为用户代理模块的代理ip和代理端口;将元数据请求的目的ip、端口修改为元数据服务应用程序中的代理服务模块的代理服务ip和代理服务端口。

例如,当元数据服务应用程序的代理服务模块接收到新nfv组件中用户代理模块a(与客户端a对应的用户代理模块)通过代理通道转发的元数据请求时,由于元数据请求中的四元组信息的源地址和端口为用户代理模块a的代理ip和代理端口,因此元数据服务应用程序无法直接根据四元组信息确定元数据请求所对应的客户端,需要根据网络层共享的客户端信息确定元数据请求对应的客户端,从而识别出元数据请求所对应的用户,然后匹配处理该元数据请求所需要的资源。其中,由于网络层所共享的客户端信息中包括元数据请求中的原始源ip、端口与数据流进程中用户代理模块的代理ip和代理端口的映射关系,使得元数据服务应用程序能够根据代理ip和代理端口确定出原始源ip和端口所指示的客户端。

步骤104,在元数据应用程序根据元数据请求向元数据服务中心获取元数据。

步骤105,通过代理通道将元数据转发至网络层后,返回给对应的客户端。

具体地说,元数据应用程序的元数据服务应用程序接收网络层数据流进程中用户代理模块通过代理通道转发而来的元数据请求之后,进一步地,由图2中的代理服务模块根据元数据请求中修改后的四元组信息中的源ip和源端口,以及共享的客户端信息确定元数据请求对应的客户端,然后通过图2中所示的元数据处理模块发送元数据请求至元数据服务中心。当元数据服务中心接收到元数据请求后,根据元数据请求向元数据服务应用程序返回所请求的元数据,由元数据服务应用程序根据获取到的元数据构造响应报文后,通过代理通道将响应报文返回给网络层,再转发至对应的客户端,完成一个客户端元数据服务的全部过程,释放与该客户端对应的代理通道。

在一个例子中,在元数据服务应用程序向元数据服务中心获取元数据之前,还需要在预先创建的与各客户端对应的元数据管理资源中,获取发送元数据请求的客户端的元数据管理资源。将获取的元数据管理资源携带在所述元数据请求中,发送给元数据服务中心。具体的,元数据管理资源中包括客户端对应的元数据服务实例的用户身份标识和/或用户虚拟路由器配置信息。

需要说明的是,本实施例中的上述各示例均为方便理解进行的举例说明,并不对本发明的技术方案构成限定。

与现有技术相比,本实施例的nfv网络节点的元数据服务方法在现有技术的nfv网络节点中引入新的基于用户态协议栈的nfv组件,从而形成新的nfv网络节点,相较于现有技术,新的nfv网络节点通过基于用户态协议栈nfv组件来提供路由转发、nat等网络节点功能,能够提高网络节点的性能。同时,利用新的nfv组件在网络层与元数据应用程序之间建立代理通道,通过代理通道将nfv组件在网络层监听到的元数据请求转发到元数据应用程序的内核态协议栈来进行元数据请求的处理以及相应元数据的获取,将元数据服务的提供分成两个部分,由新nfv组件来提供元数据服务的代理转发功能,将元数据请求转发至元数据应用程序中的,实际的元数据请求交由基于元数据服务应用程序来处理并获取元数据,实现为新的nfv网络节点提供元数据服务,同时不影响新nfv组件的性能。

而且,由于在网络层监听到元数据请求后都转发到元数据应用程序中统一处理,即在网络层接收到任意一个客户端的元数据请求,均由元数据应用程序的元数据服务应用程序向元数据服务中心获取元数据,因此,可以通过单个进程管理所有用户元数据服务,而无需预先为各个客户端预先分配固定的资源和处理进程,因此大大降低了元数据服务所需要的资源,在管理和运维角度来说,更加的简单,能够提高管理和运维效率。

本发明的第二实施例涉及一种nfv网络节点的元数据服务方法。第二实施例与第一实施例大致相同,主要区别之处在于:在第二实施例中,设置代理监听任务具体包括:向用户态协议栈添加用户空间的元数据目的网络地址转换(destinationnetworkaddresstranslation,dnat)规则;元数据dnat规则用于将用户空间的元数据请求的目的地址和目的端口转换为客户端的元数据服务监听ip和元数据服务监听端口;配置用于监听客户端的元数据服务监听ip和元数据服务监听端口的监听资源。

下面结合附图对本实施例中的nfv网络节点的元数据服务方法进行具体说明,如图3所示,包括:

步骤301,在网络层设置代理监听任务,在网络层监听来自客户端的元数据请求。

具体的说,代理监听任务通过用户代理模块来进行实现,用户代理模块所监听的端口为客户端的元数据服务监听ip和元数据服务监听端口。由于为了实现同一网络资源的多个用户的复用,会为不同的用户分别配置对应的用户空间,在不同用户空间下,可以存在相同的元数据服务ip和元数据服务端口,因此,在本实施例中,需要向用户态协议栈添加用户空间的元数据目的网络地址转换dnat规则,以便将元数据请求dnat到监听的客户端的元数据服务监听ip和元数据服务监听端口。也就是说,为了元数据请求能够到达用户代理模块监听的ip和端口,需要进行一次dnat,将元数据请求的目的ip和端口转换为客户端的元数据服务监听ip和元数据服务监听端口,从而实现对元数据请求的监听。

进一步地,与各个客户端相对应的dnat规则在设置代理监听任务时添加到数据流进程的用户态协议栈中,在设置代理监听任务时,首先向用户态协议栈添加用户空间的元数据目的网络地址转换dnat规则,然后配置用于监听客户端的元数据服务监听ip和元数据服务监听端口的监听资源。实际的监听过程中,代理监听任务在代理ip和端口上接收到的报文进行抓包,识别出其中携带元数据请求的报文,并将携带元数据请求的报文通过代理通道转发至元数据服务应用程序。

步骤302,在网络层与元数据应用程序之间建立与客户端对应的代理通道。

步骤303,通过代理通道将元数据请求从网络层转发到元数据应用程序。

步骤304,通过元数据应用程序根据元数据请求向元数据服务中心获取元数据。

步骤305,通过代理通道将元数据转发至网络层后,返回给对应的客户端。

步骤302至步骤305与本申请第一实施例中的步骤102至步骤105相同,相关的实施细节已在本发明第一实施例中具体说明,在此不再赘述。

下面结合附图4,以一个具体的实现来对本实施例中nfv网络节点对元数据请求的处理流程进行详细说明。

本例子中请求元数据的客户端a和客户端b的ip与端口分别为:ipa1:porta1和ipb1:porta1。客户端发送的元数据请求a的原始四元组信息为:ipa1:porta1请求169.254.169.254:80;客户端发送的元数据请求b的原始四元组信息为:ipb1:portb1请求169.254.169.254:80。当元数据请求a和元数据请求b分别到达新nfv组件中用户态协议栈后,分别匹配用户空间a的dnat规则和用户空间b的dnat规则。此时将元数据请求a的目的地址修改为ipa2(客户端a的元数据服务监听ip):porta2(客户端a的元数据服务监听端口)、元数据请求b的目的地址修改为ipb2(客户端b的元数据服务监听ip):portb2(客户端b的元数据服务监听端口),即代理模块当前所监听的ip和端口。此时元数据请求a和b的四元组信息分别变为ipa1:porta1请求ipa2:porta2、ipb1:portb1请求ipb2:portb2。

然后将元数据请求a和b分别送往数据流进程中的元数据服务模块中用户a的代理模块和用户b的代理模块。代理模块a和代理模块b分别与元数据服务应用程序的代理服务模块建立代理通道a和代理通道b。用户a的代理模块和用户b的代理模块在将元数据请求a和元数据请求b的四元组信息修改为用户a代理ip:用户a代理port请求ipc:portc、用户b代理ip:用户b代理port请求ipc:portc以后,通过代理通道a和代理通道b分别将元数据请求a和元数据请求b转发至代理服务模块,同时向元数据服务应用程序共享用户配置信息和代理通道信息。即告知元数据服务应用程序元数据请求中四元组信息与代理通道以及客户端的对应关系,供代理服务模块确定各个元数据请求所对应的客户端。

然后代理服务模块将元数据请求a和元数据请求b分别发送至用户a和用户b的元数据处理模块,元数据处理模块根据用户配置信息和代理通道信息进行元数据请求的解析后,分别向元数据服务中心请求用户a和用户b的元数据。然后对获取到的用户a和用户b的元数据进行响应报文的构造,分别再通过代理通道携带元数据的响应报文a和响应报文b转发给网络层的数据流进程后,由数据流进程将响应报文a和响应报文b返回给客户端a和客户端b。

与现有技术相比,本实施例的nfv网络节点的元数据服务方法在现有技术的nfv网络节点中引入新的基于用户态协议栈的nfv组件,从而形成新的nfv网络节点,相较于现有技术,新的nfv网络节点通过基于用户态协议栈nfv组件来提供路由转发、nat等网络节点功能,能够提高网络节点的性能。同时,对用户态协议栈下用户空间接收的元数据请求进行dnat后,在确定的ip端口下监听元数据请求,利用新的nfv组件在网络层与元数据应用程序之间建立代理通道,通过代理通道将nfv组件在网络层监听到的元数据请求转发到元数据应用程序的内核态协议栈来进行元数据请求的处理以及相应元数据的获取,将元数据服务的提供分成两个部分,由新nfv组件来提供元数据服务的代理转发功能,将元数据请求转发至元数据应用程序中的,实际的元数据请求交由基于元数据服务应用程序来处理并获取元数据,实现为新的nfv网络节点提供元数据服务,同时不影响新nfv组件的性能。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第三实施例涉及一种nfv网络节点的元数据服务装置,如图5所示,包括:

请求监听模块501,用于在网络层监听到客户端发送的元数据请求后,在网络层与所述元数据应用程序之间建立与客户端对应的代理通道;通过代理通道将元数据请求从网络层转发到元数据应用程序。

元数据服务模块502,用于通过元数据应用程序根据元数据请求向元数据服务中心获取元数据,并将获取的元数据通过代理通道转发至网络层;在网络层将元数据返回给客户端。

在一个例子中,请求监听模块501还用于在网络层监听客户端发送的元数据请求之前,接收云平台下发的元数据服务配置命令,元数据服务配置命令携带各客户端的用户配置信息;在网络层的基于用户态协议栈的数据流进程中,根据用户配置信息为各客户端分别设置代理监听任务,代理监听任务与客户端一一对应,用于监听对应的客户端的元数据请求;其中,用户配置信息至少包括元数据服务监听ip和元数据服务监听端口。

在另一个例子中,请求监听模块501还用于设置代理监听任务,具体包括:向用户态协议栈添加用户空间的元数据目的网络地址转换dnat规则;元数据dnat规则用于将用户空间的元数据请求的目的地址和目的端口转换为客户端的元数据服务监听ip和元数据服务监听端口;配置用于监听客户端的元数据服务监听ip和元数据服务监听端口的监听资源。

在另一个例子中,请求监听模块501建立代理通道具体包括:根据元数据服务监听ip和元数据服务监听端口,在网络层与元数据应用程序之间建立与客户端对应的代理通道;通过代理通道将元数据请求从网络层转发到元数据应用程序,包括:将元数据请求的原始四元组信息修改为与代理通道对应的四元组信息;将四元组信息修改后的元数据请求发送至元数据应用程序。

在另一个例子中,元数据服务模块502还用于根据修改后的四元组信息中的源ip和源端口,确定元数据请求对应的客户端;将元数据请求的目的地址和目的端口,修改为对应的客户端的元数据服务ip和元数据服务端口后,发送元数据请求。

在另一个例子中,元数据服务模块502还用于根据网络层共享得的客户端信息,确定元数据请求对应的客户端;其中,客户端信息包括客户端的ip地址和ip端口,与元数据服务监听ip和元数据服务监听端口的对应关系。

在另一个例子中,元数据服务模块502还用于在通过元数据应用程序根据元数据请求向元数据服务中心获取元数据之前,在预先创建的各客户端的元数据管理资源中,获取发送元数据请求的客户端的元数据管理资源。并在发往元数据服务中心的元数据请求中携带元数据管理资源。其中,元数据管理资源包括客户端的身份标识和/或客户端的路由配置信息。

本实施例是与第一、第二实施例对应的虚拟装置实施例,由于第一、第二实施例与本实施例相互对应,因此本实施例可与第一、第二实施例互相配合实施。第一、第二实施例中提到的相关技术细节在本实施例中依然有效,在第一、第二实施例中所能达到的技术效果在本实施例中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一、第二实施例中。

本发明第四实施例涉及一种服务器,如图6所示,包括至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行第一、或第二实施例中的nfv网络节点的元数据服务方法。

其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器601处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器601。

处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器602可以被用于存储处理器601在执行操作时所使用的数据。

本发明第五实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1