Openvswitch Port Mirroring


  There are three hosts, i.e. h1, h2, h3, that are connecting to an openvswitch(s1). We want the port 3 (connecting to h3) to be the mirroring port that can monitor the traffic between h1 and h2.


[Mininet Script]

#!/usr/bin/env python

from mininet.cli import CLI

from import Mininet

from import Link,TCLink,Intf

from mininet.node import Controller


if '__main__' == __name__:

  net = Mininet(link=TCLink)

  h1 = net.addHost('h1')

  h2 = net.addHost('h2')

  h3 = net.addHost('h3')

  s1 = net.addSwitch('s1')

  c0 = net.addController('c0', controller=Controller)

  net.addLink(h1, s1)

  net.addLink(h2, s1)

  net.addLink(h3, s1)


  #open a terminal for s1 and type the following commands

  #ovs-vsctl del-port s1-eth3

  #ovs-vsctl add-port s1 s1-eth3 -- --id=@p get port s1-eth3 -- --id=@m create mirror name=m0 select-all=true output-port=@p -- set bridge s1 mirrors=@m








With this feature, we can install machine learning, IDS/IPS or other mechanism for traffic analysis in h3.




Dr. Chih-Heng Ke (

Department of Computer Science and Information Engineering,

National Quemoy University, Kinmen, Taiwan.