knqyf263's blog

自分のためのメモとして残しておくためのブログ。

Open vSwitchでポートミラーリング設定

前回の記事で設定したOpen vSwtichでポートミラーリングしてみます。 環境は前回と同様、Debian 7.2上で構築したKVMでVMが動作しているとします。 今回はhost01がvnet1に接続され、host02がvnet2に接続されている状況を想定しています。 また、以下の作業は全てrootとして行っています。

環境

OS:Debian 7.2
Open vSwitch:1.4.2

host01:vnet1
host02:vnet2

参考にしたサイト

設定

ovsの状態の確認

vnet1vnet2ovsbr0に接続されていることを確認する。

# ovs-vsctl show
238d066c-8354-4978-a9f4-39a98fa2d2e9
    Bridge "ovsbr0"
        Port "eth0"
            Interface "eth0"
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "vnet1"
            Interface "vnet1"
        Port "vnet2"
            Interface "vnet2"
    ovs_version: "1.4.2"
ミラーリングの設定の確認

何も表示されないことを確認する。

# ovs-vsctl list Mirror 
#
ミラーリングの設定を作成する
# ovs-vsctl -- set bridge ovsbr0 mirrors=@m -- --id=@vnet1 get Port vnet1 -- --id=@vnet2 get Port vnet2 -- --id=@m create Mirror name=mirror_test select-dst-port=@vnet1 select-src-port=@vnet1 output-port=@vnet2 
b073490c-5a64-4d80-93ca-534f29c09027

上記設定では、vnet1を通るパケットを全てvnet2にミラーリングしている。
具体的に説明すると、set bridge [設定するbridge名]。今回はovsbr0
次に、get Portによってvnet1vnet2のidを取得する。
create Mirror name="ミラーリング名”でMirrorの名前を決める。
select-dst-portは、そのポートから出て行くパケット、select-src-portは、そのポートに入ってくるパケットを指す。今はどちらもvnet1にしているので、どちらのパケットも対象となっている。
最後にoutput-portでミラーリングしたパケットを出力する場所を決めている。
成功するとidが出力される。

ミラーリングの設定を確認する
# ovs-vsctl list Mirror 
_uuid               : b073490c-5a64-4d80-93ca-534f29c09027
external_ids        : {}
name                : mirror_test
output_port         : 6b80f606-516c-4304-91a3-0217b02e408b
output_vlan         : []
select_all          : false
select_dst_port     : [b3ef508f-cdca-4a42-921e-9a96fffff98b]
select_src_port     : [b3ef508f-cdca-4a42-921e-9a96fffff98b]
select_vlan         : []
statistics          : {tx_bytes=24430, tx_packets=380}
ミラーリングの設定削除

ミラーリングの設定が不要となった場合に全設定を削除するコマンドは以下。

# ovs-vsctl clear bridge ovsbr0 mirrors