GNS3 1.3.1にIOS XRvを求めるのは間違っているだろうか
Posted on 2015/04/23(Thu) 01:05 in technical
サマリ
Ubuntu 14.04.2 DesktopにGNS3 1.3.1を入れてIOS XRvが起動するところまで書きます。
はじめに
GNS3は適当に検索すると、ダウンロードしたけりゃユーザ登録しな、と書かれているのだけど。
普通にGithubから手に入るからね。よろしくね。
XRvの準備
IOS XRvはこっちから。
https://upload.cisco.com/cgi-bin/swc/fileexg/main.cgi?CONTYPES=Cisco-IOS-XRv&msg=Download+complete.
IOS XRvの扱いについては記述と実態が今一つ合致していないのだけれど、CiscoフォーラムのCisco社員によるCisco Endorsedな発言によれば、:
Note that the demo image is free to use and the download works. The production images require the correct PIDs (I'll post more on this later).
と言うことらしいので、パートナー契約や製品購入をしていない一般人でも、デモ版に関しては私的なダウンロードや使用が可能です。
警告
当初のダウンロードURL https://software.cisco.com/download/release.html?i=!y&mdfid=285013070&softwareid=280805694 では、ダウンロードには有効なサービス契約が必要だと言われます。
この辺 https://supportforums.cisco.com/discussion/11920201/ios-xr-xrv#comment-9462346 のフォーラムの文脈からすると、 XRvのデモ版を一般公開するにあたって安定的に供給可能なスペースの準備が出来ていないから、 upload.cisco.com に空間を作りました。という流れだと解釈しています。
「その致命的に都合のいい解釈は間違っているよ」と言うCisco公式見解を知っている場合は教えて頂けると助かります。
XRvはCisco IOS XRv Overviewに記載がある通り、L2機能が動作しません。
厳密にどの機能が動作しないかははっきりしないものの、EoMPLSなどのL2VPNは動作しない可能性が高いです。(手元で確認した範囲では、EVPNなどはコンフィグは入るものの転送されませんでした)
- Cisco IOS XRv routers do not support Layer 2 features.
また、デモ版は上記の制限を除けば、おおよその機能群を使用することが出来ますが、以下の制限を持ちます。
- Available free for users
- AAA hardcoded users
- Rate Limit of 2 Mbps
インストールとイメージの配置作業
KVM、Wiresharkの導入:
$ sudo apt install -y kvm libvirt-bin bridge-utils virt-manager $ sudo apt install -y wireshark
警告
KVMはXRvの起動に必須、Wiresharkはキャプチャが取れると便利なので推奨、くらいの立ち位置。
GNS3の一式取得:
$ cd ~ $ wget https://github.com/GNS3/gns3-gui/releases/download/v1.3.1/GNS3-1.3.1.source.zip $ unzip GNS3-1.3.1.source.zip -d GNS3-1.3.1
GNS3インストール(Dynamips):
$ cd ~/GNS3-1.3.1 $ unzip dynamips-0.2.14.zip $ sudo apt install -y libelf-dev uuid-dev libpcap0.8-dev cmake $ cd dynamips-0.2.14 $ mkdir build $ cd build $ cmake .. $ make $ sudo make install $ sudo setcap cap_net_admin,cap_net_raw=ep /usr/local/bin/dynamips
GNS3インストール(GNS3-Server):
$ cd ~/GNS3-1.3.1 $ unzip gns3-server-1.3.1.zip $ cd gns3-server-1.3.1 $ sudo apt install -y python3-setuptools python3-netifaces $ sudo python3 setup.py install
GNS3インストール(GNS3-GUI):
$ cd ~/GNS3-1.3.1 $ unzip gns3-gui-1.3.1.zip $ cd gns3-gui-1.3.1 $ sudo apt install -y python3-pyqt4 $ sudo python3 setup.py install
IOS-XRvのイメージ配置:
$ qemu-img convert -O qcow2 iosxrv-k9-demo-5.3.0.vmdk iosxrv-k9-demo-5.3.0.qcow2 $ mkdir -p ~/GNS3-1.3.1/images $ mv iosxrv-demo.qcow2 ~/GNS3-1.3.1/images
GNS3の起動:
$ gns3
警告
iouyap-0.95.zip と vpcs-0.6.zip は必要に応じて準備してください。XRvを使う上では特に必要ありません。
そうだ!ついでに多目的に使えるFreeBSDベースのルータディストリビューションであるところのBSDRP(http://bsdrp.net/)も是非置いておこうよ!(露骨な宣伝):
$ unxz BSDRP-1.55-full-amd64-serial.img.xz $ qemu-img convert -O qcow2 BSDRP-1.55-full-amd64-serial.img BSDRP-1.55-full-amd64-serial.qcow2 $ mv BSDRP-1.55-full-amd64-serial.qcow2 ~/GNS3/images
あ、VyOSが欲しい人はそういうのを置いておいても良いですよ。(この落差)
XRvを起動させてみる。
Edit -> Preference -> QEMU VMs -> New からXRvのイメージを登録します。
警告
KVM(qemu)のインストールが終わっていない場合は、途中で Qemu binary が空っぽになって先に勧めないことでしょう。
System Requirements(http://www.cisco.com/c/en/us/td/docs/ios_xr_sw/ios_xrv/release/notes/xrv-rn.html#topic_2A33879F14614058A86F57A3D41B4876)に記載されている通り、メモリは3GB、NICにはe1000を使用しましょう。
通報
メモリは2GB程度でも一応動きますが、1GBだと起動後に初期化できなくて死ぬと思います。
また、メモリ3GBを前提にプロセスが動いている可能性があり、一部機能を有効にした場合に特定メモリ空間へのアクセスに失敗することがあるかもしれません。
最近であればメモリオーバーコミット出来るはずなので、とりあえず3GB割り当てておくのが正解かと思います。
あとは画面にドラッグアンドドロップして1個配置したら、緑の三角ボタンで起動します。
警告
立ち上がってくるまでには割と時間がかかります。また、初期化等を含めた起動が完了するまでは更に時間がかかります。
起動後はコンソール画面が使えるので、アイコンを右クリック -> Console を使うか、 telnet 127.0.0.1 2001 でアクセス出来るハズです。
XRvは初回起動時にユーザ名とパスワードを聞かれるので、とりあえず適当に何か入れましょう。:
Enter root-system username: Enter secret: Enter secret atain:
また、ログインできる状態になっていても起動が完了した保証があるわけではなく、ハードウェアやプロセスの初期化処理等がバックグランドで実行されています。:
SYSTEM CONFIGURATION COMPLETED
と言う表示が出るまでは大人しく待ちましょう。
先走ってコマンドを叩いてもこうなります。:
RP/0/0/CPU0:ios#show route Tue Apr 20 13:36:10.222 UTC % No matching routes found RP/0/0/CPU0:ios#show interface Tue Apr 20 13:36:18.491 UTC No interfaces found (): Unable to connect to server
大体、このような画面が得られれば問題ないですね。
SYSTEM CONFIGURATION COMPLETEDしてるところ
ログイン画面
バージョン情報とか
インタフェース情報とか