巨大なネットワークの弊害
「1つのブロードキャストドメイン内に設置する端末の数は100台まで」といったガイドラインをよく耳にします。100という数字が妥当かどうかはともかく、ブロードキャストドメインを適切な大きさで分割しなければいけないのは間違いないですね。
たとえば、インターネット全体が1つのブロードキャストドメインだったら、どうなりますか? 地球の裏側のWebサーバへ接続するのにも、いちいちARPを飛ばすことになり、ネットワークがARPパケットであふれてしまいます。また、PCなどの端末はブロードキャスト(宛先がオールFのMACフレーム)を受信すると、自分に関係のある情報かどうか判断するために多少のCPUパワーを消費してしまいます。
たとえるなら、メーリングリストに投稿されたメールのようなものです。メールを受け取った人は、自分に関係のある内容かどうか判断するためにメールを少しは読まなければいけません。だからメーリングリストに大量のメールが投稿されると、ちょっと迷惑ですね。
実際にあった話ですが、ある日とつぜん、特定の部署に設置された全てのPCの動作が非常に遅くなり、業務に支障をきたすほどになりました。誰かが「ウィルスに感染したんじゃないのか?」と言い出して大騒ぎになりましたが、ちゃんと調べてみると、LANスイッチの故障でブロードキャストストームが発生していたことが原因でした。大量のブロードキャストがPCのLANインターフェースに到達するたびに、自分に関係のある情報かどうかを判断するためにCPU処理が少しずつ発生し、結果としてPCの動作が緩慢になっていたのです。
このように、あまりにも大きなブロードキャストドメインを作ってしまうと、
- ARPなどのブロードキャストフレームが増えてネットワークの帯域を圧迫する。
- PCなど端末側のCPU負荷が上がる。
- LANのトラブルが広範囲に波及してしまう。
といった問題が起こるので、適当に区切ったほうがよいとされているのです。
もうひとつの観点
では、「1つのブロードキャストドメイン内に設置する端末は何台までがよいのか?」ですが、100台というガイドラインは10年以上前から言われていることですから、ネットワークの帯域やCPUの処理能力が飛躍的に向上していることを考えると、もっと増やしてもよさそうに思えます。
実際に1000台以上の端末を接続して問題なく動いている例もあり、ネットワークやCPUの負荷については、あまり気にする必要はなくなっています。むしろ、トラブル切り分けの容易さやセキュリティを考慮して決めたほうがよいでしょう。
私自身が以前よくデモンストレーションしていたのですが、「ARPポイズニング」と言われる手法(※)などを使って他人の通信に割り込むこと(Man in the middle attack)ができてしまいます。これによって、部長が送受信するメールの内容を「のぞき見」して機密情報を盗むなどの不正な行為が行われるかもしれません。
このような行為は同じブロードキャストドメインの中でだけ可能です。ですから、機密性の高い情報を格納するサーバを別のVLANにするなど、セキュリティの観点からドメインを分けることも必要なのです。
ドメイン分割をめぐる戦い
で、今日のコラムのタイトルになっている「サーバ屋 vs. ネットワーク屋のレイヤ2戦争」の話につながるのですが、昔からサーバ屋さんはブロードキャストドメインを分割するのを嫌がるのです。放っておくと、1つのドメインに数千台ものサーバを接続しようとします(というか、やってしまいます)。そこで、適度にドメインを分割してほしいネットワーク屋との間で「戦い」がおこるわけです。
なぜサーバ屋さんがドメイン分割を嫌うかというと、幾つかの理由があります。
- NICチーミング
- サーバに複数のNICを挿してインターフェースを冗長化する場合があります。このとき、冗長化したNICは同じブロードキャストドメインに属していなければいけない、という制限があります。
- クラスタリング
- 複数のサーバを、あたかも1台のサーバであるかのように運用する仕組み(通常はOSの機能として搭載されるか、ミドルウェアとして提供されるもの)があります。多くの場合、クラスタ内のサーバは同じブロードキャストドメインに属していなければいけない、という制限があります。
- 仮想化(ライブマイグレーション)
- VMWareやWindows Hyper-Vなどのサーバ仮想化技術を用いて、異なる物理サーバ間で仮想サーバを移動させることが可能です(VMWareではvMotionと呼ばれます)。この場合も、移動元と移動先のサーバが同じブロードキャストドメインに属していなければいけないという制限があります。
このように、ドメインを分割すると何かと都合の悪い場合があるわけです。
ドメインを分けるということは、異なるネットワークのIPアドレスを割り振るということですから、後から変更するのは非常に困難になります。また、数年先まで見越してITシステムの緻密な拡張計画を作る(そして実行する)ことも非常に難しいので、なるべくドメインを大きく取っておいたほうが、サーバ屋さんとしては安心(楽)なのです。
結局、サーバ屋もネットワーク屋も、あとあとで自分が面倒なことにならないよう、保険的な意味合いでドメインを大きく(あるいは小さく)したい、と主張することになるので、議論が平行線に陥りやすいのです。
こういうときは、お互いに冷静になってロジカルな議論をすることが重要ですね。
技術革新は対立を解決するか?
ところで最近、この状況に大きな変化が起こりつつあります。
たとえばCiscoでは、データセンター用のLANスイッチとして、従来のCatalystシリーズに代わってNexusシリーズの販売を始めていますが、Nexusには以下のような機能が搭載されています。
- vPC
- スパニングツリーを使わずにL2ネットワークの冗長化が可能になります。
- OTV
- 複数のデータセンター間にL2ネットワークを拡張します。
- L2-MP
- L2ネットワークにおいてOSPFのような経路選択を可能とします。
端的にいうと、
「大規模で信頼性が高く運用しやすいL2ネットワークを構築するための機能」
が続々と追加されているのです。
CiscoはDC3.0(Data Center 3.0)というビジョンを掲げており、「データセンター全体を仮想化する」ことを目標としており、その実現のために大規模なL2ネットワークを安心して運用できるような機能を追加しはじめているのです。このような潮流にのって、ネットワーク屋vs. サーバ屋の戦いも、ついに終結するときがくるかもしれません。
というよりも、「サーバ屋」とか「ネットワーク屋」のように役割分担する時代が終わりつつあり、今後はアジリティ(俊敏性)の高い「ITプラットフォーム」を作ることのできるエンジニアが求められている、と考えるべきかもしれません。
この話題については、また別の機会に触れたいと思います。ではでは。