なんか、某ちゃんねる方面で召喚されているとのウワサを聴いたのだけれども、 対向で 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.Cc | dual.FromTo.Cc |
---|---|---|
CPU | Pentium 4 2.53GHz | デュアル Pentium III 866MHz |
Memory | DDR SDRAM 512MB | SDRAM 512MB |
Gigabit NIC | Intel PRO/1000T | メルコ LGY-PCI32-GT |
OS | FreeBSD 5.1-RELEASE | FreeBSD 5.1-RELEASE |
まずは単純に 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.21Mbps | 27.36Mbps |
dualでnetperfサーバ | 41.25Mbps | 39.13Mbps |
polling(4) は性能に効くかな? ということで、Pentium4 側を HZ=1000 の polling モードにして (SMP と polling(4) は併存できない)、 同じ集計を行ってみました。 結論を言えば、性能は下がっただけということでした。 まあ、HZ をいじればまた分かりませんが…。
pandoraでPPPoEサーバ | dualでPPPoEサーバ | |
---|---|---|
pandoraでnetperfサーバ | 27.10Mbps | 26.11Mbps |
dualでnetperfサーバ | 36.49Mbps | 35.04Mbps |
てなことで、いくら FreeBSD Userland ppp の性能が低くとも、 少なくとも Pentium III クラスでは 40Mbps 程度はいくようです。 まあ、この話題の続きはまた後日。 次回は ports/net/mpd かな?