ER-XのL2TP/IPsecスループット

ER-XのL2TP/IPsecのスループットを測定してみました。直結での計測なので実際の利用時のスピードを測るものではなく、ルーターの性能評価を行うものです。

計測環境

ER-XにDebian9をL2TP/IPsec接続し、CentOS7をiperf3のクライアント、Debian9をiperf3のサーバーにしスループットの測定を行います。ER-Xのファームウェアはv1.10.9となります。

計測結果

トンネルのMTUを1350としました。先ずはER-XのCPUの性能を測るべく、ハードウェア支援(offload)を全部オフで計測します。

hwnat=disable
ipsec=disable
receiver sender
MSS Mbps CPU 消費電力 Mbps CPU 消費電力
1310(指定なし) 28.5 38% 3.3W 28.9 38% 3.3W
1200 24.3 30% 3.3W 31.1 37% 3.3W
800 18.3 26% 3.3W 20.7 42% 3.2W
400 12.1 40% 3.3W 14.1 40% 3.3W

(*) iperf3を60秒間実行。無負荷時はTAP-TST10の目測値で2.7W。receiverはL2TP Client(Debian9)へのダウンロード、senderはL2TP Client(Debian9)からのアップロード。CPU負荷はWeb管理画面の表示で、タイミングによってかなり変動があるので参考値。

かなり悪い結果です。次にhwnat=enableにしてみます。

hwnat=enable
ipsec=disable
receiver sender
MSS Mbps CPU 消費電力 Mbps CPU 消費電力
1310(指定なし) 31.4 37% 3.3W 24.7 30% 3.1W
1200 28.2 39% 3.3W 24.3 39% 3.2W
800 18.3 30% 3.2W 18.4 30% 3.1W
400 12.0 41% 3.2W 12.1 41% 3.2W

あまり変化がなかったです。hwnatでoffloadされるものはNATやPPPoE等なので、IPsecやL2TPは高速化されません。ER-XはIPsecのハードウェア支援があるので、hwnatをdisableにする代わりに、ipsecをenableにして計測します。

hwnat=disable
ipsec=enable
receiver sender
MSS Mbps CPU 消費電力 Mbps CPU 消費電力
1310(指定なし) 62.7 35% 3.2W 74.4 37% 3.2W
1200 67.7 52% 3.4W 62.8 40% 3.4W
800 45.9 50% 3.4W 45.2 37% 3.3W
400 21.2 42% 3.2W 22.1 40% 3.3W

結構改善し、ちょっとしたリモートアクセス程度には使えそうですが、かなりイマイチな結果です。NATやPPPoEが爆速だったのと比較するとがっかりですね。RTX810IX2105にも大きく負けており、リモートアクセス用のルーターであれば、中古で同じ程度の金額で入手可能なRTX810やIX2105に分があります。最後にhwnatもenableにして計測します。

hwnat=enable
ipsec=enable
receiver sender
MSS Mbps CPU 消費電力 Mbps CPU 消費電力
1310(指定なし) 65.0 41% 3.4W 74.3 38% 3.3W
1200 75.1 50% 3.5W 67.8 37% 3.3W
800 52.5 51% 3.5W 44.9 38% 3.4W
400 24.4 53% 3.4W 20.5 40% 3.3W

ほとんど変化ありませんね。ER-XのCPUが貧弱でoffloadされないL2TPの処理等でパフォーマンスが上がっていないものと思われます。

ER-XのConfig

テストに使ったER-Xのconfigは以下の通りです。Basic Setup後に、L2TPとfirewallの設定を追加した差分のみ記載しています。NAT配下でないので、UDP 4500を開ける設定は不要ですが、汎用性を考え一応入れております。

set firewall name WAN_LOCAL rule 21 action accept
set firewall name WAN_LOCAL rule 21 description 'Allow ESP'
set firewall name WAN_LOCAL rule 21 log disable
set firewall name WAN_LOCAL rule 21 protocol esp
set firewall name WAN_LOCAL rule 22 action accept
set firewall name WAN_LOCAL rule 22 description 'Allow IKE,NAT-T,L2TP'
set firewall name WAN_LOCAL rule 22 destination port 500,4500,1701
set firewall name WAN_LOCAL rule 22 log disable
set firewall name WAN_LOCAL rule 22 protocol udp
set vpn ipsec auto-firewall-nat-exclude disable
set vpn ipsec ipsec-interfaces interface eth0
set vpn l2tp remote-access authentication local-users username ppp1 password test
set vpn l2tp remote-access authentication mode local
set vpn l2tp remote-access client-ip-pool start 192.168.100.200
set vpn l2tp remote-access client-ip-pool stop 192.168.100.210
set vpn l2tp remote-access dhcp-interface eth0
set vpn l2tp remote-access idle 1800
set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret presharedkey
set vpn l2tp remote-access ipsec-settings ike-lifetime 3600
set vpn l2tp remote-access ipsec-settings lifetime 3600
set vpn l2tp remote-access local-ip 192.168.100.1
set vpn l2tp remote-access mtu 1350

なお、上記でWAN→LOCALに対してL2TP(UDP 1701)を許可する設定を入れていますが、RTXシリーズやIXシリーズと違って、ER-Xでは必要となります。eth0から入ってくるL2TPはespに包まれて届きますので、espを許可するだけで足りる気もしますが、Linuxの内部処理で、espヘッダーが取り除かれた後のL2TPに対して再度firewall(iptables)のチェックがかかります。なので、WAN→LOCALに対してUDP 1701を許可しないと、L2TP接続が成功しません。

Debian9の設定

IPsecにはstrongSwan 5.5.1、L2TPにはxl2tpdを使いました。erx.example.comはER-Xのeth0アドレスとなります(内部DNSに当該名前の登録を行ってテストしました)。

IPsec関連(strongSwan)
# cat /etc/ipsec.conf

conn erx
        keyexchange=ikev1
        authby=secret
        left=%defaultroute
        right=erx.example.com
        rightid=%any
        ike=aes128-sha1-modp1024!
        esp=aes128-sha1!
        auto=add
        leftprotoport=17/1701
        rightprotoport=17/1701
        type=transport

# cat /etc/ipsec.secrets

: PSK "presharedkey"
L2TP関連(xl2tpd)
# cat /etc/xl2tpd/xl2tpd.conf

[global]
auth file = /etc/ppp/chap-secrets

[lac erx]
lns = erx.example.com
require chap = yes
pppoptfile = /etc/ppp/options.xl2tpd.erx

# cat /etc/ppp/chap-secrets

"ppp1" "erx" "test" *

# cat /etc/ppp/options.xl2tpd.erx

name ppp1
remotename erx
ipcp-accept-local
ipcp-accept-remote
lcp-echo-interval 30
lcp-echo-failure 4
require-chap
noccp
nobsdcomp
noauth
mtu 1350
mru 1350
nodefaultroute
usepeerdns
connect-delay 5000
persist
debug
接続コマンド
# IPsec接続を行う、ipsec statusで接続状況確認可能
ipsec up erx

# L2TP接続を行う
echo "c erx" > /var/run/xl2tpd/l2tp-control

# 192.168.100.0/24へのルート追加
ip route add 192.168.100.0/24 dev ppp0

# L2TP切断
echo "d erx" > /var/run/xl2tpd/l2tp-control

# IPsec切断
ipsec down erx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です