PPPoE for NORTi

User’s Guide

2008 年 1 月版

株式会社ミスポPPPoE for NORTi

目次
第１章

導入................................................. 3

1.1 はじめに............................................................. 3
1.2 特長................................................................. 3
1.3 制限事項............................................................. 4
1.4 ファイル構成 ......................................................... 4第２章

モジュール構成............................................. 5

2.1 概要................................................................. 5
2.2 使用リソース ......................................................... 6
第３章

コ ン フィ グ レ ー ショ ン .................................. 7

3.2 PPPOEのコンフィグレーション .......................................... 73.3 マクロ............................................................... 9第４章

関数................................................ 11

pppoe_start ............................................................ 11
pppoe_end .............................................................. 11
第５章

PPPOEの初期化................................................ 12-1-

PPPoE for NORTi

2004 年 12 月版で訂正された項目
ページ

更新内容

8

コールバックの event に PPPOE_PPP_ECHO_FAIL を追加

93.3 マクロに PPPOE_ECHO_TMOUT を追加

93.3 マクロに PPPOE_ECHO_RETRY を追加

93.3 マクロに PPPOE_MTU を追加

2005 年 7 月版で訂正された項目
ページ

更新内容

7PPP コンフィグレーションテーブルの構造から dbg_ch を削除

8

パケットトレース(dump)の記述を変更

9DUMP の記述を変更

2008 年 1 月版で訂正された項目
ページ

更新内容

5

制限事項を修正-2-

PPPoE for NORTi

第 １ 章

導入

1.1 はじめに
PPPoE(Point to Point Protocol over Ethernet)はブリッジ装置(ADSL モデム)を経由しEthernet で PPP の機能を利用するためのデータリンク層のプロトコルです。
PPPoE for NORTi では複数の I/F を使用するために、マルチチャネル対応プロトコルスタックを使用します。本ドキュメントでは PPPoE for NORTi の使用方法について説明します。
マルチチャネル対応プロトコルスタックの詳細な使用方法は「NORTi Version 4 ユーザーズ
ガイド補足説明書」をご覧ください。

1.2 特長PPPoE for NORTi は RFC2516 に基づき実装されました。
PPPoE の接続は次のように行われます。
PPPoE はマルチチャネル対応プロトコルスタック上で動作し、Ethernet の物理チャネルを通常の Ethernet 通信と共有して使用することが出来ます。

ADSL Accsess
ADSL モデム
Concentrator

Ethernet HUB

NORTi PPPoE

Local Network(eth0)
および(pppoe)-3-PPPoE for NORTi

1.3 制限事項
・ NORTi Version 4 以外でのオペレーティングシステムでの動作は保証対象外です。
・ 上位プロトコルは IPv4 のみサポートしています。それ以外のプロトコルは未サポートです。
・ プロトコルフィールド圧縮(PFC)、アドレス/制御フィールド圧縮(ACFC)、IP 圧縮は未サポートです。
・ クライアント動作のみです。サービスコンセントレータとしての動作はできません。
・ このドキュメントは許可無く変更されます。

1.4 ファイル構成
PPPoE for NORTi には次のファイルが収録されています。
ヘッダファイルは NORTi\PPPOE\INC フォルダに収録されています。
nopppoe.hPPPoE コモンヘッダファイル

npppoec.h

PPPoE コンフィグレーションヘッダファイル
このファイルは nonetc.h と同様にコンフィグレーションを行うユーザ
ーアプリケーションのファイル(nonetc.h をインクルードしているソースファイル)で 1 度だけインクルードしてください。
複数のファイルからインクルードしたい場合は#define INCLUDED_FROM_NONET を#include の前で定義してください。

npppoes.h

PPPoE for NORTi 内部ヘッダ

ソースファイルは NORTi\PPPOE\SRC フォルダに収録されています。
nopppoe.c

PPPoE メインコード

nonchap.c

CHAP 認証モジュール

pppdump.c

PPP パケットダンプモジュール

nonencr.c

CHAP 認証で使用する暗号化モジュール・ PPP を PPPoE と同時に(別 I/F で)使用している場合、nonchap.c と nonencr.c は PPP と共通で使用することが出来ます。

-4-PPPoE for NORTi

第 ２ 章

モジュール構成

本章では PPPoE for NORTi の構成と動作について、説明します。

2.1 概要PPPoE for NORTi は次のようなモジュール構成になっています。
プライマリ Ethernet リンクインターフェースモジュール(eth0)
このモジュールは PPPoE パケットを、PPPoE モジュールに送ります。PPPoE 以外のパケッ
トは IP/ICMP/ARP モジュールに送ります。
PPPoE モジュール
このモジュールでは次の機能を実現します
・PPPoE パケットをデフォルトイーサネットチャンネルから受信
・PPPoE ディスカバリーの実行
・PPP セッション(LCP、認証、IPCP)の実行
・セッション確立後 IP パケットを上位モジュールに受け渡す
PPPoE リンクレイヤーインターフェースモジュール(pppoe0)
このモジュールは IP パケットを IP レイヤーへ送信および受信します

IP/ICMP/ARP モジュール

PPPoE リンクレイヤーイン
I/F モジュール(pppoe0)
プライマリ Ethernet リンク

PPPoE ModuleI/F モジュール(eth0)

Ethernet 物理チャネル-5-

PPPoE for NORTi

2.2 使用リソース
PPPoE for NORTi では次のリソースを使用します。
タスク

×1

メールボックス×2

サイクリックハンドラ

×1

メモリプール×1-6-

PPPoE for NORTi

第 ３ 章

コ ン フィ グ レ ー ショ ン

本章では PPPoE for NORTi を使用するために必要なコンフィグレーションを説明します。

3.1 リソース ID
次の各リソース ID をユーザーアプリケーション内で定義してください
ID ID_PPPOE_TSK=?;/* ID of PPPOE Task */ID ID_PPPOE_MBX=?;/* ID of Mailbox for Queuing PPPOE packets*/

ID ID_PPPOE_IP_MBX=?;/* ID of Mailbox for Queuing IP packets */ID ID_PPPOE_MPF=?;/* ID of PPPOE Memory Pool */ID ID_PPPOE_ALM=?;/* ID of PPPOE Cyclic handler */各リソース ID を 0 で指定すると、ID は内部で自動的に割り当てられます。

3.2 PPPoEのコンフィグレーション
PPPoE の各種設定情報はグローバル変数 pppoe_cfg をユーザーアプリケーション内で定義してください。
PPP コンフィグレーションテーブルの構造
typedef struct t_pppoe_cfg{
PPPOE_CALLBACK cbk;/* イベントコールバック */

int

dump;

/* パケットトレース */int

eth_ch;/* デフォルト Ethernet チャネル */Buser [USER_LEN];/* 認証で使用するユーザー名 */Bpasswd [PASS_LEN]; /* 認証で使用するパスワード */B

sv_name[20];/* サービス TAG 名 */UHsv_len;/* サービス TAG の長さ */BOOL

auto_connect;/* 自動接続 */} T_PPPOE_CFG;-7-

PPPoE for NORTi
パケットトレース(dump)
DUMP_PPPOE を指定すると、PPPoE のパケットログが出力されます。
DUMP_IP を指定すると、IP のパケットログが出力されます。
これらは複数指定可能です。パケットログを出力しない場合は 0 を設定してください。
パケットトレース出力ポート番号(dbg_ch)
パケットトレースで使用するシリアルポートの論理チャネル番号を指定します。
シリアルポートは PPPoE を使用する前にアプリケーションで初期化を行う必要があります。パケットトレースを使用しない場合は、設定は不要です。
デフォルト Ethernet チャネル(eth_ch)
PPPoE を受信するデフォルトの Ethernet チャンネル番号を指定します。PPPoE を使用する前に Ethernet チャネルは初期化されている必要があります。
認証で使用するユーザー名(user)
PPPoE の認証で使用するユーザー名を設定してください。50 文字以内で設定できます。
認証で使用するパスワード(passwd)
PPPoE の認証で使用するパスワードを設定してください。50 文字以内で設定できます。
Service-Name TAG(sv_name)
接続するサービスコンセントレータが Serve-Name TAG の設定が必要な場合、設定してください。使用しない場合、設定は不要です。
Service-Name TAG の長さ (sv_len)
Service-Name TAG を設定した場合、TAG の長さを設定してください。
自動接続(Auto_connect)
TRUE を設定すると IP パケットが送信されたときに PPPoE 内部で pppoe_start を呼び出し自動的にネゴシエーションを行います。
イベントコールバック(cbk)
PPPoE の接続、切断を行われた場合に、PPPoE 内部から呼び出されるユーザー定義の関数です。関数は次のように定義します。関数名は任意です。
void callback (int event)
変数 event には次のパラメータが設定されています。
PPPOE_CLOSEPPPoE セッションがクローズされた

PPPOE_OPEN

PPPoE セッションがオープンされた

PPPOE_PPP_ECHO_FAIL

リモートホストが LCP ECHO リクエストに応答しない

コールバック関数の設定は次のように行えます。
pppoe_cfg.cbk = (PPPOE_CALLBACK) callback;-8-

PPPoE for NORTi

3.3 マクロコンパイル時に定義するマクロ
NOCHAPCHAP 認証を行わない場合、このマクロを指定して nopppoe.c をコンパイルしてください。コードサイズを節約できます。この場合 nonchap.c と nonencr.c のリンクは不要です。
LITTLE_ENDIAN
Little Endian モードの CPU で動作させる場合 nopppoe.c、nonencr.c、pppdump.c の3 つのファイルをコンパイルする場合、このオプションをつけてコンパイルを行ってください。Big Endian モードではオプションは不要です。
DUMP
DUMP マクロでパケットトレースの機能を有効にできます。パケットトレースを使用する場合は、以下のコンフィグレーションを行ってください。
・pppdump.c をコンパイルする際に”DUMP”マクロを定義します。
・NETSMP¥SRC フォルダにある nondump.c をリンクします。
・tcp_ini()を呼び出す前に landump_ini（ダンプ機能の初期化）を呼び出してください。
・pppoe_cfg.dump を設定します。
nondump.c の詳細につきましては
NORTi Version4 ユーザーズガイド補足説明書「2.8 LAN パケットダンプ機能」をご覧ください。

-9-

PPPoE for NORTi
アプリケーションで定義するマクロ
次のマクロを npppoec.h の前で#define することで、設定値を変更できます。特に変更の必要がない場合は#define 定義は不要で、デフォルト値が使用されます。
マクロ名

デフォルト値内容

PPPOE_QCNT

6

PPPoE 内部で使用するパケットのキューイング数

PPPOE_LCP_RETRY

5

LCP ネゴシエーションのリトライ回数

PPPOE_AUTH_RETRY

5

認証ネゴシエーションのリトライ回数

PPPOE_IPCP_RETRY

5

IPCP ネゴシエーションのリトライ回数

PPPOE_DISC_RETRY

5

PPPoE ディスカバリーのリトライ回数

PPPOE_ECHO_RETRY

5LCP ECHO のリトライ回数

PPPOE_LCP_TMOUT

1000

LCP ネゴシエーションのタイムアウト時間(ミリ秒)

PPPOE_AUTH_TMOUT

1000

認証ネゴシエーションのタイムアウト時間(ミリ秒)

PPPOE_IPCP_TMOUT

1000

IPCP ネゴシエーションのタイムアウト時間(ミリ秒)

PPPOE_DISC_TMOUT

1000

PPPoE ディスカバリーのタイムアウト時間(ミリ秒)

PPPOE_ECHO_TMOUT

3000

LCP ECHO のタイムアウト時間(ミリ秒)

PRI_PPPOE_TSK

4

PPPoE タスクの優先度

SSZ_PPPOE_TSK

1024

PPPoE タスクのスタックサイズ

PPPOE_MTU

1492

PPPoE の MTU サイズ- 10 -PPPoE for NORTi

第 ４ 章

関数

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

pppoe_start━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[機能] PPPoE 通信を開始する[形式] ER pppoe_start (TMO tmout)
TMO tmout[戻り値] E_OKタイムアウト

正常終了

E_TMOUT タイムアウト[解説] PPPoE と PPP のネゴシエーションを開始します。tmout 内にネゴシエーションが完了しない場合は、E_TMOUT が返ります。この関数を呼び出す前に tcp_nif_iniでネットワークインターフェースの初期化を行う必要があります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━pppoe_end━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[機能] PPPoE 通信を終了する[形式] void pppoe_end(void)[戻り値] なし
[解説] PPP と PPPoE のセッションを終了します。

- 11 -

PPPoE for NORTi

第 ５ 章

PPPoEの初期化

PPPoE の初期化はネットワークインターフェースの初期化を行う tcp_nif_ini 関数を使用して行います。この初期化を行う前に Ethernet の初期化が行われている必要があります。
使用例)
T_NIF net_pppoe;
UB pppoe_addr[]= { 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc };UB pppoe_ipaddr[]= {192, 168, 102, 11};

UB pppoe_gateway[]= { 0, 0, 0, 0 };UB pppoe_mask []= {255, 255, 255, 0};/* Initialization of PPPOE */addr.hwaddr = pppoe_addr;/* MAC address */addr.ipaddr = pppoe_ipaddr; /* IP address*/

addr.gateway = pppoe_gateway; /* Gateway */addr.mask= pppoe_mask;/* Subnet mask*/

ercd = tcp_nif_ini(&net_pppoe, "pppoe", pppoe_nif_dev, &addr);
pppoe_nif_dev は PPPoE 内部で定義されている関数です。tcp_nif_ini の詳しい使用方法は「NORTi Version4 ユーザーズガイド 補足説明書」の“1.9.2 ネットワークインターフェースの初期化”をご覧ください。

- 12 -

PPPoE for NORTi ユーザーズガイド

株式会社ミスポ http://www.mispo.co.jp〒213-0002 神奈川県川崎市高津区二子 5-1-1 高津パークプラザ 3F
一般的なお問い合せ sales@mispo.co.jp
技術サポートご依頼 norti@mispo.co.jp