はじめに

IT業界に限らない話だと思いますが、昨今様々なイベント・カンファレンスが開催され、私たちに学習の機会をふんだんに与えてくれるようになりました。そうしたイベント・カンファレンスでは WiFiによるインターネットアクセスが提供されていることもあり非常に便利ですよね。本記事では、そのようなイベント会場のWiFiネットワークがどのように作られているかの一例として、さくらクラウドを活用したネットワーク構築についてご紹介したいと思います。

あんた誰

申し遅れましたが、私はCONBU(COnference Network BUilders)という団体のコアメンバーを務めさせていただいております、外山(トヤマ)と申します。

簡単にCONBUの紹介をさせていただきますと、上記のようなイベント・カンファレンスにおいて来場者の方の利便性向上のためのWiFiネットワーク提供を行う有志の集まりであり、その取り組みの中で「ネットワーク構築・運用にチャレンジしたいエンジニアへの機会の提供」「イベント・カンファレンスの方々との交流」を通し、よりよい人的ネットワーク形成を目論んでいる団体であります。将来的には、我々のような有志がいなくとも、誰もがイベント会場でインターネット接続できるようになる世界を実現したく、とは言いつつも楽しく爽やかに今後、ノウハウの共有や技術検証を継続できたらいいなと思っております。

私自身はそんな中で、誰もがイベント会場でインターネット接続できるようになる世界の実現にちょっとだけ強い思いを抱いております、しがないいち技術職であります。

当記事の全体像

2017年に入り、CONBUは2つのイベントに対し会場ネットワーク提供を行いました。
3/9~3/10にかけて開催されました「DroidKaigi 2017」と、4/1 に開催されました「Elixir Conf Japan 2017」がそれにあたります。

以下が「DroidKaigi 2017」と「Elixir Conf Japan 2017」のネットワーク構成図です。画像をクリックで拡大します。

droidkaigi会場のレイアウトも、イベント会場の一例としてご紹介します。

イベント会場ネットワークはそれなりに色々な要素を持っています。
これを1つの記事で書きますと、大変冗長かつ複雑になってしまうため当記事は以下のように複数回構成にさせていただきたいと思います。最後までお付き合いいただけますと幸いです。

  • 第1回 – インターネット接続編
  • 第2回 – 会場クラウド間ネットワーク編
  • 第3回 – サーバ構築編
  • 第4回 – 検証上の課題、今後の展望編

第1回となるこのインターネット接続編では構成図の赤枠で囲んだ部分についてご紹介します。

イベント会場ネットワークに必要な機能

イベントへの来場者がWiFiを使ってインターネット接続するために必要な機能として、この記事では以下の2つを取り上げたいと思います。

  1. 1. グローバルIPアドレス + ルーティングの機能
  2. 2. 会場クライアントの通信のNAPT機能

かなり雑な表現となりますが、これらの機能を来場者の持つ端末とインターネットの間の通信経路に実装すれば、インターネット接続性の確保が可能です。厳密には他にも様々な機能が必要なのですが、第2回以降で随時触れてまいりますので、今回はこの2つの機能に言及したいと思います。

この要件に対して、さくらクラウドには「VPCルータ」と「ルータ + スイッチ」という選択肢があります。検証の結果、今回は「ルータ + スイッチ」機能を用いることにしました。以降、「ルータ + スイッチ」機能を使用しているさくらクラウド上のスイッチインスタンスを「グローバルスイッチ」と呼びます。

ネットワーク設計

グローバルスイッチでまかなえるのは、前述した要件のうち「グローバルIPアドレス + ルーティングの機能」の部分のみです。もう一つの要件であるNAPT機能について、今回はNAPT専用のインスタンスを自前で構築し、そのインスタンスをグローバルスイッチに接続して実現することにしました。これにより、NAPT用インスタンスが会場のクライアントからの通信を受け取り、グローバルスイッチと接続したインターフェースにNAPT込みで転送し、グローバルスイッチ経由でインターネットに抜けていくという通信設計になります。

実装

さて、お楽しみの実装です。以下の手順でネットワークを構築していきます。

  1. 1. グローバルスイッチインスタンスの作成
  2. 2. NAPTインスタンス作成とグローバルスイッチへの接続

1. グローバルスイッチインスタンスの作成

GUIでの手順を簡単に示していきたいと思います。

  • コントロールパネルのあらかじめ左ペイン「スイッチ」をクリック
  • 右上の「追加」をクリック
  • 設定項目の中の「ルータ」を「はい」にする
  • 追加で現れる設定項目からプリフィックスと帯域幅を選択する
    • どちらもデフォルトで問題ありません
  • 右下の「作成」でしばらく待つと作成完了

2. NAPTインスタンス作成とグローバルスイッチへの接続

NAPTインスタンスは通常のインスタンス作成同様、コントロールパネル左ペインの「サーバ」から作成します。本記事ではあまり詳細を述べませんが、今回のNAPTインスタンスはさくらクラウド上にpfSenseのiso imageをアップロードし、そのイメージからインスタンスを作成しNAPTとしました。

手順は以下の通りです。

  • (1) ISOイメージのアップロード
  • (2) pfSenseインスタンスの作成
    • コントロールパネル左ペインの「サーバ」をクリック
    • グローバルスイッチに接続するNICを設定しインスタンス作成
    • グローバルスイッチに接続するNICには、1. で作成したグローバルスイッチのプリフィックスからアドレスアサインする
    • インスタンス作成後、会場ネットワーク向けNICを追加する

通信テストは、NAPTインスタンス(=pfSenseインスタンス)の会場ネットワーク向けNICの接続しているスイッチインスタンス上に別のインスタンスを立ち上げ、そこからのインターネットアクセス* で確認することができます。
* curl http://www.google.co.jp等でよいと思います。

さくらクラウドでの実装上のメリット

1. 物理接続や区間ごとの疎通性をケアする稼働が少なくて済む

自前のデータセンターでイベント会場ネットワーク提供を行っていた際は、「インターネットと自前DC間」「会場と自前DC間」の2区間に気を配る必要がありました。これが、今回の構成ですと少なくとも前者はあまりケアする必要がないといえます。
特に、グローバルスイッチとNAPTインスタンス間は仮想化されているので、宣言的に設定してデプロイすればその通り動いてくれます。しかも、もし動かなかったら一旦全部壊してさっさと作り直すといったクラウド的なオペレーションが可能なので、疎通検証等のコストも抑えられたのではと感じました。

2. 帯域制御等が柔軟

グローバルスイッチの帯域は、規約によれば一定の制約はあるものの基本的にオンデマンドで増速可能です。これが運用における精神衛生上大きかったな、と個人的には感じています。実際の帯域変更はリアルタイムで有効になり、しかも変更反映操作時に通信断を監視していたのですがその発生もありませんでした。つまり、運用中のネットワークに対してでもオンデマンドに増速可能だったということになります。インフラ屋的に、これには感動。

運用結果

パブリッククラウド上のリソースでユーザのトラフィックを捌く、というのはCONBUにとっても前代未聞でしたが、来場者のみなさまの反応を見る限りはこの部位のパフォーマンスに問題はなかった模様でした。

# 上記のような運用状況は、CONBUのtwitterアカウントからご覧いただけます。
# よろしければぜひご覧ください!

個人的な見解ではありますが、今回さくらのクラウドを使ってのイベント会場ネットワーク構築・運用ができたことは以下の点で非常に有意義であったと考えています。

  • 少なくともインターネット接続区間においてはハードウェアの調達が不要
  • 構成の再利用が可能で、構築手法によっては非エンジニアでも構築に手が届く
  • 接続クライアント数が700〜800のイベント・カンファレンスであれば収容可能であることが判明(来場者数で言うと400人超程度)

残りの予定記事も、様々な角度からイベント会場ネットワーク構築の裏側を解説したいと思います。読み手のみなさまから「こんなことも知りたい!」「ここはどうなっとんじゃ?」などとコメント、ご意見ありましたら、もしよろしければ@conbu_netまでお寄せいただけますと大変嬉しいです。