メニュー 閉じる

YAMAHA RTXシリーズでipip over ipsecの通信速度が遅い

YAMAHA RTX1200を利用して、IPsecでサイト間VPNを張っています。
さらにその上にIPIP(ip6ip)トンネル張っていたのですが、このトンネルを通過するIPv6の通信速度が20Mbps程度で頭打ちしていました。

ちなみになぜIPsecの上にIPIPトンネルを張っているかというと、サイト間VPNの対向ルータがVyOSだからです。
VyOSはIPv6 over IPv4 VPNが利用できないのです。
トンネルであればencapsulation sitをすればip6ipトンネルも作れるということで、その方法を使っていました。

現状調査

ipipトンネルを経由する通信が遅いのですが、調査すると他にも以下の事が分かりました。

  • 足回り・ISPの通信速度は遅くない(90Mbps以上)
  • IPsec上を通る通信は遅くない(90Mbps以上)
    • このときRTX1200のCPU負荷は余裕がある(90%未満)
  • IPsec上のIPIPトンネルを通る通信速度が遅い(20Mbps程度)
    • このときRTX1200のCPU負荷はほぼ100%

これを見ると明らかなのですが、IPIPトンネルの通信でCPU負荷が高いことが原因のようです。
とはいえIPIPトンネル自体は暗号化処理もなく、それでいて約2割程度の速度まで落ち込むというのは謎でした。

CPU負荷が高い理由を探る

いろいろ調べてみると、どうやらYAMAHAルータにはファストパス(fastpath)という機構がある模様。

このファストパスは簡単に言うと、パケットの転送を高速に行う技術です。
ファストパスと対になる言葉としてノーマルパスがあり、ファストパスで処理されないパケットはノーマルパスで処理されることになります。
ノーマルパスでの処理は、仕組み上性能低下の原因となります。

そこでIPIPトンネルを通るパケットが、ファストパスで処理されているか確認してみます。

今回は偶然にも、

  • IPIPトンネルの上を通るのはIPv6パケット
  • 全てのIPv6パケットはこのIPIPトンネルを通過する

という条件なので、IPv6パケットがファストパスで処理されているかを確認すれば大丈夫でした。

> show status lan1
LAN1
Description:
IP Address:                     192.168.xx.xx/24
Ethernet Address:               xx:xx:xx:xx:xx:xx
Operation mode setting:         Type (Link status)
               PORT1:           Auto Negotiation (1000BASE-T Full Duplex)
..(snip)..
Maximum Transmission Unit(MTU): 1500 octets
Promiscuous mode:               ON
Transmitted:                    12650133 packets (14611672356 octets)
  IPv4(all/fastpath):           5480431 packets / 4279251 packet
  IPv6(all/fastpath):           7163760 packets / 0 packet
Received:                       7189516 packets (967400152 octets)
  IPv4:                         3112627 packets
  IPv6:                         3706021 packets
Non support packet received:    364703

13行目、IPv6パケットのfastpathが0パケットになっていることが分かります。
これではIPv6パケットがファストパスで処理されていません。
通信速度が遅く、CPU負荷が高いのはこれが原因だろうと推測されます!

ファストパスを利用してほしい

そもそもRTXシリーズでファストパスの利用できる条件とは何でしょうか。
それについては、上で紹介したファストパスの「ファストパスで処理されるパケットの条件」を確認すると分かります。

RTX1200は比較的新しい機種なので、以下のパターンでファストパスが利用できるらしいのですが…

  • IPv4、IPv6のパケット
  • IPsec VPN(IPv4 over IPv4, IPv6 over IPv6, IPv4 over IPv6, IPv6 over IPv4)
    • 暗号アルゴリズム(DES, 3DES AES, AES256)
    • 認証アルゴリズム(MD5, SHA, SHA256)
  • IPIPトンネル(IPv4 over IPv4, IPv6 over IPv6, IPv4 over IPv6, IPv6 over IPv4)

これを見るとファストパスで処理してくれても良さそうなのですが、どうやらIPIP over IPsec VPNではファストパスとして処理されないようです…

解決策

IPIP over IPsec VPNをやめて、直接IPIPトンネルを張ることにしました。
結局のところ、機密性の高い通信はIPv6では通過せず、IPsecによる暗号化は必須の条件ではないと判断したためです。

その結果、問題だった通信速度やCPU負荷の問題が解消しました。
show status lan1を確認すると、ばっちりファストパスとして処理されており、想定通りノーマルパスで処理されていたのが原因だったようです。

結論

VPNの上にトンネルを張ると性能低下に繋がる可能性があるので、利用する場合は十分に検証を行いましょう。

コメントを残す