« laptop_mode でハードディスクを止める | トップページ | Java のパフォーマンス »

カーネルモード PPP を使う(rp-pppoe)

先日 B フレッツにしたので、とことんパフォーマンスにこだわってみようと、ルータである Linux をカーネルモード PPP で PPPoE 接続してみました。

Gentoo Linux では rp-pppoe をインストールしただけでは、ユーザーモードで接続します。もちろんこれだけでも快適なのですが、ダウンロードとかしまくって、ネットワークの負荷をかけると、pppoe デーモンが busy になってしまいます。pppoe デーモンは、あくまでもユーザーランドのプロセスなので、他にも重いプロセスがあると、CPU 資源がとられてしまい、パフォーマンスが落ちてしまいます。

そこでカーネルモード。Gentoo の場合は /etc/ppp/pppoe.conf に、下記一行を足すだけでした

LINUX_PLUGIN=rp-pppoe.so

これで PPPoE の接続をし直すと、カーネルモジュールの pppoe, pppox 等が組み込まれ、カーネルモードで接続されます。top コマンドでみるとネットワークの負荷が上がった時、sys のパーセンテージが上がって行き、ちゃんとカーネルで処理されているのがわかります。

と、簡単だなーと思っていたら、ひとつ大きな罠にハマってしまいました。調べてみると Path MTU Discovery Black Hole という問題にハマってしまい、特定のサイトだけ接続できないという事態に陥ってしまいました。たいていのサイトは問題が無かったので、発見するまでかなり時間がかかってしまいました。

解決法は iptables で外向きの通信に対し

iptables  -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

を追加するだけでした。時間があったら、速度比較とかしてみようと思います。

|

« laptop_mode でハードディスクを止める | トップページ | Java のパフォーマンス »

「パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/166812/8634133

この記事へのトラックバック一覧です: カーネルモード PPP を使う(rp-pppoe):

« laptop_mode でハードディスクを止める | トップページ | Java のパフォーマンス »