Skip to content

Pyats Ixia#

sample#

pyatsとIxNetwork APIを使用してIXIAの設定ファイルを読み込み、トラフィックを開始するサンプルコードを以下に示します。この例では、"test.ixncfg"という設定ファイルを読み込んでいます。

from pyats import aetest
from pyats import topology
from pyats.datastructures import AttrDict

class IxiaTestcase(aetest.Testcase):

    @aetest.setup
    def connect_to_ixia(self, testbed):
        self.ixia = testbed.devices['ixia']
        self.ixia.connect()

    @aetest.test
    def test_ixia_traffic(self):
        # IxNetworkに接続する
        ixnetwork = self.ixia.api.assistant.Session.get_session()

        # 設定ファイルをアップロードする
        ixnetwork.ResourceManager.ImportConfigFile(FilePath='test.ixncfg')
        ixnetwork.WaitForComplete()

        # ポートアサインを行う
        port_map = ixnetwork.Topology.PortMap.find()[0]
        port_map.EnabledPorts = ['192.168.1.1/1/1', '192.168.1.1/1/2']

        ixnetwork.StartAllProtocols()
        ixnetwork.WaitForComplete()

        # トラフィックのスタートを行う
        traffic_item = ixnetwork.Traffic.TrafficItem.find()[0]
        ixnetwork.Traffic.StartStatelessTrafficBlocking()

        # Flow statisticsの取得
        flow_statistics = ixnetwork.Statistics.View.find(ViewName='Flow Statistics')[0]
        stats = flow_statistics.Rows
        for stat in stats:
            print('Flow Statistics: {}'.format(stat.ColumnData))

        # Traffic Itemの取得
        traffic_item_statistics = ixnetwork.Statistics.View.find(ViewName='Traffic Item Statistics')[0]
        stats = traffic_item_statistics.Rows
        for stat in stats:
            print('Traffic Item Statistics: {}'.format(stat.ColumnData))

    @aetest.cleanup
    def disconnect_from_ixia(self):
        self.ixia.disconnect()

if __name__ == '__main__':
    testbed = topology.loader.load('testbed.yaml')
    aetest.main(testbed=testbed)
devices:
  IxNetwork:
    os: 'IxNetwork'
    type: 'ixnetwork'
    connections:
      restpy:
        class: 'ixnetwork_restpy.Connection'
        ip: '192.168.1.1'
        port: 443
        secure: true
        username: 'admin'
        password: 'admin'

このコードは、pyATSを使用してIxNetworkを制御し、トラフィックを生成して、Flow StatisticsとTraffic Itemの統計情報を取得する例を示しています。

最初に、Ixiaのデバイスに接続するためのconnect_to_ixia()メソッドを定義します。このメソッドでは、testbed.yamlファイルで定義されたIxNetworkデバイスに接続しています。

次に、トラフィックを生成するためのtest_ixia_traffic()メソッドを定義します。このメソッドでは、IxNetworkに接続して、事前に定義された設定ファイル(test.ixncfg)をアップロードします。その後、ポートアサインを行い、すべてのプロトコルを開始します。トラフィック生成には、TrafficモジュールのStartStatelessTrafficBlocking()メソッドを使用しています。このメソッドは、トラフィックを開始して、ブロックするまで待機します。Flow StatisticsとTraffic Itemの統計情報は、StatisticsモジュールのViewオブジェクトを使用して取得します。Flow Statisticsは、トラフィックが生成されたフローの統計情報を提供します。Traffic Item Statisticsは、Traffic Itemの統計情報を提供します。統計情報は、リストとして取得できます。

最後に、disconnect_from_ixia()メソッドを定義して、IxNetworkデバイスからの接続を切断します。

このコードは、IxNetworkを制御して、トラフィックを生成して、統計情報を取得する基本的な例です。これをベースに、さまざまなテストケースを作成することができます。