許容出来る方のみのアクセスをお願いします。写真への直リンクを張るのはご遠慮下さい。内容に関しては、一切保証致しません。今回のお題は、さくらのクラウド。ネットワークの仮想化の設計および実装についての内容がテーマでした。24時間以内のレポートはさすがに無理だぁ〜。ことで、2週明けにがっつりと書きましたよ〜。自己紹介を真面目にします。震災の少し前に、アマゾンが東京リージョンが開設すると言うことで、社長と石川さんがやってきて、「今からお前がクラウドの開発をやれ」と言うことでやり始まった。今で6ヶ月目ぐらいネットワークの設計と開発をやっている。PR記事を書いていただきました。さくらのクラウドでやるのは、IaaS、将来的にはSaaSもやるぞと社長は言っているが、今のところIaaSのみを考えている。IaaSに求められることとして、CPUのコア数、メモリ、HDD、ネットワーク、割と自由に追加して、自分の作ったローカルのスイッチに接続できるといった、自由に構成が出来るのが特徴。仮想アプライアンス、データセンターにルータや、ファイアーウォール、ロードバランサーを持ち込んで、線を繋いでやっていた作業を全てクラウド上で出来るようにしましょうというのが、求められているのかなぁと思っている。いえば、1年ぐらい前に、社長がクラウドを作っていたが、それは、私的にはクラウドじゃない。VPSの延長じゃないかと思っていた。いうと、ネットワークの構成が出来ず、仮想マシンの構成の変更しか出来ない。ネットワークの構成変更が出来ず、私がプロジェクトに呼ばれたからには、色々と出来るようにしたい。弊社では、ハウジングや専用サーバを借りて、大規模サイトを運用されるお客様が多い。1年ぐらい前から、VPSのサービスも提供させ頂いているが、色々なサービスは面倒くさいので、色々なサービスをクラウド上に乗せれるように、作りたい。IaaS上での一般的なシステム構成。ルータの下にファイアーウォール、ロードバランサーなどがあり、Webサーバを構築、バックエンドにDBサーバがある。バックエンドを管理する為のVPN回線あるような構成が一般的ではないだろうか。上記の構成を仮想化してみると、次のようになる。IaaSネットワークの物理構成については、外部向けの回線をルータで受けてコアスイッチ2台で受けて、各ラックに設置しているエッジスイッチに分配していく。エッジスイッチは、サーバが増えれば増えるほど増設していく。さくらでは、VLANを使って仮想マシン間を構成しており、仮想スイッチからルータまで、すべてVLANで構成されている。VLANを使用した場合、VLAN-IDの制限があって、事前に4,000VLAN通しておく。仮想サーバが立ち上がるたびに、仮想インターフェースをVLANに属させ、仮想ネットワークを組んでいる。装置間の接続については、ユニークなVLANを割り当てていく。お客さんには見せていないので、気にする必要はないし、クラウドコントローラで自動で割り当てがされるようになっており、他のお客さんとかぶらないようになっている。VM上のネットワークとして、仮想NICを仮想SWを経由して、VLANに接続される。1ゾーンあたりの規模として、VLANは4,096個しか使えないので、VLANの単位でゾーンを分けている。ホストサーバ500〜1000台ぐらい詰め込んで、VMは8000VMぐらいを想定し、1つのゾーンが構成される。VMに仮想NICを平均2個搭載すると、MACアドレスは16,000程度必要となり、上記の用件を満たしたL2網を作らなければならない。検討が必要な要素として、コアスイッチ、エッジスイッチ、仮想スイッチ、ルータなどをがある。コアスイッチ、エッジスイッチの用件として、STPがよく使われるが、トラブルが多いので、さくらでは、STPは使わないということが目標であり、今ではスタック技術を積極的に使用し、冗長化している。エッジスイッチとの接続についてはLAG(リンクアグリゲーション)を使用し、スタックされた別々の装置に接続出来る構成になっている。その上に、すべてのVLANを通すような設定をしている。16,000以上MACアドレスの学習出来るスイッチを選定している。エッジスイッチについても、L2網のため、コアスイッチとあまり変わらない。VLANおよびMACアドレス数が重要である。スイッチの設定ミス等でループが起こらないようにその仮想マシンだけ切り離せるような構成にしている。ベンダーのラボで検証したら、いろいろな問題が見つかったロジカルポート数の不足。カタログを見ると、4,000VLAN作れるが、すべてのポート、たとえば40ポートあるL2スイッチに、タグですべてのVLANを通す設定すると、設定できない箱が多い。ロジカルポートというのを内部で作るが、ポート数*VLAN数で4000*40で、16万ポートぐらいで、ほとんどの箱は12,000ぐらいか24,000ぐらいしかない。なると、3ポートとか6ポートしか割り当てが出来ない。選定の段階で問題がわかったので、選考から外すし、全ポートに全VLANを出すような箱を選定している。次に、よくあるのがショートパケットでワイヤーレートが出ない。Etherフレームの最小フレーム地は64byteで、一番パケット数が多い。10Gでワイヤーレートを出すには、秒間14.88Mppsぐらいなので、結構装置にとっては、厳しい用件になってくる。実際に満たす箱が無く、あきらめようとした。64byteと決まっているかというと、CSMA/CD方式のコリジョン検出で、100m信号が伝わるためには、64byte出さないとコリジョンが検出出来ないため、決まった値である。128byteであれば、性能は半分でよかったのに。考えた結果、「ワイヤーレートでなくてもいいんじゃね?」ということで、現実で問題のない範囲であればOKとしている。2%しか落とさないスイッチとか。ブロケードさん?VLANは、歯抜けで使えないVLANが存在する。BrocadeはFCoEで予約されてある1002番のVLANが使えない。interfaceに割り当てられた内部VLANなどがあり、上記のVLANは使用できないように、クラウドコントローラで割り当てないように設定をしている。3583までしか扱えない箱があったり。IDs実際に使えるVLAN数として、3500ぐらいが頭なのかなと考えている。configが長くなる箱。非常に見にくく、メンテナンス性が悪い。LACPがダウンする問題。冗長構成を取っているが、片方のコアスイッチを再起動すると、配下のエッジスイッチのLACPが一瞬ダウンして、通信が途絶えるということで、エッジスイッチのバグだったが、修正してもらって、現在は問題ない。LAGで組むのが一番良いが、KeepAliveしないので、リンクアップしたまま通信が止まるということがあり、通信ダウンがあるので、悩みどころ。今のところLACPを有効にして運用している。MACアドレスのハッシュコリジョン問題。バグ^G^G仕様を踏むまで気づかなかった。多くのL2スイッチのMACアドレスの学習にはハッシュテーブルを使用しており、ハッシュのコリジョンが発生する。Unicastとなり、Floodingする。さくらの場合は、Flooding系のフレームは帯域制限をかけるので、通信が遅くなるなどの悪影響が発生する可能性がある。コントローラですべて管理しているので、その問題は発生しないようにしている。VLANでMACエントリを表皮する箱があり、某B社のスイッチでは、1VLAN設定すると内部で3エントリ消費してしまう。作ると、12,000個のMACアドレスを消費してしまうので、残り20,000個しか使用出来ない。先日OUI取得しました。今では、9C-A3-BAでお客さんに割り当てている。何で取得したかというと、Interクラウドで、他のクラウドでL2で接続しても、フレームをそのままとばしましょうという話があったり、事務所から、直接クラウドのサーバにL2-VPNで接続して直接接続してフレームをとばそうとすると、52-54-00などのKVMで使用しているMACアドレスを使用すると、お客さんが使っていると、ぶっちゃう可能性があるので、世界中でユニークなアドレスを取った方が良いよねということで、取得した。他のクラウドの相互接続性や物理ネットワークとの相互接続性などは問題無いようにしている。東京にいたもので、つい自分の名刺をみて、登録してしまった。1750ドル、クレジットカードで決済出来る。クレジットカードでOUIがとれる時代です。vSwitchを使用している。対策を行わないといけない。そのほか、仮想ポートで帯域制限が必要であり、帯域をお客さんに販売するので、契約帯域で絞るということをしている。vSwitchに接続する。vSwitchに接続するときに、仮想ポートにvlanを割り当ている。仮想的なネットワークに接続することが出来る。自社開発で担当者1人で作ってる。vSwitchはよくできていて、ポートをつなぐと、勝手に4000VLAN通る。VLANをダイナミックに学習していて、来たフレームのVLANを自動で作り、あらかじめVLANを作っておくという訳ではない。MAC通しても問題なく動くことを確認した。vSwitchのMAC学習数に問題があり、デフォルトでは2,048となっていた為、ソースコードを書き換えた、32,768に書き換えて運用している。vSwitchはOpenFlowベースのアーキテクチャになっている。arpなどエントリを作ることでフィルタをする形になる。