IXIA#
ixnetwork-restpyはIxNetwork APIを使用して、IxNetworkを制御するPythonライブラリです。 以下は、ixnetwork-restpyの基本的な使い方の手順です。
IxNetworkのインストール まず、IxNetworkをダウンロードしてインストールする必要があります。IxNetworkのダウンロードには、 IxiaのWebサイトへのアクセスが必要です。
ライブラリのインストール ixnetwork-restpyを使用するには、Pythonライブラリをインストールする必要があります。 コマンドラインから以下を実行して、必要なライブラリをインストールします。
IxNetworkの起動 次に、IxNetworkを起動してAPIサーバーを有効にする必要があります。IxNetworkの起動は、IxNetwork GUIまたはコマンドラインから実行できます。
コードの書き方 以下のようなPythonスクリプトを書くことで、IxNetworkを制御することができます。
from ixnetwork_restpy import SessionAssistant
# セッションを作成
session_assistant = SessionAssistant(IxNetwork_Tcl='tclsh')
ixnetwork = session_assistant.Ixnetwork
# 接続先を設定
ixnetwork.ResourceManager().Connect(Hostname='192.168.1.1', UserName='admin', Password='admin')
# シナリオをロード
ixnetwork.LoadConfig(FilePath='scenario.ixncfg')
# トポロジを取得
topology = ixnetwork.Topology.find()[0]
# ポートを設定
vport = ixnetwork.Vport.add(Name='Port 1')
vport.Connections.add(Port=ixnetwork.Traffic.TrafficItem[0].EndpointSet[0].Sources[0], \
ConnectedTo=vport.AssignedTo)
# トラフィックを開始
ixnetwork.Traffic.TrafficItem[0].State = 'started'
# セッションを終了
session_assistant.Session.remove()
IxNetworkのREST APIサーバーのポート番号は、IxNetwork GUIのログファイルから調べることができます。ログファイルは、IxNetworkの起動ディレクトリにあるIxNetwork.logという名前のファイルです。
ログファイルをテキストエディタで開き、以下のような行を検索します。
または、REST APIを使用するPythonスクリプトで、REST APIサーバーに接続する際に使用するポート番号を指定することができます。以下は例です。
from ixnetwork_restpy import SessionAssistant
# セッションを作成
session_assistant = SessionAssistant(IxNetwork_Tcl='tclsh', RestPort=11009)
この例では、ポート番号11009でREST APIサーバーが実行されていることを想定しています。必要に応じて、RestPortパラメーターをREST APIサーバーのポート番号に変更してください。
traffic#
以下は、IxNetwork REST APIを使用して、作成されたIxNetworkコンフィグを開いて、トラフィックアイテム名を取得し、トラフィックを流して、止めて、結果を取得する方法の例です。
from ixnetwork_restpy import SessionAssistant
import time
# セッションを作成
session_assistant = SessionAssistant(IpAddress='127.0.0.1', RestPort=60100)
# IxNetwork GUIに接続
ixnetwork = session_assistant.Ixnetwork
# コンフィグファイルを開く
ixnetwork.NewConfig()
# 作成されたコンフィグファイルを読み込む
ixnetwork.LoadConfig('/path/to/config_file.ixncfg')
# トラフィックアイテム名を取得する
traffic_item_name = 'Traffic Item 1'
# トラフィックアイテムを取得する
traffic_item = ixnetwork.Traffic.TrafficItem.find(Name=traffic_item_name)
# トラフィックを開始する
traffic_item.Generate()
time.sleep(10) # トラフィックを10秒間流す
# トラフィックを停止する
traffic_item.StopTrafficBlocking()
time.sleep(2) # トラフィックが停止するのを待つ
# 統計情報を取得する
view_name = 'Flow Statistics'
view_obj = ixnetwork.Statistics.View.find(ViewName=view_name)
view_obj.Refresh()
# 統計情報のテーブルを取得する
table = view_obj.GetTable(TopCount=100, ColumnList=['Tx Frames', 'Rx Frames'])
# テーブルの内容を表示する
for row in table.Rows:
tx_frames = row['Tx Frames']
rx_frames = row['Rx Frames']
print(f"Tx Frames: {tx_frames}, Rx Frames: {rx_frames}")
この例では、IxNetwork REST APIを使用して、作成されたIxNetworkコンフィグを開いて、トラフィックアイテム名を取得し、トラフィックを流して、停止して、結果を取得する方法を示しています。この例では、Traffic Item 1という名前のトラフィックアイテムを実行し、10秒間トラフィックを流し、停止し、統計情報を取得しています。 必要に応じて、トラフィックアイテム名や、トラフィックを流す時間、統計情報を取得するためのビュー名やカラムリストを変更してください。