まず、MTUとMSSの違いを明確にしましょう。これらはスタックの異なるレイヤー(2と3)に属しています。
TCP / IPは非常に残念なレイヤードケーキであり、どちらも断片化をサポートしますが、異なる方法であり、この問題については協力していません。
IPフラグメンテーションは、TCPが認識していないものです。実際、IPフラグメントの1つが失われた場合、シリーズ全体が失われたと宣言されます。TCPの場合はそうではありません。同じTCPストリームの一部であるIPデータグラムの1つが失われ、それらがTCPによってフラグメント化された場合、失われた部分の再送信のみが必要です。
この混乱の主な理由は、ルーターが、上位(TCP)プロトコルを理解していなくても、 MTUが異なる2つの物理ネットワーク間でインピーダンス整合できる必要があるためです。
現在、すべての最新のネットワークは「ジャンボフレーム」をサポートしています(ジャンボフレームを送信できるようにNICを構成する必要があります。すべての最新のNICは、常に最大90xxバイトのフレームを受信できます)。
いつものようにMTUを増やすと、
- MSSを増やさない限り役に立たない
- パフォーマンス(帯域幅)を向上させ、
- パフォーマンスを損なう(最初のバイトまでのゼロロードレイテンシ)
たとえば、Gigalinxの実装やGigEビジョンなどの一部のアプリケーションでは、MTUを増やす必要があります。高速ネットワークでは、1500バイトのMTUのオーバーヘッドは耐えられません。
アーキテクトとして、自分自身に問うことは、アプリケーションが実際に何をしているのかということです。「関連するパケットサイズ」がある場合、「最初の3kBのデータが受信されるまでは、残りのデータとは何の関係もありません」という意味で、この小さなパフォーマンスエッジが本当に必要な場合は、MTUを増やします。その前に、よりイーサネットに適したプロトコルを優先してTCPを完全に削除することを検討してください。もちろん、自分で実装するのではなく、ZeroMQのような適切に機能するものを選択してください。
2番目の質問:断片化しないでくださいはIP設定です。通常、異なるMTUのネットワークと一致することが期待されるルーターでのみ役立ちます。「他のネットワークに中継できない限り、パケットを破棄する」という意味です。これが時々当てはまる場合、TCPはこの層を越えて機能することができません。再送信を試みて何度も失敗し、最終的には切断され、それ以降の動作はアプリケーションの実行内容によって異なります。これはインターネット上の典型的な状況であり、公共の誤って構成されたWi-Fiネットワークとホームネットワークがあります。Facebookを閲覧することはできますが、実際にはYouTubeで何も見ることができません。これが理由です。ネットワーク管理者はその理由を知ることは決してありません。