--- /dev/null
+ovs
\ No newline at end of file
--- /dev/null
+# install ovs
+
+```shell
+./ovs-install.sh
+```
+
+# start ovs
+
+```shell
++ mkdir -p /usr/local/etc/openvswitch
++ pushd ovs
+~/hack/linuxyz/br-ovs/ovs ~/hack/linuxyz/br-ovs
++ sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
++ popd
+~/hack/linuxyz/br-ovs
++ sudo /usr/local/share/openvswitch/scripts/ovs-ctl start
+ * Starting ovsdb-server
+ * system ID not configured, please use --system-id
+ * Configuring Open vSwitch system IDs
+ * Inserting openvswitch module
+ * Starting ovs-vswitchd
+ * Enabling remote OVSDB managers
++ sudo ovs-vsctl --no-wait init
+
+```
+
+# br
+
+```shell
+[ ID] Interval Transfer Bitrate Retr
+[ 5] 0.00-60.00 sec 97.0 GBytes 13.9 Gbits/sec 48 sender
+[ 5] 0.00-60.00 sec 97.0 GBytes 13.9 Gbits/sec receiver
+[ 7] 0.00-60.00 sec 99.2 GBytes 14.2 Gbits/sec 5 sender
+[ 7] 0.00-60.00 sec 99.2 GBytes 14.2 Gbits/sec receiver
+[ 9] 0.00-60.00 sec 96.9 GBytes 13.9 Gbits/sec 4 sender
+[ 9] 0.00-60.00 sec 96.9 GBytes 13.9 Gbits/sec receiver
+[ 11] 0.00-60.00 sec 97.7 GBytes 14.0 Gbits/sec 88 sender
+[ 11] 0.00-60.00 sec 97.7 GBytes 14.0 Gbits/sec receiver
+[SUM] 0.00-60.00 sec 391 GBytes 56.0 Gbits/sec 145 sender
+[SUM] 0.00-60.00 sec 391 GBytes 56.0 Gbits/sec receiver
+```
+
+```shell
+[ ID] Interval Transfer Bitrate Retr
+[ 5] 0.00-60.00 sec 110 GBytes 15.8 Gbits/sec 5 sender
+[ 5] 0.00-60.00 sec 110 GBytes 15.8 Gbits/sec receiver
+[ 7] 0.00-60.00 sec 110 GBytes 15.7 Gbits/sec 9 sender
+[ 7] 0.00-60.00 sec 110 GBytes 15.7 Gbits/sec receiver
+[ 9] 0.00-60.00 sec 113 GBytes 16.1 Gbits/sec 7 sender
+[ 9] 0.00-60.00 sec 113 GBytes 16.1 Gbits/sec receiver
+[ 11] 0.00-60.00 sec 113 GBytes 16.1 Gbits/sec 5 sender
+[ 11] 0.00-60.00 sec 113 GBytes 16.1 Gbits/sec receiver
+[SUM] 0.00-60.00 sec 446 GBytes 63.8 Gbits/sec 26 sender
+[SUM] 0.00-60.00 sec 446 GBytes 63.8 Gbits/sec receiver
+```
+
+# ovs
+
+```shell
+[ ID] Interval Transfer Bitrate Retr
+[ 5] 0.00-60.00 sec 107 GBytes 15.3 Gbits/sec 243 sender
+[ 5] 0.00-60.00 sec 107 GBytes 15.3 Gbits/sec receiver
+[ 7] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec 476 sender
+[ 7] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec receiver
+[ 9] 0.00-60.00 sec 105 GBytes 15.0 Gbits/sec 55 sender
+[ 9] 0.00-60.00 sec 105 GBytes 15.0 Gbits/sec receiver
+[ 11] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec 5 sender
+[ 11] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec receiver
+[SUM] 0.00-60.00 sec 427 GBytes 61.2 Gbits/sec 779 sender
+[SUM] 0.00-60.00 sec 427 GBytes 61.1 Gbits/sec receiver
+```
+
+```shell
+[ ID] Interval Transfer Bitrate Retr
+[ 5] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec 4 sender
+[ 5] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec receiver
+[ 7] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec 6 sender
+[ 7] 0.00-60.00 sec 108 GBytes 15.4 Gbits/sec receiver
+[ 9] 0.00-60.00 sec 107 GBytes 15.4 Gbits/sec 1 sender
+[ 9] 0.00-60.00 sec 107 GBytes 15.4 Gbits/sec receiver
+[ 11] 0.00-60.00 sec 107 GBytes 15.3 Gbits/sec 6 sender
+[ 11] 0.00-60.00 sec 107 GBytes 15.3 Gbits/sec receiver
+[SUM] 0.00-60.00 sec 429 GBytes 61.5 Gbits/sec 17 sender
+[SUM] 0.00-60.00 sec 429 GBytes 61.5 Gbits/sec receiver
+```
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+set -exo pipefail
+
+sudo apt update
+sudo apt install build-essential make autoconf libtool
+git clone https://github.com/openvswitch/ovs.git
+
+cd ovs
+
+git switch -c myovs origin/branch-3.6
+
+./boot.sh
+
+./configure
+
+make
+
+sudo make install
+
--- /dev/null
+#!/bin/bash
+
+set -exo pipefail
+
+mkdir -p /usr/local/etc/openvswitch
+
+pushd ovs
+
+sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
+
+popd
+
+sudo /usr/local/share/openvswitch/scripts/ovs-ctl start
+
+sudo ovs-vsctl --no-wait init
+
--- /dev/null
+#!/bin/bash
+
+
+setup(){
+ sudo ip netns add net1
+ sudo ip netns add net2
+ sudo ip link add dev veth11 type veth peer name veth12 netns net1
+ sudo ip link add dev veth21 type veth peer name veth22 netns net2
+ sudo ip netns exec net1 ip addr add 192.168.64.12/24 dev veth12
+ sudo ip netns exec net2 ip addr add 192.168.64.22/24 dev veth22
+ sudo ip netns exec net1 ip link set veth12 up
+ sudo ip netns exec net2 ip link set veth22 up
+ sudo sysctl -w net.ipv4.ip_forward=1
+}
+
+br_test(){
+ sudo ip link add lx-br0 type bridge stp_state 0
+ sudo ip link set veth11 master lx-br0
+ sudo ip link set veth21 master lx-br0
+ sudo ip link set up veth11
+ sudo ip link set up veth21
+ sudo ip link set up lx-br0
+ sudo ip netns exec net2 iperf3 -s 192.168.64.22 > /dev/null 2>&1 &
+ sudo ip netns exec net1 iperf3 -c 192.168.64.22 -t 60 -i 1 -P 4
+ sudo ip netns exec net2 pkill iperf3
+ sudo ip link del lx-br0
+}
+
+
+ovs_test(){
+ sudo ovs-vsctl add-br ovs-br0
+ sudo ovs-vsctl add-port ovs-br0 veth11
+ sudo ovs-vsctl add-port ovs-br0 veth21
+ sudo ip link set up veth11
+ sudo ip link set up veth21
+ sudo ip link set ovs-br0 up
+ sudo ip netns exec net2 iperf3 -s 192.168.64.22 > /dev/null 2>&1 &
+ sudo ip netns exec net1 iperf3 -c 192.168.64.22 -t 60 -i 1 -P 4
+ sudo ip netns exec net2 pkill iperf3
+ sudo ovs-vsctl del-br ovs-br0
+
+}
+
+cleanup(){
+ sudo ip netns del net1
+ sudo ip netns del net2
+}
+
+setup
+br_test
+cleanup
+setup
+ovs_test
+cleanup
\ No newline at end of file
+++ /dev/null
-ovs
\ No newline at end of file
+++ /dev/null
-#!/bin/bash
-
-sudo apt update
-sudo apt install build-essential make autoconf libtool
-git clone https://github.com/openvswitch/ovs.git
-
-cd ovs
-
-git switch -c myovs origin/branch-3.6
-
-./boot.sh
-
-./configure
-
-make
-
-sudo make install
-
+++ /dev/null
-#!/bin/bash
-
-mkdir -p /usr/local/etc/openvswitch
-
-sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
-
-sudo /usr/local/share/openvswitch/scripts/ovs-ctl start
-
-sudo ovs-vsctl --no-wait init
-
-# sudo ovs-vswitchd --pidfile --detach --log-file
\ No newline at end of file
set -exo pipefail
-sudo ovs-vsctl add-br ovs-br0
+ovs_test(){
+ sudo ovs-vsctl add-br ovs-br0
+ sudo ip netns add net1
+ sudo ip netns add net2
+ sudo ip link add dev veth11 type veth peer name veth12 netns net1
+ sudo ip link add dev veth21 type veth peer name veth22 netns net2
+ sudo ovs-vsctl add-port ovs-br0 veth11
+ sudo ovs-vsctl add-port ovs-br0 veth21
+ sudo ip netns exec net1 ip addr add 192.168.64.12/24 dev veth12
+ sudo ip netns exec net2 ip addr add 192.168.64.22/24 dev veth22
+ sudo ip netns exec net1 ip link set veth12 up
+ sudo ip netns exec net2 ip link set veth22 up
+ sudo ip link set up veth11
+ sudo ip link set up veth21
+ sudo ip link set ovs-br0 up
+ sudo sysctl -w net.ipv4.ip_forward=1
+}
+
+br_test(){
+ sudo ovs-vsctl add-br ovs-br0
+ sudo ip netns add net1
+ sudo ip netns add net2
+ sudo ip link add dev veth11 type veth peer name veth12 netns net1
+ sudo ip link add dev veth21 type veth peer name veth22 netns net2
+ sudo ovs-vsctl add-port ovs-br0 veth11
+ sudo ovs-vsctl add-port ovs-br0 veth21
+ sudo ip netns exec net1 ip addr add 192.168.64.12/24 dev veth12
+ sudo ip netns exec net2 ip addr add 192.168.64.22/24 dev veth22
+ sudo ip netns exec net1 ip link set veth12 up
+ sudo ip netns exec net2 ip link set veth22 up
+ sudo ip link set up veth11
+ sudo ip link set up veth21
+ sudo ip link set ovs-br0 up
+ sudo sysctl -w net.ipv4.ip_forward=1
+}
+
+ovs_test
+br_test
-sudo ip netns add net1
-
-sudo ip netns add net2
-
-sudo ip link add dev veth11 type veth peer name veth12 netns net1
-
-sudo ip link add dev veth21 type veth peer name veth22 netns net2
-
-sudo ovs-vsctl add-port ovs-br0 veth11
-
-sudo ovs-vsctl add-port ovs-br0 veth21
-
-sudo ip netns exec net1 ip addr add 192.168.64.12/24 dev veth12
-
-sudo ip netns exec net2 ip addr add 192.168.64.22/24 dev veth22
-
-sudo ip netns exec net1 ip link set veth12 up
-
-sudo ip netns exec net2 ip link set veth22 up
-
-sudo ip link set up veth11
-
-sudo ip link set up veth21
-
-sudo ip link set ovs-br0 up
-
-sudo sysctl -w net.ipv4.ip_forward=1
\ No newline at end of file