1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Robot Frameworkで始めるネットワークテスト自動化(第2回)

1
Last updated at Posted at 2025-12-15

前回、オープンソースの Robot Framework を使った簡単な状態確認を行いましたが、今回はもう少し踏み込んで、ネットワークのテストでよく行う、冗長ルートの切替りの際の断時間を測定を模擬を Containerlab でやってみます

▼ 第1回の記事

今回の環境

今回は前回のコンテナに追加で、トラフィックを流すための ixia-c を追加してます

  • Ubuntu : 24.04.2 LTS
  • Containerlab 0.71.0
  • Arista cEOS : 4.35.0.1F
  • ixia-c : 1.42.0-4

ixia-c はコンテナベースのネットワークテストツールで、Open Traffic Generator(OTG)APIに準拠したトラフィックジェネレーターおよびプロトコルエミュレーターです
ixia-cには無償で利用できる Community Edition があり今回はこちらを利用してます

詳しくはこちらの過去の記事をご参照ください

今回は以下のように Containerlab に以下の構築してます

  • cEOS を 2台設置して、eth1eth2の2本接続し経路冗長
    • OSPF で cost に差をつけて正常時はeth1を通るようにする
  • Robot Framework 用のコンテナを設置
  • ixia-cを cEOS の 2台を挟むように接続してトラフィックを流せるようにする

image.png

IPアドレスは以下のようにしてます
image.png

Containerlab 用の yml など各ファイルは以下の通りです

▼ Containerlab 用の yml clab-rf-ospf-failover.clab.yml

環境構築

Containerlab のインストールと Arista cEOS の準備は前回と同じため省略します (第1回で実施していれば今回は作業不要です)
Robot Framework サーバは、ixia-c を API で制御するための snappi が追加で必要なため再ビルドします
ixia-c についてはcontainerlab deployすると自動でダウンロードするため特に事前準備は不要です

Robot Framework サーバのビルド

以下の手順でまずはRobot Framework サーバのコンテナをビルドします

# 今回の構成やコンフィグを一式 GitHub からダウンロード
git clone --depth=1 https://github.com/katsumi2018/clab-robotframework-ospf-failover.git

# ディレクトリ移動
cd clab-robotframework-ospf-failover

# ビルド
docker build -f Dockerfile.robot -t robotframework:latest .

docker imagesコマンドで以下のように表示されれば準備完了です

$ docker images
REPOSITORY       TAG         IMAGE ID       CREATED        SIZE
ceos             4.35.0.1F   fe76e130493f   2 hours ago    2.52GB
robotframework   latest      297b60fd395c   4 hours ago    212MB$

containerlab deploy

containerlab deployで検証環境が起動します

containerlab deploy

初回は ixia-c のダウンロードがあります。また、起動は時間がかかることがあります

以下のような表示が出れば OK です
image.png

Robot Framework で自動テスト実行してみる

今回実施する内容

今回は、ルート切替りの断時間を測定します
はじめはインターフェースを shutdown して確認しようとしましたが、今回の環境だと停止時間なしで切替ってしまって断時間を測るイメージが持てなかったため、以下を実施してサイレント故障のように無理やり見立てて断時間を測定しました

  • ixia-c からトラフィックを、cEOS-1 → cEOS-2 の方向で 10pps で送信する、正常時 cEOS 間は eth1 を通る
  • cEOS-2 の eth1 にすべての IP パケットを deny するフィルタを適用してeth1で受信するトラフィックを止める
  • cEOS-2 の eth1 の OSPF の Hello インターバルのタイマーを変更
  • cEOS-1 で eth1 の OSPF ネイバーダウンとなり、eth2 にルートが切替りトラフィックが復旧する。パケットロス数から断時間を測定する

image.png

テスト実行

ChatGPTさんに今回実施する内容を書いてもらいました

# Robot Framework のコンテナへログイン
docker exec -it clab-ospf-failover-ixia-rf bash

# Robot Framework のテスト(.robot ファイル)を実行
# (/opt/robot/tests/ 内の .robot ファイルを実行)
robot -d /opt/robot/results /opt/robot/tests/

実行すると以下のような結果が表示されます、正常な場合は「PASS」が表示されます

# robot -d /opt/robot/results /opt/robot/tests/
===============================================================
Tests
===============================================================
Tests.Failover
===============================================================
OSPF Failover Outage Measurement                       ........PASS: OSPF up 確認
OSPF Failover Outage Measurement                       .....PASS: warm-up (ARP 学習 + 正常確認)
OSPF Failover Outage Measurement                       .PASS: 測定用トラフィック安定
..PASS: 測定開始メトリクス取得
OSPF Failover Outage Measurement                       ...PASS: OSPF Helloインターバル変更&IPフィルター設定 (ceos2 Ethernet1)
..PASS: Traffic 復旧・安定
..PASS: 測定終了メトリクス取得
.dtx=127, drx=94, lost_frames=33, outage_sec=3.3
OSPF Failover Outage Measurement                       ....PASS: Outage 計算・検証
OSPF Failover Outage Measurement                       .PASS: OTG Stop
OSPF Failover Outage Measurement                       | PASS |
PacketLoss=33 frames, Outage=3.3 sec
---------------------------------------------------------------
Tests.Failover                                         | PASS |
1 test, 1 passed, 0 failed
===============================================================
Tests                                                  | PASS |
1 test, 1 passed, 0 failed
===============================================================
Output:  /opt/robot/results/output.xml
Log:     /opt/robot/results/log.html
Report:  /opt/robot/results/report.html
#

ルート切替りの断時間は lost_frames=33, outage_sec=3.3 の部分となり、今回は 3.3 秒停止になります。今回は、OSPF の Hello インターバル 1 秒、Dead インターバル 4 秒の設定ため、cEOS-1 の eth1 の OSPF のネイバーがダウンするのは 3 ~ 4 秒になるので、想定どおりの断時間が得られました

テスト結果確認

ブラウザから http://<サーバのIP>:8080/ にアクセスすると以下のような表示がされます

image.png

report.htmlを選択すると以下のような画面が表示されてすべてPASSしてることがわかります
また、「All」を選択すると「Message」に今回測定できた断時間を確認することができます
image.png

こちらの「Message」で断時間を確認
image.png

summary.jsonにも今回の断時間が JSON 形式で結果が出力されます

{"test":"OSPF Failover Outage Measurement","loss_frames":33,"outage_sec":3.3,"pps":10}

もう一度実施したい場合は、cEOS-2 にログインして以下の設定で正常時に戻してから実施してください

cEOS-2への戻し設定
interface Ethernet1
   ip ospf hello-interval 1
   no ip access-group Et1-BLOCK in

最後に

Robot Framework で OSPF のルート切替りの断時間測定を自動化を実施してみました

テストでやりたい内容を定義する.robot ファイルは、Robot Framework の独自言語のため、新規に作成するのは骨が折れますが、生成 AI の力を借りると意外とすんなりやりたいことができました

生成 AI めちゃ便利

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?