Help us understand the problem. What is going on with this article?

最高にわかりやすいネットワークの可視化✨✨

はじめに

この記事は、知名度の低い穴場中の穴場企業シスコシステムズの有志による Cisco Systems Japan Advent Calendar 2019 の 14 日目として投稿しています。

TL;DR

  • ネットワークの利用状況を可視化するために、端末の通信量に応じて💡⚡✨イルミネーション✨⚡💡を色々なパターンで光らせます
  • SNMP で通信量の統計情報を取得する方法は一般的に 1 - 5 分間の平均スループットを計算するため、実際の利用状況を即座にイルミネーションに反映させることができません
  • Steaming Telemetry を使うことで、プログラムに優しい形式 (XML, JSON) でネットワーク機器からリアルタイムに統計情報を取得できます
  • この記事では 5 秒間の平均スループットを元にイルミネーションを制御することができました
  • 今年は自宅ラックやネットワーク機器をイルミネーションしましょう!✨✨✨

動作例

クリスマスイルミネーション

クリックで再生されます。

クリスマスツリーはたったの 300 円。ドン・キホーテと関連会社に感謝を申し上げます。

自宅ラック

友人の自宅ラックをイルミネーションしてみました😇 (Thanks to @takemon62act)
takemon62act 宅ラック

At-A-Glance

At-A-Glance

  • AP = アクセスポイント
  • WLC = ワイヤレス LAN コントローラ

通信の可視化

企業組織のネットワークに限らず、一般的な家庭で使われているネットワークにおいても、その利用状況は可視化されています。例えば、ルータやスイッチ等の機器には各インターフェイスの接続状態を表すリンク LED やトラフィックがあることを示すアクティビティ LED が備わっています。これらの LED は極めて限られた面積の中にも関わらず、わかりやすく通信を可視化してくれます。

outout.gif

しかし、どう考えても✨✨派手さ✨✨が足りません。

この記事はアドベントカレンダーの一部なわけですから、クリスマスにちなんで、派手にイルミネーションする必要があります。そこで、とりあえず Amazon で LED イルミネーションライトを買ってきました。

リモコンで 8 つの点灯パターンを切り替えることができます。1,000 円ほどで購入しました。消費電力ゼロ電池式が特徴らしいです。

スループットを計算することの難しさ

この記事では「ネットワークがたくさん使われているときに✨✨派手に光る✨✨」ことを目指して、ネットワークのスループットに注目します。

企業組織のネットワークにおいて利用状況を可視化する一般的な方法は、SNMP を使って定期的にネットワーク機器から通信量の統計情報を取得し、その差分から帯域幅を算出するものです。

参考: SNMP を使用した帯域幅使用率の計算方法 (15 年以上前から公開されている)

このような方法では、装置から情報を取得する間隔 (サンプリングレート) によって精度に大きな違いが生まれます。例えば、統計情報を 5 分おき に取得すると、その 5 分間の中で 💣 爆発的 💣 な変化があったことに気付くことができません。

では、数秒おきの情報を取得すればいいのでしょうか??

残念ながらネットワーク機器のリソースは非常に限られているため、SNMP を使って数秒おきに情報を問い合わせてしまうと、ネットワーク機器側の負荷が高くなってしまいます。

そこで次世代 SNMPと呼ばれているStreaming Telemetry の出番です。Streaming Telemetry では「いつ(*秒おきに, 値が変化したら)」「どこに(IP アドレス, ポート)」「なにが欲しい」のか、予めネットワーク機器に対して宣言します。ネットワーク装置から能動的に情報を送信するため、SNMP と比較して軽い負荷でリアルタイムなデータを取得することができます。

Streaming Telemetry は最近日本でも多く取り上げられているため、色々な情報が Web で見つかります。興味がある方はぜひ以下をご参照ください。

構成部品

IoT リモコン - Broadlink RM Mini3

Broadlink RM Mini3
Broadlink RM Mini3

LED イルミネーションに赤外線を送信するために、スマートホームなどの文脈で話題の「スマートリモコン」「IoT リモコン」を使います。ちゃんとしたものは高価なので、今回はあくまで実験目的として技適未取得の怪しい製品を eBay で買ってきました 😈

社名を出しながら電波法に違反すると炎上間違いなしですが 総務省関東総合通信局へ技適未取得機器を用いた実験等の特例を届けることで、実験のために合法的に利用しています 🎉
申告書を郵送すると、届出書データとして yaml ファイルがメールで送付されてきて感動しました。

技適未取得機器を用いた実験等の特例の届出

Cisco Catalyst 9800-CL ワイヤレス コントローラ

Cisco Catalyst といえば スイッチ と思いますよね???

Cisco Catalyst 9800 Series Wireless Controllers
Cisco Catalyst 9800 Series Wireless Controllers (cisco.com)より引用

違います! ワイヤレス製品も含めた Catalyst 9000 シリーズとして約 1 年前にブランド統合されました。
従来と大きく異なる点はルータやスイッチと同様に Cisco IOS XE が採用されていることです。これによって、プログラマビリティが飛躍的に向上されています。また、ルータでは当たり前の仮想環境との親和性も大きく向上しました。

この記事では仮想アプライアンス Catalyst 9800-CL 16.12.1s を利用しています。

Python プログラム

ソースコードは Gist にアップロードしました。自由に使ってください。Cisco ではないネットワーク機器でも同じように動くはず、です。

$ python main.py --help
usage: main.py [-h] -u USERNAME [-p PASSWORD] [--port PORT] [--period PERIOD]
               destination ifname

パラメータを入力してください

positional arguments:
  destination           Connects and logs into the specified destination
  ifname                Interface name to check its bandwidth (i.e.,
                        GigabitEthernet1)

optional arguments:
  -h, --help            show this help message and exit
  -u USERNAME, --username USERNAME
                        Username (default: None)
  -p PASSWORD, --password PASSWORD
                        Password (default: Prompt if not specified)
  --port PORT           Port (default: 830)
  --period PERIOD       Period in centiseconds for periodic subscription
                        (default: 500)

例えばこんな感じで実行します。

$ python main.py -u cisco -p cisco switch.example.com GigabitEthernet2

最後に

  • 自宅ラックのイルミネーションを快諾してくれた 10 年来の友人に感謝 🙏

免責事項

本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away