EN JA
NG_TCPMSS(4)
NG_TCPMSS(4) FreeBSD Kernel Interfaces Manual NG_TCPMSS(4)

名称

ng_tcpmssTCP MSS オプションを調整する netgraph ノード

書式

#include < netgraph.h>
#include < netgraph/ng_tcpmss.h>

解説

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 コントロールメッセージを受け取るか、すべてのフックが切断されている時、シャットダウンします。

関連項目

netgraph(4), ng_ipfw(4)

歴史

ng_tcpmss ノードタイプは、 FreeBSD 6.0 で実装されました。

作者

Alexey Popov <lollypop@flexuser.ru> Gleb Smirnoff <glebius@FreeBSD.org>

バグ

SMP で実行しているとき、システム統計は、壊れているかもしれません。
June 9, 2005 FreeBSD