CN114979839A - 一种传输控制协议代理方法及通信装置 - Google Patents

一种传输控制协议代理方法及通信装置 Download PDF

Info

Publication number
CN114979839A
CN114979839A CN202110221743.1A CN202110221743A CN114979839A CN 114979839 A CN114979839 A CN 114979839A CN 202110221743 A CN202110221743 A CN 202110221743A CN 114979839 A CN114979839 A CN 114979839A
Authority
CN
China
Prior art keywords
message
tcp
packet
home gateway
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110221743.1A
Other languages
English (en)
Other versions
CN114979839B (zh
Inventor
吴伟民
司小书
杜子豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110221743.1A priority Critical patent/CN114979839B/zh
Publication of CN114979839A publication Critical patent/CN114979839A/zh
Application granted granted Critical
Publication of CN114979839B publication Critical patent/CN114979839B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/0001Selecting arrangements for multiplex systems using optical switching
    • H04Q11/0062Network aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种TCP代理方法及通信装置,该方法包括:家庭网关接收来自服务器的第一TCP报文和第二TCP报文,并向服务器发送针对第一TCP报文和第二TCP报文的ACK报文;向第一ONT发送第一隧道报文和第二隧道报文。其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息。由于第一隧道报文中的标识信息可用于唯一标识第一隧道报文,第二隧道报文可用于唯一标识第二隧道报文,所以第一ONT可根据各个TCP报文的标识信息向家庭网关发送针对各个TCP报文的ACK,以准确指示各个终端设备是否接收到对应的TCP报文。

Description

一种传输控制协议代理方法及通信装置
技术领域
本申请实施例涉及光通信技术领域,尤其涉及一种传输控制协议(transmissioncontrol protocol,TCP)代理方法及通信装置。
背景技术
为了尽量避免发送端的数据发送速率的降低,提出了TCP代理技术。即在发送端和接收端之间增加一个中间节点(TCP代理点)。以发送端向接收端发送数据为例,发送端将数据发送给TCP代理点,TCP代理点接收并存储该数据,并向发送端发送确认(acknowledge,ACK)消息,以及向接收端发送该数据。对于发送端而言,接收到来自TCP代理点发送的ACK消息认为是接收端发送的ACK消息,即使TCP代理点和接收端之间发生丢包,由于发送端难以感知,发送端还是会按照之前的数据发送速率来发送数据,所以可尽量避免发送端降低发送数据的速率。
随着高覆盖率的需求,提出了光纤入户(fiber to the home,FTTH)技术。目前虽然实现了光纤到家,但是随着创新业务,例如超高清视频,云虚拟现实(virtual reality,VR)游戏,线上教育,远程办公等的发展,以及终端设备数量的增加,对带宽、时延都提出了较高要求,FTTH已不能很好的满足用户需求。为此,提出了光纤入房(fiber to the room,FTTR)技术。即光网络终端(optical network terminal,ONT)下行提供光纤介质接入到房间。在家中布置FTTR光网关,以FTTR光网关为核心向下连接多个边缘ONT,边缘ONT支持千兆以太网口,随着光纤进入各房间提供有线、无线的网络覆盖。
在FTTR的场景中,为了尽量避免发送端的数据发送速率的降低,也需要有TCP代理的解决方案。在FTTR的场景中,FTTR光网关连接多个ONT,每个ONT连接多个终端设备,不同的终端设备进行不同的业务,对于FTTR光网关来说,往往会接收服务器向多个终端设备发送的多个业务数据流。其中,每个数据流可承载于TCP报文,虽然TCP报文的包头的标识符(identifer)字段可标识唯一的数据包或数据流,但是由于FTTR光网关代理了服务器针对多个终端设备的业务流,而这多个终端设备可能对应不同的ONT,那么可能会出现identifer字段的值不连续或者重复出现的情况。例如,服务器发送给与第一ONT连接的第一终端设备的业务流的identifer字段的值位于[0-1000],服务器发送给与第一ONT连接的第二终端设备的业务流的identifer字段的值位于[500-1000]。如果沿用所接收的业务流中原有的identifer的值来进行业务流的反馈,例如第一终端设备向第一ONT反馈没有接收到标识符为600的业务流,第二终端设备向第一ONT反馈接收到标识符为600的业务流,显然,第一ONT向家庭网关反馈是否接收到业务流的ACK消息会出错,可能导致家庭网关重新发送终端设备已经收到的TCP报文,或者不重新发送终端设备没有收到的TCP报文。即针对FTTR的场景,目前还没有相应的TCP代理方案。
发明内容
本申请实施例提供一种TCP代理方法及通信装置,用于提供基于FTTR的场景的TCP代理方案,保证数据传输稳定性的同时,尽量降低数据传输时延,提高数据发送速率。
第一方面,提供一种TCP代理方法,该方法可由第一通信装置执行,第一通信装置可以是通信设备或能够支持通信设备实现该方法所需的功能的通信装置,例如芯片系统。下面以所述通信设备为家庭网关为例进行描述。该方法包括:
家庭网关接收来自服务器的第一TCP报文和第二TCP报文,第一TCP报文和第二TCP报文对应第一光网络终端ONT;
家庭网关向服务器发送针对第一TCP报文和第二TCP报文的ACK报文;
家庭网关向第一ONT发送与第一TCP报文对应的第一隧道报文,以及与第二TCP报文对应的第二隧道报文,其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息,所述标识信息用于第一ONT向家庭网关发送针对第一TCP报文和第二TCP报文的反馈报文。
本申请实施例提供了在FTTR场景中的一种TCP代理机制,以家庭网关作为服务器和ONT之间的TCP代理点。应理解,FTTR的场景中,家庭网关会代理服务器针对多个终端设备的业务流,而这多个终端设备可能对应不同的ONT。对于任意ONT而言,需要转发与其连接的多个终端设备针对所接收的TCP的ACK报文,如果沿用所接收的TCP报文自身携带的序列号来标识该TCP报文的ACK报文,那么不同终端设备反馈的ACK报文中的序列号可能相同,这样ONT向家庭网关反馈各个终端设备是否接收到TCP的ACK报文就可能会出错。为此,在本申请实施例中,家庭网关接收到来自服务器的多个TCP报文,例如第一TCP报文和第二TCP报文之后,向第一ONT转发任意TCP报文时,可通过唯一标识该TCP报文的标识信息来该TCP报文。例如,家庭网关可向第一ONT发送与第一TCP报文对应的第一隧道报文,以及与第二TCP报文对应的第二隧道报文,其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息。由于第一隧道报文中的标识信息可用于唯一标识第一隧道报文,第二隧道报文可用于唯一标识第二隧道报文,即通过标识信息可唯一标识各个TCP报文,所以第一ONT可根据各个TCP报文的标识信息向家庭网关发送针对各个TCP报文的ACK报文,以准确指示各个终端设备是否接收到对应的TCP报文。
在一种可能的实现方式中,第一ONT连接第一端设备和第二终端设备,所述方法还包括:
家庭网关接收来自第一ONT的反馈报文,该反馈报文是第一ONT基于第一终端设备和第二终端设备发送的ACK报文生成的,第一终端设备发送的ACK报文用于响应所述第一TCP报文,第二终端设备发送的ACK报文用于响应所述第二TCP报文,该反馈报文包括反馈信息,所述反馈信息包括与第一TCP报文的标识信息对应的第一标志位和与第二TCP报文的标识信息对应的第二标志位,所述第一标志位用于指示第一终端设备是否接收到TCP报文,所述第二标志位用于指示第二终端设备是否接收到TCP报文;
家庭网关根据反馈信息确定删除家庭网关存储的第一终端设备和第二终端设备已经接收的TCP报文,向第一ONT重新发送第一终端设备未接收到的第一TCP报文,或者向第一ONT重新发送第二终端设备未接收到的第二TCP报文。
在该方案中,反馈报文中的反馈信息包括与第一TCP报文和第二TCP报文各自的标识信息对应的标志位,也就是,第一ONT接收到来自各个终端设备针对所接收的TCP报文的ACK报文之后,才生成反馈报文反馈给家庭网关。即第一ONT无需接收到任意终端设备针对某个TCP报文的ACK报文之后,立即反馈给家庭网关,以尽量减少第一ONT和家庭网关之间的交互次数。
在一种可能的实现方式中,反馈报文是第一ONT周期性封装第一终端设备和第二终端设备发送的ACK报文获得的。
在一种可能的实现方式中,在家庭网关接收来自服务器的第一TCP报文和第二TCP报文之前,所述方法还包括:
家庭网关接收来自第一ONT的第一同步序列编号(synchronize sequencenumbers,SYN)报文,并向服务器发送第二SYN报文;其中,
第一SYN报文用于指示第一终端设备请求与服务器建立连接,第一SYN报文包括的窗口大小字段指示第一终端设备的窗口大小为第一值,第一终端设备为所述至少一个终端设备中的任一终端设备;第二SYN报文包括的窗口大小字段指示第一终端设备的窗口大小为第二值,第二值大于或等于第一值,第二值小于或等于家庭网关的存储空间大小。
在该方案中,第二SYN报文包括的窗口大小字段指示的第二值大于第一SYN报文包括的窗口大小字段指示的第一值。即在第一终端设备与服务器建立连接过程中,家庭网关向服务器转发来自第一终端设备的SYN报文时,可扩大第一终端设备实际的存储空间。这样服务器认为第一终端设备实际的存储空间较大,从而以较高的发送数率向第一终端设备发送数据,提高服务器向第一终端设备的数据传输效率。
在一种可能的实现方式中,在家庭网关向服务器发送第二SYN报文之后,所述方法还包括:
家庭网关接收来自服务器的第一SYN响应报文,第一SYN响应报文包括针对第二SYN报文的ACK报文以及服务器的SYN,第一SYN响应报文包括的窗口大小字段指示服务器的窗口大小为第三值;
家庭网关向第一ONT发送第二SYN响应报文,第二SYN响应报文包括的窗口大小字段指示服务器的窗口大小为第四值,第四值大于或等于第三值,第四值小于或等于家庭网关的存储空间大小。
在该方案中,第二SYN响应报文包括的窗口大小字段指示的第四值大于第一SYN报文包括的窗口大小字段指示的第三值。即在第一终端设备与服务器建立连接过程中,家庭网关向第一终端设备转发来自服务器的SYN响应报文时,也可扩大服务器实际的存储空间。这样第一终端设备认为服务器实际的存储空间较大,从而以较高的发送数率向服务器发送数据,提高第一终端设备向服务器的数据传输效率。
在一种可能的实现方式中,所述方法还包括:
家庭网关确定家庭网关和第一终端设备之间的丢包率大于或等于预设阈值;
家庭网关降低向第一ONT发送第一隧道报文和第二隧道报文的速率,以及指示服务器降低发送第一TCP报文和第二TCP报文的速率。
通常来说,由于家庭网关作为TCP代理点,即使家庭网关和终端设备之间发生丢包,服务器无感知,仍然会以较高的速率发送TCP报文,相应的,家庭网关也会以较高的数量发送TCP报文,可能会导致传输链路的拥塞。但是在该方案中,家庭网关确定家庭网关和第一终端设备之间的丢包率大于或等于预设阈值,降低发送TCP报文的速率,并指示服务器降低发送TCP报文的速率,以尽量降低传输链路拥塞的概率。
在一种可能的实现方式中,家庭网关指示服务器降低发送第一TCP报文和第二TCP报文的速率,包括:
家庭网关连续向服务器发送多个标识信息相同的ACK报文,所述多个标识信息相同的ACK报文对应于丢包的TCP报文;或者,
家庭网关向服务器发送显示拥塞控制(explicit congestion control,ECE)报文。
在本申请实施例中,家庭网关指示服务器降低发送第一TCP报文和第二TCP报文的速率的方式有多种,较为灵活。例如,可通过连续发送多个丢包TCP报文的ACK报文来隐式地指示;又例如,可通过ECE报文来显性地指示。
在一种可能的实现方式中,家庭网关向服务器发送针对第一TCP报文的ACK报文之前,所述方法还包括:
家庭网关确定家庭网关存储的数据量小于或等于第一阈值,或者,家庭网关确定家庭网关存储的数据量大于第一阈值,且家庭网关接收到来自第一ONT针对第一TCP报文的反馈报文;其中,第一阈值根据第一终端设备的窗口大小和第一比例确定。
在该方案中,家庭网关可确定向服务器发送针对例如第一TCP报文的ACK报文的时机,以灵活调整代理速率。例如,家庭网关存储的数据量小于或等于第一阈值时,可认为家庭网关的存储空间还有足够的余量,这种情况下,在接收到来自第一终端设备的ACK报文之前,可先向服务器反馈ACK报文。这样不会影响服务器发送数据的速率,即服务器还是会以较高的速率发送数据。相反,如果家庭网关存储的数据量大于第一阈值,可认为家庭网关存储了较多的数据,存储空间有限。这种情况下,家庭网关在接收到来自第一终端设备针对第一TCP报文的ACK报文之后,才向服务器反馈该ACK报文。这样服务器会延迟发送数据,而家庭网关还是以原有的速率向第一终端设备转发所存储的TCP报文,从而尽量保证家庭网关有足够的存储空间。
在一种可能的实现方式中,第一隧道报文或第二隧道报文是通过家庭网关与第一ONT之间建立的用户数据包协议(user datagram protocol,UDP)隧道发送的;或者,
第一隧道报文或第二隧道报文是通过家庭网关与第一ONT之间建立的私有网际协议(internet protocol,IP)隧道发送的,其中,第一隧道报文或第二隧道报文包括协议字段,所述协议字段用于指示家庭网关与第一ONT之间的私有协议。
家庭网关与第一ONT之间可建立用于传输数据的隧道,本申请实施例对建立隧道的方式不作限定,较为灵活。例如,家庭网关和第一ONT之间可建立UDP隧道,由于UDP隧道支持透明传输,可以不会被安全检查过滤,更为简单。又例如,家庭网关和第一ONT之间可建立私有IP隧道,这样可自定义用于封装第一TCP报文的内容的协议,更为灵活。
在一种可能的实现方式中,所述标识信息为序列号,第一TCP报文、第二TCP报文对应不同的序列号;或者,第一隧道报文的标识信息为第一TCP报文的TCP五元组以及第一TCP报文中的序列号,第二隧道报文的标识信息为第二TCP报文的TCP五元组以及第二TCP报文中的序列号。
本申请实施例可通过标识信息唯一标识TCP报文,标识信息的具体实现方式可以有多种,本申请实施例不限制使用何种具体实现方式,更为灵活。例如,标识信息可以是重新为TCP报文定义的序列号,不同的TCP报文对应的序列号不同,较为简单。又例如,标识信息可以沿用TCP报文的TCP五元组和TCP报文自身的序列号。这种方式,家庭网关接收到来自服务器的第一TCP报文,可直接将第一TCP报文转发给第一ONT,不需要家庭网关另外添加用于唯一标识第一TCP报文的标识,自然也不需要重新封装添加标识后的第一TCP报文,能够减轻家庭网关的负担。
在一种可能的实现方式中,所述方法还包括:
家庭网关接收来自第一ONT的第三TCP报文和第四TCP报文,并向第一ONT发送与第三TCP报文对应的ACK报文以及与第四TCP报文对应的ACK报文,其中,第三TCP报文和第四TCP报文为第一终端设备向服务器发送的报文;
家庭网关向服务器转发第三TCP报文和第四TCP报文;
家庭网关接收到来自服务器针对第三TCP报文的ACK报文以及针对第四TCP报文的ACK报文,每个所述ACK报文携带对应的TCP报文的TCP五元组和序列号;
家庭网关根据所接收的ACK报文确定删除家庭网关存储的服务器已经接收的对应TCP报文,以及向服务器重新发送服务器未接收到的对应TCP报文。
在本申请实施例中,家庭网关除了用于服务器到第一终端设备之间的TCP代理,还可以用于第一终端设备到服务器之间的TCP代理,以适用于第一终端设备到服务器的越来越多种业务数据,例如视频会议数据,邮件数据等传输的实际需求,提高第一终端设备到服务器之间传输链路的吞吐量。
在一种可能的实现方式中,若与第三TCP报文对应的ACK报文还指示服务器没有接收到第三TCP报文,家庭网关向服务器发送多个第三TCP报文。
在该方案中,若家庭网关确定针对某个TCP报文的ACK报文指示服务器没有接收到该TCP报文,那么家庭网关可向服务器发送多个该TCP报文,以增大该TCP报文发送的成功率。
在一种可能的实现方式中,家庭网关向第一ONT发送与第三TCP报文对应的ACK报文之前,家庭网关确定家庭网关存储的数据量小于或等于第二阈值;或者,
家庭网关向第一ONT发送与第三TCP报文对应的ACK报文之前,家庭网关确定家庭网关存储的数据量大于第二阈值,且家庭网关接收到来自服务器针对第三TCP报文的ACK报文,所述第二阈值根据所述服务器的窗口大小和第二比例确定。
在该方案中,家庭网关可确定向第一ONT发送针对例如第三TCP报文的ACK报文的时机,以灵活调整代理速率。例如,家庭网关存储的数据量小于或等于第二阈值时,可认为家庭网关的存储空间还有足够的余量,这种情况下,在接收到来自服务器针对第三TCP报文的ACK报文之前,可先向第一ONT反馈ACK报文。这样不会影响第一ONT发送数据的速率,即第一ONT还是会以较高的速率发送数据。相反,如果家庭网关存储的数据量大于第二阈值,可认为家庭网关存储了较多的数据,存储空间有限。这种情况下,家庭网关在接收到来自服务器针对第三TCP报文的ACK报文之后,才向第一ONT反馈该ACK报文。这样第一ONT会延迟发送数据,而家庭网关还是以原有的速率向服务器转发所存储的TCP报文,从而尽量保证家庭网关有足够的存储空间。
第二方面,提供一种TCP代理方法,该方法可由第二通信装置执行,第二通信装置可以是通信设备或能够支持通信设备实现该方法所需的功能的通信装置,例如芯片系统。下面以所述通信设备为ONT为例进行描述。该方法包括:
第一ONT接收来自家庭网关的第一隧道报文和第二隧道报文,其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息,所述标识信息用于第一ONT向家庭网关发送针对第一TCP报文和第二TCP报文的反馈报文;
第一ONT从第一隧道报文中恢复出第一TCP报文,并将恢复出的第一TCP报文发送给与第一ONT连接的第一终端设备,以及从第二隧道报文中恢复出第二TCP报文,并将恢复出的第二TCP报文发送给与第一ONT连接的第二终端设备。
在一种可能的实现方式中,所述方法还包括:
第一ONT接收来自第一终端设备针对第一TCP报文的第一ACK报文,以及接收来自第二终端设备针对第二TCP报文的第二ACK报文;
第一ONT根据第一TCP报文的标识信息、第二TCP报文的标识信息、第一ACK报文和第二ACK报文生成所述反馈报文,其中,所述反馈报文包括反馈信息,所述反馈信息包括与第一TCP报文的标识信息对应的第一标志位和与第二TCP报文的标识信息对应的第二标志位,第一标志位用于指示第一终端设备是否接收到TCP报文,第二标志位用于指示第二终端设备是否接收到TCP报文;
第一ONT将所述反馈报文发送给家庭网关。
上述第二方面及其各个实现方式的有益效果可以参考上述第一方面及第一方面的各个实现方式的有益效果的描述。
第三方面,提供了一种通信装置,该通信装置可以是网关设备或能够支持网关设备实现该方法所需的功能的通信装置,例如芯片或芯片系统。该通信装置可包括处理模块和收发模块,其中,
所述处理模块用于生成所述收发模块所要发送的TCP报文,所述收发模块用于:
接收来自服务器的第一TCP报文和第二TCP报文,第一TCP报文和第二TCP报文对应第一ONT;
向服务器发送针对第一TCP报文和第二TCP报文的ACK报文;
向第一ONT发送与第一TCP报文对应的第一隧道报文,以及与第二TCP报文对应的第二隧道报文,其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息,所述标识信息用于第一ONT向家庭网关发送针对第一TCP报文和第二TCP报文的反馈报文。
在一种可能的实现方式中,第一ONT第一终端设备和第二终端设备,所述收发模块还用于:
接收来自第一ONT的反馈报文,该反馈报文是第一ONT基于第一终端设备和第二终端设备分别发送的ACK报文生成的,第一终端设备发送的ACK报文用于响应第一TCP报文,第二终端设备发送的ACK报文用于响应第二TCP报文,该反馈报文包括反馈信息,所述反馈信息包括与第一TCP报文的标识信息对应的第一标志位和与第二TCP报文的标识信息对应的第二标志位,所述第一标志位用于指示第一终端设备是否接收到第一TCP报文,所述第二标志位用于指示第二终端设备是否接收到第二TCP报文;
所述处理模块还用于:根据反馈信息确定删除家庭网关存储的第一终端设备和第二终端设备已经接收的TCP报文,向第一ONT重新发送第一终端设备未接收到的第一TCP报文,或者向第一ONT重新发送第二终端设备未接收到的第二TCP报文。
在一种可能的实现方式中,所述反馈报文是第一ONT周期性封装第一终端设备和第二终端设备发送的ACK报文获得的。
在一种可能的实现方式中,在收发模块接收来自服务器的第一TCP报文和第二TCP报文之前,所述收发模块还用于:
接收来自第一ONT的第一SYN报文,第一SYN报文用于指示第一终端设备请求与服务器建立连接,第一SYN报文包括的窗口大小字段指示第一终端设备的窗口大小为第一值,第一终端设备为所述至少一个终端设备中的任一终端设备;
向服务器发送第二SYN报文,其中,第二SYN报文包括的窗口大小字段指示第一终端设备的窗口大小为第二值,第二值大于或等于第一值,第二值小于或等于家庭网关的存储空间大小。
在一种可能的实现方式中,在收发模块向所述服务器发送第二SYN报文之后,所述收发模块还用于:
接收来自服务器的第一SYN响应报文,第一SYN响应报文包括针对第二SYN报文的ACK报文以及服务器的SYN,第一SYN响应报文包括的窗口大小字段指示服务器的窗口大小为第三值;
向第一ONT发送第二SYN响应报文,第二SYN响应报文包括的窗口大小字段指示服务器的窗口大小为第四值,第四值大于或等于第三值,第四值小于或等于家庭网关的存储空间大小。
在一种可能的实现方式中,所述处理模块还用于:
确定家庭网关和第一终端设备之间的丢包率大于或等于预设阈值;
降低向第一ONT发送第一隧道报文和第二隧道报文的速率,以及指示服务器降低发送第一TCP报文和第二TCP报文的速率。
在一种可能的实现方式中,所述收发模块向服务器发送针对第一TCP报文的ACK报文之前,所述处理模块还用于:
确定家庭网关存储的数据量小于或等于第一阈值;或者,
确定家庭网关存储的数据量大于第一阈值,且家庭网关接收到来自第一ONT针对第一TCP报文的反馈报文;
其中,第一阈值根据第一终端设备的窗口大小和第一比例确定。
在一种可能的实现方式中,第一隧道报文或第二隧道报文是通过家庭网关与第一ONT之间建立的UDP隧道发送的;或者,
第一隧道报文或第二隧道报文是通过家庭网关与第一ONT之间建立的私有IP隧道发送的,其中,第一隧道报文或第二隧道报文包括协议字段,所述协议字段用于指示家庭网关与第一ONT之间的私有协议。
在一种可能的实现方式中,所述标识信息为序列号,第一TCP报文和第二TCP报文对应不同的序列号;或者,
第一隧道报文的标识信息为第一TCP报文的TCP五元组以及第一TCP报文中的序列号,第二隧道报文的标识信息为第二TCP报文的TCP五元组以及第二TCP报文中的序列号。
在一种可能的实现方式中,所述收发模块还用于:
接收来自第一ONT的第三TCP报文和第四TCP报文,并向第一ONT发送与第三TCP报文对应的ACK报文以及与第四TCP报文对应的ACK报文,其中,第三TCP报文和第四TCP报文为第一终端设备向服务器发送的报文;
向服务器转发第三TCP报文和第四TCP报文;
接收到来自服务器针对第三TCP报文的ACK报文以及针对第四TCP报文的ACK报文,每个所述ACK报文携带对应的TCP报文的TCP五元组和序列号;
所述处理模块还用于:根据所接收的ACK报文确定删除家庭网关存储的服务器已经接收的对应TCP报文,以及指示所述收发模块向服务器重新发送服务器未接收到的对应TCP报文。
在一种可能的实现方式中,若与第三TCP报文对应的ACK报文还指示服务器没有接收到第三TCP报文,所述收发模块向服务器发送多个第三TCP报文。
在一种可能的实现方式中,所述收发模块向第一ONT发送与第三TCP报文对应的ACK报文之前,所述处理模块还用于确定家庭网关存储的数据量小于或等于第二阈值;或者,
所述收发模块向第一ONT发送与第三TCP报文对应的ACK报文之前,所述处理模块还用于确定家庭网关存储的数据量大于第二阈值,且所述收发模块接收到来自服务器针对第三TCP报文的ACK报文;
其中,所述第二阈值根据服务器的窗口大小和第二比例确定。
第四方面,提供了一种通信装置,该通信装置可以是ONT或能够支持ONT实现该方法所需的功能的通信装置,例如芯片或芯片系统。该通信装置可包括处理模块和收发模块,其中,
所述收发模块,用于接收来自家庭网关的第一隧道报文和第二隧道报文,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息,所述标识信息用于所述通信装置向所述家庭网关发送针对所述第一TCP报文和所述第二TCP报文的反馈报文;
所述处理模块,用于从第一隧道报文中恢复出第一TCP报文,以及从第二隧道报文中恢复出第二TCP报文;
所述收发模块,还用于将所述第一TCP报文发送给与所述通信装置连接的第一终端设备,以及将所述第二TCP报文发送给与所述通信装置连接的第二终端设备。
在一种可能的实现方式中,所述收发模块还用于接收来自第一终端设备针对所述第一TCP报文的第一ACK报文,以及接收来自第二终端设备针对所述第二TCP报文的第二ACK报文;
所述处理模块还用于根据第一TCP报文的标识信息、第二TCP报文的标识信息、第一ACK报文和第二ACK报文生成反馈报文,其中,该反馈报文包括反馈信息,反馈信息包括与第一TCP报文的标识信息对应的第一标志位和与第二TCP报文的标识信息对应的第二标志位,第一标志位用于指示第一终端设备是否接收到第一TCP报文,第二标志位用于指示第二终端设备是否接收到第二TCP报文;
所述收发模块,还用于将所述反馈报文发送给所述家庭网关。
应理解,第三方面或第四方面以及第三方面或第四方面的各方面可能的实现方式的技术效果参考第一方面或第二方面以及第一方面或第二方面的各方面可能的实现方式的技术效果,这里不再赘述。
第五方面,本申请提供一种通信装置,该通信装置可以为上述第三方面或第四方面中的通信装置,可选的,可以是设备或者设备中的芯片或芯片系统。该通信装置包括处理器,可选的还包括通信接口,可选的,还包括存储器。其中,该存储器用于存储计算机程序或指令或者数据,处理器与存储器、通信接口耦合,当处理器读取所述计算机程序或指令或数据时,使通信装置执行上述第一方面或第二方面所述的方法。
应理解,该通信接口可以是通信装置中的收发器,例如通过所述通信装置中的天线、馈线和编解码器等实现,或者,如果通信装置为设置在设备中的芯片,则通信接口可以是该芯片的输入/输出接口,例如输入/输出电路、管脚等,用于输入/输出指令、数据或信号。所述收发器用于该通信装置与其它设备进行通信。示例性地,当该通信装置为家庭网关时,该其它设备为服务器或第一ONT;或者,当该通信装置为第一ONT时,该其它设备为家庭网关或终端设备。
第六方面,提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现第二方面的家庭网关执行的方法。在一种可能的实现方式中,所述芯片系统还包括存储器,用于保存程序指令和/或数据。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,提供了一种通信系统,所述通信系统包括第三方面所述的家庭网关和至少一个第四方面所述的ONT,以及至少一个终端设备和服务器。
第八方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序被运行时,实现上述第一方面所述的方法。
第九方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被运行时,使得上述第一方面或第二方面所述的方法被执行。
上述第五方面至第九方面及其实现方式的有益效果可以参考上述第一方面及其第一方面的各个实现方式的有益效果的描述。
附图说明
图1为现有技术中的TCP代理网络架构示意图;
图2为本申请实施例提供的FTTR网络架构的一种示意图;
图3为本申请实施例提供的下行TCP代理方法的流程示意图;
图4为本申请实施例提供的服务器与终端设备建立TCP连接的流程示意图;
图5为本申请实施例提供的UDP报文的一种结构示意图;
图6为本申请实施例提供的私有IP隧道的数据报文的格式示意图;
图7为本申请实施例提供的UDP反馈报文的一种结构示意图;
图8为本申请实施例提供的TCP反馈报文的一种结构示意图;
图9为本申请实施例提供的私有IP反馈报文的一种结构示意图;
图10为本申请实施例提供的下行TCP代理实现的原理框图;
图11为本申请实施例提供的下行TCP代理实现的各个阶段的报文格式示意图;
图12为本申请实施例提供的下行TCP代理方法的流程示意图;
图13为本申请实施例提供的通信装置的一种结构示意图;
图14为本申请实施例提供的通信装置的另一种结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
在介绍本申请之前,首先对本申请实施例中的部分用语进行简单解释说明,以便于本领域技术人员理解。
1)终端设备(也可以称为用户设备(user equipment,UE))是一种具有无线收发功能的设备,该终端设备可以经无线接入网(radio access network,RAN)与核心网进行通信,与RAN交换语音和/或数据。该终端设备可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。所述终端设备可以是手机(mobile phone)、平板电脑(pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端、增强现实(augmented reality,AR)终端、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。该终端设备例如可以包括用户设备(user equipment,UE)、无线终端设备、移动终端设备、设备到设备通信(device-to-device,D2D)终端设备、车与外界(vehicle-to-everything,V2X)终端设备、机器到机器/机器类通信(machine-to-machine/machine-type communications,M2M/MTC)终端设备、物联网(internet ofthings,IoT)终端设备、订户单元(subscriber unit)、订户站(subscriber station),移动站(mobile station)、远程站(remote station)、接入点(access point,AP)、远程终端(remote terminal)、用户站(customer premises equipment,CPE)、固定无线接入(fixedwireless access,FWA)、接入终端(access terminal)、用户终端(user terminal)、用户代理(user agent)、或用户装备(user device)等。例如,可以包括移动电话(或称为“蜂窝”电话),具有移动终端设备的计算机,便携式、袖珍式、手持式、计算机内置的移动装置等。例如,个人通信业务(personal communication service,PCS)电话、无绳电话、会话发起协议(session initiation protocol,SIP)话机、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)、等设备。还包括受限设备,例如功耗较低的设备,或存储能力有限的设备,或计算能力有限的设备等。例如包括条码、射频识别(radio frequency identification,RFID)、传感器、全球定位系统(globalpositioning system,GPS)、激光扫描器等信息传感设备。
作为示例而非限定,在本申请实施例中,该终端设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备或智能穿戴式设备等,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能头盔、智能首饰等。
而如上介绍的各种终端,如果位于车辆上(例如放置在车辆内或安装在车辆内),都可以认为是车载终端设备,车载终端设备例如也称为车载单元(on-board unit,OBU)。
2)边缘ONT,是一种部署在无线通信网络中为终端设备提供无线通信功能的装置,该ONT可用作该通信系统的中枢,可以为基站、路由器、网关、中继器,通信服务器,交换机或网桥或接入点(access point,AP)等通信设备,其中,所述基站可以包括各种形式的宏基站,微基站,中继站等。在此,为了描述方便,上面提到的设备统称为ONT。
本申请实施例涉及的ONT和终端设备可以为适用于IEEE 802.11系统标准的ONT和终端设备。例如终端设备通常为支持802.11系统标准的介质访问控制(media accesscontrol,MAC)和物理层(physical,PHY)的终端产品,如手机、笔记本电脑等。ONT通常为支持802.11系统标准的MAC和PHY的网络侧产品,例如路由器、中继器等。
3)家庭网关(home gateway,HG),是接入网络中为家庭用户提供网络的设备,可以提供高速上网、语音、无线保真(wireless fidelity,Wi-Fi)等业务。HG作为整个家庭的接口单元,可以是部署在无线通信网络中为ONT提供无线通信功能的装置,能够让家庭内的各个智能终端接入网络,以及实现智能终端间的相互通信。HG还可以对接入的终端设备进行管理,例如,给不同终端设备授权不同权限,对不同终端设备提供针对性的业务服务。
4)隧道报文,指的通过两个设备之间建立的隧道所支持的协议封装数据以及其他内容获得的报文的统称。例如两个设备之间建立的隧道是UDP隧道,那么对应的隧道报文可认为是UDP报文;又例如,两个设备之间建立的隧道是IP隧道,那么对应的隧道报文可认为是IP报文。
5)“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。
以及,除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的大小、内容、顺序、时序、优先级或者重要程度等。例如,第一TCP报文和第二TCP报文并不是表示这两个TCP报文的信息量大小、内容、优先级或者重要程度等的不同。
前文介绍了本申请实施例所涉及到的一些名词概念,下面介绍本申请实施例涉及的技术特征。
对于通信双方来说,通信双方之间的链路任一处发送丢包,都需要发送端进行重传,即重新传输要发送的数据包。通常发生丢包是因为网络拥塞,根据reno拥塞控制算法,如果发送丢包情况,那么降低发送端发送数据的发送速率。也就是,如果发送丢包情况,发送端以更低的数据发送速率发送数据。此外,根据reno拥塞控制算法,不管是TCP刚发起连接时引起的慢启动,还是数据发生丢包时引起的慢启动,随着往返时间(round-trip time,RTT)越大,数据发送速率增长越慢。
为了尽量避免发送端的数据发送速率的降低,提出了TCP代理技术。即在发送端和接收端之间增加一个中间节点(TCP代理点),该TCP代理点将来自发送端的数据包转发给接收端,同理,该TCP代理点也可以将来自接收端的数据包转发给发送端。以发送端向接收端发送数据为例,发送端向将数据发送给TCP代理点,TCP代理点接收并存储该数据,并向发送端发送确认,以及向接收端发送该数据。对于发送端而言,接收到来自TCP代理点发送的确认,认为是接收端发送的确认,即使TCP代理点和接收端之间发生丢包,发送端难以感知,所以还是会按照之前的数据发送速率来发送数据。由于TCP代理点可存储发送端发送的数据,所以当TCP代理点和接收端之间发生丢包,TCP代理点会向接收端重新发送数据。由于TCP代理点重新向接收端发送数据,即数据重传时,不会占用发送端到接收端之间的整个传输链路,而是占用链路的一部分,即降低空口占用率。另外,由于TCP代理点提前将接收端的确认发送给发送端,会让发送端感知到的RTT小于实际的RTT,这样在TCP连接刚建立阶段,发送端的数据发送速率能够较快地提升。
示例性的,请参见图1,为基于ONT的一种TCP代理网络架构示意图。TCP代理网络架构中包括服务器(host)、ONT和终端设备,其中,ONT可作为终端设备和服务器之间的TCP代理点。终端设备和服务器建立TCP连接,服务器向终端设备发送数据时,可先将该数据发送给ONT;ONT接收并存储该数据,向服务器发送确认,以指示终端设备接收到该数据;ONT再向终端设备转发来自服务器的数据。当ONT与终端设备之间发生丢包,ONT从存储区查到需要重传的数据,并发送给终端设备。由于服务器并不知道ONT与终端设备之间是否发生丢包,即使ONT与终端设备之间发生丢包,服务器还是不会降低数据发送速率,以尽量保持数据发送速率,提升数据传输效率。
随着高覆盖率的需求,提出了FTTH技术。目前虽然实现了光纤到家,但是随着创新业务,例如超高清视频,云VR游戏,线上教育,远程办公等的发展,且终端设备数量的增加,对带宽、时延都提出了较高要求,FTTH已不能很好的满足用户需求。为此,提出了FTTR)技术。即ONT下行提供光纤介质接入到房间。在家中布置FTTR光网关,以此为核心向下链接多个边缘ONT,边缘ONT支持千兆以太网口,双频Wi-Fi,随着光纤进入各房间提供有线、无线的网络覆盖。
示例性的,请参见图2,示出了从FTTH到FTTR的网络架构。光纤入户经过家庭网关连接位于多个房间的多个边缘ONT,每个边缘ONT可为一个或多个终端设备提供网络。图2以包括5个房间为例,这5个房间为“书房”、“卧室”、“客厅”、“儿童房”和“厨房”。每个房间可能存在一个或多个终端设备,例如“卧室”存在手机和笔记本电脑,“儿童房”存在平板电脑。应理解,图2仅是从FTTH到FTTR的网络架构的一种示例性说明,并不对所包括网元的类型、数量、连接方式等进行具体限定。
应理解,为了尽量避免发送端的数据发送速率的降低,基于图2所示的场景,也应该采用TCP代理。考虑到TCP代理发送确认等需要进行代理业务逻辑处理,较为消耗计算资源,然而ONT的计算资源有限,因此需要在计算资源较多的设备上实现TCP代理。具体而言,在FTTR的场景中,FTTR光网关连接多个ONT,每个ONT连接多个终端设备,不同的终端设备进行不同的业务,对于FTTR光网关来说,往往会接收服务器向多个终端设备发送的多个业务数据流。其中,每个数据流可承载于TCP报文,虽然TCP报文的包头的标识符(identifer)字段可标识唯一的数据包或数据流。如果以FTTR光网关作为TCP的代理点,那么FTTR光网关会代理服务器针对多个终端设备的业务流。由于这多个终端设备可能对应不同的ONT,那么可能会出现不同的ONT对应的多个TCP报文中的identifer字段的值不连续或者重复出现的情况。例如,服务器发送给与第一ONT连接的第一终端设备的业务流的identifer字段的值位于[0-1000],服务器发送给与第一ONT连接的第二终端设备的业务流的identifer字段的值位于[500-1000]。对于终端设备而言,如果沿用所接收的业务流中原有的identifer的值来进行业务流的反馈,例如第一终端设备向第一ONT反馈没有接收到标识符为600的业务流,第二终端设备向第一ONT反馈接收到标识符为600的业务流,显然,第一ONT向家庭网关反馈是否接收到业务流的ACK消息会出错,可能导致家庭网关重新发送终端设备已经收到的TCP报文,或者不重新发送终端设备没有收到的TCP报文。
鉴于此,本申请实施例提供了针对FTTR场景的一种TCP代理机制,该机制中,TCP代理可通过光网络网关,例如家庭网关实现。即以家庭网关作为服务器和ONT之间的TCP代理点。家庭网关接收到来自服务器的多个TCP报文之后,向ONT转发任意TCP报文时,可通过唯一标识该TCP报文的标识信息来该TCP报文。例如,家庭网关可向ONT发送与第一TCP报文对应的第一隧道报文,以及与第二TCP报文对应的第二隧道报文,其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息。由于第一隧道报文中的标识信息可用于唯一标识第一隧道报文,第二隧道报文可用于唯一标识第二隧道报文,即通过标识信息可唯一标识各个TCP报文,所以ONT可根据各个TCP报文的标识信息向家庭网关发送针对各个TCP报文的ACK报文,以准确指示各个终端设备是否接收到对应的TCP报文。这样就可以避免沿用TCP报文自身携带的序列号来反馈针对各个TCP的ACK报文可能导致的错误。另外,家庭网关除了实现基本的TCP代理之外,针对网络通塞可控制发送端的数据发送速率,避免进一步加重拥塞。
下面结合附图对本申请实施例提供的TCP代理方法进行详细介绍。
本申请实施例提供的TCP代理方法可以应用于各种通信系统,例如:长期演进(long term evolution,LTE)系统、第五代(5th generation,5G)系统,如NR,及下一代的通信系统,如6G系统等。当然,本申请实施例的技术方案也可以应用于其它的通信系统,只要该通信系统存在通信双方即可。例如,本申请实施例可以适用于无线局域网(wirelesslocal area network,WLAN)的场景,可以适用于IEEE 802.11系统标准,或其下一代或更下一代的标准中。或者本申请实施例也可以适用于物联网(internet of things,IoT)网络或车联网(Vehicle to X,V2X)网络等无线局域网系统中。
此外,所述通信系统还可以适用于面向未来的通信技术,本申请实施例描述的系统是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变,本申请实施例提供的技术方案对于类似的技术问题,同样适用。例如,在一种可能的场景中,在TCP通信双方之间的传输链路的合适之处部署TCP代理点,将TCP通信双方之间的传输链路分为相对稳定和相对不稳定两个部分,这样既可以提升发送端发送数据的速率,又可以减少不稳定网络部分的重传负担,从而提升数据传输效率。
在下文的介绍过程中,以该方法应用于图2所示的网络架构为例。另外,该方法可由网关设备执行。为了便于介绍,在下文中,以该方法由家庭网关执行为例。且为了便于描述,本文将服务器到终端设备的传输称为下行传输,相反,将终端设备到服务器的传输称为上行传输。同理,服务器到终端设备的代理可称为下行代理,终端设备到服务器的代理可称为上行代理。需要说明的是,这里上行和下行是相对而言的,如果终端设备到服务器的传输方向为下行,那么服务器到终端设备的传输方向为上行;相反,如果终端设备到服务器的传输方向为上行(本文以此为例),那么服务器到终端设备的传输方向为下行。
首先介绍下行TCP代理方法,下行TCP代理方法以服务器向第一终端设备发送报文为例,其中,第一终端设备为与第一ONT连接的多个终端设备中的任意一个终端设备,第一ONT为与家庭网关连接的多个ONT中的任意一个ONT。
请参见图3,为本申请实施例提供的下行TCP代理方法的流程图,该下行TCP代理方法的具体流程描述如下:
S301、服务器与第一终端设备建立TCP连接。
服务器向第一终端设备发送报文之前,服务器和第一终端设备需要建立TCP连接。第一终端设备和服务器之间可通过三次握手过程建立TCP连接。也就是,在第一终端设备和服务器之间建立正常的TCP网络连接时,第一终端设备先向服务器发送一个同步序列编号(synchronize sequence numbers,SYN)报文;服务器向第一终端设备反馈该SYN报文的响应报文,该响应报文包括服务器的SYN以及针对第一终端设备向服务器发送的SYN报文的ACK,以表示接收到了该SYN报文;最后第一终端设备再向服务器发送ACK响应消息。这样第一终端设备和服务器之间建立起TCP连接,服务器和第一终端设备可以互相传递信息。目前在第一终端设备和服务器之间的三次握手过程中,第一终端设备会通过SYN报文告知服务器,第一终端设备的实际最大缓存队列大小;服务器也会通过SYN响应报文告知第一终端设备,服务器的实际最大缓存队列大小。这样服务器和第一终端设备就可以根据彼此的最大缓存队列大小确定发送数据的速率。
然而在本申请实施例中,在第一终端设备和服务器进行三次握手过程中,家庭网关可修改第一终端设备的最大缓存队列(也称为缓存空间或存储空间)大小。例如家庭网关可将第一终端设备的最大缓存队列修改得更大,并将第一终端设备修改后的最大缓存队列告知服务器。这样服务器认为第一终端设备的最大缓存队列大小大于第一终端设备实际的最大缓存队列大小。同理,家庭网关也可以将服务器的最大缓存队列修改得更大,并将服务器修改后的最大缓存队列告知第一终端设备。这样第一终端设备也认为服务器的最大缓存队列大小大于服务器实际的最大缓存队列大小。即家庭网关可以欺骗第一终端设备,服务器的最大缓存队列大小,也可以欺骗服务器,第一终端设备的最大缓存队列大小。由于第一终端设备和服务器都认为彼此的最大缓存队列更大,所以服务器可以采用较高的速率向第一终端设备发送报文,第一终端设备也可以以较高的速率向服务器发送报文。即尽量提高服务器和第一终端设备的业务数据传输效率,且可以提高整体网络的吞吐量。另外,由于接收端和发送端都认为彼此的最大缓存队列大,所以发送端在一段时间内发送的数据量增多,提高了空口占用率。应理解,家庭网关欺骗例如服务器,第一终端设备的最大缓存队列大小,实际上使得家庭网关存储更多来自服务器的数据,而家庭网关作为服务器和第一终端设备之间的TCP代理,可代理服务器重新向第一终端设备发送报文,因此可减轻服务器的重复发送的负担。
示例性的,请参见图4,为本申请实施例提供的服务器与第一终端设备建立TCP连接的流程示意图,即S301可包括S3011-S3019的流程。
S3011、第一终端设备向第一ONT发送第一SYN报文,相应的,第一ONT接收来自第一终端设备的第一SYN报文。
第一SYN报文可用于第一终端设备请求建立与服务器的TCP连接。第一SYN报文包括窗口大小字段,该窗口大小字段用于指示第一终端设备初始的最大缓存队列大小。例如,第一终端设备初始的最大缓存队列大小为16K,那么第一SYN报文包括的窗口大小字段的值为16384,用于指示第一终端设备的最大缓存队列大小为16K。
S3012、第一ONT向家庭网关发送所述第一SYN报文,相应的,家庭网关接收来自第一ONT的第一SYN报文。
第一ONT接收到第一SYN报文,可将该第一SYN报文转发给家庭网关。家庭网关接收到第一SYN报文之后,可修改第一SYN报文中窗口大小字段的值。例如家庭网关可将第一SYN报文中的窗口大小字段的值由16384修改为65535,生成第二SYN报文。即第二SYN报文中的窗口大小字段的值为65535,用于指示第一终端设备的最大缓存队列大小为64K。
S3013、家庭网关向服务器发送所述第二SYN报文,相应的,服务器接收来自家庭网关的所述第二SYN报文。
服务器接收到第二SYN报文,根据第二SYN报文可认为第一终端设备的最大缓存队列为64K。即服务器可按照64K的缓存队列大小向第一终端设备发送数据,相较于按照16K的缓存队列大小向第一终端设备发送数据来说,可以较高速率发送数据,以尽量保证服务器到第一终端设备之间数据传输的效率,提升服务器到第一终端设备之间传输通道的吞吐量。
S3014、服务器向家庭网关发送第一SYN响应报文,相应的,家庭网关接收来自服务器的第一SYN响应报文。
第一SYN响应报文可包括服务器的SYN,以及针对第二SYN报文的ACK。该第一SYN响应报文也包括窗口大小字段,该窗口大小字段用于指示服务器初始的最大缓存队列大小。例如,服务器初始的最大缓存队列大小为16K,那么第一SYN确认报文包括的窗口大小字段的值为16384,用于指示服务器的最大缓存队列大小为16K。
家庭网关接收到第一SYN响应报文,可修改第一SYN响应报文中窗口大小字段的值。例如家庭网关可将第一SYN响应报文中的窗口大小字段的值由16384修改为65535,生成第二SYN响应报文。即第二SYN响应报文中的窗口大小字段的值为65535,用于指示服务器的最大缓存队列大小为64K。
S3015、家庭网关向第一ONT发送第二SYN响应报文,相应的,第一ONT接收来自家庭网关的第二SYN响应报文。
S3016、第一ONT将第二SYN响应报文转发给第一终端设备,相应的,第一终端设备接收来自第一ONT的第二SYN响应报文。
第一终端设备接收到第二SYN响应报文,根据第二SYN响应报文可确定服务器的最大缓存队列为64K。这样第一终端设备可按照64K的缓存队列大小向服务器发送数据,相较于按照16K的缓存队列大小向服务器发送数据来说,可以较高速率发送数据,以尽量保证第一终端设备到服务器之间数据传输的效率,提升第一终端设备到服务器之间传输通道的吞吐量。
S3017、第一终端设备向第一ONT发送第二SYN响应报文的ACK,以指示第一终端设备接收到第二SYN响应报文。
S3018、第一ONT向家庭网关发送该第二SYN响应报文的ACK。
S3019、家庭网关向服务器发送该第二SYN响应报文的ACK。
通过本申请实施例采用S3011-S3019所示的流程,可使得第一终端设备和服务器都认为彼此的最大缓存队列更大,所以第一终端设备和服务器彼此都可采用较高的速率发送数据,尽量保证服务器和第一终端设备的业务数据传输效率。
需要说明的是,由于SYN报文中的窗口大小字段占用16个比特,最多可设置64K的缓存队列大小。如果需要设置更大的缓存队列大小,可通过设置SYN报文中的窗口缩放选项(window scale option,WSopt)的值来实现。举例来说,S3013中的第二SYN报文中的窗口大小字段的值为65535,WSopt的值为6,那么指示第一终端设备的最大缓存队列大小为4096K,即64K×2^6。如果不设置WSopt选项,那么默认WSopt选项的值为0。
需要说明的是,在图4的流程中,以家庭网关可将第一SYN报文中的窗口大小字段的值由16384修改为65535,生成第二SYN报文,以及家庭网关将第一SYN响应报文中的窗口大小字段的值由16384修改为65535,生成第二SYN响应报文为例。即家庭网关欺骗服务器,第一终端设备的最大缓存队列大小,且,家庭网关也欺骗第一终端设备,服务器的最大缓存队列大小。在可能的实现方式中,家庭网关可将第一SYN报文中的窗口大小字段的值由16384修改为65535,生成第二SYN报文,但是家庭网关接收到第一SYN响应报文之后,可直接将第一SYN响应报文转发给第一ONT。即家庭网关只欺骗服务器,第一终端设备的最大缓存队列大小。或者,家庭网关接收第一SYN报文,直接将第一SYN报文转发给服务器,但是家庭网关将第一SYN响应报文中的窗口大小字段的值由16384修改为65535,生成第二SYN响应报文,即家庭网关只欺骗第一终端设备,服务器的最大缓存队列大小。另外,在图4所示的流程中,以家庭网关将第一终端设备的最大缓存队列大小从16K修改为64K,以及将服务器的最大缓存队列大小从16K修改为64K为例。本申请实施例不限制是否将第一终端设备和服务器的最大缓存队列大小修改为相同大小。例如,在一些实施例中,家庭网关可将第一终端设备的最大缓存队列大小从16K修改为64K,将服务器的最大缓存队列大小从16K修改为128K。
S302、家庭网关与第一ONT之间建立隧道,用于家庭网关与第一ONT传输TCP报文。
服务器与第一终端设备建立TCP之后,家庭网关与第一ONT之间可建立隧道,以将来自服务器的数据透明传输给第一ONT。例如,家庭网关接收到TCP报文后,可将该TCP报文通过与第一ONT建立的隧道发送给第一ONT;第一ONT接收到家庭网关发送的TCP报文,也可以通过与家庭网关建立的隧道向家庭网关发送针对该TCP报文的ACK报文。
作为一种示例,家庭网关与第一ONT之间可建立UDP隧道,即家庭网关接收到来自服务的TCP报文之后,可将该TCP报文封装在UDP隧道,然后转发给第一ONT。由于UDP隧道支持透明传输,可以不会被安全检查过滤,较为简单。
作为另一种示例,家庭网关与第一ONT之间可建立私有IP隧道,即在IP头部中的协议(protocol)字段指示IP数据承载于哪种上层协议,例如TCP协议、UDP协议等。在一些实施例中,也可以自定义封装IP数据的protocol,较为灵活。家庭网关接收到来自服务的TCP报文之后,可将该TCP报文封装在私有IP隧道,然后转发给第一ONT。
需要说明的是,上述仅以家庭网关与第一ONT之间建立的隧道是UDP隧道或私有IP隧道为例,本申请实施例对家庭网关与第一ONT之间建立何种隧道不作限制。例如,家庭网关与第一ONT之间建立的隧道也可以是TCP隧道,或者适用于以太网数据传输的隧道。
S303、服务器向家庭网关发送第一TCP报文和第二TCP报文,相应的,家庭网关接收该第一TCP报文和第二TCP报文。
S304、家庭网关向服务器发送针对第一TCP报文和第二TCP报文的ACK报文。
当服务器有业务数据需要发送给第一终端设备,服务器可将业务数据先发送给家庭网关,由家庭网关代理服务器将业务数据转发给第一终端设备。例如,服务器向家庭网关发送第一TCP报文,家庭网关接收到第一TCP报文,可向服务器发送针对第一TCP报文的ACK报文;同理,服务器向家庭网关发送第二TCP报文,家庭网关接收到第二TCP报文,可向服务器发送针对第二TCP报文的ACK报文。之后,家庭网关向与第一终端设备连接的第一ONT转发第一TCP报文和第二TCP报文。由于家庭网关可在第一终端设备接收到第一TCP报文和第二TCP报文之前,向服务器发送针对第一TCP报文和第二TCP报文的ACK报文,对于服务器来说,接收到针对第一TCP报文和第二TCP报文的ACK报文,认为第一终端设备已经接收到第一TCP报文和第二TCP报文。所以即使家庭网关和第一终端设备发送丢包,服务器还是会按照之前的发送速率来发送TCP报文,即尽量避免降低发送TCP报文的速率,保证服务器和第一终端设备之间传输数据的效率以及吞吐量。
S305、家庭网关向第一ONT发送第一隧道报文和第二隧道报文,相应的,第一ONT接收该第一隧道报文和第二隧道报文。其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息。
应理解,一个家庭网关连接多个ONT,且每个ONT连接多个终端设备,不同的终端设备进行不同的业务,对于家庭网关来说,往往会接收来自多个业务的多个数据流。每个数据流可承载于TCP/IP数据包(TCP报文),虽然TCP/IP数据包的包头的标识符(identifer)字段可标识唯一的数据包或数据流,但是由于家庭网关代理了多个数据流,那么可能会出现identifer字段的值不连续或者重复出现的情况,使得ONT难以直接利用所接收的数据包中原有的identifer的值来进行数据包的反馈。
例如,在图2所示的场景中,家庭网关代理了卧室的第一终端设备(例如电脑)和第二终端设备(例如手机)的多个业务流。服务器发送给与卧室的ONT连接的第一终端设备的业务流的identifer字段的值位于[0-1000],服务器发送给与卧室的ONT连接的第二终端设备的业务流的identifer字段的值位于[500-1000]。如果沿用所接收的业务流中原有的identifer的值来进行业务流的反馈,例如第一终端设备向卧室的ONT反馈没有接收到标识符为600的业务流,第二终端设备向卧室的ONT反馈接收到标识符为600的业务流,显然,卧室的ONT向家庭网关反馈是否接收到业务流的ACK消息会出错。这可能导致家庭网关重新发送第一终端设备或第二终端设备已经收到的TCP报文,或者不重新发送第一终端设备或第一终端设备没有收到的TCP报文。即针对FTTR的场景,目前还没有相应的TCP代理方案。
为此,在本申请实施例中,家庭网关接收到来自服务器的多个TCP报文,可确定用于唯一标识各个TCP报文的标识信息,即各个TCP报文的标识信息均不同。针对每个TCP报文,家庭网关可重新封装该TCP报文和该TCP报文的标识信息,并通过家庭网关和第一ONT建立的隧道,将封装后的报文发送给第一ONT。例如,服务器向家庭网关发送第一TCP报文和第二TCP报文,该第一TCP报文和第二TCP报文对应第一ONT。家庭网关可向第一ONT发送与第一TCP报文对应的第一隧道报文,以及与第二TCP报文对应的第二隧道报文。其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息。由于第一隧道报文中的标识信息可用于唯一标识第一隧道报文,第二隧道报文可用于唯一标识第二隧道报文。第一ONT接收到第一隧道报文,根据第一隧道报文恢复出第一TCP报文,并发送给第一终端设备。第一ONT接收到第二隧道报文,根据第一隧道报文恢复出第二TCP报文,并发送给第一终端设备。第一终端设备接收到第一TCP报文,向第一ONT发送针对第一TCP报文的ACK,第一终端设备接收到第二TCP报文,向第一ONT发送针对第二TCP报文的ACK。第一ONT接收到来自第一终端设备的各个TCP报文的ACK,可根据各个TCP报文的标识信息生成反馈报文,并发送给家庭网关。该反馈报文可用于指示第一终端设备针对各个TCP报文的ACK。由于标识信息唯一标识TCP报文,自然也唯一标识针对该TCP报文的ACK,所以该反馈报文能够准确指示各个终端设备是否接收到对应的TCP报文。
在可能的实现方式中,用于唯一标识TCP报文的标识信息有多种实现方式,本申请实施例不限制使用何种方式,较为灵活。
作为一种示例,用于唯一标识TCP报文的标识信息为序列号,不同的TCP报文对应的序列号不同。例如,第一TCP报文的标识信息为第一序列号,第二TCP报文的标识信息为第二序列号。需要说明的是,本申请实施例对该标识信息的长度不作限制,即用于唯一标识TCP报文的序列号的位数不作限制。例如该序列号可以是一个32位的序列号,也可以是其他位数的序列号。在下文的描述中,以该序列号是32位的序列号为例。
家庭网关接收到第一TCP报文,可为第一TCP报文添加第一序列号,并封装添加第一序列号后的第一TCP报文,生成第一隧道报文。同理,家庭网关接收到第二TCP报文,可为第二TCP报文添加第二序列后,并封装添加第二序列号后的第二TCP报文,生成第二隧道报文。之后家庭网关将第一隧道报文和第二隧道报文分别发送给第一ONT。
需要说明的是,由于该序列号可用于区分不同业务流的TCP报文,所以该序列号也可称为分组ID。即家庭网关在接收到来自服务器的TCP报文,可为给TCP报文添加分组ID,并将添加分组ID后的TCP报文发送给第一ONT。该方案重新为每个TCP报文生成唯一序列号,较为简单。且,由于反馈报文时只需要考虑序列号这一个元素,所以可实现较为高效的反馈。
作为一示例,家庭网关与第一ONT之间建立的隧道是UDP隧道。由于UDP隧道支持透明传输,可以不会被安全检查过滤,较为简单。以第一隧道报文为例,家庭网关接收到来自服务器的第一TCP报文,可生成用于标识第一TCP报文的32位序列号,并将该第一TCP报文的内容以及该32位序列号封装在一起作为UDP报文的负载,封装在UDP隧道,然后转发给第一ONT。
为了便于理解,请参见图5,为UDP报文的一种结构示意图。如图5所示,UDP报文包括IP头部、UDP头部、分组ID和TCP报文段。其中,UDP头部、分组ID和TCP报文段可认为是IP包的负载,即IP数据。UDP头部可用于承载源端口、目的端口、效验值以及UDP数据报文长度,即UDP报文头和UDP数据长度。效验值用于效验数据在传输过程中是否被损坏。分组ID用于承载32位序列号,UDP的数据部分包括TCP报文段。
家庭网关可采用如图5所示的结构向第一ONT发送与第一TCP报文对应的UDP报文(也就是上述的第一隧道报文)。由于UDP报文中的分组ID唯一标识第一TCP报文,所以第一ONT接收到来自家庭网关的UDP报文,可利用该UDP报文的分组ID向家庭网关发送第一TCP报文的ACK的反馈报文。
作为另一示例,家庭网关与第一ONT之间建立的隧道是私有IP隧道。家庭网关接收到来自服务的第一TCP报文之后,可将该第一TCP报文以及用于标识该第一TCP报文的序列号封装在私有IP隧道,然后转发给第一ONT。
为了便于理解,请参见图6,示出了本申请实施例提供的私有IP隧道的数据报文的格式。如图6所示,IP报文包括IP头部、分组ID和TCP报文段。其中,分组ID和TCP报文段可认为是IP包的负载,即IP数据。IP头部可用于承载源端口、目的端口、以及该IP报文采用的封装协议。分组ID用于承载32位序列号,UDP的数据部分包括TCP报文段。
采用图6所示的结构,家庭网关接收到来自服务器的第一TCP报文之后,生成用于标识第一TCP报文的32位序列号,并将IP头部中的protocol字段中的TCP的protocol修改为自定义protocol,生成新的数据报文,即IP隧道报文。该数据报文中的自定义protocol的负载可包括第一TCP报文的TCP报文段。从图6中可以看出,家庭网关发送给第一ONT的数据报文的IP头部中的protocol字段承载自定义protocoll。由于IP头部本身包括protocol字段,采用图6所示格式,不需要额外增加IP头部或UDP头部的长度,可减小发送报文的开销。
应理解,本申请实施例旨在考虑由于服务器发送的多个原始TCP报文中的序列号可能不唯一,沿用原始TCP报文自身携带的序列号来区分TCP报文的ACK,可能导致出错。作为一种可替换的方案,标识信息可以是TCP报文的TCP五元组以及TCP报文自身的序列号(SeqNum,SN),即通过TCP报文的TCP五元组以及TCP报文自身的SN来唯一标识该TCP报文。应理解,TCP五元组包括服务器IP地址、服务器端口号、终端设备的IP地址、终端设备的端口号,以及TCP报文的封装协议。这种方式下,家庭网关接收到来自服务器的第一TCP报文(或第二TCP报文),可直接将第一TCP报文(或第二TCP报文)转发给第一ONT,不需要家庭网关另外添加用于唯一标识第一TCP报文(或第二TCP报文)的标识,自然也不需要重新封装添加标识后的第一TCP报文(或第二TCP报文),能够减轻家庭网关的负担。需要说明的是,这种情况下,家庭网关接收到第一TCP报文,向第一ONT发送第一隧道报文,实际上是向第一ONT发送第一TCP报文。同理,家庭网关接收到第二TCP报文,向第一ONT发送第二隧道报文,实际上是向第一ONT发送第二TCP报文。
S306、第一ONT向第一终端设备发送第一TCP报文和第二TCP报文。
第一ONT接收到第一隧道报文可恢复出第一TCP报文,发送给第一终端设备;第一ONT接收到第二隧道报文可恢复出第二TCP报文,发送给第一终端设备。
示例性的,以第一TCP报文为例,如果第一TCP报文采用图5所示的结构封装,第一ONT接收到第一隧道报文,可去除分组ID,恢复成服务器发送给家庭网关的第一TCP报文。
示例性的,如果第一TCP报文采用图6所示的结构封装,第一ONT接收到家庭网关经过私有IP隧道传输的数据报文,可将数据报文中的IP头部中的protocol字段中自定义protocol修改为TCP的protocol,恢复成服务器发送给家庭网关的第一TCP报文。
S307、第一终端设备向第一ONT发送针对第一TCP报文和第二TCP报文的反馈报文。
第一终端设备接收到来自第一ONT的某个TCP报文,可向第一ONT发送针对该TCP报文的反馈报文,以指示是否接收到该TCP报文。需要说明的是,第一TCP报文和第二TCP报文对应第一ONT,可以对应与第一ONT连接的一个终端设备(上述以第一终端设备为例),也可以对应与第一ONT连接的多个终端设备。每个终端设备接收到来自第一ONT的某个TCP报文,可向第一ONT发送针对该TCP报文的反馈报文。下文以第一TCP报文和第二TCP报文对应第一终端设备为例,即至少一个终端设备为第一终端设备为例。
作为一种示例,第一终端设备接收到某个TCP报文之后,可向第一ONT发送块确认(block acknowledgement,BA)帧,这样第一ONT根据媒体接入控制(medium accesscontrol,MAC)层的BA帧就可以确定第一终端设备是否接收到该TCP报文。由于MAC层的BA帧的回复比TCP层的ACK报文快,例如终端设备向第一ONT发送的BA帧可能在3-5ms被捕捉到,终端设备向第一ONT发送的TCP报文的ACK报文可能需要10-20ms被捕捉到,所以本申请实施例以BA帧的方式针对某个TCP报文回复反馈,可提高家庭网关与第一ONT之间的数据传输速率。
S308、第一ONT向家庭网关发送反馈报文,该反馈报文是第一ONT基于第一终端设备发送的ACK报文生成的,所述第一终端设备发送的ACK报文用于响应第一TCP报文和第二TCP报文,该反馈报文包括反馈信息,所述反馈信息包括与第一TCP报文的标识信息对应的第一标志位和与第二TCP报文的标识信息对应的第二标志位,第一标志位用于指示第一终端设备是否接收到第一TCP报文,第二标志位用于指示第一终端设备是否接收到第二TCP报文。
在本申请实施例中,第一ONT可根据第一终端设备接收TCP报文的情况,定时向家庭网关发送反馈报文,以指示家庭网关重复发送第一终端设备没有接收到的TCP报文或删除第一终端设备已经接收到的TCP报文。例如,第一ONT接收到来自第一终端设备的多个TCP报文的ACK报文之后,可生成反馈报文并发送给家庭网关。即第一ONT无需接收到任意终端设备针对某个TCP报文的ACK报文之后,立即反馈给家庭网关,以尽量减少第一ONT和家庭网关之间的交互次数。
需要说明的是,前述以第一TCP报文和第二TCP报文都是发送给第一终端设备为例。应理解,如果第一TCP报文是发送给与第一ONT连接的第一终端设备,第二TCP报文是发送给与第一ONT连接的第二终端设备,那么第一ONT从而第一隧道报文中恢复出第一TCP报文发送给第一终端设备,从第二隧道报文中恢复出第二TCP报文发送给第二终端设备。第一终端设备向第一ONT发送针对第一TCP报文的第一ACK报文,第二终端设备向第一ONT发送针对第二TCP报文的第二ACK报文。第一ONT根据第一TCP报文的标识信息以及第一ACK报文,和第二TCP报文的标识信息以及第二ACK报文生成反馈报文。该反馈报文包括的反馈信息包括的第一标志位和用于指示第一终端设备是否接收到第一TCP报文,第二标志位用于指示第二终端设备是否接收到第二TCP报文。
下面以图5和图6所示的结构,分别介绍第一ONT如何生成反馈报文。
应理解,如果家庭网关向第一ONT发送第一隧道报文采用的格式为图5所示的格式,那么第一ONT向家庭网关发送的反馈报文的格式也应与图5所示的格式对应。
即请参见图7,为UDP反馈报文的一种结构示意图。UDP反馈报文包括IP头部、UDP头部和反馈信息,反馈信息可承载与图5中的分组ID对应的标志位,该标志位可用于指示第一终端设备是否接收到第一TCP报文,例如与第一TCP对应的分组ID对应的标志位为0,指示第一终端设备接收到第一TCP报文;相反,与第一TCP对应的分组ID对应的标志位为0,指示第一终端设备没有接收到第一TCP报文。图7所示的结构利用唯一标识TCP报文的分组ID向家庭网关进行TCP报文的反馈,更为简单。且反馈信息较少,所以更为高效。
或者,反馈信息可承载来自第一终端设备针对第一TCP报文的BA帧内容和第一TCP报文的TCP五元组和SN,以及反馈信息可承载针对第二TCP报文的BA帧内容和第二TCP报文的TCP五元组和SN,如图8所示。
如果家庭网关向第一ONT发送第一隧道报文采用的格式为图6所示的格式,那么第一ONT向家庭网关发送的反馈报文的格式也应与图6所示的格式对应。
即请参见图9,示出了与图6所示格式对应的反馈报文的一种结构示意图。第一ONT接收到来自第一终端设备的ACK报文,也可以按照图9所示的结构构造反馈报文。反馈报文可包括IP头部和反馈信息,其中,IP头部的protocol字段中的protocol为自定义protocol,反馈信息可承载与图6中的分组ID对应的标志位,该标志位可用于指示第一终端设备是否接收到第一TCP报文,例如与第一TCP对应的分组ID对应的标志位为0,指示第一终端设备接收到第一TCP报文;相反,与第一TCP对应的分组ID对应的标志位为0,指示第一终端设备没有接收到第一TCP报文。
第一ONT生成的反馈报文中的反馈信息包括与第一TCP报文和第二TCP报文各自的标识信息对应的标志位,该标志位用于指示第一终端设备是否接收到对应的TCP报文。由于标识信息唯一标识各个TCP报文,所以第一ONT向家庭网关发送的反馈报文可准确地指示第一终端设备是否接收到某个TCP报文,从而避免沿用该TCP报文自身携带的序列号来反馈第一终端设备是否接收到该TCP报文可能导致的错误。
S309、家庭网关根据反馈报文确定删除家庭网关存储的第一终端设备已经接收的对应TCP报文,以及向第一ONT重新发送第一终端设备未接收到的对应TCP报文。
家庭网关接收到反馈报文之后,可根据该反馈报文中的反馈信息中携带的与各个序列号对应的标志位确定第一终端设备接收到哪些TCP报文,以及第一终端设备没有接收到哪些TCP报文。对于第一终端设备没有接收到的TCP报文,家庭网关可重新向第一终端设备发送;对于第一终端设备已经接收到的TCP报文,家庭网关可删除已经存储的这些TCP报文,以节约家庭网关的存储空间。应理解,反馈信息中的序列号均小于家庭网关存储的多个TCP报文中的最大序列号。
需要说明的是,如果反馈报文中的反馈信息携带多个标志位,例如第一标志位和第二标志位,第一标志位可指示第一终端设备是否接收到第一TCP报文,第二标志位可指示第二终端设备是否接收到第二TCP报文。家庭网关接收到该反馈报文后,可根据各个标志位确定向第一ONT重新发送各个终端设备没有接收到的对应TCP报文,也可以向第一ONT重新发送部分终端设备没有接收到的TCP报文。例如,家庭网关可向第一ONT重新发送第一终端设备没有接收到的第一TCP报文;或者,家庭网关可向第一ONT重新发送第二终端设备没有接收到的第二TCP报文;或者家庭网关可向第一ONT重新发送第一终端设备没有接收到的第一TCP报文,以及向第一ONT重新发送第二终端设备没有接收到的第二TCP报文。
应理解,由于家庭网关已经提前向服务器发送了针对该TCP报文的ACK报文,所以当第一终端设备的ACK报文到达家庭网关之后,家庭网关可根据该ACK报文来重复发送第一终端设备没有接收到的TCP报文或删除第一终端设备已经接收到的TCP报文。但是当第一ONT向家庭网关发送的反馈报文发生丢包,那么家庭网关无法知道第一终端设备是否接收到某个TCP报文,自然也就不会向第一终端设备重新发送第一终端设备没有接收到的TCP报文。
为此,在本申请实施例中,第一ONT除了向家庭网关发送生成的反馈报文之外,还可以将来自第一终端设备针对各个TCP报文的ACK报文转发给家庭网关。这样即使第一ONT向家庭网关发送的反馈报文发生丢包,那么家庭网关还可按照后续第一终端设备发送的TCP报文的ACK报文来重复发送第一终端设备没有接收到的TCP报文或删除第一终端设备已经接收到的TCP报文。
请参见图10,为本申请实施例提供的下行TCP代理实现的原理框图。与图10对应的各个报文的格式如图11所示,为下行TCP代理所涉及的各个报文的格式示意图。图11以下行TCP代理交互的报文格式说明下行TCP的实现过程,且以家庭网关与第一ONT建立的隧道是UDP隧道为例。
如图10所示,服务器有业务数据发送给第一终端设备时,服务器可向家庭网关发送多个TCP报文(数据报文)。家庭网关接收到各个TCP报文之后,向服务器反馈针对各个TCP报文的ACK报文,并保存各个TCP报文。如果家庭网关没有接收到来自服务器的TCP报文,那么服务器向家庭网关重新发送该TCP报文。由于家庭网关可能接收到服务器的各个TCP报文,不需要服务器重新发送TCP报文,所以在图10中,服务器向家庭网关发送的重传报文用虚线示意。之后家庭网关根据各个TCP报文的分组ID重新封装各个TCP报文,生成隧道报文,并转发给第一ONT。第一ONT将从家庭网关接收的每个报文中恢复出原始的TCP报文,并转发给第一终端设备。第一终端设备接收到各个TCP报文,向第一ONT发送针对各个TCP报文的BA反馈报文。第一ONT接收到第一终端设备发送的各个BA反馈报文,生成反馈报文并发送给家庭网关。家庭网关根据接收到反馈报文向第一ONT重新发送第一终端设备没有接收到的TCP报文,第一ONT向第一终端设备转发家庭网关重新发送的TCP报文。第一终端设备可能接收到全部的TCP报文,所以家庭网关不需要向第一ONT重新发送TCP报文,因此在图10中家庭网关向第一ONT发送的隧道重传报文以及第一ONT向第一终端设备发送的重传报文以虚线进行示意。
相应的,如图11所示,服务器向家庭网关发送多个TCP报文(数据报文)。家庭网关接收到各个TCP报文,保存各个TCP报文。家庭网关在保存各个TCP报文时,针对各个TCP报文生成用于唯一标识各个TCP报文的序列号,即分组ID(如图11中的n-2、n-1,…,n+2,…)。之后家庭网关根据各个TCP报文的分组ID重新封装各个TCP报文,并转发给第一ONT。第一ONT将从家庭网关接收的每个报文中恢复出原始的TCP报文,并转发给第一终端设备。第一终端设备接收到各个TCP报文,向第一ONT发送针对各个TCP报文的BA帧(反馈报文)。每个TCP报文的BA帧携带反馈状态,例如0或1,以指示是否接收到该TCP报文。当然第一终端设备可同时反馈多个TCP报文的BA帧(图11以此为例)。图11中MAC层BA帧反馈确认表示第一终端设备向第一ONT发送的反馈帧,该MAC层BA帧反馈确认可包括起始序号和位图,其中起始序号用于指示反馈的状态从第几个开始,位图用于指示反馈的各个TCP报文对应的状态。
第一ONT接收到该BA帧,解析该BA帧,并生成反馈报文发送给家庭网关。例如第一ONT可获取BA帧的位图,并根据位图确定哪些TCP报文被接收到,哪些TCP报文没有被接收到,再确认各个TCP报文对应的分组ID;之后第一ONT根据各个TCP报文的分组ID以及各个TCP报文对应的状态生成反馈报文。该反馈报文携带与各个序列号对应的标志位。家庭网关接收到来自第一ONT的反馈报文,可根据该反馈报文的反馈信息中的标志位的值来确定删除已经被接收的TCP报文,以及重新向第一ONT发送第一终端设备没有接收到的TCP报文。
上述本申请实施例提供的下行TCP代理方法可适用于FTTR场景,由于家庭网关的计算能大通常高于ONT的计算能力,所以家庭网关能够更好地实现TCP代理。且家庭网关在第一终端设备和服务器的三次握手过程中,可欺骗第一终端设备和服务器彼此的最大缓存队列大小,使得第一终端设备和服务器都以较高的发送数率发送报文,提高业务数据传输效率。且家庭网关向第一终端设备转发来自服务器的TCP报文时,可通过家庭网关和第一ONT之间建立的隧道重新封装该TCP报文,例如为该TCP报文添加用于唯一标识该TCP报文的标识信息,以使得ONT可根据各个TCP报文的标识信息向家庭网关发送针对各个TCP报文的ACK报文,能够准确指示各个终端设备是否接收到对应的TCP报文。
上述实施例介绍了下行TCP代理的大致流程,应理解,在下行TCP代理过程中难免发生丢包。但是由于家庭网关作为TCP代理点,即使家庭网关和终端设备之间发生丢包,服务器无感知,仍然会以较高的速率发送TCP报文,相应的,家庭网关也会以较高的数量发送TCP报文,可能会导致传输链路的拥塞。例如,当家庭网关和终端设备之间发生丢包,根据TCP协议,第一终端设备对于到达的每一份TCP报文都将回复对应的ACK报文,以指示对端将丢失的TCP报文重传。由于家庭网关的存在,当家庭网关和终端设备之间发生丢包,服务器仍然会以较高的速率发送TCP报文。这种情况下,第一终端设备会生成较多的ACK报文,这较多个ACK报文涌入家庭网关和终端设备的传输链路,如果该传输链路丢包率较高,那么ACK报文的涌入会进一步加剧该传输链路的拥塞。
为此,在本申请实施例中,家庭网关确定家庭网关和第一终端设备之间的丢包率大于或等于预设阈值,可降低向第一ONT发送报文的速率,并指示服务器降低发送报文的速率,以尽量降低传输链路拥塞的概率。沿用图3所示的例子,即家庭网关确定家庭网关和第一终端设备之间的丢包率大于或等于预设阈值,可降低向第一ONT发送第一隧道报文的速率。或者,家庭网关确定家庭网关和第一终端设备之间的丢包率大于或等于预设阈值,可降低向第一ONT发送第一隧道报文和第二隧道报文的速率。除此之外,家庭网关还可以指示服务器降低发送第一TCP报文和第二TCP报文的速率。即在报文传输过程中,家庭网关可根据服务器和第一终端设备之间的传输链路的丢包率来调整转发报文的速率,以及指示服务器调整发送数据的速率,从而保证业务数据传输效率的同时,降低网络拥塞的概率。
在可能的实现方式中,家庭网关指示服务器降低发送第一TCP报文和第二TCP报文的速率的方式有多种,较为灵活。例如,家庭网关可向服务器发送ECE报文,来指示服务器降低发送TCP报文的速率。又例如,家庭网关可向服务器发送多个标识信息相同的ACK报文,这多个标识信息相同的ACK报文对应于丢包的TCP报文。通过这种方式可隐式地指示服务器降低发送TCP报文的速率。
应理解,如果服务器发送TCP报文的速率较高,家庭网关向第一ONT发送TCP报文的速率较低。也可以认为,家庭网关接收到来自服务器的TCP报文之后,可能需要对接收的TCP报文进行处理之后,才会转发给第一ONT。例如家庭网关将来自服务器的第一TCP报文封装为第一隧道报文,将第一隧道报文发送给第一ONT。如果家庭网关处理TCP报文的速率较低,那么家庭网关会存储越来越多的TCP报文。这种情况下,如何服务器仍然采用原有的发送速率发送TCP报文,由于家庭网关的存储资源(存储空间)有限,家庭网关后续由于无法存储来自服务器的TCP报文,导致服务器与第一终端设备之间的丢包。
为此,在本申请实施例中,家庭网关可确定向服务器发送针对例如第一TCP报文的ACK报文的时机,以灵活调整代理速率。例如,家庭网关存储的数据量小于或等于第一阈值时,可认为家庭网关的存储空间还有足够的余量,这种情况下,在接收到来自第一终端设备的ACK报文之前,可先向服务器反馈ACK报文。这样不会影响服务器发送数据的速率,即服务器还是会以较高的速率发送数据。相反,如果家庭网关存储的数据量大于第一阈值,可认为家庭网关存储了较多的数据,存储空间有限。这种情况下,家庭网关在接收到来自第一终端设备针对第一TCP报文的ACK报文之后,才向服务器反馈该ACK报文。这样服务器会延迟发送数据,而家庭网关还是以原有的发送速率向第一终端设备转发所存储的TCP报文,从而尽量保证家庭网关有足够的存储空间。由于家庭网关在接收到来自第一终端设备的ACK报文之前,先向服务器反馈ACK报文,服务器还是会以原先较高的速率发送数据,所以可认为是加速代理。相对而言,家庭网关在接收到来自第一终端设备针对第一TCP报文的ACK报文之后,向服务器反馈该ACK报文,即服务器会延迟发送数据,可认为是正常代理。本申请实施例可根据家庭网关实际存储的数据量(剩余存储空间)确定是否在加速代理和正常代理之间切换,既能保证服务器发送TCP报文的较高速率,又可以给家庭网关留有足够的时间来处理要发送的TCP报文,保证有足够的存储空间存储来自服务器的TCP报文。
需要说明的是,第一阈值可以是预设的,也可以是服务器和家庭网关协商的。家庭网关中存储的TCP报文最终要发送给第一终端设备,因此以第一终端设备的最大缓存队列大小来确定第一阈值能够满足第一终端设备的实际处理能力。例如,第一阈值可以根据第一终端设备的窗口大小(最大缓存队列大小)和第一比例确定,第一比例可以预定义的或者家庭网关与第一终端设备协商的。例如,第一比例可以是1/2,即家庭网关存储的数据量小于第一终端设备的最大缓存队列的1/2,那么家庭网关接收到来自服务器的TCP报文,向服务器发送针对该TCP报文的ACK报文。
需要说明的是,上述以家庭网关的存储的数据量大于第一阈值,家庭网关从加速代理切换到正常代理。即家庭网关存储的数据量小于或等于第一终端设备的最大缓存队列的1/2,那么家庭网关接收到来自服务器的TCP报文,在接收到来自第一ONT针对该TCP报文的ACK报文之后,向服务器发送针对该TCP报文的ACK报文。即上述以家庭网关存储的数据量与第一阈值的比较结果来确定是否在加速代理和正常代理之间切换。本申请实施例对从加速代理切换到正常代理和从正常代理切换到加速代理参考的家庭网关存储的数据量是否相同不作限制。例如,家庭网关确定家庭网关存储的数据量大于或等于第三阈值,家庭网关从加速代理切换到正常代理。其中,第三阈值可根据第一终端设备的窗口大小和第三比例确定,第三比例与第一比例不同。例如第三比例为3/4,即家庭网关存储的数据量小于第一终端设备的最大缓存队列的3/4,那么家庭网关接收到来自服务器的TCP报文,在接收到第一ONT针对该TCP报文的ACK报文之后,向服务器发送针对该TCP报文的ACK报文。即家庭网关根据实际缓存的数据量,在加速代理和正常代理之间进行切换,从而缓减家庭网关的存储压力。
如上介绍了本申请实施例提供的下行TCP代理方法的一些方案。考虑到终端设备到服务器的越来越多种业务的出现,例如视频会议业务、虚拟现实(virtual reality,VR)直播业务等,所涉及的业务数据量也越来越大。如果终端设备和服务器之间没有TCP代理,那么终端设备由于等待服务器针对报文的ACK才向服务器发送下一次数据,显然业务数据传输效率较低。为此,在本申请实施例中,家庭网关除了用于下行TCP代理,还可以用于上行TCP代理,即用于第一终端设备到服务器之间的TCP代理,以适用于第一终端设备到服务器的越来越多种业务数据,例如视频会议数据,邮件数据等较多业务数据传输的实际需求,提高第一终端设备到服务器之间传输链路的吞吐量。
下面介绍本申请实施例提供的上行TCP代理方法。
请参见图12,为本申请实施例提供的上行TCP代理方法的流程示意图。应理解,上行TCP代理过程中,家庭网关作为第一终端设备到服务器之间的代理。上行TCP代理的流程如下。
S1201、第一终端设备与服务器建立TCP连接。
在上行传输过程中,也涉及到服务器和第一终端设备的三次握手过程以实现第一终端设备和服务器之间的TCP连接,具体可参考前述S301(即图4所示的流程)的相关描述,这里不再赘述。需要说明的是,在上行TCP代理过程中,家庭网关接收到来自第一终端设备的第一SYN报文,可转发给服务器,但是在接收到来自服务器的第一SYN响应报文,可修改该第一SYN响应报文中的窗口大小字段指示的值,进一步还可以修改第一SYN响应报文中的窗口缩放选项的值。即家庭网关只欺骗第一终端设备,服务器的最大缓存队列大小。
S1202、第一终端设备向第一ONT发送第三TCP报文和第四TCP报文。
S1203、第一ONT向家庭网关发送第三TCP报文和第四TCP报文。
当第一终端设备有业务数据需要发送给服务器,第一终端设备可将该业务数据先发送给第一ONT,由第一ONT发送给服务器。例如,第一终端设备向第一ONT发送第三TCP报文和第四TCP报文,第一ONT接收到第三TCP报文和第四TCP报文,将第三TCP报文和第四TCP报文转发给家庭网关。
S1204、家庭网关向服务器转发第三TCP报文和第四TCP报文。
S1205、家庭网关向第一ONT发送与第三TCP报文对应的ACK报文以及与第四TCP报文对应的ACK报文。
在第一终端设备和服务器进行数据传输的过程中,当第一终端设备传输的上行TCP报文到达家庭网关,家庭网关可在缓冲区内对接收的TCP报文进行缓存备份,并构造各个TCP报文对应的ACK报文发送给第一ONT。第一ONT接收到每个TCP报文的ACK报文可将该ACK报文发送给第一终端设备,以指示第一终端设备重新发送丢失的TCP报文。例如,当第一终端设备和家庭网关的传输过程中发送丢包,那么家庭网关可构造TCP选项(SelectiveACK,SACK)报文,以告知第一终端设备哪些报文段丢失,哪些报文段重传了,哪些报文段已经提前收到等信息。根据这些信息,第一终端设备可以只重传真正丢失的报文段。或者,家庭网关可向第一ONT发送三个相同序列号的ACK报文,第一终端设备在接收到三个相同序列号的ACK报文,可认为该序列号对应的TCP报文丢失,从而重新发送丢失的TCP报文。
考虑到家庭网关的内存资源有限,又要维护多个ONT下的TCP连接,那么家庭网关为每个TCP能够提供的缓存区域资源有限。所以与下行TCP代理类似,在上行TCP代理过程中,家庭网关也可以选择在正常代理和加速代理之间进行切换。即家庭网关可根据家庭网关的存储资源的情况调整向第一ONT发送针对例如第三TCP报文的ACK报文的时机,以灵活调整代理速率。示例性的,家庭网关存储的数据量小于或等于第二阈值时,可认为家庭网关的存储空间还有足够的余量,这种情况下,在接收到来自服务器针对第三TCP报文的ACK报文之前,可先向第一ONT反馈ACK报文。这样不会影响第一ONT发送数据的速率,即第一ONT还是会以较高的速率发送数据。相反,如果家庭网关存储的数据量大于第二阈值,可认为家庭网关存储了较多的数据,存储空间有限。这种情况下,家庭网关在接收到来自服务器针对第三TCP报文的ACK报文之后,才向第一ONT反馈该ACK报文。这样第一ONT会延迟发送数据,而家庭网关还是以原有的速率向服务器转发所存储的TCP报文,从而尽量保证家庭网关有足够的存储空间。类似第一阈值,第二阈值可根据服务器的窗口大小和第二比例确定,第二比例与第一比例也可以相同,也可以不同。
例如,在服务器和第一终端设备连接建立的初期,家庭网关的空余资源较多,可采用加速代理的方式促使第一终端设备加快上行TCP报文的发送。即当上行TCP报文段到达家庭网关时,家庭网关首先对所接收的上行报文进行缓存备份,之后可构造针对各个上行报文的ACK,代理服务器对各个上行报文的确认。随着家庭网关缓存的数据量增多,家庭网关的空闲资源越来越少,若继续进行加速代理,那么短时间内会有更多来自第一终端设备的上行报文到达,导致家庭网关的缓存资源不足。因此,在本申请实施例中,当家庭网关的缓存的数据量达到服务器的窗口大小的1/2时,可关闭加速代理,开启正常代理。正常代理也就是家庭网关对接收的上行报文进行缓存备份,但是不立即发送针对上行报文的ACK,而是延迟一段时间发送针对上行报文的ACK。通过延迟回复针对上行报文的ACK可以降低第一终端设备的数据发送速率,缓解家庭网关的缓存资源压力。例如家庭网关可以等待1/2个家庭网关到服务器数据传输的往返时延(round-trip time,RTT)后,再构造针对各个上行报文的ACK,并发送给第一ONT。其中,RTT可以通过在家庭网关构造Internet控制报文协议(internet control message protocol,ICMP)回显请求报文,并在数据段添加本地时间拷贝。家庭网关接收到服务器回复的回显应答报文时,可以根据当前时间和回显应答报文中的时间戳得到RTT。随着家庭网关的缓存数据量继续增加,例如到达服务器的窗口大小的3/4,家庭网关可暂时关闭代理确认,即家庭网关不再代理服务器对第一终端设备的上行报文进行确认,仅仅对接收的上行报文进行缓存。之后等待服务器的反馈确认,家庭网关接收到来自服务器的反馈之后,可删除已被服务器接收的缓存报文。如果有来自服务器的SACK或快确认请求,家庭网关缓存内有服务器请求的丢失报文,家庭网关可向服务器发送多个服务器请丢的丢失报文,以提高重传的成功率。
S1206、服务器向家庭网关发送针对第三TCP报文的ACK报文以及针对第四TCP报文的ACK报文,每个ACK报文携带对应TCP报文的TCP五元组和序列号。
S1207、家庭网关根据接收的ACK报文删除家庭网关所存储的被服务器已经接收到的TCP报文,并向服务器重新发送服务器没有接收到的TCP报文。
服务器可向家庭网关发送针对第三TCP报文的ACK报文以及针对第四TCP报文的ACK报文,各个TCP报文的ACK报文携带有用于唯一标识各个TCP报文的TCP五元组和序列号。家庭网关接收到各个TCP报文的ACK报文,可删除已被服务器接收的缓存报文。若与某个TCP报文对应的ACK报文还指示服务器没有接收到该TCP报文,家庭网关缓存内有服务器请求的丢失报文,家庭网关可向服务器发送多个服务器请丢的丢失报文,以提高重传的成功率。
应理解,家庭网关在服务器向第一终端设备发送针对各个TCP报文的ACK报文之前,将各个TCP报文的ACK报文发送给第一终端设备,并向服务器转发来自第一终端设备的各个TCP报文。如果服务器向家庭网关发送的针对各个TCP报文的ACK报文携带的序列号小于家庭网关所存储的多个TCP报文对应的最大序列号,那么表示服务器已经接收到对应的TCP报文,所以家庭网关可直接丢弃该TCP报文对应的ACK报文,不向第一ONT转发。
本申请实施例提供的上行TCP代理方法,由于家庭网关可缓存来自终端设备的TCP报文,并提前向终端设备回复各个TCP报文的ACK。对于终端设备而言,可提前认为服务器已经接收到TCP报文,所以仍然采用较高的发送速率向服务器发送TCP报文,从而提高终端设备与服务器之间业务数据的传输效率。且更能满足VR直播业务、视频会议业务等较大业务数据量的传输需求。
上述本申请提供的实施例中,分别从服务器、家庭网关、ONT以及终端设备,以及服务器、家庭网关、ONT和终端设备之间交互的角度对本申请实施例提供的方法进行了介绍。为了实现上述本申请实施例提供的方法中的各功能,终端和基站可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。
下面结合附图介绍本申请实施例中用来实现上述方法的通信装置。因此,上文中的内容均可以用于后续实施例中,重复的内容不再赘述。
图13示出了一种通信装置的结构示意图。该通信装置可以对应实现上述各个方法实施例中由家庭网关实现的功能或者步骤。
该通信装置可以包括处理模块1310和收发模块1320。可选的,还可以包括存储单元,该存储单元可以用于存储指令(代码或者程序)和/或数据。处理模块1310和收发模块1320可以与该存储单元耦合,例如,处理模块1310可以读取存储单元中的指令(代码或者程序)和/或数据,以实现相应的方法。上述各个模块可以独立设置,也可以部分或者全部集成。
一些可能的实施方式中,通信装置1300能够对应实现上述方法实施例中家庭网关的行为和功能。例如通信装置1300可以为家庭网关,也可以为应用于家庭网关中的部件(例如芯片或者电路)。收发模块1320可以用于执行图3或图4或图12所示的实施例中由家庭网关所执行的全部接收或发送操作,例如图3所示的实施例中的S301-S305以及S308-S309,和/或用于支持本文所描述的技术的其它过程;又例如图4所示的实施例中的S3012-S3015以及S3018-S3019,和/或用于支持本文所描述的技术的其它过程;又例如图12所示的实施例中的S1203-S1206,和/或用于支持本文所描述的技术的其它过程。其中,处理模块1310用于执行如图3或图4或图12所示的实施例中由家庭网关所执行的除了收发操作之外的全部操作,例如图3所示的实施例中的S309,和/或用于支持本文所描述的技术的其它过程。
例如,处理模块1310用于生成所述收发模块1320所要发送的TCP报文,收发模块1320用于:
接收来自服务器的第一TCP报文和第二TCP报文,第一TCP报文和第二TCP报文对应第一ONT;
向服务器发送针对第一TCP报文和第二TCP报文的ACK报文;
向第一ONT发送与第一TCP报文对应的第一隧道报文,以及与第二TCP报文对应的第二隧道报文,其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息,所述标识信息用于第一ONT向通信装置1300发送针对第一TCP报文和第二TCP报文的反馈报文。
在一种可能的实现方式中,第一ONT连接第一终端设备和第二终端设备,收发模块1320还用于:
接收来自第一ONT的反馈报文,该反馈报文是第一ONT基于第一终端设备和第二终端设备发送的ACK报文生成的,第一终端设备发送的ACK报文用于响应第一TCP报文,第二终端设备发送的ACK报文用于响应第二TCP报文,该反馈报文包括反馈信息,所述反馈信息包括与第一TCP报文的标识信息对应的第一标志位,和与第二TCP报文的标识信息对应的第二标志位,第一标志位用于指示第一终端设备是否接收到第一TCP报文,第二标志位用于指示第二终端设备是否接收到第二TCP报文;
处理模块1310还用于:根据反馈信息确定删除通信装置1300存储的第一终端设备和第二终端设备已经接收的对应TCP报文,向第一ONT重新发送第一终端设备未接收到的第一TCP报文,或者向第一ONT重新发送第二终端设备未接收到的第二TCP报文。
在一种可能的实现方式中,反馈报文是第一ONT周期性封装第一终端设备和第二终端设备发送的ACK报文获得的。
在一种可能的实现方式中,在收发模块1320接收来自服务器的第一TCP报文和第二TCP报文之前,收发模块1320还用于:
接收来自第一ONT的第一SYN报文,第一SYN报文用于指示第一终端设备请求与服务器建立连接,第一SYN报文包括的窗口大小字段指示第一终端设备的窗口大小为第一值,第一终端设备为所述至少一个终端设备中的任一终端设备;
向服务器发送第二SYN报文,其中,第二SYN报文包括的窗口大小字段指示第一终端设备的窗口大小为第二值,第二值大于或等于第一值,第二值小于或等于通信装置1300的存储空间大小。
在一种可能的实现方式中,在收发模块1320向所述服务器发送第二SYN报文之后,收发模块1320还用于:
接收来自服务器的第一SYN响应报文,第一SYN响应报文包括针对第二SYN报文的ACK报文以及服务器的SYN,第一SYN响应报文包括的窗口大小字段指示服务器的窗口大小为第三值;
向第一ONT发送第二SYN响应报文,第二SYN响应报文包括的窗口大小字段指示服务器的窗口大小为第四值,第四值大于或等于第三值,第四值小于或等于通信装置1300的存储空间大小。
在一种可能的实现方式中,处理模块1310还用于:
确定通信装置1300和第一终端设备之间的丢包率大于或等于预设阈值;
降低向第一ONT发送第一隧道报文和第二隧道报文的速率,以及指示服务器降低发送第一TCP报文和第二TCP报文的速率。
在一种可能的实现方式中,收发模块1320向服务器发送针对第一TCP报文的ACK报文之前,处理模块1310还用于:
确定通信装置1300存储的数据量小于或等于第一阈值;或者,
确定通信装置1300存储的数据量大于第一阈值,且通信装置1300接收到来自第一ONT针对第一TCP报文的反馈报文;
其中,第一阈值根据第一终端设备的窗口大小和第一比例确定。
在一种可能的实现方式中,第一隧道报文或第二隧道报文是通过通信装置1300与第一ONT之间建立的UDP隧道发送的;或者,
第一隧道报文或第二隧道报文是通过通信装置1300与第一ONT之间建立的私有IP隧道发送的,其中,第一隧道报文或第二隧道报文包括协议字段,所述协议字段用于指示通信装置1300与第一ONT之间的私有协议。
在一种可能的实现方式中,所述标识信息为序列号,第一TCP报文和第二TCP报文对应不同的序列号;或者,
第一隧道报文的标识信息为第一TCP报文的TCP五元组以及第一TCP报文中的序列号,第二隧道报文的标识信息为第二TCP报文的TCP五元组以及第二TCP报文中的序列号。
在一种可能的实现方式中,收发模块1320还用于:
接收来自第一ONT的第三TCP报文和第四TCP报文,并向第一ONT发送与第三TCP报文对应的ACK报文以及与第四TCP报文对应的ACK报文,其中,第三TCP报文和第四TCP报文为第一终端设备向服务器发送的报文;
向服务器转发第三TCP报文和第四TCP报文;
接收到来自服务器针对第三TCP报文的ACK报文以及针对第四TCP报文的ACK报文,每个所述ACK报文携带对应TCP报文的TCP五元组和序列号;
处理模块1310还用于:根据接收的ACK报文删除通信装置1300所存储的服务器已经接收的TCP报文,并指示收发模块1320向服务器重新发送服务器没有接收到的TCP报文。
在一种可能的实现方式中,若与第三TCP报文对应的ACK报文还指示服务器没有接收到第三TCP报文,收发模块1320向服务器发送多个第三TCP报文。
在一种可能的实现方式中,收发模块1320向第一ONT发送与第三TCP报文对应的ACK报文之前,处理模块1310还用于确定通信装置1300存储的数据量小于或等于第二阈值;或者,
收发模块1320向第一ONT发送与第三TCP报文对应的ACK报文之前,处理模块1310还用于确定通信装置1300存储的数据量大于第二阈值,且收发模块1320接收到来自服务器针对第三TCP报文的ACK报文;
其中,所述第二阈值根据服务器的窗口大小和第二比例确定。
一些可能的实施方式中,通信装置1300能够对应实现上述方法实施例中第一ONT的行为和功能。例如通信装置1300可以为ONT,也可以为应用于ONT中的部件(例如芯片或者电路)。收发模块1320可以用于执行图3或图4或图12所示的实施例中由ONT所执行的全部接收或发送操作,例如图3所示的实施例中的S301-S302以及S305-S308,和/或用于支持本文所描述的技术的其它过程;又例如图4所示的实施例中的S3011-S3012以及S3015-S3018,和/或用于支持本文所描述的技术的其它过程;又例如图12所示的实施例中的S1201、S1203以及S1205,和/或用于支持本文所描述的技术的其它过程。其中,处理模块1310用于执行如图3或图4或图12所示的实施例中由ONT所执行的除了收发操作之外的全部操作,和/或用于支持本文所描述的技术的其它过程。
例如,收发模块1320用于接收来自家庭网关的第一隧道报文和第二隧道报文,其中,第一隧道报文包括第一TCP报文的内容和用于标识第一TCP报文的标识信息,第二隧道报文包括第二TCP报文的内容和用于标识第二TCP报文的标识信息,所述标识信息用于通信装置1300向家庭网关发送针对第一TCP报文和第二TCP报文的反馈报文;
处理模块1310用于从第一隧道报文中恢复出第一TCP报文,以及从第二隧道报文中恢复出第二TCP报文;
收发模块1320还用于将第一TCP报文发送给与通信装置1300连接的第一终端设备,以及将第二TCP报文发送给与通信装置1300连接的第二终端设备。
作为一种可选的实现方式,收发模块1320还用于接收来自第一终端设备针对第一TCP报文的第一ACK报文,以及接收来自第二终端设备针对第二TCP报文的第二ACK报文;
处理模块1310还用于根据第一TCP报文的标识信息、第二TCP报文的标识信息、第一ACK报文和第二ACK报文生成所述反馈报文,其中,所述反馈报文包括反馈信息,所述反馈信息包括与第一TCP报文的标识信息对应的第一标志位和与第二TCP报文的标识信息对应的第二标志位,第一标志位用于指示第一终端设备是否接收到第一TCP报文,第二标志位用于指示所述第二终端设备是否接收到第二TCP报文;
收发模块1320还用于将所述反馈报文发送给家庭网关。
应理解,本申请实施例中的处理模块1310可以由处理器或处理器相关电路组件实现,收发模块1320可以由收发器或收发器相关电路组件或者通信接口实现。
如图14所示为本申请实施例提供的通信装置1400,其中,通信装置1400可以是家庭网关,能够实现本申请实施例提供的方法中家庭网关的功能。其中,该通信装置1400可以为芯片或芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
在硬件实现上,上述收发模块1320可以为收发器,收发器集成在通信装置1400中构成通信接口1410。
通信装置1400包括至少一个处理器1420,用于实现或用于支持通信装置1400实现本申请实施例提供的方法中家庭网关的功能。具体参见方法示例中的详细描述,此处不做赘述。
通信装置1400还可以包括至少一个存储器1430,用于存储程序指令和/或数据。存储器1430和处理器1420耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器1420可能和存储器1430协同操作。处理器1420可能执行存储器1430中存储的程序指令和/或数据,以使得通信装置1400实现相应的方法。所述至少一个存储器中的至少一个可以包括于处理器中。
通信装置1400还可以包括通信接口1410,用于通过传输介质和其它设备进行通信,从而用于通信装置1400中的装置可以和其它设备进行通信。示例性地,当该通信装置为家庭网关时,该其它设备为服务器或第一ONT。处理器1420可以利用通信接口1410收发数据。通信接口1410具体可以是收发器。
本申请实施例中不限定上述通信接口1410、处理器1420以及存储器1430之间的具体连接介质。本申请实施例在图14中以存储器1430、处理器1420以及通信接口1410之间通过总线1440连接,总线在图14中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器1420可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器1430可以是非易失性存储器,比如硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
需要说明的是,上述实施例中的通信装置可以是家庭网关也可以是电路,也可以是应用于家庭网关中的芯片或者其他具有上述家庭网关功能的组合器件、部件等。当通信装置是家庭网关时,收发模块可以是收发器,可以包括天线和射频电路等,处理模块可以是处理器,例如:中央处理模块(central processing unit,CPU)。当通信装置是具有上述家庭网关功能的部件时,收发模块可以是射频单元,处理模块可以是处理器。当通信装置是芯片或芯片系统时,收发模块可以是芯片或芯片系统的输入输出接口、处理模块可以是芯片或芯片系统的处理器。
本申请实施例还提供一种通信系统,具体的,通信系统包括家庭网关、服务器和第一ONT以及第一终端设备,或者还可以包括更多个ONT和更多个终端设备。示例性的,通信系统包括用于实现上述图3或图4或图12的相关功能的家庭网关、服务器和第一ONT以及第一终端设备。
所述家庭网关分别用于实现上述图3或图4或图12相关家庭网关部分的功能。具体请参考上述方法实施例中的相关描述,这里不再赘述。
本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图3或图4或图12中家庭网关执行的方法。
本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图3或图4或图12中家庭网关执行的方法。
本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中网络设备或终端设备的功能;或者用于实现前述方法中网络设备和终端的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各种说明性逻辑块(illustrative logical block)和步骤(step),能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (28)

1.一种传输控制协议TCP代理方法,其特征在于,包括:
家庭网关接收来自服务器的第一TCP报文和第二TCP报文,所述第一TCP报文和所述第二TCP报文对应第一光网络终端ONT;
所述家庭网关向所述服务器发送针对所述第一TCP报文和所述第二TCP报文的确认ACK报文;
所述家庭网关向第一ONT发送与所述第一TCP报文对应的第一隧道报文,以及与所述第二TCP报文对应的第二隧道报文,其中,所述第一隧道报文包括所述第一TCP报文的内容和用于标识所述第一TCP报文的标识信息,所述第二隧道报文包括所述第二TCP报文的内容和用于标识所述第二TCP报文的标识信息,所述标识信息用于所述第一ONT向所述家庭网关发送针对所述第一TCP报文和所述第二TCP报文的反馈报文。
2.如权利要求1所述的方法,其特征在于,所述第一ONT连接第一终端设备和第二终端设备,所述方法还包括:
所述家庭网关接收来自所述第一ONT的反馈报文,所述反馈报文是所述第一ONT基于所述第一终端设备和所述第二终端设备分别发送的ACK报文生成的,所述第一终端设备发送的ACK报文用于响应所述第一TCP报文,所述第二终端设备发送的ACK报文用于响应所述第二TCP报文,所述反馈报文包括反馈信息,所述反馈信息包括与所述第一TCP报文的标识信息对应的第一标志位和与所述第二TCP报文的标识信息对应的第二标志位,所述第一标志位用于指示所述第一终端设备是否接收到所述第一TCP报文,所述第二标志位用于指示所述第二终端设备是否接收到所述第二TCP报文;
所述家庭网关根据所述反馈信息确定删除所述家庭网关存储的所述第一终端设备和第二终端设备已经接收的TCP报文,向所述第一ONT重新发送所述第一终端设备未接收到的第一TCP报文,或者向所述第一ONT重新发送所述第二终端设备未接收到的第二TCP报文。
3.如权利要求2所述的方法,其特征在于,所述反馈报文是所述第一ONT周期性封装所述第一终端设备和所述第二终端设备发送的ACK报文获得的。
4.如权利要求2或3所述的方法,其特征在于,在所述家庭网关接收来自服务器的第一TCP报文和第二TCP报文之前,所述方法还包括:
所述家庭网关接收来自所述第一ONT的第一同步序列编号SYN报文,所述第一SYN报文用于指示所述第一终端设备请求与所述服务器建立连接,所述第一SYN报文包括的窗口大小字段指示所述第一终端设备的窗口大小为第一值;
所述家庭网关向所述服务器发送第二SYN报文,其中,所述第二SYN报文包括的窗口大小字段指示所述第一终端设备的窗口大小为第二值,所述第二值大于或等于所述第一值,所述第二值小于或等于所述家庭网关的存储空间大小。
5.如权利要求4所述的方法,其特征在于,在所述家庭网关向所述服务器发送第二SYN报文之后,所述方法还包括:
所述家庭网关接收来自所述服务器的第一SYN响应报文,所述第一SYN响应报文包括针对所述第二SYN报文的ACK报文以及所述服务器的SYN,所述第一SYN响应报文包括的窗口大小字段指示所述服务器的窗口大小为第三值;
所述家庭网关向所述第一ONT发送第二SYN响应报文,所述第二SYN响应报文包括的窗口大小字段指示所述服务器的窗口大小为第四值,所述第四值大于或等于所述第三值,所述第四值小于或等于所述家庭网关的存储空间大小。
6.如权利要求2-5任一项所述的方法,其特征在于,所述方法还包括:
所述家庭网关确定所述家庭网关和所述第一终端设备之间的丢包率大于或等于预设阈值;
所述家庭网关降低向所述第一ONT发送所述第一隧道报文的速率,以及指示所述服务器降低发送所述第一TCP报文和所述第二TCP报文的速率。
7.如权利要求1-6任一项所述的方法,其特征在于,所述家庭网关向所述服务器发送针对所述第一TCP报文的ACK报文之前,所述方法还包括:
所述家庭网关确定所述家庭网关存储的数据量小于或等于第一阈值;或者,
所述家庭网关确定所述家庭网关存储的数据量大于第一阈值,且所述家庭网关接收到来自第一ONT针对所述第一TCP报文的反馈报文;
其中,所述第一阈值根据所述第一终端设备的窗口大小和第一比例确定。
8.如权利要求1-7任一项所述的方法,其特征在于,所述第一隧道报文或所述第二隧道报文是通过所述家庭网关与所述第一ONT之间建立的用户数据包协议UDP隧道发送的;或者,
所述第一隧道报文或所述第二隧道报文是通过所述家庭网关与所述第一ONT之间建立的私有网际协议IP隧道发送的,其中,所述第一隧道报文或所述第二隧道报文包括协议字段,所述协议字段用于指示所述家庭网关与所述第一ONT之间的私有协议。
9.如权利要求1-8任一项所述的方法,其特征在于,所述标识信息为序列号,所述第一TCP报文和所述第二TCP报文对应不同的序列号;或者,
所述第一隧道报文的标识信息为所述第一TCP报文的TCP五元组以及所述第一TCP报文中的序列号,所述第二隧道报文的标识信息为所述第二TCP报文的TCP五元组以及所述第二TCP报文中的序列号。
10.如权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:
所述家庭网关接收来自所述第一ONT的第三TCP报文和第四TCP报文,并向所述第一ONT发送与所述第三TCP报文对应的ACK报文以及与所述第四TCP报文对应的ACK报文,其中,所述第三TCP报文和所述第四TCP报文为所述第一终端设备向所述服务器发送的报文;
所述家庭网关向所述服务器转发所述第三TCP报文和所述第四TCP报文;
所述家庭网关接收到来自所述服务器针对所述第三TCP报文的ACK报文以及针对所述第四TCP报文的ACK报文,每个所述ACK报文携带对应的TCP报文的TCP五元组和序列号;
所述家庭网关根据所接收的ACK报文确定删除所述家庭网关存储的所述服务器已经接收的对应TCP报文,以及向所述服务器重新发送所述服务器未接收到的对应TCP报文。
11.如权利要求10所述的方法,其特征在于,若与所述第三TCP报文对应的ACK报文还指示所述服务器没有接收到所述第三TCP报文,所述家庭网关向所述服务器发送多个所述第三TCP报文。
12.如权利要求10或11所述的方法,其特征在于,所述家庭网关向所述第一ONT发送与所述第三TCP报文对应的ACK报文之前,所述家庭网关确定所述家庭网关存储的数据量小于或等于第二阈值;或者,
所述家庭网关向所述第一ONT发送与所述第三TCP报文对应的ACK报文之前,所述家庭网关确定所述家庭网关存储的数据量大于第二阈值,且所述家庭网关接收到来自所述服务器针对所述第三TCP报文的ACK报文;
其中,所述第二阈值根据所述服务器的窗口大小和第二比例确定。
13.一种传输控制协议TCP代理方法,其特征在于,包括:
第一光网络终端ONT接收来自家庭网关的第一隧道报文和第二隧道报文,其中,所述第一隧道报文包括第一TCP报文的内容和用于标识所述第一TCP报文的标识信息,所述第二隧道报文包括第二TCP报文的内容和用于标识所述第二TCP报文的标识信息,所述标识信息用于所述第一ONT向所述家庭网关发送针对所述第一TCP报文和所述第二TCP报文的反馈报文;
所述第一ONT从所述第一隧道报文中恢复出所述第一TCP报文,并将所述第一TCP报文发送给与所述第一ONT连接的第一终端设备,以及从所述第二隧道报文中恢复出所述第二TCP报文,并将所述第二TCP报文发送给与所述第一ONT连接的第二终端设备。
14.如权利要求13所述的方法,其特征在于,所述方法还包括:
所述第一ONT接收来自所述第一终端设备针对所述第一TCP报文的第一ACK报文,以及接收来自所述第二终端设备针对所述第二TCP报文的第二ACK报文;
所述第一ONT根据所述第一TCP报文的标识信息、所述第二TCP报文的标识信息、所述第一ACK报文和所述第二ACK报文生成所述反馈报文,其中,所述反馈报文包括反馈信息,所述反馈信息包括与所述第一TCP报文的标识信息对应的第一标志位和与所述第二TCP报文的标识信息对应的第二标志位,所述第一标志位用于指示所述第一终端设备是否接收到TCP报文,所述第二标志位用于指示所述第二终端设备是否接收到TCP报文;
所述第一ONT将所述反馈报文发送给所述家庭网关。
15.一种通信装置,其特征在于,所述通信装置包括收发模块和处理模块,其中,所述处理模块用于生成所述收发模块所要发送的传输控制协议TCP报文,所述收发模块用于:
接收来自服务器的第一TCP报文和第二TCP报文,所述第一TCP报文和所述第二TCP报文对应第一光网络终端ONT;
向所述服务器发送针对所述第一TCP报文和所述第二TCP报文的确认ACK报文;
向第一ONT发送与所述第一TCP报文对应的第一隧道报文,以及与所述第二TCP报文对应的第二隧道报文,其中,所述第一隧道报文包括所述第一TCP报文的内容和用于标识所述第一TCP报文的标识信息,所述第二隧道报文包括所述第二TCP报文的内容和用于标识所述第二TCP报文的标识信息,所述标识信息用于所述第一ONT向所述通信装置发送针对所述第一TCP报文和所述第二TCP报文的反馈报文。
16.如权利要求15所述的通信装置,其特征在于,所述第一ONT连接第一终端设备和第二终端设备,所述收发模块还用于:
接收来自所述第一ONT的反馈报文,所述反馈报文是所述第一ONT基于所述第一终端设备和所述第二终端设备发送的ACK报文生成的,所述第一终端设备发送的ACK报文用于响应所述第一TCP报文,所述第二终端设备发送的ACK报文用于响应所述第二TCP报文,所述反馈报文包括反馈信息,所述反馈信息包括与所述第一TCP报文的标识信息对应的第一标志位和与所述第二TCP报文的标识信息对应的第二标志位,所述第一标志位用于指示所述第一终端设备是否接收到所述第一TCP报文,所述第二标志位用于指示所述第二终端设备是否接收到所述第二TCP报文;
所述处理模块还用于:根据所述反馈信息确定删除所述通信装置存储的所述第一终端设备和所述第二终端设备已经接收的TCP报文,向所述第一ONT重新发送所述第一终端设备未接收到的所述第一TCP报文,或者向所述第一ONT重新发送所述第二终端设备未接收到的所述第二TCP报文。
17.如权利要求16所述的方法,其特征在于,所述反馈报文是所述第一ONT周期性封装所述第一终端设备和所述第二终端设备发送的ACK报文获得的。
18.如权利要求16或17所述的通信装置,其特征在于,在所述收发模块接收来自服务器的第一TCP报文和第二TCP报文之前,所述收发模块还用于:
接收来自所述第一ONT的第一同步序列编号SYN报文,所述第一SYN报文用于指示所述第一终端设备请求与所述服务器建立连接,所述第一SYN报文包括的窗口大小字段指示所述第一终端设备的窗口大小为第一值,所述第一终端设备为所述至少一个终端设备中的任一终端设备;
向所述服务器发送第二SYN报文,其中,所述第二SYN报文包括的窗口大小字段指示所述第一终端设备的窗口大小为第二值,所述第二值大于或等于所述第一值,所述第二值小于或等于所述通信装置的存储空间大小。
19.如权利要求18所述的通信装置,其特征在于,在所述收发模块向所述服务器发送第二SYN报文之后,所述收发模块还用于:
接收来自所述服务器的第一SYN响应报文,所述第一SYN响应报文包括针对所述第二SYN报文的ACK报文以及所述服务器的SYN,所述第一SYN响应报文包括的窗口大小字段指示所述服务器的窗口大小为第三值;
向所述第一ONT发送第二SYN响应报文,所述第二SYN响应报文包括的窗口大小字段指示所述服务器的窗口大小为第四值,所述第四值大于或等于所述第三值,所述第四值小于或等于所述通信装置的存储空间大小。
20.如权利要求16-19任一项所述的通信装置,其特征在于,所述处理模块还用于:
确定所述通信装置和所述第一终端设备之间的丢包率大于或等于预设阈值;
降低向所述第一ONT发送所述第一隧道报文和所述第二隧道报文的速率,以及指示所述服务器降低发送所述第一TCP报文和所述第二TCP报文的速率。
21.如权利要求15-20任一项所述的通信装置,其特征在于,所述收发模块向所述服务器发送针对所述第一TCP报文的ACK报文之前,所述处理模块还用于:
确定所述通信装置存储的数据量小于或等于第一阈值;或者,
确定所述通信装置存储的数据量大于第一阈值,且所述通信装置接收到来自第一ONT针对所述第一TCP报文的反馈报文;
其中,所述第一阈值根据所述第一终端设备的窗口大小和第一比例确定。
22.如权利要求15-21任一项所述的通信装置,其特征在于,所述第一隧道报文或所述第二隧道报文是通过所述通信装置与所述第一ONT之间建立的用户数据包协议UDP隧道发送的;或者,
所述第一隧道报文或所述第二隧道报文是通过所述通信装置与所述第一ONT之间建立的私有网际协议IP隧道发送的,其中,所述第一隧道报文或所述第二隧道报文包括协议字段,所述协议字段用于指示所述通信装置与所述第一ONT之间的私有协议。
23.如权利要求15-22任一项所述的通信装置,其特征在于,所述标识信息为序列号,所述第一TCP报文和所述第二TCP报文对应不同的序列号;或者,
所述第一隧道报文的标识信息为所述第一TCP报文的TCP五元组以及所述第一TCP报文中的序列号,所述第二隧道报文的标识信息为所述第二TCP报文的TCP五元组以及所述第二TCP报文中的序列号。
24.如权利要求15-23任一项所述的通信装置,其特征在于,所述收发模块还用于:
接收来自所述第一ONT的第三TCP报文和第四TCP报文,并向所述第一ONT发送与所述第三TCP报文对应的ACK报文以及与所述第四TCP报文对应的ACK报文,其中,所述第三TCP报文和所述第四TCP报文为所述第一终端设备向所述服务器发送的报文;
向所述服务器转发所述第三TCP报文和所述第四TCP报文;
接收到来自所述服务器针对所述第三TCP报文的ACK报文以及针对所述第四TCP报文的ACK报文,每个所述ACK报文携带对应的TCP报文的TCP五元组和序列号;
所述处理模块还用于:根据所接收的ACK报文确定删除所述通信装置存储的所述服务器已经接收的对应TCP报文,以及指示所述收发模块向所述服务器重新发送所述服务器未接收到的对应TCP报文。
25.如权利要求24所述的通信装置,其特征在于,若与所述第三TCP报文对应的ACK报文还指示所述服务器没有接收到所述第三TCP报文,所述收发模块向所述服务器发送多个所述第三TCP报文。
26.如权利要求24或25所述的通信装置,其特征在于,所述收发模块向所述第一ONT发送与所述第三TCP报文对应的ACK报文之前,所述处理模块还用于确定所述通信装置存储的数据量小于或等于所述第二阈值;或者,
所述收发模块向所述第一ONT发送与所述第三TCP报文对应的ACK报文之前,所述处理模块还用于确定所述通信装置存储的数据量大于第二阈值,且所述收发模块接收到来自所述服务器针对所述第三TCP报文的ACK报文;
其中,所述第二阈值根据所述服务器的窗口大小和第二比例确定。
27.一种通信装置,其特征在于,所述通信装置包括收发模块和处理模块,其中,
所述收发模块,用于接收来自家庭网关的第一隧道报文和第二隧道报文,其中,所述第一隧道报文包括第一TCP报文的内容和用于标识所述第一TCP报文的标识信息,所述第二隧道报文包括第二TCP报文的内容和用于标识所述第二TCP报文的标识信息,所述标识信息用于所述通信装置向所述家庭网关发送针对所述第一TCP报文和所述第二TCP报文的反馈报文;
所述处理模块,用于从所述第一隧道报文中恢复出所述第一TCP报文,以及从所述第二隧道报文中恢复出所述第二TCP报文;
所述收发模块,还用于将所述第一TCP报文发送给与所述通信装置连接的第一终端设备,以及将所述第二TCP报文发送给与所述通信装置连接的第二终端设备。
28.如权利要求27所述的通信装置,其特征在于,所述收发模块,还用于接收来自所述第一终端设备针对所述第一TCP报文的第一ACK报文,以及接收来自所述第二终端设备针对所述第二TCP报文的第二ACK报文;
所述处理模块,还用于根据所述第一TCP报文的标识信息、所述第二TCP报文的标识信息、所述第一ACK报文和所述第二ACK报文生成所述反馈报文,其中,所述反馈报文包括反馈信息,所述反馈信息包括与所述第一TCP报文的标识信息对应的第一标志位和与所述第二TCP报文的标识信息对应的第二标志位,所述第一标志位用于指示所述第一终端设备是否接收到第一TCP报文,所述第二标志位用于指示所述第二终端设备是否接收到第二TCP报文;
所述收发模块,还用于将所述反馈报文发送给所述家庭网关。
CN202110221743.1A 2021-02-27 2021-02-27 一种传输控制协议代理方法及通信装置 Active CN114979839B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110221743.1A CN114979839B (zh) 2021-02-27 2021-02-27 一种传输控制协议代理方法及通信装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110221743.1A CN114979839B (zh) 2021-02-27 2021-02-27 一种传输控制协议代理方法及通信装置

Publications (2)

Publication Number Publication Date
CN114979839A true CN114979839A (zh) 2022-08-30
CN114979839B CN114979839B (zh) 2024-09-24

Family

ID=82973176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110221743.1A Active CN114979839B (zh) 2021-02-27 2021-02-27 一种传输控制协议代理方法及通信装置

Country Status (1)

Country Link
CN (1) CN114979839B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116566914A (zh) * 2023-07-07 2023-08-08 灵长智能科技(杭州)有限公司 旁路tcp加速方法、装置、设备及介质
CN116959289A (zh) * 2023-09-21 2023-10-27 山东通维信息工程有限公司 一种基于车路协同技术的智慧停车系统及方法
CN115412599B (zh) * 2022-09-01 2024-01-30 北京东土军悦科技有限公司 一种报文数据转发方法、装置及服务器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054851A1 (en) * 2010-09-01 2012-03-01 Canon Kabushiki Kaisha Systems and methods for multiplexing network channels
CN105337704A (zh) * 2014-08-04 2016-02-17 华为技术有限公司 报文处理方法及装置
US20160191672A1 (en) * 2014-12-26 2016-06-30 Radia Perlman Multiplexing many client streams over a single connection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120054851A1 (en) * 2010-09-01 2012-03-01 Canon Kabushiki Kaisha Systems and methods for multiplexing network channels
CN105337704A (zh) * 2014-08-04 2016-02-17 华为技术有限公司 报文处理方法及装置
US20160191672A1 (en) * 2014-12-26 2016-06-30 Radia Perlman Multiplexing many client streams over a single connection

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘利, 胡鹏, 李津生, 洪佩琳: "动态网络环境下建立VPN的安全动态隧道机制", 电子与信息学报, no. 08, 20 August 2005 (2005-08-20) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115412599B (zh) * 2022-09-01 2024-01-30 北京东土军悦科技有限公司 一种报文数据转发方法、装置及服务器
CN116566914A (zh) * 2023-07-07 2023-08-08 灵长智能科技(杭州)有限公司 旁路tcp加速方法、装置、设备及介质
CN116566914B (zh) * 2023-07-07 2023-09-19 灵长智能科技(杭州)有限公司 旁路tcp加速方法、装置、设备及介质
CN116959289A (zh) * 2023-09-21 2023-10-27 山东通维信息工程有限公司 一种基于车路协同技术的智慧停车系统及方法
CN116959289B (zh) * 2023-09-21 2024-03-22 山东通维信息工程有限公司 一种基于车路协同技术的智慧停车系统及方法

Also Published As

Publication number Publication date
CN114979839B (zh) 2024-09-24

Similar Documents

Publication Publication Date Title
CN114979839B (zh) 一种传输控制协议代理方法及通信装置
KR101557479B1 (ko) 데이터 전송 방법, 오프로드 포인트 장치, 사용자 단말 및 시스템
KR20140122753A (ko) 비디오 인식 하이브리드 자동 반복 요청을 위한 방법 및 장치
WO2014134276A1 (en) Method, apparatus, and protocol for improving performance in a wireless network
CN111447678A (zh) 通信方法和通信装置
CN112740723B (zh) 用于5gc的低时延消息传递服务
MX2012002560A (es) Metodo y aparato para distribucion en orden de control de acceso al medio.
JP7301849B2 (ja) 中継伝送方法及び中継ノード
CN111543116B (zh) 中继网络中节点间转发数据的方法和网络节点
JPWO2018127985A1 (ja) 無線通信装置、無線通信システム、および無線通信方法
CN113727368A (zh) 一种通信方法及装置
CN115250506A (zh) 一种通信方法及设备
CN106712908B (zh) 数据传输方法、装置和系统
JP2008289080A (ja) 端末装置、ネットワーク装置およびデータ通信方法
EP4271036A1 (en) Communication method and apparatus
US11805464B2 (en) Mobile communication system, method and device
CN108886766B (zh) 一种控制信息的传输方法及装置
CN114846774B (zh) 一种通信方法及装置
US20220167450A1 (en) Methods for avoiding transmission of unnecessary messages in wireless communications and related networks and network nodes
CN112399477B (zh) 一种通信方法及设备
CN115551019A (zh) 数据流的传输方法和传输装置
WO2019136933A1 (zh) 中继传输的方法和中继节点
US20240031861A1 (en) Communication method and device
WO2024016279A1 (zh) 通信方法、装置、设备、存储介质、芯片、产品及程序
WO2024199031A1 (zh) 通信方法与通信装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant