4.1. DEFLATE 圧縮

iSCPは、トランスポートにおいてデータの圧縮機構を持ちます。 圧縮には RFC1951 で規定された DEFLATE アルゴリズムを使用します。

トランスポート層の各拡張仕様は、エンコーディング層の拡張仕様によりバイナリ化された iSCP メッセージのトランスポートプロトコルへの格納方法を規定します。 本圧縮仕様は、それらの拡張仕様と併用して使用することができます。 本仕様がトランスポートの拡張仕様と併用された場合、下位のトランスポートプロトコルには、 バイナリ化されたiSCPメッセージの代わりに、バイナリ化されたiSCPメッセージをさらに圧縮処理したバイナリが格納されます。

4.1.1. 圧縮の種類

圧縮方法として次の2種類を規定します。

4.1.1.1. メッセージごとの圧縮(per-message 圧縮)

この圧縮方法では、iSCP メッセージごとに DEFLATE 圧縮を行います。 トランスポートプロトコルには、バイナリ化されたメッセージの代わりに バイナリ化されたメッセージをさらに DEFLATE 圧縮したバイナリが格納されます。 この圧縮方法は、後述するメッセージを跨っての圧縮とは異なりメッセージごとに独立して圧縮を行うため、 順序性や信頼性の無いトランスポートプロトコルでも使用することができます。

この圧縮方法には、以下のパラメータが存在します。

表 72 圧縮に関するパラメータ

パラメータ

説明

圧縮レベル

圧縮の強さを示す数値です。1から9までの数値を取ります。デフォルト値は6です。

4.1.1.2. メッセージを跨っての圧縮(context-takeover 圧縮)

この圧縮方法では、 iSCP メッセージを跨って、 DEFLATE 圧縮における LZ77 のスライディングウィンドウを引き継ぎます。 スライディングウィンドウを引き継ぐことで、以前のメッセージの圧縮コンテキストを引き継ぐことができ、圧縮効率を高められます。 ただし、圧縮コンテキストの保持のために圧縮解凍時のメモリ使用量が増加するため、リソースが制限されたデバイスで使用する場合には注意が必要です。 また、途中でメッセージ順序が変わったり、メッセージが欠損したりすると、正しく圧縮コンテキストを引き継ぐことができないため、 トランスポートプロトコルに順序性や信頼性が無い場合には、本圧縮方法は使用することができません。

この圧縮方法には、以下のパラメータが存在します。

表 73 圧縮に関するパラメータ

パラメータ

説明

圧縮レベル

圧縮の強さを示す数値です。1から9までの数値を取ります。デフォルト値は6です。

ウィンドウビット

LZ77 スライディングウィンドウのサイズを規定する数値です。ウィンドウサイズの2を底とする対数で、8から15の値をとります。デフォルト値は8です。