【问题标题】:Are packetdrill tests portable?packetdrill 测试是否可移植?
【发布时间】:2016-07-02 08:37:05
【问题描述】:

最近我不得不使用出色的 google 的 packetdrill 工具编写测试。 (https://github.com/google/packetdrill)

总而言之,它是一个可以测试我们计算机的 TCP(或 IP 或 UDP)堆栈的工具,只需编写一些结合 C 命令、预期出站和入站数据包的测试用例。

但是,我不知道这些测试的可移植性如何。例如,如果我在 github 目录上运行测试,几乎所有测试都失败了。

让我们把这个fr-4pkt-sack-linux.pkt

// Test fast retransmit with 4 packets outstanding, receiver sending SACKs.
// In this variant the receiver supports SACK.

// Establish a connection.
0   socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
+0  setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0

+0  bind(3, ..., ...) = 0
+0  listen(3, 1) = 0

+0  < S 0:0(0) win 32792 <mss 1460,sackOK,nop,nop,nop,wscale 10>
+0  > S. 0:0(0) ack 1 <mss 1460>

+.1 < . 1:1(0) ack 1 win 257
+0  accept(3, ..., ...) = 4

// Send 1 data segment and get an ACK, so cwnd is now 4.
+0  write(4, ..., 1000) = 1000
+0  > P. 1:1001(1000) ack 1

我收到以下错误:

fr-4pkt-sack-linux.pkt:19: error handling packet: live packet field ipv4_total_length: expected: 1040 (0x410) vs actual: 297 (0x129)
script packet:  0.100283 P. 1:1001(1000) ack 1 
actual packet:  0.100277 P. 1:258(257) ack 1 win 29200 

这似乎表明我的计算机(它是 64 位 Ubuntu gnome 16.04)仅发送 257 个字节而不是第一个数据包的 1000 个字节(窗口缩放参数被简单地忽略)。

如果我运行其他测试,例如sack-shift-sacked-1-2-3-fack.pkt,这似乎表明我的计算机忽略了 wscale 参数。

所以,我的问题是:

  • 忽略 wscale 参数是否正常?我的电脑是否表现异常?
  • 如果它是正常的(就像它是一些特定的 linux TCP 功能),我们如何确保在我的计算机上运行的 packetdrill 测试将在其他计算机上运行?

提前谢谢你

【问题讨论】:

    标签: c linux networking tcp


    【解决方案1】:

    解决方案非常简单,但我会为那些处于相同情况的人保留这个主题。

    事实上,我只是通过 sysctl 禁用了 TCP 窗口缩放。

    我这里使用了一个配置文件:http://cnp3book.info.ucl.ac.be/2nd/html/_downloads/sysctl-cnp3.conf

    我用sysctl -w variable 更改了变量,但我不知道这些更改在重新启动计算机后仍然存在。

    所以,不要再犯我以前犯过的错误:使用 sysctl 时要小心,它可能会损坏您的整个计算机(如果您在测试后忘记重置这些设置)。

    重置为默认值后,它现在可以完美运行。因此,packetdrill 测试的可移植性似乎没问题(如果没有新的主要 TCP 功能)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2017-03-11
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多