先日の Cisco Live 2016 Berlin で IOS XE における Open Service Container が発表されました。これから数回にわたって、このOpen Service Containerについて紹介したいと思います。
Cisco ASR 1000、ISR 4000、CSR 1000V、Catalyst プラットフォーム等で採用される IOS XE は、ベース OS として Linux を利用しています。そして、ネットワーク機能を提供する IOSd(IOSデーモン)は Linux 上で Linux プロセスとして動作しています。こういったアーキテクチャのおかげで、ルータやスイッチのハードウェア資源(CPU、メモリ)を使って、KVM(Kernel-based Virtual Machine)もしくは LXC(Linux Containers)上に別のアプリケーションを動作させることができるようになっています。
これらのアプリケーション実行環境は、サービス コンテナ*1と呼ばれ、従来、IOS WAAS や Snort などシスコが認証したアプリケーションが動作していました。Open Service Container は、ルータ上やスイッチ上でアプリケーションをホストするこれらの仕組みをシスコやシスコのエコパートナー以外の一般にも開放したものとなります。
今回は、EFT 版を使って動作するところまでやってみることにします*2。
サービス コンテナ実践
IOS XE 3.17 の CSR 1000V を VCPU 4、メモリ 8GB で用意します。サービスコンテナの容量によっては、HDD も増量しておくといいでしょう。
まず、初期状態を確認しておきます。
CSR1KV#sh virtual-service
Virtual Service Global State and Virtualization Limits:
Infrastructure version : 1.7
Total virtual services installed : 0
Total virtual services activated : 0
Machine types supported : KVM, LXC
Machine types disabled : none
Maximum VCPUs per virtual service : 1
Resource virtualization limits:
Name Quota Committed Available
————————————————————–
system CPU (%) 75 0 75
memory (MB) 2048 0 2048
bootflash (MB) 20000 0 6078
Infrastructure version が 1.7 であることと、Machine types supported に KVM が含まれていることを確認してください。なお、CSR 1000V 上で KVM を動作させるには、ハイパーバイザ側で Nested Visualization を有効化しておく必要があります。
使える VCPU が 1 つで、CPU(%)、メモリ、ブート フラッシュに関して、それぞれのクォータ、割り当て済み、利用可能領域がわかります。特に、ブート フラッシュは、クォータが 20GB なものの、利用可能領域が約 6GB しか空いてないことに注意ください。
Open Service Container を有効にするには、以下のコマンドを入力します。
CSR1KV(config)#virtual-service
CSR1KV(config-virt-serv-global)# signing level unsigned
% Support for unsigned packages has been user-enabled. Unsigned packages are not endorsed by Cisco Systems, Inc. User assumes all responsibility
従来、サービス コンテナでアプリケーションを動かすには、OVA パッケージにシスコがサインした証明書が含まれている必要があったのですが、上記のコマンドでそれがなくとも自己責任で動作させられるようになります。
これ以降の作業は、従来のサービスコンテナと同じ手順となります。では、事前に用意しておいた Fedora 21 の OVA イメージをインストールしてみます。
CSR1KV#virtual-service install name fedora21 package bootflash:fedora21cloud-unsigned-new.ova
show virtual-service list コマンドでステータスを確認できます。
CSR1KV#show virtual-service list
Virtual Service List:
Name Status Package Name
——————————————————————————
fedora21 Installed fedora21cloud-unsigned-new.ova
次に、サービス コンテナと接続するためのインターフェイスとスタティックルートの設定をします。
CSR1KV(config)#interface VirtualPortGroup0
CSR1KV(config-if)#ip unnumbered GigabitEthernet1
CSR1KV(config-if)#exit
CSR1KV(config)ip route <container_ip> 255.255.255.255 VirtualPortGroup0
サービスコンテナの設定をします。
CSR1KV(config)#virtual-service fedora21
CSR1KV(config-virt-serv)#vnic gateway VirtualPortGroup 0
CSR1KV(config-virt-serv-vnic)#guest ip address <container_ip>
CSR1KV(config-virt-serv-vnic)#exit
CSR1KV(config-virt-serv)#activate
% Activating virtual-service ‘fedora21’, this might take a few minutes. Use ‘show virtual-service list’ for progress.
show virtual-service list コマンドでステータスを確認できます。
CSR1KV#show virtual-service list
Virtual Service List:
Name Status Package Name
——————————————————————————
fedora21 Activated fedora21cloud-unsigned-new.ova
virtual-service connect name <container_name> console コマンドでサービス コンテナ側に接続できます。
CSR1KV#virtual-service connect name fedora21 console
Connected to appliance. Exit using ^c^c^c
Fedora release 21 (Twenty One)
Kernel 3.17.4-301.fc21.i686 on an i686 (ttyS0)
localhost login: root
Password:
Last failed login: Fri Mar 18 08:11:54 UTC 2016 on ttyS0
There was 1 failed login attempt since the last successful login.
Last login: Fri Mar 18 03:59:14 on ttyS0
[root@localhost ~]#
サービス コンテナ側でのネットワークの設定は自分でする必要があります。
次回は、サービス コンテナ用の OVA パッケージの作り方を解説します ヽ(゚∀゚)ノ
脚注