tcp関連の/proc パラメータ復習

/proc/sys/net/ipv4/ 以下のアレ。高負荷時にはチューニングすると良いらしいけど、これを設定して効果が出るような状況にはまだ出くわしたことない。

tcp_fin_timeout

default: 60 (秒)

tcpのシーケンスでFIN-WAIT2からTIME_WAIT に移行するまでの待ち時間。TIME_WAITが残っている時間ではない。TIME_WAIT 自体の時間はkernelをrebuildしないとダメ?

tcp_max_tw_buckets

TIME_WAIT 状態を保持する上限数

tcp_tw_reuse

default: 0
TIME_WAITを自分からの接続で再利用する。1でよさげ

tcp_tw_recycle

default: 0
TIME_WAITを相手からの接続で再利用する
これを有効にすると同一IPからのパケットが同時に来た時に、timestampの古いほうのパケットを破棄してしまうのでNAT環境 (サーバ側だけじゃなくて、クライアント側も) だと影響あるので使わないほうが良い。 閉じたネットワーク内で、かつTIME_WAITを再利用したい場合にのみ使うと良い?

tcp_syncookies

CONFIG_SYNCOOKIES 付きでのコンパイルが必要。SYN flood対策。最近のディストリはだいたいdefaultで有効。

tcp_max_syn_backlog

default: 1024 ?

クライアントからのACK(3way ハンドシェイクの最後) を受け取っていない接続リクエストのキューの保持数。これを超えるとkernelはリクエストを捨てる。/proc/sys/net/core/somaxconn も増やしたほうがいい??