PR

拡張性の秘密はモジュール設計にあり

 PPPがこれほど拡張性に富んでいる秘密は,PPPの基本設計にある。PPPは,いくつかの機能単位に動作を独立させ,それを多数組み合わせて全体を構成するモジュール構造になっている。

図4 PPPは二つの機能を中心とした集合体
PPPの特徴は「何でも運べる」「どこでも使える」ことだ。その秘密は拡張性の高い設計にある。基本機能はLCPとNCPという二つの部分に分かれており,それぞれに機能追加が可能な構造になっている。LCPは上位プロトコルに依存しない制御機能を担う。NCPは上位プロトコルに固有の制御機能を提供する。
表1 RFCで見るPPP機能拡張の歴史
PPPがRFCに最初に提案されたのは1989年のこと。当初からLCPとNCPは分けて定義されており,拡張性を考慮した設計だった。ただし定義されていたNCPはIP向けだけ。他のプロトコルを運ぶNCPがRFC化されたのは92年後半以降になる。94年7月のRFC1661でインターネット標準になった。
 PPPのモジュール群をざっと見てみよう(図4[拡大表示])。いくつもの機能が階層別に用意されている様子がわかるだろう。構成要素は大きく二つある。一つは,基本となる通信機能を担当する部分。LCP(link control protocol)と呼ぶ。たとえばユーザー認証はこのLCPのオプション機能の一つである。

 もう一つは,LCPの上位で動く機能モジュール。一般にNCP(network control protocol)と呼ばれる。NCPは,レイヤー3プロトコルごとに決められており,それぞれ仕様が決まっている。NCPの代表例としては,IP用のIPCPがある。

 このようにPPPは,LCPを中核に,専門機能ごとに用意された多くのモジュール群を連係させることで,全体としてさまざまな機能を提供する構造になっている。PPPは,単一プロトコルではなく,多数のプロトコルの集合体なのである。

仕様追加を繰り返して発展を遂げた

 現在のPPPは多彩なモジュールで構成されているが,もちろん最初からそうだったわけではない。

 ただし,LCPとNCPで機能を分担するという基本構造ははじめからあった。当初から拡張性を考慮した設計になっていたわけだ。

 10年以上に及ぶPPPの歴史は,仕様追加の歴史と言える。簡単に発展経緯を振り返ってみよう(表1[拡大表示])。

 開発が始まった80年代末から92年初頭までは,PPPの基本機能を整備した時期である。ここでは,本来の目的であるWAN回線で結びつけられた2地点間でデータ誤りのない通信を実行することに主眼が置かれた。運べるレイヤー3プロトコルはIPだけだった。

 92年後半から94年にかけて,PPPは拡張期に入る。IP以外のレイヤー3プロトコルを利用するための仕様と,LCPのセキュリティ機能が整備された。こうして94年7月にPPPの基本仕様は一通り完成した。

 98年以降になると,PPPが持つユーザー認証やIPアドレス取得の機能を,隣り合う機器間以外でも使えるようにするための技術提案が始まる。その代表例がPPPoEである。PPPに求められる役割も変わりつつあるようだ。