2003 年 6 月 26 日 (木) 自宅

なんか、某ちゃんねる方面で召喚されているとのウワサを聴いたのだけれども、 対向で 2GHz オーバーのマシンなんて持ってないよ。 まあ、まずは FreeBSD でいってみよう。 FreeBSD の PPPoE には ppp(8) と ports/net/mpd で実現する 2 種類があって、 特に ppp(8) の性能に関しては色々と問題があるわけですが、 まずはこの性能の低い ppp(8) の性能限界を見てみましょうか (他の OS についても今後また…)。

つーことで、実験環境。うちで Pentium 4 マシンが 2 台あればいいんだけど、 そうもいかないわけで、うちで 1 番速いマシン (pandora) と 2 番目に速いマシン (dual)を、 Gigabit Ethernet (32bit PCI なので性能は今一つですが) でつないでみました。 スペックはこんな感じ。 オンボードの FastEthernet の NIC は制御用に使いました (192.168.0.0/24)。

マシン名pandora.FromTo.Ccdual.FromTo.Cc
CPUPentium 4 2.53GHzデュアル Pentium III 866MHz
MemoryDDR SDRAM 512MBSDRAM 512MB
Gigabit NICIntel PRO/1000Tメルコ LGY-PCI32-GT
OSFreeBSD 5.1-RELEASEFreeBSD 5.1-RELEASE
表 1   実験環境

まずは単純に IP で繋いで netperf で測定。TCP で約 300Mbps 出るね。

dual# /usr/local/netperf/netperf -H 10.0.0.2
TCP STREAM TEST to 10.0.0.2 : histogram
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 65536  32768  32768    10.01     309.30   

pandora# /usr/local/netperf/netperf -H 10.0.0.1
TCP STREAM TEST to 10.0.0.1 : histogram
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 65536  32768  32768    10.01     295.09   

ということで、pppoe の設定。まずは /etc/rc.conf の設定。 PPPoE に関してはサーバを起動する側でコメントを外す (この例では dual 側でサーバを起動している)。 こちらが pandora 側。

hostname="pandora.FromTo.Cc"
ifconfig_rl0="DHCP"
ifconfig_em0="up"
kern_securelevel_enable="NO"
moused_enable="YES"
moused_port="/dev/psm0"
moused_type="auto"
sendmail_enable="NONE"
sshd_enable="YES"
usbd_enable="YES"
inetd_enable="YES"
#pppoed_enable="YES"
#pppoed_provider="pppoe-in"
#pppoed_flags="-P /var/run/pppoed.pid"
#pppoed_interface="em0"

こちらは dual 側。

hostname="dual.FromTo.Cc"
ifconfig_fxp0="DHCP"
ifconfig_bge0="up"
kern_securelevel_enable="NO"
moused_enable="YES"
sendmail_enable="NONE"
sshd_enable="YES"
usbd_enable="YES"
pppoed_enable="YES"
pppoed_provider="pppoe-in"
pppoed_flags="-P /var/run/pppoed.pid"
pppoed_interface="bge0"

/etc/ppp/ppp.conf はこんな感じ。サーバ側とクライアント側で共有です (set device PPPoE:bge0:pppoe-in の部分だけ、 ホストの NIC に合わせて書き換えます。ここで示しているのは dual 側ですが、 pandora 側では set device PPPoE:em0:pppoe-in にしています)。

#################################################################
# PPP  Sample Configuration File
# Originally written by Toshiharu OHNO
# Simplified 5/14/1999 by wself@cdrom.com
#
# See /usr/share/examples/ppp/ for some examples
#
# $FreeBSD: src/etc/ppp/ppp.conf,v 1.8 2001/06/21 15:42:26 brian Exp $
#################################################################

default:
 set log Phase Chat LCP IPCP CCP tun command
 ident user-ppp VERSION (built COMPILATIONDATE)

 # Ensure that "device" references the correct serial port
 # for your modem. (cuaa0 = COM1, cuaa1 = COM2)
 #
 set device /dev/cuaa1

 set speed 115200
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
           \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
 set timeout 180                        # 3 minute idle timer (the default)
 enable dns                             # request DNS info (for resolv.conf)

papchap:
 #
 # edit the next three lines and replace the items in caps with
 # the values which have been assigned by your ISP.
 #

 set phone PHONE_NUM
 set authname USERNAME
 set authkey PASSWORD

 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 add default HISADDR                    # Add a (sticky) default route

pppoe-in:
 allow mode direct
 enable lqr
 enable chap pap passwdauth
 set ifaddr 10.0.0.1 10.0.0.100-10.0.0.199
 accept dns

pppoe:
 set device PPPoE:bge0:pppoe-in
 set cd 5
 set dial
 set login
 set authname hosokawa
 set authkey hogehoge
 set redial 0 0

/etc/ppp/ppp.secret にはパスワードを設定。

hosokawa    hogehoge

てなことで、性能測定。同様に netperf の TCP モードで測定です。 どちらを ppp のサーバにするか、どちらを netperf のサーバにするかで、 4 通りの結果が出ます。 まあ、いずれにせよあまり速くはないけど、 Pentium 4 マシンで PPPoE サーバをやらせた場合は 40Mbps 程度出ていますね。 少なくともこの辺が Pentium III 866 マシンにおける PPPoE の限度なのでしょう。 思ったよりは速いか…。

pandoraでPPPoEサーバdualでPPPoEサーバ
pandoraでnetperfサーバ29.21Mbps27.36Mbps
dualでnetperfサーバ41.25Mbps39.13Mbps
表 2   PPPoE 上での netperf 測定

polling(4) は性能に効くかな? ということで、Pentium4 側を HZ=1000 の polling モードにして (SMP と polling(4) は併存できない)、 同じ集計を行ってみました。 結論を言えば、性能は下がっただけということでした。 まあ、HZ をいじればまた分かりませんが…。

pandoraでPPPoEサーバdualでPPPoEサーバ
pandoraでnetperfサーバ27.10Mbps26.11Mbps
dualでnetperfサーバ36.49Mbps35.04Mbps
表 3   PPPoE 上での netperf 測定 polling(4) あり

てなことで、いくら FreeBSD Userland ppp の性能が低くとも、 少なくとも Pentium III クラスでは 40Mbps 程度はいくようです。 まあ、この話題の続きはまた後日。 次回は ports/net/mpd かな?


このサイトへのリンクには何ら許可は必要ありません。 ただし、無断で写真をダウンロードして他の場所に掲載したり、 画像加工の素材として利用するなど、再配布に当たる行為はしないようにしてください。 また、このサイトへのリンクであることを明示すること無しに <img src="..."> などで他のページの内部に画像ファイルを取り込むことも、 ご遠慮下さい。