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

名称

ng_pptpgrePPTP GRE プロトコル netgraph ノードタイプ

書式

#include < sys/types.h>
#include < netgraph/ng_pptpgre.h>

解説

pptpgre ノードタイプは、RFC2637 によって指定されるように PPTP プロトコルのために Generic Routing Encapsulation (GRE) オーバ IP を実行します。これは、パケットのカプセル化、シーケンンシング (順序付け)、確認応答と適応型のタイムアウトスライディングウィンドウメカニズムを含みます。このノードタイプは、TCP 制御プロトコル、または PPTP によって定義された交渉の呼び出しのどれも操作しません。

このノードタイプは、“ lower (下位)”フックで IP ヘッダを含む完全な IP パケットを受信すると予想しますが、それは、任意の IP ヘッダなしで発信フレームを転送します。このノードタイプの典型的な用途は、 ng_ppp(4) ノードのリンクフックの 1 つへの“ upper (上位)”フック、および ng_ksocket(4) ノードの“ inet/raw/gre”フックへの“ lower (下位)”フックを接続することです。

フック

このノードタイプは、次のフックをサポートします:
session_hhhh
上位プロトコルレイヤへのセッション 0xhhhh データパケット
upper
session_hhhh と同じですが、構成可能な CID で単一のセッションのためです (レガシ)
lower
下位プロトコルレイヤと接続

コントロールメッセージ

このノードタイプは、次を加えて、一般的なコントロールメッセージをサポートします:
NGM_PPTPGRE_SET_CONFIG ( setconfig)
このコマンドは、セッションのためのフックをリセットして設定します。対応する session_hhhh フックが接続されていないなら、上位のフックが設定されます。このコマンドは、引数として struct ng_pptpgre_conf を取ります。

/* セッションのための設定 */ 
struct ng_pptpgre_conf { 
    u_char      enabled;          /* トラフィックフローを有効にす 
                                     る */ 
    u_char      enableDelayedAck; /* 遅延 ack を有効にする */ 
    u_char      enableAlwaysAck;  /* 常にデータと共に ack を含む */ 
    u_char      enableWindowing;  /* ウィンドウアルゴリズムを有効 
                                     にする */ 
    uint16_t    cid;              /* 自分の呼び出し ID */ 
    uint16_t    peerCid;          /* ピア呼び出し ID */ 
    uint16_t    recvWin;          /* ピア受信ウィンドウサイズ */ 
    uint16_t    peerPpd;          /* ピアパケット処理遅延 
                                     (1/10 秒単位) */ 
};

enabled フィールドは、ノードを経由するトラフィックフローを有効にします。 enableDelayedAck フィールドは、遅延肯定応答 (最大の 250 ミリ秒) を有効にします。それは、最適化に役に立ち、一般的にオンにするべきです。 enableAlwaysAck フィールドは、すべてのデータパケットで肯定応答の送信を有効にします。しかもそれは、たいへん役立ちます。

enableWindowing は、プロトコルによって指定された PPTP パケットウィンドウメカニズムを有効にします。これを無効にすることは、ことによると他の PPTP ピア (相手側) を混乱させて、ノードがプロトコル違反を引き起こしますが、しばしばより良い性能をもたらします。ウィンドウメカニズムは、PPTP プロトコルでの設計エラーです。 PPTP の後継者である L2TP は、それを取り除きます。

残りのフィールドは、PPTP によって供給されるようにバーチャルコールセットアッププロセスです。

NGM_PPTPGRE_GET_CONFIG ( getconfig)
CID として 2 バイトの引数を取り、 struct ng_pptpgre_conf として現在の設定を返します。
NGM_PPTPGRE_GET_STATS ( getstats)
このコマンドは、様々なノードの統計を含む struct ng_pptpgre_stats を返します。
NGM_PPTPGRE_CLR_STATS ( clrstats)
このコマンドは、ノードの統計をリセットします。
NGM_PPTPGRE_GETCLR_STATS ( getclrstats)
このコマンドは、不可分にノードの統計を取得しリセットして、 struct ng_pptpgre_stats を返します。

シャットダウン

このノードは、 NGM_SHUTDOWN コントロールメッセージを受け取るか、すべてのフックが切断されている時、シャットダウンします。

関連項目

netgraph(4), ng_ksocket(4), ng_ppp(4), ngctl(8) K. Hamzeh, G. Pall, W. Verthein, J. Taarud, W. Little, and G. Zorn, Point-to-Point Tunneling Protocol (PPTP), RFC 2637. S. Hanks, T. Li, D. Farinacci, and P. Traina, Generic Routing Encapsulation over IPv4 networks, RFC 1702.

歴史

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

作者

Archie Cobbs <archie@FreeBSD.org>

バグ

ノードは、着信 GRE パケットに IP ヘッダがあると期待するべきではありません。この振る舞いは、生の IP ソケットの (会話) 振る舞いから引き継がれます。一方向で IP ヘッダを取り除いた中間ノードが代わりに使用されるべきです。
November 13, 2012 FreeBSD