2016-04-17 8 views
0

UDPスループットを測定するためにDockerコンテナ内にnuttcpを実行しようとしています。ただし、クライアントインスタンスを開始するときはいつでも、サーバーインスタンスは、次のエラーメッセージでクラッシュします。Segmentation fault (core dumped)Docker内でnuttcpを実行できません

ファイル/proc/sys/net/ipv4/tcp_adv_win_scaleが存在しないため、nuttcpがクラッシュするというDebianのthis bug reportが見つかりました。私はnettcpが動作している別のマシン上のそのファイルをチェックし、そのファイルの唯一の内容が1であることを確認しました。だから私はこのような私のドッカーコンテナ内でこのファイルを追加しようとしました:

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

だから、このファイルを手動で作成することはできませんね。バグレポートには、ソースコード(nuttcp-6.1.2.c)に適用可能なパッチも含まれていますが、nuttcpapt-getをインストールしたので、そのパッチの適用方法はわかりません。

誰もこの問題を解決する方法を知っていますか?

答えて

1

ドッカーコンテナは、独自のnetwork namespaceで実行されます。ネームスペース内では、すべてのTCPシステムパラメータにアクセスすることはできません。 Docker bugtrackerにsimilar issueがあります。"ホースにはコンテナ内のファイルが見つからないわけではありません。セキュリティとカーネルのバージョンと関係があります。"これは、残念ながら、これを回避する方法ではありません。

考えられる1つの解決方法は、起動時に--net=hostフラグを使用して、ホストのネットワーク名前空間内でコンテナを起動することです。ただし、明示的な目標がDockerのネットワークスタックのネットワークスループットを測定することであれば、それはおそらくオプションではありません。

また、Debianパッケージにカスタムパッチを適用する方法については、this tutorialに従ってください。これは基本的に以下に要約:

  1. apt-get build-dep <package>
  2. debuild -b -uc -us
  3. で修飾されたパッケージを構築 dpatch
  4. を使用してソースコードにパッチを適用すると、依存関係を構築インストールapt-get source <package>
  5. とソースパッケージをインストールします
  6. と変更パッケージをインストールすると、dpkg -i <package>.deb
+0

私は、開発者のウェブサイトから最新バージョン(7.3.3)[here](http://nuttcp.net/nuttcp/nuttcp-7.3.3/nuttcp-7.3.3.x86_64)のバイナリを見つけました。これは問題なく実行されます。しかし、パッチを適用する方法を説明してくれてありがとう。 –

関連する問題