ヤマハルーターのL2TP/IPsecが遅い
中古のRTX1100を入手して自宅LANにリモートアクセスするためのVPNサーバーを構築してみた。iperf3でスループットを測ると10Mbpsを切っている・・・ナンデ?!
/*----------- -----------*/
試したこと
以下のWebを参考にさせてもらいVPNサーバーを構築した。
「Eleclog (見習い赤魔道士のメモ帳): RTX1100をVPNサーバとして使う」
http://eleclog.quitsq.com/2015/04/rtx1100-vpnserver.html
既存環境への影響を最小限にするにはVPNルーターではなくサーバーとして構築した方が好都合だし、いろいろとテストするにもグローバルIPの世界まで出ていかなくても済む。ただしインターネットとつないでいるルーターの機能を兼ねることも可能なので、結果が良ければそうすることも視野に入れていた。
こんなものらしい
RTX110のカタログ仕様によるとIPsecスループットは最大120Mbit/s (AES+SHA1、双方向)である。L2TPを併用しているとは言え10Mbpsに届かないのは何かおかしいのではないか?
もちろん真っ先に設定の間違いを疑ったわけだが、半時間ほどGoogleして、そうではないらしいことが分かった。
2014年11月25日のRBB TODAYの記事「最大2Gbpsを実現!ヤマハの新VPNルータ「RTX1210」の特徴とは(後編)」にRTX1100を含む歴代VPNルーターの速度比較スライドの写真があり、その中にL2TP/IPsecスループットに関するものが含まれていた。
モデル | L2TP/IPsecスループット スライド写真から読み取り |
IPsecスループット カタログ値(双方向) |
---|---|---|
RTX1100 | 13Mbps | 120Mbps |
RTX1200 | 25Mbps | 200Mbps |
RTX1210 | 40Mbps | 1.5Gbps |
L2TP/IPsecのスループットはIPsecのカタログ値の1/10~1/40位になる、と言うこと。RTX1100でL2TP/IPsecスループットを測っているときWeb AssistanceでCPU利用率を見るとほぼ100%に張り付いていた。明らかなCPUボトルネックである。カタログと実態、および双方向と片道の違いで説明できる差ではない。
RTX1100のCPUはMIPS32/200MHzとかなり非力であることを考えると、純然たるIPsecについてはCPUがほとんど介在すること無く処理できるようなハードウエアが用意されているのではないか。そうでなければこのCPUで120MbpsのIPsecスループットは実現できるとは思えない。RTX1210およびRTX1200でも似たような事情ではないかと思う。
私が試した結果は紹介したWebの数値より遅いが、インターネット接続用を念頭にフィルター定義なども一緒に設定してしまったためだと思う。
なおRTX1100の暗号化サポートはAES128/SHA1までだ。AES256/SHA2はサポートしていない。パフォーマンスを測ったときのVPN接続はAES128-CBCで暗号化されていることを確認している。これなら当面問題ないはずである。
VPNはいわゆる格安SIMを使ったモバイルネットワークでつなぐことになるが、少し混雑した場所だと結構遅いので、RTX1100のスループットはあまり問題にならないのかもしれない。しかし利用者が少なければ下りで20Mbps台の実力はあるので、できればVPNもこのくらいのスループットが得られるとうれしい。
他の方法を試してみることにした。
代案
Beaglebone Black (以下BBBと略)およびOrange Pi Plus2 (以下OPiと略)を使いL2TP/IPsec およびIKEv2 VPNサーバーを構築してどのくらいのスループットが得られるか調べてみた。また同時にCPUの負荷も測った。負荷があまり高くなければ他の機能、例えばNASなど、を兼用させる余地も出てくる。
CPU負荷測定はsarコマンドを使い、1分間スループットを測定する期間の中ほど30秒間について測った。表に記載していない分類 (ni, wa, hi, & st) は全てゼロだった。
BBB とOPiはあまりポピュラーではないと思う。それぞれRaspberry Piの1 Model Bおよび3 Model Bに相当するような構成で、CPU性能が何割か高い – 倍までは届かない – ようなものと私は理解している。どちらも暗号処理ハードウエアを持っているが、SoftEtherでは使われていない可能性がある。なおOPiのイーサネットはGBE(ギガビット)である。
それぞれ使用したLinuxイメージは以下のとおりだ。カーネルは特に再構築などは行わず、以下記載の通りイメージ付属のものをそのまま使っている。
ファイル名: bone-debian-8.7-iot-armhf-2017-03-19-4gb.img.xz
Web: https://rcn-ee.com/rootfs/bb.org/testing/2017-03-19/iot/
Kernel: 4.4.54-ti-r93
ファイル名: Armbian_5.25_Orangepiplus_Debian_jessie_default_3.4.113.7z
Web: https://dl.armbian.com/orangepiplus/archive/
Kernel: 3.4.113-sun8i
なおBBBもOPiも手元にあったから利用したまでで、どちらも推奨しているわけではない。特にOPiはソフトウエアのサポートが弱く、ハードウエアは魅力的だが、長期間継続して利用するのはどうかと思う。実際に試してはいないが、Raspberry Pi 3B辺りのほうが実績も多く安心できそうな気がする。
VPNソフトウエアは、L2TP/IPsecにはSoftEtherを、IKEv2にはStrongSwanを使った。それぞれの構築手順は以下のWebを参考にさせていただいた。
SoftEther: 「俺の技術メモ: Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その1~3)」
http://xn--u9j0md1592aqmt715c.net/raspberry-pi2-vpnserver-part1/
http://xn--u9j0md1592aqmt715c.net/raspberry-pi2-vpnserver-part2/
http://xn--u9j0md1592aqmt715c.net/raspberry-pi2-vpnserver-part3/
StrongSwan: 「Tutorial: How to Set Up an IKEv2 VPN Server with StrongSwan on Ubuntu 16.04 (DigitalOcean)」
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-16-04
VPNプラットフォーム | スループット | CPU 使用率 |
us% | sy% | si% | id% | |
---|---|---|---|---|---|---|---|
L2TP/IPsec (FW 8.03.94) |
RTX1100 | 6Mbps | 100% | ||||
L2TP/IPsec (SoftEther) |
BBB | 24Mbps | Cpu0: | 64 | 17 | 19 | 0 |
OPi | 45Mbps | Cpu0: Cpu1: Cpu2: Cpu3: |
14 14 15 63 |
9 9 9 11 |
2 2 1 15 |
75 75 75 11 |
|
全平均: | 26 | 9 | 5 | 60 | |||
IKEv2 (StrongSwan) |
BBB | 28Mbps | Cpu0: | <1 | 2 | 64 | 33 |
OPi | 66Mbps | Cpu0: Cpu1: Cpu2: Cpu3: |
0 <1 <1 0 |
0 <1 <1 <1 |
0 0 0 79 |
100 100 100 21 |
|
全平均: | <1 | <1 | 3 | 96 |
BBBおよびOPiを利用したVPNサーバーはどれも目安と考えていた20Mbps台にとどいている。OPiでは同時2スレッドで動いていると考えるとCPUの性能差に見合ったスループットの違い、と言うことができそうだ。ただしOPiのIKEv2の場合のCPU負荷の数字が少しおかしい。
個別コアと全平均の数字のつじつまが合っていない。正確な原因はわからないが、コア毎に独立した可変クロックになっていてその補正の関係か何かではないかと想像している。
いずれにせよIKEv2の方がL2TP/IPsecよりもスループットが高くCPUの負荷は低くなっている。IKEv2ではL2TPの処理が無いから当然と言えるが、もしかするとSoftEtherはIPsec関係の暗号処理もKernelのAPIを使わずに自前で行っているかもしれない。この点は確かめられなかった。
なおOPiの場合si (Software Interrupt) の値が特定のコアだけ高いのが目立つ。siはIP通信関係の処理を行っている部分でマルチコアCPUでは特定のコアでのみ実行するのがディフォルト、と言うことらしい。従ってこれで正常なのだろう。特にこのことがパフォーマンスを制限するような状況ではないので問題はない。
VPN接続は、L2TP/IPsecではAES128-CBCで、IKEv2ではAES256-CBCで暗号化されていたことを確認している。これはクライアント側の事情で決まるらしく、VPNサーバーの設定で同じにそろえることはできなかった。
「低いCPU負荷で高いスループットが得られるIKEv2が良さそうだ。これならBBBでも他の機能を載せることもできる。」と思ったのだが、ちょっとした落とし穴があった。
UDPパフォーマンス
スループットが問題になるようなものでUDPが利用されている用途はあまり多くない。私がVPN経由で使う可能性のあるのはVoIPくらいのものだが、これはせいぜい100kbps位の世界なのでパフォーマンスを気にする必要はほとんどない。
じゃあなぜUDPパフォーマンスを調べたか?
ハンドシェイクが要らない分、TCPで測ったスループット程度のトラフィックはもっと楽に扱えるのではないかと考え、ちょっと確かめてみよう、と言った程度の軽い気持ちだった。しかしかなり想定外の結果が得られた。RTX1100とBBBによるL2TP/IPsecはほぼ想定通りだったが、それ以外はUDPのパフォーマンスがなぜか低いのだ。
VPNプラットフォーム | 設定 帯域幅 |
パケット 損失率 |
CPU 使用率 |
us% | sy% | si% | id% | |
---|---|---|---|---|---|---|---|---|
L2TP/IPsec (FW 8.03.94) |
RTX1100 | 6Mbps | 0.35% | 未測定 | ||||
L2TP/IPsec (SoftEther) |
BBB | 24Mbps | 1.3% | Cpu0: | 60 | 10 | 13 | 17 |
OPi | 45Mbps | 計測不能 (iperf3異常動作) | ||||||
30Mbps | 59% | Cpu0: Cpu1: Cpu2: Cpu3: |
4 4 2 34 |
2 6 2 2 |
<1 <1 2 8 |
94 90 94 56 |
||
全平均: | 11 | 3 | 3 | 83 | ||||
IKEv2 (StrongSwan) |
BBB | 28Mbps | 計測不能 (iperf3異常動作) | |||||
5Mbps | 90% | Cpu0: | <1 | 2 | 6 | 92 | ||
OPi | 66Mbps | 計測不能 (iperf3異常動作) | ||||||
30Mbps | 12% | Cpu0: Cpu1: Cpu2: Cpu3: |
<1 <1 0 0 |
2 5 <1 0 |
0 0 0 34 |
92 95 100 66 |
||
全平均: | <1 | 2 | 6 | 92 |
UDPの場合送信側から指定された帯域幅のトラフィックを送り、受信側に届かなかったパケットの割合=パケット損失率を調べることになる。損失率が高いとテスト処理の制御情報が伝わらなくなりiperf3の動作がおかしくなる場合がある。
RT1100とBBBのL2TP/IPsec以外はTCPで得られたスループットを帯域幅に指定したのでは正常にテストできなかった。上記は帯域幅の指定を徐々に下げて一応テストができる状態になったときの結果である。
BBBによるIKEv2が特に悪く、帯域幅を5Mbpsまで下げても大半のパケットが失われている。損失率が10%を切るためには1Mbpsまで帯域幅を下げる必要があった。
OPiで損失率が10%を切る概略の帯域幅は、L2TP/IPsecの場合で10Mbps、IKEv2だと20Mbpsだった。どれもBBBによるL2TP/IPsecの場合よりも低い値である。
市場動向
L2TP/IPsecをサポートしている市販ルーターについて調べてみた。
BuffaloとPlanexからコンシューマー向けハイエンド、ないしは小規模事業向けの位置づけの製品が出ている。
VR-S1000 |
VR500-A1 |
両方ともL2TP/IPsecのパフォーマンスが100Mbpsを超えているというレビューがある。
清水理史の「イニシャルB」: L2TP/IPSec接続でも実効100Mbpsを実現 バッファロー有線LANルーター「VR-S1000」
http://internet.watch.impress.co.jp/docs/column/shimizu/629585.html
iT-STUDIO: SOHO最強のおすすめVPNルーター VR500-A1 を徹底レビュー!
https://it-studio.jp/vr500-a1-review/
本当にそんなに速いのか気になる製品だが、幅広いデバイスとつなげるには暗号化を3DESに設定しなければならないなど、別の意味で気になる点も少なくない。信頼性・設定の柔軟さなど、総合的な「安心感」を考えると多少高くてもやっぱりYamahaの製品?と思わなくもないが、
自宅用ルーターにここまでの費用をかけるのが正しい判断と思えないのも事実である。
そうやってあれこれ探しているうち、かなり衝撃的なものを見つけてしまった。
いつまでこの値段で買えるかわからないが、あのCiscoの製品が2万円を切っている!と言うのは実に衝撃的である。
(この記事を書いた時点で¥16,600)
正式サポートなのかどうか少し微妙だが、一応L2TP/IPsecは使える。
bisonicr keep walking: Cisco 841MJほかシスコルータのリモートアクセスVPNまとめ
(最後の方「■実は「L2TP/IPSec」もちゃんと使えます。」)
http://bisonicr.ldblog.jp/archives/55427998.html
bisonicr keep walking: Cisco IOSルータでAndroid端末をL2TP/IPSec接続する。
http://bisonicr.ldblog.jp/archives/54147837.html
シスコサポートコミュニティ: C841M CCP Express 3.3 L2TP/IPsec VPN の設定ガイド
https://supportforums.cisco.com/ja/document/13273836
訳あって自宅のインターネット接続が100Mbpsまでなので、衝動買いは辛うじて踏み止まった次第 。 (^-^;
今回のまとめ
RTX1100について「IPsecのカタログ値が120MbpsなのにL2TP/IPsecだと10Mbpsに届かない」と言う第一印象だったが、実際はIPsecの方をハードウエア処理でずいぶん頑張っていると言うべきらしい。CPUの性能を考えれば妥当なL2TP/IPsecパフォーマンスである。
また想定するL2TP/IPsecのユーザーが私一人であることを考えると、数Mbpsのスループットでも多くの場合問題にならない。モバイルネットワークがボトルネックになる可能性が高いからだ。実際にデスクトップPCのネットワーク接続をVPN経由にして半日ほど使ってみて、確かに遅いが、大きなファイルを操作する場合を除きフラストレーションを感じるほどではなかった。
当初構想通りインターネットとつないでいるルーターをRTX1100で置き換えてL2TP/IPsec VPN機能を持たせることにした。これなら消費電力の増加なしにVPN機能を追加できる。しばらくこれで運用してみて、もし遅さが目立つようなら別途VPNサーバーを追加するようにすれば良いはずだ。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- ヤマハルーターのL2TP/IPsecが遅い(2017.05.04)
- Ubuntuアップグレード (12.04 → 14.04.1) でgrubトラブル(2014.08.13)
- ワットチェッカー的なものを自作する (その2)(2014.08.08)
- ワットチェッカー的なものを自作する (その1)(2014.08.01)
- 意図しないドラッグ&ドロップを防ぐ(2014.06.30)
この記事へのコメントは終了しました。
コメント