標準 大きく さらに大きく
ホーム > 技術情報 >PPPoEパケット

< PPPoE(PPP over Ethernet) >

PPPoEパケット

PPPoEはEthernet上でも通信可能であるため、通常のEthernetパケットを使用する。そのフォーマットを下記に以降に示す。

Ethernetパケット

PPPoE Discovery Stage及びPPP Session Stageで使用する、Ethernet パケットのフォーマットを図6に示す。

図6 Ethernet パケット 図6 Ethernet パケット

  1. Destination Address:宛先MACアドレス。PPPoE Active Discovery Initiation(PADI)では、ブロードキャスト(FF-FF-FF-FF-FF-FF)となる。
  2. Source Address:発信元MACアドレス。
  3. Ether Type:PPPoE Discovery StageとPPP Session Stageを識別するための値。 
    0x8863 :PPPoE Discovery Stage 
    0x8864 :PPP Session Stage
  4. Ethernet Payload:PPPoEヘッダ、PPPoE Payload(データ)、PPPプロトコル識別、PPP Payload(データ)等が入る(2-2項参照)。
  5. Checksum:EthernetパケットのFCS。

Ethernet Payload

thernet Payloadのフォーマットを図7に示す。図7のVer、Type Code、Session ID、LengthがPPPoEヘッダとなる。

図7 Ethernet Payload 図7 Ethernet Payload

  1. Ver:Ver(PPPoEバージョン)フィールドは4ビット長で、0x1に設定される。
  2. Type:Typeフィールドは4ビット長で、0x1に設定される。
  3. Code:CODEフィールドは8ビット長で、PPPoE Discovery Stage及びPPP Session Stageのパケットを識別する。

    0x09:PPPoE Active Discovery Initiation (PADI) 
    0x07:PPPoE Active Discovery Offer (PADO) 
    0x19:PPPoE Active Discovery Request (PADR) 
    0x65:PPPoE Active Discovery Session-confirmation (PADS) 
    0xa7:PPPoE Active Discovery Terminate (PADT) 
    0x00:PPP Session Stage

  4. Session ID:Session IDフィールドは16ビット長で、PPPoE Sessionの識別子として、ユニークな値を設定する。但し、PADI、PADO及びPADRパケットの場合は0x0000が設定される。また、0xffffは未定義で使用することはできない。
  5. Length:Lengthフィールドは16ビット長で、PPPoEのPayload長をOctetで設定し、Ethernetヘッダ及びPPPoEヘッダ長は含まない。
  6. PPPoE Payload:PPPoE Payloadは可変長で、PPPoE Discovery StageのTAGタイプ(2-3-1項参照)及びPPP Session Stage(2-3-2項参照)を設定する。

PPPoE Payload

PPPoE Discovery Stage(図6 Ether Typeが0x8863に設定された場合)とPPPoE Session Stage(図6 のEther Typeが0x8864に設定された場合)では、PPPoE Payloadの内容が下記のように変わる。

2.3.1.PPPoE Discovery Stage

Ether Type が0x8863に設定された場合、図8のTAGタイプが設定される。なお、TAGは、PPPoE Payloadに複数設定可能。

図8 Ethernet Payload
図8 Ethernet Payload

    1. TAG Type:TAG タイプフィールドは16ビット長で、TAG VALUEの種別を設定する。  
      • 0x0000:End of List 
        このパケットにこれ以上のTAGが存在しないことを表す。このフィールドに0x0000が設定された場合は、TAG Lengthの値が0x0000となるが、現在は未使用。
      • 0x0101:Service Name 
        次に続くサービス名を表し、TAG_VALUEは、NULLで終了しないUTF-8のキャ ラクターセットを用いる。TAG_LENGTHがゼロの場合、このTAGは全てのサービスを受け入れられることを示す。Service-Name TAGの使用例として、ISP名、サービスのクラスもしくは質の表示がある。
      • 0x0102:AC Name 
        特定のPPPoE アクセスサーバを、識別する文字列が次に続くことを示す。トレードマーク、モデル名、シリアル番号情報などの組み合わせ、もしくはMACアドレスのUTF-8表記で表される場合があり、NULLで区切られることはない。
      • 0x0103:Host Uniq 
        特定のホスト(例:Broadband Router)からのリクエストに対して応答(PADOもしくはPADS)を行うユニークな値。TAG_VALUEはバイナリーデータで データ長はホストが選択する。PPPoE アクセスサーバがこのTAGを受け取った場合、関連するPADOもしくはPADSレスポンスパケットに このTAGを変更することなく含めなければならない。
      • 0x0104:AC Cookie 
        外部からのアタックに対してPPPoEアクセスサーバを防御するために使用される。
      • 0x0105:Vender Specific 
        ベンダー固有の情報を伝える場合に使用される。
      • 0x0110:Relay Session ID 
        PPPoEパケットの中継を行う場合に使用する。
      • 0x0201:Service Name Error 
        要求されたService-Name リクエストが受け入れられなかったことを表す。
      • 0x0202:AC System Error 
        PPPoEアクセスサーバがホストのリクエストを実行する際にエラーを検出したことを表す。
      • 0x0203:Generic Error 
        致命的なエラーを表す。
    2. TAG Length:TAG Lengthは16ビット長のフィールドで、TAG VALUEの長さをOctetで示す。
    3. TAG VALUE:TAG Typeの実際の値を設定する(可変長)。

2.3.2.PPPoE Session Stage

Ether Type が0x8864に設定された場合、PPP Session Stageが開始される。図9にそのフレームフォーマットを示す。

図9 PPP Session フレームフォーマット
図9 PPP Session フレームフォーマット

PPP Protocol:PPPプロトコルの識別子

0xc021:LCP(Link Control Protocol) 
Link制御プロトコル。通信設定要求、通信設定肯定応答、通信設定否定応答、通信設定拒否等をコントロールする。

0xc023:PAP(Password Authentication Protocol) 
パスワード認証用プロトコル。

0xc223:CHAP(Challenge Handshake Authentication Protocol) 
パスワード認証用プロトコル。

0xc8021:IPCP(Internet Protocol Control Protocol) 
接続を行う双方が互いに使用するIPアドレスと、TCPのヘッダ圧縮(Van jakobson圧縮RFC1144)を行うかどうかを決める。

0x0021:Internet Protocol(IP) 
PPPにおいて、IPパケットを取り扱うことを表す。

 

まずはお気軽にご相談ください。

メールでのお問い合わせお電話でのお問い合わせ

▲ページの先頭にもどる

 
ページ上部ヘ戻る