show_description でスイッチの情報を取得する

前回の flow_dumper に似たアプリとして show_description があります。さっそく起動してみましょう。

$ ./trema run -c ../apps/routing_switch/routing_switch.conf -d
$ TREMA_HOME=`pwd` ../apps/show_description/show_description
Manufacturer description: Nicira Networks, Inc.
Hardware description: Open vSwitch
Software description: 1.2.2
Serial number: None
Human readable description of datapath: None
Datapath ID: 0xe0
Port no: 2(0x2)(Port up)
  Hardware address: ce:b5:29:d7:71:b8
  Port name: trema0-0
Port no: 65534(0xfffe:Local)(Port down)
  Hardware address: f6:41:af:e5:7f:bb
  Port name: vsw_0xe0
Port no: 1(0x1)(Port up)
  Hardware address: 92:73:bd:f9:76:bf
  Port name: trema1-0

routing_switch.conf ではネットワークエミュレーション機能により、openvswich 一台が起動するよう設定されています。ここで起動された openvswitch に関する description が show_description コマンドで取得できていることが確認できます。OpenFlow スイッチが複数接続している環境では、それぞれの description を表示することができます。

このアプリでは、stats_request メッセージの OFPST_DESC タイプで情報を取得しています。trema では create_desc_stats_request() 関数が用意されており、この関数で対応する OpenFlow メッセージを作成することができます。