PPP/PPPoE

【図解】初心者にも分かる PPP の仕組み, フォーマット

PPP とは

PPP (Point to Point Protocol , 読み方 : ぴーぴーぴー) は ISDN などのシリアルインタフェースでの通信方式の 1 つです。

通信のフォーマットだけでなく、制御手順も含まれます。制御は HDLC とほぼ同じ手続きですが、大きく違う点は、PPP には認証機能があることです。

その他、ヘッダ圧縮や品質監視、マルチリンク等の付加機能も特徴的です。

昔の ISDN の時代ではよく使われておりましたが、今は基本的に使われません

ただし、最近は Ethernet 上で PPP の認証機能を使う PPPoE が主流ですので、技術自体は今も使われています。

PPP は LCP (Link Control Protocol) と NCP (Network Control Protocol) の 2 つのプロトコルから成ります。

LCP は主にリンク確立や認証、ヘッダ圧縮、キープアライブなど、通信の環境を整える働きをします。

一方、NCP は上位層に関する環境を整える働きをします。PPPの上位層として IP を使う場合の NCP を特に IPCP と言い、DHCP のように IP アドレスやデフォルトルートの割り当て等の NW 情報を提供します。

PPPのフレームフォーマット

PPPのフレームフォーマットは下記の通りです。

F

フラグです。通信の開始と終了を示しています。"01111110"で固定となります。

A

アドレスです。常にブロードキャストであるため常に"11111111"となります。

C

コントロールです。HDLCで規定されている「非番号制フレーム」を表す"00000011"で固定となります。

Protocol Type

PPP上に乗っているデータが制御系通信(LCP, PAP/CHAP認証, IPCP)なのか、通常のIP通信なのかを示します。

Code

制御系通信の場合、コードによって機能がさらに分類されます。

LCP/IPCP においては Ox01 と Ox02 で接続要求、接続承認を行い、その後は Ox09 と Ox0a で KeepAlive をし続けます。

接続を終了するときは Ox05 と Ox06 でやり取りを終えます。

PAP や CHAP においてはそれぞれのシーケンスに沿ってコードが割り当てられています。

Type

LCP/IPCP においてはさらに Typeで機能が分類されます。

LCP では MRU (MTU と同義) のネゴを行ったり、PAP を使うのか CHAP を使うのかを事前にネゴを行います。

IPCP では相手から IP アドレスをもらい、それを自身の PPP インタフェースに振ることができます。ただし、その時のサブネットマスクは必ず /32 になりますが、ポイント to ポイントインタフェースなのでサブネットは意味を成さないので問題ありません (ルーティングでは NextHop は IP ではなくインタフェースのみを指定するので)。

また、DNS サーバや WINS サーバの情報も取得できます。

なお、Cisco では IPCP でデフォルトルートをもらう、と誤解しそうな設定がありますが、実際にはもらっていません。

下記コマンドを設定したルータ上で、PPP のリンクが張れた際に、NextHop を PPP インタフェースにしてデフォルトルートを Static で作る機能です。

Dialer インタフェースでは通常の Static ルートを書くと CEF になりません (そもそも CEF の機能は『「ルーティングテーブル」と「NextHop IP の ARP テーブル」を FIB に 1 つにまとめ、ルーティングを 1 ステップで HW 処理できること』ですが、NextHop は IP ではないため) が、この設定では CEF によるルーティングが可能になります。

(config-if)# ppp ipcp route default

Ciscoの設定-簡易構成

以下のように R1 と R2 を PPP で接続する構成を考えます。R2 は R1 から IP アドレスをもらい、自動でデフォルトルートを作る設定とします。


シリアル IF での通信を PPP でカプセル化するためには以下を設定します。これが設定されていないとデフォルトの HDLC が利用されます。

(config-if)# encapsulation ppp

PPP のリンク先端末の IF にここで指定した IP アドレスを提示するためには以下を設定します。

(config-if)# peer default ip address [ip address]

peer default ip address コマンドにより提示された IP アドレスをローカル端末 (ルータ) の IF にアサインするには以下を設定します。その際サブネットは必ず /32 になります。

(config-if)# ip address negotiated

コメント

タイトルとURLをコピーしました