NG_TCPMSS(4) | FreeBSD Kernel Interfaces Manual | NG_TCPMSS(4) |
名称
ng_tcpmss — TCP MSS オプションを調整する netgraph ノード解説
tcpmss ノードタイプは、TCP パケットの最大セグメントサイズ (Maximum Segment Size) オプションを変更するように設計されます。このノードは、フックの任意の数を受け付けます。初めは、新しいフックは、設定されていないと見なされます。 NG_TCPMSS_CONFIG コントロールメッセージは、フックを設定するために使用されます。コントロールメッセージ
このノードタイプは、次を加えて、一般的なコントロールメッセージをサポートします:- NGM_TCPMSS_CONFIG ( config)
-
このコントロールメッセージは、特定のフックで与えられた MSS 調整を行うためにノードを設定します。次の引数として供給される
struct ng_tcpmss_config を必要とします:
struct ng_tcpmss_config { char inHook[NG_HOOKSIZ]; char outHook[NG_HOOKSIZ]; uint16_t maxMSS; }
この意味は、 inHook で受信されたパケットは、TCP MSS オプションをチェックし、 maxMSS を超えるなら、後者は、 maxMSS まで減少されるでしょう。その後に、パケットは、フック outHook に送信されるでしょう。
- NGM_TCPMSS_GET_STATS ( getstats)
-
このコントロールメッセージは、与えられたフックのための統計を取得します。この統計は、
struct ng_tcpmss_hookstat で返されます:
struct ng_tcpmss_hookstat { uint64_t Octets; /* 合計バイト */ uint64_t Packets; /* 合計パケット */ uint16_t maxMSS; /* 最大の MSS */ uint64_t SYNPkts; /* TCP SYN パケット */ uint64_t FixedPkts; /* 変更されたパケット */ };
- NGM_TCPMSS_CLR_STATS ( clrstats)
- このコントロールメッセージは、与えられたフックのための統計をクリアします。
- NGM_TCPMSS_GETCLR_STATS ( getclrstats)
- このコントロールメッセージは、与えられたフックのための統計を取得して、クリアします。
使用例
次の例では、パケットは、 ng_ipfw(4) ノードを使用して tcpmss ノードに投入されます。
# tcpmss ノードを作成して、それを ng_ipfw ノードに接続します ngctl mkpeer ipfw: tcpmss 100 qqq # MSS を 1452 に調整 ngctl msg ipfw:100 config '{ inHook="qqq" outHook="qqq" maxMSS=1452 }' # トラフィックを tcpmss ノードに迂回する ipfw add 300 netgraph 100 tcp from any to any tcpflags syn out via fxp0 # ハックされた後に ipfw でパケットを続行させます sysctl net.inet.ip.fw.one_pass=0
シャットダウン
このノードは、 NGM_SHUTDOWN コントロールメッセージを受け取るか、すべてのフックが切断されている時、シャットダウンします。歴史
ng_tcpmss ノードタイプは、 FreeBSD 6.0 で実装されました。作者
<lollypop@flexuser.ru> <glebius@FreeBSD.org>バグ
SMP で実行しているとき、システム統計は、壊れているかもしれません。June 9, 2005 | FreeBSD |