PPPoE接続処理の向上

 FTTPやADSL接続サービス(以下,ADSL)において,データリンク層プロトコルとして広く利用されているのが,PPPoE(PPP over Ethernet)。PPPoEは,Ethernet経由でPPPを利用できるようにするため,プロトコルである。

 Linuxでは,カナダRoaring Penguin Software社が提供する「RP-PPPoE」というPPPoE接続ソフトウエアを利用して手軽にADSLを利用できる。多くのディストリビューションでは標準でRP-PPPoEが添付されるため,その設定を行うだけでADSL接続が行える。

 RP-PPPoEには導入や設定が容易という利点があるが,ユーザー空間で動作するドライバであるため処理速度の面で若干問題がある。RP-PPPoE が遅いのは,ドライバが処理するデータがユーザー空間とカーネル空間の間で頻繁にコピーされるためである。ドライバをカーネル空間で動作させることができれば,こうした“無駄”なコピーは発生せず,結果としてより高速な実効通信速度が得られる。

 RP-PPPoEも設定次第でカーネル空間で動作させられる。カーネル空間で動作させた場合の性能向上は著しく,1.5~2Mビット/秒の実行速度しか出なかったi486DX4搭載のノートPCで作ったルーターでもカーネル空間で動かせば,4.5~5Mビット/秒の実効通信速度が得られた。

カーネル設定とソフトの導入

 RP-PPPoEをカーネル空間で動作させるには,図1の設定項目を有効にしてビルドしたバージョン2.4以降のLinuxカーネルが必要である。図1で有効にしたドライバ用の設定(図2)を/etc/modules.confファイルに追加し,ドライバが利用するデバイス・ファイルも以下のようにmknodコマンドで作成する。

# mknod --mode=664 /dev/ppp c 108 0

図1●カーネル空間ドライバに必要なカーネル設定項目
図1●カーネル空間ドライバに必要なカーネル設定項目

alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-13 n_hdlc
alias tty-ldisc-14 ppp_synctty
alias net-pf-24 pppoe
図2●/etc/modules.confファイルに追加する設定