欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 网络通信中的拥塞控制独创技术124258字

网络通信中的拥塞控制

2021-03-04 22:00:44

网络通信中的拥塞控制

  相关申请

  本申请要求2018年4月6日递交的发明名称为“TCP Congestion Control Basedon Packet Loss Prediction”的第62/654,023号美国临时申请案以及2019年2月25日递交的发明名称为“Congestion Control in Network Communications”的第62/810,134号美国临时申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。

  技术领域

  本公开通常涉及网络通信,并且在特定实施例中涉及网络通信中的拥塞控制。

  背景技术

  网络通信协议定义了电子设备相互通信的方式。传输控制协议(TransmissionControl Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。例如,TCP可以与互联网协议(Internet Protocol,IP)网络配合使用。

  通信网络(例如TCP/IP网络)中可能出现的一个问题是拥塞控制。当用户向网络发送的报文数量超过网络的处理能力时,就可能发生拥塞。一些网络通信协议(例如TCP)利用技术手段来尝试执行拥塞控制。拥塞控制协议是一种方案,其至少部分地决定何时发送新报文、重传报文和发送应答消息(acknowledgement,ACK)。拥塞控制算法有助于缓解拥塞,提高网络使用的效率和公平性。TCP拥塞控制协议的一般功能包括资源跟踪、拥塞避免和丢包恢复。拥塞信号可能来自报文接收机的ACK,并可能指示丢包和/或更长的往返时延。

  发明内容

  根据本公开的第一方面,一种传输控制协议(Transmission Control Protocol,TCP)拥塞控制方法包括:通信设备根据从通信网络接收到的第一信号确定第一网络状态。所述方法还包括:通信设备的丢包预测器根据第一网络状态确定第一报文的第一丢包预测。第一丢包预测指示第一报文通过通信网络来传输的情况下,第一报文将由于网络拥塞而丢失的可能性。所述方法还包括:通信设备至少根据第一丢包预测确定通过通信网络来传输第一报文。

  可选地,在所述第一方面的上述任一方面中,所述方法还包括:根据所述第一丢包预测确定是否增加或减小拥塞窗口变量的值。所述拥塞窗口变量的值表示拥塞窗口的大小。

  可选地,在所述第一方面的上述任一方面中,所述第一丢包预测包括第一丢包概率,所述第一丢包概率指示所述第一报文通过所述通信网络来传输的情况下,针对所述第一报文将会丢失的概率的估计。

  可选地,在所述第一方面的上述任一方面中,所述通信设备至少根据所述第一丢包预测确定通过所述通信网络来传输所述第一报文包括:确定所述第一丢包概率不超过丢包概率阈值;至少根据确定所述第一丢包概率不超过所述丢包概率阈值,确定通过所述通信网络来传输所述第一报文。

  可选地,在所述第一方面的上述任一方面中,所述方法还包括:响应于确定通过所述通信网络来传输所述第一报文,通过所述通信网络来传输所述第一报文。

  可选地,在所述第一方面的上述任一方面中,所述方法还包括:所述通信设备根据从所述通信网络接收到的第二信号确定第二网络状态;所述通信设备根据所述第二网络状态确定第二报文的第二丢包预测,其中所述第二丢包预测指示所述第二报文通过所述通信网络来传输的情况下,所述第二报文将会丢失的可能性;所述通信设备至少根据所述第二丢包预测确定不通过所述通信网络来传输所述第二报文。

  可选地,在所述第一方面的上述任一方面中,所述第二丢包预测包括第二丢包概率,所述第二丢包概率指示所述第二报文通过所述通信网络来传输的情况下,针对所述第二报文将会丢失的概率的估计。此外,所述通信设备至少根据所述第二丢包预测确定不通过所述通信网络来传输所述第二报文包括:确定所述第二丢包概率超过丢包概率阈值;至少根据确定所述第二丢包概率超过所述丢包概率阈值,确定不通过所述通信网络来传输所述第二报文。

  可选地,在所述第一方面的上述任一方面中,所述方法还包括:至少根据确定所述第二丢包概率超过所述丢包概率阈值,减小拥塞窗口变量的值,其中所述拥塞窗口变量的值指示拥塞窗口的大小。

  可选地,在所述第一方面的上述任一方面中,所述方法还包括:对所述丢包预测器进行监督训练。

  可选地,在所述第一方面的上述任一方面中,对所述丢包预测器进行监督训练包括:通过在网络模拟器上进行模拟,收集训练数据,用于训练所述丢包预测器;根据所述训练数据训练模型;根据训练得到的模型将网络状态与各自的丢包概率相关联。

  可选地,在所述第一方面的上述任一方面中,所述第一信号是所述通信设备响应于所述通信设备先前的报文传输而接收到的应答消息(acknowledgement,ACK)。

  可选地,在所述第一方面的上述任一方面中,所述第一网络状态表示为状态向量,用于表示所述网络的拥塞状况。

  可选地,在所述第一方面的上述任一方面中,所述状态向量包括以下值:应答消息(acknowledgement,ACK)到达间隔时间的指数加权移动平均值(exponentially weightedmoving average,EWMA),其中所述第一信号是ACK;报文发送间隔时间的EWMA;当前往返时延(round-trip time,RTT)与最小RTT的比值;慢启动阈值;拥塞窗口大小;或者ACK到达间隔时间的EWMA、报文发送间隔时间的EWMA、当前RTT与最小RTT的比值、慢启动阈值以及拥塞窗口大小的组合。

  根据本公开的第二方面,一种传输控制协议(Transmission Control Protocol,TCP)拥塞控制系统包括:包含指令的非瞬时性存储器;与所述存储器通信的一个或多个处理器。所述一个或多个处理器用于执行所述指令以执行所述第一方面的上述任一方面中的方法。

  根据本公开的第三方面,提出了一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储用于传输控制协议(Transmission Control Protocol,TCP)拥塞控制的计算机指令,当所述计算机指令由一个或多个处理器执行时,使得所述一个或多个处理器执行所述第一方面的上述任一方面中的方法。

  根据本公开的第四方面,一种传输控制协议(Transmission Control Protocol,TCP)拥塞控制系统包括:用于通信设备根据从通信网络接收到的第一信号确定第一网络状态的装置。所述系统还包括:用于所述通信设备的丢包预测器根据所述第一网络状态确定第一报文的第一丢包预测的装置。第一丢包预测指示第一报文通过通信网络来传输的情况下,第一报文将由于网络拥塞而丢失的可能性。所述系统还包括:用于所述通信设备至少根据所述第一丢包预测确定通过所述通信网络来传输所述第一报文的装置。

  根据本公开的第五方面,一种传输控制协议(Transmission Control Protocol,TCP)拥塞控制方法包括:通信设备根据第一效用值和第二效用值确定第一动作的奖励。所述第一效用值通过效用函数确定,对应于第一时间到第二时间的第一时段。所述第二效用值通过所述效用函数确定,对应于所述第二时间到第三时间的第二时段。所述第一动作和所述第一时间相对应,是多个动作中的一个。所述多个动作中的每个动作包括将通信网络的拥塞窗口变量的值修改相应量。所述拥塞窗口变量的值表示拥塞窗口的大小。所述方法还包括:所述通信设备更新第一值函数,其中所述第一值函数指示与第一网络状态和所述第一动作相关联的第一期望值。所述第一值函数根据所述奖励和第二值函数进行更新,其中所述第二值函数指示与第二网络状态和第二动作相关联的第二期望值,所述第二动作是所述多个动作中的一个。所述第一网络状态对应所述第一时间,所述第二网络状态和所述第二动作对应所述第二时间所述方法还包括:所述通信设备根据更新后的第一值函数确定所述多个动作中的第三动作。所述方法还包括:根据所述第三动作更新所述拥塞窗口变量。

  可选地,在所述第五方面的上述任一方面中,所述第二时间与所述第一时间的差值至少为所述通信网络中第一报文的往返时延,所述第三时间与所述第二时间的差值至少为所述通信网络中第二报文的往返时延。

  可选地,在所述第五方面的上述任一方面中,所述通信设备根据所述第一效用值和所述第二效用值确定所述奖励至少部分地根据以下情况执行:确定所述第三时间与所述第二时间的差值大于或等于往返时延。

  可选地,在所述第五方面的上述任一方面中,所述方法还包括:在根据所述第三动作更新所述拥塞窗口变量之前,至少更新所述拥塞窗口变量两次。

  可选地,在所述第五方面的上述任一方面中,满足以下各项其中之一:所述第一动作和所述第二动作相同;所述第一动作和所述第三动作相同;所述第二动作和所述第三动作相同;所述第一动作、所述第二动作和所述第三动作相同。

  可选地,在所述第五方面的上述任一方面中,满足以下各项其中之一:所述第一动作和所述第二动作不同;所述第一动作和所述第三动作不同;所述第二动作和所述第三动作不同;所述第一动作、所述第二动作和所述第三动作不同。

  可选地,在所述第五方面的上述任一方面中,所述第一、第二和第三网络状态分别表示为相应的状态向量,用于表示所述通信网络的拥塞状况。

  可选地,在所述第五方面的上述任一方面中,每个状态向量包括以下值:应答消息(acknowledgement,ACK)到达间隔时间的指数加权移动平均值(exponentially weightedmoving average,EWMA);报文发送间隔时间的EWMA;当前往返时延(round-trip time,RTT)与最小RTT的比值;慢启动阈值;所述拥塞窗口变量的当前值;或者ACK到达间隔时间的EWMA、报文发送间隔时间的EWMA、当前RTT与最小RTT的比值、慢启动阈值以及所述拥塞窗口变量的当前值的组合。

  可选地,在所述第五方面的上述任一方面中,使用效用函数确定的所述第二效用值为吞吐量、时延和丢包率的函数。

  可选地,在所述第五方面的上述任一方面中,所述效用函数为:

  

  其中,tp为吞吐量,B为所述通信网络中的瓶颈带宽,d为计算得到的时延,即当前往返时延(round-trip time,RTT)与最小RTT的差值,p为丢包率,δ1和δ2为可调系数。

  可选地,在所述第五方面的上述任一方面中,针对所述多个动作中的动作,所述拥塞窗口变量的相应修改量为-1、0、+1或+3。

  可选地,在所述第五方面的上述任一方面中,所述值函数是使用状态-动作-奖励-状态-动作(State-Action-Reward-State-Action,SARSA)时间差学习算法训练得到的Q函数。

  可选地,在所述第五方面的上述任一方面中,所述第一值函数更新为:

  

  其中,表示y1=(1-α)y1+αy2;si,ai,ri为状态、动作和奖励变量,用于存储在时段i开始时计算得到的相应值;αt为根据时间t(例如单位为秒)的学习率;γ为贴现因子;n-1为所述第一时间,n为所述第二时间,n+1为所述第三时间。

  可选地,在所述第五方面的上述任一方面中,满足以下各项:

  

  rn+1计算如下:

  Δn+1=Un+1-Un;

  其中,Un+1为所述第二效用值,Un为所述第一效用值。

  可选地,在所述第五方面的上述任一方面中,所述方法还包括:在所述第一时间确定所述第一网络状态;在所述第二时间确定所述第二网络状态。

  可选地,在所述第五方面的上述任一方面中,所述方法还包括:响应于接收到传输信号,确定第三网络状态。所述信号是所述通信设备响应于所述通信设备先前的报文传输而接收到的应答消息(acknowledgement,ACK)。

  可选地,在所述第五方面的上述任一方面中,所述第三动作还根据∈-贪心探索-探索(∈-greedy exploration-exploitation,E2)方案确定。

  根据本公开的第六方面,一种传输控制协议(Transmission Control Protocol,TCP)拥塞控制系统包括:包含指令的非瞬时性存储器;与所述存储器通信的一个或多个处理器。所述一个或多个处理器用于执行所述指令以执行所述第五方面的上述任一方面中的方法。

  根据本公开的第七方面,提出了一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储用于传输控制协议(Transmission Control Protocol,TCP)拥塞控制的计算机指令,当所述计算机指令由一个或多个处理器执行时,使得所述一个或多个处理器执行所述第五方面的上述任一方面中的方法。

  根据本公开的第八方面,一种传输控制协议(Transmission Control Protocol,TCP)拥塞控制系统包括:用于通信设备根据第一效用值和第二效用值确定第一动作的奖励的装置。所述第一效用值通过效用函数确定,对应于第一时间到第二时间的第一时段。所述第二效用值通过所述效用函数确定,对应于所述第二时间到第三时间的第二时段。所述第一动作和所述第一时间相对应,是多个动作中的一个。所述多个动作中的每个动作包括将通信网络的拥塞窗口变量的值修改相应量。所述拥塞窗口变量的值表示拥塞窗口的大小。所述系统还包括:用于所述通信设备更新第一值函数的装置,其中所述第一值函数指示与第一网络状态和所述第一动作相关联的第一期望值。所述第一值函数根据所述奖励和第二值函数进行更新,其中所述第二值函数指示与第二网络状态和第二动作相关联的第二期望值,所述第二动作是所述多个动作中的一个。所述第一网络状态对应所述第一时间,所述第二网络状态和所述第二动作对应所述第二时间所述系统还包括:用于所述通信设备根据更新后的第一值函数确定所述多个动作中的第三动作的装置。所述系统还包括:用于根据所述第三动作更新所述拥塞窗口变量的装置。

  在某些实施例中,基于丢包预测器的TCP(loss predictor-based TCP,LP-TCP)拥塞控制机制预测和减少丢包事件,减少发送速率降低的频率,并争取获得比传统拥塞控制技术更高的吞吐量。在某些实施例中,当网络模型或多或少保持固定时,基于丢包预测器的TCP拥塞控制机制特别有效,然而本公开设想所述基于丢包预测器的TCP拥塞控制机制在任何合适的环境中都能良好地执行。

  在某些实施例中,基于强化学习的TCP(reinforcement learning-based TCP,RL-TCP)拥塞控制机制的目的在于提高吞吐量、时延和丢包率的函数。在某些实施例中,基于强化学习的TCP拥塞控制机制在吞吐量和时延之间提供了适当的权衡。在某些实施例中,基于强化学习的TCP拥塞控制机制在网络拓扑和/或其他网络参数发生变化的环境中特别有效,然而本公开设想所述基于强化学习的TCP拥塞控制机制在任何合适的环境中都能良好地执行。

  附图说明

  为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:

  图1示出了根据本公开某些实施例的基于学习的TCP拥塞控制的示例性系统。

  图2示出了根据本公开某些实施例的针对各种网络设置的根据判定阈值th的LP-TCP拥塞控制方案的F1分数的图。

  图3示出了根据本公开某些实施例的LP-TCP拥塞控制的示例性方法。

  图4示出了根据本公开某些实施例的用于训练通信设备的学习引擎以进行LP-TCP拥塞控制的示例性方法。

  图5示出了根据本公开某些实施例的RL-TCP拥塞控制的示例性方法。

  图6示出了根据本公开某些实施例的示例性哑铃拓扑。

  图7示出了根据本公开某些实施例的在一次模拟期间,基于Q学习的TCP(Q-learning based TCP,Q-TCP)、基于信用分配的Q-TCP(Q-TCP with credit assignment,Q-TCPca)、无信用分配的RL-TCP(RL-TCP with no credit assignment,RL-TCPno-ca)和RL-TCP拥塞控制方案中拥塞窗口大小的变化。

  图8示出了根据本公开某些实施例的用于执行本文所述方法的实施例处理系统的框图,实施例处理系统可以安装在主机设备中。

  图9示出了根据本公开某些实施例的用于通过电信网络发送和接收信令的收发器的框图。

  具体实施方式

  如上所述,在诸如TCP/IP网络的网络中,促进网络用户之间高效和公平地共享网络资源的一种机制就是拥塞控制方案,例如TCP拥塞控制方案。一些TCP拥塞控制技术根据对网络的假设,将拥塞窗口(congestion window,cwnd)上的预定义动作硬连线到特定反馈信号,例如丢包和/或往返时延(round-trip time,RTT)信号。对指示拥塞的信号的反应可能包括增加或减小cwnd大小。例如,基于丢包的TCP可能将cwnd减小一半,并在三个重复的ACK中重传丢失的报文。然而,随着网络变得更加复杂,确定最佳反馈/动作映射变得更加困难。

  一些TCP拥塞控制技术,例如NewReno和Vegas,是为以太网设计的,后来随着网络的发展,出现了“高带宽”和“有损链路”等问题。其他TCP拥塞控制方案包括CUBIC和Compound。CUBIC根据三次函数增加其cwnd,这可能有助于在响应丢包事件而减小cwnd之后恢复cwnd,以及在检测到网络上限增加时扩展cwnd。Compound除了对丢包事件作出反应外,还对信号时延作出反应,并采用可伸缩的cwnd增加规则来响应往返时延的变化。自适应拥塞控制是专为不可预测的蜂窝网络设计的,它建立时延谱,并使用时延测量来对蜂窝网络中容量的变化作出反应。

  本公开实施例提供了基于学习的拥塞控制技术。例如,本公开实施例提供了一种基于丢包预测器的TCP拥塞控制机制。作为另一个示例,本公开实施例提供了一种基于强化学习的TCP拥塞控制机制。在整个说明书和附图中,拥塞控制可以简称为CC,基于丢包预测器的TCP拥塞控制机制可以简称为LP-TCP拥塞控制(或LP-TCP CC)机制,基于强化学习的TCP拥塞控制机制可以简称为RL-TCP拥塞控制(或RL-TCP CC)机制。

  在TCP拥塞控制的环境中,机器学习用于区分拥塞和非拥塞丢包,并且据称也被用于改进往返时延估计。提出了一种拥塞控制协议,将多用户拥塞控制问题形式化为部分可观测的马尔可夫决策过程(partially observable Markov decision process,POMDP),并离线学习最优策略。这可能涉及大量的离线计算,其性能可能与网络和流量模型的准确性密切相关。提出了另一种拥塞控制协议,根据连续执行的“微实验”自适应地调整发送速率,但该提议完全基于速率,其性能与时钟的准确性密切相关。提出了另一种拥塞控制协议,尝试利用Q学习来设计TCP拥塞控制协议,但是奖励、探索-探索(exploit-exploration,E2)方案和状态的选择相对来说比较基本,并且仅证实了它针对单个发送机或两个发送机的效果。

  硬连接和网络模型特定的TCP拥塞控制设计的一个问题在于,如果出现新的网络技术,这种设计可能需要改进甚至重新设计,现代计算机网络很可能就是这种情况。另一个问题在于,这种设计通常是机制驱动的,而不是目的驱动的。同时,基于丢包的TCP拥塞控制协议,例如TCP Tahoe、Reno、NewReno、CUBIC、Compound等,在丢包时可以减小cwnd,并慢慢找到新的网络上限。此过程可能导致带宽利用不足。一些基于学习的TCP通过离线优化找到cwnd的最佳变化,复杂度高。Q学习TCP可能需要较长的在线训练时间,才能学习到合适的Q函数。

  为了解决上述问题中的部分或全部,或者不以解决上述问题为目的,本公开实施例利用监督学习和强化学习为有线网络提供基于学习的TCP拥塞控制协议。

  基于观察到丢包导致cwnd减小和吞吐量减少,某些实施例提供了基于丢包预测器的TCP拥塞控制,旨在最小化每个发送机的丢包率。监督学习可用于通过网络交互来训练报文LP,并可用于在每个报文发送之前预测是否会发生丢包。准确地预测丢包可以避免减小cwnd,从而可以提高流吞吐量。

  在某些实施例中,通信网络中的TCP拥塞控制方法结合LP-TCP CC机制,包括:通信设备根据从网络接收到的信号确定网络状态。所述方法还包括:通信设备的丢包预测器根据网络状态确定报文的丢包预测。丢包预测指示报文通过网络来传输的情况下,报文将由于网络拥塞而丢失的可能性。所述方法还包括:通信设备至少根据丢包预测确定通过网络来传输报文。

  丢包预测可以预测拥塞,主动避免拥塞。也就是说,所公开的TCP拥塞控制协议的实施例是基于“预测拥塞”的思路。根据经验,所公开的TCP代理在发送当前报文之前评估“丢包的可能性”。从而得到TCP拥塞控制代理,它尽可能避免在拥塞悬崖(cliff)处运行,提高了瓶颈吞吐量,并减少了快速恢复的次数。

  所公开的TCP拥塞控制协议的实施例可以实现为网络模拟器2(NetworkSimulator 2,NS2)中的TCP NewReno的修改版本,所公开的TCP拥塞控制协议的实施例中的吞吐量、时延、丢包率(packet loss rate,PLR)可以与模拟有线网络中的TCP NewReno的吞吐量、时延、PLR进行比较。通过适当的训练,RL-TCP拥塞控制相较于TCP NewReno性能更优,而LP-TCP在平均吞吐量和PLR上优于NewReno。

  在某些实施例中,基于丢包预测器的TCP拥塞控制机制预测和减少丢包事件,减少发送速率降低的频率,并争取获得比传统拥塞控制技术更高的吞吐量。在某些实施例中,当网络模型或多或少保持固定时,基于丢包预测器的TCP拥塞控制机制特别有效,然而本公开设想所述基于丢包预测器的TCP拥塞控制机制在任何合适的环境中都能良好地执行。

  当网络拓扑和参数发生变化时,可能需要重新训练新的报文LP。因此,另一实施例提供了基于强化学习的TCP拥塞控制的设计,其具有精心设计的奖励、E2方案和状态,以优化发送机的平均吞吐量时延比。在这些实施例中,可以将丢包视为拥塞信号。

  在某些实施例中,通信网络中的TCP拥塞控制方法可以结合RL-TCP CC机制,包括:通信设备根据第一效用值和第二效用值确定对第一动作的奖励。所述第一效用值通过效用函数确定,对应于第一时间到第二时间的第一时段。所述第二效用值通过所述效用函数确定,对应于所述第二时间到第三时间的第二时段。第一动作对应第一时间,是多个动作中的一个,多个动作中的每个动作包括将通信网络的拥塞窗口变量的值修改相应量,拥塞窗口变量的值表示拥塞窗口的大小。所述方法还包括:所述通信设备更新第一值函数,其中所述第一值函数指示与第一网络状态和所述第一动作相关联的第一期望值。所述第一值函数根据所述奖励和第二值函数进行更新,其中所述第二值函数指示与第二网络状态和第二动作相关联的第二期望值,所述第二动作是所述多个动作中的一个。第一网络状态对应第一时间,第二网络状态和第二时间对应第二动作。所述方法还包括:所述通信设备根据更新后的第一值函数确定所述多个动作中的第三动作。所述方法还包括:根据所述第三动作更新所述拥塞窗口变量。

  在某些实施例中,基于强化学习的TCP拥塞控制机制的目的在于提高吞吐量、时延和丢包率的函数。在某些实施例中,基于强化学习的TCP拥塞控制机制在吞吐量和时延之间提供了适当的权衡。在某些实施例中,基于强化学习的TCP拥塞控制机制在网络拓扑和/或其他网络参数发生变化的环境中特别有效,然而本公开设想所述基于强化学习的TCP拥塞控制机制在任何合适的环境中都能良好地执行。

  下面对某些实施例的结构、制造和使用进行详细描述。然而,应理解,本公开提供了许多适用的新概念,这些新概念可以体现在多种具体的环境中。所描述的具体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的范围。

  例如,本公开的技术将在传输控制协议(transmission control protocol,TCP)的环境中描述。然而,应注意,本公开的技术可以应用于TCP的不同变体和风格以及具有拥塞控制组件的TCP和其他网络协议的替代方案。在以下描述中,阐述了许多具体细节,以便提供对本公开的透彻理解。本公开可以在没有这些具体细节中的一些或全部的情况下实施。在其他情况下,未详细描述公知的过程操作,以避免不必要地模糊本公开。

  图1示出了根据本公开某些实施例的基于学习的TCP拥塞控制的示例性系统100。系统100包括通信设备102和网络104。

  通信设备102可以是任何能够通过通信网络进行通信的处理设备(或者可以是处理设备的一部分)。作为特定示例,通信设备102可以是终端用户设备(或者可以是终端用户设备的一部分),例如固定电话、移动电话、智能手机、台式或膝上型电脑、平板电脑、电视或任何其他合适类型的电子终端用户设备。作为又一示例,通信设备102可以是网络设备(或者可以是网络设备的一部分),例如交换机、路由器、网关、基站或任何其他合适类型的电子网络设备。在某些实施例中,通信设备100的全部或部分可以称为TCP CC代理或简称为代理。

  在所示的示例中,通信设备102包括处理器106、存储器108、传感引擎110、学习引擎112、执行器引擎114和发送引擎116。下面将分别描述这些示例性组件。

  处理器106包括硬件、固件和软件的任意组合,所述硬件、固件和软件的任意组合运行以控制和处理信息。处理器106可以是可编程逻辑器件、中央处理器、微控制器、微处理器、数字信号处理器、现场可编程门阵列、专用集成电路、任意处理设备或上述任意组合。处理器106可用于读取和处理存储器108中存储的指令。尽管图示为单个功能单元,但本公开设想移动设备包括任意合适数量的处理器。

  存储器108永久或临时存储数据、操作指令(例如软件)或由处理器106访问和/或执行的其他信息。存储器108包括用于存储信息的易失性或非易失性本地或远程设备中的任意一种或其组合。例如,存储器108可以包括静态或动态随机存取存储器(random accessmemory,RAM)、只读存储器(read-only memory,ROM)、磁存储设备、光学存储设备、硬盘、用户识别模块(subscriber identity module,SIM)卡、记忆棒、安全数字(secure digital,SD)存储卡、任何其他信息存储设备或这些设备的组合。在某些实施例中,存储器108的至少一部分是非瞬时性的。尽管示出了单个存储器108,但通信设备102可以包括任意数量的存储器108。在其他潜在信息中,存储器108存储由处理器106执行的程序,以使得处理器106执行与通信设备102相关联的操作。

  通信设备102可以通过网络104与其他设备(例如其他通信设备102)通信。网络104有利于无线或有线通信。网络104可以在网络地址之间传输例如互联网协议(Internetprotocol,IP)包、帧中继帧、异步传输模式(Asynchronous Transfer Mode,ATM)信元、语音、视频、数据和其他合适的信息。网络104可以包括一个或多个局域网(local areanetwork,LAN),无线接入网(radio access network,RAN),城域网(metropolitan areanetwork,MAN),广域网(wide area network,WAN),移动网络(例如使用蓝牙、全球微波接入互操作性(WiMax)(802.16)、无线保真(Wi-Fi)(802.11)、3G、4G、5G、长期演进(Long-TermEvolution,LTE)、5G新无线(New Radio,NR)或任何其他合适的无线技术的任意组合),称为互联网的全球计算机网络的全部或一部分,和/或在一个或多个位置的任何其他通信系统,其中任何一种通信系统可以是无线和有线的任何合适的组合。

  现在将描述传感引擎110、学习引擎112、执行器引擎114和发送引擎116。传感引擎110、学习引擎112、执行器引擎114和发送引擎116可以使用硬件、固件和软件的任何合适的组合来实现。在某些实施例中,传感引擎110、学习引擎112、执行器引擎114和发送引擎116的一部分或全部在存储器108(或通信装置102可访问的其他合适的存储器位置)中存储的软件中实现,从而由处理器106执行以实现与每个引擎相关联的各个操作。尽管分别描述,但传感引擎110、学习引擎112、执行器引擎114和发送引擎116可以采用任何合适的方式在物理上或功能上进行组合。

  通常,传感引擎110感测和收集来自网络104的信号,处理这些信号,并输出表示当前网络状态的值的阵列。学习引擎112可以包括在线学习算法或学习得到的模型,其接收当前网络状态并根据网络状态输出某些“知识”。执行器引擎114根据学习引擎112输出的“知识”决定采取什么动作。发送引擎116根据执行器引擎114给出的命令发送报文。

  传感引擎110从网络104接收信号118。在某些实施例中,信号118是响应于通信设备102的报文120的先前传输而接收到的应答消息(acknowledgement,ACK)。出于本文的目的,将假设由通信设备102分别接收或传输的信号118和报文120是TCP信号。然而,如上所述,在适当的情况下,本公开设想传输或接收其他类型的信号。在整个说明书中,信号118可称为应答消息或ACK 118。此外,在整个说明书中,根据上下文,信号118和报文120可以是单数或复数形式。

  在某些实施例中,信号118与往返时延相关联。例如,信号118可以包括往返时延。此外或可替代地,传感引擎110可以根据信号118中包括的信息确定与信号118相关联的往返时延。传感引擎110可以计算反映网络104的拥塞水平的统计信息。这些统计信息可以包括报文的发送间隔时间、ACK的到达间隔时间和往返时延。在某些实施例中,与ACK相关联的往返时延是通信设备102传输特定报文120的时间(例如根据通信设备102可访问的时钟)和设备102接收到另一设备响应于特定报文120而发送的ACK(例如信号118)的时间(例如根据通信设备102可访问的时钟)之间的差值。在某些实施例中,ACK到达间隔时间,或者更一般地,信号到达间隔时间,是指通信设备102接收信号118(例如ACK)的时间间隔。在某些实施例中,报文发送间隔时间是指通信设备102发送报文120的时间间隔。传感引擎110可适当计算其他量。

  传感引擎110可以处理信号118,结合信号118和通信设备102维护的变量,并输出当前网络状态的表示(例如阵列或向量),其可以用来反映网络104的当前拥塞状态。网络状态可以使用合适的数据结构来表示。在某些实施例中,当接收到新的信号118(例如新的ACK)时,网络状态表示为特征阵列,用于表示网络104的拥塞状况。例如,特征阵列可以是长度为55的特征阵列,然而本公开设想特征阵列可以具有任何合适的长度。在某些实施例中,当接收到新的信号118(例如新的ACK)时,网络状态表示为状态向量,用于表示网络104的拥塞状况。例如,状态向量可以是长度为5的状态向量,然而本公开设想状态向量可以具有任何合适的长度。表示状态的数据结构(例如状态阵列或向量)可以包括任意值。

  学习引擎112充当通信设备102的“大脑”(用于拥塞控制目的),学习特定状态和可能动作之间的复杂关系。根据传感引擎110上报的当前状态(例如当前网络状态和/或其他信息),学习引擎112可以提示执行器引擎114采取适当的动作。学习引擎112的正确设计和训练可以促进良好地执行基于学习的拥塞控制方案。在训练阶段,学习引擎112通过与环境的交互来学习,以便优化目标。在测试阶段中,学习引擎112应用其学习得到的知识,并且可以根据具体设计来更新或者不更新其知识。在某些实施例中,学习引擎112包括在线学习引擎或学习得到的模型。学习引擎112可以获取当前网络状态(例如由传感引擎110确定),并输出基于当前网络状态的预测。

  执行器引擎114可以根据学习引擎112的预测采取动作。例如,执行器引擎114可以从学习引擎112接收信息,并根据接收到的信息确定适当的动作。作为另一个示例,执行器引擎114从学习引擎112接收到的信息可以标识特定动作,执行器引擎114可以使得通信设备102的另一元件(例如发送引擎116)执行所述动作。例如,执行器引擎114输出的动作可以是改变拥塞窗口和/或发送速率。

  发送引擎116可以根据执行器引擎114的指示采取动作。例如,如果执行器引擎114指示发送引擎116发送报文120,则发送引擎120可以发送报文120。

  报文120可以包括可以通过网络104传输的任何合适类型的数据项。在某些实施例中,报文120是根据TCP传输的IP报文。

  如上所述,系统100可以实现LP-TCP拥塞控制机制、RL-TCP拥塞控制机制或两者。下面结合系统100更详细地分别描述这些拥塞控制算法。在某些实施例中,基于学习的TCP拥塞控制方案基于NewReno,这意味着可以利用NewReno的慢启动、快速重传和快速恢复。然而,应注意,本发明并不限于使用NewReno,因为可以使用其他合适的拥塞控制方案来实现所公开的LP-TCP和RL-TCP拥塞控制机制。

  LP-TCPCC

  LP-TCP拥塞控制基于监督学习,有利于避免拥塞。TCP NewReno将丢包视为网络拥塞的信号。每次发生丢包时,NewReno都会降低发送速率(例如通过将拥塞窗口大小减半),从而可以降低吞吐量。在一些场景中,该流可能未充分利用缓冲不足网络(例如网络104)中的瓶颈带宽。在某些实施例中,LP-TCP拥塞控制设计试图最小化每个发送机(通信设备102)的丢包率。LP-TCP拥塞控制可以预测和减少丢包事件,减少发送速率降低的频率,并争取更高的吞吐量。监督学习可用于在通信设备102中构建丢包预测器,以预测发送报文(例如报文120)时,是否将会由于拥塞而发生丢包。如果存在拥塞丢包的情况并且是可预测的,则可以避免拥塞丢包,并可以提高流吞吐量。

  对于LP-TCP拥塞控制,学习引擎112可以根据从传感引擎110接收到的当前网络状态进行丢包预测,并通知执行器引擎114报文(例如报文120)通过网络104来发送的情况下,将会丢失的可能性。在某些实施例中,如果报文(例如报文120)丢失的概率高于阈值,则执行器引擎114不使发送引擎116发送报文(例如报文120)。在该场景中,执行器引擎114可以适当地将拥塞窗口大小减小适当量(例如1)。在某些实施例中,如果报文(例如报文120)丢失的概率小于或等于阈值,则执行器引擎114使得发送引擎116发送报文(例如报文120)。与本示例相反地,如果用于特定实现方式,则本公开设想概率等于阈值和概率超过阈值的情况下采取相似的处理。

  传感引擎110可接收信号118作为输入。信号118可以是针对通信设备102先前发送的报文120的ACK。传感引擎110可以响应于接收信号118(例如ACK)来确定网络104的当前网络状态。传感引擎110确定的当前网络状态可以用于反映网络104的当前拥塞状态。传感引擎110可以根据信号118(例如接收到的ACK)和/或通信设备102确定和/或维护的一个或多个其他变量来确定当前网络状态。

  传感引擎110可以采用任何合适的方式获取网络104的当前网络状态,例如使用合适类型的数据结构。仅作为一个示例,传感引擎110可以将网络104的当前网络状态表示为特征阵列,例如长度为55的特征阵列。在某些实施例中,可以使用以下值的任何适当组合来获取网络104的当前网络状态:当前拥塞窗口大小、拥塞窗口内当前报文(例如待发送的报文120)的顺序、ACK到达间隔时间的指数加权移动平均(exponentially weighted movingaverage,EWMA)、ACK到达间隔时间的时间序列、ACK到达间隔时间的最小值、报文发送间隔时间的EWMA、报文发送间隔时间的时间序列、报文发送间隔时间的最小值、往返时延的时间序列、往返时延的最小值、ACK到达间隔时间的比值的时间序列、报文发送间隔时间的比值的时间序列、往返时延的比值的时间序列、慢启动阈值以及任何其他合适的变量。在某些实施例中,变量的时间序列包括该变量的八个最新样本,然而本公开设想可以使用任何合适数量的样本来计算变量的时间序列。在某些实施例中,根据通信设备102发送的报文120而不是接收到的信号118(例如ACK)的时间戳来计算报文发送间隔时间(以及依赖于它的特征)。传感引擎110可以向学习引擎112提供所确定的网络104的当前网络状态。

  学习引擎112可以从传感引擎110接收网络104的当前网络状态。例如,学习引擎112可以接收由传感引擎110确定的特征阵列。学习引擎112可以根据当前网络状态确定下一个报文120通过网络104来传输的情况下,针对丢包概率的估计。在某些实施例中,所确定的丢包概率反映了下一个报文120通过网络104来传输的情况下,下一个报文120将会丢失的可能性。作为特定示例,所确定的丢包概率可以是百分比值,其中较高百分比反映出下一个报文120通过网络104来传输的情况下,下一个报文120将会丢失的可能性更大。在某些实施例中,为了确定下一个报文120通过网络104来传输的情况下的丢包概率,学习引擎112根据其受到的训练来评估网络104的当前网络状态。下面将更详细地描述这种训练的示例。训练的结果可以是将网络104的可能状态映射到特定的丢包概率,使得学习引擎112可以根据网络104的当前网络状态确定丢包概率。学习引擎112可以向执行器引擎114提供所确定的丢包概率。

  执行器引擎114可以从学习引擎112接收所确定的丢包概率。执行器引擎114可以根据丢包概率确定适当的动作。在某些实施例中,如果报文(例如报文120)丢失的概率高于阈值,则执行器引擎114不使发送引擎116发送报文(例如报文120)。在该场景中,执行器引擎114可以适当地将拥塞窗口大小减小适当量(例如1)。在某些实施例中,如果报文(例如报文120)丢失的概率小于或等于阈值,则执行器引擎114使得发送引擎116发送报文(例如报文120)。与本示例相反地,如果用于特定实现方式,则本公开设想概率等于阈值和概率超过阈值的情况下采取相似的处理。执行器引擎114输出是否发送报文120。

  此外或可替代地,执行器引擎114可以确定是否调整拥塞窗口大小。例如,如果执行器引擎114确定发送报文120,则执行器引擎可以将拥塞窗口大小增加1/W。尽管主要描述了将拥塞窗口大小增加特定量(1/W),但是本公开设想如果执行器引擎114确定发送报文120,则可以将拥塞窗口大小增加其他量或者使拥塞窗口保持相同大小。作为另一个示例,如果执行器引擎114确定不发送报文120,则执行器引擎可以使拥塞窗口大小减小1。执行器引擎114可以提供是否将报文120发送到发送引擎116的决策。

  发送引擎116从执行器引擎114接收该决策并根据该决策采取动作。例如,如果执行器引擎114的决策指示报文120应该通过网络104来传输,则发送引擎116使得报文120通过网络104来传输。作为另一个示例,如果执行器引擎114的决策指示报文120不应通过网络104来传输,则发送引擎116不使报文120通过网络104来传输。

  在LP-TCP拥塞控制机制中,学习引擎112是丢包预测器。例如,学习引擎112接收网络104的当前网络状态作为输入,并预测发送待发送报文120的情况下,待发送报文120将由于拥塞而丢失的概率。学习引擎112使用监督学习技术来构建。例如,监督学习技术可以是随机森林学习技术。虽然本公开侧重于监督学习技术是随机森林学习技术的实施例,但是本公开设想使用任何合适的监督学习技术来训练学习引擎112。为了学习,具有LP-TCP拥塞控制能力的通信设备102工作在训练和测试两个阶段。

  在训练阶段,使用训练数据训练通信设备102的学习引擎112。训练阶段包括两个步骤:训练集生成步骤和训练步骤。下面将分别介绍每个步骤。

  首先,传感引擎110生成训练集。在某些实施例中,通过在NS2上运行的NewReno模拟来收集用于训练学习引擎112的训练数据。每个训练向量(或其他合适的数据结构)包括每个报文发送时的发送机状态以及与该报文的传送结果相对应的标签。当收到ACK和发送报文时更新发送机状态。换言之,当发送报文120时(在模拟期间),网络104的当前网络状态记录为传输报文120之前的特征向量(或其他合适的数据结构)。如果报文120传送成功(例如根据是否接收到报文120的相应ACK确定),针对该状态(发送报文120时)的特征向量分配相应的标签0;否则,标签为1(例如指示丢包)。当然,本公开设想适当地采用不同的标签值。由于丢包事件通常比非丢包事件发生的频率低,因此当在训练数据中检测到足够多的丢包时,可以终止训练数据的收集。根据特定的实现方式,丢包的适当数量可以是任何合适的数量。仅作为一个特定示例,训练数据收集可以持续约5000秒。

  然后,使用这些训练数据训练随机森林模型(或其他适当的监督训练模型)。例如,可以使用训练数据离线训练随机森林分类器并将其安装到学习引擎112中。对于表示特定状态的任何特征向量(或其他合适的数据结构),模型输出发送报文120的情况下,针对丢包概率的估计,这是森林中决策树的平均预测。随机森林分类器(学习引擎112)提供软输出,对应于发送报文的情况下,将会发生丢包的概率。

  根据反馈ACK中记录的时间戳确定长度为55的特征向量(或其他合适的数据结构),其中包含当前拥塞窗口、连续ACK时间间隔的EWMA、连续发送时间间隔的EWMA以及任何其他合适的信息。该数据结构输入到学习引擎112。

  在测试阶段,传感引擎110、学习引擎112(例如随机森林模型)和执行器引擎114一起作为基于丢包预测的TCP拥塞控制机制。传感引擎110根据在接收到的信号118(例如ACK)中编码的时间戳和/或其他参数,计算跟训练阶段具体相同结构的当前网络状态(例如特征向量或其他合适的数据结构)。在发送报文之前,训练得到的模型获取当前网络状态(例如特征向量),并输出发送报文的情况下,将会发生丢包的概率。然后,根据预定义阈值,执行器引擎114决定是否发送报文。如果执行器引擎114决定发送报文,则拥塞窗口保持不变。如果执行器引擎114决定不发送报文,则拥塞窗口减小1。

  在测试后以及由于测试而发生任何变化后,传感引擎110、学习引擎112(例如随机森林模型)和执行器引擎114一起作为基于丢包预测的TCP拥塞控制机制,避免网络104中实际流量的拥塞。在拥塞避免期间,当通信设备102接收到新的ACK时(例如通过传感引擎110),cwnd大小增加1/cwnd,并且传感引擎110更新状态。当发送引擎116即将发送报文120时,再次计算状态。然后,学习引擎112获取状态向量,并输出报文120的丢包概率。如果丢包概率低于预定阈值th,则执行器引擎114使得发送报文120(例如通过发送引擎116)。否则,在某些实施例中,执行器引擎114不使得发送报文120,并且将拥塞窗口大小减小1。

  用于与丢包概率相比较(例如通过执行器引擎114)的判定阈值th是LP-TCP拥塞控制机制的参数,可以是预定的(例如在冲突避免阶段之前),可用于调整LP-TCP拥塞控制机制的性能。如果阈值较高,则预测丢包的可能性较低(LP-TCP仅在高度确信将发生丢包时才限制报文),因此LP-TCP的行为更保守,并且仅在几乎确定一个决定时才采取动作。如果阈值较低,则LP-TCP更可能限制报文,从而避免潜在的丢包,但是可能会错过在资源可用时进行传输的机会。

  除了丢包预测的准确性外,网络用户通常还会关心吞吐量(tp)和时延(d)的性能。因此,提供了吞吐量-时延权衡度量Me,并定义为:

  Me=log(E(tp))-0.1log(E(d))。

  直接计算使得Me最大的判定阈值th可能比较困难。因此,在某些实施例中,可以首先尝试将th取值为0.1、0.3、0.5、0.7、0.9。在这些示例值和th0中,可以选择一个使得Me最大的th。对于各种网络配置(L,K),可以针对候选阈值th(例如参见表1)来计算Me。

  例如,下文提供的表1示出了针对各种网络配置下丢包预测器的判定阈值th的吞吐量-时延权衡度量Me。对于每种网络设置(L,K),计算使得表1中的丢包预测器(losspredictor,LP)的F1分数最大的阈值th0。F1分数是测试准确性的度量。变量L表示网络104中潜在网络拥塞点处的缓存大小,变量K表示网络104中的发送机数量。术语(L,K)mix意味着一个LP-TCP流和K–1个NewReno流共存于瓶颈处(例如网络104中的潜在网络拥塞点)。所选的ths(对应于加粗的Me值)可用于模拟,如本公开下文中所述。

  表1

  

  图2示出了根据本公开某些实施例的针对各种网络设置的根据判定阈值th的LP-TCP拥塞控制方案的F1分数的图。出于本示例的目的,表1中前四行中每一行的F1分数对应图2所示图中的绘制线。

  返回图1,在LP-TCP拥塞控制的示例性实施例的操作中,通信设备102(例如传感引擎110)从网络104接收信号118。在某些实施例中,信号118是针对通信设备102先前通过网络104传输的报文120的ACK。然后通信设备102(例如传感引擎110)确定第一网络状态。例如,传感引擎110可以根据接收到的信号118和通信设备102确定或维护的其他变量来确定各种值。在某些实施例中,传感引擎110获取网络状态,其为特征向量或其他合适的数据结构。

  然后,通信设备102(例如学习引擎112)根据先前确定的第一网络状态确定第一报文120的第一丢包预测。传感引擎110可以向学习引擎112传输或以其他方式提供先前确定的第一网络状态。第一丢包预测指示第一报文120通过网络104来传输的情况下,第一报文120将由于网络拥塞而丢失的可能性。在某些实施例中,丢包预测是由学习引擎112确定的丢包概率。例如,丢包概率可以是百分比值,其中较高的百分比表示报文通过网络104来传输的情况下,将会丢失的可能性更大。学习引擎112可以根据训练得到的模型(例如训练得到的随机森林模型)来确定丢包预测。该模型可以根据学习引擎112在训练阶段受到的训练将网络状态映射到特定的丢包预测(例如丢包概率),其中学习引擎112在训练阶段使用模拟流量进行训练。

  然后,通信设备102(例如执行器引擎114)根据先前确定的丢包预测确定是否发送第一报文120。学习引擎112可以向执行器引擎114传输或以其他方式提供先前确定的丢包概率。在某些实施例中,执行器引擎114将第一报文120的丢包预测(例如丢包概率)与判定阈值相比较,以确定是否发送第一报文120。例如,执行器引擎114可以确定丢包概率是否超过判定阈值。

  如果通信设备102(例如执行器引擎114)确定不发送第一报文120(例如通过确定第一报文120的丢包概率超过判定阈值),则不发送第一报文120,并且通信设备102(例如执行器引擎114)可以将拥塞窗口大小减小1。

  另一方面,如果通信设备102(例如执行器引擎114)确定发送第一报文120(例如通过确定第一报文120的丢包概率不超过判定阈值),则通信设备102(例如发送引擎116)通过网络104来发送第一报文120。例如,执行器引擎114可以响应于发送第一报文120的决定,指示发送引擎116发送第一报文120,发送引擎116可以响应于该指示,发送第一报文120。然后,通信设备102(例如执行器引擎114)可以将拥塞窗口大小增加1/W。如上所述,尽管主要描述了将拥塞窗口大小增加特定量(1/W),但是本公开设想如果执行器引擎114确定发送报文120,则可以将拥塞窗口大小增加其他量或使拥塞窗口保持相同大小。

  通信设备102在发送报文120并且适当地增加拥塞窗口大小之后,可以确定是否有其他报文120要发送。如果通信设备102确定没有其他报文120要发送,则通信设备102(例如传感引擎110)可以等待另一信号118(例如另一ACK)到达。

  另一方面,如果通信设备102确定有另一报文120要发送,则通信设备102(例如传感引擎110)确定第二网络状态。然后,通信设备102(例如学习引擎112)可以根据第二网络状态确定第二报文120的第二丢包预测。第二丢包预测指示第二报文120通过网络104来传输的情况下,第二报文120将由于网络拥塞而丢失的可能性。

  通信设备102(例如执行器引擎114)根据第二丢包预测确定是否发送第二报文120。在某些实施例中,执行器引擎114将第二报文120的第二丢包预测(例如丢包概率)与判定阈值相比较,以确定是否发送第二报文120。例如,执行器引擎114可以确定第二丢包概率是否超过判定阈值。

  如果通信设备102(例如执行器引擎114)确定不发送第二报文120(例如通过确定第二报文120的第二丢包概率超过判定阈值),则不发送第二报文120,并且通信设备102(例如执行器引擎114)将拥塞窗口大小减小1。

  另一方面,如果通信设备102(例如执行器引擎114)确定发送第二报文120(例如通过确定第二报文120的第二丢包概率不超过判定阈值),则通信设备102(例如发送引擎116)通过网络104来发送第二报文120,并等待另一信号118(例如另一ACK)到达。

  在训练通信设备102的学习引擎112以进行LP-TCP拥塞控制的示例性实施例的操作中,通信设备102开始构建训练数据,用于训练学习引擎112。如上所述,在某些实施例中,可以通过在NS2上运行NewReno模拟来收集训练数据。通信设备102(例如传感引擎110)记录网络104的当前网络状态。例如,在发送报文120之前,传感引擎110可以确定并存储网络104的当前网络状态。然后,通信设备102(例如发送引擎116)传输报文120。接下来,通信设备102(例如传感引擎110)确定是否接收到针对已传输报文120的ACK。例如,传感引擎110可以获知报文120的传输,并确定是否在预定时间内接收到ACK。如果在预定时间内未接收到针对已传输报文120的ACK,则传感引擎110可以确定已传输报文120已经丢失。

  如果通信设备102(例如传感引擎110)确定未接收到针对已传输报文120的ACK,则通信设备102(例如传感引擎110或学习引擎112)可以针对先前确定的网络状态分配第一值。换言之,如果通信设备102(例如传感引擎110)确定已传输报文120已经丢失,则通信设备102(例如传感引擎110或学习引擎112)为先前确定的网络状态分配一个值,指示报文已丢失。在某些实施例中,第一值是1,然而本公开设想可以使用其他值。

  另一方面,如果通信设备102(例如传感引擎110)确定接收到针对已传输报文120的ACK,则通信设备102(例如传感引擎110或学习引擎112)可以为先前确定的网络状态分配第二值。换言之,如果通信设备102(例如传感引擎110)确定已传输报文120没有丢失,则通信设备102(例如传感引擎110或学习引擎112)为先前确定的网络状态分配一个值,指示已传输报文120未丢失。在某些实施例中,第二值是0,然而本公开设想可以使用其他值。

  无论通信设备102(例如传感引擎110)将第一值或第二值分配给先前确定的网络状态(例如无论通信设备102是否确定第一报文120已丢失),通信设备102可以将网络状态和关联值赋给训练数据。例如,通信设备102可以存储网络状态的表示(例如网络状态的特征向量)和相关联的赋值(例如,1表示报文丢失,0表示报文未丢失)作为训练数据的一部分。

  接下来,通信设备102可以确定是否检测到足够多的丢包。如上所述,由于丢包事件通常比非丢包事件发生的频率低,因此当在训练数据中检测到足够多的丢包时,可以终止训练数据的收集。作为示例,通信设备102可以跟踪在训练数据收集期间检测到的丢包数量,并将当前丢包数量与丢包数量阈值相比较。如果当前丢包数量满足或超过阈值,则通信设备102可以确定已检测到足够多的丢包。如果当前丢包数量不满足或超过阈值,则通信设备102可以确定尚未检测到足够多的丢包,并且应当继续收集训练数据。

  如果通信设备102确定尚未检测到足够多的丢包,则通信设备102可以再次记录网络104的网络状态,以预期传输另一报文120。

  另一方面,如果通信设备102确定已检测到足够多的丢包,则通信设备102可以使用所收集的训练数据来训练分类/回归模型,其中分类/回归模型用于训练学习引擎112。在一个示例中,通信设备102使用的分类/回归模型是随机森林模型。然后,通信设备102可以将训练得到的模型应用到学习引擎112。将训练得到的模型应用到学习引擎112可以包括:以学习引擎112可访问的方式存储训练得到的模型,使得学习引擎112可以评估传感引擎110未来上报的网络状态,以针对这些未来网络状态确定适当的丢包预测(例如丢包概率)。例如,当得到充分训练时,学习引擎112能够针对传感引擎110未来上报的网络状态在训练得到的模型中找到相匹配的状态(或至少类似状态)。

  RL-TCPCC

  RL-TCP拥塞控制使用强化学习来训练学习引擎112。一般而言,强化学习是一种技术手段,用于确定在环境的当前状态(例如图1所示环境中网络104的当前网络状态)下应采取的最佳动作。在一些强化学习的实现方式中,使用马尔可夫决策过程(Markov DecisionProcess,MDP)来描述“环境”,其中任务具有一些状态空间S、可用动作A、转换函数P(s,a,s')(其描述了代理(或本文中的通信设备102)在给定当前网络状态s和所选动作a的情况下将如何移动通过状态空间)以及奖励函数R(s,a)(其描述了在状态s下选择动作a之后代理将接收到的反馈)。在状态s下采取动作a的价值定义为选择动作a并以最佳方式持续到将来之后接收到的总的奖励。

  如下所述,时间差(temporal difference,TD)学习是一种技术手段,用于学习在过渡和奖励函数未知的环境中的Q值,而过渡和奖励函数通过探索环境来采样。时间差异学习利用Q值是可以与观测数据进行比较的预测这一事实来完成该采样。时间差异学习的一个例子是状态-动作-奖励-状态-动作(State-Action-Reward-State-Action,SARSA)技术,下文将进行更详细地说明。

  与使用监督学习来训练丢包预测器的LP-TCP实施例相反,在某些实施例中,RL-TCP拥塞控制方案通过在拥塞避免阶段与网络环境的试错交互来找到状态和动作之间的最佳映射。这可以使得RL-TCP拥塞控制方案在给定目标的情况下持续学习和适应动态网络环境。从这个意义上来说,TCP拥塞控制挑战可以看作一个强化学习问题,其中缺乏先验知识的代理(例如通信设备102)学习通过动作和从环境(网络环境)接收奖励(正或负)来采取动作,目的是使得某些累积奖励最大化。在某些实施例中,如下文所述,RL-TCP拥塞控制方案调整状态和动作空间的设计以适应具有缓冲不足的瓶颈链路的网络。此外或可替代地,如下文更详细地描述,RL-TCP拥塞控制方案可以根据实际的TCP动态来处理奖励的临时信用分配。在某些实施例中,在拥塞避免阶段之外,保留了来自TCP NewReno的实践。

  在某些实施例中,使用效用函数来表示RL-TCP拥塞控制方案的目标。虽然本公开包括某些效用函数,但这些效用函数仅用于示例目的。本公开设想可以根据特定实现方式使用所描述的效用函数和/或任何其他合适的效用函数。一个示例性效用函数将RL-TCP拥塞控制方案的目标定义为最大化每个发送机的平均吞吐量-时延比值,例如:

  arg min TCP CC Eflow{log(throughput)–δlog(RTT)}

  根据RL-TCP拥塞控制方案的实施例,传感引擎110、学习引擎112和执行器引擎114一起工作以实现RL代理的目标。

  对于RL-TCP拥塞控制方案,传感引擎110的输入是信号118,例如针对先前传输的报文120而接收到的ACK。学习引擎112的输入包括网络状态(例如由传感引擎110确定)和来自网络的奖励。网络状态可以表示为一个或多个值(例如存储为特征向量)。这些值可以包括新接收到的ACK之间的到达时间间隔的EWMA(在一个示例中离散化为10个区间)、发送引擎116发送的报文之间的到达时间间隔的EWMA(在一个示例中离散化为10个区间)、当前RTT与迄今找到的最佳RTT之间的比值(在一个示例中离散化为10个区间)以及慢启动阈值(在一个示例中离散化为10个区间)。执行器引擎114的输入可以是当前网络状态和动作的值函数,指示每个动作在当前网络状态下的期待程度。

  传感引擎110响应于信号118(例如ACK)更新网络104的当前网络状态。网络状态表示网络104的拥塞状况。虽然可以使用任何合适的数据结构类型来表示网络状态,但是在某些实施例中,使用状态向量(例如长度为5的状态向量)来表示网络状态。在RL-TCP拥塞控制方案的一个示例中,根据接收到的信号118(例如ACK)的时间戳来计算报文发送间隔时间(以及依赖于它的特征)。

  在每个时间步骤(通常为一个RTT)的开始处,传感引擎110向学习引擎112发送当前网络状态(例如当前网络状态向量)。状态向量中的每个特征均匀地离散化为一个范围内的l个级别,其中该特征的大部分值都发生在该范围内。在某些实施例中,l在10和20之间。传感引擎110也可以根据两个连续时间步骤中的效用U的变化计算来自网络的奖励r。效用U可以是吞吐量tp、时延d(其中d=RTT-RTTmin)和丢包率p的函数。例如,效用U可以通过以下效用函数来表示,其提供了根据本公开某些实施例的可用效用函数的另一示例:

  

  其中,tp为吞吐量,B为网络中的瓶颈带宽,d为计算得到的时延,即当前往返时延(round-trip time,RTT)与最小RTT的差值,p为丢包率,δ1和δ2为可调系数。

  在每个时间步骤的开始处,执行器引擎114选择动作。执行器引擎114具有动作空间A,其包含四个动作。例如,所述动作可以是改变拥塞窗口大小。在一个示例中,动作空间的动作为cwnd=cwnd+x,其中x=-1,0,+1,+3。在某些实施例中,选择较小的x减少了在缓冲不足的瓶颈处发生丢包的机会。

  动作实际上“延展”到往返时延(例如,cwnd=cwnd+x/cwnd,针对一个RTT内接收到的每个新ACK)。使用基于价值的强化学习算法,学习引擎112学习每个动作a在状态s下有多“好”或者满足需要,称为强化学习中的Q函数Q(s,a),并定义为代理(例如通信设备102)由于在状态s下执行动作a并随后采取最优动作而接收到的累计奖励。

  在一个示例中,为了学习Q函数Q(s,a),使用SARSA学习算法。SARSA是一种基于策略的时间差学习算法,用于基于价值的RL。在时间步骤n+1的开始处,SARSA代理(例如通信设备102的学习引擎112)使用以下赋值(这里称为未修改的Q函数赋值)来更新Q函数:

  

  其中,表示y1=(1-α)y1+αy2;si,ai,ri为时间步骤i的开始处计算得到的状态、动作和奖励;αt为根据时间t(例如单位为秒)的学习率;γ为贴现因子。奖励rn+1根据以下差值进行计算:

  Δn+1=Un+1-Un,

  其中,Ui为时间步骤i-1过程中的效用。然而,在TCP拥塞控制中,发送机(例如通信设备102)在时间t+RTT观察在时间t调整拥塞窗口对效用的影响。因此,发送机(例如通信设备102)将在时间步骤n+1的过程中观察动作an(其“扩展”到时间步骤n)的效果,并且反映在Un+2中。

  因此,使用奖励rn+2可以更好地获取来自环境的由动作an带来的奖励。因此,在某些实施例中,在时间步骤n+1的开始处,可以将未修改的Q函数赋值的更新规则修改为如下赋值(这里称为修改后的Q函数赋值):

  

  其中,

  

  如果知道真实的Q函数,则在时间步骤n+1的开始处,执行器引擎114可以通过选择贪心动作an+1=arg maxa∈A Q(sn+1,a)来采取最佳动作。然而,一般来说,学习引擎112对Q函数进行估计。此外,在动态环境中,最佳策略可能会改变。因此,在某些实施例中,执行器引擎114采用∈-贪心探索-探索(∈-greedy exploration-exploitation,E2)方案,其中执行器引擎114选择概率为1-∈的贪心动作和概率为∈的随机动作。在一个示例中,默认将∈设置为0.1。在某些实施例中,持续的探索有利于在动态网络环境中使得效用最大化。

  以下表2示出了根据本公开某些实施例的拥塞避免期间示例性RL-TCP拥塞控制技术的伪代码。在本示例中,采用了SARSA学习。

  表2 RL-TCP CC(拥塞避免阶段)

  

  在RL-TCP拥塞控制的示例性实施例的操作中,通信设备102(例如学习引擎112)初始化强化学习参数。例如,学习引擎112可以将强化学习参数的值设置为相应的初始值或值的集合。在某些实施例中,强化学习参数包括根据相应值函数的一个或多个动作变量(a)、一个或多个网络状态变量(s)、一个或多个效用变量(u)、一个或多个时间变量(t)以及一个或多个期望值。作为更具体的示例,强化学习参数可以包括:动作变量a0、a1、a2;网络状态变量s0、s1、s2;效用变量u1、u1;时间变量(t0、tc);值函数Q(s0,a0)和Q(s1,a1)。

  每个动作变量(a)可以存储表示动作的一个或多个值,每个网络状态变量(s)可以存储表示网络状态的一个或多个值,每个效用变量(u)可以存储表示效用的一个或多个值,每个时间变量(t)可以存储表示时间的一个或多个值,每个值函数Q(s,a)可以存储表示期望值的一个或多个值。尽管有时作为单数描述,但是“值”可以包括以任何合适的格式存储的一个或多个值(例如作为单个值、作为值数组、作为向量等)。因此,变量可以以任何合适的格式存储一个或多个值。

  出于本文的目的,可以使用以下术语来指代在术语后面的括号中标识的强化学习参数:第一动作变量(a0);第二动作变量(a1);第三动作变量(a2);第一网络状态变量(s0);第二网络状态变量(s1);第三网络状态变量(s2);第一效用变量(u1);第二效用变量(u2);第一时间变量(t0);第二时间或当前时间变量(tc);第一值函数(Q(s0,a0));第二值函数(Q(s1,a1))。

  在一个示例中,初始化强化学习参数包括将强化参数的初始值设置如下:

  ·将所述第一动作变量(a0)、所述第二动作变量(a1)和所述第三动作变量(a2)初始化为各自的零值;

  ·将第一网络状态变量(s0)、第二网络状态变量(s1)和第三网络状态变量(s2)初始化为各自的零向量的值;

  ·将第一效用变量(u1)和第二效用变量(u2)初始化为各自的零值;

  ·将第一时间变量(t0)初始化为各自的零值。

  通信设备102(例如传感引擎110)可以确定通信设备102是否已从网络104接收到信号118。在某些实施例中,信号118是针对通信设备102先前通过网络104传输的报文120的ACK。例如,信号118可以是通信设备102响应于通信设备102先前的报文传输而接收到的ACK。尽管描述了显式确定,但是本公开设想通信设备102(例如传感引擎110)可以响应于通信设备102接收信号118,简单地检测信号118(例如ACK)的接收。

  如果通信设备102(例如传感引擎110)确定未接收到信号118(例如未检测到信号118的接收),则通信设备(例如传感引擎110)可以继续等待信号118的接收。

  另一方面,如果通信设备102(例如传感引擎110)确定已接收到信号118(例如ACK),则通信设备102(例如传感引擎110)确定网络104的网络状态。网络状态表示网络104的拥塞状况。网络状态可以至少部分地根据接收到的信号118(例如ACK)确定。此外,网络状态可以表示接收到信号118时网络104的状态,因为网络状态是从信号118确定的。所确定的网络状态可以认为是网络104的当前网络状态(例如在时间tc)。

  在某些实施例中,确定网络104的网络状态包括确定代表网络状态的一个或多个网络状态变量的值。网络状态可以使用合适的数据结构来表示。在某些实施例中,当接收到新的信号118(例如新的ACK)时,网络状态(例如第一网络状态)表示为状态向量,用于表示网络104的拥塞状况。例如,状态向量可以是长度为5的状态向量,然而本公开设想状态向量可以具有任何合适的长度。表示状态的数据结构(例如状态向量)可以包括任何值,例如上述值。

  通信设备102(例如传感引擎110)可以存储所确定的网络状态。例如,通信设备102(例如传感引擎110)可以将表示所确定的网络状态的值存储到第三网络状态变量(s2)中,第三网络状态变量可以是当前网络状态(例如在时间tc)。

  通信设备102(例如传感引擎110)可以使用效用函数确定第二效用值。在某些实施例中,效用函数包括可以反映在网络状态变量(例如表示网络状态的向量的值)中的变量,使得使用效用函数确定第二效用值包括根据当前网络状态确定第二效用值。作为一个示例,使用效用函数确定的第二效用值可以是吞吐量(tp)、时延(d)和丢包率(p)的函数。在某些实施例中,效用函数为:

  

  其中,tp为吞吐量,B为网络中的瓶颈带宽,d为计算得到的时延,即当前往返时延与最小RTT的差值,p为丢包率,δ1和δ2为可调系数。

  通信设备102(例如传感引擎110)可以存储所确定的第二效用值。例如,通信设备102(例如传感引擎110)可以将所确定的第二效用值存储到第二效用变量(u2)中。第二效用值可以对应于t0到当前时间(tc)的时段。

  通信设备102(例如传感引擎110)可以确定第二时间(例如当前时间tc)和第一时间(例如t0的值)之间的差值大于或等于往返时延。例如,通信设备102(例如传感引擎110)可以确定当前时间(tc的值)与t0的值之间的差值是否大于或等于网络104中报文往返时延的EWMA。在某些实施例中,第二时间是当前时间,当前时间(tc的值)是接收到信号118的时间。第一次执行该操作时,t0的值是初始化t0的值。后续执行该操作时,可以更新t0的值,如下所述。例如,在后续执行时,t0的值可以是最近一次计算奖励的时间。

  如果通信设备102(例如传感引擎110)确定第二时间(例如当前时间)和第一时间(例如t0的值)之间的差值不大于或等于往返时延,则通信设备102(例如执行器引擎114)可以根据当前动作(a1的值)更新拥塞窗口。例如,通信设备102(例如执行器引擎114)可以根据a1的当前值更新cwnd变量的值。在一个示例中,拥塞窗口的更新可以表示为cwnd=cwnd+a1/cwnd,其中a1的值为当前动作。然后,通信设备102可以等待另一信号118(例如另一ACK)的接收。如果通信设备102继续接收信号118而不等待往返时延(例如满足tc–t0≥RTT),则通信设备102可以在根据新确定的动作(例如第三动作)更新cwnd变量的值之前,根据第二动作变量(a1)的当前值更新几次cwnd变量的值(尽管新确定的第三动作可能与a1的当前值相同或不同)。

  另一方面,如果通信设备102(例如传感引擎110)确定第二时间(当前时间)和第一时间(例如t0的值)之间的差值大于或等于往返时延,则通信设备102(例如传感引擎110)可以根据第二效用变量(u2)的第二效用值和第一效用变量(u1)的第一效用值确定奖励。奖励可以对应于第一动作变量(a0)的值表示的第一动作。因此,在本示例中,通信设备102(发送引擎110)至少部分地根据确定当前时间与t0的值之间的差值大于或等于往返时延来确定奖励。

  第一次执行该操作时,u1的值是初始化u1的值。后续执行该操作时,可以更新u1的值,如下所述。在某些实施例中,第一效用变量(u1)的第一效用值与从第一时间(在本示例中至少为t0之前的RTT)到第二时间(在本示例中为t0)的第一时段相关联。第二效用变量(u2)的效用值与从第二时间(在本示例中为t0)到第三时间(在本示例中为当前时间tc)的第二时段相关联。与第一效用变量(u1)的第一效用值相关联的第一时段可以对应于第一往返时延,与第二效用变量(u2)的第二效用值相关联的第二时段可以对应于第二往返时延。在本示例中,第二时间与第一时间(第一时段)的差值至少为网络104中第一报文120的往返时延,第三时间与第二时间的差值至少为网络104中的第二报文120的往返时延。

  在某些实施例中,例如在初始执行以外的执行中,可以使用效用函数来计算第一效用变量(u1)的第一效用值(而不是简单地初始化为零值)。在某些实施例中,用于确定上述效用(例如第一效用变量(u1)的第一效用值)的效用函数与用于确定第二网络效用(例如第二效用变量(u2)的第二效用值)的效用函数相同。

  在某些实施例中,奖励可以根据第二效用变量(u2)的第二效用值与第一效用函数(u1)的第一效用值(例如之前的效用值)之间的差值来确认,可以表示为:

  Δn+1=Un+1-Un,

  其中,Δn+1为所确定的差值,Un+1为第二效用变量,Un为第一效用变量(例如之前的效用变量)。此外,可以根据以下条件确定奖励的特定值:

  

  其中rn+1为所确定的奖励。

  在某些实施例中,传感引擎110可以将第一网络状态和奖励传输给学习引擎112。

  通信设备102(例如学习引擎112)可以更新第一值函数,其指示与通信网络104的第一动作变量(a0)和第一网络状态变量(s0)的值相关联的期望值。例如,在初始执行中,a0和s0的值可以是初始化变量a0和s0的值。作为另一个示例,在后续执行中,变量a0和s0的值可以表示在第一时间(例如上述第一时段开始时)的第一动作和在第一时间的第一网络状态。可以根据奖励和第二值函数来更新第一值函数,其中第二值函数指示与通信网络104的第二动作变量(a1)和第二网络状态变量(s1)的值相关联的期望值。在某些实施例中,值函数是使用SARSA时间差学习算法训练得到的Q函数。

  作为特定示例,值函数更新如下:

  

  其中,表示y1=(1-α)y1+αy2;si,ai,ri为时间步骤i的开始处计算得到的状态、动作和奖励变量;αt为根据时间t(例如单位为秒)的学习率;γ为贴现因子。其中,时间n-1可以为第一时间,n可以为第二时间,n+1可以为第三时间(当前时间)。因此,上述值函数可以表示为:

  

  该方法根据在第二时间采取的动作的可取性和在第三时间确定的奖励来评估在第一时间采取的动作的可取性。换言之,在某些实施例中,在经过两个时段之后评估在第一时间采取的动作的可取性,潜在地更完整地反映在第一时间采取的动作对网络104的影响。

  学习引擎112可以将值函数传输给执行器引擎114。

  通信设备102(例如执行器引擎114)可以根据更新后的值函数(以及相关联的期望值)确定针对第三网络状态变量的值的多个动作中的动作。该动作可以是可由执行器引擎114选择的多个可能动作。每个动作可以包括将拥塞窗口(congestion window,cwnd)大小修改一定量(例如一定值)。在一个特定示例中,所述可能动作为cwnd+x,其中x为-1、0、+1或+3。所确定的动作可以存储为第三动作变量(a2)的值。

  所确定的动作(由第三动作变量(a2)的值表示)可以是与第一动作和第二动作(由第一动作变量(a0)和第二动作变量(a1)的值表示)相同的动作或不同的动作,该动作、第二动作和第三动作也可以彼此相同或不同。换言之,第一动作可以和第二动作相同;第一动作可以和第三动作相同;第二动作可以和第三动作相同;或者第一动作、第二动作和第三动作都可以是相同的动作。此外或可替代地,第一、第二和第三动作中的部分或全部动作可以彼此不同。在某些实施例中,通信设备102(例如执行器引擎114)根据∈-贪心E2方案确定第三动作。第三动作可以是针对当前网络状态确定的。通信设备102(例如执行器引擎114)可以存储所确定的第三动作。例如,通信设备102(例如传感引擎110)可以将所确定的第三动作存储为第三动作(a2)。

  通信设备102(例如执行器引擎114)可以更新强化学习参数。在某些实施例中,通信设备102(例如执行器引擎114)更新强化学习参数,使得赋给参数的值提前一个时间步长。例如,通信设备102(例如学习引擎112)可以更新上述强化学习参数如下:

  ·将第二动作变量(a1)的值赋给第一动作变量(a0)(例如使得第一动作变量的值替换为第二动作变量的值);

  ·将第三动作变量(a2)的值赋给第二动作变量(a1)(例如使得第二动作变量的值替换为第三动作变量的值);

  ·将第二网络状态变量(s1)的值赋给第一网络状态变量(s0)(例如使得第一网络状态变量的值替换为第二网络变量的值);

  ·将第三网络状态变量(s2)的值赋给第二网络状态变量(s1)(例如使得第二网络状态变量的值替换为第三网络状态变量的值);

  ·将第二效用变量(u2)的值赋给第一效用变量(u1)(例如使得第一效用变量的值替换为第二效用变量的值);

  ·将当前时间变量(tc)的值赋给第一时间变量(t0)(例如使得第一时间变量的值替换为当前时间变量的值)。

  通信设备102(例如执行器引擎114)可以根据当前动作(a1)(例如使用其新赋的值)更新拥塞窗口。例如,通信设备102(例如执行器引擎114)可以根据a1的当前值更新cwnd变量的值。在一个示例中,拥塞窗口的更新可以表示为cwnd=cwnd+a1/cwnd,其中第二动作变量(a1)的值为当前动作。然后,通信设备102可以等待新的信号118(例如新的ACK)。

  图3示出了根据本公开某些实施例的LP-TCP拥塞控制的示例性方法300。所述方法开始于步骤302。

  在步骤304处,通信设备102(例如传感引擎110)从网络104接收信号118。在某些实施例中,信号118是针对通信设备102先前通过网络104传输的报文120的ACK。

  在步骤306处,通信设备102(例如传感引擎110)确定第一网络状态。例如,传感引擎110可以根据在步骤304处接收到的信号118和通信设备102确定或维护的其他变量来确定各种值。第一网络状态表示网络104的拥塞状况。第一网络状态可以根据在步骤304处接收到的信号118(例如ACK)来确定。网络状态可以使用合适的数据结构来表示。在某些实施例中,传感引擎110获取网络状态,其为特征向量(也可以称为状态向量)或其他合适的数据结构。在某些实施例中,当接收到新的信号118(例如新的ACK)时,网络状态(例如第一网络状态)表示为状态向量,用于表示网络104的拥塞状况。例如,状态向量可以是长度为5的状态向量,然而本公开设想状态向量可以具有任何合适的长度。

  表示状态的数据结构(例如状态向量)可以包括以下值:ACK到达间隔时间的指数加权移动平均值(exponentially weighted moving average,EWMA),其中第一信号是ACK;报文发送间隔时间的EWMA;当前RTT与最小RTT的比值;慢启动阈值;拥塞窗口(congestionwindow,cwnd)大小;或者ACK到达间隔时间的EWMA、报文发送间隔时间的EWMA、当前RTT与最小RTT的比值、慢启动阈值以及cwnd大小的组合。尽管描述了特定的示例值,但是本公开设想可以使用任何合适的值以任何合适的方式来表示网络104的网络状态。

  在步骤308处,通信设备102(例如学习引擎112)根据在步骤306处确定的第一网络状态确定第一报文120的第一丢包预测。传感引擎110可以向学习引擎112传输或以其他方式提供在步骤306处确定的第一网络状态。第一丢包预测指示第一报文120通过网络104来传输的情况下,第一报文120将由于网络拥塞而丢失的可能性。在某些实施例中,丢包预测是由学习引擎112确定的丢包概率。例如,丢包概率可以是百分比值,其中较高的百分比表示报文通过网络104来传输的情况下,将会丢失的可能性更大。学习引擎112可以根据训练得到的模型(例如训练得到的随机森林模型)确定丢包预测,该模型可以将网络状态映射到特定的丢包预测(例如丢包概率)。

  在步骤310处,通信设备102(例如执行器引擎114)根据在步骤308处确定的丢包预测确定是否发送第一报文120。学习引擎112可以向执行器引擎114传输在步骤308处确定的丢包概率,或以其他方式使得执行器引擎114可以使用该丢包概率。在某些实施例中,执行器引擎114将第一报文120的丢包预测(例如丢包概率)与判定阈值相比较,以确定是否发送第一报文120。例如,执行器引擎114可以确定丢包概率是否超过判定阈值。

  如果通信设备102(例如执行器引擎114)在步骤310处确定不发送第一报文120(例如通过确定第一报文120的丢包概率超过判定阈值),则不发送第一报文120,所述方法进行到步骤312。在步骤312处,通信设备102(例如执行器引擎114)将拥塞窗口大小减小1。

  如果通信设备102(例如执行器引擎114)在步骤310处确定发送第一报文120(例如通过确定第一报文120的丢包概率不超过判定阈值),则所述方法进行到步骤314。在步骤314处,通信设备102(例如发送引擎116)通过网络104来发送第一报文120。例如,执行器引擎114可以响应于步骤310处发送第一报文120的决定,指示发送引擎116发送第一报文120,并且发送引擎116可以响应于该指令,在步骤314处发送第一报文120。在步骤316处,通信设备102(例如执行器引擎114)将拥塞窗口大小增加1/W。如上所述,尽管主要描述了将拥塞窗口大小增加特定量(1/W),但是本公开设想如果执行器引擎114确定发送报文120,则可以将拥塞窗口大小增加其他量或使拥塞窗口保持相同大小。

  在步骤318处,通信设备102确定是否有其他报文120要发送。如果通信设备102在步骤318处确定没有其他报文要发送,则所述方法返回到开始以等待另一信号118(例如另一ACK)到达。另一方面,如果通信设备102在步骤318处确定存在另一报文要发送,则所述方法进行到步骤320。

  在步骤320处,通信设备102(例如传感引擎110)确定第二网络状态。在步骤322处,通信设备102(例如学习引擎112)根据在步骤320处确定的第二网络状态确定第二报文120的第二丢包预测。第二丢包预测指示第二报文120通过网络104来传输的情况下,第二报文120将由于网络拥塞而丢失的可能性。

  在步骤324处,通信设备102(例如执行器引擎114)根据在步骤322处确定的丢包预测确定是否发送第二报文120。在某些实施例中,执行器引擎114将丢包预测(例如丢包概率)与判定阈值相比较,以确定是否发送第二报文120。例如,执行器引擎114可以确定丢包概率是否超过判定阈值。

  如果通信设备102(例如执行器引擎114)在步骤324处确定不发送第二报文120(例如通过确定第二报文120的丢包概率超过判定阈值),则不发送第二报文120,所述方法进行到步骤326。在步骤326处,通信设备102(例如执行器引擎114)将拥塞窗口大小减小1。

  如果通信设备102(例如执行器引擎114)在步骤324处确定发送第二报文120(例如通过确定第二报文120的丢包概率不超过判定阈值),则所述方法进行到步骤328。在步骤328处,通信设备102(例如发送引擎116)通过网络104来发送第二报文120。然后,所述方法返回到开始以等待另一信号118(例如另一ACK)到达。

  图4示出了根据本公开某些实施例的用于训练通信设备102的学习引擎112以进行LP-TCP拥塞控制的示例性方法400。所述方法开始于步骤402。

  在步骤404处,通信设备102开始构建训练数据,用于训练学习引擎112。如上所述,可以通过在NS2上运行NewReno模拟来收集训练数据。

  在步骤406处,通信设备102(例如传感引擎110)记录网络104的当前网络状态。例如,在发送报文120之前,传感引擎110可以确定并存储网络104的当前网络状态。在一个示例中,网络状态表示为特征向量。在某些实施例中,使用特征向量或其他合适的数据结构来获取网络状态,如上文结合图3中步骤306所述。

  在步骤408处,通信设备102(例如发送引擎116)传输报文120。在步骤410处,通信设备102(例如传感引擎110)确定是否接收到针对已传输报文120的应答消息(acknowledgement,ACK)。例如,传感引擎110可以获知报文120的传输,并确定是否在预定时间内接收到ACK。如果在预定时间内未接收到针对已传输报文120的ACK,则传感引擎110可以确定已传输报文120已经丢失。

  如果通信设备102(例如传感引擎110)在步骤410处确定未接收到针对已传输报文120的ACK,则在步骤412处,通信设备102(例如传感引擎110或学习引擎112)可以针对在步骤406处记录的网络状态分配第一值。换言之,如果通信设备102(例如传感引擎110)在步骤410确定已传输报文120已经丢失,则在步骤412处,通信设备102(例如传感引擎110或学习引擎112)为在步骤406处记录的网络状态分配一个值,指示报文已丢失。在某些实施例中,第一值是1,然而本公开设想可以使用其他值。然后,所述方法进行到步骤416。

  另一方面,如果通信设备102(例如传感引擎110)在步骤410处确定接收到已传输报文120的ACK,则在步骤414处,通信设备102(例如传感引擎110或学习引擎112)可以针对在步骤406处记录的网络状态分配第二值。换言之,如果通信设备102(例如传感引擎110)在步骤410处确定已传输报文120没有丢失,则在步骤414处,通信设备102(例如传感引擎110或学习引擎112)为在步骤406处确定的网络状态分配一个值,指示已传输报文120未丢失。在某些实施例中,第二值是0,然而本公开设想可以使用其他值。然后,所述方法进行到步骤416。

  在步骤416处,通信设备102将网络状态和关联值赋给训练数据。例如,通信设备102可以存储网络状态的表示(例如网络状态的特征向量)和相关联的赋值(例如,1表示报文丢失,0表示报文未丢失)作为训练数据的一部分。

  在步骤418处,通信设备102确定是否检测到足够多的丢包。如上所述,由于丢包事件通常比非丢包事件发生的频率低,因此当在训练数据中检测到足够多的丢包时,可以终止训练数据的收集。作为示例,通信设备102可以跟踪在训练数据收集期间检测到的丢包数量,并在步骤418处,将当前丢包数量与丢包数量阈值相比较。如果当前丢包数量满足或超过阈值,则通信设备102可以确定已检测到足够多的丢包。如果当前丢包数量不满足或超过阈值,则通信设备102可以确定尚未检测到足够多的丢包,并且应当继续收集训练数据。

  如果通信设备102在步骤418处确定尚未检测到足够多的丢包,则所述方法可以返回到步骤406处记录网络104的网络状态,以预期在步骤408处传输另一报文120。另一方面,如果通信设备102在步骤418处确定已检测到足够多的丢包,则所述方法可以进行到步骤420。

  在步骤420处,通信设备102可以使用所收集的训练数据来训练分类/回归模型,其中分类/回归模型用于训练学习引擎112。在一个示例中,通信设备102使用的分类/回归模型是随机森林模型。

  在步骤422处,通信设备102将训练得到的模型应用到学习引擎112。将训练得到的模型应用到学习引擎112可以包括:以学习引擎112可访问的方式存储训练得到的模型,使得学习引擎112可以评估传感引擎110未来上报的网络状态,以针对这些未来网络状态确定适当的丢包预测(例如丢包概率)。例如,当得到充分训练时,学习引擎112能够针对传感引擎110未来上报的网络状态在训练得到的模型中找到相匹配的状态(或至少类似状态)。

  在步骤424处,所述方法结束。

  图5示出了根据本公开某些实施例的RL-TCP拥塞控制的示例性方法500。所述方法开始于步骤502。

  在步骤504处,通信设备102(例如学习引擎112)初始化强化学习参数。例如,学习引擎112可以将强化学习参数的值设置为相应的初始值或值的集合。如上所述,在某些实施例中,强化学习参数包括根据相应值函数的一个或多个动作变量(a)、一个或多个网络状态变量(s)、一个或多个效用变量(u)、一个或多个时间变量(t)以及一个或多个期望值。作为更具体的示例,强化学习参数可以包括:动作变量a0、a1、a2;网络状态变量s0、s1、s2;效用变量u1、u1;时间变量(t0、tc);值函数Q(s0,a0)和Q(s1,a1)。

  如上所述,每个动作变量(a)可以存储表示动作的一个或多个值,每个网络状态变量(s)可以存储表示网络状态的一个或多个值,每个效用变量(u)可以存储表示效用的一个或多个值,每个时间变量(t)可以存储表示时间的一个或多个值,每个值函数Q(s,a)可以存储表示期望值的一个或多个值。尽管有时作为单数描述,但是“值”可以包括以任何合适的格式存储的一个或多个值(例如作为单个值、作为值数组、作为向量等)。因此,变量可以以任何合适的格式存储一个或多个值。

  在一个示例中,初始化强化学习参数包括将强化参数的初始值设置如下:

  ·将所述第一动作变量(a0)、所述第二动作变量(a1)和所述第三动作变量(a2)初始化为各自的零值;

  ·将第一网络状态变量(s0)、第二网络状态变量(s1)和第三网络状态变量(s2)初始化为各自的零向量的值;

  ·将第一效用变量(u1)和第二效用变量(u1)初始化为各自的零值;

  ·将第一时间变量(t0)初始化为各自的零值。

  在步骤506处,通信设备102(例如传感引擎110)确定通信设备102是否已从网络104接收到信号118。在某些实施例中,信号118是针对通信设备102先前通过网络104传输的报文120的ACK。例如,信号118可以是通信设备102响应于通信设备102先前的报文传输而接收到的ACK。

  尽管步骤506可以是显式确定,但是本公开设想通信设备102(例如传感引擎110)可以响应于通信设备102接收信号118,简单地检测信号118(例如ACK)的接收。

  如果通信设备102(例如传感引擎110)在步骤506处确定未接收到信号118(例如未检测到信号118的接收),则方法500可以返回到步骤506等待信号118的接收。如果通信设备102(例如传感引擎110)在步骤506处确定接受到信号118(例如ACK),则方法500可以进行到步骤508。

  在步骤508处,通信设备102(例如传感引擎110)确定网络104的网络状态。网络状态表示网络104的拥塞状况。网络状态可以至少部分地根据在步骤506处接收到的信号118(例如ACK)确定。此外,网络状态可以表示接收到信号118时网络104的状态,因为网络状态是从信号118确定的。在步骤508处确定的网络状态可以认为是网络104的当前网络状态(例如在时间tc)。

  在某些实施例中,确定网络104的网络状态包括确定代表网络状态的一个或多个网络状态变量的值。网络状态可以使用合适的数据结构来表示。在某些实施例中,当接收到新的信号118(例如新的ACK)时,网络状态(例如第一网络状态)表示为状态向量,用于表示网络104的拥塞状况。例如,状态向量可以是长度为5的状态向量,然而本公开设想状态向量可以具有任何合适的长度。

  表示状态的数据结构(例如状态向量)可以包括以下值:ACK到达间隔时间的EWMA,其中第一信号是ACK;报文发送间隔时间的EWMA;当前RTT与最小RTT的比值;慢启动阈值;拥塞窗口(congestion window,cwnd)大小;或者ACK到达间隔时间的EWMA、报文发送间隔时间的EWMA、当前RTT与最小RTT的比值、慢启动阈值以及cwnd大小的组合。尽管描述了特定的示例值,但是本公开设想可以使用任何合适的值以任何合适的方式来表示网络104的网络状态。

  在步骤510处,通信设备102(例如传感引擎110)存储所确定的网络状态。例如,通信设备102(例如传感引擎110)可以将表示所确定的网络状态的值存储到第三网络状态变量(s2)中,第三网络状态变量可以是当前网络状态(例如在时间tc)。

  在步骤512处,通信设备102(例如传感引擎110)使用效用函数确定第二效用值。在某些实施例中,效用函数包括可以反映在网络状态变量(例如表示网络状态的向量的值)中的变量,使得使用效用函数确定第二效用值包括根据当前网络状态确定第二效用值。作为一个示例,使用效用函数确定的第二效用值可以是吞吐量(tp)、时延(d)和丢包率(p)的函数。在某些实施例中,效用函数为:

  

  其中,tp为吞吐量,B为网络中的瓶颈带宽,d为计算得到的时延,即当前往返时延与最小RTT的差值,p为丢包率,δ1和δ2为可调系数。

  在步骤514处,通信设备102(例如传感引擎110)存储所确定的第二效用值。例如,通信设备102(例如传感引擎110)可以将所确定的第二效用值存储到第二效用变量(u2)中。第二效用值可以对应于t0到当前时间(tc)的时段。

  在步骤516处,通信设备102(例如传感引擎110)确定第二时间(例如当前时间tc)和第一时间(例如t0的值)之间的差值大于或等于往返时延。例如,通信设备102(例如传感引擎110)可以确定当前时间(tc的值)与t0的值之间的差值是否大于或等于网络104中报文往返时延的EWMA。在某些实施例中,第二时间是当前时间,当前时间(tc的值)是在步骤506处接收到信号118的时间。第一次执行方法500时,t0的值是初始化t0的值(例如在步骤504处)。后续执行方法500时,可以更新t0的值,如下所述。例如,在后续执行时,t0的值可以是最近一次计算奖励的时间。

  如果通信设备102(例如传感引擎110)在步骤516处确定第二时间(例如当前时间)和第一时间(例如t0的值)之间的差值不大于或等于往返时延,则所述方法可以进行到步骤518。在步骤518处,通信设备102(例如执行器引擎114)可以根据当前动作(a1的值)更新拥塞窗口。例如,通信设备102(例如执行器引擎114)可以根据a1的当前值更新cwnd变量的值。在一个示例中,在步骤518处拥塞窗口的更新可以表示为cwnd=cwnd+a1/cwnd,其中a1的值为当前动作。然后,所述方法返回到步骤506以等待另一信号118(例如另一ACK)的接收。如果通信设备102继续接收信号118而不等待往返时延(例如满足tc–t0≥RTT),则通信设备102可以在根据新确定的动作(例如第三动作)更新cwnd变量的值之前,根据第二动作变量(a1)的当前值更新几次cwnd变量的值(尽管新确定的第三动作可能与a1的当前值相同或不同)。

  返回到步骤516,如果通信设备102(例如传感引擎110)在步骤516处确定第二时间(例如当前时间)和第一时间(例如t0的值)之间的差值大于或等于往返时延,则所述方法可以进行到步骤520。

  在步骤520处,通信设备102(例如传感引擎110)根据第二效用变量的第二效用值(u2)和第一效用变量的第一效用值(u1)确定奖励。奖励可以对应于第一动作变量(a0)的值表示的第一动作。因此,在本示例中,通信设备102(发送引擎110)至少部分地根据确定(步骤516)当前时间与t0的值之间的差值大于或等于往返时延来确定奖励。

  第一次执行方法500时,u1的值是初始化u1的值(例如在步骤504处)。后续执行方法500时,可以更新u1的值,如下所述。在某些实施例中,第一效用变量(u1)的第一效用值与从第一时间(在本示例中至少为t0之前的RTT)到第二时间(在本示例中为t0)的第一时段相关联。第二效用变量(u2)的效用值与从第二时间(在本示例中为t0)到第三时间(在本示例中为当前时间tc)的第二时段相关联。与第一效用变量(u1)的第一效用值相关联的第一时段可以对应于第一往返时延,与第二效用变量(u2)的第二效用值相关联的第二时段可以对应于第二往返时延。在本示例中,第二时间与第一时间(第一时段)的差值至少为网络104中第一报文120的往返时延,第三时间与第二时间的差值至少为网络104中的第二报文120的往返时延。

  在某些实施例中,例如在初始执行方法500以外的执行中,可以使用效用函数来计算第一效用变量(u1)的第一效用值(而不是简单地初始化为零值)。在某些实施例中,用于确定上述效用(例如第一效用变量(u1)的第一效用值)的效用函数与在步骤512处用于确定第二网络效用(例如第二效用变量(u2)的第二效用值)的效用函数相同。

  在某些实施例中,奖励可以根据第二效用变量(u2)的第二效用值与第一效用函数(u1)的第一效用值(例如之前的效用值)之间的差值来确认,可以表示为:

  Δn+1=Un+1-Un,

  其中,Δn+1为所确定的差值,Un+1为第二效用变量,Un为第一效用变量(例如之前的效用变量)。此外,可以根据以下条件确定奖励的特定值:

  

  其中rn+1为所确定的奖励。

  在某些实施例中,传感引擎110可以将第一网络状态和奖励传输给学习引擎112。

  在步骤522处,通信设备102(例如学习引擎112)可以更新第一值函数,其指示与通信网络104的第一动作变量(a0)和第一网络状态变量(s0)的值相关联的期望值。例如,在初始执行中,变量a0和s0的值可以是在步骤504处初始化变量a0和s0的值。作为另一个示例,在后续执行中,变量a0和s0的值可以针对在第一时间(例如步骤520处所述的第一时段开始时)的第一动作和在第一时间的第一网络状态。可以根据奖励(在步骤520处确定)和第二值函数来更新第一值函数,其中第二值函数指示与通信网络104的第二动作变量(a1)和第二网络状态变量(s1)的值相关联的期望值。在某些实施例中,值函数是使用SARSA时间差学习算法训练得到的Q函数。

  作为特定示例,值函数更新如下:

  

  其中,表示y1=(1-α)y1+αy2;si,ai,ri为时间步骤i的开始处计算得到的状态、动作和奖励变量;αt为根据时间t(例如单位为秒)的学习率;γ为贴现因子。其中,时间n-1可以为第一时间,n可以为第二时间,n+1可以为第三时间(例如当前时间)。因此,上述值函数可以表示为:

  

  该方法根据在第二时间采取的动作的可取性和在第三时间确定的奖励来评估在第一时间采取的动作的可取性。换言之,在某些实施例中,在经过两个时段之后评估在第一时间采取的动作的可取性,潜在地更完整地反映在第一时间采取的动作对网络104的影响。

  学习引擎112可以将值函数传输给执行器引擎114。

  在步骤524处,通信设备102(例如执行器引擎114)可以根据在步骤522处更新的值函数(以及相关联的期望值)确定针对第三网络状态变量的值的多个动作中的动作。所确定的动作可以存储为第三动作变量(a2)的值。该动作(由第三动作变量(a2)的值表示)可以是与第一动作和第二动作(由第一动作变量(a0)和第二动作变量(a1)的值表示)相同的动作或不同的动作,该动作、第二动作和第三动作也可以彼此相同或不同。换言之,第一动作可以和第二动作相同;第一动作可以和第三动作相同;第二动作可以和第三动作相同;或者第一动作、第二动作和第三动作都可以是相同的动作。此外或可替代地,第一、第二和第三动作中的部分或全部动作可以彼此不同。在某些实施例中,通信设备102(例如执行器引擎114)根据∈-贪心E2方案确定第三动作。第三动作可以是针对当前网络状态(例如在步骤508中确定的网络状态)确定的。

  在步骤526处,通信设备102(例如执行器引擎114)存储所确定的第三动作。例如,通信设备102(例如传感引擎110)可以将所确定的第三动作存储为第三动作(a2)。

  在步骤528处,通信设备102(例如执行器引擎114)更新强化学习参数。在某些实施例中,通信设备102(例如执行器引擎114)更新强化学习参数,使得赋给参数的值提前一个时间步长。例如,通信设备102(例如学习引擎112)可以更新上述强化学习参数如下:

  ·将第二动作变量(a1)的值赋给第一动作变量(a0)(例如使得第一动作变量的值替换为第二动作变量的值);

  ·将第三动作变量(a2)的值赋给第二动作变量(a1)(例如使得第二动作变量的值替换为第三动作变量的值);

  ·将第二网络状态变量(s1)的值赋给第一网络状态变量(s0)(例如使得第一网络状态变量的值替换为第二网络变量的值);

  ·将第三网络状态变量(s2)的值赋给第二网络状态变量(s1)(例如使得第二网络状态变量的值替换为第三网络状态变量的值);

  ·将第二效用变量(u2)的值赋给第一效用变量(u1)(例如使得第一效用变量的值替换为第二效用变量的值);

  ·将当前时间变量(tc)的值赋给第一时间变量(t0)(例如使得第一时间变量的值替换为当前时间变量的值)。

  在步骤530处,通信设备102确定是否终止方法500。例如,通信设备102可以确定是否终止报文120的传输、信号118的接收、拥塞控制、RL-TCP拥塞控制或上述的某种组合。如果通信设备102在步骤530处确定不终止方法500,则在步骤518处,通信设备102(例如执行器引擎114)可以根据当前动作(例如a1)(例如使用步骤528处新赋的值))更新拥塞窗口。例如,通信设备102(例如执行器引擎114)可以根据a1的当前值更新cwnd变量的值。在一个示例中,在步骤518处拥塞窗口的更新可以表示为cwnd=cwnd+a1/cwnd,其中第二动作变量(a1)的值为当前动作。然后,所述方法返回到步骤506以等待另一信号118(例如另一ACK)的接收。然后,方法500可以返回到步骤506以等待新的信号118(例如新的ACK)。

  另一方面,如果通信设备102在步骤530处确定终止方法500,则在步骤532处,所述方法可以结束。

  因此,现在将描述方法500的示例,其中已通过方法500至少发生两次迭代。第一次迭代可以对应于第一(但不一定是初始)时段,第二次迭代可以对应于第一时段之后的第二时段。第一时段可以为第一时间到第二时间,第二时段可以为第二时间到第三时间。在本示例中,将假设当前时间为第三时间。

  进一步地,在本示例中,方法500可以包括:通信设备102根据第三网络状态(s2)(例如在第二时间窗结束时(例如在第三时间)确定的网络状态)使用效用函数确定第二效用值(u2)。第二效用值对应于第二时段,第二时段为第二时间到第三时间(例如在方法500第二次迭代的过程中,从t0到tc,其中t0和tc的值进行了更新)。第三网络状态根据在第三时间从网络104接收到的第三信号118确定。

  通信设备102可以在第二时间(例如第一时段结束时),根据第二网络状态(s1)(例如在第一时段结束时(例如在第二时间)确定的网络状态,使用效用函数确定第一效用值(u1)。第一效用值对应于第一时段,第一时段为第一时间到第二时间(例如在方法500第一次迭代的过程中,从t0到tc)。第二网络状态根据在第二时间从网络104接收到的第二信号118确定。在先前的迭代中,通信设备102可以根据在第一时间从网络104接收到的第一信号118确定第一网络状态。

  进一步地,在本示例中,方法500可以包括:通信设备102根据第一效用值(u1)和第二效用值(u2)确定奖励。该奖励可以对应于通信设备102在第一时间(例如第一时段开始时)实现的动作。

  进一步地,在本示例中,方法500可以包括:通信设备102更新第一值函数(Q(s0,a0)),其中第一值函数指示与第一网络状态(s0)和第一动作(a0)相关联的第一期望值。第一值函数(Q(s0,a0))可以根据奖励和第二值函数(Q(s1,a1))进行更新,其中第二值函数指示与第二网络状态(s1)和第二动作(a1)相关联的第二期望值。

  进一步地,在本示例中,方法500可以包括:通信设备102根据第一值函数(Q(s0,a0))确定第三动作(a2)。第一动作(a0)、第二动作(a1)和第三动作(a2)为多个动作中的动作,多个动作中的每个动作包括将拥塞窗口(congestion window,cwnd)变量的值修改相应量。cwnd变量的值表示cwnd的大小。

  进一步地,在本示例中,方法500可以包括:根据第三动作(例如在步骤518使用a1,而在步骤526处使用a2)更新cwnd变量。

  如下结合附图所述,所公开的基于学习的TCP拥塞控制协议的性能可以与NS2中的TCP NewReno和Q学习TCP的性能相当。应理解,下文图示和描述的值、测量值以及其他结果和结论仅用于示例目的,并且仅反映本公开的某些实施例。

  图6示出了根据本公开某些实施例的示例性哑铃拓扑600。拓扑600包括K个发送机602、K个接收机604以及路由器606a和606b。在某些实施例中,发送机602和接收机604是类似于图1中的网络设备102的网络设备;然而,本公开设想发送机602和接收机604可以是能够通过电气连接互相通信(例如使用TCP协议)的任何合适类型的网络设备。

  发送机602通过链路608a连接到路由器606a,接收机通过链路608b连接到路由器606b,发送机602和接收机例如可以是网络104的一部分。路由器606a和606b通过链路610耦合。链路610可视作带宽为B Mb/s、单向时延为D毫秒(milliseconds,ms)的瓶颈链路。

  路由器606a处的缓存大小为L,表示报文的数量。具有K个发送机/接收机、缓存大小为L的网络设置记为(L,K)。每个发送机602和接收机604之间的最小往返时延为RTTmin。默认情况下,出于本示例的目的,将假设瓶颈链路610具有以下特征:B=10Mb/s,D=74ms,RTTmin=150ms。因此,带宽时延积(bandwidth delay product,BPD)为150个报文。如图4所示,链路608具有以下特征:B=1Gb/s,D=1ms。链路608的带宽和时延大于链路610的带宽和时延提供了链路610如何能够针地从发送机602到接收机604的传输创建瓶颈的一个示例。此外,出于本示例的目的,每个发送机602的默认流量类型是“常开”。

  下文主要针对两种场景对TCP拥塞控制方案的性能进行评估:

  ·单个发送机的缓存大小L在5、50和150之间变化;

  ·四个发送机共享瓶颈链路610,其缓存大小L等于50。

  使用的度量包括吞吐量(tp)、时延(d)、丢包率(p)和效用(U)。流的吞吐量可以通过将接收到的字节总数除以发送机处于活跃状态的时间来测量。流的平均时延的计算方法如下:d=RTT–RTTmin。丢包率的计算方法如下:

  

  效用的计算方法如下:U=log(tp)-log(RTT)。E(·)表示期望,V(·)表示方差。除非另有说明,否则结果取100次迭代的平均值,每次迭代持续约400秒。吞吐量度量单位为Mb/s,时延度量单位为ms。E(·)表示期望,V(·)表示方差。

  以下表3列出了TCP拥塞控制方案,与根据本公开实施例的LP-TCP和RL-TCP拥塞控制方案进行比较。对于RL-TCP拥塞控制方案,αt设置为时间t(秒)的函数,即αt=0.3*0.995[t/10],折现因子γ设置为0.5。在本示例中,当t无穷大时,变量αt衰减为零。

  表3 TCP CC方案对比

  

  对于E2方案,采用ε-贪心探索,即代理(例如通信设备102)按照概率ε采取随机动作,其中ε=0.1;否则采取当时最优的动作。在本示例中,代理(例如通信设备102)采取的动作是将拥塞窗口调整以下值{-1,0,1,+3}之一。五个状态分别沿着状态通常所处的范围离散化为10个区间。

  单个发送机

  本章节描述哑铃网络600中只有单个发送机具有“常开”流量时LP-TCP和RL-TCP拥塞控制机制的性能评估。首先,描述了基于RL的TCP拥塞控制方案中信用分配的影响。

  基于RL的TCP拥塞控制方案中信用分配的效果如下。在以下表4中,提供了10次迭代中使用各种TCP拥塞控制方案的单个“常开”发送机的计算得到的吞吐量和时延。对于RL-TCP,δ1=0.01,δ2=0.1。改进了建议的的信用分配、吞吐量和/或时延,并且实现了更好的Me。

  表4 Q-TCP、Qa-TCP和RL-TCP中信用分配的效果(缓存大小为50个报文)

  图7示出了根据本公开某些实施例的在一次模拟期间,Q-TCP、Q-TCPca、RL-TCPno-ca和RL-TCP拥塞控制方案中拥塞窗口大小的变化。RL-TCP拥塞控制方案通过为缓冲不足的网络量身定做动作空间和建议的信用分配,可以快速学习,而Q-TCP拥塞控制方案由于其原始动作空间中对拥塞窗口大小的大的修改而经常发生超时,可能不适用于缓冲不足的情况。在建议的信用分配下,Q-TCPca拥塞控制方案从某些状态下的不利动作的后果中学习和挽救,但仍不时发生超时。

  改变缓存大小(L)可能会产生影响。以下表5示出了当路由器406a处的缓存大小L变化时,各种TCP拥塞控制方案的示例性结果。

  表5 采用NewReno、Q-TCP、Qa-TCP、LP-TCP或RL-TCP的单个TCP发送机的平均性能(缓存大小L可变)

  

  

  如表5所示,在一些场景中,LP-TCP拥塞控制方案在缓存大小L较小时受益最多。当L=5时,LP-TCP拥塞控制方案与NewReno相比,吞吐量提高29%,而且RTT接近RTTmin。在本示例中,当缓存大小L增加时,LP-TCP拥塞控制方案选择较大的th(见上文表1)以获得更好的Me,并且执行与NewReno类似的操作。在本示例中,当L=50时,RL-TCP拥塞控制方案与NewReno和Q-TCP相比,RTT减少7-8%,吞吐量至少提高9%。如表5所示,LP-TCP拥塞控制方案可以充分利用10Mb/s的瓶颈链路,其缓存大小最小可达5个报文。同样如表5所示,RL-TCP拥塞控制方案可以使用更大的缓存大小(例如L=50)以充分利用10MB/s的瓶颈链路,RL-TCP拥塞控制方案也充分利用了带宽,同时保持RTT接近RTTmin。但是,NewReno需要150个报文的缓存大小,时延高达82ms。

  多个发送机

  本章节考虑哑铃网络600中存在多个发送机602的场景,包括“常开”发送机和“开-关”发送机。

  在第一种场景中,四个发送机602视为“常开”发送机。表6示出了当所有发送机使用相同的TCP拥塞控制方案时,每个发送机的性能。对于RL-TCP拥塞控制方案,δ1=0.2,δ2=0.1。在本示例中,与NewReno相比,LP-TCP拥塞控制方案在时延略微增加的情况下,吞吐量可以提高5%;RL-TCP拥塞控制方案在时延类似的情况下,吞吐量可以提高5%。在本示例中,RL-TCP拥塞控制方案提供了针对Me的最佳吞吐量和时延权衡,尽管其性能方差稍高(仅在本示例中)。

  表6 当采用相同CC方案的四个“常开”发送机共存于L=50的瓶颈链路时,每个发送机的平均性能

  

  

  在第二种场景中,四个发送机602视为“开-关”发送机。在本示例中,当发送机处于开机状态时,发送机按照平均值为10MB的指数分布发送字节。然后,发送机根据平均值为0.5s的指数分布关机一段时间。。以下表7示出了当所有发送机采用相同的TCP拥塞控制方案时,每个发送机的平均性能在本示例中,缓存大小(L)为50个报文。对于RL-TCP拥塞控制方案,δ1=0.4,δ2=0.1。

  表7 当采用相同CC方案的四个“开-关”发送机共存于L=50的瓶颈链路时,每个发送机的平均性能

  如表7所示,在这种动态情况下,Q-TCP拥塞控制方案表现不佳。但是,本示例中的Qa-TCP拥塞控制方案可以说比Q-TCP拥塞控制方案执行得更好,其吞吐量与NewReno拥塞控制方案相当,而时延只是略有增加。与NewReno拥塞控制方案相比,LP-TCP拥塞控制方案实现了更高的吞吐量和更低的丢包率,尽管在本示例中时延略有增加。在本示例中,RL-TCP拥塞控制方案实现了最高的Me,其性能的方差较大。

  公开了两种针对有线网络的基于学习的TCP拥塞控制协议,即LP-TCP和RL-TCP拥塞控制方案。比较了所公开的TCP拥塞控制方案与NS2中的NewReno拥塞控制方案的性能。通过适当的训练,RL-TCP拥塞控制方案相较于TCP NewRenoP拥塞控制方案性能更优,而LP-TCP拥塞控制方案在平均吞吐量和丢包率上优于NewReno。在某些实施例中,LP-TCP和RL-TCP拥塞控制方案提高了网络瓶颈带宽的利用率,从而提高了通信效率,这可能表明网络提供商获得了更多的收入。

  图8示出了根据本公开某些实施例的用于执行本文所述方法的实施例处理系统900的框图,实施例处理系统900可以安装在主机设备中。如图所示,处理系统900包括处理器904、存储器906和接口910-914,其布置可以(或可以不)如图所示。处理器904可以是用于执行计算和/或其他处理相关任务的任何组件或组件集合,存储器906可以是用于存储供处理器904执行的程序和/或指令的任何组件或组件集合。在一个实施例中,存储器906包括非瞬时性计算机可读介质。接口910、912、914可以是用于处理系统900与其他设备/组件和/或用户进行通信的任何组件或组件集合。例如,接口910、912、914中的一个或多个可用于将来自处理器904的数据、控制或管理消息传输到安装在主机设备和/或远程设备上的应用。作为另一个示例,接口910、912、914中的一个或多个可用于用户或用户设备(例如个人计算机(personal computer,PC)等)与处理系统900进行交互/通信。处理系统900可以包括图中未示出的附加组件,例如长期存储(例如非易失性存储器等)。

  在一些实施例中,处理系统900包括在正在接入电信网络的网络设备中,或者作为电信网络一部分的网络设备中。在一个示例中,处理系统900位于无线或有线电信网络中的网络侧设备中,例如基站、中继站、调度器、控制器、网关、路由器、应用服务器、或电信网络中的任何其他设备。在其他实施例中,处理系统900位于接入无线或有线电信网络的用户侧设备中,例如移动台、用户设备(user equipment,UE)、个人计算机(personal computer,PC)、平板电脑、可穿戴通信设备(例如智能手表等)或用于接入电信网络的任何其他设备。

  在一些实施例中,接口910、912、914中的一个或多个将处理系统900连接到收发器,其中收发器用于通过电信网络发送和接收信令。

  图9示出了根据本公开某些实施例的用于通过电信网络发送和接收信令的收发器1000的框图。收发器1000可以安装在主机设备中。如图所示,收发器1000包括网络侧接口1002、耦合器1004、发送器1006、接收器1008、信号处理器1010和设备侧接口1012。网络侧接口1002可以包括用于通过无线或有线电信网络来传输或接收信令的任何组件或组件集合。耦合器1004可以包括用于促进通过网络侧接口1002进行双向通信的任何组件或组件集合。发送器1006可以包括用于将基带信号转换为适于通过网络侧接口1002传输的调制载波信号的任何组件或组件集合(例如上变频器、功率放大器等)。接收器1008可以包括用于将从网络侧接口1002接收到的载波信号转换为基带信号的任何组件或组件集合(例如下变频器、低噪声放大器等)。信号处理器1010可以包括用于将基带信号转换为适于通过设备侧接口1012传输的数据信号(或者反之亦然)的任何组件或组件集合。设备侧接口1012可以包括用于在信号处理器1010与主机设备的组件(例如处理系统900、局域网(local areanetwork,LAN)端口等)之间传输数据信号的任何组件或组件集合。

  收发器1000可以在任何类型的通信介质上发送和接收信令。在一些实施例中,收发器1000通过无线介质发送和接收信令。例如,收发器1000可以是用于根据以下协议进行通信的无线收发器:无线电信协议,例如蜂窝协议(例如长期演进(long-term evolution,LTE)等);无线局域网(wireless local area network,WLAN)协议(例如Wi-Fi等);或任何其他类型的无线协议(例如蓝牙、近距离无线通信技术(near field communication,NFC)等)。在这些实施例中,网络侧接口1002包括一个或多个天线/辐射单元。例如,网络侧接口1002可以包括单天线、多个独立天线或用于多层通信的多天线阵列,例如单输入多输出(single input multiple output,SIMO)、多输入单输出(multiple input singleoutput,MISO)、多输入多输出(multiple input multiple output,MIMO)等。在其他实施例中,收发器1000通过有线介质(例如双绞线电缆、同轴电缆、光纤等)发送和接收信令。特定处理系统和/或收发器可以采用所示的所有组件,或者仅采用组件的一个子集,并且不同设备的集成程度可能不同。

  应理解,本文提供的实施例方法中的一个或多个步骤可以由相应的单元或模块执行。例如,信号可以由发送单元或发送模块来发送。信号可以由接收单元或接收模块来接收。信号可以由处理单元或处理模块进行处理。各个单元/模块可以是硬件、软件或其组合。例如,一个或多个单元/模块可以为集成电路,例如现场可编程门阵列(fieldprogrammable gate array,FPGA)或专用集成电路(application-specific integratedcircuit,ASIC)。

  尽管本公开中所述的各种系统和组件被描述和图示为包括以特定方式布置的特定组件,但本公开设想这些系统和组件可以包括附加组件、较少组件、不同组件或这些情况的组合。此外,本公开中所述的每个系统和组件可以使用硬件、固件和软件的任何合适的组合来实现。

  尽管本发明将特定组件描述为执行特定操作,但本公开设想这些操作可以由其他组件来执行。此外,尽管本发明描述或图示了以特定顺序发生的特定操作,但本公开设想任何合适的操作可以按照任何合适的顺序来执行。此外,本公开设想任何合适的操作可以按照任何合适的顺序重复一次或多次。尽管本公开描述或图示了按顺序执行的特定操作,但本公开设想任何合适的操作可以在适当的情况下基本上同时执行。本文中所描述或图示的任何合适的操作或操作序列可以适当地中断、挂起或由其他进程(例如操作系统或内核)以其他方式控制。这些动作可以在操作系统环境中运行,或者作为占用全部或大部分系统处理的独立例程运行。

  为本专利文档中使用的特定术语和短语进行定义是有帮助的。术语“包括”和“包含”以及它们的派生词表示没有限制的包括。术语“或者”是包容性的,意为和/或。短语“与......关联”和“与其关联”以及其派生的短语意味着包括,被包括在内、与......互连、包含、被包含在内、连接到或与......连接、耦合到或与......耦合、可与......通信、与......配合、交织、并列、接近、被绑定到或与......绑定、具有、具有......属性,等等。

  虽然已参考说明性实施例描述了本发明,但此描述并不意图限制本发明。所属领域的技术人员在参考该描述后,将会明白说明性实施例的各种修改和组合,以及本发明其他实施例。因此,所附权利要求书意图涵盖任何此类修改或实施例。

《网络通信中的拥塞控制.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)