实现两个TCP拥塞控制算法

时间:2015-05-17 18:57:05

标签: omnet++ inet

首先,我很抱歉这不是这个问题的正确论坛。我试图在OMNeT / INET中为我的论文实现两个tcp拥塞控制算法。

第一个是TCP-FIT,我在http://www.tcpengines.com/wp-content/uploads/2013/11/tcp-whitepaper.pdf找到了伪代码。 另一个是TCP-Illinois,我在http://lxr.free-electrons.com/source/net/ipv4/tcp_illinois.c找到了一个linux实现。

我无法理解如何在这两种机制中实现一些变量和方法,我将非常感谢您帮助解决它们。对变量类型的一些帮助也是受欢迎的。

简而言之,对于TCP-FIT:

  • epoch_start update_epoch (我知道epoch可以与RTT同义)
  • alpha (value)
  • n - 它是什么?
  • RTT_cnt计算是否正确(在receivedDataAck()下)?
  • tcpFitUpdateN()函数是否正确?
  • 我是否实现了伪代码?

对于TCP-Illinois:

  • snd_cwnd_cnt - 我认为这只是一个已经确认了多少数据包的计数器。
  • snd_cwnd_clamp - 拥堵窗口的上限,我想我没事。
  • end_seq - 似乎需要,但我不明白" ack"参数在 if(after(ack,ca-> end_seq)){...} 之后,来自函数 tcp_illinois_cong_avoid(struct sock * sk,u32 ack,u32 acked){ ...}
  • tp-> snd_nxt - 相当于OMNeT ++ state-> snd_nxt?
  • sum_rtt max_rtt - 我是否正确计算这些值?

据我了解,在阅读了linux实现中提供的论文之后,除了AIMD部分之外,TCP-Illinois的运行方式与TCP-NewReno相同。我敢打赌这意味着我可以保持TCP-NewReno的大部分代码完好无损,除了TCP-SACK部分和AIMD。

我还要感谢有关实现的任何提示,当然还有对代码正确性的任何评论。我目前和几乎完整的实现可以在github上找到https://github.com/SpyrosMArtel/TCP-Fit-Illinois

如果您需要更多细节或说明,请随时打扰我。

提前谢谢。

0 个答案:

没有答案