Categories: Cisco IOS

Open Service Container事始め

先日の Cisco Live 2016 Berlin で IOS XE における Open Service Container が発表されました。これから数回にわたって、このOpen Service Containerについて紹介したいと思います。

 

Cisco ASR 1000ISR 4000CSR 1000VCatalyst プラットフォーム等で採用される 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 パッケージの作り方を解説します ヽ(゚∀゚)ノ

脚注
  1. 紛らわしいのですが、動作する対象が、仮想マシンであれ、コンテナであれ、一概にサービスコンテナと呼ばれます。
  2. 正式サポートは、IOS XE 16.3(2016年夏頃)を予定してます

 

佐藤 哲大

2001年、シスコシステムズ株式会社(当時)に新卒として入社。官公庁、製造担当のハイタッチ SE を経て、ルータ系の技術支援、ソリューション開発に従事。SDN 応用技術室の開設に伴い、2013年4月から現職。

(趣味と実益を兼ねて)日夜、プログラミングや OSS と戯れ中。