ホームページ  >  に質問  >  本文

linux - tcp_tw_reuse 和 tcp_tw_recycle 在原理上有什么区别?

我的理解是,reuse 只会抛弃时间戳后退的 fin 包来,而 recycle 会抛弃所有时间戳后退的包,不止 fin 包,这个理解对不对?

如果对,那么如果遇到了 NAT 后面的多个客户端,reuse 打开的情况下为什么能够正确关闭连接?NAT 后面的多个客户端的时钟不一定一致,fin 包有可能时间戳后退,就被抛弃了。

ringa_leeringa_lee2744日前1212

全員に返信(1)返信します

  • 天蓬老师

    天蓬老师2017-04-17 16:05:21

    まず第一に、この質問を Stackoverflow に投稿する必要があります。中国語コミュニティにはまだマスターが非常に少なく、具体的なポイントはさらに少ないです。
    net.ipv4.tcp_tw_recycle = {0|1} timewait 高速リサイクルを有効にするかどうか; 注: この機能をオンにすると、NAT 環境で重大な問題が発生する可能性があります。TCP には動作があるため、各接続の最新のタイムスタンプがキャッシュされ、その後の時間がリクエスト スタンプがキャッシュ内のタイムスタンプより小さい場合、スタンプは無効とみなされ、対応するリクエスト メッセージは破棄されます。Linux がこの動作を有効にするかどうかは tcp_timestamptcp_tw_recycle に依存し、前者のパラメータはデフォルトで有効になります。次のパラメータを有効にすると、この機能が有効になります。したがって、NAT 環境の場合は、セキュリティ上の理由から無効にする必要があります tcp_tw_recycle。別の解決策: tcp_timestamps を 0 に設定し、tcp_tw_recycle を 1 に設定すると、期待どおりに動作しません。tcp_timestamps が閉じられると、tcp_tw_recycle が開いても、後続のパラメーターは効果がありません。このとき、net.ipv4.tcp_max_tw_bucketsの値を小さくすると、2つの接続数を大幅に減らすことができます。

    net.ipv4.tcp_tw_reuse = {0|1} の再利用を有効にするかどうか、つまり、新しい TCP 接続に TIME-WAIT sockets を使用することを許可するかどうか、つまりデータ構造を収集しないようにするかどうかを変更するだけで継続して使用できます。これはあなたが言及した機能ではありません。

    返事
    0
  • キャンセル返事