PPPoE(
Point-to-Point Protocol over Ethernet)は、
イーサネットフレーム上にPPPフレームをカプセル化するプロトコルです。RFC 2516で定義されており、主にDSL、CATV、
FTTHなどの
インターネット接続サービスで、ブリッジ接続のために利用されています。
イーサネットでは、PPPoEを使用せずともIPパケットを直接扱うことができますが、PPPoEが使われるのは、PPPが持つユーザー
認証機能を利用するためです。その代わり、MTUの減少など、いくつかのオーバーヘッドが発生します。
2000年頃から、ISPのIPネットワークへのDSL接続を介してパケットをトンネリングする技術として使われ始めました。2005年のネットワーク技術書では、「ほとんどのDSLプロバイダは、
認証、暗号化、
圧縮のためにPPPoEを使用する」と記述されています。一般的な利用では、PAPやCHAPを用いてユーザー名とパスワードで
認証を行います。
PPPoEは、ブロードバンドルーターで実装されることもありますが、ルーティングを行わないDSLモデムを使用する際には、PC上で実装されることもあります。現在では、ほとんどの
オペレーティングシステムでPPPoEがサポートされています。
PPPoEのステージ
PPPoEは、主に以下の2つのステージで構成されます。
1.
ディスカバリステージ:
従来のPPPは、ダイヤルアップ接続やATMなど、接続が確立済みの環境で使用されていました。このような環境では、送信されたPPPフレームはすべて対向側に到達します。
しかし、
イーサネットはマルチアクセスネットワークであり、各ノードが他のノードにアクセスできます。
イーサネットフレームには、宛先ノードの
MACアドレスが含まれている必要があります。そのため、PPPoEで接続を確立する前に、接続先の
MACアドレスを互いに知っておく必要があります。ディスカバリステージでは、この
MACアドレスの伝達と、セッションIDの確立を行います。
2.
PPPセッションステージ:
ディスカバリステージでPPPoEセッションが確立されると、PPPセッションステージに移行し、実際のデータ通信が行われます。
PPPoEディスカバリ(PPPoED)
従来のPPPはピアツーピア接続でしたが、PPPoEは、1つの物理接続を通じて複数のホストがサービスプロバイダに接続できるため、クライアントサーバーモデルです。
PPPoEディスカバリは、クライアント(ホストコンピュータ)とサーバー(ISPのアクセスコンセントレータ)の間で以下の4つの段階を踏んで行われます。PADTは、既存のセッションを終了する際に使用されます。
1.
クライアント → サーバー: Initiation (PADI)
PADI(PPPoE Active Discovery Initiation)は、ユーザーが
インターネットに接続する際に、まずユーザーのコンピュータがISPのPOPにあるDSLアクセスコンセントレータ(DSL-AC)を見つけるために送信されます。
イーサネット上では
MACアドレスを介して通信が行われるため、コンピュータがDSL-ACの
MACアドレスを知らない場合、
ブロードキャストでPADIパケットを送信します。このPADIパケットには、送信元のコンピュータの
MACアドレスが含まれています。
PADIパケットの例:
Frame 1 (44 bytes on wire, 44 bytes captured)
Ethernet II, Src: 00:50:da:42:d7:df, Dst: ff:ff:ff:ff:ff:ff
PPP-over-Ethernet Discovery
Version: 1
Type 1
Code Active Discovery Initiation (PADI)
Session ID: 0000
Payload Length: 24
PPPoE Tags
Tag: Service-Name
Tag: Host-Uniq
Binary Data: (16 bytes)
`Src`は送信元の
MACアドレス、`Dst`は
ブロードキャストアドレスです。PADIパケットは複数のDSL-ACに到達しますが、「Service-Name」タグに記載されたDSL-ACのみが応答します。
2.
サーバー → クライアント: Offer (PADO)
PADO(PPPoE Active Discovery Offer)は、PADIパケットを受信したDSL-ACが、PADIに記載された
MACアドレス宛に返信するパケットです。PADOパケットには、DSL-ACの
MACアドレス、名前、サービス名が含まれています。
複数のPOPのDSL-ACがPADOを返信した場合、ユーザーのコンピュータは、名前とサービス名から適切なDSL-ACを選択します。
PADOパケットの例:
Frame 2 (60 bytes on wire, 60 bytes captured)
Ethernet II, Src: 00:0e:40:7b:f3:8a, Dst: 00:50:da:42:d7:df
PPP-over-Ethernet Discovery
Version: 1
Type 1
Code Active Discovery Offer (PADO)
Session ID: 0000
Payload Length: 36
PPPoE Tags
Tag: AC-Name
String Data: IpzbrOOl
Tag: Host-Uniq
Binary Data: (16 bytes)
`AC-Name`以下の`String data`はDSL-ACの名前です。`Src`はDSL-ACの
MACアドレスです。
3.
クライアント → サーバー: Request (PADR)
PADR(PPPoE Active Discovery Request)は、ユーザーのコンピュータが選択したDSL-ACに送信されるパケットです。PADRパケットによりPPPoEセッションの開始を要求します。
4.
サーバー → クライアント: Session Confirmation (PADS)
PADS(PPPoE Active Discovery Session-confirmation)は、DSL-ACがクライアントに送信するパケットで、PPPoEセッションIDを通知します。この時点で、DSL-ACとユーザーのコンピュータの間でPPPoEセッションが確立されます。
5.
どちらか → もう一方: Termination (PADT)
PADT(PPPoE Active Discovery Termination)は、POPとの接続を切断する際に送信されるパケットで、ユーザーのコンピュータとDSL-ACのどちらからも送信される可能性があります。
脚注
関連項目
Point-to-Point Protocol (PPP)
Point-to-Point Tunneling Protocol
pppd
外部リンク
RFC 2516 - A Method for Transmitting PPP Over Ethernet(PPPoE)
RFC 3817 - [[Layer 2 Tunneling Protocol] Active Discovery Relay for PPP over Ethernet(PPPoE)](https://datatracker.ietf.org/doc/html/rfc3817)
RFC 4638 - Accommodating a Maximum Transit Unit/Maximum Receive Unit(MTU/MRU) Greater Than 1492 in the Point-to-Point Protocol over Ethernet(PPPoE)
RFC 4938 - PPP Over Ethernet(PPPoE) Extensions for Credit Flow and Link Metrics
US Patent 6891825 Method and system of providing multi-user access to a packet switched network