2010年4月15日

IPv6

Yahoo! JAPAN内でのIPv6アドレスの使い方

  • このエントリーをはてなブックマークに追加
IPv6 logo

こんにちは。IPv6 プロジェクトのスタッフです。

ヤフーのIPv6への取り組みを3回に分けて紹介しております。前回はヤフーのIPv6への取り組みをとりあげさせていただきました。

最近IPv6に関するいろいろなセミナーでよく話題になることなのですが ネットワーク設計・運用者の方々はIPv6アドレスの設計方法に関して 頭を悩ませているのではないでしょうか。

そこで、2回目の今回はYahoo! JAPANのIPv6アドレスの設計ノウハウについて 下記3項目にわけて紹介したいと思います。

1. IPv6アクセスリストについて
一見関係なさそうですが、ネットワーク機器によっては問題になる場合もあります。 こちらは下位64bitsを決定するときの参考にしました。
2. Yahoo! JAPAN内のIPv4アドレス管理方法
続いて、Yahoo! JAPAN内のIPv4アドレス管理方法を簡単に説明します。 これは割り振られたPrefixの使い方を決めるときの参考にしました。
3. Yahoo! JAPANでのIPv6アドレスの使い方の例
最後にYahoo! JAPANでのIPv6アドレスの使い方の一例を紹介します。

1. IPv6アクセスリストについて

ネットワーク機器にはパフォーマンス向上のためのさまざまな仕組みがあります。その一つに、CPU負荷の高いSoftWare処理でなく、高速なHardWare処理の仕組みがあります。特定の機器に限定したお話ですが、IPv6でアクセスリストを扱う場合に知らないとハマるかもしれません。

IPv6でインターフェースID(下位64bits)を決定するための方法にEUI-64があります。EUI-64はMACアドレスの真ん中に以下のように0xFFと0xFEの16bitsを埋め込みます。

EUI-64の詳細はこちらをご覧ください。
http://standards.ieee.org/regauth/oui/tutorials/EUI64.html

古いネットワーク機器では搭載されているTCAM(Ternary Content Addressable Memory)は潤沢にはありません。そのためIPv4では32bitsだったアドレスがIPv6で128bitsに増えると、ポート番号(16bits)の処理を含めたマッチング演算を行うための十分なTCAMが確保できないということになってしまうようです。
TCAMは高速HardWare処理を行うための専用メモリ

そのため、アクセスリスト処理時に発生するアドレスとポート番号の比較演算を行う場合にSoftWare処理が必要になってきてしまいます。その結果、比較的少ないトラフィック量でもCPUは高負荷状態になってしまいます。このパフォーマンスの問題を回避するため、EUI-64では固定値16bitsにポート番号を埋めることを考えたようです。

TCAMの詳しい使われ方は割愛しますが、この16bitsが節約されることで、SoftWare処理に頼らずにアクセスリストの比較演算をHardWare処理可能になったようです。 これは機器の設定でON/OFF可能で、キーワードとしてはMLS(Multi Layer Switching)などがこれに該当します。

この機能により旧型ネットワーク機器のパフォーマンス問題は回避できました。でも、下位64bitsの真ん中16bitsに何を書いてもACLは効きません。アクセスリストは設定されているはずなのに、なぜか知らないアドレスからパケット受信のログがある。なんてことが起こるかもしれません。

この実装は一部の機器に限られていますが、少ないリソースで新技術に追従しようとする
開発者のガッツが垣間見える面白い実装かと思います。
面白いですが知らないとハマりそうなアクセスリストねたでした。

2. Yahoo! JAPAN内のIPv4アドレス管理方法

続きまして、IPv6アドレスの使い方を説明する前の予備知識として、Yahoo! JAPAN内での一般的なIPv4アドレスの使い方を簡単に説明します。
#そんなに特別なことでないではないですがー。

社内では、IPv4アドレスレンジはVLAN(バーチャルLAN)と対応付けられています。
例えば、VLAN ID 1111 は 192.168.0.0/24 に対応。という具合です。

また、このVLAN IDは使用前に必ず用途を決めてから使用します。
例えば、VLAN ID 1111 はIPv6ネットワーク構築用に使用して場所は東京。という具合です。
つまりVLAN IDは厳密に管理されており、対応するIPv4アドレスレンジもわかり、 何の用途に使用されているかがすぐにわかるようになっています。

3. Yahoo! JAPANでのIPv6アドレスの使い方

これらを踏まえて、私たちはIPv6アドレスの中に情報を埋めていくことを考えました。
Yahoo! JAPANでのIPv6アドレスの使用の前提はこんな感じです。

  • サーバーが使用するIPv6アドレスは固定する。
  • IPv6アドレスの中にVLAN IDを埋め込む。
  • サーバーには基本的にIPv4アドレスも設定されているためIPv4アドレスを埋め込む。
  • EUI-64の問題も回避したい。

ということで、VLAN IDが 1111 でサーバーのIPが192.168.20.1/24 の場合は以下になります。

最後に

上記のほかにもいくつか工夫している部分もありますが、大半はこれら考え方に基づいてIPv6のアドレス設計しています。
これらのノウハウがネットワーク設計・運用者の皆さんの参考になれば幸いです。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加