一种数据传输方法及装置与流程

文档序号:29934072发布日期:2022-05-07 13:18阅读:107来源:国知局
一种数据传输方法及装置与流程

1.本技术涉及通信技术领域,特别涉及一种数据传输方法及装置。


背景技术:

2.随着互联网的高速发展,以太网对于高性能、高效率、大容量数据的传输提出了更高要求,在这一类对实时性及传输速率有一定要求的应用当中,网络终端对于数据传输的处理能力成了制约此类项目发展的重要因素。
3.目前,i/o已无法满足数据的高速处理需求,其主要原因是tcp/ip协议的处理速度低于网络的速度。若要全速处理tcp/ip网络协议栈,就需要耗费大量服务器的cpu资源,这成为了网络瓶颈。
4.传统的用户数据包协议(user datagram protocol,简称udp)虽然通信效率高,但可靠性差,不适合可靠性要求较高的应用环境。但随着网络传输的快速发展,某些应用场合需要在保证高效性的基础上,提高通信双方传输的可靠性。


技术实现要素:

5.本技术提供了一种数据传输方法及装置,能够保证数据传输的高效性和可靠性。
6.第一方面,本技术提供了一种数据传输方法,所述方法应用于一种配置有现场可编程逻辑门阵列fpga的终端设备,所述fpga用于实现基于用户数据包协议udp的数据传输,所述方法包括:
7.当数据接收方接收到一个基于udp协议的数据段后,更新接收窗口大小,所述接收窗口大小是指所述数据接收方在当前可接收的数据大小;
8.根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,以便所述数据接收方的接收队列不会出现数据溢出现象,所述数据移送量是指从所述数据发送方的数据缓冲区移送至发送队列中的数据。
9.可选的,所述根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,包括:
10.通过对数据发送方的数据移送量进行控制,使未确认数据量小于所述接收窗口大小,其中,所述未确认数据量是指从所述发送队列所发出的、未被确认接收的数据段的数量。
11.可选的,所述根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,包括:
12.在所述发送队列所发送的各个数据段中,确定未被接收确认的各个数据段中的最小数据段编号,作为未确认最小数据编号;
13.确定下一个待发送数段的数据段编号,作为待发送数据编号;
14.根据所述接收窗口大小、所述未确认最小数据编号、以及所述待发送数据编号,对数据发送方的数据移送量进行控制。
15.可选的,所述根据所述接收窗口大小、所述未确认最小数据编号、以及所述待发送数据编号,对数据发送方的数据移送量进行控制,包括:
16.使数据发送方的数据移送量,不超过数据量阈值;
17.其中,所述数据量阈值=所述未确认最小数据编号+所述接收窗口大小-所述待发送数据编号。
18.可选的,所述方法还包括:
19.对于所述数据发送方依次发送的各个数据段,判断是否存在未被接收确认的目标数据段,若是,则使所述数据发送方重传所述目标数据段;
20.其中,所述目标数据段是所述数据发送方所发送的最后一个数据段之前的任一未被接收确认的数据段。
21.可选的,所述使所述数据发送方重传所述目标数据段,包括:
22.使所述数据发送方对所述目标数据段进行丢包重传或超时重传。
23.可选的,所述fpga还用于实现基于ip层和mac层的数据传输。
24.第二方面,本技术提供了一种数据传输装置,所述装置应用于一种配置有现场可编程逻辑门阵列fpga的终端设备,所述fpga用于实现基于用户数据包协议udp的数据传输,所述装置包括:
25.窗口更新单元,用于当数据接收方接收到一个基于udp协议的数据段后,更新接收窗口大小,所述接收窗口大小是指所述数据接收方在当前可接收的数据大小;
26.数据移送单元,用于根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,以便所述数据接收方的接收队列不会出现数据溢出现象,所述数据移送量是指从所述数据发送方的数据缓冲区移送至发送队列中的数据。
27.可选的,所述数据移送单元,具体用于:
28.通过对数据发送方的数据移送量进行控制,使未确认数据量小于所述接收窗口大小,其中,所述未确认数据量是指从所述发送队列所发出的、未被确认接收的数据段的数量。
29.可选的,所述数据移送单元,包括:
30.第一确定子单元,用于在所述发送队列所发送的各个数据段中,确定未被接收确认的各个数据段中的最小数据段编号,作为未确认最小数据编号;
31.第二确定子单元,用于确定下一个待发送数段的数据段编号,作为待发送数据编号;
32.数据移送子单元,用于根据所述接收窗口大小、所述未确认最小数据编号、以及所述待发送数据编号,对数据发送方的数据移送量进行控制。
33.可选的,所述数据移送子单元,具体用于:
34.使数据发送方的数据移送量,不超过数据量阈值;其中,所述数据量阈值=所述未确认最小数据编号+所述接收窗口大小-所述待发送数据编号。
35.可选的,所述装置还包括:
36.数据重传单元,用于对于所述数据发送方依次发送的各个数据段,判断是否存在未被接收确认的目标数据段,若是,则使所述数据发送方重传所述目标数据段;其中,所述目标数据段是所述数据发送方所发送的最后一个数据段之前的任一未被接收确认的数据
段。
37.可选的,所述数据重传单元在使所述数据发送方重传所述目标数据段时,具体用于:使所述数据发送方对所述目标数据段进行丢包重传或超时重传。
38.可选的,所述fpga还用于实现基于ip层和mac层的数据传输。
39.在以上本技术提供的技术方案中,应用于一种配置有现场可编程逻辑门阵列fpga的终端设备,fpga用于实现基于用户数据包协议udp的数据传输,具体地,当数据接收方接收到一个基于udp协议的数据段后,更新接收窗口大小,接收窗口大小是指数据接收方在当前可接收的数据大小;根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,以便数据接收方的接收队列不会出现数据溢出现象,数据移送量是指从数据发送方的数据缓冲区移送至发送队列中的数据。可见,本技术以fpga可编程逻辑器件为基础,实现了udp/ip协议栈,可以支持千兆/万兆以太网,通过利用udp传输速率,实现了数据传输的高效性,而且,通过对数据发送方的数据移送量进行控制,增加了数据传输的可靠性。
附图说明
40.图1为本技术示出的基于fpga可编程逻辑器件的可靠udp传输协议处理架构示意图;
41.图2为本技术示出的fpga逻辑框图;
42.图3为本技术示出的udp可靠传输机制示意图;
43.图4为本技术示出的数据段格式示意图;
44.图5为本技术示出的数据收发流控示意图;
45.图6为本技术示出的一种数据传输方法的流程示意图;
46.图7为本技术示出的发送队列示意图;
47.图8为本技术示出的数据重传示意图;
48.图9为本技术示出的确认报文接收顺序示意图;
49.图10为本技术示出的硬件电路总体功能框图;
50.图11为本技术示出的一种数据传输装置的组成示意图。
具体实施方式
51.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
52.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
53.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第
一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
54.在介绍本技术实施例之前,首先对本技术实施例涉及的一些技术术语进行介绍。
55.fpga(field-programmable gate array),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
56.tcp(transmission control protocol),即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
57.udp(user datagram protocol),即用户数据包协议,其主要作用是将网络数据流量组成数据包形式,提供面向事务的简单信息传送服务。
58.arp(address resolution protocol),即地址解析协议,它工作在数据链路层,实现ip地址到网络接口层地址的转换功能。以太网设备间通信不仅需要对方的ip地址,还需要对方的物理地址。
59.icmp(internetcontrolmessageprotocol),即internet控制报文协议,它是tcp/ip协议族的一个子协议,用于在ip主机、路由器之间传递控制信息。
60.phy(physical),即端口物理层,是一个对osi模型物理层的共同简称。而以太网是一个操作osi模型物理层的设备。一个以太网phy是一个芯片,可以发送和接收以太网的数据帧。
61.mac(media access control),即媒体访问控制层协议,该协议位于osi七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。
62.本技术实施例提供了一种数据传输方法,该方法应用于一种配置有现场可编程逻辑门阵列fpga的终端设备,fpga可用于实现基于udp协议的数据传输。进一步地,fpga还可以用于实现基于ip层和mac层的数据传输。
63.具体来讲,本技术实施例可以采用fpga芯片处理tcp/ip协议栈,将原本在网络协议栈中进行的管理、校验和计算等操作转移到fpga中进行,以极小的硬件电路为代价,大幅度解放cpu资源,可以很大程度上提升终端设备处理网络数据的能力。由于tcp/ip协议是一个协议簇,其包括很多协议,udp便是其中的一个协议,本技术实施例在传统的udp协议基础上,提供一种基于fpga可编程逻辑器件的可靠udp传输机制,这是一种端到端的控制机制,目的在于提高数据传输的带宽以及性能,即,提高数据传输的高效性和可靠性。
64.参见图1,为本技术实施例提供的基于fpga可编程逻辑器件的可靠udp传输协议处理架构示意图。图中全部为verilog语言实现的硬件逻辑电路模块和ip核,verilog语言是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
65.在图1中,主要包括以太网子系统(ethernet subsytem)ip核,该ip核可以是xilinx(赛灵思)的万兆以太网子系统ip核(10g ethernet sub),还包括mac层组包发包模块、ip层组包发包模块、udp层组包发包模块,此外,还涉及arp地址解析协议和icmp协议。
66.为了更好地理解本技术实施例,下面结合图2所示的fpga逻辑框图作进一步的详细说明。
67.在图2中,可以利用ethernet subsytemip核实现以太网的mac层和物理层phy协议。其中,mac部分主要完成帧定界、同步、寻址、错误检测等任务;物理层phy完成数据的编解码、串化和接串等功能;arp模块接受arp请求,产生arp应答报文;packet detection报文检测模块完成数据报文的协议识别和解析;ipv4模块完成ip层的组包和拆包;icmp模块识别icmp回显请求,并输出回显应答报文;udp模块完成udp协议的封包和解包功能,同时在传统的udp协议上添加丢包错误重传机制,确保数据的可靠性传输;arbitration模块实现用户数据多端口的仲裁和输出。
68.需要说明的是,在本技术实施例中,协议的实现采用分层设计的方法,使协议各层间相互独立,层间的标准接口方便了工程模块化,信令简化,便于维护。模块化的设计允许单独对某个协议进行更新。
69.关于udp部分,在传统的udp协议上加上了可靠传输机制,udp是双向的,所有的实体具有相同的结构。参见图3所示的udp可靠传输机制示意图,当数据需要发送时,将被发送的数据发到发送方sender的数据队列中,然后,被sender封装成数据段格式发送给底层的udp channel(即udp通道)。其中,封装的数据段格式,可以是图4所示的数据段格式。
70.可见,本技术实施例中以fpga可编程逻辑器件为基础,用verilog语言实现了一套了完整的udp/ip协议栈,支持千兆/万兆以太网。而且,本技术实施例还在传统的udp协议上增加了可靠传输机制,既利用了udp传输速率,又增加了可靠性。
71.下面结合图3和图4、以及图5所示的数据收发流控示意图,对本技术实施例提供的数据传输方法进行具体介绍。
72.参见图6,为本技术实施例提供的一种数据传输方法的流程示意图,该方法包括以下步骤:
73.s601:当数据接收方接收到一个基于udp协议的数据段后,更新接收窗口大小,其中,接收窗口大小是指数据接收方在当前可接收的数据大小。
74.需要说明的是,正常情况下,本技术实施例的数据发送方在发送某个报文后,数据接收方会接收到针对该报文的确认报文(含ack确认号)。可以以图4所示的数据段格式进行报文数据的发送或接收。
75.在本技术实施例中,当数据接收方接收到一个基于udp协议的数据段后,可以采用类似tcp的滑动窗口方式,来进行流量控制。参见图3和5,当接收方receiver每接收到一个数据段后,便对接收窗口大小rwnd进行更新,该接收窗口大小rwnd表示接收方receiver目前可以接收到的数据大小。
76.其中,接收窗口大小rwnd可位于接收数据段的帧头中,比如图4所示的16位窗口大小。
77.s602:根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,以便数据接收方的接收队列不会出现数据溢出现象,其中,数据移送量是指从数据发送方的数据缓冲区移送至发送队列中的数据。
78.在本技术实施例中,参见图3,发送方sender会把数据缓冲区sender buffer中的数据,移至sender发送队列。但需要对移动的数据量进行控制,确保发送方sender发送的数据,不会让接收方receiver的接收队列溢出。接收方receiver每次会解出接受数据段中的接收窗口大小rwnd,并告诉发送方sender还能接受多少数据,发送方sender则会根据接受
数据段中的rwnd来进行流控,确保自己发送的数据不多于接收方receiver可以接受的数据大小。
79.图5所示的flow control流量控制,就是根据接收方receiver的缓冲区情况发送流控报文,防止接收方receiver的缓冲区溢出。发送方sender的速度要匹配接收(处理)数据的速度。发送方sender要抑制数据的发送速率,以便接收方receiver来的及接受数据。
80.在本技术实施例的一种实现方式中,s602中的“根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制”,可以包括:通过对数据发送方的数据移送量进行控制,使未确认数据量小于接收窗口大小,其中,未确认数据量是指从发送队列所发出的、未被确认接收的数据段的数量。
81.对本实现方式进行举例说明,参见图7所示的发送队列示意图。图7示出了某一时刻的snd_buf发送队列,图中未被确认的数据段最小编号snd_unack为8,下一个待发送的数据段的编号snd_nxt为11,接收解出的窗口大小rwnd为6。图中8、9、10数据段是所有没有被确认的数据段,这部分数据段可能正在发送和接收的数据链路上传输。为了避免接收方receiver的接收队列溢出,需要限制这部分的区域小于rwnd,即限制未确认数据量小于rwnd。
82.在本技术实施例的一种实现方式中,s602中的“根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制”,可以包括:
83.在发送队列所发送的各个数据段中,确定未被接收确认的各个数据段中的最小数据段编号,作为未确认最小数据编号;确定下一个待发送数段的数据段编号,作为待发送数据编号;根据接收窗口大小、未确认最小数据编号、以及待发送数据编号,对数据发送方的数据移送量进行控制。
84.其中,在根据接收窗口大小、未确认最小数据编号、以及待发送数据编号,对数据发送方的数据移送量进行控制时,具体可以使数据发送方的数据移送量,不超过数据量阈值,其中,数据量阈值=未确认最小数据编号+接收窗口大小-待发送数据编号。即,数据移送量不会超过数据量阈值send_unack+rwnd-snd_nxt,确保发送的数据不会让接收方的接受队列溢出,其中,send_unack为未确认最小数据编号,rwnd为接收窗口大小,snd_nxt为待发送数据编号,比如图7中,send_unack为8,snd_nxt为11,rwnd为6。
85.此外,在连接的另一侧,接收方receiver从底层udp channel获取数据,转发给接收方receiver的缓冲区receiver buffer,并将数据进行reorder排序,同时判断数据报文有无丢失,并更新图3所示的丢失列表lostlist。
86.对于接收方receiver收到的数据,对其解包后会先放入缓存区receiver buffer中,再在合适的情况下转移到reorder中。这样做是因为报文传输的过程中可能会出现丢包、乱序等情况,为了保证顺序,需要将接收到的报文先放入缓存区receiver buffer中,只有当缓存区receiver buffer中的报文段顺序正确才能将其移动到reorder中,供用户接收。
87.举例来讲,参见图8所示的数据重传示意图,发送方sender的1、2、3、4号报文,分别对应于接收方receiver的1、2、3、4号报文,也就是说,正常情况下,由于接收方所接收的数据段中可以解出ack确认号,因此,关于sender发送的1号报文,receiver可以接收到1号报文对应的确认报文,关于sender发送的2号报文,receiver可以接收到2号报文对应的确认
报文,关于sender发送的3号报文,receiver可以接收到3号报文对应的确认报文,关于sender发送的4号报文,receiver可以接收到4号报文对应的确认报文。在图8中,接收方的缓冲区receiver buffer中的灰色节点表示接收方接收到的可以移动到reorder中的报文,但是,只有当2号确认报文到达后,才能将2、3、4号确认报文移动到reorder中,即,当receiver buffer中的报文段顺序正确才能将其移动到reorder中。
88.在现有技术中,udp协议属于无连接的用户数据包协议,传送数据之前不需要建立连接,收到udp报文后不需要给出任何确认,传输数据不可靠,容易丢数据包,适用于小文件传输。
89.为了解决上述丢包问题,本技术实施还可以包括:对于数据发送方依次发送的各个数据段,判断是否存在未被接收确认的目标数据段,若是,则使数据发送方重传该目标数据段,其中,该目标数据段是数据发送方所发送的最后一个数据段之前的任一未被接收确认的数据段。
90.具体来讲,以图8为例,对于接收方receiver所接受的1、2、3、4号确认报文,如果接收方receiver已经接收到了1、3、4号确认报文,但迟迟没有接收到2号确认报文,那么,发送方sender所发送的2号报文则为需要重传的目标数据段,故而,可以更新图3所示的loss list链表,以使发送方sender重新发送2号报文。
91.在本技术实施例的一种实现方式中,在使数据发送方重传目标数据段时,具体可以使数据发送方对目标数据段进行丢包重传或超时重传。
92.在本实现方式中,关于丢包重传,若接收方未接收到n号确认报文、但接收到了n+1、n+2
……
n+m号确认报文,则m越大,表示数据发送方所发送的n号报文的ack失序次数越多,从而表示数据发送方所发送的n号报文的丢包机率越大,因此,可以预先设置失序次数阈值,当n号报文的失序次数大于该阈值时,则数据发送方重传该n号报文。以图8所示的数据重传示意图和图9所示的确认报文接收顺序示意图为例,其中,图9表示依次接收到1、4、3号确认报文,可以设置失序次数阈值为2,基于此,假如发送方sender依次发送了1、2、3、4号报文,随后接收方receiver接收到1、3、4号确认报文,当收到3、4号确认报文时,更新图3所示的loss list,以便发送方sender重传该2号报文。
93.关于超时重传,若未接收到n号确认报文、但接收到了n+1号确认报文,则开始计时,判断计时时长ts(时间戳)是否超出预定时间阈值,若超过,则更新loss list以对n号报文进行超时重传。如图8和图9所示,当收到3号确认报文时,判断ts时间戳是否超出预定时间阈值,若超过,则可以更新图3所示的loss list,以便发送方sender重传该2号报文。
94.参见图10,为本技术实施例提供的硬件电路总体功能框图,其中的fpga可以实现上述介绍介绍的数据传输功能,即,以fpga可编程逻辑器件为基础,实现一套了完整的udp/ip协议栈,支持千兆/万兆以太网,而且,在传统的udp协议上增加了可靠传输机制,既利用了udp传输速率,又增加了可靠性。
95.在以上本技术实施例提供的数据传输方法中,该方法应用于一种配置有现场可编程逻辑门阵列fpga的终端设备,fpga用于实现基于用户数据包协议udp的数据传输,具体地,当数据接收方接收到一个基于udp协议的数据段后,更新接收窗口大小,接收窗口大小是指数据接收方在当前可接收的数据大小;根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,以便数据接收方的接收队列不会出现数据溢出现象,数据移送量是
指从数据发送方的数据缓冲区移送至发送队列中的数据。可见,本技术实施例以fpga可编程逻辑器件为基础,实现了udp/ip协议栈,可以支持千兆/万兆以太网,通过利用udp传输速率,实现了数据传输的高效性,而且,通过对数据发送方的数据移送量进行控制,增加了数据传输的可靠性。
96.参见图11,为本技术实施例提供的一种数据传输装置的组成示意图,该装置应用于一种配置有现场可编程逻辑门阵列fpga的终端设备,所述fpga用于实现基于用户数据包协议udp的数据传输,该装置包括:
97.窗口更新单元1101,用于当数据接收方接收到一个基于udp协议的数据段后,更新接收窗口大小,所述接收窗口大小是指所述数据接收方在当前可接收的数据大小;
98.数据移送单元1102,用于根据更新后的接收窗口大小,对数据发送方的数据移送量进行控制,以便所述数据接收方的接收队列不会出现数据溢出现象,所述数据移送量是指从所述数据发送方的数据缓冲区移送至发送队列中的数据。
99.在本技术实施例的一种实现方式中,所述数据移送单元1102,具体用于:
100.通过对数据发送方的数据移送量进行控制,使未确认数据量小于所述接收窗口大小,其中,所述未确认数据量是指从所述发送队列所发出的、未被确认接收的数据段的数量。
101.在本技术实施例的一种实现方式中,所述数据移送单元1102,包括:
102.第一确定子单元,用于在所述发送队列所发送的各个数据段中,确定未被接收确认的各个数据段中的最小数据段编号,作为未确认最小数据编号;
103.第二确定子单元,用于确定下一个待发送数段的数据段编号,作为待发送数据编号;
104.数据移送子单元,用于根据所述接收窗口大小、所述未确认最小数据编号、以及所述待发送数据编号,对数据发送方的数据移送量进行控制。
105.在本技术实施例的一种实现方式中,所述数据移送子单元,具体用于:
106.使数据发送方的数据移送量,不超过数据量阈值;
107.其中,所述数据量阈值=所述未确认最小数据编号+所述接收窗口大小-所述待发送数据编号。
108.在本技术实施例的一种实现方式中,所述装置还包括:
109.数据重传单元,用于对于所述数据发送方依次发送的各个数据段,判断是否存在未被接收确认的目标数据段,若是,则使所述数据发送方重传所述目标数据段;其中,所述目标数据段是所述数据发送方所发送的最后一个数据段之前的任一未被接收确认的数据段。
110.在本技术实施例的一种实现方式中,所述数据重传单元在使所述数据发送方重传所述目标数据段时,具体用于:
111.使所述数据发送方对所述目标数据段进行丢包重传或超时重传。
112.在本技术实施例的一种实现方式中,所述fpga还用于实现基于ip层和mac层的数据传输。
113.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
114.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
115.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1