NG_DEFLATE(4) | FreeBSD Kernel Interfaces Manual | NG_DEFLATE(4) |
名称
ng_deflate — デフレート PPP 圧縮 (RFC 1979) netgraph ノードタイプ解説
deflate ノードタイプは、Compression Control Protocol (CCP) (圧縮制御プロトコル) の Deflate サブプロトコルを実装しています。ノードには、圧縮のための comp と圧縮復元のための decomp の 2 つのフックがあります。ノードのオペレーションモードを指定して、同時に、それらの 1 つしか接続することはできません。通常、フックは同じ名前の ng_ppp(4) ノードタイプフックに接続されます。対応する ng_ppp(4) ノードフックは、圧縮復元されたフレームの送信を許可するために NG_PPP_DECOMPRESS_FULL モードに切り換えなければなりません。
フック
このノードタイプは、次のフックをサポートします:
- comp
- ng_ppp(4) comp フックと接続する。着信フレームは、(できれば) 圧縮され、同じフックに送り戻されます。
- decomp
- ng_ppp(4) decomp フックと接続する。着信フレームは、(それらが圧縮されているなら) 圧縮復元され、同じフックに送り戻されます。
ノードの操作モードを指定して、同時に、1 つのフックしか接続することができません。
コントロールメッセージ
このノードタイプは、一般的な制御メッセージに加えて、次をサポートします:- NGM_DEFLATE_CONFIG ( config)
-
このコマンドは、セッションのための (すなわち、圧縮または復元のための) ノードをリセットして、設定します。このコマンドは引数として
struct ng_deflate_config を取ります:
struct ng_deflate_config { u_char enable; /* 有効にされたノード */ u_char windowBits; /* log2(ウィンドウサイズ) */ };
enabled フィールドは、ノードを通るトラフィックの流れを有効にします。 windowBits は、PPP の Compression Control Protocol (CCP) によって取り決められた圧縮ウィンドウサイズを指定します。
- NGM_DEFLATE_RESETREQ ( resetreq)
-
このメッセージは、引数を含んでいなくて、双方向です。圧縮復元の間に、エラーが検出されるなら、このメッセージは、セッションを開始した
NGM_DEFLATE_CONFIG メッセージの発信元にノードによって送信されます。受信側は、PPP CCP Reset-Request (リセット要求) をピア (相手側) に送信することによって応答するべきです。
また、このメッセージは、ローカルの PPP 実体によって CCP Reset-Request (リセット要求) か Reset-Ack (リセット応答) を受信するとき、このノードタイプによって受信されます。ノードは、サイドが再同期することができるように圧縮状態をフラッシュすることによって応答します。
- NGM_DEFLATE_GET_STATS ( getstats)
-
この制御メッセージは、与えられたフックのための統計を取得します。統計は、
struct ng_deflate_stats で返されます:
struct ng_deflate_stats { uint64_t FramesPlain; uint64_t FramesComp; uint64_t FramesUncomp; uint64_t InOctets; uint64_t OutOctets; uint64_t Errors; };
- NGM_DEFLATE_CLR_STATS ( clrstats)
- この制御メッセージは、与えられたフックのための統計をクリアします。
- NGM_DEFLATE_GETCLR_STATS ( getclrstats)
- この制御メッセージは、与えられたフックのための統計を取得してクリアします。
シャットダウン
このノードは、 NGM_SHUTDOWN 制御メッセージを受信するか、またはフックが切断されているとき、シャットダウンします。関連項目
netgraph(4), ng_ppp(4), ngctl(8) J. Woods, PPP Deflate Protocol, RFC 1979. W. Simpson, The Point-to-Point Protocol (PPP), RFC 1661.作者
<mav@alkar.net>バグ
netgraph PPP 実装の本質のために、パケット損失の場合にデータパケットと ResetAck CCP パケットの間には、競合状態の可能性があります。結果として、パケット損失は、プロトコルによって推測されるより大きな性能低下を起こすかもしれません。December 23, 2006 | FreeBSD |