一种抵抗MPTCP接收缓冲区阻塞的数据包调度方法与流程

文档序号:11156406阅读:621来源:国知局
一种抵抗MPTCP接收缓冲区阻塞的数据包调度方法与制造工艺

本发明属于无线通信技术领域,具体涉及一种异构无线网络环境下可抵抗多路径传输控制协议(MPTCP)接收缓冲区阻塞的数据包调度方法。



背景技术:

无线技术正处在一个高速发展的过程中,在我们周围部署着多种不同的无线接入网络,包括公众无线局域网WiFi,车载无线网WAVE,城域网WiMax和移动网4G/LTE等,也预示着无线网络向宽带异构并行接入的方向发展。无线接入网络的不断壮大和多媒体业务的蓬勃发展,给多模终端的发展指明了方向——支持多个网络接口,具备更强大的计算能力,拥有更庞大的存储空间。终端不断增强的处理能力和通信能力能支持丰富多彩的多媒体业务,从而更加适应异构无线网络的通信环境。多模终端数量的增加,使多路径并行传输(CMT)技术的应用更加广泛。CMT支持多种网络并行接入,利用多个网络接口和多条路径并行地传输数据,从而获得较大的聚合吞吐量,提高传输效率。现有的CMT传输协议主要有两类:流传输控制协议(SCTP)和多路径TCP(MPTCP)协议。SCTP具有多宿性,常用于CMT;MPTCP是一种结合了TCP协议和CMT优点的方案,在研究领域被广泛关注。

然而,在异构无线网络环境下,现有的MPTCP协议并没有达到理想的传输效果,接收端的数据重组使得多路径并行传输存在很严重的问题。由于无线路径的时变性以及各路径之间的差异性(带宽、时延和丢包率等),使得通过多路径传输的数据包不能按序到达接收端,而应用层面对数据包次序性的要求使得接收端不得不对数据包进行缓存重组,再按序提交给应用层。传统的多路传输调度策略,如时间片轮转调度策略,会使得有限的接收缓冲区因为大量数据包的重排而被阻塞,接收缓冲区阻塞会限制部分路径的数据传输使其空闲,不仅降低了吞吐量,还增加了传输时延并会导致大量的数据包重传。因此,迫切需要一种有效的数据包调度方法来解决MPTCP接收缓冲区阻塞的问题。

本发明涉及了MPTCP方面内容,介绍如下:

MPTCP系统模型:如图1所示,MPTCP中存在一个发送端和一个接收端,发送端和接收端之间通过P条路径进行数据传输,将每条路径上建立的连接称为MPTCP的子流,所有子流的集合用p表示。发送端的数据包在发送缓冲区通过统一编号后由调度模块将数据包分发到各条子流上;各条子流通过TCP协议将数据包发送到接收端;接收端通过统一的接收缓冲区,将各条子流发送来的数据包进行缓存并重新排序,然后按序地将数据包递交给应用。

带宽测量:带宽是指通信路径单位时间内能发送的数据量,是衡量网速的指标。文献《pathChirp:Efficient Available Bandwidth Estimation for Network Paths》提供了一种称为pathChirp的带宽估计方法,pathChirp中每一个chirp由N个数据包组成,每个数据包的大小为S,数据包之间的发送间隔呈指数增长,记第k个数据包的发送间隔为△k,传输延时为qk,这个包的瞬时发送速率Rk=S/Δk,如果qk=qk-1,说明此时的发送速率小于等于路径带宽,否则,此时的发送速率大于路径带宽。pathChirp通过发送少量的探测数据可以准确地估计路径的可用带宽。



技术实现要素:

本发明针对现有MPTCP协议中数据包调度方法不当使得接收缓冲区阻塞从而导致传输性能不佳的问题,提出了一种抵抗MPTCP接收缓冲区阻塞的数据包调度方法,该方法首先基于网络状况分析接收缓冲区的数据包乱序情况,再进行数据包调度使得数据包在接收端顺序到达。

本发明方法具体步骤是:

步骤(1)获取子流i的带宽μi、往返时间RTTi和丢包率πi;具体是:

通过pathChirp算法获取子流i的带宽μi,通过TCP协议的SRTT机制获取子流i的往返时间RTTi,通过统计丢失的数据包个数和发送的数据包个数获取子流i的丢包率πi

步骤(2)对原始子流集合p中的各个子流按照往返时间RTT的值从大到小排序组成排序子流集合pavailable

步骤(3)选取pavailable中RTT值最大的子流imax,获得调度序号Seqselect和子流imax传输数据包的个数发送端从序号为Seqselect的数据包开始调度个数据包分配给子流imax

获得调度序号Seqselect和子流imax传输数据包的个数的方法是:

将发送端的发送缓冲区内未发送数据包中的最小数据包序号记为Seqmin,从序号Seqmin开始(包括Seqmin)连续未发送数据包中的最大数据包序号记为Seqmax,如果发送缓冲区中没有未发送的数据包,则将序号Seqmin置为下一个到达的数据包序号,序号Seqmax置为-1;

获得调度序号Seqselect

j为原始子流集合p中往返时间小于子流imax往返时间的子流;MSS为最大报文段长度,确立为每个数据包的大小;

获得子流imax传输数据包的个数

其中为子流imax的发送窗口大小。

步骤(4)将子流imax从集合pavailable中删除,重复执行步骤(3),直到pavailable为空。

本发明综合考虑了MPTCP中各子流的网络状况,通过分析各子流的差异性做出合理的数据包调度使得数据包顺序到达接收缓冲区。与现有的MPTCP调度方法相比,其优点体现在:

1、传统的MPTCP调度方法,如时间片轮转和最小RTT等方法,不根据接收缓冲区的阻塞情况进行调度,而且对数据包到达接收端的顺序不做规划,因此这些调度方法不能解决接收缓冲区阻塞的问题。而本发明综合考虑各条子流的网络状况,分析数据包通过各条子流到达接收端的时间,在发送端对数据包调度时进行合理规划,能有效解决接收缓冲区阻塞问题,提升MPTCP的传输性能;

2、新提出的一些DAPS和OTIAS等MPTCP数据包调度方法,在发送端对数据包的调度提前做出判决以解决接收缓冲区拥塞的问题,这些方法的弊端是提前做出判决后,子流不能及时地将分发到的数据包发送出去,特别是当子流发生丢包时会有大量的数据包阻塞在子流的发送缓冲区中,因此不能有效地应对网络的变化。而本发明充分从带宽、丢包率和时延等多方面考虑了各条子流的网络状况,对接收缓冲区阻塞进行充分分析然后做出合理的调度,同时考虑了网络变化的影响,因此能够有效地应对网络变化,从而提升MPTCP的传输性能。

附图说明

图1为抵抗MPTCP接收缓冲区阻塞的数据包调度方法系统架构图。

图2为本发明提供的MPTCP数据包调度流程图;

图3为两条子流的MPTCP模型示例图;

图4为MPTCP数据包调度序号示意图;

图5为两条子流的MPTCP数据包调度方法示例图。

具体实施方式

以下结合附图并举例对本发明做进一步详细说明。

如图1所示,本发明首先通过路径状态监测动态获取各子流的网络状况(带宽、时延和丢包率等)交由参数控制单元管理,数据包调度模块根据获取的网络状况对各子流进行数据包调度。

一种抵抗MPTCP接收缓冲区阻塞的数据包调度方法,具体流程如图2所示。

以两条子流的MPTCP传输模型为例进行说明,如图3所示,MPTCP中存在两条子流,编号为子流1和子流2,即所有子流集合p={1,2},发送端和接收端通过这两条子流相连。其中子流1的带宽μ1为6Mbps,往返时间RTT1为40ms;子流2的带宽μ2为1.5Mbps,往返时间RTT2为80ms,为了简化说明,这里暂不考虑丢包问题,假设两条子流的丢包率为零。MPTCP中的子流根据拥塞控制机制调整拥塞窗口,每个时刻拥塞窗口大小都有可能不同,在此选取某一时刻为代表进行举例说明。假定此时发送缓冲区中未发送的数据包最小序号Seqmin为101,最大序号为140,此时子流1的发送窗口为20(单位数据包),子流2的发送窗口为10(单位数据包),每个数据包的大小MSS为1500字节。调度示意过程参照附图5,本发明具体通过以下步骤实现:

步骤(1)获取子流带宽、往返时间和丢包率,得到子流1的带宽μ1为6Mbps,往返时间RTT1为40ms,丢包率π1为0;子流2的带宽μ2为1.5Mbps,往返时间RTT2为80ms,丢包率π2为0;

步骤(2)对原始子流集合p={1,2}集合中的子流按照RTT值从大到小排序得到排序子流集合pavailable={2,1};

如图4所示,步骤(3)选取排序子流集合pavailable={2,1}中RTT值最大的子流2,发送端从序号为Seqselect的数据包开始调度Num2个数据包分配给子流2,其中:

Num2=min{Seqmax-Seqselect+1,SWND2}

=min{140-121+1,10}=10

步骤(4)将子流2从集合pavailable中删除得到pavailable={1},重复执行步骤(3);

如图4所示,步骤(3)选取集合pavailable={1}中RTT值最大的子流1,发送端从序号为Seqselect的数据包开始调度Num1个数据包分配给子流1,其中:

Num1=min{Seqmax-Seqselect+1,SWND1}

=min{120-101+1,20}=20

步骤(4)将子流1从集合pavailable中删除得到pavailable为空集,此次调度结束。

等待子流1这一轮次传输完成,经过RTT1时间后,子流1的发送窗口为21(单位数据包),继续执行本发明的调度方法,具体如下:

步骤(1)获取子流带宽、往返时间和丢包率,得到子流1的带宽μ1为6Mbps,往返时间RTT1为40ms,丢包率π1为0;子流2的带宽μ2为1.5Mbps,往返时间RTT2为80ms,丢包率π2为0;

步骤(2)对原始子流集合p={1,2}集合中的子流根据RTT值从大到小排序得到排序子流集合pavailable={2,1};

如图4所示,步骤(3)选取集合pavailable={2,1}中RTT值最大的子流2,发送端从序号为Seqselect的数据包开始调度Num2个数据包分配给子流2,其中:

Num2=0,Seqselect>Seqmax

步骤(4)将子流2从集合pavailable中删除得到pavailable={1},重复执行步骤(3);

如图4所示,步骤(3)选取集合pavailable={1}中RTT值最大的子流1,发送端从序号为Seqselect的数据包开始调度Num1个数据包分配给子流1,其中:

Num1=min{Seqmax-Seqselect+1,SWND1}

=min{140-131+1,21}=10

步骤(4)将子流1从集合pavailable中删除得到pavailable为空集,此次调度结束。

至此,发送缓冲区中的数据已全部调度完毕,需要等待应用层数据到达,而后继续执行本发明的数据包调度方法。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1