1

かなり大量のグーグルプロトコルバッファメッセージをVPN経由でVPN経由でインターネット経由でTCP経由で送信しますが、エラー率が比較的高いように感じます(たとえば、ブールフィールドがfalseからtrueまたはsthに類似しています)。10,000人に1人から50,000人に1人の間の何か。

それは可能ですか?ウィキペディアは、TCPのチェックサムは弱いと述べていますが、これは通常、基盤となるプロトコルで修正されています。

TCPチェックサムは、最新の標準による弱いチェックです。ビットエラーレートが高いデータリンク層には、追加のリンクエラー訂正/検出機能が必要になる場合があります。弱いチェックサムは、CRCの一般的な使用、またはPPPやイーサネットフレームで使用されるようなTCPとIPの両方の下のレイヤー2でのより優れた整合性チェックによって部分的に補償されます。

予想されるエラー率がどうあるべきかを経験した人はいますか?上記のレートが可能である場合、それを修正するための推奨/最も簡単な方法は何でしょうか?フィールドを複製しますか?メッセージを2回送信しますか?それとも、信頼性を高めるためにできることが他にありますか?

ありがとう

4

2 に答える 2

3

いいえ、それは(合理的に)不可能です。簡単に確認できるはずのハードウェア障害(メモリ、ネットワークカードなど)が発生していないと仮定すると、複数のコンピューターで発生しますか?

アプリケーションコード内に無効なメモリアクセスなどがあるか、送信するデータが意図したものではない可能性があります。valgrindなどでコードを実行してみてください。

通常の操作の一部としてフィールドを複製するという考えはばかげているように思われます。基本的に、実際には誰もそれを行わないので、どちらも行う必要はありません。システムにはサイレントデータの破損に対する保護の複数の層があるため、それはおそらく単純な(またはそれほど単純ではない)アプリケーションエラーです。

于 2011-12-23T03:03:47.387 に答える
1

John Zwinkの答えは、結果が合理的ではなく、アプリケーション層での修正が誤りであるという点で正しいです。

ネットワークカードがこれほど多くのエラーを引き起こした場合、VPN(SWレイヤーを想定)は混乱し、接続を失います。

提案されているように、Valgrindを試して、SWがバッファーを破損していないかどうかを確認してください。

また、メモリの「チェックが簡単」ではないように思われる場合は、memtest86、http://www.memtest86.comをお勧めします。これは、USBドライブまたはCDに貼り付けて、一晩実行するか、週末に。

于 2015-05-01T00:42:24.500 に答える