日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
TCP(4) FreeBSD カーネルインタフェースマニュアル TCP(4) 名称 tcp -- インターネット送信制御 (トランスミッションコントロール) プロトコル 書式 #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/tcp.h> int socket(AF_INET, SOCK_STREAM, 0); 解説 TCP プロトコルは、信頼性があり、フロー制御された、双方向のデータ送信を提 供します。それは、SOCK_STREAM 抽象化をサポートするために使用されるバイト ストリーム型プロトコルです。TCP は、標準のインターネットアドレス形式を使 用し、さらに、ホストごとの ``ポートアドレス'' の集まりを提供します。した がって、各アドレスは、ピア (相手) エンティティを識別するホストで特定の TCP ポートを備えた、ホストとネットワークを指定するインターネットアドレス で構成されています。 TCP プロトコルを利用するソケットは、``アクティブ'' (能動) か ``パッシブ'' (受動) のいずれかです。アクティブ (能動) のソケットは、パッシブ (受動) の ソケットに接続を開始します。デフォルトでは、TCP ソケットは、アクティブで 作成されます。パッシブのソケットを作成するためには、bind(2) システムコー ルでソケットをバインドした後に、listen(2) システムコールを使用しなければ なりません。パッシブのソケットだけが着信接続を受け付けるために accept(2) 呼び出しを使用できます。クティブのソケットだけが接続を開始するために connect(2) 呼び出しを使用できます。 パッシブのソケットは、複数のネットワークからの着信接続要求に合わせるため に、それらの位置を ``あいまいに指定'' することができます。この技術は、 ``ワイルドカードアドレシング'' と呼ばれ、単一のサーバが複数のネットワーク でクライアントに対するサービスを提供できます。すべてのネットワークで lis ten する (接続を受け付ける) ソケットを作成するためには、インターネットア ドレス INADDR_ANY がバインドされていなければなりません。TCP ポートは、こ の時点でも指定できます。ポートが指定されていないと、システムがポートを割 り当てます。接続がいったん確立されると、ソケットのアドレスは、ピア (相手 側) エンティティの位置によって固定されます。ソケットが割り当てられたアド レスは、パケットが送受信されているネットワークインタフェースに関連してい るアドレスです。通常、このアドレスは、ピア (相手側) エンティティのネット ワークに一致しています。 TCP は、setsockopt(2) で設定して getsockopt(2) でテストすることができる多 くのソケットオプションをサポートしています: TCP_INFO ソケットの基本的な TCP セッションに関する情報は、読み込 み専用オプション TCP_INFO を getsockopt(2) に渡すことに よって、検索されます。それは、単一の引数を受け付けます: struct tcp_info のインスタンスへのポインタです。 この API は、変更される可能性があります。このオプション によって、どのフィールドが現在書き込まれるかを決定する ために、ソースを調べます。FreeBSD 特有の追加は、ウィン ドウサイズの送信、ウィンドウサイズの受信と帯域幅で制御 されたウィンドウサイズを含みます。 TCP_CCALGOOPT 輻輳制御アルゴリズム特有のパラメータを設定するか、また は問い合わせます。詳細については、mod_cc(4) を参照して ください。 TCP_CONGESTION TCP が接続するために使用する輻輳制御アルゴリズムを選択 するか、または問い合わせます。詳細については、mod_cc(4) を参照してください。 TCP_FASTOPEN TCP Fast Open (TFO) を有効または無効にします。このオプ ションを使用するために、カーネルは、TCP_RFC7413 オプ ションを付けて構築されなければなりません。 このオプションは、listen(2) が呼び出される前または後 に、ソケットで設定することができます。このオプションが 設定された後に listen (接続を受け付け) するソケットでこ のオプションをクリアすることは、既存の TFO 接続または進 行中の TFO 接続に影響しません。新規の TFO 接続の確立を 防止するだけです。 受動的に生成されたソケットについて、接続が TFO を使用し て確立されたかどうかを判断するために TCP_FASTOPEN ソ ケットオプションを問い合わせすることができます。TFO の SYN を通して確立されて接続しますが、TFO 以外の SYN|ACK を使用するフォールバックは、TCP_FASTOPEN ソケットオプ ションが設定されることに注意してください。 RFC7413 で定義されている機能に加えて、この実装は、TFO サーバは、サーバとの TFO 接続を正常にオープンすることが できますように、クライアントのために共有鍵を所有してい るクライアントを必要とする操作の事前の共有鍵 (PSK) モー ドをサポートしています。これは、例えば、TFO サーバが内 部と外部の両方のクライアントに公開されていて、内部クラ イアントからの TFO 接続のみを許可したい環境で役に立ちま す。 操作の PSK モードで、サーバは、いつもの通り要求している クライアントに TFO クッキーを生成して送信します。しかし ながら、クライアントからの TFO SYN で受信したクッキーを 検証するとき、サーバは、クライアントが供給するクッキー が等しいことを要求します。 SipHash24(key=16-byte-psk, msg=cookie-sent-to-client) 時間ベースのローリング PSK 無効化ポリシは、システムで実 装することができるように、複数の同時に有効な事前の共有 鍵は、サポートされています。デフォルトの同時の事前に共 有鍵の数は、2 です。 これは、TCP_RFC7413_MAX_PSKS カーネルオプションで調整す ることができます。 TCP_FUNCTION_BLK この接続のために TCP が使用する関数の組を選択するか、ま たは問い合わせます。これによって、ユーザは、代替の TCP スタックを選択することができます。代替の TCP スタック は、カーネルにすでにロードされていなければなりません。 利用可能な TCP スタックをリストするためには、ずっと下の 「MIB 変数」セクションの functions_available を参照して ください。デフォルトの TCP スタックをリストするために は、「MIB 変数」セクションの functions_default を参照し てください。 TCP_KEEPINIT この setsockopt(2) オプションは、新しく確立されなかった TCP 接続のために、秒単位の u_int のソケットごとのタイム アウト引数を受け付けます。ミリ秒単位のグローバルなデ フォルトについては、さらに後ろの、「MIB の変数」のセク ションの keepinit を参照してくさい。 TCP_KEEPIDLE この setsockopt(2) オプションは、(有効にされていれば) keepalive プローブがこのソケットの接続のために送信さら れる前に、接続がアイドルでなければならない、秒単位の、 時間の量のための u_int の引数を受け付けます。listen し ている (接続を受け付けている) ソケットで設定されている なら、値は、accept(2) 上の新しく作成されたソケットに よって継承されます。ミリ秒単位のグローバルなデフォルト については、さらに後ろの、「MIB の変数」のセクションの keepidle を参照してくさい。 TCP_KEEPINTVL この setsockopt(2) オプションは、ピア (相手側) に送信さ れた keepalive プローブの間で、秒単位のソケットごとの間 隔を設定するために u_int の引数を受け付けます。listen している (接続を受け付けている) ソケットで設定されてい るなら、値は、accept(2) 上の新しく作成されたソケットに よって継承されます。ミリ秒単位のグローバルなデフォルト については、さらに後ろの、「MIB の変数」のセクションの keepintvl を参照してくさい。 TCP_KEEPCNT この setsockopt(2) オプションは、u_int の引数を受け付 け、接続が落される前に、応答なしで、送信されたプローブ の数のソケットごとの調整を許可します。listen している (接続を受け付けている) ソケットで設定されているなら、値 は、accept(2) 上の新しく作成されたソケットによって継承 されます。グローバルなデフォルトについては、さらに後ろ の、「MIB の変数」のセクションの keepcnt を参照してくさ い。 TCP_NODELAY たいていの状況の下で、TCP は、データが存在するとき、そ れを送信します。未解決のデータがまだ肯定応答されていな いとき、肯定応答がいったん受信されると、単一のパケット で送信するために少量の出力データを集めます。応答を受け 取らないマウスイベントのストリームを送信するウィンドウ システムのような少数のクライアントに関しては、このパ ケット化は、深刻な遅延を引き起こすかもしれません。ブー ル (論理演算子) オプション TCP_NODELAY は、このアルゴリ ズムを無効にします。 TCP_MAXSEG デフォルトでは、送信側-TCP と受信側-TCP は、各接続に使 用される最大のセグメントサイズを決定するためにそれら自 体の間でネゴシエート (交渉) します。TCP_MAXSEG オプショ ンで、ユーザは、このネゴシエーション (交渉) の結果を決 定し、必要ならそれを減少することができます。 TCP_NOOPT 通常、TCP は、この実装で提供される様々な TCP 拡張に従っ て、各パケットでいくつかのオプションを送信します。ブー ル (論理演算子) オプション TCP_NOOPT は、接続ベースごと に使用される TCP オプションを無効にするために提供されて います。 TCP_NOPUSH 慣例により、送信側-TCP は、``push'' (プッシュ) ビットを 設定して、あらゆるユーザの write(2) か writev(2) の呼び 出しの終わりで、(許されるなら) 直ちに送信を始めます。こ のオプションが 0 以外の値に設定されるとき、TCP は、ソ ケットがクローズされるか、または内部の送信バッファが満 たされるまであらゆるデータの送信を遅らせます。 TCP_MD5SIG このオプションは、指定されたソケットへの書き込み時に (別名 TCP-MD5 として知られている) MD5 ダイジェストの使 用を可能にします。発信トラフィックが、ダイジェスト (要 約) されます。着信トラフィックに関するダイジェスト (要 約) は、検証されます。このオプションがソケットで有効に されるとき、すべて着信と発信 TCP セグメントは、MD5 ダイ ジェストで署名されなければなりません。 FreeBSD ルータ展開におけるこの一般的の使用は、基本とな るルータをピアとなるポイントで Cisco 機器で相互に作用で きるようにすることです。この機能のサポートは、RFC 2385 に適合しています。 このオプションを正しく機能するためには、管理者が setkey(8) ユーティリティを使用して tcp-md5 キーエントリ をシステムのセキュリティ関連データベース (SADB) に追加 するのことが必要です。現時点でホストベースごとで、この エントリのみを指定することができますだけです。 宛先 (終点) のための SADB エントリを見つけることができ ないなら、システムは、あらゆる発信セグメントを送信せ ず、あらゆる着信セグメントを落とします。しかしながら、 接続ネゴシエーションの間に、SADB エントリがホスト間に存 在しないなら、非署名セグメントが受け付けられます。非署 名セグメントが受け付けられたとき、確立された接続は、MD5 ダイジェストで保護されません。 TCP_STATS stats(3) フレームワークを使用して接続レベル統計の収集を 管理します。 各落とされたセグメントは、TCP プロトコルの統計で考慮さ れます。 TCP_TXTLS_ENABLE このソケットに書き込まれたデータのためのカーネル中のト ランスポート層セキュリティ (Transport Layer Security; TLS) を有効にします。詳細については、ktls(4) を参照して ください。 TCP_TXTLS_MODE ソケットの現在の TLS モードを取得するか、または設定する ために整数引数を使用することができます。詳細について は、ktls(4) を参照してください。 TCP_RXTLS_ENABLE このソケットから読み込まれたデータのためのカーネル内TLS を有効にします。詳細については、ktls(4) を参照してくだ さい。 TCP_REUSPORT_LB_NUMA 確立された TCP の listen する (接続を受け付ける) ソケッ トのための NUMA 親和性のフィルタリングを変更します。こ のオプションは、この listen する (接続を受け付ける) ソ ケットのためにフィルタリングする NUMA ドメインを指定す る単一の整数引数を取ります。また、引数は次の特別な値を 指定することができます: TCP_REUSPORT_LB_NUMA_NODOM この listen する (接続を受け付 ける) ソケットのための NUMA フィルタリングを削除します。 TCP_REUSPORT_LB_NUMA_CURDOM 呼び出したスレッドが現在実行し ているドメインに関連するトラ フィックをフィルタリングしま す。これは、通常、プロセスまた はスレッドが親から listen する (接続を受け付ける) ソケットを 継承し、特定のコアに CPU 親和 性を設定した後に使用されます。 TCP_REMOTE_UDP_ENCAPS_PORT リモート UDP のカプセル化ポートを設定して取得します。ク ローズした TCP ソケットでのみ設定することができます。 setsockopt(2) 呼び出しのためのオプションレベルは、getprotobyname(3) また は IPPROTO_TCP から利用可能な TCP のためのプロトコル番号です。すべてのオ プションは、<netinet/tcp.h> で宣言されています。 IP 転送レベルのオプションは、TCP で使用されます。ip(4) を参照してくださ い。経路制御された発信もとである着信してくる接続要求は、注意され、逆の発 信元経路は、応答の時に使用されます。 TCP のためのデフォルト輻輳制御アルゴリズムは、cc_newreno(4) です。他の輻 輳制御アルゴリズムは、mod_cc(4) フレームワークを使用して利用可能にするこ とができます。 MIB の変数 TCP プロトコルは、sysctl(3) MIB の net.inet.tcp ブランチでいくつかの変数 を実装しています。 TCPCTL_DO_RFC1323 (rfc1323) RFC 1323/RFC 7323 のウィンドウのスケーリング とタイムスタンプのオプションを実装します (デフォルト は、真です)。 tolerate_missing_ts TCP タイムスタンプのサポートがネゴシエートされている TCP 接続に属している TCP セグメントのためのタイムスタ ンプ (RFC 1323/RFC 7323) の欠落を容認します。2021 年 6 月現在で、広く配備している最新のものを含んで、いくつか の TCP スタックは、RFC 7323 に違反していることが知られ ています。そのため、デフォルトは、1 です、すなわち、タ イムスタンプの欠落は、許容されます。 TCPCTL_MSSDFLT (mssdflt) MSS ネゴシエーション (交渉) で反対の通知を受 信しないとき、デフォルト値は、最大のセグメントサイズ (``MSS'') を使用します。 TCPCTL_SENDSPACE (sendspace) 最大の TCP 送信ウィンドウ。 TCPCTL_RECVSPACE (recvspace) 最大の TCP 受信ウィンドウ。 log_in_vain 接続を受け付けるソケットがないポートに試みられるあらゆ る接続のログを登録します。1 の値は、ログの登録を SYN (接続の確立) パケットだけに制限します。2 の値は、ク ローズされたポートへのあらゆる TCP パケットをログに登 録します。上記に記載されないどんな値もログの登録を無効 にします (デフォルトは、0、すなわち、ログの登録は、無 効にされます)。 msl パケットのための、ミリ秒単位の、最大セグメント生存期 間。 keepinit 確立されない TCP 接続の、ミリ秒単位の、新しいタイムア ウト。デフォルトは、75000 ミリ秒です。 keepidle 接続がキープアライブ (生き続ける) プローブが (可能なら ば) 送信される前にアイドルとなるべき時間の合計。デフォ ルトは、7200000 ミリ秒 (2 時間) です。 keepintvl keepidle プローブで応答が受信されないとき、キープアラ イブ (生き続ける) プローブがリモートマシンに送信される ミリ秒単位のインターバル。デフォルトは、75000 ミリ秒で す。 keepcnt 接続が落される前に、応答なしで、送信されたプローブの 数。デフォルトは、8 パケットです。 always_keepalive SO_KEEPALIVE がすべての TCP 接続で設定され、カーネル は、接続がまだあるか確かめるためにリモートホストへパ ケットを定期的に送信すると仮定します。 icmp_may_rst 特定の ICMP 到達不能メッセージは、SYN-SENT 状態で接続 をアボートできます。 do_tcpdrain システムの mbuf が少ないなら、TCP 再構築キューでパケッ トをフラッシュします。 blackhole 接続を受け付けるソケットがないポートに接続を試みると き、可能であれば、RST の送信を無効にします。 blackhole(4) を参照してください。 delayed_ack 試みるために ACK を遅らせ、データパケットにそれをピ ギーバック (積んで輸送) します。 delacktime 遅延の ACK が送信される前の、ミリ秒単位の、最大の合計 時間。 path_mtu_discovery パス MTU 発見を有効にします。 tcbhashsize TCP 制御ブロックハッシュテーブル (読み込み専用) のサイ ズ。これは、カーネルオプション TCBHASHSIZE を使用する か loader(8) の net.inet.tcp.tcbhashsize を設定するこ とによって調整できます。 pcbcount アクティブなプロセス制御ブロックの数 (読み込み専用)。 syncookies SYN クッキーが外向きの SYN-ACK パケットのために生成さ れるかどうかを決定します。SYN クッキーは、SYN ラッド (大量送り付け) 攻撃の間にとても役に立ち、デフォルトで 有効にされます。(syncookies(4) 参照)。 isn_reseed_interval 秘密データが RFC 1948 の初期シーケンス番号計算でどれく らいの頻度で使用したかを指定する間隔 (秒単位) は、再 シード (種) されるべきです。デフォルトで、この変数は、 再シードが起こらないことを示す 0 に設定されます。再 シードは、必要ではなく、数分間 TIME_WAIT リサイクリン グをブレークします。 reass.cursegments すべての再アセンブリのキューに存在するセグメントの現在 の合計数。 reass.maxsegments すべての再アセンブリのキューに渡ってセグメントの合計数 の最大の制限。調整変数として制限を調整することができま す。 reass.maxqueuelen それぞれの再アセンブリのキューで許可されるセグメントの 最大数。デフォルトで、システムは、各 TCP 接続の受信 バッファサイズと最大のセグメントサイズ (MSS) に基づい て制限を選択します。セッションの再アセンブリのキューに 適用される実際の制限は、システム計算された自動的な制限 とユーザに指定された reass.maxqueuelen 制限より低く なっています。 rexmit_initial, rexmit_min, rexmit_slop TCP のために再送信タイマ計算を調整します。スロップ (slop) は、最小が絶対最小を指定している間、SRTT (ラウ ンドトリップ時間を平滑化 (smoothed round trip time)) が適応することができない、時々の変化を考慮に入れるため に生の計算に通常加えられます。多くの TCP RFC が最小の 1 秒を提案している一方、これらの RFC は、ストリーミン グの振る舞いに焦点を合わせる傾向があり、それらのケース は、速い再送信コードによってカバーされなかった大変速い が損失の多い接続である、802.11b 無線リンクのように、最 小の 1 秒が損失の多いインタラクティブ接続上の深刻で有 害な影響があるという事実に対処できません。この理由で、 我々は、スロップ (slop) の 200ms と (Linux と同様の) 200ms の有効な最小を我々に与える、near-0 最小を使用し ます。初期の値は、RTT 測定が実行される前に、使用されま す。 initcwnd_segments セグメントの数の初期の輻輳ウィンドウを指定する能力を有 効にします。デフォルト値は、RFC 6928 によって推奨され る 10 です。急いで値を変更することは、ホストキャッシュ から輻輳ウィンドウを使用する接続に影響しません。警告: これは、最初の RTT に送信されることを許可されるパケッ トのバースト (破裂) を調整します。値は、リンクの容量と 関連するべきです。低い容量のリンクのための小さい値で開 始します。大きいバーストは、ルータに小さなバッファがあ るか、リンクが輻輳を経験しているなら、バッファのオーバ ランとパケットの落下を起こすかもしれません。 newcwd RFC 7661 で説明されるように新規輻輳ウィンドウ認証 (New Congestion Window Validation) メカニズムを有効にしま す。これは、TCP が、制限されたアプリケーションであり、 ネットワーク帯域幅が、完全に利用されないところで、期間 の間に輻輳ウィンドウを徐々に減少します。それは、いった んより高いスピードでデータを送信するアプリケーションを 開始すると自ら招いたパケット損失を防止します。 do_prr RFC6937 に説明されている Proportional Rate Reduction (PRR) アルゴリズムを使用して、SACK の損失の復旧を実行 します。これは、ACK クロックを使い切る機会が減るため、 RTO ベースの損失の復旧 (デフォルトは、true) のような、 ACK 間引きまたはバーストロスイベントでの環境で特別な再 送信の有効性を向上します。 do_prr_conservative Proportional Rate Reduction を行っている間に、厳密にパ ケット節約モードを残し、ACK を受信するたびに新しいパ ケットを 1 つだけ送信します。トークンバケットのトラ フィックの policer が RTO に先導する高い損失が持続する とき、役に立ちますが、より共通の設定で PRR の有効性が 低下します (デフォルトは、false)。 rfc6675_pipe RFC 6675 に記述されているアルゴリズムを使用して byte in flight を計算し、Proportional Rate Reduction が有効 なときも改善されます。また、RFC6675 にある 2 つの他の メカニズムも有効にします。レスキュ再送信は、送信の後続 するセグメントが失われ、追加のデータを送信する準備がで きていないとき、タイムリな損失復旧を手助けします。SACK ブロックなしに部分的な ACK が、SACK 損失回復中に受信さ れた場合に、後続するセグメントは、再送信タイムアウトを 待つのではなく、直ちに再送信されます。SACK 損失回復 は、また、いったん 2 つのセグメントプラス 1 バイトが SACK されると - たとえ従来の重複した ACK が見られな かったとしても、保証されます。 rfc3042 RFC 3042 で説明される Limited Transmit アルゴリズムを 有効にします。それは、損失の多いリンクで、そして短い転 送のときに起こるような輻輳 (混雑) ウィンドウが小さいと き、タイムアウトを避けるのに役立ちます。 rfc3390 最大のセグメントサイズによって、新しい接続のときに可変 サイズの開始輻輳 (混雑) ウィンドウを認める、RFC 3390 のサポートを有効にします。これは、一般的にスループット (処理能力) に役立ちますが、特に短い転送と高帯域の大き い伝播遅延接続に影響します。 sack.enable 受信側がすべての成功して到着したセグメントに関して送付 側に通知するのを許し、送付側が欠落したセグメントだけを 再送するのを許す、TCP Selective Acknowledgment オプ ションである、RFC 2018 のサポートを有効にします。 sack.maxholes 接続毎の SACK ホールの最大数。デフォルトは、128 です。 sack.globalmaxholes すべての接続に渡るシステム毎の SACK ホールの最大数。デ フォルトは、65536 です。 maxtcptw TCP 接続が TIME_WAIT 状態に入るとき、わずかなサイズと 使用であるので、関連ソケット構造は、解放されます、そし て、新しい構造は、圧縮された TCP TIMEXWAIT 状態と呼ば れる、この状態で接続を持続するために必要な最小量の情報 を含むように割り付けられます。この構造がソケット構造よ り小さいので、かなりの量のシステムメモリを節約すること ができます。net.inet.tcp.maxtcptw MIB 変数は、割り付け られたこれらの構造の最大数を制御します。デフォルトで、 それは、kern.ipc.maxsockets / 5 に初期化されます。 nolocaltimewait 両方の終点がローカルである接続のために圧縮された TCP TIMEXWAIT 状態の作成を抑制します。 fast_finwait2_recycle ソケットが SBS_CANTRCVMORE としてマークされるとき、TCP FIN_WAIT_2 接続を、より速くリサイクルします (ユーザプ ロセスでは、ソケットがオープンされず、ソケットで受信さ れたデータは、読み込むことができません)。ここで使用さ れたタイムアウトは、finwait2_timeout です。 finwait2_timeout TCP FIN_WAIT_2 接続の速いリサイクルに使用するタイムア ウト。デフォルトは、60 秒です。 ecn.enable TCP Explicit Congestion Notification (明示的な輻輳通 知) (ECN) のサポートを有効にします。ECN によって、TCP の送信側は、パケットの落下を回避するために転送速度を減 少することができます。 0 ECN を無効にします。 1 着信接続が、ECN を要求することを許可しま す。発信接続は、ECN を要求します。 2 着信接続が、ECN を要求することを許可しま す。発信接続は、ECN を要求しません。(デ フォルト) ecn.maxretries 特定の接続のとき、ECN を無効にする前の (SYN または SYN/ACK の再送の) 再試行の数。これは、壊れているファイ アウォールがネットワーク経路にあるとき、接続の確立に役 に立つために必要です。 pmtud_blackhole_detection 自動的なパス MTU ブラックホール検出を有効にします。MSS のサイズのセグメントの再送信する場合に、OS は、それが MTU 問題であるかどうかをチェックするために MSS を低下 させます。現在の MSS が、試みる (net.inet.tcp.pmtud_blackhole_mss と net.inet.tcp.v6pmtud_blackhole_mss) への設定された値よ り大きいなら、それは、この値に設定され、そうでなけれ ば、MSS は、デフォルト値 (net.inet.tcp.mssdflt と net.inet.tcp.v6mssdflt) に設定されます。設定すること は、次の通りです: 0 パス MTU ブラックホール検出を無効にしま す。 1 IPv4 と IPv6 のためのパス MTU ブラック ホール検出を有効にします。 2 IPv4 のためだけパス MTU ブラックホール検 出を有効にします。 3 IPv6 のためだけパス MTU ブラックホール検 出を有効にします。 pmtud_blackhole_mss PMTU ブラックホール検出がオンにされたなら、IPv4 に対し て試みる MSS。 v6pmtud_blackhole_mss PMTU ブラックホール検出がオンにされたなら、IPv6 に対し て試みる MSS。 fastopen.acceptany 0 以外のとき、すべてのクライアントが供給する TFO クッ キーは、有効であるとみなされます。デフォルトは、0 で す。 fastopen.autokey これと net.inet.tcp.fastopen.server_enable が 0 でない とき、新しいキーは、この指定された秒数後に自動的に生成 されます。デフォルトは、120 です。 fastopen.ccache_bucket_limit クライアントのクッキーのキャッシュバケットのエントリの 最大数です。TCP_FASTOPEN_CCACHE_BUCKET_LIMIT_DEFAULT カーネルオプションで調整するか、または loader(8) で net.inet.tcp.fastopen_ccache_bucket_limit を設定するこ とでデフォルト値を調整することができます。 fastopen.ccache_buckets クライアントのクッキーのキャッシュバケットの数。読み込 み専用です。この値は、 TCP_FASTOPEN_CCACHE_BUCKETS_DEFAULT カーネルオプショ ン、または loader(8) で fastopen.ccache_buckets を設定 することで調整することができます。 fastopen.ccache_list クライアントのクッキーキャッシュを印刷 (表示) します。 読み込み専用です。 fastopen.client_enable 0 であるとき、新しいアクティブな (すなわち、クライアン トの) TFO 接続を作成することができません。有効から無効 への移行で、クライアントのクッキーのキャッシュは、クリ アされ、無効になります。有効から無効への移行は、進行中 のアクティブな TFO 接続に影響しません。新しい接続が確 立されなくなるだけです。デフォルトは、0 です。 fastopen.keylen バイト単位の鍵の長さ。読み込み専用です。 fastopen.maxkeys サポートされている鍵の最大数。読み込み専用です。 fastopen.maxpsks サポートされる事前の共有鍵の最大数。読み込み専用です。 fastopen.numkeys 現在インストールされている鍵の数。読み込み専用です。 fastopen.numpsks 現在インストールされている事前の共有鍵の数。読み込み専 用です。 fastopen.path_disable_time 新しいアクティブな (すなわち、クライアント) TFO 接続を 作成しよう試みる間に失敗が生じるとき、タプル {client_ip, server_ip, server_port} によって決定され る、同じパスで新しいアクティブな接続は、この秒数のため に強制的に非 TFO になります。パスの無効化メカニズム は、クライアントのクッキーのキャッシュエントリに格納さ れる状態に頼っているので、無効化期間が経過する前に、対 応するクライアントのクッキーのキャッシュのエントリがリ ソースの圧迫によって再利用されるなら、与えられたパスの 無効化時間が短縮される可能性があることに注意してくださ い。デフォルトは、 TCP_FASTOPEN_PATH_DISABLE_TIME_DEFAULT です。 fastopen.psk_enable 0 でないとき、事前の共有鍵 (PSK) モードは、すべての TFO サーバのために有効にされます。有効から無効への移行 で、すべてのインストールされている事前の共有鍵は、削除 されます。デフォルトは、0 です。 fastopen.server_enable 0 のとき、新しいパッシブ (すなわち、サーバ) TFO 接続 は、作成することができません。有効から無効への移行で、 すべてのインストールされている鍵と事前の共有鍵は、削除 されます。無効から有効への移行で、fastopen.autokey が 0 でなく、インストールされた鍵がないなら、新しい鍵は、 直ちに生成されます。有効から無効への移行は、進行中のあ らゆるパッシブ TFO 接続に影響しません。新しい接続が確 立されるのを防止するだけです。デフォルトは、0 です。 fastopen.setkey この sysctl に net.inet.tcp.fastopen.keylen バイトを書 き込むことによって、新しい鍵をインストールします。 fastopen.setpsk この sysctl に net.inet.tcp.fastopen.keylen バイトを書 き込むことによって、新しい事前の共有鍵をインストールし ます。 hostcache.enable TCP ホストキャッシュは、同じホスト間の接続の将来の性能 を向上させるために、接続の詳細とメトリクスをキャッシュ するために使用されます。TCP 接続が完了すると、ホスト は、いくらかの定義された期間のための接続のための情報を キャッシュします。 0 ホストのキャッシュを無効にします。 1 ホストのキャッシュを有効にします。(デ フォルト) hostcache.purgenow いったんあらゆる値を設定すると、すべてのエントリを直ち に消去します。これを 2 に設定することは、また、ハッ シュのソルトの再 seed します。 hostcache.purge ホストキャッシュのエントリの次の切り詰めですべてのエン トリの有効起源が切れます。0 以外の設定は、いったん消去 が実行されると、0 にリセットされます。 0 ホストキャッシュを切り詰めるとき、すべて のエントリを消去しません。(デフォルト) 1 次の切り詰めを行うとき、すべてのエントリ を消去します。 2 すべてのエントリを削除し、また、ハッシュ のソルトを再 seed します。 hostcache.prune 期限切れのホストキャッシュのエントリを切り詰める間の秒 単位の時間。デフォルトは、300 (5 分) です。 hostcache.expire 度のくらい長いエントリが最後にアクセスされてからホスト キャッシュに保存されるかの秒単位の時間。デフォルトは、 3600 (1 時間) です。 hostcache.count ホストキャッシュの現在のエントリ数。 hostcache.bucketlimit 同じハッシュに対するエントリの最大数です。デフォルト は、30 です。 hostcache.hashsize TCP hostcache ハッシュテーブルのサイズです。この数値 は、2 のべき乗でなければならず、そうでなければ、拒否さ れます。デフォルトは、512 です。 hostcache.cachelimit hostcache のための全体的なエントリの制限。デフォルト は、hashsize * bucketlimit です。 hostcache.histo ホストキャッシュのハッシュ使用率のヒストグラムを提供し ます。 hostcache.list ホストキャッシュの現在のすべてのエントリの完全なリスト を提供します。 functions_available 利用可能な TCP 関数ブロックのリスト (TCP スタック)。 functions_default デフォルトの TCP 関数ブロック (TCP スタック)。 functions_inherit_listen_socket_stack listen (接続を受け付け) するソケットの tcp スタックを 継承するか、または functions_default によって定義され るように、現在のシステムのデフォルト tcp スタックを使 用するかどうかを決定します。デフォルトは、真 (true) で す。 insecure_rst RST セグメントを受け付けるための RFC5961 の代わりに RFC793 で定義されている基準 (criterias) を使用します。 デフォルトは、false です。 insecure_syn SYN セグメントを受け付けるための RFC5961 の代わりに RFC793 で定義されている基準 (criterias) を使用します。 デフォルトは、false です。 ts_offset_per_conn TCP タイムスタンプを初期化するとき、ホストごとのペアオ フセットの代わりに接続されたオフセットごとに使用しま す。デフォルトは、RFC 7323 で推奨されるように接続オフ セットごとに使用することです。 perconn_stats_enable stats(3) フレームワークを使用してすべての接続のための 統計のデフォルトの収集を制御します。0 は、無効にし、1 は、有効にし、2 は、同じ設定を受信するグループのすべて の接続でログ id 接続グループに渡ってランダムサンプルを 有効にします。 perconn_stats_sample_rates stats(3) サンプリングが有効にされるとき、テンプレート サンプリングレートごとに制御する template_spec=percent キー値ペアの CSV リスト。 udp_tunneling_port ローカルの UDP カプセル化ポートです。0 の値は、UDP カ プセル化が無効であることを示します。デフォルトは、0 で す。 udp_tunneling_overhead UDP カプセル化を使用するとき、考慮されるオーバヘッド。 ミドルボックスによる MSS クランプは、ほとんど機能しな いかもしれなしので、(UDP ヘッダのサイズの) 8 より大き い値もサポートされています。サポートされる値は、8 と 1024 の間です。デフォルトは、8 です。 エラー ソケット操作は、失敗すれば、次のエラーのうちの 1 つを返します: [EISCONN] 既に接続があるソケットに接続を確立しようとしたとき。 [ENOBUFS] または [ENOMEM] システムが内部のデータ構造のためのメモリを使い果たすと き。 [ETIMEDOUT] 接続が過度の再送信のため切れたとき。 [ECONNRESET] リモートピア (相手側) が強制的に接続をクローズさせられ るとき。 [ECONNREFUSED] リモートピア (相手側) が積極的に接続の確立を拒絶すると き (通常、どんなプロセスもポートを listen (接続を受け 付け) していないので)。 [EADDRINUSE] 既に割り付けられたポートがあるソケットを作成する試みを するとき。 [EADDRNOTAVAIL] ネットワークインタフェースが存在しないネットワークアド レスでソケットを作成する試みをするとき。 [EAFNOSUPPORT] ソケットをマルチキャストアドレスにバインドするか、また は接続する試みをするとき。 [EINVAL] セッションの無効のポイントで TCP 関数ブロックを変更し ようとするとき。 [ENOENT] 利用可能ではない TCP 関数ブロックを使用しようとすると き。 関連項目 getsockopt(2), socket(2), stats(3), sysctl(3), blackhole(4), inet(4), intro(4), ip(4), ktls(4), mod_cc(4), siftr(4), syncache(4), tcp_bbr(4), tcp_rack(4), setkey(8), tcp_functions(9) V. Jacobson, B. Braden, and D. Borman, TCP Extensions for High Performance, RFC 1323. D. Borman, B. Braden, V. Jacobson, and R. Scheffenegger, TCP Extensions for High Performance, RFC 7323. A. Heffernan, Protection of BGP Sessions via the TCP MD5 Signature Option, RFC 2385. K. Ramakrishnan, S. Floyd, and D. Black, The Addition of Explicit Congestion Notification (ECN) to IP, RFC 3168. 歴史 TCP プロトコルは、4.2BSD で登場しました。ウィンドウスケーリングとタイムス タンプに関する RFC 1323 拡張は、4.4BSD で追加されました。TCP_INFO オプ ションは、Linux 2.6 で導入され、変更される可能性があります。 FreeBSD 13.2 November 7, 2022 FreeBSD 13.2