JANOG49「Clos Network Topologyを運用するために、どのような取り組みをしていますか」レポート
目次
はじめに
2022年1月26日(水)〜28日(金)の3日間、鹿児島市の川商ホールにてJANOG49ミーティングが開催されました。
今回のJANOGでは、当社ならびにグループ会社のエンジニアによる発表が何件かありましたが、それらの中から、1月27日(木)に行われた発表「Clos Network Topologyを運用するために、どのような取り組みをしていますか」の模様をレポートします。
発表者の紹介
このセッションの発表者は、当社クラウド事業本部の梅原潤さんです。梅原さんは「さくらの専用サーバPHY」のインフラエンジニアで、主に下記の業務を担当しています。
- Nomad, Dockerによるアプリケーション実行基盤
- Victoria Metrics, Prometheusによるメトリクス管理・監視基盤
- Grafana Lokiによるログ監視・管理基盤
Clos Network Topologyとは
Clos Network Topologyは、梅原さんの説明によると「BGPを利用した、スケールアウト可能なデータセンターネットワーク」です。大規模なデータセンターネットワークを構築するための新しいネットワークアーキテクチャとして、巨大コンテンツ事業者などでの採用事例が増えているようです。
今回のセッションではClos Network Topologyについてのチュートリアル的な解説はなかったのですが、概要を知りたい方への情報源になりそうなものをいくつかご紹介しておきます。
- RFC 7938 - Use of BGP for Routing in Large-Scale Data Centers
大規模データセンターにおけるBGPルーティングについてのRFCです。Clos Network Topologyについては「3.2. Clos Network Topology」で解説されています。 - RFC7938 - 大規模データセンター内でのルーティングのためのBGPの利用方法
ゆやりんさんによる上記RFCの和訳です。 - 最新ネットワークアーキテクチャー CLOSネットワークについて解説します。
インターネットのアーキテクチャなどを解説するYouTubeチャンネル「show int」による、CLOSネットワークを解説した動画です。 - Necoのネットワーク・アーキテクチャと設計編、Necoのネットワーク・実装編
梅原さんがClos Network Topologyを知るきっかけとなった、cybozu.comのネットワーク設計に関する2本の記事です。
発表に至る経緯
梅原さんは以前からClos Network Topologyに興味を持っていて、情報を調べたり、本を読んで学習目的でClosネットワークの実装もしていました。学習環境として実装したネットワークについては、本人のブログに解説記事があります。ここでは、さくらのクラウドにサーバを1台作成し、そのサーバの中でClos Network Topologyを実装しています。
梅原さんがClos Network Topologyに注目した点は、「サービスを構成する要素の一部を止めてもサービスが止まらないインフラ」を実現できる技術であるところです。過去の仕事でサーバを止められない現場を経験し、それを何年も維持していくことに疲弊したくないという思いから、サービスが止まらないインフラを作っていきたいと考えていました。
そんな中でさくらインターネットに転職し、さくらの専用サーバPHYの運用に携わる中で、さくらの専用サーバPHYのネットワークではClos Network Topologyを採用していることを知りました。しかし、Clos Network Topologyを理解しているのが特定のメンバーに限られており、それを知っていないと対応が難しいような内容、例えばプロトコルを理解したトラブルシュートやClosネットワークのモニタリングなどについては、そのメンバーに依存していることもわかりました。つまり「ネットワークはスケールするけど、運用する人がスケールしていない」状況です。
このような状況の中で、梅原さん自身もチームとしてもClos Network Topologyを理解して運用できる人を増やしていきたいと考えていますが、そのための方法論は検索しても見つからなかったので、JANOGで発表して参加者と議論することを思い立ちました。
議論したい内容
発表の中で梅原さんからは、参加者と議論したい話題の例として以下のものが提示されました。
- チームに新たなメンバーが入ったときに、どういったオンボーディングを実施していますか
- チームに入ってくるメンバーは、どういったバックグラウンドを持っている人ですか
- オンボーディングを実施している人は、どのようなバックグラウンドを持った人ですか
- オンボーディングする人は、オンボーディングされる側に、どのような期待を持っていますか
- オンボーディングには、何を教材として利用していますか
- 何を参照してClosについての理解を進めましたか
- BGPはKubernetesでも使われていたりしますが、BGPをどのように勉強していたりしますか
- Closを理解し、運用に参加できるようになるまでに何を乗り越えなければならなかったですか
- Closに興味がある人を巻き込んだ経験はありますか(また、どのようなことを結果として得られましたか)
議論から得られた情報やコメント
梅原さんの発表の後、参加者の皆さん(会場だけでなくオンラインで参加している方も多くいて、総勢約300人ほどいました)からたくさんの情報や意見が寄せられ、活発な議論が行われました。このセッションの持ち時間は45分で、梅原さんの発表はそのうち15分ぐらいだったのですが、残りの30分をすべて使っても足りなかったほどです。また、JANOGには参加者用のSlackがあるのですが、そちらにも多くのコメントがありました。
いただいた情報やコメントを整理すると、以下の2つに大別されるように見受けられました。
- Clos Network Topologyの学習に使えるツールや情報源
- オンボーディングの方法論に関する意見
以下、それぞれについて、いただいた情報や意見をまとめて紹介します。
Clos Network Topologyの学習に使えるツールや情報源
書籍や動画
- BGP in the Data Center
データセンターネットワークにおけるBGPの理論、設計、運用について、その自動化も含めて詳細に解説した書籍です。Clos Network Topologyについても解説されています。 - BGP in the Data Centerを読みました(全6回)
foobaronさんによる、上記書籍のまとめ記事です。原書は英語なので、英語が苦手な方はこちらが参考になるでしょう。なお、リンク先は1本目の記事で、その記事から2〜6本目の記事へのリンクがあります。 - Cloud Native Data Center Networking
クラウドネイティブなデータセンターネットワークについて、考え方や構築方法を学ぶための本です。Clos Network Topolopyについても1章を割いて詳しく解説しています。 - Dockerで始めるネットワーク実験入門
川上けんとさんによる動画で、オープンソースカンファレンスにおける発表を収録したものです。DockerとNetwork Namespaceを使って実験用の仮想ネットワークを構築する方法を解説しています。実験の中でTiNET(後述)を使って簡単なClos構成を構築しています。
ソフトウェア
- TiNET
TiNETは、ネットワーク開発者、ルーティングソフトウェア開発者、およびネットワーク教育者向けの、コンテナベースのネットワークエミュレータ環境です。YAMLで構成ファイルを書くと、仮想ネットワークを構築するためのシェルスクリプトを生成することができ、Dockerイメージを設定したトポロジーでデプロイできます。Closネットワークだけでなく、他のさまざまな検証にも利用できます。 - topotests
FRRoutingというネットワークルーティングソフトウェアがあります。これのGitHubリポジトリに収録されているツールの1つがtopotestsで、ここに数多くのプロトコルのユースケースや設定例が載っています。ドキュメントも英語ですが存在します。特にClos Network Topologyの構築や運用にあたってはBGPによるルーティングを学ぶ必要がありますが、BGPは実機を使って学習するのは難しい場合もあるため、このようなソフトウェアが特に役立つようです。 - containerlab
コンテナベースのネットワーク検証環境を構成・管理するツールです。YAML形式の構成ファイルを書いてcontainerlabコマンドを実行することで、任意のトポロジーからなる検証環境を作成できます。
その他
- Cisco DevNet SandBox
Ciscoが提供するAPIなどの実験環境です。開発、APIのテスト、製品の構成方法の学習、トレーニング、ハッカソンなどに使用できます。ちなみに、Cisco以外のベンダーでもコンテナ版のOSなどを提供していることがあるそうで、そういったものも学習に利用できそうです。 - アリスタネットワークスによるハンズオン
アリスタネットワークスでは、IP Closを学べるハンズオンを用意しているそうです。AWS上でコンテナを起動し、ネットワークを構築します。全体的にはAnsibleで設定を投入しますが、1ノードだけは手で設定を入れて実習するとのことです。
オンボーディングの方法論に関する意見
一方、新しく入ってきたメンバーがClos Network Topologyをはじめとする各種技術を学び、実務に参加できるようにするためのオンボーディングをどうすればよいかについては、さまざまな意見が出ました。いくつかに分類して紹介します。
教材について
特にClos Network Topologyについては教科書的な教材に乏しいようで、書籍でも記事でもビデオでもハンズオンでもよいので、良い教材がほしいという要望がありました。特に日本語の情報が期待されていますが、現時点では非常に少ないと言わざるを得ず、英語の情報を見るしかないというコメントもありました。
ルーティングプロトコルの学習について
Clos Network Topologyの運用にあたってはBGPなどのルーティングプロトコルを使用しますが、運用するメンバーがソフトウェアエンジニアであることも多く、そういった人達はもともとルーティングプロトコルの知識がないので学習する必要があります。
ここでルータなどの実機を買って設定するのは費用と時間がかかりすぎるので、それよりはDockerなどの仮想環境で実習する方がよいという意見がありました。4コア8GBメモリぐらいのノートPCでも200台ぐらいのDockerコンテナを動かせるので、十分に実用レベルのネットワークを構築できるようです。
L1やL2の学習について
ルーティングプロトコル、つまりOSI参照モデルにおけるレイヤー3(L3)については上述したような仮想環境で学ぶことができますが、それより下層、つまりL2やL1のオンボーディングはどうすればよいかという質問がありました。これに対しては、L3より下層のトラブルシューティングは教科書的なものがないので経験で学ぶしかない、運用のオンボーディングはペアでオペレーションするのがよい、学びのためには構築から一緒にやっていくことが大切、などのコメントがありました。
その他のコメント
この他にもさまざまな視点からのコメントがありました。
- 梅原さんは独学でClos Network Topologyを学んでいたが、1から独学で学ぶと学習コストが高いので、すでに運用している人達から情報をもらうようにした方がよい
- JANOGでワーキンググループを立ち上げたらどうか? Closネットワークに関わるエンジニアの横のつながりを作れば、今回のような内容をお互い共有できる
- オンボーディングは、単に技術を伝承するだけでなく、その背景となる思想や目的を正しく伝える場でもある
- 管理職視点では、こういった取り組みをやりやすくするような社内文化を作ることが必要
セッションを終えて
セッションの最後に、梅原さんからは次のような言葉がありました。
「議論の中で出てきた内容を自分たちに適用して、取り入れていきたいと思っています。どういう議論をしたいかもこちらから提示して皆さんとお話ししましたが、参加者の皆様も何か持ち帰ることができるものがあったらいいなと思っています」
筆者も会場でセッションを見ていましたが、発表と議論で構成されるJANOGのセッションの中でも、議論の比率がここまで高いセッションは最近あまり見なかったように思います。それは梅原さんの問いかけに対して非常に多くの方が有益な情報やコメントをしてくださったおかげです。会場やオンライン、ならびにSlackでコメントをいただいた皆さん、ありがとうございました。
梅原さんのチームが今回の知見を得て、サービスの運用がより良いものになることを期待しています。成果が出たら、また自社イベントやさくらのナレッジで紹介できればと思います。
それではまた、次回のイベントでお会いしましょう!