systemctl start openvswitch systemctl start ovn-northd
ovn-nbctl set-connection ptcp:6641
ovn-sbctl set-connection ptcp:6642 ovs-vsctl set open . external_ids:system-id=hv1 external_ids:ovn-remote=tcp:42.42.42.1:6642 external_ids:ovn-encap-type=geneve external_ids:ovn-encap-ip=42.42.42.1 systemctl restart ovn-controller
ip netns add server0
ip link add veth0_s0 type veth peer name veth0_s0_p
ip link set veth0_s0 netns server0
ip netns exec server0 ip link set lo up
ip netns exec server0 ip link set veth0_s0 up
ip netns exec server0 ip link set veth0_s0 address 00:00:00:01:01:02
ip netns exec server0 ip addr add 172.16.2.1/24 dev veth0_s0
ip netns exec server0 ip addr add 2001::1/64 dev veth0_s0
ip netns exec server0 ip route add default via 172.16.2.254 dev veth0_s0
ip netns exec server0 ip -6 route add default via 2001::a dev veth0_s0
ip netns add server2
ip link add veth0_s2 type veth peer name veth0_s2_p
ip link set veth0_s2 netns server2
ip netns exec server2 ip link set lo up
ip netns exec server2 ip link set veth0_s2 up
ip netns exec server2 ip link set veth0_s2 address 00:00:00:01:01:03
ip netns exec server2 ip addr add 172.16.2.2/24 dev veth0_s2
ip netns exec server2 ip addr add 2001::2/64 dev veth0_s2
ip netns exec server2 ip route add default via 172.16.2.254 dev veth0_s2
ip netns exec server2 ip -6 route add default via 2001::a dev veth0_s2
ovs-vsctl add-port br-int veth0_s0_p
ip link set veth0_s0_p up
ovs-vsctl set interface veth0_s0_p external_ids:iface-id=ls2p1
ovs-vsctl add-port br-int veth0_s2_p
ip link set veth0_s2_p up ovs-vsctl set interface veth0_s2_p external_ids:iface-id=ls2p2
ovn-nbctl ls-add ls2 ovn-nbctl lsp-add ls2 ls2p1
ovn-nbctl lsp-set-addresses ls2p1 00:00:00:01:01:02
ovn-nbctl lsp-add ls2 ls2p2
ovn-nbctl lsp-set-addresses ls2p2 00:00:00:01:01:03
ovn-nbctl lsp-add ls2 ls2-vir
ovn-nbctl lsp-set-addresses ls2-vir '00:00:00:01:01:10 172.16.1.10'
ovn-nbctl lsp-set-type ls2-vir virtual ovn-nbctl set logical_switch_port ls2-vir options:virtual-ip=172.16.1.10
ovn-nbctl set logical_switch_port ls2-vir options:virtual-parents=ls2p1,ls2p2
# ovn-sbctl list port_binding
ovn-sbctl --bare --columns virtual_parent find port_binding logical_port=ls2-vir
ip netns exec server0 cat <<-EOF > garp.py
from scapy.all import * sendp(Ether(src="00:00:00:01:01:02",dst="ff:ff:ff:ff:ff:ff")/ARP(op=1,hwsrc="00:00:00:01:01:02",hwdst="00:00:00:00:00:00",psrc="172.16.1.10",pdst="172.16.1.10"),iface="veth0_s0")
EOF
cat garp.py
ip netns exec server0 cat <<-EOF > garp2.py
from scapy.all import * sendp(Ether(src="00:00:00:01:01:03",dst="ff:ff:ff:ff:ff:ff")/ARP(op=1,hwsrc="00:00:00:01:01:03",hwdst="00:00:00:00:00:00",psrc="172.16.1.10",pdst="172.16.1.10"),iface="veth0_s2")
EOF
cat garp2.py
ip netns exec server0 python garp.py
# ovn-sbctl list port_binding
ovn-sbctl --bare --columns virtual_parent find port_binding logical_port=ls2-vir
ip netns exec server2 python garp2.py
# ovn-sbctl list port_binding
ovn-sbctl --bare --columns virtual_parent find port_binding logical_port=ls2-vir