プログラマでありたい

おっさんになっても、プログラマでありつづけたい

ELBのIPv6対応について考える。dualstackを使うべきか?

 2011年からawsのELBは、IPv6に対応しています。それ以来、ELBを作成すると3つのCNAMEを用意してくれます。IPv4用、IPv6用、IPv4とIPv6を両方共つかえるdualstackの3つです。my-load-balancerという名前で作った場合、次のような形でDNS Nameが用意されます。

my-load-balancer-XXXXXXXXXX.ap-northeast-1.elb.amazonaws.com (A Record)
ipv6.test-XXXXXXXXXX.ap-northeast-1.elb.amazonaws.com (AAAA Record)
dualstack.test-XXXXXXXXXX.ap-northeast-1.elb.amazonaws.com (A or AAAA Record)


 今まで何も考えずに一番上のIPv4用のものを使っていました。今後構築する場合は、どれを選ぶべきかメリット・デメリットを考えてみました。まずIPv6専用のCNameですが、これは論外です。2012年現在の世の中のIPv6の普及率を考えると、IPv6専用で使うことは無理でしょう。そうなると、比較の対象はIPv4かDualStackのどちらを選ぶかという話です。


 単純に考えるとIPv4とIPv6のどちらも使えるDualStackの方が良さそうに思えます。Amazonの「Elastic Load Balancing 開発者ガイド API Version 2011-11-15」にも次のような記述がありました。

ほとんどのお客様は、ロードバランサーで IPv6 を有効化するため、「dualstack」プレフィックス付きの DNS 名の使用を希望するでしょう。「dualstack」プレフィックス付きの DNS 名は IPv6 と IPv4 レコードの両方を返すため、クライアントはそれぞれの接続ニーズに応じて、IPv4 と IPv6 のどちらでもロードバランサーにアクセスできます。「ipv6」プレフィックス付きのDNS名はIPv6アドレスのみを返すので、このようなDNS名を使用した場合、IPv4接続のみを使用するクライアントはロードバランサーにアクセスできません。


 しかし、デュアルスタックはメリットだけではありません。JPNICの「インターネット10分講座:IPv4/IPv6共存技術」が解りやすいので、そのまま紹介します。

長所
アプリケーションによっては、IPv4のみでしか動作しないものもあります。そのような場合に、デュアルスタックでは旧環境を残しつつIPv6に対応させることが可能なため、IPv6への移行がしやすくなります。

短所
デュアルスタック実装時には、単一の機器でIPv4とIPv6という二つのプロトコルが同時に動作することになりますので、機器の負荷も相応に増大します。具体的には、IPパケットの行き先を決定する経路制御処理が、IPv4とIPv6それぞれで行われることになります。そのことによりCPUやメモリにも負荷がかかります。

 また、NTTのフレッツ光のIPv6問題とか影響しないのかなぁという懸念もあります。


 上記のことを考えると、デュアルスタックの設定をした場合、接続元の影響により若干接続が遅くなるといった可能性があります。IPv6に対応してないから繋がらねーぞと文句を言われる可能性が高いか、IPv6に対応したから遅くなったぞと文句を言われる可能性が高いか。私には今のところ、正直判断がつきません。将来的なことを考えると、今のうちからデュアルスタックにしとくべきかなぁと僅かに傾いている程度です。皆さん、どうしています???