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

ER-Xよりも大幅にパワーアップしたER-6Pですが、ER-Xのときに揮わなかったL2TP/IPsecのスループットがどの程度改善したのか気になります。ということで、ER-6PのL2TP/IPsecのスループットを測定してみました。直結での計測なので実際の利用時のスピードを測るものではなく、ルーターの性能評価を行うものです。

計測環境

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

計測結果

トンネルのMTUを1350としました。先ずはER-6PのCPUの性能を測るべく、先ずはipsecのoffloadなし(ipsec=disable)で計測します。
(注) 将来のファームウェアで変わるかもしれませんが、v1.10.9ではoffloadの設定でipsecの設定がない場合にはER-Xの場合disable、ER-6Pの場合enableがデフォルト値になります。機種によって扱いを変えるとはさすがfirmwareの作りこみが甘いUbiquitiというところでしょうか・・・。ちなみに、IPv4のforwaringも指定しないと、enableがデフォルト値です。

ipsec=disable receiver sender
MSS Mbps CPU 消費電力 Mbps CPU 消費電力
1310(指定なし) 82.7 40% 8.0W 91.6 37% 7.9W
1200 79.3 43% 8.0W 87.0 40% 8.0W
800 61.6 40% 8.0W 67.9 41% 8.0W
400 37.0 42% 8.0W 40.8 45% 8.1W

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

かなりがっかりの結果です。ER-Xの結果よりは結構改善していますが。まあ、この結果は参考値であり、真打はipsecのoffloadなので、これをenableにして計測します。

ubnt@ubnt:~$ show ubnt offload 

IP offload module   : loaded
IPv4
  forwarding: enabled
  vlan      : disabled
  pppoe     : disabled
  gre       : disabled
IPv6
  forwarding: disabled
  vlan      : disabled
  pppoe     : disabled

IPSec offload module: loaded

Traffic Analysis    :
  export    : disabled
  dpi       : disabled
    version       : 1.480
ipsec=enable receiver sender
MSS Mbps CPU 消費電力 Mbps CPU 消費電力
1310(指定なし) 211 46% 8.1W 220 34% 7.9W
1200 195 49% 8.1W 204 48% 8.1W
800 136 45% 7.9W 98.6 35% 8.0W
400 71.8 48% 8.1W 73.1 33% 8.0W

中古ならER-6Pよりもかなり安く買えるIX2105RTX810よりはいい数値ですがUbiquitiのフラグシップモデルとしては期待外れです。

ER-6PのConfig

テストに使ったER-6Pの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 system offload ipsec enable
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シリーズと違って、EdgeRouterでは必要となります。eth0から入ってくるL2TPはespに包まれて届きますので、espを許可するだけで足りる気もしますが、Linuxの内部処理で、espヘッダーが取り除かれた後のl2tpに対して再度firewall(iptables)のチェックがかかります。なので、WAN→LOCALに対してUDP 1701を許可しないと、L2TP接続が成功しません。

Debian9の設定

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

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

conn er6p
        keyexchange=ikev1
        authby=secret
        left=%defaultroute
        right=er6p.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 er6p]
lns = er6p.example.com
require chap = yes
pppoptfile = /etc/ppp/options.xl2tpd.er6p

# cat /etc/ppp/chap-secrets

"ppp1" "er6p" "test" *

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

name ppp1
remotename er6p
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 er6p

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

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

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

# IPsec切断
ipsec down er6p

コメントを残す

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