CN116032635A - 一种使用公共网络代替专线网络的数据传输方法及系统 - Google Patents
一种使用公共网络代替专线网络的数据传输方法及系统 Download PDFInfo
- Publication number
- CN116032635A CN116032635A CN202310018375.XA CN202310018375A CN116032635A CN 116032635 A CN116032635 A CN 116032635A CN 202310018375 A CN202310018375 A CN 202310018375A CN 116032635 A CN116032635 A CN 116032635A
- Authority
- CN
- China
- Prior art keywords
- data
- udp
- connection
- data packet
- network
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000003993 interaction Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 238000010276 construction Methods 0.000 abstract description 3
- 238000009434 installation Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种使用公共网络代替专线网络的数据传输方法及系统,包括如下步骤:发送端和接收端均配置K条不同运营商公共网络的接入权限;发送端与接收端建立虚拟网络,发送端将用户数据复制成相同的N份后,经虚拟网络通过简单多通道UDP连接将N份用户数据分别由N条不同运营商公共网络进行发送;接收端通过简单多通道UDP连接接收N条不同运营商公共网络发送的数据包,并将接收到的多个数据包整合成一份M个数据包的完整用户数据。本发明可达到专线数据传输的安全可靠性,并可减小延迟,达到接近专线网络的质量的目的,同时具有建设成本低,安装速度快,配置容易,实施简单等优点。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种使用公共网络代替专线网络的数据传输方法及系统。
背景技术
网络专线作为一个独立的局域网,一直是私有专网、企业VPN等场景下最昂贵的方案之一,该方案提供了非常高的数据可靠性、数据安全性以及稳定性。在专线的线路上,往往不会受到丢包、错包、延迟大等质量问题的困扰,但专线往往也存在以下问题:链路受到物理建设影响(虚拟专线除外),特别是最后一公里;单价成本高昂,价格与线路长短,带宽速度成正比;需要单独通过专门的入口管理与配置专线相关参数;开通安装速度慢,等等。而通用的公用网络,如移动、电信等宽带网络等虽然开通速度快,价格低廉,但存在数据传输稳定性差、数据安全性难以保证的问题。
发明内容
本发明的目的是克服上述现有技术的缺点,提供一种安全可靠、延迟小、建设成本低、安装速度快的使用公共网络代替专线网络的数据传输方法,以及实施该方法的系统。
本发明是通过以下技术方案来实现的:
一种使用公共网络代替专线网络的数据传输方法,包括如下步骤:
S1、发送端和接收端均配置K条不同运营商公共网络的接入权限;发送端可为客户端应用程序,如浏览器,接收端可为服务应用程序,如nginx。
S2、发送端与接收端建立虚拟网络,发送端将用户数据制成相同的N份,并经所述虚拟网络通过简单多通道UDP(Simple multi path UDP,SMPU)连接将N份用户数据分别由N条不同运营商公共网络进行发送,其中,K≥N≥2,每份用户数据由M个数据包组成。
S3、接收端通过简单多通道UDP连接接收S2步骤中N条不同运营商公共网络发送的数据包,将接收到的多个数据包整合成一份包含S2步骤中M个数据包的完整用户数据。
进一步地,所述S3步骤中接收端接收数据包时,各接收通道接口的运营商类型与发送端各发送通道接口的运营商类型相一致。连接由相匹配的运营商进行,因为相同的运营商之间的数据通道往往质量是最好的。
进一步地,S2步骤中发送端与接收端建立虚拟网络包括如下步骤:
S21、所述发送端和接收端均配置路由器,所述路由器配置各自所属端K条不同运营商公共网络的接口,包括各运营商公共网络接口的IP地址和子网掩码;
S22、主控制连接:发送端的路由器根据接口配置通过TCP连接接收端路由器,当连接成功后,发送端和接收端通过TCP连接交换各自所属端的所有接口IP地址、运营商类型以及虚拟网络信息,所述虚拟网络信息包括虚拟网卡的IP地址、虚拟网卡的子网掩码和虚拟网卡的MAC地址,并将LAN侧的IP地址和掩码发送给对端,方便后续对端添加旁路路由;
S23、虚拟网卡生成:发送端和接收端根据主控制连接交互得到的虚拟网络信息配置各自端的虚拟网卡。
进一步地,当发送端路由器某LAN口下的某一用户层与接收端路由器某LAN口下的某一用户层需要进行数据传输时,发送端的相应LAN侧和接收端的相应LAN侧均需添加旁路路由,并在S22步骤中发送端和接收端的主控制连接交互中添加对方LAN侧旁路路由的IP地址和掩码。
进一步地,所述路由器采用Openwrt系统,通过orayboxvpn配置各运营商公共网络的接口、启动发送端和接收端的主控制连接交互、以及数据包的包装。
进一步地,所述简单多通道UDP连接包括N个UDP连接,其连接和断开方式为:
当目前UDP连接的数量≥1时,整个简单多通道UDP连接(SMPU)则为连接状态,连接状态时允许有新的UDP连接动态加入以及有UDP连接断开或移除;当所有UDP连接均断开时,整个简单多通道UDP连接(SMPU)则为断开状态;
其中,单个UDP连接建立连接时,采用三次握手机制,保证连接的成功的准确性;而单个UDP连接断开时,采用两次挥手机制,并增加定时的keepalive作为连接状态的保障。
进一步地,所述步骤S2中简单多通道UDP连接发送数据包和步骤S3中简单多通道UDP连接接收数据包的方法为:
数据包封装:将每个用户数据包添加UDP头和SMPU头,使整个数据包依次包括UDP头、SMPU头和用户层数据,其中,所述UDP头包括16位源端口号、16位目的端口号、16位UDP长度和16位UDP检验和;所述SMPU头包括版本号、操作码、组员ID、会话ID、负载长度和发送序列号,所述组员ID用于表示当前会话属于哪一个UDP连接,所述会话ID用于表示当前连接属于哪一个SMPU连接,以当前SMPU连接的标识符表示,用于区分SMPU连接,避免逻辑错乱,所述发送序列号用于表示当前数据包的顺序号,按照数据包的排列顺序逐个递增加1;
数据包发送:将封装好的数据包同时从组内N个UDP连接上发出,并为发送保留特定的缓冲区;
数据包接收:接收端保存最后接收到的数据包的发送序列号,以此作为后续收包的依据,并为数据接收保留特定的缓冲区。
进一步地,所述数据包接收的方法为:
当最后接收的数据包的发送序列号为X,接下来收到的数据包的发送序列号为Y时,
若Y≤X,则将该数据包直接丢弃;
若Y=X+1,则接收该数据包,并将最后接收的数据包的发送序列号更新为X+1,再在缓冲队列中查找是否有发送序列号为X+2的数据包,如有接收该数据包,继续将最后接收的数据包的发送序列号更新为X+2,并继续在缓冲队列中查找是否有发送序列号为X+3的数据包,直至缓冲队列中没有符合要求的数据包;如缓冲队列中无符合发送序列号要求的数据包,则查看动态传输收到的下一数据包的发送序列号;
若Y>X+1,则将该数据包缓存入缓冲队列中,如果缓冲队列已满则将缓冲队列中的所有数据包丢给上层逻辑处理,以清空缓冲队列。
进一步地,当简单多通道UDP连接中所有UDP连接均完成数据传输,但仍存在数据包丢失,没法组成一个完整的用户数据时,由接收端基于虚拟网卡通过TCP协议栈与发送端连接进行数据的重传。
一种使用公共网络代替专线网络的数据传输系统,用于实现上述使用公共网络代替专线网络的数据传输方法,包括:
多条不同运营商公共网络,多条公网分别属于不同的运营商;
发送端,包括发送端应用层和发送端网络层,所述发送端网络层配置有多条不同运营商公共网络的接口和第一主路由器,所述第一主路由器用于配置多条所述多条不同运营商公共网络的接口和添加旁路路由,以及与接收端建立虚拟连接和简单多通道UDP连接,所述简单多通道UDP连接用于基于虚拟网络将发送端应用层中复制多份的数据包分别经多个UDP连接从多条不同运营商公共网络中发送出去;
接收端,包括接收端应用层和接收端网络层,所述接收端网络层配置有多条不同运营商公共网络的接口和第二主路由器,所述第二主路由器用于配置多条所述不同运营商公共网络的接口和添加旁路路由,以及与发送端建立虚拟连接和简单多通道UDP连接,所述简单多通道UDP连接用于基于虚拟网络接收多个UDP连接通道中的数据包,所述接收端应用层用于处理接收的数据包。
本发明通过使用多条普通公共网络来代替专网实现专线网络的功能,以及通过简单多通道UDP技术进行多份数据包的传输,可达到专线数据传输的安全可靠性,并可减小延迟,达到接近专线网络的质量的目的,同时具有建设成本低,安装速度快,配置容易,实施简单等优点。
附图说明
图1为本发明数据传输方法的结构流程图。
图2为本发明数据传输方法的原理图。
图3为本发明实施例数据传输方法的工作流程图。
图4为本发明中简单多通道UDP的框架结构图。
图5为本发明中简单多通道UDP的数据包格式示意图。
图6为本发明中简单多通道UDP的数据包格式中UDP头的示意图。
图7为本发明中简单多通道UDP的数据包格式中SMPU头的示意图。
图8为本发明实施例中UDP接收数据时的另一种状态示意图。
图9为本发明实施例中UDP接收数据时的一种状态示意图。
图10为本发明实施例中UDP接收数据时的另一种状态示意图。
图11为本发明实施例中UDP接收数据时的另一种状态示意图。
图12为本发明实施例中UDP接收数据时的另一种状态示意图。
图13为本发明实施例中UDP接收数据时的另一种状态示意图。
具体实施方式
一种使用公共网络代替专线网络的数据传输系统,如图1,包括:
多条不同运营商公共网络,多条公网分别属于不同的运营商;
发送端,包括发送端应用层和发送端网络层,所述发送端网络层配置有多条不同运营商公共网络的接口和第一主路由器,所述第一主路由器用于配置多条所述不同运营商公共网络的接口和添加旁路路由,以及与接收端建立虚拟连接和简单多通道UDP连接,所述简单多通道UDP连接用于基于虚拟网络将发送端应用层中复制多份的数据包分别经多个UDP连接从多条不同运营商公共网络中发送出去。
接收端,包括接收端应用层和接收端网络层,所述接收端网络层配置有多条不同运营商公共网络的接口和第二主路由器,所述第二主路由器用于配置多条所述不同运营商公共网络的接口和添加旁路路由,以及与发送端建立虚拟连接和简单多通道UDP连接,所述简单多通道UDP连接用于基于虚拟网络接收多个UDP连接通道中的数据包,所述接收端应用层用于处理接收的数据包。
发送端应用层和接收端应用层先通过各自的路由器TCP协议连接,拿到各自的物理网络信息(包括有多少条宽带、每条宽带的IP及对外的端口)以及虚拟网络信息后,通过物理网络信息建立SMPU后进行数据收发。
一种使用公共网络代替专线网络的数据传输方法,采用上述使用公共网络代替专线网络的数据传输系统,如图1和图3,包括如下步骤:
S1、发送端和接收端均配置K条不同运营商公共网络的接入权限,如移动宽带网络、电信宽带网络、联通宽带网络、广电宽带网络等。
S2、发送端与接收端建立虚拟网络,发送端将用户数据制成相同的N份,并经所述虚拟网络通过简单多通道UDP(Simple multi path UDP,SMPU)连接将N份用户数据分别由N条不同运营商公共网络进行发送,其中,K≥N≥2,每份用户数据由M个数据包组成。即,为保证数据传输的可靠性和安全性,至少建立两条公网传输通道,N越大,传输通道数量越多,数据包传输的可靠性越高。
S3、接收端通过简单多通道UDP连接接收S2步骤中N条不同运营商公共网络发送的数据包,将接收到的多个数据包整合成一份包含S2步骤中M个数据包的完整用户数据。接收端与发送端连接时,建立实际的应用层业务数据的通道,即通过SMPU中的参数进行连接,但连接必须通过匹配的运营商进行,即接收端接收数据包时,各接收通道接口的运营商类型与发送端各发送通道接口的运营商类型相一致,因为相同的运营商之间的数据通道往往质量是最好的。
采用多条普通运营商网络来同时发送相同的数据,可减轻数据包丢包的概率,如果一个网络数据包在一个带宽上成功送达的概率是80%,那如果将这个数据包从两条带宽上传输出去后,成功送达的概率将达到1-(1-80%)*(1-80%)=96%,而在三条带宽上传输,成功送达的概率将高达1–(1-80%)*(1–80%)*(1–80%)=99.2%,这也是本发明的核心思想。
简单多通道UDP连接,以下简称SMPU(Simple multi path UDP),是通过UDP协议在底层做一套简单的多路径UDP连接,该模块用来支持在多个UDP通道(连接)上维护一个上层逻辑使用的长连接。通过虚拟网卡使上层应用程序能够利用SMPU技术及多带宽环境将自己的应用数据享受到多带宽出口的优势。
如图1所示,左侧的发送端应用程序(如浏览器)与接收端应用程序(如nginx)建立虚拟网络后,发送端应用程序将数据变成三份后通过虚拟网卡加上SMPU逻辑后,分别从电信、移动和联通宽带网络发出,接收端虽然可能收到3份数据,但最终抛给虚拟网卡的数据却只会是一份,其余两份将删除。或如图2所示,每份数据包含三个数据包,如电信宽带网络丢失第一个包,移动宽带网络丢失第二个数据包,联通宽带网络丢失第三个数据包,在这种情况下,整个三合一链路却是无丢包的状态。如此,通过三条数据传输通道将丢包率控制到最低,从而达到专线的质量。
S2步骤中发送端与接收端建立虚拟网络,发送数据前,发送端和接收端还需要进行主控制连接交互,具体包括如下步骤:
S21、所述发送端和接收端均配置路由器,所述路由器配置各自所属端K条不同运营商公共网络的接口,包括各运营商公共网络接口的IP地址和子网掩码;
S22、主控制连接:发送端的路由器根据接口配置通过TCP连接接收端路由器,当连接成功后,发送端和接收端通过TCP连接交换各自所属端的所有接口IP地址、运营商类型以及虚拟网络信息,所述虚拟网络信息包括虚拟网卡的IP地址、虚拟网卡的子网掩码和虚拟网卡的MAC地址,并将LAN侧的IP地址和掩码发送给对端,方便后续对端添加旁路路由。当发送端路由器某LAN口下的某一用户层与接收端路由器某LAN口下的某一用户层需要进行数据传输时,发送端的相应LAN侧和接收端的相应LAN侧均需添加旁路路由,并在S22步骤中发送端和接收端的主控制连接交互中添加对方LAN侧旁路路由的IP地址和掩码。
S23、虚拟网卡生成:发送端和接收端根据主控制连接交互得到的虚拟网络信息配置各自端的虚拟网卡。
作为其中一种实施方式,所述路由器采用Openwrt系统,通过orayboxvpn配置各运营商公共网络的接口、启动发送端和接收端的主控制连接交互、以及数据包的包装。
下面以具体实例展示上述连接交互和数据传输过程,工作流程图可参见图1和图3。
以A侧的发送端和B侧的接收端均配置路由器为例,通过路由器才可以(有必要)配置多个网络出口。本例以路由器系统为Openwrt系统为例。
例中,两个路由器所在地分别申请了电信、联通、移动三个运营商的带宽,A侧的IP地址分别是120.22.100.2,220.36.120.46,61.120.78.230,B侧的IP分别是120.61.20.12,180.22.154.31,61.35.11.10。两个路由器中,A侧为客户端,B侧为服务器,即连接由A侧发起,B侧接受连接即可
在Openwrt路由器内通过UCI对应用进行配置,而本例中应用名为orayboxvpn,其UCI配置文件为/etc/config/orayboxvpn,下面是UCI配置,包含了多运营商接口的配置。
A侧配置
B侧配置(简化)
A侧配置中三个smpu配置域中记录了本地三个运营商的出口IP,其中bind_ip代表出口IP,type代表运营商类型,base.role代表自己的角色,如果是client代表自己是作为主动连接方,通过base.server_address去连接B侧路由器。
B侧配置中三个smpu配置与A侧一致,但base.role中填的是server,代表自己是被动连接方,接受外部连接,listen_address则是监听的地址与端口。
UCI中的vnc代表了双方虚拟网络中的地址与掩码,供应用层使用。
启动:启动B侧应用后,再启动A侧应用,启动方式为/etc/init.d/orayboxvpnrestart。
主控制连接:A侧路由器会根据UCI中的base.server.address配置通过TCP连接去连接B侧路由器,当连接成功后,A与B之间会通过这个TCP连接告知对端自己所有接口的IP地址、运营商类型以及虚拟网络信息,虚拟网络信息包括虚拟网卡的IP地址、虚拟网卡的子网掩码和虚拟网卡的MAC地址。另外还要通过network.lan.ipaddr和network.lan.netmask将LAN侧的IP和掩码拿到,并发送给对端,方便后续对端添加旁路路由。
生成虚拟网卡:通过主连接交互拿到虚拟网络信息后,配置出虚拟网卡,虚拟网卡的类型使用tun类型(不必处理mac层数据)。
旁路路由添加:因为A侧需要能够访问到B侧LAN口下的设备,所以必须在A侧添加必要的B侧的旁路路由,同样B侧也同样要添加A侧的LAN侧路由。
数据连接:建立实际的应用层业务数据的通道,即通过SMPU中的参数进行连接,但连接必须通过匹配的运营商进行,因为相同的运营商之间的数据通道往往质量是最好的。有了上述3条连接后,即A侧的120.22.100.2->B侧的120.61.20.12,A侧的220.36.120.46->B侧的180.22.154.31,A侧的61.120.78.230->B侧的61.35.11.10。
应用层数据通讯:当所有交互完毕后,可以开始正式使用了,当A侧路由器LAN口下面的一台电脑需要访问B侧路由器LAN口下面的一台服务器上的nginx时,数据包会通过旁路路由,将数据包塞给A侧路由器的虚拟网卡,随后由orayboxvpn将数据包进行包装并通过SMPU模块将数据包复制成三份发送给对方,这三份一模一样的数据包会从三个运营商的宽带网络发送给B侧的三个运营商宽带。B侧如收到三份一样的数据,但只会保留其中的一份,并通过虚拟网卡发送到用户态一层,然后由系统根据目标地址将数据包转发给了nginx主机。
本发明采用SMPU的方式进行数据传输,SMPU一种简单多路径(链路)UDP,它基于UDP协议,对上提供了一个连接的概念,对下可以动态的使用多条UDP连接。其逻辑框架如图4所示,与普通的连接不同的是,SMPU是一个复合连接,其包括N个UDP连接。其工作机制具体如下:
连接状态:SMPU是一个复合连接,N个UDP连接将作为一个组来代表整体的连接,SMPU逻辑上层的连接状态与底层UDP的连接状态的关联是:当目前UDP连接的数量≥1时,整个简单多通道UDP连接(SMPU)则为连接状态;当所有UDP连接均断开时,整个简单多通道UDP连接(SMPU)则为断开状态。
UDP连接:单个UDP连接参考TCP连接的三次握手机制,保证连接的成功的准确性,而单个UDP连接断开时,将直接使用两次挥手的,而非四次,同时增加定时的keepalive作为连接状态的保障。
加入与离开组:当第一个UDP连接成功后,那整个SMPU连接就连接成功了,当最后一个UDP连接断开后,那整个SMPU的状态也将变为断开状态,在这期间,SMPU允许动态的有新的UDP连接加入(即加入组),也允许有UDP连接断开或移除(即离开组),只要最后留有一个UDP连接,SMPU的状态就不会发生变化。
数据收发:数据的收发是SMPU最重要的组成部分,主要包括数据包封装、数据包发送和数据包接收。
(1)数据包封装
将每个用户数据包添加UDP头和SMPU头,使整个数据包依次包括UDP头、SMPU头和用户层数据(如图5)。每个UDP连接上的数据包均包括除了正常的UDP头之外,均包括SMPU头和用户数据部分,SMPU头主要用来告知对方自己的会话ID。
如图6,所述UDP头包括16位源端口号、16位目的端口号、16位UDP长度和16位UDP检验和。
源端口号:需要对方回信时选用,不需要时全部置0;
目的端口号:在终点交付报文的时候需要用到;
UDP长度:包括首部和数据,其最小值为8(只有首部);
UDP校验和:检测UDP数据包在传输中是否有错,有错则丢弃。
如图7,所述SMPU头包括版本号、操作码、组员ID、会话ID、负载长度和发送序列号。
版本号:指定版本号,方便后续升级协议。
操作码:主要区分“连接”,“断开”,“数据”等操作。
组员ID:用于表示当前属于会话中哪一个UDP连接,收包方会检测这个ID是否跟当前连接的组员ID一致。
会话ID:用于标识当前SMPU连接,以当前SMPU连接的标识符表示,用于告诉对方此次数据传输是属于哪一个SMPU连接,因为同样的IP和端口上可以有多个SMPU连接。收包方同样需要检测此ID的一致性,避免逻辑错乱。
发送序列号:用于表示当前数据包的顺序号,编号时按照数据包的排列顺序逐个递增加1。
(2)数据包发送
对于发送端非常的简单,其实只需要将封装好的数据包同时从组内N个UDP连接上发出即可,无需关心数据的发送结果,也需要为发送保留特定的缓冲区。
(3)数据包接收
接收端保存最后接收到的数据包的发送序列号,以此作为后续收包的依据,并为数据接收保留特定的缓冲区。
对于接收数据包的一方来说,需要保存最后接收到的数据包的发送序列号,以此作为后续收包的依据,这是防止包序号错乱的手段。
数据包接收的方法如图8,具体地为:
当最后接收的数据包的发送序列号为X,接下来收到的数据包的发送序列号为Y时,
若Y≤X,则将该数据包直接丢弃,因为多条传输通道只需保证接收一份完整的数据即可,其余重复全部丢弃;
若Y=X+1,则接收该数据包,并将最后接收的数据包的发送序列号更新为X+1,再在缓冲队列中查找是否有发送序列号为X+2的数据包,如有接收该数据包,继续将最后接收的数据包的发送序列号更新为X+2,并继续在缓冲队列中查找是否有发送序列号为X+3的数据包,直至缓冲队列中没有符合要求的数据包;如缓冲队列中无符合发送序列号要求的数据包,则查看动态传输收到的下一数据包的发送序列号;
若Y>X+1,则将该数据包缓存入缓冲队列中,如果缓冲队列已满则将缓冲队列中的所有数据包丢给上层逻辑处理,以清空缓冲队列。即数据push到虚拟网卡,由系统协议栈来处理,如果在应用层上是一个TCP协议,那么协议栈会自动处理丢包(如重传),如果是UDP、ICMP等不可靠协议,那丢包就在正常预控范围内。
上述步骤循环直至按顺序接收完所有数据包,组成一份完整的用户数据。
下面举例说明上述数据包的接收规则。
如果当前最后收到的数据包的发送序列号是5,那么接下来允许收序列号为6的数据包,如果收到≤5的数据包,则直接丢弃;如果收到序列号>5的数据包时,则分以下情况:
①若序列号=6时,此时直接将最后接收到的序列号更新为6;再从缓冲队列头部查看是否有序列号为7的数据包,如果有则直接继续更新,最后接收到的序列号更新为7,以此类推;
②若序列号>6,则将该数据包缓存入缓冲队列;
举例,如图9,当最后接收的数据包的发送序列号为5,缓存区缓冲队列中数据包的序列号分别为8、9、10、12时,此时如收到序列号为7的数据包,如图10,则将数据包存入缓冲队列中;当下一收到的数据包的序列号为6,则接收该数据包,因为缓冲队列中序列号为7、8、9、10的数据包均已经存在,故如图11所示,将最后接收到的数据包的序列号直接更新为10,并等待序列号为11的数据包,而序列号10的数据包之前消失的序列号为6、7、8、9、10的数据包将直接丢给上层处理,缓冲队列中只剩下序列号为12的数据包。
接下来如三个宽带网络对应的三条通道均出现问题,导致序列号为11的数据包一直没有收到,却收到了序列号为13、14、15、16、17的数据包(排列在缓冲队列中),如图12所示,若此时又收到了序列号为18的数据包,若此时缓冲队列已满(假设缓冲队列只能放6个元素),则直接将缓冲队列数据全部丢给上层逻辑处理(包括序列号为18的数据包),并清空缓冲队列,结果如图13所示,此时缓冲队列已空,最后收到的数据包的发送序列号更新为18。如此接收所有的数据包。
这里有一个重要的问题是,为何在序列号为11的数据包始终没有数据的情况,不通知对方重发?因为SMPU是一个简单的UDP连接协议,它只保证连接与断开,对中间的业务数据只做简单的序列处理,并不做重传、ACK等机制,究其原因是因为虚拟网卡依赖的系统TCP协议栈会帮我们完成应用层数据的重传,所以并不需要SMPU有多强的重传能力。SMPU不处理丢包,如果所有UDP连接都没有收到数据包,则表示发生丢包了,但这不影响虚拟网卡上的应用程序对数据包的处理,因为上层应用程序如果使用TCP协议,那么TCP本身还会进行一次丢包处理,如果上层应用程序是UDP等不可靠协议,那么丢包也是一件很正常的事,对于上层应用程序来说是预料之内的。但对于专线网络,数据的安全可靠性是一大衡量指标,因而为降低丢包率,可根据协议要求重传。
上列详细说明是针对本发明可行实施例的具体说明,该实施例并非用以限制本发明的专利范围,凡未脱离本发明所为的等效实施或变更,均应包含于本案的专利范围中。
Claims (10)
1.一种使用公共网络代替专线网络的数据传输方法,其特征在于,包括如下步骤:
S1、发送端和接收端均配置K条不同运营商公共网络的接入权限;
S2、发送端与接收端建立虚拟网络,发送端将用户数据复制成相同的N份后,经所述虚拟网络通过简单多通道UDP连接将N份用户数据分别由N条不同运营商公共网络进行发送,其中,K≥N≥2,每份用户数据由M个数据包组成;
S3、接收端通过简单多通道UDP连接接收S2步骤中N条不同运营商公共网络发送的数据包,并将接收到的多个数据包整合成一份包含S2步骤中M个数据包的完整用户数据。
2.根据权利要求1所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,所述S3步骤中接收端接收数据包时,各接收通道接口的运营商类型与发送端各发送通道接口的运营商类型相一致。
3.根据权利要求1所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,S2步骤中发送端与接收端建立虚拟网络包括如下步骤:
S21、所述发送端和接收端均配置路由器,由所述路由器配置各自所属端K条不同运营商公共网络的接口,包括各运营商公共网络接口的IP地址和子网掩码;
S22、主控制连接:发送端的路由器根据接口配置通过TCP连接接收端路由器,当连接成功后,发送端和接收端通过TCP连接交换各自所属端的所有接口IP地址、运营商类型以及虚拟网络信息,所述虚拟网络信息包括虚拟网卡的IP地址、虚拟网卡的子网掩码和虚拟网卡的MAC地址,并将LAN侧的IP地址和掩码发送给对端,方便后续对端添加旁路路由;
S23、虚拟网卡生成:发送端和接收端根据主控制连接交互得到的虚拟网络信息配置各自端的虚拟网卡。
4.根据权利要求3所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,当发送端路由器某LAN口下的某一用户层与接收端路由器某LAN口下的某一用户层需要进行数据传输时,发送端的相应LAN侧和接收端的相应LAN侧均需添加旁路路由,并在S22步骤中发送端和接收端的主控制连接交互中添加对方LAN侧旁路路由的IP地址和掩码。
5.根据权利要求3所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,所述路由器采用Openwrt系统,通过orayboxvpn配置各运营商公共网络的接口、启动发送端和接收端的主控制连接交互、以及数据包的包装。
6.根据权利要求1所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,所述简单多通道UDP连接包括N个UDP连接,其连接和断开方式为:
当目前UDP连接的数量≥1时,整个简单多通道UDP连接则为连接状态,连接状态时允许有新的UDP连接动态加入以及有UDP连接断开或移除;当所有UDP连接均断开时,整个简单多通道UDP连接则为断开状态;
其中,单个UDP连接建立连接时,采用三次握手机制,保证连接的成功的准确性;而单个UDP连接断开时,采用两次挥手机制,并增加定时的keepalive作为连接状态的保障。
7.根据权利要求1所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,所述步骤S2中简单多通道UDP连接发送数据包和步骤S3中简单多通道UDP连接接收数据包的方法为:
数据包封装:将每个用户数据包添加UDP头和SMPU头,使整个数据包依次包括UDP头、SMPU头和用户层数据,其中,所述UDP头包括16位源端口号、16位目的端口号、16位UDP长度和16位UDP检验和;所述SMPU头包括版本号、操作码、组员ID、会话ID、负载长度和发送序列号,所述组员ID用于表示当前会话属于哪一个UDP连接,所述会话ID用于表示当前连接属于哪一个SMPU连接,所述发送序列号用于表示当前数据包的顺序号,按照数据包的排列顺序逐个递增加1;
数据包发送:将封装好的数据包同时从组内N个UDP连接上发出,并为发送保留特定的缓冲区;
数据包接收:接收端保存最后接收到的数据包的发送序列号,以此作为后续收包的依据,并为数据接收保留特定的缓冲区。
8.根据权利要求7所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,所述数据包接收的方法为:
当最后接收的数据包的发送序列号为X,接下来收到的数据包的发送序列号为Y时,
若Y≤X,则将该数据包直接丢弃;
若Y=X+1,则接收该数据包,并将最后接收的数据包的发送序列号更新为X+1,再在缓冲队列中查找是否有发送序列号为X+2的数据包,如有接收该数据包,继续将最后接收的数据包的发送序列号更新为X+2,并继续在缓冲队列中查找是否有发送序列号为X+3的数据包,直至缓冲队列中没有符合要求的数据包;如缓冲队列中无符合发送序列号要求的数据包,则查看动态传输收到的下一数据包的发送序列号;
若Y>X+1,则将该数据包缓存入缓冲队列中,如果缓冲队列已满则将缓冲队列中的所有数据包丢给上层逻辑处理,以清空缓冲队列。
9.根据权利要求8所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,当简单多通道UDP连接中所有UDP连接均完成数据传输,但仍存在数据包丢失,没法组成一个完整的用户数据时,由接收端基于虚拟网卡通过TCP协议栈与发送端连接进行数据的重传。
10.一种使用公共网络代替专线网络的数据传输系统,用于实现如权利要求1至9任一项所述的一种使用公共网络代替专线网络的数据传输方法,其特征在于,包括:
多条不同运营商公共网络;
发送端,包括发送端应用层和发送端网络层,所述发送端网络层配置有多条不同运营商公共网络的接口和第一主路由器,所述第一主路由器用于配置多条所述不同运营商公共网络的接口和添加旁路路由,以及与接收端建立虚拟连接和简单多通道UDP连接,所述简单多通道UDP连接用于基于虚拟网络将发送端应用层中复制多份的数据包分别经多个UDP连接从多条不同运营商公共网络中发送出去;
接收端,包括接收端应用层和接收端网络层,所述接收端网络层配置有多条不同运营商公共网络的接口和第二主路由器,所述第二主路由器用于配置多条所述不同运营商公共网络的接口和添加旁路路由,以及与发送端建立虚拟连接和简单多通道UDP连接,所述简单多通道UDP连接用于基于虚拟网络接收多个UDP连接通道中的数据包,所述接收端应用层用于处理接收的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310018375.XA CN116032635B (zh) | 2023-01-06 | 2023-01-06 | 一种使用公共网络代替专线网络的数据传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310018375.XA CN116032635B (zh) | 2023-01-06 | 2023-01-06 | 一种使用公共网络代替专线网络的数据传输方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116032635A true CN116032635A (zh) | 2023-04-28 |
CN116032635B CN116032635B (zh) | 2023-11-03 |
Family
ID=86077418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310018375.XA Active CN116032635B (zh) | 2023-01-06 | 2023-01-06 | 一种使用公共网络代替专线网络的数据传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116032635B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113438155A (zh) * | 2021-06-25 | 2021-09-24 | 北京网聚云联科技有限公司 | 虚拟多链路的智能可靠的udp传输方法、装置和设备 |
CN113518085A (zh) * | 2019-07-05 | 2021-10-19 | 腾讯科技(深圳)有限公司 | 一种基于多通道的数据传输方法以及相关装置 |
-
2023
- 2023-01-06 CN CN202310018375.XA patent/CN116032635B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113518085A (zh) * | 2019-07-05 | 2021-10-19 | 腾讯科技(深圳)有限公司 | 一种基于多通道的数据传输方法以及相关装置 |
CN113438155A (zh) * | 2021-06-25 | 2021-09-24 | 北京网聚云联科技有限公司 | 虚拟多链路的智能可靠的udp传输方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116032635B (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7486622B2 (en) | OAM echo messaging to verify a service-based network distribution path | |
EP2378720B1 (en) | Extranet networking method, system and device for multicast virtual private network | |
US5918022A (en) | Protocol for transporting reservation system data over a TCP/IP network | |
EP1076955B1 (en) | Point-to-point protocol with a signaling channel | |
EP1478129B1 (en) | Using network transport tunnels to provide service-based data transport | |
US9225622B2 (en) | OAM echo messaging to verify a service-based network distribution path | |
US20090225660A1 (en) | Communication device and operation management method | |
US20070165603A1 (en) | Access network system, subscriber station device, and network terminal device | |
US11165893B2 (en) | Techniques for packet data conversion | |
CN112583718B (zh) | 一种SRoU场景下SRv6报文传递方法、系统、设备及介质 | |
US20130223337A1 (en) | Mobile device to generate multiple maximum transfer units and data transfer method | |
CN108093041A (zh) | 单通道vdi代理服务系统及实现方法 | |
CN111585938B (zh) | 一种通信方法及相关装置 | |
US20060280175A1 (en) | Method and system for tunneling data using a management protocol | |
US10601602B2 (en) | Hybrid data transport solution, in particular for satellite links | |
CN113556273A (zh) | 一种三网云互通系统的数据传输方法 | |
CN116032635B (zh) | 一种使用公共网络代替专线网络的数据传输方法及系统 | |
CN116488958A (zh) | 网关处理方法、虚拟接入网关、虚拟业务网关及相关设备 | |
CN115913820A (zh) | 网络传输方法和设备 | |
Cisco | R | |
Cisco | R | |
Cisco | R | |
Cisco | R | |
JP2001053811A (ja) | Sonetネットワークエレメントを介して、リモートipネットワークエレメントを管理する方法および装置 | |
JP2002094595A (ja) | マルチリンク方法 |
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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Qiao Rongsheng Inventor after: Zhang Xiaofeng Inventor before: Yang Qingwen Inventor before: Zhang Xiaofeng |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |