My Home NW Lab

逸般の誤家庭のネットワーク

Catalyst 8000VにThousandEyesのEnterprise Agentを導入する

ThousandEyesとCiscoバイスの組み合わせの設定方法の確認を行いたかったため、Catalyst 8000V (C8000V)にEnterprise Agentを導入した際の手順を整理しました。 主に検証環境向けとしての設定を想定しています。

検証構成

CML2上の検証環境を構築しております。後述しますが、C8000VのVersionに関しては特記事項があります。

CML2上の構成

CML2上の構成

論理構成

論理構成

ThousandEyesのCiscoバイス向けEnerprise Agentは、Dockerイメージとして提供されております。 Dockerコンテナを動作せるための内部ネットワークは、CGN用途のISP Shared Addressである 100.64.0.0/10 の範囲からサブネット化して割り当てています。
C8000Vの外部側から内部にあるEnterprise Agentに対しての接続は行わないため、コンテナが配置される内部ネットワークをNAT環境下に所属させました。

また、本構成ではC8000V内のEnterprise AgentからInternet側への通信を想定しています。 もしEnterprise AgentからC8000VのLAN側などへの通信を行おうとすると、VRF間の通信が発生してRoute Leakの設計を検討する必要があるため、VRFの設定を適宜削除してください。

C8000VのVersion

2022年06月当時では、CML2のイメージ (Refplat ISO)に含まれているC8000Vでは Version 17.6.1a であり。 C8000Vの Version 17.6.1a では CSCvz51941 に該当しているようでEnterprise Agentの導入が失敗するようでした。 修正済みのVersion情報は確認できなかったので、本記事執筆時点で最新の Version 17.8.1a をCML2で起動して検証を行っております。

補足: 後日確認すると2022年08月16日時点でKnown Fixed Releases に 17.8.1a の記載が追加されておりました。

C8000VのVersion

cat8000v-0#show version | include Cisco IOS Software        
Cisco IOS Software [Cupertino], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.8.1a, RELEASE SOFTWARE (fc3)
cat8000v-0#

ThousandEyes側での展開に必要な情報の確認

ThousandEyes側にてEnterprise Agentの登録に必要なトークンの情報を確認します。

  • メニュー: Cloud & Enterprise Agents > Agent Settings より Enterprise Agents タブ > Agents タブと順に開き、Add Net Enterprise Agent ボタンを押下します。

    メニュー: Cloud & Enterprise Agents > Agent Settings の画面

  • Add Net Enterprise Agent の画面にて、Cisco Application Hosting タブ > Routers タブと順に開きます。

    Add Net Enterprise Agent の画面

  • ThousandEyesにEnterprise Agentを認識させるための Account Group Token の情報を控えておいてください。

    Account Group Token

    Account Group Token はDockerコンテナを起動させる際の引数 (TEAGENT_ACCOUNT_TOKEN)として設定します。

    引数: TEAGENT_ACCOUNT_TOKEN

C8000Vの設定

必要な設定を順に解説します。

基本設定

先ずは基本的なネットワークの設定を行います。 コンテナ用の内部ネットワークから外部への接続は送信元NATするため ip nat outside の設定がある点に留意してください。

enable

configure terminal

hostname cat8000v-0

interface GigabitEthernet1
 description ** To Internet **
 ip address 192.168.255.254 255.255.255.0
 ip nat outside
 no shutdown
!

ip route 0.0.0.0 0.0.0.0 192.168.255.1

end

write memory

C8000VからInternet側への疎通確認

C8000VからGoogle Public DNS (8.8.8.8)へpingを打ち、Internet側への疎通性がある点を確認しておきます。

ping 8.8.8.8

IOxの有効化

Enerprise AgentのDockerイメージをIOS-XE上で動作せるためにIOxの機能を有効化します。

configure terminal

iox

end

write memory

IOxサービスの状態確認

show iox-service コマンドでIOxサービスの状態を確認できます。
IOx service (CAF)IOx service (IOxman)Running になっているかを確認します。

cat8000v-0#show iox-service

IOx Infrastructure Summary:
---------------------------
IOx service (CAF)              : Running
IOx service (HA)               : Not Supported 
IOx service (IOxman)           : Running 
IOx service (Sec storage)      : Not Supported 
Libvirtd 5.5.0                 : Running

cat8000v-0#

Enterprise Agent向けの内部ネットワークの設定

Enterprise AgentのDockerコンテナが所属される内部ネットワークを設定します。 C8000Vでは VirtualPortGroup を用いて内部ネットワークを作成します。Ciscoバイスによっては AppGigabitEthernet を用いるパターンもあるため混同しないように注意してください。
また、アドレス空間が重複しにくいように専用のVRFを割り当てています。

configure terminal

vrf definition Container
 rd 1:1
 !
 address-family ipv4
 exit-address-family
!

interface VirtualPortGroup0
 vrf forwarding Container
 ip address 100.64.0.254 255.255.255.0
 ip nat inside
 no shutdown
!

ip access-list standard Container_Segment
 10 permit 100.64.0.0 0.0.0.255
!

ip nat inside source list Container_Segment interface GigabitEthernet1 vrf Container overload

ip route vrf Container 0.0.0.0 0.0.0.0 GigabitEthernet1 192.168.255.1 global

end

write memory

ThousandEyesのEnterprise Agent向けの設定

現段階でEnterprise Agentの受け入れ準備ができたため、Enterprise Agentの導入を行っていきます。

C8000VのDNSの設定

Internet上からEnterprise AgentのDockerイメージのダウンロードするために、C8000VでGoogle Public DNS (8.8.8.8, 8.8.4.4)を名前解決先として指定しています。 予め自前のFile Serverを用意していて名前解決が不要な場合は、DNSの設定は飛ばしてください。

configure terminal

ip name-server 8.8.8.8 8.8.4.4

end

write memory

Enterprise Agentのダウンロードとインストール

Enterprise Agentのダウンロードは特権モードで作業を行います。
本記事ではInternet上からダウンロードを行います。URLはVersion 4.2.2 向けになっているため適宜修正してください。

app-hosting install によるダウンロードとインストール

app-hosting install コマンドでURLを直接指定して、ダウンロードとインストールを同時に実行します。
筆者は app-hosting install コマンドでのダウンロードに失敗したため、後述の copy コマンドで実行しなおしました。

app-hosting install appid TE_Enterprise_Agent package https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar
copy コマンドによるダウンロードと、app-hosting install によるインストール

筆者の場合は app-hosting install コマンドによるダウンロードに失敗して、下記のようなメッセージが表示されました。 そのため、回避策として copy コマンドで bootflash: に一度格納してから、app-hosting install によるインストールを行いました。

cat8000v-0#$terprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar     
Installing package 'https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar' for 'TE_Enterprise_Agent'. Use 'show app-hosting list' for progress.

cat8000v-0#
*Jun  5 13:28:33.847: %IM-5-IOX_URL_COPY_MSG: R0/0: ioxman: URL Copy: failed to download https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar
*Jun  5 13:28:3

copy コマンドで bootflash: に一度格納します。URLはVersion 4.2.2 向けになっているため適宜修正してください。 ファイルの保存先も聞かれるので適宜入力します。

copy https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar bootflash:

copy コマンドの実行が完了後は、ファイルがダウンロードされているかを確認します。

show bootflash: | include thousandeyes-enterprise-agent

app-hosting install で先ほどはURLを直接してしておりましたが、今度はローカル ファイルで指定してインストールします。
ファイル名はVersion 4.2.2 向けになっているため適宜修正してください。

app-hosting install appid TE_Enterprise_Agent package bootflash:thousandeyes-enterprise-agent-4.2.2.cisco.tar

Dockerイメージがデプロイされたかを確認します。

show app-hosting list 

下記のように StateDEPLOYED になっているか確認します。

cat8000v-0#show app-hosting list 
App id                                   State
---------------------------------------------------------
TE_Enterprise_Agent                      DEPLOYED

cat8000v-0#

Dockerコンテナの起動設定

ThousandEyesのDockerコンテナを起動するための設定を行います。本記事では下記のように設定しております。

設定項目 設定値 備考
appid TE_Enterprise_Agent
IP Address (guest-ipaddress) 100.64.0.123
Subnet Mask (netmask) 255.255.255.0
Gateway (app-default-gateway) 100.64.0.254
EAGENT_ACCOUNT_TOKEN 適宜修正 YOUR_TOKEN の部分を修正してください。
Hostname (hostname) te-agent01
Primary DNS Server (name-server0) 8.8.8.8 Google Public DNSを指定しています。適宜修正してください。
Secondary DNS Server (name-server1) 8.8.4.4 Google Public DNSを指定しています。適宜修正してください。

忘れずに TEAGENT_ACCOUNT_TOKEN=YOUR_TOKENトークン指定箇所を修正してください。

YOUR_TOKEN の部分は、事前に控えていた下記の画像の箇所にある Account Group Token の情報で書き換えます。

Account Group Token

configure terminal

app-hosting appid TE_Enterprise_Agent
 app-vnic gateway1 virtualportgroup 0 guest-interface 0
  guest-ipaddress 100.64.0.123 netmask 255.255.255.0
 app-default-gateway 100.64.0.254 guest-interface 0
 app-resource docker
  prepend-pkg-opts
  run-opts 1 "-e TEAGENT_ACCOUNT_TOKEN=YOUR_TOKEN"
  run-opts 2 "--hostname te-agent01"
 name-server0 8.8.8.8
 name-server1 8.8.4.4

end

write memory

ThousandEyesのDockerコンテナを起動させます。

app-hosting activate appid TE_Enterprise_Agent

app-hosting start appid TE_Enterprise_Agent

show app-hosting list コマンドを実行して StateRUNNING になっているか確認します。

cat8000v-0#show app-hosting list 
App id                                   State
---------------------------------------------------------
TE_Enterprise_Agent                      RUNNING

cat8000v-0#

show app-hosting detail コマンドを実行すると、下記のように詳細な情報を確認できます。

cat8000v-0#show app-hosting detail
App id                 : TE_Enterprise_Agent
Owner                  : iox
State                  : RUNNING
Application
  Type                 : docker
  Name                 : ThousandEyes Enterprise Agent
  Version              : 4.2.2
  Description          : 
  Author               : ThousandEyes <support@thousandeyes.com>
  Path                 : bootflash:thousandeyes-enterprise-agent-4.2.2.cisco.tar
  URL Path             : 
Activated profile name : custom

Resource reservation
  Memory               : 500 MB
  Disk                 : 1 MB
  CPU                  : 1850 units
  CPU-percent          : 53 %
  VCPU                 : 1

Platform resource profiles
  Profile Name                  CPU(unit)  Memory(MB)  Disk(MB)
  --------------------------------------------------------------
          
Attached devices
  Type              Name               Alias
  ---------------------------------------------
  serial/shell     iox_console_shell   serial0
  serial/aux       iox_console_aux     serial1
  serial/syslog    iox_syslog          serial2
  serial/trace     iox_trace           serial3

Network interfaces
   ---------------------------------------
eth0:
   MAC address         : 52:54:dd:cd:9d:d3
   IPv6 address        : ::
   Network name        : VPG0


Docker
------
Run-time information
  Command              : 
  Entry-point          : /sbin/my_pre_init 
  Run options in use   : -e TEAGENT_ACCOUNT_TOKEN=YOUR_TOKEN --hostname te-agent01
  Package run options  : -e TEAGENT_ACCOUNT_TOKEN=TOKEN_NOT_SET --hostname=$(SYSTEM_NAME) -e TEAGENT_PROXY_TYPE=DIRECT -e TEAGENT_PROXY_LOCATION= -e TEAGENT_PROXY_USER= -e TEAGENT_PROXY_AUTH_TYPE= -e TEAGENT_PROXY_PASS= -e TEAGENT_PROXY_BYPASS_LIST= -e TEAGENT_KDC_USER= -e TEAGENT_KDC_PASS= -e TEAGENT_KDC_REALM= -e TEAGENT_KDC_HOST= -e TEAGENT_KDC_PORT=88 -e TEAGENT_KERBEROS_WHITELIST= -e TEAGENT_KERBEROS_RDNS=1 -e PROXY_APT= -e APT_PROXY_USER= -e APT_PROXY_PASS= -e APT_PROXY_LOCATION= -e TEAGENT_AUTO_UPDATES=1
Application health information
  Status               : 0
  Last probe error     : 
  Last probe output    : 


cat8000v-0#

Dockerコンテナ起動時のトラブルシューティング

Dockerコンテナの起動時に問題が発生してる可能性があれば、Consoleに接続してエラー ログが出ているか確認します。

app-hosting connect appid TE_Enterprise_Agent console 

Ctrl-Cの連続3回押し (^c^c^c) でConsoleから抜けられます。

cat8000v-0#app-hosting connect appid TE_Enterprise_Agent console 
Connected to appliance. Exit using ^c^c^c
Clear existing connection in case of failure

^C^Ccat8000v-0#

筆者が確認した際は、正常に起動していると対話入力が可能なプロンプトは出ていませんでした。 また、Dockerコンテナに渡す引数に問題がありそうな際は、起動時にエラーが表示される場合もありました。

ThousandEyes側でのEnterprise Agentの登録確認

メニュー: Cloud & Enterprise Agents > Agent Settings より Enterprise Agents タブ > Agents タブと順に開き、Enterprise Agentが登録されたかを確認します。

ThousandEyes側でのEnterprise Agentの登録確認

関連ドキュメント

2022年09月頃時点で、Catalyst 8000Vを明確にサポートしてる旨の記述はなかったので最新のサポート状況を適宜確認してください。

docs.thousandeyes.com