要約

  • RFC 1993 では、圧縮フレームの境界と元の PPP パケットの境界は独立していた。
  • 圧縮結果が大きくなっても、両端の履歴を一致させるため、その出力は送られた。
  • 復号成功が示すのは受信バイトを処理できたことまでで、完全配送、相手の身元、安全性、アプリケーション結果は示さない。

フレームの外へ続くパケット

FZA の compressed data には、一つ以上の元の PPP encapsulated packet を入れられる。一方、ある元パケットの圧縮表現が相手リンクの MRU に収まらなければ、表現は次の PPP フレームへ続く。元パケットの終了は圧縮ストリーム内の表示によって分かり、物理フレームの終端から推測するのではない。

ここでは三つの境界が別々に動く。リンクが決めるフレーム境界、復元対象が持つ元パケット境界、そして次のデータにも続く圧縮履歴の境界である。フレームが閉じてもパケットは途中かもしれず、パケットが閉じても履歴は終わらない。

外側の PPP Protocol 値 0x00FD は Compressed Datagram、0x00FB は Link Compressed Datagram を示す。後者は PPP Multilink の外で圧縮し、物理リンクごとに状態を持たせる場合の値である。IANA 登録は番号の割当を確認するが、実際の履歴、バージョン、相手の身元や運用状態までは証明しない。

圧縮なのに、増えたデータを捨てない

RFC 1993 は FZA の最大膨張を 2 対 1 とし、既に圧縮されたデータでは典型的に 1.01 対 1 程度の膨張を示す。それでも膨張した出力を送る。目の前の一パケットだけを見れば無駄に見えるが、将来の解読可能性には必要だった。

圧縮履歴は送受信者が共有する状態である。両者が同じ順序で同じストリームを消費しなければ、後の参照先が一致しない。送信側だけが「圧縮効果のない部分」を飛ばすと、受信側の知らない変化が履歴に生じる。その場の節約が、後続ストリーム全体の意味を壊す。

膨張後の表現が MRU を超える場合に複数フレームへ分けるのも、この選択の帰結だ。容器の小ささを理由に履歴への入力を省略できない。元パケット終了表示をストリーム内に置き、容器をまたいで共通状態を保つ。

パディングが語れる範囲

圧縮データがフレーム末尾へ届くと、末尾のどこまでが実データで、どこからがパディングかを区別する必要がある。RFC 1993 は LCP のリンク確立時に RFC 1570 の Self-Describing-Padding を交渉するよう求める。三オクテットなら値は 1、2、3 と並び、最後の値が除去数を示す。実データの末尾が長さに見える場合は、誤認を避けるパディングを追加する。

これは末尾の曖昧さを解く局所的な書式である。正しい並びでも送信者を認証せず、改変がないことや上位配送を保証しない。誤ったインデックスならフレームを黙って破棄できるが、それは構文処理であって安全判定ではない。

信頼性は下位層から借りる

RFC 1993 は信頼できる順序配送を期待する。FZA がその性質を作るのではない。RFC 1663 は、連続辞書で一つの datagram が失われる影響を説明し、別途交渉する PPP の信頼配送を記述する。この背景は依存関係を示すが、RFC 1993 の機能として混ぜてはならない。

証拠は段階ごとに止める必要がある。外側の値はカプセル化種別、自記述パディングは除去可能な末尾、復号成功は受信したバイトをデコーダが処理できたことを示す。必要フレームがすべて順序通り届いた証拠はリンク側に、復元パケットが正しい上位プロトコルへ渡った証拠は PPP 側に求める。身元、権限、機密性、リプレイ防止、アプリケーション完了にはさらに別の証拠が要る。

RFC 1993 は安全性を論じていない。現在 errata が登録されていないことも、欠陥がないことや今日の配備を示さない。Informational 文書であることも含め、この文書は実装成功の証明書ではない。歴史的な価値は、状態を持つ変換では最も見やすい物理境界が論理境界とは限らない、と明確に示した点にある。

Heng Lu の公開論考から用いる方法は、紙上の整った図より実行中の挙動を優先し、各受領記録の権限を直接観測した範囲に限ることだ。フレーム終端はパケット終端を、デコーダはリンク信頼性を、復元パケットはアプリケーション結果を代弁できない。

情報源

プロトコルの事実は RFC と登録簿に基づく。Heng Lu の三稿は分析方法の開示であり、FZA の仕様根拠ではない。