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よりもかなり安く買えるIX2105やRTX810よりはいい数値ですが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