一种基于QUIC协议的部分可靠多路径传输方法技术

技术编号:38208197 阅读:10 留言:0更新日期:2023-07-21 16:57
本发明专利技术公开了一种基于QUIC协议的部分可靠多路径传输方法,目的是在同一个网络会话中同时传输可靠的数据流和不可靠的数据报,拓宽多路径QUIC的适用场景。技术方案是构建基于多路径QUI C协议的部分可靠传输系统;基于多路径QUIC的部分可靠传输系统的客户端的握手模块A与服务器的握手模块B进行通信,建立多路径QUIC会话,完成握手;发送方向接收方传输数据;接收方接收数据报文,对数据报文进行处理并重组成完整的文件或数据单元。采用本发明专利技术可减小数据报的交付时间、减少网络资源浪费,在同一个网络会话中同时传输可靠的数据流和不可靠的数据报,拓宽多路径QUIC的适用场景。拓宽多路径QUIC的适用场景。拓宽多路径QUIC的适用场景。

【技术实现步骤摘要】
一种基于QUIC协议的部分可靠多路径传输方法


[0001]本专利技术属于信息技术系统中的计算机通信
,具体涉及一种基于QUIC(Quick UDP Internet Connection,UDP协议的快速网络连接)协议的部分可靠多路径传输方法。

技术介绍

[0002]QUIC协议是由Google公司于2013年公开的一种基于UDP(User Datagram Protocol,用户数据报协议)的可靠的传输协议,其出发点是为了突破内核态实现的TCP(Transmission Control Protocol,传输控制协议)协议的桎梏,在用户态以UDP协议为基础实现TCP协议可靠传输、拥塞控制等核心能力,并在此基础上提供了对多流复用(Stream multiplex)的支持。2017年,谷歌百分之三十的入口流量使用QUIC传输。截止2020年,Meta百分之七十五的入口流量使用QUIC协议传输。因此,微软、阿里等相继跟进、实现并发布了自己的QUIC版本。随着QUIC技术的发展,QUIC不再局限于完全可靠的传输模式,其出发点在于完全可靠的传输模式并非对所有的应用都有益,完全可靠的传输模式需要重传丢失的数据报文,重传带来额外的延迟。一些应用需要不可靠的传输模式(比如实时视频传输、实时交互式游戏)来满足应用对低延迟的需求,另外一些应用在一个网络会话中甚至同时需要两种传输模式:不可靠传输和可靠传输,既部分可靠传输模式。比如在线视频会议中视频数据的内容可以采用不可靠传输的模式,而文字性互动信息需要可靠传输的模式。
[0003]另外,近年来由于短视频、在线会议、直播等业务的蓬勃发展,给网络传输协议提出了更高带宽、更低时延、更可靠的需求。作为一种并行传输技术,多路径传输具有带宽聚合、提升传输可靠性和链路利用率的优势。为了提高QUIC协议的传输能力以支持高吞吐量的需求,多路径QUIC协议应运而生。需要明晰的一点是,多路径QUIC协议可以理解为是QUIC协议的一种分支版本。相比单路径QUIC,多路径QUIC协议提供的核心能力是支持将传输的数据报文调度到多个物理接口上(比如手机端上的WiFi接口和5G蜂窝接口),以达到传输速率的最大化。
[0004]如图1所示,传统的基于QUIC协议的多路径传输架构由服务端、客户端构成,客户端上安装有握手模块A、数据发送模块A、接收模块A、乱序重排模块A;数据发送模块A包括数据流模块A、数据加密模块A、调度模块A;服务端上安装有握手模块B、数据发送模块B、接收模块B、乱序重排模块B;数据发送模块B包括数据流模块B、数据加密模块B、调度模块B;
[0005]客户端的握手模块A与服务端的握手模块B、客户端的数据发送模块A相连。客户端的握手模块A向服务器的握手模块B发送探测报文,探测报文包含了客户端的QUIC协议版本号、密钥信息、客户端的端口信息。客户端的握手模块A还从服务端的握手模块B接收成功响应报文或失败响应报文。成功响应报文包含了握手成功后建立的路径信息,以及供客户端和服务端加解密数据使用的密钥;会话信息A与成功响应报文包含的内容相同,路径信息中包含了所有可以发送报文的路径以及各条路径的往返延迟RTT(Round

Trip Time)和各条路径的拥塞窗口CWND(CongestionWindow),调度模块A选择其中的路径进行报文调度,密钥
用于数据加密模块A对数据进行加密、接收模块A对接收的数据报文解密;失败响应报文包含的信息为握手失败的错误代码。如果接收的是成功响应报文,会话建立,生成会话信息A,客户端的握手模块A将会话信息A的握手成功后建立的路径信息发送给数据发送模块A的调度模块A,握手模块A同时将会话信息A的密钥发送给接收模块A和数据发送模块A的数据加密模块A;如果是失败响应报文,则建立会话失败。
[0006]服务端的握手模块B与客户端的握手模块A、服务端的数据发送模块B相连。服务端的握手模块B收到客户端握手模块A的探测报文,根据其中的客户端QUIC协议版本号决定响应报文的类型。如果客户端QUIC协议版本号与服务端的QUIC协议版本号一致,则握手模块B根据探测报文中的客户端的端口信息和本服务端的端口信息生成路径信息,根据探测报文中密钥信息生成用于加解密数据的密钥,填入成功响应报文,发送到客户端的握手模块A。如果客户端的QUIC协议版本号与服务端的所使用的QUIC协议版本号不一致,则握手模块B将错误代码填入失败响应报文,发送到客户端的握手模块A。若握手模块B发送的是成功响应报文,则生成会话信息B,握手模块B将会话信息B的握手成功后建立的路径信息发送到数据发送模块B的调度模块B,握手模块B同时将会话信息B的密钥发送给接收模块B和数据发送模块B的数据加密模块B。会话信息B包含的内容和成功响应报文相同,路径信息中包含了所有可以发送报文的路径,调度模块B选择其中的路径进行报文调度,密钥用于数据加密模块B对数据进行加密、接收模块B对接收的数据报文解密。
[0007]客户端的数据流模块A与数据加密模块A相连,用于发送客户端的文件,每发送一个文件,生成一个数据流,并将数据流的数据切割成若干个数据段输出到数据加密模块A。
[0008]服务端的数据流模块B与数据加密模块B相连,用于发送服务端的文件,每发送一个文件,生成一个数据流,并将数据流的数据切割成若干个数据段输出到数据加密模块B。
[0009]客户端的数据加密模块A接收数据流模块A发出的切割后的数据段,使用从握手模块A接收到的会话信息A中的密钥对切割后的数据段加密,之后封装成数据报文输出到调度模块A。
[0010]服务端的数据加密模块B接收数据流模块B发出的切割后的数据段,使用从握手模块B接收到的会话信息B中的密钥对切割后的数据段加密,之后封装成数据报文输出到调度模块B。
[0011]客户端的调度模块A接收数据加密模块A发出的数据报文,从握手模块A接收会话信息A中的握手成功后建立的路径信息,调度模块A使用调度算法从多条路径中选择一条路径发送该数据报文到服务端的接收模块B。
[0012]服务端的调度模块B接收数据加密模块B发出的数据报文,从握手模块B接收会话信息B中的握手成功后建立的路径信息,调度模块B使用调度算法从多条路径中选择一条路径发送该数据报文到客户端的接收模块A。
[0013]客户端的接收模块A与服务端的调度模块B、客户端的乱序重排模块A相连,客户端的接收模块A从服务端的调度模块B接收数据报文,从握手模块A接收会话信息A中的密钥,将数据报文解封装,取出数据段,使用密钥解密后输出到乱序重排模块A。服务端的接收模块B与客户端的调度模块A、服务端的乱序重排模块B相连,服务端的接收模块B从客户端调度模块A接收数据报文,从握手模块B接收会话信息B中的密钥,将数据报文解封装,取出数据段,使用密钥解密后输出到乱序重排模块B。
[0014]客户端的乱序重排模块A与客户端的接收模块A、客户端的应用软件相连,客户端的乱序重排模块A从接收模块A接收数据段,对数据段重排序成完整的文件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于QUIC协议的部分可靠多路径传输方法,基于QUIC协议的部分可靠多路径传输方法基于QUIC协议的多路径传输架构实现,基于QUIC协议的多路径传输架构由服务端、客户端构成,客户端上安装有握手模块A、数据发送模块A、接收模块A、乱序重排模块A;数据发送模块A包括数据流模块A、数据加密模块A、调度模块A;服务端上安装有握手模块B、数据发送模块B、接收模块B、乱序重排模块B;数据发送模块B包括数据流模块B、数据加密模块B、调度模块B;客户端的握手模块A与服务端的握手模块B、客户端的数据发送模块A相连;客户端的握手模块A向服务端的握手模块B发送探测报文,探测报文包含客户端的QUIC协议版本号、密钥信息、客户端的端口信息;客户端的握手模块A还从服务端的握手模块B接收成功响应报文或失败响应报文;如果接收的是成功响应报文,会话建立,生成会话信息A,客户端的握手模块A将会话信息A中握手成功后建立的路径信息发送给数据发送模块A的调度模块A,握手模块A同时将会话信息A中的密钥发送给接收模块A和数据发送模块A的数据加密模块A;如果是失败响应报文,则建立会话失败,失败响应报文包含的信息为握手失败的错误代码;服务端的握手模块B与客户端的握手模块A、服务端的数据发送模块B相连;服务端的握手模块B收到客户端握手模块A的探测报文,根据其中的客户端QUIC协议版本号决定响应报文的类型;如果客户端QUIC协议版本号与服务端的QUIC协议版本号一致,则握手模块B根据探测报文中的客户端的端口信息和本服务端的端口数生成路径信息,根据探测报文中密钥信息生成加解密数据的密钥,填入成功响应报文,发送到客户端的握手模块A;如果客户端的QUIC协议版本号与服务端的所使用的QUIC协议版本号不一致,则握手模块B将错误代码填入失败响应报文,发送到客户端的握手模块A;若握手模块B发送的是成功响应报文,则生成会话信息B,握手模块B将会话信息B的握手成功后建立的路径信息发送到数据发送模块B的调度模块B,握手模块B同时将会话信息B的密钥发送给接收模块B和数据发送模块B的数据加密模块B,会话信息B包含的内容和成功响应报文相同,路径信息中包含了所有可以发送数据报文的路径以用各条路径的往返延迟RTT和各条路径的拥塞窗口CWND,调度模块B选择其中的路径进行数据报文调度,密钥用于数据加解密模块B对数据进行加解密、接收模块B进行解密;客户端的数据流模块A与数据加密模块A相连,用于发送客户端的文件,每发送一个文件,生成一个数据流,并将数据流的数据切割成若干个数据段输出到数据加密模块A;服务端的数据流模块B与数据加密模块B相连,用于发送服务端的文件,每发送一个文件,生成一个数据流,并将数据流的数据切割成若干个数据段输出到数据加密模块B;客户端的接收模块A与服务端的调度模块B、客户端的乱序重排模块A相连,客户端的接收模块A从服务端的调度模块B接收数据报文,从握手模块A接收会话信息A中的密钥,将数据报文解封装,取出数据段,使用密钥解密后输出到乱序重排模块A。服务端的接收模块B与客户端的调度模块A、服务端的乱序重排模块B相连,服务端的接收模块B从客户端调度模块A接收数据报文,从握手模块B接收会话信息B中的密钥,将数据报文解封装,取出数据段,使用密钥解密后输出到乱序重排模块B。其特征在于包括以下步骤:第一步:构建基于多路径QUIC协议的部分可靠传输系统,方法是:基于多路径QUIC协议的部分可靠传输系统由基于QUIC协议的多路径传输架构改进而
成,在数据发送模块A中添加数据报模块A、数据报主动丢弃模块A、数据报分配模块A;在数据发送模块B中添加数据报模块B、数据报主动丢弃模块B、数据报分配模块B;客户端的数据报模块A与客户端应用、客户端的数据报主动丢弃模块A相连,接收来自客户端应用要发送的数据单元和交付截止时间,该数据单元是应用发送的一个具有交付截止时间消息体,数据量通常比较小,为了与可靠传输区别,称为数据单元;数据报模块A根据数据单元生成数据报,然后将数据报和数据报交付截止时间传输给客户端的数据报主动丢弃模块A;所述数据报交付截止时间等于数据单元的交付截止时间;服务端的数据报模块B与服务端应用、服务端的数据报主动丢弃模块B相连,接收来自服务端应用要发送的数据单元和交付截止时间,数据报模块B根据数据单元生成数据报,然后将数据报和其交付截止时间传输给服务端的数据报主动丢弃模块B;客户端的数据报主动丢弃模块A与客户端的数据报模块A、客户端的数据报分配模块A相连,接收来自客户端数据报模块A的数据报,根据该数据报包含的数据量大小、交付截止时间、所有路径的网络状态计算是否能够在交付截止时间之前交付到服务端;若能够交付,将该数据报输出到客户端的数据报分配模块A;若不能,则主动丢弃该数据报;所述网络状态由调度模块A根据以往在每一条路径上发送的数据报文统计得到,包括每条路径的往返的时间延迟、带宽;服务端的数据报主动丢弃模块B与服务端的数据报模块B、服务端的数据报分配模块B相连,接收来自服务端数据报模块B的数据报,根据该数据报包含的数据量大小、交付截止时间、所有路径的网络状态计算是否能够在交付截止时间之前交付到客户端;若能够交付,将该数据报输出到服务端的数据报分配模块B;若不能,则主动丢弃该数据报;客户端的数据报分配模块A与客户端的数据报主动丢弃模块A、客户端的调度模块A、客户端的数据加密模块A相连,将从客户端的数据报主动丢弃模块A接收的数据报切分成若干个数据段,根据所有路径的网络状态,决定各个路径上分配的数据段的比例;并将该数据报在各条路径上分配的比例信息输出到客户端的调度模块A,将切割后的数据段输出到客户端的数据加密模块A;服务端的数据报分配模块B与服务端的数据报主动丢弃模块B、服务端的调度模块B、服务端的数据加密模块B相连,将从服务端的数据报主动丢弃模块B接收的数据报切分成若干个数据段,根据所有路径的网络状态,决定各个路径上分配的数据段的比例;并将该数据报在各条路径上分配的比例信息输出到服务端的调度模块B,将切割后的数据段输出到服务端的数据加密模块B;客户端的数据加密模块A与客户端的数据报分配模块A、客户端的数据流模块A、客户端的调度模块A相连,接收客户端的数据流模块A或者客户端的数据报分配模块A发出的切割后的数据段,使用密钥对切割后的数据段加密,将切割后的数据段封装成数据报文输出到调度模块A;服务端的数据加密模块B与服务端的数据报分配模块B、服务端的数据流模块B、服务端的调度模块B相连,接收服务端的数据流模块B或者服务端端的数据报分配模块B发出的切割后的数据段,使用密钥对切割后的数据段加密,将切割后的数据段封装成数据报文输出到调度模块B;客户端的调度模块A与客户端的数据加密模块A、客户端的数据报分配模块A、服务端的
接收模块B相连,接收来自客户端的数据加密模块A的数据报文,从客户端的数据报分配模块A接收数据报在各条路径上分配的比例信息,若该数据报文的数据来自客户端的数据报分配模块A,则按照该数据报在各条路径上分配的比例信息选取一条未阻塞且比例不为零的路径发送该数据报文到服务端的接收模块B,然后将该路径上分配的比例减1;若该数据报文的数据来自客户端的数据流模块A,则使用调度算法将该数据报文发送到服务端的接收模块B;服务端的调度模块B与服务端的数据加密模块B、服务端的数据报分配模块B、客户端的接收模块A相连,接收来自服务端的数据加密模块B的数据报文,从服务端的数据报分配模块B接收数据报在各条路径上分配的比例信息,若该数据报文的数据来自服务端的数据报分配模块B,则按照该数据报在各条路径上分配的比例信息选取一条未阻塞且比例不为零的路径发送该数据报文到客户端的接收模块A,然后将该路径上分配的比例减1;若该数据报文的数据来自服务端的数据流模块B,则使用与客户端的调度模块A相同的调度算法将该数据报文发送到服务端的接收模块B;客户端的乱序重排模块A与客户端的接收模块A、客户端的应用软件相连,从客户端的接收模块A接收数据段,将数据段重排序成完整的文件或数据单元,然后输出给客户端的应用软件;服务端的乱序重排模块B与服务端的接收模块B、服务端的应用软件相连,从服务端接收模块B接收数据段,将数据段重排序成完整的文件或数据单元,然后输出给服务端的应用软件;第二步,基于多路径QUIC的部分可靠传输系统的客户端的握手模块A与服务器的握手模块B进行通信,建立多路径QUIC会话,完成握手:2.1客户端的握手模块A向服务器的握手模块B发送探测报文;2.2服务端的握手模块B从客户端的握手模块A接收探测报文;2.3服务端的握手模块B识别探测报文中的信息,若探测报文中QUIC协议版本号与服务端的QUIC协议版本号一致,生成成功响应报文和会话信息B,所述成功响应报文包含握手成功后建立的路径信息,以及双方加解密数据使用的统一密钥;所述会话信息B内容和成功响应报文相同;握手模块B向客户端的握手模块A发送成功响应报文,并将会话信息B的握手成功后建立的路径信息发送到数据发送模块B的调度模块B,握手模块B同时将会话信息B的密钥发送给接收模块B和数据发送模块B的数据加密模块B,转步骤2.4;否则,生成包含握手失败的错误代码的失败响应报文并向客户端的握手模块A发送失败响应报文,转步骤2.6;2.4客户端的握手模块A接收服务端握手模块B发出的成功响应报文,提取其中的密钥和路径信息作为会话信息A发送给数据发送模块A,将会话信息A中握手成功后建立的路径信息发送给数据发送模块A的调度模块A,同时将会话信息A中的密钥发送给接收模...

【专利技术属性】
技术研发人员:韩彪李亚辉宋丛溪计晓岚兰唯韩雪强徐草
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1