お客様の1人が、アプリケーション(PC上)からサーバー(地理的に異なる場所)にデータを送信するのに問題があります。1100バイト未満のパケットを送信する場合、すべてが正常に機能しますが、これを超えると、TCPが数秒ごとにパケットを再送信し、応答がないことがわかります。テストに使用しているパケットは約1400バイトです(ただし1472未満)。1472バイトのICMPpingをwww.google.comに送信して、応答を得ることができます(したがって、ルーター/最初の数ホップではありません)。
私たちのアプリケーションがこれらのパケットにDFフラグを設定していることがわかりました。サーバーに向かう途中のルーターのMTUは1100以下であり、パケットをドロップしていると思います。
これは5000人に1人のクライアントに影響しますが、すべての人のルートが異なるため、これは予想されます。
データはSOAPエンベロープであり、SOAP応答が返されることを期待しています。なぜそれを行うのかを正当化することはできません。これを行うためのコードは前の開発者によって書かれました。
それで...アプリケーションデータのTCPパケットにDFフラグを設定することの利点または正当性はありますか?
ネットワーク診断アプリケーションに必要な理由は考えられますが、私たちの状況では必要ありません(データが断片化されているかどうかに関係なく、エンドポイントに到達する必要があります)。私たちのシステム管理者の1人は、SSLを使用することと関係があるかもしれないと言いましたが、私が知る限り、SSLはストリームのようなものであり、断片化に関係なく、ストリームが最後に再構築される限り、問題はありません。
正当な理由がない場合は、アプリケーションの動作を変更します。
前もって感謝します。