2016-04-17 5 views
0

Ich versuche nuttcp in einem Docker-Container auszuführen, um den UDP-Durchsatz zu messen. Wenn ich die Clientinstanz starte, stürzt die Serverinstanz jedoch mit der folgenden Fehlermeldung ab: Segmentation fault (core dumped).Ich kann nuttcp nicht in Docker ausführen

Ich fand this bug report für Debian, die besagt, dass nuttcp abstürzt, weil die Datei /proc/sys/net/ipv4/tcp_adv_win_scale nicht existiert. Ich überprüfte diese Datei auf einem anderen Computer, auf dem nettcp funktioniert, und sah, dass der einzige Inhalt dieser Datei 1 war. Also versuchte ich so diese Datei in meinem Docker Container hinzuzufügen:

[email protected]:/proc/sys/net/ipv4$ echo 1 > tcp_adv_win_scale 
bash: tcp_adv_win_scale: No such file or directory 

Also du denken, es ist nicht möglich, diese Datei manuell zu erstellen. Der Fehlerbericht enthält auch einen Patch, der auf den Quellcode angewendet werden kann (nuttcp-6.1.2.c), aber seit ich nuttcp mit apt-get installiert habe, weiß ich nicht, wie ich diesen Patch anwenden soll.

Hat jemand eine Idee, wie man dieses Problem löst?

Antwort

1

Docker-Container laufen in ihrem eigenen . In einem Namespace haben Sie keinen Zugriff auf alle TCP-Systemparameter. Es gibt eine similar issue im Docker Bugtracker, in der festgestellt wurde, dass "[t] Schlauch Dateien im Container nicht fehlen. Das hat mit Sicherheit und der Kernel-Version zu tun." Also das ist, leider, nicht um.

Eine Lösung, die ich denken könnte, ist den Container im Netzwerk-Namespace des Hosts zu starten, mit dem --net=host Flag beim Start. Wenn Sie jedoch explizit den Netzwerkdurchsatz des Netzwerkstapels von Docker messen möchten, ist dies für Sie wahrscheinlich keine Option.

Alternativ können Sie nuttcp selbst patchen, indem Sie this tutorial folgen, um benutzerdefinierte Patches auf Debian-Pakete anzuwenden. Dies läuft darauf hinaus im Prinzip bis auf die folgenden:

  1. das Quellpaket Installation mit apt-get source <package>
  2. Abhängigkeiten bauen mit apt-get build-dep <package>
  3. Aufbringen des Pflasters auf der Quellcode mit dpatch
  4. Aufbau der modifizierten Paket mit debuild -b -uc -us
  5. Installation
  6. und die Installation des modifizierten Pakets mit dpkg -i <package>.deb
+0

Ich habe gerade die Binärdatei einer neueren Version (7.3.3) [hier] (http://nuttcp.net/nuttcp/nuttcp-7.3.3/nuttcp-7.3.3.x86_64) von der Entwickler-Website gefunden. Dieser läuft ohne Probleme. Aber danke, dass Sie erklärt haben, wie Sie den Patch anwenden. –