1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122 | #!/bin/bash
set -x
export OVS_RUNDIR=`pwd`
export OVS_LOGDIR=`pwd`
export OVS_SYSCONFDIR=`pwd`
mkdir -p `pwd`/openvswitch
if [ ! -e openvswitch/conf.db ]; then
ovsdb-tool create openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema
/usr/sbin/ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:$OVS_RUNDIR/db.sock
/usr/sbin/ovs-vswitchd --detach --no-chdir --pidfile --log-file -vvconn -vofproto_dpif -vunixctl --enable-dummy --disable-system
fi
ovs-vsctl del-br br0 | :
ovs-vsctl del-br br1 | :
ovs-vsctl del-br br2 | :
ovs-vsctl --timeout=20 \
-- add-br br0 \
-- set bridge br0 datapath-type=dummy \
fail-mode=secure \
other-config:datapath-id=fedcba9876543210 \
other-config:hwaddr=aa:55:aa:55:00:00 protocols="OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13,OpenFlow14,OpenFlow15,OpenFlow16"
ovs-vsctl -- \
set port br0 other_config:stp-enable=false -- \
set bridge br0 datapath-type=dummy -- \
set bridge br0 stp_enable=true mcast_snooping_enable=true \
other-config:hwaddr=aa:66:aa:66:00:00 -- \
add-br br1 -- \
set port br1 other_config:stp-enable=false -- \
set bridge br1 datapath-type=dummy -- \
set bridge br1 stp_enable=true mcast_snooping_enable=true \
other-config:hwaddr=aa:66:aa:66:00:01 -- \
add-br br2 -- \
set port br2 other_config:stp-enable=false -- \
set bridge br2 datapath-type=dummy -- \
set bridge br2 stp_enable=true mcast_snooping_enable=true \
other-config:hwaddr=aa:66:aa:66:00:02
ovs-appctl vlog/set ofproto_dpif:dbg
ovs-appctl vlog/set ofproto_dpif_xlate:dbg
ovs-ofctl add-flow br0 action=normal
ovs-ofctl add-flow br1 action=normal
ovs-ofctl add-flow br2 action=normal
ovs-vsctl add-port br0 p1 -- \
set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p1.sock ofport_request=1
ovs-vsctl add-port br0 p2 -- \
set interface p2 type=dummy options:stream=unix:$OVS_RUNDIR/p6.sock ofport_request=2
ovs-vsctl add-port br1 p3 -- \
set interface p3 type=dummy options:stream=unix:$OVS_RUNDIR/p1.sock ofport_request=3
ovs-vsctl add-port br1 p4 -- \
set interface p4 type=dummy options:pstream=punix:$OVS_RUNDIR/p4.sock ofport_request=4
ovs-vsctl add-port br2 p5 -- \
set interface p5 type=dummy options:stream=unix:$OVS_RUNDIR/p4.sock ofport_request=5
ovs-vsctl add-port br2 p6 -- \
set interface p6 type=dummy options:pstream=punix:$OVS_RUNDIR/p6.sock ofport_request=6
ovs-appctl netdev-dummy/set-admin-state up
ovs-appctl time/stop
# give time for STP to move initially
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
# give time for STP to synchronize
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl netdev-dummy/receive br0 \
'01005E010101000C29A027D18100000108004500001C000100004002CBCBAC102201E00101011114EEEB00000000'
ovs-appctl time/warp 1000
ovs-appctl netdev-dummy/receive br0 \
'01005E010101000C29A027D18100000108004500001C000100004002CBCBAC102201E00101011114EEEB00000000'
ovs-vsctl del-port br0 p2
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
ovs-appctl time/warp 3000
for i in 0 1 2; do
ovs-appctl fdb/show br$i
ovs-appctl mdb/show br$i
done
|