ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

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のアドレス設計しています。
これらのノウハウがネットワーク設計・運用者の皆さんの参考になれば幸いです。

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました

このページの先頭へ