CML上の仮想スイッチをDNA Centerで管理してみた

# はじめに
この記事は Cisco Systems 合同会社 社員有志による Cisco Systems Japan Advent Calendar 2023 の 17日目として投稿しています。

2017年版: https://qiita.com/advent-calendar/2017/cisco
2018年版: https://qiita.com/advent-calendar/2018/cisco
2019年版: https://qiita.com/advent-calendar/2019/cisco
2020年版①: https://qiita.com/advent-calendar/2020/cisco
2020年版②: https://qiita.com/advent-calendar/2020/cisco2
2021年版①: https://qiita.com/advent-calendar/2021/cisco
2021年版②: https://qiita.com/advent-calendar/2021/cisco2
2022年版①②: https://qiita.com/advent-calendar/2022/cisco
2023年版: https://qiita.com/advent-calendar/2023/cisco

# 概要
[Cisc Modeling Lab (CML)](https://www.cisco.com/c/ja_jp/products/cloud-systems-management/modeling-labs/index.html) とは、シスコが提供するネットワークシミュレーションツールです。実際のシスコイメージを使用したシスコのシミュレーションや、さらにシスコ以外の会社のイメージを使用したネットワークを容易にシミュレーション可能です。
CMLではバージョン2.6からCatalyst9000シリーズスイッチの仮想版であるCatalyst 9000v (Cat9Kv) が使えるようになっています (ベータ版)。またその Cat9Kv はシスコの SDN コントローラである DNA Center (DNAC) から管理可能ということで、どのくらい使えるのかを試してみました。

## 検証環境について
本記事では、CML は、2023年12月16日現在の最新のバージョンである 2.6.1 を使用しており、CML2.6.1 におけるCat9Kv のバージョンは 17.10.01prd7、DNAC のバージョンは 2.3.5.4-70852-HF3です。

:::note info
DNACはCatalyst Centerに名称が変わることが発表されていますが、バージョン2.3.5.4-70852-HF3のGUIではまだDNA Center表記のため、こちらの記事でもDNA Center (DNAC) と記載します。
:::

## Catalyst 9000v (Cat9Kv) とは　
Cat9Kvとは、CML上で動作する仮想Catalystスイッチです ([参考](https://developer.cisco.com/docs/modeling-labs/#!cat-9000v))。DNACの機能の1つであるSD-Accessをシミュレーションすることを目指し、開発されています。従来、SD-Accessを検証するためには実機のスイッチが必要となるため検証するハードルが高いという難点があり、その難点を解決するためにこのCat9Kvが目下開発中となっています。現在はまだベータ版となっており、CML上でもBETAと記されており、UADP版とSilicon One版の2種類があります。↓↓↓
![スクリーンショット 2023-12-02 15.03.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/ccc6d798-518e-87a5-4ca9-b554da573d3b.png)

## DNA Center (DNAC) とは
DNACについて簡単にご説明します。
DNACは一言で表すと、LAN環境のネットワーク機器のためのSDNコントローラーです。従来、複数のネットワーク機器を設定するには個別にTelnetやSSHでアクセスし、設定、管理しなければいけませんでした。そこでDNACから集中的に設定、管理することでネットワーク管理者の負担を軽減します。

DNACには大きく3つの特徴があります。
1. 作業の自動化 (Automation)
2. ネットワークの見えるか・分析 (Assurance)
3. アクセス制御 (SD-Access)

それぞれについては詳細の説明を割愛しますが、本記事では現状のCat9Kvで、このDNACの3つの特徴のうち、AutomationとAssuranceについて、どのくらいシミュレーションできるのか簡単に検証してみようと思います。

# 検証構成について
本記事では、以下の検証構成で検証しました。DNACは実機を使っています。
![スクリーンショット 2023-12-02 15.33.29のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/bfed0388-09c6-5988-641a-3240f2d7ad95.png)


# 検証１：Automation
## 初期設定
Cat9Kvに入れた設定は
- DNACと通信するためのIPアドレスとデフォルトルート
- SSH クレデンシャル (ユーザ名とパスワード)　と　SNMP クレデンシャル (これらはDNACが管理するための設定です ([参考](https://www.cisco.com/c/ja_jp/td/docs/cloud-systems-management/network-automation-and-management/dna-center/2-3-5/user_guide/b_cisco_dna_center_ug_2_3_5/b_cisco_dna_center_ug_2_3_5_chapter_010.html)))
- NTP サーバー
- クロックをJSTに変更またSyslog表示をローカルタイムに変更 (ログをわかりやすくするため)



## DNACにてネットワークの検出 (Discovery) を実行
```
inserthostname-here#
Dec  3 12:19:04.176: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:04 JST Sun Dec 3 2023
Dec  3 12:19:04.470: %SYS-6-LOGOUT: User admin has exited tty session 1(10.71.135.200)
Dec  3 12:19:04.727: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:04 JST Sun Dec 3 2023
Dec  3 12:19:05.382: %SYS-5-CONFIG_I: Configured from 10.71.135.200 by snmp
Dec  3 12:19:05.660: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:05 JST Sun Dec 3 2023
Dec  3 12:19:06.553: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:06 JST Sun Dec 3 2023
Dec  3 12:19:07.585: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:07 JST Sun Dec 3 2023
Dec  3 12:19:16.003: %SYS-6-LOGOUT: User admin has exited tty session 2(10.71.135.200)
Dec  3 12:19:16.265: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:16 JST Sun Dec 3 2023
Dec  3 12:19:47.736: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:47 JST Sun Dec 3 2023
Dec  3 12:19:47.907: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:19:47 JST Sun Dec 3 2023
Dec  3 12:20:02.819: %SYS-6-LOGGINGHOST_STARTSTOP: Logging to host 10.71.135.200 port 0 CLI Request Triggered
Dec  3 12:20:02.819: %SYS-6-LOGGINGHOST_STARTSTOP: Logging to host 10.71.135.200 port 514 started - CLI initiated
Dec  3 12:20:03.315: %SYS-5-CONFIG_I: Configured from console by admin on vty4 (10.71.135.200)
Dec  3 12:20:07.906: %SYS-5-CONFIG_I: Configured from console by admin on vty4 (10.71.135.200)
Dec  3 12:20:08.316: %SYS-6-LOGGINGHOST_STARTSTOP: Logging to host 10.71.135.200 port 514 started - reconnection
Dec  3 12:20:12.783: %SYS-5-CONFIG_I: Configured from console by admin on vty4 (10.71.135.200)
Dec  3 12:20:22.910: %PKI-6-TRUSTPOINT_CREATE: Trustpoint: DNAC-CA created succesfully
Dec  3 12:20:29.674: %SYS-5-CONFIG_I: Configured from console by admin on vty4 (10.71.135.200)
Dec  3 12:21:09.697: %SYS-6-LOGOUT: User admin has exited tty session 1(10.71.135.200)
Dec  3 12:21:49.675: %SYS-6-LOGOUT: User admin has exited tty session 2(10.71.135.200)
Dec  3 12:22:31.632: %SYS-6-LOGOUT: User admin has exited tty session 5(10.71.135.200)
```
お！問題なく成功しました。これは好調な出だしです。


:::note info
CMLにおいて、C9Kvのシリアル番号は何台建てても同じであるため、現状ではDNACで複数のC9Kvの管理はできません。DNACにおいてシリアル番号が同一のものはIPアドレスやMACアドレスが異なっていても同一の機器と見なされ、2台目以降の機器のDiscoveryに成功してもインベントリに追加されないためです。
:::

## 設定テンプレートによる設定入力
DNACでは、ネットワーク機器の設定に関するテンプレートを作成することで、拠点単位や複数の拠点のネットワーク機器に対して設定を自動で入力することができます。設定を自動で入力できることで作業時間の短縮や、また設定ミスを防ぐことが可能です。

以下のような簡単なテンプレートを作成してみました。ホストネームを変更し、インタフェースを１つ Shutdown できるか試してみます。

![スクリーンショット 2023-12-03 12.44.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/a32fe918-2b49-1f90-7fcb-df47b492cd97.png)

---

このテンプレートを使ってC9Kvに設定を反映できるか試してみると、
```
inserthostname-here#
Dec  3 12:52:58.463: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:52:58 JST Sun Dec 3 2023
Dec  3 12:52:59.699: %SYS-5-CONFIG_I: Configured from console by admin on vty0 (10.71.135.200)
Dec  3 12:53:08.334: %SYS-5-CONFIG_I: Configured from console by admin on vty0 (10.71.135.200)
Dec  3 12:53:09.214: %SYS-5-CONFIG_I: Configured from console by admin on vty0 (10.71.135.200)
Dec  3 12:53:10.246: %LINK-5-CHANGED: Interface GigabitEthernet1/0/1, changed state to administratively down
Dec  3 12:53:11.246: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/1, changed state to down
Dec  3 12:53:17.041: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:53:17 JST Sun Dec 3 2023
Dec  3 12:53:17.825: %SYS-6-LOGOUT: User admin has exited tty session 2(10.71.135.200)
Dec  3 12:53:18.198: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:53:18 JST Sun Dec 3 2023
Dec  3 12:53:20.769: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:53:20 JST Sun Dec 3 2023
Dec  3 12:53:28.375: %SYS-6-LOGOUT: User admin has exited tty session 2(10.71.135.200)
Dec  3 12:53:28.712: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: admin] [Source: 10.71.135.200] [localport: 22] at 12:53:28 JST Sun Dec 3 2023
ad-cal-c9kv#sh ip int b | inc 1/0/1
GigabitEthernet1/0/1   unassigned      YES unset  administratively down down    
ad-cal-c9kv#
```

無事にテンプレートを使って設定が反映されました！
ホストネームが "ad-cal-c9kv" に変更され、該当のインタフェース "GigabitEthernet1/0/1" が "administratively down" になりました。
このテンプレートを活用することで、多くのネットワーク機器への設定時間が大幅に短縮でき、また変数を設定することもできるため、拠点に合わせた設定が容易です。

# 検証2：Assurance
検証 1 のデバイスのディスカバリが成功すると、 DNAC のインベントリ (DNAC が管理している機器リスト) に Cat9Kv  が追加されます。追加された Cat9Kv がどのように可視化されるかを見てみます。


![スクリーンショット 2023-12-15 23.24.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/0284e99f-68c7-086b-9621-bb85299f3ffc.png)

まずインベントリを確認してみると "ad-cal-c9kv" という機器が存在するのが確認でき、また ネットワーク機器の情報を確認するコマンドを DNAC から遠隔で実施することが可能です。

## Device Detail
デバイスの詳細画面に移り、可視化されている情報をいくつか抜粋しご紹介します。

---

![スクリーンショット 2023-12-03 12.58.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/d6275b6d-a510-8ed9-2bec-aade3914b105.png)
Cat9Kvのホストネーム、IPアドレスといった情報が確認できるのはもちろん、デバイスモデルは "Cisco Catalyst 9000 SiliconOne 8 Port Virtual Switch" と記載されています。またインタフェースの Up/Down を確認できます。検証１のテンプレートを使って Shutdown した Gi 1/0/1 は "Admin Disabled" となっています。

---

![スクリーンショット 2023-12-03 12.59.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/569e859d-30ff-4e33-2ccd-3388f9a8400f.png)
プラットフォーム名、MACアドレスからシリアル番号、稼働時間といった情報ももちろん確認できます。

---

![スクリーンショット 2023-12-03 12.59.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/f2cc1e22-283c-2c40-fe7b-eadffb4464a4.png)
running-config の設定を確認することもできます。
CLI でネットワーク機器に入って running-config を確認するのは "terminal length 0" を入力して確認するのが少し面倒だったり、 "terminal length 0" の設定を取り消したりするのを忘れたりするので、このように GUI から簡単に設定確認できるのは嬉しいですね。

---

![スクリーンショット 2023-12-03 12.59.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/f7942813-e078-00d3-520f-2e4dd0f7123e.png)
過去の設定変更も確認可能です。上記のスクリーンショットは検証 1 におけるテンプレートを使って設定を入力した時の変更箇所になります。過去に勝手に設定変更がないか、また設定変更により障害が発生した際に、過去と障害時の設定を比較することでトラブルシューティングや、切り戻しの実施が容易に可能になります。

## デバイス360
DNAC の Assurance の機能の特徴の 1 つに色々なデバイスやネットワークの情報を網羅的に確認する 360 度ビューがありますが、そのうちのネットワーク機器の情報を確認するデバイス360 で Cat9Kv を見てみます。

![スクリーンショット 2023-12-15 23.35.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/8c776af8-07e5-821b-7b7c-08bd2c28672d.png)
過去の Cat9Kv の健全性をメモリやCPUといった情報から緑色、赤色等でわかりやすく可視化してくれました。
またもし Cat9Kv で異常な事象があった場合には、"問題" の欄に表示されます。

"問題" に記載のある ```Device has rebooted due to "unknown reload cause - reason ptr 0xF, PC 0x0,address 0x0".``` をクリックすると
![スクリーンショット 2023-12-15 23.41.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/afc20c02-f522-d2a5-28b0-359e3b1a57d5.png)
上記の通り、該当の問題の原因を調べるための推奨アクションを提示してくれます。
試しに推奨アクション 1 つ目の "リロード理由の取得" を押してみると

![スクリーンショット 2023-12-15 23.41.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/975d4448-6baf-2f26-6a8c-31e667bb475b.png)
Cat9Kv から情報を取得してくれました。
この機能は DNAC を導入する大きなメリットとなる機能の 1 つであり、その機能をこのように簡単に構築して試せるようになるのは嬉しいですね！

---
![スクリーンショット 2023-12-15 23.54.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355483/5cde1db0-a107-4db6-2178-5f78dcdbaeea.png)
インタフェースの情報もわかりやすく可視化してくれています。インタフェースの Tx、Rx の使用率も一目で分かるの嬉しいですね！
DNAC の話になりますが、ルーターでもこれらの情報は見えるので、WAN 回線をどのくらい使っているか、という情報にも活用できるかと思います。


# まとめ
今回は DNAC のほんの一部の機能を検証しましたが、結論として今回試した機能に関しては物理機器の Catalyst 9000 シリーズスイッチと同等の実体験を得ることができました。ぜひこの記事を読んでくださった皆様にもお試しいただければと思います！
Automation、Assurance にはまだまだ多くの機能があったり、SD-Access も非常に便利な機能であるため、これらの機能をどこまで使えるか今後試していきたいと思います。
また現状の Cat9Kv はベータ版ですが、このソフトウェアが完成すれば非常に多くの方に SDN ソリューションを簡単に体験していただけるため、個人的にこの開発を大応援しています。実際 DNAC は AWS 版がすでに誕生していますが、これから ESXi 版も出てくるため、学習コストのハードルが高かったネットワークの勉強をより身近に感じていただけるのではと思います。

さらなる欲を言うと、無線環境のシミュレーションも CML でできると最高ですね!!!

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