SEIL/x86 で L2TPv3 over IPSec over NGN IPv6(フレッツV6オプション)なL2VPNを張ってみた

NTTのフレッツ光ネクストでは、フレッツ・V6オプション*1を契約すると、NGN網から払い出されるIPv6アドレス(ひかり電話の契約が無い場合、/64のプレフィックス)を使用してNGN網内で他拠点とダイレクトに通信することが可能となる。(プロバイダ契約は不要)

このサービスを利用すると、NGN網内で大変安く高速なVPNを構築することができる。
ただしNGN網から払い出されるIPv6アドレスのプレフィックスは、NTT側の都合により変更される場合があり、恒久的に固定されるアドレスではないため、業務利用にあたっては拠点のIPv6アドレスが変更されVPN接続が切断される事態に備える必要があろう。(実際にどれぐらいの頻度でNGN網のIPv6アドレスが変更されるのかは定かで無い。)

NGN網のIPv6アドレスについては、IIJIIJ Technical Week 2011で公開している資料*2が大変わかりやすい。

現在NGN網のIPv6アドレスを利用したVPNソリューションとして、IIJが同社の「IIJ SMF sxサービス」を利用したソリューションを*3大塚商会が「FMS/YAMAHA IPv6VPNサービス」*4をそれぞれ提供している。これは、IIJではIIJ SMF sxサービスからルータ(SEIL)のインターフェースのアドレス監視と自動的なconfig書き換えを、大塚商会ではIPv6上のVPN切断時のIPv4VPNへのフォールバックおよび24時間365日の有人監視とconfig変更を提供することで、先述のNGN IPv6の変更に備えることができる。(但し当然それぞれサービスを受ける費用が別途発生する。)

さて、NGN網のIPv6を利用したパフォーマンスは一体どの程度のものなのか大変気になるので、IIJが公開しているSEIL/x86*5を使用してルータを構築して試してみた。SEIl/x86は起動キー(無償で入手可能)と機能キー(有償、configの保存時に必要。このキーが無いと再起動時にconfigは初期化される)があり、機能キーも1台800円で購入できる。

下記の例では、メイン拠点のIPv6アドレスが2001:0DB8:AAAA::1、サテライト拠点のIPv6アドレスが2001:0DB8:FFFF::1の場合の例である。
lan0をLAN側に、lan1をWAN(NGN網)側に接続している。
lan0に設定したIPv4アドレスは実際にトンネルを通すIPv4アドレスとは関係ない。
(関係する部分のみ抜粋)
(一部typoを修正。あと、設定投入時にl2tp add 〜を先にやっとかないと interface l2tp0 l2tpが通らないので順番を変更 2013/5/2)

hostname "main-vpngate"

interface lan0 add 192.168.11.1/24

interface lan1 add router-advertisement
route6 add default router-advertisement interface lan1

dhcp disable
rtadvd disable

l2tp hostname main-vpngate
l2tp router-id 192.168.11.1
l2tp add SATELLITE hostname satellite-vpngate router-id 192.168.12.1 cookie off retry 10 hello-interval 60 password hoge

interface l2tp0 tunnel 2001:0DB8:AAAA::1 2001:0DB8:FFFF::1
interface l2tp0 l2tp SATELLITE remote-end-id L2TP-VPN

ike nat-keepalive-interval 30  dpd-interval 7 dpd-maxfail 5
ike auto-initiation enable
ike preshared-key add "2001:0DB8:FFFF::1" "vpn"
ike proposal add IKE_PROPOSAL1 encryption aes256 hash sha1 authentication preshared-key dh-group modp1024
ike peer add vpnserver address 2001:0DB8:FFFF::1 exchange-mode main proposals IKE_PROPOSAL1 my-identifier address nat-traversal disable dpd enable
ipsec security-association proposal add IPSEC_SA_PROP1 pfs-group modp1024 authentication-algorithm hmac-sha1 encryption-algorithm aes256
ipsec security-association add IPSEC_SA1 transport 2001:0DB8:AAAA::1 2001:0DB8:FFFF::1 ike IPSEC_SA_PROP1 esp enable
ipsec security-policy add IPSEC_SECPOL1 security-association IPSEC_SA1 protocol 115 src 2001:0DB8:AAAA::1/128 dst 2001:0DB8:FFFF::1/128

bridge group add BRIDGE1 stp off aging-time 300
bridge interface lan0 group BRIDGE1 stp off
bridge interface l2tp0 group BRIDGE1 stp off

サテライト側は下記の通り

hostname "satellite-vpngate"

interface lan0 add 192.168.12.1/24

interface lan1 add router-advertisement
route6 add default router-advertisement interface lan1

dhcp disable
rtadvd disable

l2tp hostname satellite-vpngate
l2tp router-id 192.168.12.1
l2tp add MAIN hostname main-vpngate router-id 192.168.11.1 cookie off retry 10 hello-interval 60 password hoge

interface l2tp0 tunnel 2001:0DB8:FFFF::1 2001:0DB8:AAAA::1
interface l2tp0 l2tp MAIN remote-end-id L2TP-VPN

ike nat-keepalive-interval 30 dpd-interval 7 dpd-maxfail 5
ike auto-initiation enable
ike preshared-key add "2001:0DB8:AAAA::1" "vpn"
ike proposal add IKE_PROPOSAL1 encryption aes256 hash sha1 authentication preshared-key dh-group modp1024
ike peer add vpnserver address 2001:0DB8:AAAA::1 exchange-mode main proposals IKE_PROPOSAL1 my-identifier address nat-traversal disable dpd enable
ipsec security-association proposal add IPSEC_SA_PROP1 pfs-group modp1024 authentication-algorithm hmac-sha1 encryption-algorithm aes256
ipsec security-association add IPSEC_SA1 transport 2001:0DB8:FFFF::1 2001:0DB8:AAAA::1 ike IPSEC_SA_PROP1 esp enable
ipsec security-policy add IPSEC_SECPOL1 security-association IPSEC_SA1 protocol 115 src 2001:0DB8:FFFF::1/128 dst 2001:0DB8:AAAA::1/128

bridge group add BRIDGE1 stp off aging-time 300
bridge interface lan0 group BRIDGE1 stp off
bridge interface l2tp0 group BRIDGE1 stp off

だいたい20kmぐらい離れた拠点間(NTTの収容局は異なる)でpingのRTTが安定して5msを切るVPNが構築できるのがわかった。

また、フレッツ光ネクストのオプションサービスでフレッツVPNワイド*6がある。
このオプションと、フジクラのFlebo ネクス*7あるいはOEMのNTT BizBox FV-1000*8を使用すると、オカンでも構築可能なぐらいの簡単さでL2VPNが構築できる。
これを利用したVPNで拠点間pingのRTTがおおむね7ms弱であった。
あまり遅延面で遜色は無いが、フレッツVPNワイドはフレッツ光ネクスト回線の種別によってはそこそこの費用が発生する。

さらに、Bフレッツの時代からフレッツVPNワイドと同様のサービスとして、フレッツグループアクセス*9というサービスが提供されている。
これは既に新規申込みは終了しており、また平成26年3月31日をもってサービスの提供を終了する旨がアナウンスされている。
このサービスを利用した検証可能な環境はL3VPNしか手元に無いが、pingのRTTは同一のNTT局に収容されている場合でも概ね50ms弱であった。

広く使われているインターネットVPNは、経路は利用するプロバイダや地域によって異なってくるため一概には言えないが、手元の環境(東京から遥か彼方・拠点毎にプロバイダは異なる)だと概ね50msから100msという状況であった。

NGN網のIPv6を利用したL2VPNは、非常に遅延が少ないことがよくわかった。
願わくばNTTが提供している「ネーム」機能(NTT側の都合でIPv6プレフィックスが変わっても、ネーム登録したIPv6アドレスは自動で書き換わる。ダイナミックDNSのようなもの)を利用してVPNを張れると良いのだが…。