ネットワークスイッチ上でアプリケーションやコンテナを稼働できる
ここからはネットワーク機器でプログラムを稼働させるための方法に話題を移す。セッションのサブタイトルにあるように「LANスイッチでPythonだって動いちゃう」時代なのだ。
一般的には「On-Boxプログラマビリティ」と呼ばれている。これまではプログラムはネットワーク機器(Box)の外にあったが、今ではネットワーク機器の上でプログラムが稼働するためだ。リモート管理システムだけでは得られないロジックを実現できるというメリットもある。シスコ以外のベンダーの機器でも実現可能だ。
シスコで長年使われているOn-Boxプログラマビリティ機能にEEM(Embedded Event Manager)がある。ネットワーク機器単体でイベントをトリガとしてアクションを実行できるため、装置の中で完結する。対応している機種が多いのも特徴だ。
こうしたプログラマビリティの進化と呼応するように、ネットワーク機器も日々進化している。シスコのLANスイッチを例に取ると、2017年に発売されたCatalyst 9300シリーズではx86 CPUと8GB メモリを搭載し、さらにコンテナをホストするためにSSDを追加できるようになっている。ちょっとしたパソコンのようである。
実行可能なアプリケーションだと、まずGuest Shell機能がある。これはCisco IOS XEに標準で組み込まれていて、ユーザーが利用可能なLinux環境だ。加えて、ユーザーがDockerコンテナ、LXC(Linux Containers)、KVM(Kernel-based Virtual Machine)をインストールすることもできる。田川氏はデモとして、Catalyst 9300スイッチで数コマンド実行するだけでLinux環境が立ち上がる様子を披露した。
EEMとGuest Shellを組み合わせると、ネットワーク機器で起きたイベントをトリガにPythonスクリプトを実行することができる。これは外部装置やサーバーを必要とせず、ネットワーク機器のみで何らかの自動化が可能となる。外部との連携もできる。例として田川氏は、ネットワーク機器で特定のエラーを検出すると、スマートスピーカーからBGMを流すアラートの仕組みと実際に稼働させた様子を動画で示した。
ここでネットワーク機器内のアーキテクチャを紹介しよう。シスコのネットワーク機器ではネットワーク機能を提供している部分(Cisco IOSd)は独立しており、サードパーティーのアプリケーションやコンテナなどエッジコンピューティングを支える部分(Cisco IOx)は別にある。
Cisco IOxで稼働しているサービスをコマンドラインから確認すると、libvirtdやdockerdが「Running」となっているのが分かる。田川氏はCisco IOxを使ってnginxのDockerコンテナを稼働させ、そのIPアドレスをブラウザで開いて見せた。ネットワーク機器(スイッチ)でコンテナが走り、そのコンテナでWebサーバーがホストされていることが示された。
このようにネットワーク機器で何らかのアプリケーションやコンテナなどが稼働できるようになると、「ネットワーク管理製品がコンテナをオーケストレーションする時代になる」と田川氏は言う。ここで「Kubernetesでいいのでは?」と思えるかもしれないが、わざわざKubernetesを稼働させるほどでもない……というような時にはいいかもしれない。選択肢として覚えておきたい。
最後に田川氏は参加者に向けて、こう話した。「今ではネットワークエンジニアの仕事はコマンドラインで『sh xxx』を駆使する世界から変わり、アプリケーションのようにAPIやRESTのインターフェースが用意されています。アプリケーション開発者の皆さんにとって、より近い世界になっているのではないでしょうか。ネットワークも意外と遊べます。楽しい世界だと気づいてくれたらネットワークベンダーのエンジニアとして、とてもうれしいです」