CN112436994B - 一种数据传输方法及电子设备 - Google Patents

一种数据传输方法及电子设备 Download PDF

Info

Publication number
CN112436994B
CN112436994B CN202011289465.5A CN202011289465A CN112436994B CN 112436994 B CN112436994 B CN 112436994B CN 202011289465 A CN202011289465 A CN 202011289465A CN 112436994 B CN112436994 B CN 112436994B
Authority
CN
China
Prior art keywords
vpn
transmission channel
transmission
data
receiving end
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.)
Active
Application number
CN202011289465.5A
Other languages
English (en)
Other versions
CN112436994A (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.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing 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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN202011289465.5A priority Critical patent/CN112436994B/zh
Publication of CN112436994A publication Critical patent/CN112436994A/zh
Application granted granted Critical
Publication of CN112436994B publication Critical patent/CN112436994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup

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

本申请公开了一种数据传输方法及电子设备,方法应用于第一设备中基于生成的虚拟网卡所配置的VPN发送端,方法包括:在VPN发送端与VPN接收端之间的基于UDP协议的网络隧道被建立的情况下,获得第一设备中待发送的第一数据报文;其中,VPN接收端为第二设备中基于生成的虚拟网卡所配置的VPN接收端;在本地缓存队列中缓存第一数据报文并将第一数据报文通过第一传输通道向VPN接收端传输;在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,在本地缓存队列中重新读取第一数据报文并将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。

Description

一种数据传输方法及电子设备
技术领域
本申请涉及通信技术领域,尤其涉及一种数据传输方法及电子设备。
背景技术
在边缘计算的很多应用场景中需要服务器与终端间建立低时延、大带宽、高可靠的无线传输通道。例如高清视频上传、增强现实AR(Augmented Reality)应用中的终端姿态、视频和深度数据上传以及云渲染视频数据下发等。现有的实现一般使用wifi承载,其速率高,保证时延较低,但wifi连接的可靠性不高,时延波动大,移动性差,例如,当终端在wifi的连接点之间漫游时,会出现50-100ms的中断。
为了解决wifi传输可靠性的问题,目前通常采用将wifi与4G技术结合的多通道传输技术,即采用多路径传输控制协议MPTCP(MultiPath Transmission Control Protocol)协议在wifi和4G两个信道上分别建立传输控制协议TCP(Transmission ControlProtocol)子连接,优先使用wifi的TCP子连接进行通信,当TCP的ACK(Acknowledgecharacter)报文指示需要重传时,会在wifi和4G两个信道上同时重传,接收端实现去重和排序。但是,由于采用MPTCP协议需要操作系统及网络协议栈支持,而且使用TCP协议会带来TCP协议的一系列问题,无法保证实时视频等应用的低时延。
因此,亟需一种能够兼顾低时延和高可靠的数据传输方案。
发明内容
有鉴于此,本申请提供一种数据传输方法及电子设备,包括:
一种数据传输方法,应用于第一设备中基于生成的虚拟网卡所配置的VPN发送端,所述方法包括:
在所述VPN发送端与VPN接收端之间的基于UDP协议的网络隧道被建立的情况下,获得所述第一设备中待发送的第一数据报文;其中,所述VPN接收端为第二设备中基于生成的虚拟网卡所配置的VPN接收端;
在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输;
在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输。
上述方法,优选的,所述VPN发送端和VPN接收端分别在所述网络隧道被建立之后开始计时;
其中,所述VPN接收端在其计时到达第二时长时将所述第二时长内所接收到的第一数据报文对应的数据应答报文通过所述第一传输通道进行传输,在所述VPN接收端传输所述数据应答报文之后所述VPN接收端重新开始计时。
上述方法,优选的,在所述网络隧道被建立之后,所述方法还包括:
分别通过所述第一传输通道和所述第二传输通道向所述VPN接收端发送心跳报文,以使得所述VPN发送端分别根据所述第一传输通道和所述第二传输通道各自返回的心跳应答报文获得通道状态;
其中,所述通道状态包括通道正常状态、通道挂起状态和隧道关闭状态。
上述方法,优选的,在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输之前,所述方法还包括:
判断所述第一传输通道是否处于通道挂起状态;
在所述第一传输通道处于通道挂起状态的情况下,将所述第一数据报文通过第二传输通道向所述VPN接收端传输;
在所述第一传输通道没有处于通道挂起状态的情况下,执行所述步骤:在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输。
上述方法,优选的,在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输之前,所述方法还包括:
为所述第一数据报文生成报文编号;
至少将所述报文编号封装到所述第一数据报文的报头中,所述报文编号用于所述VPN接收端对所述第一数据报文去重处理。
上述方法,优选的,所述报头为所述第一数据报文中的VPN报头,所述VPN报头中还包含有所述第一数据报文的报文类型;
其中,所述第一数据报文中还至少包含有UDP报头,所述UDP报头封装在所述VPN报头之前。
上述方法,优选的,第一时长至少根据所述第一设备与所述第二设备之间的最大允许时延和所述第二传输通道上的发送时延获得;
所述第二时长至少根据所述第一时长、所述第一传输通道上的发送时延和所述第二传输通道上的发送时延获得。
一种数据传输方法,应用于第二设备中基于生成的虚拟网卡所配置的VPN接收端,所述方法包括:
在所述VPN接收端与VPN发送端之间的基于UDP协议的网络隧道被建立的情况下,通过第一传输通道接收所述VPN发送端传输的第一数据报文,所述VPN发送端为第一设备中基于生成的虚拟网卡所配置的VPN发送端;
其中,所述第一数据报文为所述VPN发送端在所述第一设备中所获得的待发送的数据报文,且所述第一数据报文被所述VPN发送端缓存在所述第一设备的本地缓存队列中;
将所述第一数据报文对应的数据应答报文通过所述第一传输通道向所述VPN发送端进行传输,以使得所述VPN发送端在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输。
一种电子设备,包括:
存储器,用于存储应用程序以及所述应用程序运行所产生的数据;
处理器,用于执行所述应用程序,以实现:基于生成的虚拟网卡配置VPN发送端,所述VPN发送端用于:
在所述VPN发送端与VPN接收端之间的基于UDP协议的网络隧道被建立的情况下,获得所述电子设备中待发送的第一数据报文;其中,所述VPN接收端为其他设备中基于生成的虚拟网卡所配置的VPN接收端;
在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输;
在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输。
一种电子设备,包括:
存储器,用于存储应用程序以及所述应用程序运行所产生的数据;
处理器,用于执行所述应用程序,以实现:基于生成的虚拟网卡配置VPN接收端,所述VPN接收端用于:
在所述VPN接收端与VPN发送端之间的基于UDP协议的网络隧道被建立的情况下,通过第一传输通道接收所述VPN发送端传输的第一数据报文,所述VPN发送端为其他设备中基于生成的虚拟网卡所配置的VPN发送端;
其中,所述第一数据报文为所述VPN发送端在所述其他设备中所获得的待发送的数据报文,且所述第一数据报文被所述VPN发送端缓存在所述第一设备的本地缓存队列中;
将所述第一数据报文对应的数据应答报文通过所述第一传输通道向所述VPN发送端进行传输,以使得所述VPN发送端在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输。
从上述技术方案可以看出,本申请公开的一种数据传输方法及电子设备中,通过在第一设备和第二设备中分别基于各自生成的虚拟网卡配置VPN发送端和VPN接收端,由此,在第一设备需要向第二设备发送数据报文时,第一设备中的VPN发送端在于VNP接收端之间的基于UDP协议的网络隧道被建立的情况下,获得第一设备中待发送的第一数据报文,并在本地缓存队列中缓存第一数据报文的同时将第一数据报文通过第一传输通道向VPN接收端传输,而在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,就在本地缓存队列中重新读取第一数据报文再将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。可见,本申请中通过在两个设备中分别配置VPN发送端和VPN接收端,进而通过VPN发送端和VPN接收端之间建立的基于UDP协议的网络隧道内的两个传输通道实现传输失败的数据报文的重传,由此本申请中不再需要操作系统和网络协议栈支持,而是通过生成的虚拟网卡实现基于UDP协议的网络隧道,从而实现数据报文的传输,能够兼顾两个传输通道的传输优点,由此实现低时延和高可靠的数据传输。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种数据传输方法的流程图;
图2-图8分别为本申请实施例中的示例图;
图9为本申请实施例一提供的一种数据传输方法的另一流程图;
图10为本申请实施例中的另一示例图;
图11为本申请实施例二提供的一种数据传输方法的流程图;
图12为本申请实施例三提供的一种电子设备的结构示意图;
图13为本申请实施例四提供的一种电子设备的结构示意图;
图14-图18分别为本申请适用于AR终端和服务器之间的数据传输时的示例图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,为本申请实施例一提供的一种数据传输方法的实现流程图,该方法可以适用于第一设备中基于生成的虚拟网卡所配置的虚拟专用网络VPN(Virtual PrivateNetwork)发送端,这里的第一设备可以理解为需要进行数据报文发送的电子设备,相应的,需要进行数据报文接收的电子设备可以记为第二设备,如图2中所示,第一设备和第二设备分别可以为手机、pad、AR终端、服务器等中的任意一种。本实施例中的第一设备作为应用客户端生成有自己的虚拟网卡,第二设备作为应用服务端也生成有自己的虚拟网卡,第一设备上基于所生成的虚拟网卡配置有VPN客户端,即用于发送数据报文的VPN发送端,而第二设备上基于所生成的虚拟网卡配置有VPN服务端,即用于接收数据报文的VPN接收端,在VPN发送端和VPN接收端之间能够建立基于用户数据报协议UDP(User Datagram Protocol)协议的网络隧道,在网络隧道中VPN发送端和VPN接收端之间可以通过不同类型的第一传输通道和第二传输通道进行数据报文的发送和接收。其中,第一传输通道和第二传输通道为网络隧道中按照传输特性所划分的不同类型的传输通道,第一传输通道和第二传输通道的传输特性不同,例如,第一传输通道为传输带宽较高但传输准确率较低的通道类型,如WiFi等类型的传输通道,而第二传输通道为传输带宽较低但传输准确率较高的通道类型,如4G或5G等类型的传输通道。本实施例中的技术方案主要用于实现低时延和高可靠的数据传输。
具体的,本实施例中的方法可以通过以下步骤实现:
步骤101:在网络隧道被建立的情况下,获得第一设备中待发送的第一数据报文。
其中,这里的网络隧道即为如图2中所示的VPN发送端与VPN接收端之间的基于UDP协议的网络隧道,VPN发送端为第一设备中基于生成的虚拟网卡所配置的VPN发送端,VPN接收端为第二设备中基于生成的虚拟网卡所配置的VPN接收端。
需要说明的是,网络隧道是在VPN发送端在需要进行数据报文传输时通过向VPN接收端发送隧道建立请求来建立的,具体如下:
VPN发送端通过第一传输通道向第一传输通道中的第一端口发送隧道建立请求,这里的第一端口由VPN接收端监听,以使得VPN接收端在接收到隧道建立请求之后与VPN发送端之间通过在第一传输通道和第二传输通道中传输多个测试报文来分别获得至少一项传输参数;这里的传输参数至少包括VPN发送端与VPN接收端之间的时延参数、VPN接收端的通信地址参数和VPN接收端的通信端口参数、报文发送周期和传输通道的传输速率等中的任意一种或任意多种,之后,基于这些传输参数,VPN发送端建立与VPN接收端之间的网络隧道。
其中,时延参数可以包含有第一传输通道的发送时延、第二传输通道的发送时延,还可以包含有VPN发送端和VPN接收端之间的最大允许时延等参数,还可以包含有第一传输通道和第二传输通道各自对应的第一时长和第二时长,第一时长为传输通道上用于确定重发数据报文的时长,第二时长为传输通道上用于确定发送数据应答报文的时长,而VPN接收端的通信地址参数和通信端口参数是指VPN接收端的IP地址和端口等参数。
具体的,第一时长可以根据第一设备与第二设备之间的最大允许时延和第二传输通道上的发送时延获得,例如,第一时长可以设置为:由最大允许时延中扣除第二传输通道上的发送时延所得到的时长;
而第二时长可以根据第一时长、第一传输通道上的发送时延和第二传输通道上的发送时延获得。例如,第二时长可以设置为:由第一时长中扣除第一传输通道上的往返时延和第二传输通道上的发送时延所得到的时延,其中,第一传输通道上的往返时延即为第一传输通道上的发送时延的两倍。
基于此,本实施例中在VPN发送端和VPN接收端之间的网络隧道被建立之后,VPN发送端获得第一设备中待发送的第一数据报文,准备通过网络隧道对应的传输通道进行报文传输。
具体的,VPN发送端可以通过第一设备中配置的虚拟网卡接收第一设备中的第一应用所发送的第一数据报文,该第一应用所发送的第一数据报文即为第一设备所需要进行传输的数据报文。
步骤102:在本地缓存队列中缓存第一数据报文并将第一数据报文通过第一传输通道向VPN接收端传输。
其中,本地缓存队列为第一设备上VPN发送端所对应的缓存队列,在将第一数据报文通过第一传输通道向VPN接收端进行传输之前,或者传输的同时,将第一数据报文缓存在本地缓存队列中,本地缓存队列中的第一数据报文用于后续重发数据报文。
步骤103:监测是否接收到VPN接收端发送的第一数据报文对应的数据应答报文,而在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,执行步骤104。
其中,第一时长即为第一传输通道对应的第一时长,在步骤102中将第一数据报文通过第一传输通道向VPN接收端进行传输之后开始计时,如图3中所示,并在计时到第一时长仍然没有接收到VPN接收端所反馈的数据应答报文的情况下,可以确定VPN接收端没有接收到相应的第一数据报文,此时,执行步骤104。
步骤104:在本地缓存队列中重新读取第一数据报文并将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。
其中,VPN发送端在通过第一传输通道传输第一数据报文而VPN接收端没有接收到第一数据报文时,可以确定第一数据报文没有通过第一传输通道传输成功,因此,在步骤104中,在本地缓存队列中重新读取到第一数据报文之后,可以将重新读取到的第一数据报文同时通过第一传输通道和第二传输通道两个传输通道向VPN接收端进行传输,如图4中所示。由此,VPN发送端先使用传输带宽更高的第一传输通道向VPN接收端传输第一数据报文,以降低数据报文传输的时延,提高传输效率,而在第一传输通道传输第一数据报文传输失败的情况下,添加传输准确率更高的第二传输通道同时传输没有被VPN接收端接收到的第一数据报文,由此提高数据报文传输的准确率,保证传输可靠性。
需要说明的是,在VPN发送端和VPN接收端完成数据报文的传输之后,可以由VPN发送端或VPN接收端向对端发起隧道关闭请求,进而在VPN发送端和VPN接收端之间关闭基于UDP协议的网络隧道,并释放网络隧道所占用的资源,如传输通道等。而在下一次需要进行数据报文传输时,再重新建立网络隧道。
另外,VPN接收端在接收到VPN发送端通过两个传输通道重传的数据报文之后,可以通过对数据报文进行去重处理,从而得到完整的第一数据报文。
由上述方案可知,本申请实施例一提供的一种数据传输方法中,通过在第一设备和第二设备中分别基于各自生成的虚拟网卡配置VPN发送端和VPN接收端,由此,在第一设备需要向第二设备发送数据报文时,第一设备中的VPN发送端在于VNP接收端之间的基于UDP协议的网络隧道被建立的情况下,获得第一设备中待发送的第一数据报文,并在本地缓存队列中缓存第一数据报文的同时将第一数据报文通过第一传输通道向VPN接收端传输,而在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,就在本地缓存队列中重新读取第一数据报文再将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。可见,本实施例中通过在两个设备中分别配置VPN发送端和VPN接收端,进而通过VPN发送端和VPN接收端之间建立的基于UDP协议的网络隧道内的两个传输通道实现传输失败的数据报文的重传,由此本申请中不再需要操作系统和网络协议栈支持,而是通过生成的虚拟网卡实现基于UDP协议的网络隧道,从而实现数据报文的传输,能够兼顾两个传输通道的传输优点,由此实现低时延和高可靠的数据传输。
需要说明的是,本实施例中以第一设备为客户端以第二设备为服务端为例进行说明的实施例,在其他实施例中,第一设备也可以作为服务端,相应的,第二设备可以作为客户端,由第二设备通过其基于生成的虚拟网卡所生成的VPN发送端向第一设备通过所建立的基于UDP协议的网络隧道对应的第一传输通道和第二传输通道进行数据报文的传输,而第一设备通过其基于生成的虚拟网卡所生成的VPN接收端接收第二设备传输来的数据报文。
在一种实现方式中,第一设备中可以只配置有VPN发送端,第一设备中的VPN发送端向第二设备中的VPN接收端传输数据报文,第一设备中的VPN发送端也可以作为VPN接收端接收第二设备中的VPN发送端所传输的数据报文,如图5中所示;
在另一种实现方式中,第一设备中可以分别配置有VPN发送端和VPN接收端,第一设备中的VPN发送端向第二设备中的VPN接收端传输数据报文,第一设备中的VPN接收端接收第二设备中的VPN发送端所传输的数据报文,如图6中所示。
而第二设备中VPN发送端和VPN接收端的配置可以与第一设备中相同或不同,即:第二设备中也可以只配置有VPN发送端,用于向第一设备传输数据报文,此时第二设备中的VPN发送端也可以作为VPN接收端,用于接收第一设备所传输的数据报文;或者,第二设备中也可以分别配置有VPN发送端和VPN接收端,第二设备中的VPN发送端向第一设备中的VPN接收端传输数据报文,第二设备中的VPN接收端接收第一设备中的VPN发送端所传输的数据报文,参考图5和图6中所示。
基于以上实现,在VPN发送端和VPN接收端之间的网络隧道被建立之后,VPN发送端和VPN接收端分别在所述网络隧道被建立之后开始计时,其计时用于确定反馈数据应答报文的时刻。
以本实施例中,VPN发送端向VPN接收端传输第一数据报文为例,VPN接收端在网络隧道被建立之后开始计时,而计时到达第二时长时将该第二时长内所接收到的第一数据报文对应的数据应答报文通过第一传输通道向VPN发送端进行传输,以通知接收到数据应答报文的VPN发送端:VPN接收端所接收到的第一数据报文。如图7中所示,在VPN接收端向VPN发送端传输数据应答报文之后VPN接收端重新开始计时,直到其计时再次到达第二时长时将最近一个第二时长内所接收到的第一数据报文对应的数据应答报文向VPN发送端通过第一传输通道进行传输,以通知到VPN发送端:VPN接收端在新的第二时长内所接收到的第一数据报文。
需要说明的是,第一数据报文对应的数据应答报文中至少包含VPN接收端所接收到的第一数据报文的报文标识,如第一数据报文的报文编号等等,由此,VPN发送端在接收到VPN接收端所反馈的数据应答报文之后,能够根据数据应答报文中的报文编号确定需要重传的第一数据报文,具体的,VPN发送端在本地缓存队列中重新读取与所接收到的数据应答报文中的报文编号相对应的第一数据报文,进而将重新读取的第一数据报文同时通过第一传输通道和第二传输通道重新向VPN接收端进行传输,从而在第一传输通道传输第一数据报文传输失败的情况下,同时利用第一传输通道和第二传输通道进行传输,以保证数据报文传输的可靠性。
同理,在其他实施例中,第一设备作为数据报文的服务端即接收端时,第二设备中的VPN接收端在网络隧道北建立后通过第一传输通道向第一设备中的VPN发送端传输第二数据报文,而第一设备中的VPN发送端在网络隧道被建立之后开始计时,第一设备中的VPN发送端所记录的第二时长用于在超过时长阈值时触发VPN发送端将第二时长内所接收的第二数据报文对应的数据应答报文通过第一传输通道进行传输,第二设备中的VPN接收端根据第一设备的VPN发送端反馈的第二数据报文对应的数据应答报文在第二设备的本地缓存队列中重新读取相应的第二数据报文,即没有向第一设备发送成功的第二数据报文,再将重新读取的第二数据报文通过第一传输通道和第二传输通道向第一设备的VPN发送端进行传输,与第一设备的VPN发送端向第二设备的VPN接收端传输第一数据报文的技术方案同理,具体实现方式可以参考前文中相应内容。
在一种实现方式中,在VPN发送端和VPN接收端之间的基于UDP协议的网络隧道被建立之后,本实施例中还可以通过心跳报文监控第一传输通道和第二传输通道各自的通道状态,这里的通道状态可以包含有通道正常状态、通道挂起状态和隧道关闭状态,其中:
通道正常状态下,第一传输通道和第二传输通道能够用于传输数据报文;
通道挂起状态和隧道关闭下,第一传输通道和第二传输通道不能用于传输数据报文,其中,通道挂起状态下能够切换到通道正常状态,进而相应的传输通过能够继续用于传输数据报文,而隧道关闭状态下不能被切换到通道挂起状态或通道正常状态。
具体的,本实施例中VPN发送端可以分别通过第一传输通道和第二传输通道向VPN接收端发送心跳报文,VPN接收端根据其接收到的心跳报文的状态来获得通道状态,例如,VPN接收端在第一传输通道上持续第三时长内没有接收到VPN发送端发送的心跳报文的情况下,挂起第一传输通道,即第一传输通道从通道正常状态切换到通道挂起状态,而在再次在第一传输通道上接收到VPN发送端发送的心跳报文的情况下,恢复第一传输通道,即第一传输通道从通道挂起状态切换到通道正常状态;
另外,VPN发送端可以分别通过第一传输通道和第二传输通道向VPN接收端发送心跳报文,以使得VPN发送端分别根据第一传输通道和第二传输通道各自返回的心跳应答报文获得通道状态,如通道正常状态、通道挂起状态或隧道关闭状态。如下:
首先,在VPN发送端和VPN接收端之间的网络隧道被建立之后,VPN发送端分别通过第一传输通道和第二传输通道按照预设的心跳频率向VPN接收端发送心跳报文,以使得VPN接收端接收心跳报文之后分别通过第一传输通道和第二传输通道按照心跳频率向VPN发送端发送心跳应答报文,如图8中所示,第一传输通道和第二传输通道上分别有VPN发送端所发送的心跳报文,而在VPN接收端上,在第一传输通道上接收到VPN发送端传输的心跳报文之后,会相应的在第一传输通道上向VPN发送端反馈心跳应答报文,而在第二传输通道上接收到VPN发送端传输的心跳报文之后,会相应的在第二传输通道上向VPN发送端反馈心跳应答报文,由此,VPN发送端可以通过对心跳应答报文进行接收及解析等处理来确定第一传输通道和第二传输通道各自的通道状态。
例如,VPN发送端在第一传输通道上持续第三时长内没有接收到VPN接收端发送的心跳应答报文的情况下,挂起第一传输通道,即第一传输通道从通道正常状态切换到通道挂起状态,而在再次在第一传输通道上接收到VPN接收端发送的心跳应答报文的情况下,恢复第一传输通道,即第一传输通道从通道挂起状态切换到通道正常状态;
VPN发送端在第二传输通道上持续第三时长内没有接收到VPN接收端发送的心跳应答报文的情况下,挂起第二传输通道,在再次在第二传输通道上接收到VPN接收端发送的心跳应答报文的情况下,恢复第二传输通道,即第二传输通道从通道挂起状态切换到通道正常状态;
而如果VPN发送端在第一传输通道上和第二传输通道上持续第四时长内没有接收到VPN接收端发送的心跳应答报文的情况下,关闭网络隧道。
其中,第三时长和第四时长可以在网络隧道被建立的过程中VPN发送端和VPN接收端之间协商确定,例如,第三时长可以为N个报文传输周期的时长,第四时长可以为K个报文传输周期的时长,N和K分别为大于或等于1的正整数。
基于此,本实施例中在步骤102之前,即在本地缓存队列中缓存第一数据报文并将第一数据报文通过第一传输通道向VPN接收端传输之前,还可以执行以下步骤,如图9中所示:
步骤105:判断第一传输通道是否处于通道挂起状态,如果第一传输通道处于通道挂起状态,那么执行步骤106,如果第一传输通道没有处于通道挂起状态而是处于通道正常状态,即没有被挂起,那么执行步骤102。
步骤106:将第一数据报文通过第二传输通道向VPN接收端传输。
具体的,本实施例中可以通过读取第一传输通道的通道参数如状态标识等来判断第一传输通道是否处于通道挂起状态,基于此,在第一传输通道处于通道挂起状态的情况下,将第一数据报文通过传输准确率更高传输更可靠的第二传输通道向VPN接收端传输,而不再使用第一传输通道传输数据报文,在下次传输数据报文时,如果第一传输通道已经处于通道正常状态,那么则执行步骤102,通过传输带宽更高传输效率更高的第一传输通道传输数据报文,以保证数据报文传输的高效性。
基于以上实现,本实施例中在VPN发送端接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,VPN发送端可以将本地缓存队列中与所接收到的数据应答报文相对应的第一数据报文进行删除,由此减少本地缓存队列中的占用空间,从而增加本地缓存队列的可用缓存区域。
另外,在步骤104中将重新读取的第一数据报文通过第一传输通道和第二传输通道向VPN接收端传输之后,可以将本地缓存队列中被重新读取的第一数据报文进行删除,由此减少本地缓存队列中的占用空间,从而增加本地缓存队列的可用缓存区域。
在一种实现方式中,在步骤102之前,即VPN发送端在本地缓存队列中缓存第一数据报文并将第一数据报文通过第一传输通道向VPN接收端传输之前,VPN发送端可以先为第一数据报文生成报文编号,并至少将报文编号封装到第一数据报文的报头中,而封装到报头中的报文编号可以用于VPN接收端对第一数据报文去重处理,还可以用于VPN接收端生成第一数据报文对应的数据应答报文,例如,VPN接收端在接收到第一数据报文之后,通过解析报头中的报文编号和校验码等信息来判断VPN接收端是否曾经接收到该数据报文,从而进行去重处理,另外,VPN接收端在接收到第一数据报文之后,通过解析报头中的报文编号来生成表征第一数据报文的数据应答报文,例如,将该第一数据报文的报文编码封装到数据应答报文中,进而在将数据应答报文反馈给VPN发送端之后,VPN发送端可以通过解析数据应答报文中的报文编号来确定哪些数据报文已经被VPN接收端接收到,进而确定没有被VPN接收端所接收到的数据报文,进而在本地缓存队列中筛选出没有被VPN接收端接收到的数据报文并重新读取,再通过第一传输通道和第二传输通道向VPN接收端进行重新传输,从而保证数据报文的传输可靠性。
具体的,第一数据报文的报头即为第一数据报文中的VPN报头,VPN报头中还可以包含有第一数据报文的报文类型,如数据报文、应答报文或控制报文等报文类型;另外,第一数据报文中还包含有UDP报头,而UDP报头可以封装在VPN报头之前,如图10所示。
参考图11,为本申请实施例二提供的一种数据传输方法的实现流程图,该方法可以应用于第二设备中基于生成的虚拟网卡所配置的VPN接收端,如图2中所示的VPN接收端。本实施例中的技术方案主要用于实现低时延和高可靠的数据传输。
具体的,本实施例中的方法可以通过以下步骤实现:
步骤1101:在网络隧道被建立的情况下,通过第一传输通道接收VPN发送端传输的第一数据报文。
其中,VPN发送端为第一设备中基于生成的虚拟网卡所配置的VPN发送端;第一数据报文为VPN发送端在第一设备中所获得的待发送的数据报文,且第一数据报文被VPN发送端缓存在第一设备的本地缓存队列中。
步骤1102:获得第一数据报文对应的数据应答报文。
步骤1103:将第一数据报文对应的数据应答报文通过第一传输通道向VPN发送端进行传输,以使得VPN发送端在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,在本地缓存队列中重新读取第一数据报文并将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。
其中,VPN接收端可以在网络隧道被建立时开始计时,并在其计时到达第二时长时,根据第二时长内所接收到的第一数据报文生成相应的数据应答报文,数据应答报文中可以包含VPN接收端所接收到的第一数据报文的报文编号,由此,VPN发送端在接收到VPN接收端所反馈的数据应答报文之后,可以将数据应答报文中的报文编号与本地缓存队列中相应时长或报文传输周期内的第一数据报文的报文编号进行比对,从而确定出哪些数据报文没有被成功传输到VPN接收端,进而VPN发送端在其本地缓存队列中重新读取出没有被成功传输到VPN接收端的第一数据报文,进而将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端重新进行传输,由此,通过第一传输通道保证数据报文传输的高效性,即低时延,通过第二传输通道重传没有传输成功的数据报文来保证数据报文传输的可靠性。
由上述方案可知,本申请实施例二提供的一种数据传输方法中,通过在第一设备和第二设备中分别基于各自生成的虚拟网卡配置VPN发送端和VPN接收端,由此,在第一设备需要向第二设备发送数据报文时,第一设备中的VPN发送端在于VNP接收端之间的基于UDP协议的网络隧道被建立的情况下,获得第一设备中待发送的第一数据报文,并在本地缓存队列中缓存第一数据报文的同时将第一数据报文通过第一传输通道向VPN接收端传输,VPN接收端向向VPN发送端反馈VPN接收端所接收到的第一数据报文对应的数据应答报文,而VPN发送端在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,就在本地缓存队列中重新读取第一数据报文再将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。可见,本实施例中通过在两个设备中分别配置VPN发送端和VPN接收端,进而通过VPN发送端和VPN接收端之间建立的基于UDP协议的网络隧道内的两个传输通道实现传输失败的数据报文的重传,由此本申请中不再需要操作系统和网络协议栈支持,而是通过生成的虚拟网卡实现基于UDP协议的网络隧道,从而实现数据报文的传输,能够兼顾两个传输通道的传输优点,由此实现低时延和高可靠的数据传输。
参考图12,为本申请实施例三提供的一种电子设备的结构示意图,该电子设备可以为进行数据报文发送的设备,如手机、pad、AR终端或服务器等,如图2中所示的第一设备。本实施例中的技术方案主要用于实现低时延和高可靠的数据传输。
具体的,本实施例中的电子设备可以包括以下结构:
存储器1201,用于存储应用程序以及所述应用程序运行所产生的数据;
处理器1202,用于执行所述应用程序,以实现:基于生成的虚拟网卡配置VPN发送端,所述VPN发送端用于:
在所述VPN发送端与VPN接收端之间的基于UDP协议的网络隧道被建立的情况下,获得所述电子设备中待发送的第一数据报文;其中,所述VPN接收端为其他设备中基于生成的虚拟网卡所配置的VPN接收端;
在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输;
在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输。
当前,本实施例中的电子设备中还可以包含能够进行数据报文传输的通信模块1203,如WiFi模块和4G模块,WiFi模块用于实现第一传输通道,4G模块用于实现第二传输通道。
由上述方案可知,本申请实施例三提供的一种电子设备中,通过在第一设备和第二设备中分别基于各自生成的虚拟网卡配置VPN发送端和VPN接收端,由此,在第一设备需要向第二设备发送数据报文时,第一设备中的VPN发送端在于VNP接收端之间的基于UDP协议的网络隧道被建立的情况下,获得第一设备中待发送的第一数据报文,并在本地缓存队列中缓存第一数据报文的同时将第一数据报文通过第一传输通道向VPN接收端传输,而在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,就在本地缓存队列中重新读取第一数据报文再将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。可见,本实施例中通过在两个设备中分别配置VPN发送端和VPN接收端,进而通过VPN发送端和VPN接收端之间建立的基于UDP协议的网络隧道内的两个传输通道实现传输失败的数据报文的重传,由此本申请中不再需要操作系统和网络协议栈支持,而是通过生成的虚拟网卡实现基于UDP协议的网络隧道,从而实现数据报文的传输,能够兼顾两个传输通道的传输优点,由此实现低时延和高可靠的数据传输。
需要说明的是,本实施例中处理器的具体实现可以参考前文中的相应内容,此处不再详述。
参考图13,为本申请实施例四提供的一种电子设备的结构示意图,该电子设备可以为进行数据报文接收的设备,如手机、pad、AR终端或服务器等,如图2中所示的第二设备。本实施例中的技术方案主要用于实现低时延和高可靠的数据传输。
具体的,本实施例中的电子设备可以包括以下结构:
存储器1301,用于存储应用程序以及所述应用程序运行所产生的数据;
处理器1302,用于执行所述应用程序,以实现:基于生成的虚拟网卡配置VPN接收端,所述VPN接收端用于:
在所述VPN接收端与VPN发送端之间的基于UDP协议的网络隧道被建立的情况下,通过第一传输通道接收所述VPN发送端传输的第一数据报文,所述VPN发送端为其他设备中基于生成的虚拟网卡所配置的VPN发送端;
其中,所述第一数据报文为所述VPN发送端在所述其他设备中所获得的待发送的数据报文,且所述第一数据报文被所述VPN发送端缓存在所述第一设备的本地缓存队列中;
将所述第一数据报文对应的数据应答报文通过所述第一传输通道向所述VPN发送端进行传输,以使得所述VPN发送端在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输。
当前,本实施例中的电子设备中还可以包含能够进行数据报文传输的通信模块1303,如WiFi模块和4G模块,WiFi模块用于实现第一传输通道,4G模块用于实现第二传输通道。
由上述方案可知,本申请实施例四提供的一种电子设备中,通过在第一设备和第二设备中分别基于各自生成的虚拟网卡配置VPN发送端和VPN接收端,由此,在第一设备需要向第二设备发送数据报文时,第一设备中的VPN发送端在于VNP接收端之间的基于UDP协议的网络隧道被建立的情况下,获得第一设备中待发送的第一数据报文,并在本地缓存队列中缓存第一数据报文的同时将第一数据报文通过第一传输通道向VPN接收端传输,VPN接收端向向VPN发送端反馈VPN接收端所接收到的第一数据报文对应的数据应答报文,而VPN发送端在持续第一时长内没有接收到VPN接收端发送的第一数据报文对应的数据应答报文的情况下,就在本地缓存队列中重新读取第一数据报文再将重新读取的第一数据报文同时通过第一传输通道和第二传输通道向VPN接收端传输。可见,本实施例中通过在两个设备中分别配置VPN发送端和VPN接收端,进而通过VPN发送端和VPN接收端之间建立的基于UDP协议的网络隧道内的两个传输通道实现传输失败的数据报文的重传,由此本申请中不再需要操作系统和网络协议栈支持,而是通过生成的虚拟网卡实现基于UDP协议的网络隧道,从而实现数据报文的传输,能够兼顾两个传输通道的传输优点,由此实现低时延和高可靠的数据传输。
需要说明的是,本实施例中处理器的具体实现可以参考前文中的相应内容,此处不再详述。
以下以AR终端和服务器之间进行数据报文传输为例,对本申请的技术方案进行举例说明:
本申请中针对由于使用TCP协议无法保证实时视频等应用的时延的技术问题,提出以下方案:
在AR终端与服务器之间建立基于UDP协议的VPN网络隧道,将时延敏感的应用的数据报文路由到这个VPN网络隧道。AR终端侧和服务器侧的VPN实体即AR终端上的VPN发送端和服务器上的VPN接收端负责数据报文在多个传输通道中按设定的时延如前文中的第一时长和第二时长等指标双向传输。
本申请中,将多个传输通道分为两类,其中一类为大带宽、低资费、低可靠通道,例如wifi或家庭宽带的传输通道,另一类为高资费、高可靠通道,例如4G或5G或专线的传输通道。本申请中将前者作为主用通道,也可以简称为主通道,即前文中的第一传输通道,后者作为备用通道,即第二传输通道。
在本申请中,数据报文优先在设定的主用通道中传输,当主用通道故障使得数据报文的传输时延超过设定时间,那么再在备用通道上重传。而接收端按设定的时间周期即前文中的第二时长通过主通道反馈最近的周期内收到数据报文的ACK信息,即前文中的数据应答报文。发送端发送完某个数据报文后在设定的时间即前文中的第一时长内没有收到该报文对应的ACK信息就在主用通道和备用通道上同时重发一次该报文。接收端负责在主备通道上同时接收数据报文,并将它们去重后发往应用。当然,本申请中接收端还会对接收到的数据报文进行报文排序。
可见,本申请的技术方案可以在用户空间中实现,有利于使用和部署,最重要的在于,本申请中优先使用低资费的通道传输数据报文,当出现传输错误时,再使用高资费高可靠的传输通道重传,大大降低了成本和对备用通道容量的要求。而且,本申请中根据时延保证计算的重发时机,可以在保证时延的前提下,节省不必要的重发,而由于实时视频流等应用的数据报文有较高的时效性,超过指定时延的报文不再有价值,因此本申请通过高可靠的通道重发一次,减少了信道恶劣情况下拥塞的可能性。
另外,本申请中的技术方案可以和MLVPN结合使用,实现针对不同应用的不同处理,对时延敏感的应用就采用本方案处理,对带宽需求极大的就采用MLVPN的聚合方式处理。
可见,本申请中在终端和服务器间建立基于UDP的网络隧道(VPN),该网络隧道使用多个通道传输。与MLVPN不同的是,MLVPN主要功能将多个通道聚合起来使用,充分利用多个通道的带宽资源,该方案的最小时延为通路中最大时延通道的时延,还会引入重排时延,对时延敏感应用不适用。本申请中主要针对时延敏感的大流量应用,充分利用主要通道的大带宽、低资费、低时延特点作为数据初传通道,利用备用通道的高可靠、较低时延特点作为重传。
具体实现中,本申请中会在终端侧和服务器侧各生成一个虚拟网卡,并配置虚拟地址实现相互访问。如果用户通过应用程序等应用客户端访问一个的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,VPN服务程序即VPN客户端实体(或称为VPN实体)接收该数据并进行相应的处理如进行UDP封装以及IP封装后,通过主通道或备通道的SOCKET从外网上发送出去,对端的VPN服务程序即VPN服务端实体(或称为VPN实体)通过SOCKET从外网上接收数据,并进行相应的处理如解封装后,发送给虚拟网卡,则应用服务端可以接收到,完成了一个单向传输的过程,反之亦然,如图14中所示。
本申请中的技术方案在具体实现中包含有隧道建立阶段、隧道及通道保持阶段、通信阶段以及隧道关闭阶段几个部分。其中:
1、隧道建立阶段
VPN客户端即前文中的VPN发送端通过主通道向VPN服务端即前文中的VPN接收端监听的主通道UDP端口发起隧道建立请求;
之后,VPN客户端与VPN服务端协商时延保证参数、备用通道IP地址、端口等信息;
最后,在网络隧道正式建立之后,VPN客户端和服务端的接收模块启动定时器T2开始统计接收报文。
2、隧道及通道保持阶段
在网络隧道建立后,VPN客户端周期向服务端发送(一般为秒级)心跳报文保持隧道。心跳报文在主、备通道均发送。VPN服务端通过该心跳的接收通道发送心跳应答报文。
如果VPN客户端或VPN服务端在主或备通道于设定的N个周期内未收到心跳或心跳应答报文,则认为该通道挂起。通道挂起后仍然尝试在该通道上发送和接收心跳或心跳应答,如果再次收到心跳或心跳应答,则该通道恢复正常。
如果VPN客户端或VPN服务端在K个周期内均未收到心跳或心跳应答报文,则执行隧道关闭工作。
3、通信阶段
(1)、结合图14中所示,应用程序即应用客户端将发往对端的IP报文或2层报文通过虚拟网卡送入VPN实体,VPN实体为该报文顺次递增编号(如packetID:0~1023)并将该编号封装到报文前部做为VPN封装的报头。VPN实体在本地缓存队列里缓存该报文,并将报文送入主通道,并开始该报文的T1定时器计时。如果某个时刻主通道由于无信号等原因被挂起了,VPN封装的报文直接送到备用通道发送,不进入缓存队列,也不再使用主通道进行传输。
(2)、对端的接收模块从主、备通道接收到数据报文后,从报文的VPN报头中提取packet ID,并计算该报文UDP payload部分即UDP报头部分的校验码,首先检查该packetID是否在最大长度为M的接收循环队列里,M为大于或等于2的正整数,接收循环队列为VPN服务端中用来缓存所接收到的数据报文的信息的队列,队列里每一项存储的是所接收到的数据报文对应的packetID和校验码。通过比较所接收到的数据报文与队列里存储的packetID和校验码是否一致,以此检查是否该报文为重复报文,如果不是重复报文,则记录packetID和校验码到队列尾部,并将去掉VPN报头的报文送往虚拟网卡,由虚拟网卡驱动处理后送往对应的应用程序。如果是重复报文则丢弃该报文。
(3)、当VPN接收端的T2定时器超时时,如果主用通道正常,接收端通过主用通道向发送端回复ACK报文。报文里包含最近一个T2计时周期内收的数据报文情况。具体可以通过一个滑动窗来描述,该描述包括一个表示窗头的packet ID以及一个固定L位的bitmap。Bitmap表示从packetID开始连续L个数据报文的接收情况,1表示接收到,0表示没有接收到。packetID为最近一个周期收到的非重复的最小packetID。如果一个新报文都未收到或主用通道被挂起,则不发送ACK报文。接收端重新开始T2定时器计时,统计下一个周期接收的数据报文。
(4)、VPN发送端收到ACK报文后,解析该报文的ACK信息,将其对应成对每个packetID报文的确认信息,并将已经确认收到的报文从缓存队列里删除。发送端在缓存队列对头报文的T1定时器超时时还没收到ACK报文,则按其在缓存队列内的顺序在主、备用通道上同时重新发送该报文,并在发送完后从缓存队列里删除该报文。
其中,网络隧道的关闭可以由VPN客户端或VPN服务端发起,向对端发送结束命令。在关闭该VPN网络隧道之后,释放对应的资源。
如图15中所示,为T1、T2的取值与最大允许时延以及初次发送时延、重发时延之间的关系。T2取值在保证图15中的关系的条件下尽量大,可以节省由于ACK反馈带来的开销。初次发送时延和反馈发送时延为主用通道的单向发送时延。重发时延为S个(S<L)报文通过备用通道传输的单向发送时延。这些参数可以在隧道被建立时通过测试报文进行测量得到,或者,也可以预置一个值。而最大允许时延可以通过预先设定,并在隧道建立时由VPN客户端发给VPN服务器端,并且上下行的数据报文最大允许时延可以不同。T1、T2可以通过上述关系自动计算出来,也可以在隧道建立时由客户端人工设定。
其中,VPN客户端与VPN服务端之间的VPN数据报文的结构如图16中所示,VPN数据报文中包含IP头、UDP头、VPN头和应用报文如IP报文或以太报文等,其中,VPN头中包含有报文类型和packetID的字段,而报文类型字段为数据类型的指定值,例如0x00等。ACK报文的结构如图17中所示,ACK报文中除了包含有IP头和UDP头之外,还包含有报文类型和packetID以及bitmap等字段,其中,报文类型字段为ACK类型的指定值,例如0x01等。VPN的控制报文的结构如图18中所示,控制报文中除了包含有IP头和UDP头之外,还包含有报文类型和相应的控制信息等字段,其中,报文类型字段为某种控制功能的指定值,例如隧道建立、隧道关闭、时延测量等功能对应的指定值。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种数据传输方法,应用于第一设备中基于生成的虚拟网卡所配置的VPN发送端,所述方法包括:
在所述VPN发送端与VPN接收端之间的基于UDP协议的网络隧道被建立的情况下,获得所述第一设备中待发送的第一数据报文;其中,所述VPN接收端为第二设备中基于生成的虚拟网卡所配置的VPN接收端;
在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输;
在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输;其中,第一传输通道和第二传输通道的传输特性不同,所述第一传输通道的传输带宽高、传输准确率低;所述第二传输通道的传输带宽低、传输准确率高。
2.根据权利要求1所述的方法,所述VPN发送端和VPN接收端分别在所述网络隧道被建立之后开始计时;
其中,所述VPN接收端在其计时到达第二时长时将所述第二时长内所接收到的第一数据报文对应的数据应答报文通过所述第一传输通道进行传输,在所述VPN接收端传输所述数据应答报文之后所述VPN接收端重新开始计时。
3.根据权利要求1所述的方法,在所述网络隧道被建立之后,所述方法还包括:
分别通过所述第一传输通道和所述第二传输通道向所述VPN接收端发送心跳报文,以使得所述VPN发送端分别根据所述第一传输通道和所述第二传输通道各自返回的心跳应答报文获得通道状态;
其中,所述通道状态包括通道正常状态、通道挂起状态和隧道关闭状态。
4.根据权利要求1或3所述的方法,在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输之前,所述方法还包括:
判断所述第一传输通道是否处于通道挂起状态;
在所述第一传输通道处于通道挂起状态的情况下,将所述第一数据报文通过第二传输通道向所述VPN接收端传输;
在所述第一传输通道没有处于通道挂起状态而是处于通道正常状态的情况下,执行所述在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输的步骤。
5.根据权利要求1所述的方法,在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输之前,所述方法还包括:
为所述第一数据报文生成报文编号;
至少将所述报文编号封装到所述第一数据报文的报头中,所述报文编号用于所述VPN接收端对所述第一数据报文去重处理。
6.根据权利要求5所述的方法,所述报头为所述第一数据报文中的VPN报头,所述VPN报头中还包含有所述第一数据报文的报文类型;
其中,所述第一数据报文中还至少包含有UDP报头,所述UDP报头封装在所述VPN报头之前。
7.根据权利要求2所述的方法,第一时长至少根据所述第一设备与所述第二设备之间的最大允许时延和所述第二传输通道上的发送时延获得;
所述第二时长至少根据所述第一时长、所述第一传输通道上的发送时延和所述第二传输通道上的发送时延获得。
8.一种数据传输方法,应用于第二设备中基于生成的虚拟网卡所配置的VPN接收端,所述方法包括:
在所述VPN接收端与VPN发送端之间的基于UDP协议的网络隧道被建立的情况下,通过第一传输通道接收所述VPN发送端传输的第一数据报文,所述VPN发送端为第一设备中基于生成的虚拟网卡所配置的VPN发送端;
其中,所述第一数据报文为所述VPN发送端在所述第一设备中所获得的待发送的数据报文,且所述第一数据报文被所述VPN发送端缓存在所述第一设备的本地缓存队列中;
将所述第一数据报文对应的数据应答报文通过所述第一传输通道向所述VPN发送端进行传输,以使得所述VPN发送端在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输;其中,第一传输通道和第二传输通道的传输特性不同,所述第一传输通道的传输带宽高、传输准确率低;所述第二传输通道的传输带宽低、传输准确率高。
9.一种电子设备,包括:
存储器,用于存储应用程序以及所述应用程序运行所产生的数据;
处理器,用于执行所述应用程序,以实现:基于生成的虚拟网卡配置VPN发送端,所述VPN发送端用于:
在所述VPN发送端与VPN接收端之间的基于UDP协议的网络隧道被建立的情况下,获得所述电子设备中待发送的第一数据报文;其中,所述VPN接收端为其他设备中基于生成的虚拟网卡所配置的VPN接收端;
在本地缓存队列中缓存所述第一数据报文并将所述第一数据报文通过第一传输通道向所述VPN接收端传输;
在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输;其中,第一传输通道和第二传输通道的传输特性不同,所述第一传输通道的传输带宽高、传输准确率低;所述第二传输通道的传输带宽低、传输准确率高。
10.一种电子设备,包括:
存储器,用于存储应用程序以及所述应用程序运行所产生的数据;
处理器,用于执行所述应用程序,以实现:基于生成的虚拟网卡配置VPN接收端,所述VPN接收端用于:
在所述VPN接收端与VPN发送端之间的基于UDP协议的网络隧道被建立的情况下,通过第一传输通道接收所述VPN发送端传输的第一数据报文,所述VPN发送端为其他设备中基于生成的虚拟网卡所配置的VPN发送端;
其中,所述第一数据报文为所述VPN发送端在所述其他设备中所获得的待发送的数据报文,且所述第一数据报文被所述VPN发送端缓存在其他设备的本地缓存队列中;
将所述第一数据报文对应的数据应答报文通过所述第一传输通道向所述VPN发送端进行传输,以使得所述VPN发送端在持续第一时长内没有接收到所述VPN接收端发送的所述第一数据报文对应的数据应答报文的情况下,在所述本地缓存队列中重新读取所述第一数据报文并将重新读取的第一数据报文同时通过所述第一传输通道和第二传输通道向所述VPN接收端传输;其中,第一传输通道和第二传输通道的传输特性不同,所述第一传输通道的传输带宽高、传输准确率低;所述第二传输通道的传输带宽低、传输准确率高。
CN202011289465.5A 2020-11-17 2020-11-17 一种数据传输方法及电子设备 Active CN112436994B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011289465.5A CN112436994B (zh) 2020-11-17 2020-11-17 一种数据传输方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011289465.5A CN112436994B (zh) 2020-11-17 2020-11-17 一种数据传输方法及电子设备

Publications (2)

Publication Number Publication Date
CN112436994A CN112436994A (zh) 2021-03-02
CN112436994B true CN112436994B (zh) 2022-04-19

Family

ID=74692683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011289465.5A Active CN112436994B (zh) 2020-11-17 2020-11-17 一种数据传输方法及电子设备

Country Status (1)

Country Link
CN (1) CN112436994B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113098706B (zh) * 2021-03-05 2023-03-24 深圳震有科技股份有限公司 一种基于云端的vpn服务器切换方法、装置及存储介质
CN113365089B (zh) * 2021-05-31 2023-02-24 浙江大华技术股份有限公司 一种数据传输方法、装置、存储介质及电子装置
CN116137599A (zh) * 2021-11-18 2023-05-19 华为技术有限公司 一种报文统计方法及相关设备
CN114124940A (zh) * 2021-11-30 2022-03-01 上海御渡半导体科技有限公司 一种基于udp协议的数据定制传输的方法
CN115065442B (zh) * 2022-08-16 2022-11-18 深圳星云智联科技有限公司 数据传输方法及相关装置
CN115550250B (zh) * 2022-11-17 2023-04-07 鹏城实验室 小流报文重传方法、系统、电子设备及存储介质
CN116074252B (zh) * 2023-03-07 2023-06-06 国仪量子(合肥)技术有限公司 Udp数据传输方法及udp数据传输装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618678A (zh) * 2013-11-18 2014-03-05 北京星网锐捷网络技术有限公司 自适应多链路聚合的方法、装置及系统
CN106254202A (zh) * 2016-08-29 2016-12-21 北京邮电大学 一种基于喷泉码的多路并行传输方法以及装置
CN106788911A (zh) * 2015-11-25 2017-05-31 华为技术有限公司 一种报文重传的方法和装置
CN108512752A (zh) * 2018-03-12 2018-09-07 深圳维盟科技股份有限公司 一种vpn数据传输方法及vpn数据传输装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104684107A (zh) * 2015-03-24 2015-06-03 苏州大学张家港工业技术研究院 一种移动终端的双通道混合隧道构建方法
EP3459217B1 (en) * 2016-05-16 2020-07-08 Telefonaktiebolaget LM Ericsson (PUBL) Transporting udp packets over an mptcp connection
US10511521B2 (en) * 2016-08-03 2019-12-17 Anchorfree Inc. System and method for virtual multipath data transport
CN108347310B (zh) * 2017-01-25 2020-04-14 中国移动通信有限公司研究院 一种分组数据的实时重传方法、实时重传系统及相关装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618678A (zh) * 2013-11-18 2014-03-05 北京星网锐捷网络技术有限公司 自适应多链路聚合的方法、装置及系统
CN106788911A (zh) * 2015-11-25 2017-05-31 华为技术有限公司 一种报文重传的方法和装置
CN106254202A (zh) * 2016-08-29 2016-12-21 北京邮电大学 一种基于喷泉码的多路并行传输方法以及装置
CN108512752A (zh) * 2018-03-12 2018-09-07 深圳维盟科技股份有限公司 一种vpn数据传输方法及vpn数据传输装置

Also Published As

Publication number Publication date
CN112436994A (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
CN112436994B (zh) 一种数据传输方法及电子设备
US11153041B2 (en) Packet transmission method and user equipment
US10924421B2 (en) Packet transmission method, terminal, network device, and communications system
US10237153B2 (en) Packet retransmission method and apparatus
CN109639340B (zh) 一种适用于卫星链路的tcp加速方法
KR100580141B1 (ko) 패킷 데이터 시스템의 성능을 강화하기 위한 장치 및 방법
CN112436924B (zh) 一种数据传输方法及电子设备
WO2020147453A1 (zh) 数据传输方法及相关装置
JP2014509483A (ja) ワイヤレスネットワークにおけるトランスミッション・コントロール・プロトコルの性能を改善する機構
CN110506404A (zh) 一种数据接收状态报告方法及装置
US7203184B2 (en) Data transmitter, data receiver, and data transmitting/receiving method
WO2012083762A1 (zh) 数据传输方法、设备及系统
WO2022083371A1 (zh) 一种数据传输方法和装置
JP4384676B2 (ja) データ通信装置の制御方法
WO2020010511A1 (zh) 数据传输方法及基站
CN109451524A (zh) 一种数据处理方法和装置
JP2006101339A (ja) データ通信装置
CN113424578B (zh) 一种传输控制协议加速方法和装置
CN116963175A (zh) 数据传输方法、装置及系统
CN107548105B (zh) 一种基于udp的数据传输确认方法和基站
CN116131923B (zh) 一种基于卫星通信的数据传输方法、装置及存储介质
CN115499108A (zh) 一种基于udp协议的闭环网络通信方法及系统
CN116095018A (zh) 数据传输方法、装置
WO2018072097A1 (zh) 数据传输方法及设备
KR101298544B1 (ko) 이동통신 시스템의 수신 패킷 처리 장치 및 방법

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