RemyCC Algorithm

该算法为UCR CS204 Advanced Computer Networks 项目,目的在于深入研究由MIT提出的RemyCC算法,并且在不同环境下进行测试,来探究其性能,尝试找出其限制。

总结

该论文从当下TCP拥塞控制协议的出发点进行研究,认为目前现存的算法都是人为地特定不同网络环境来设计算法,这样子虽然针对特定网络环境有良好的表现,但是比较笨重。于是设计了拥塞控制算法生成器Remy,其生成的拥塞控制协议称为RemyCC,并且在评估过程中明显优于经典的TCP拥塞控制算法。

拥塞控制问题的建模

下面首先介绍Remy的三个输入参数:先验假设、流量发送模型、目标优化方程。

网络的先验假设

从节点的角度来看,我们可以认为网络是随机产生的。并且我们可以将网络假设为 Markovian,即其具备“将来的状态只与现在的状态相关”这样的性质。

接下来,我们将使用三个参数来描述一个网络:bottleneck links的速度,传输延迟时间以及链路的复用情况。

流量发送模型

Remy 将给定的链路之间的容量视为一个随机过程。即switch可能会在随机事件内进行数据传输,之后随机关闭一段时间。节点之间相互独立不影响。

目标优化方程

TCP的数学模型中,有提到一个unitility function

$$\displaystyle\frac{x^{1-\alpha}}{1-\alpha}$$

该函数在alpha取不同值的时候有不同的优化目标,也因此有了不同指标之间的trade off。该论文针对吞吐量以及RTT设计了一个新的目标方程

$$U_{\alpha}(x) - \delta \times U_\beta(y)$$

其中x表示单条路径上的平均吞吐量,y表示该路径上的RTT延迟。这里 alpha 和 beta 参数是 fairness 与 efficiency之间的权衡;而 delta 表示的是延迟与吞吐量之间的权衡。

Remy的生成算法过程

下面首先介绍sender 以及 RemyCC的工作原理,之后介绍Remy算法的细节。

sender

每当sender收到一条ACK,它将会记录下列数据。称这样的三元组为 memory:

  1. ack_ewma: 两次ACK间隔时间的估测指
  2. send_ewma: 两次ACK中TCP时间戳的估测值
  3. rtt_ratio: 最近观测到的RTT 与 观测到的最小RTT 之比

其中ewma表示 exponentially-weighted moving average,是使用观测过的历史值来估测真值的方法。

需要注意的是,其中没有记录经典TCP拥塞控制协议中的 packet loss 以及 RTT,这是因为假设了网络状态良好;并且想要算法从RTT的变化趋势中学习,而不是具体的RTT。

mapping the memory to an action

RemyCC在观测到一条memory之后,将会根据其lookup table查找对应的action。设计该lookup table的任务是由Remy来完成的。具体来说,一条action包含以下信息:

  1. m: cwnd的乘系数,表示将要对窗口进行的变化
  2. b: cwnd的加系数,与m相配合来完成窗口的变化
  3. r: 连续发送的最小时间间隔

算法过程

Remy首先根据给定的网络参数生成多个随机的网络 (16个或以上),之后运行当前的RemyCC算法在生成的网络上 (运行大概100s)。RemyCC的起始状态为映射所有的memory到一条规则 (m=1, b=1, r=0.01)

详见论文

思考

  1. 论文中关于memory只含有三个参数,其中不包含packet loss 以及具体的 RTT,那么可以针对这一假设探究在loss较大 或者 RTT较大的网络中的算法表现

  2. 关于网络的先验假设参数,是否还有其他的可供描述参数?并且其对网络的影响较大?如bandwidth

  3. 用Remy搜索找到的最佳RemyCC,当把它用于和生成RemyCC时使用的网络相似的网络上时,效果当然非常不错,但一旦用于不同类型网络时,效果就不太如意了。这里当然是因为RemyCC只能预测它所见过的网络的最优决策,一旦遇到没见过的网络,RemyCC仍使用本身的预见方法来应对,这显然是不够灵活的。

    作者:折佩zhepei
    链接:https://www.jianshu.com/p/af616f4aa822
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    该算法虽然属于贪心暴力算法,但是因为十分依靠输入的参数,所以感觉有一点点神经网络算法的特点:如十分依赖输入集,在其他网络下的表现可能不是很好。或许可以通过测试验证这一点。

参考资料

0%