OpenStackマシンに大きなファイルを送信するのに問題があります。
私たちのインターネット接続はLTEを超えているため、不良パケットが予想されます。ただし、TCPを介してデータを送信しても、数MBを送信するとデータが破損します。
TCPチェックサムが実際に検証されているかどうかをテストしたいので、無効なチェックサムを含むTCPパケットを送信するツールが必要です。
任意のIPパケットを送信できるプログラムもありますが、接続も開始する(三者ハンドシェイクなどを行う)ツールがいいと思います。
次に、tcpdump
を使用して、サーバーがパケットにACKを送信するか、再送信を要求するかを確認できます。 (ツールがこれも実行できる場合は、さらに優れています。)
いくつかの考えと注意:
veth
TCPチェックサム破損のバグがこのバグを説明します。これをデバッグする方法の他のアイデアも歓迎します。
https://github.com/kubernetes/kubernetes/issues/18898
これを行う方法を説明します。
ここに(短縮された)バージョンがあります:
受信側のマシンでnc -l -p 12345
を実行します
送信側のマシンで(i=0; while true; do echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $i; i=$((i+1)); sleep 1; done) | netcat IP_OF_RECEIVING_MACHINE 12345
を実行します
パッケージを破損するには、送信側のマシンで次のコマンドを実行します。
Sudo tc qdisc add dev eth0 root netem corrupt 100%; sleep 10; Sudo tc qdisc del dev eth0 root netem
10秒間、eth0のすべてのパッケージが破損することに注意してください。
チェックサムが正しく機能する場合、10秒間テキストを受信せず、すぐに受信します。ただし、チェックサムが機能しない場合は、テキストが破損します。
Hping、hping3などのパケット作成ツールを使用できます。下のリンクを確認してください。とても便利です。
上記のリンクから、これがあなたが探しているものだと思います。
-b --badcksum(しよう)不正なIPチェックサムでパケットを送信する多くのシステムは、パケットを送信するIPチェックサムを修正するため、代わりに不正なUDP/TCPチェックサムを取得します。
プログラミングスキル(ソケットプログラミング、Linux上のBSDソケット、グーグルできます)がある場合は、rawソケットを使用してダミーのtcpパケットを送信し、構築することができます独自のトランスポート層パケット。