@@ -21053,6 +21053,68 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/.*error receiving.*/d
2105321053AT_CLEANUP
2105421054])
2105521055
21056+ OVN_FOR_EACH_NORTHD([
21057+ AT_SETUP([NAT with only dnat_and_snat NAT configured: IPv4])
21058+ AT_KEYWORDS([ovnnat])
21059+
21060+ ovn_start
21061+ OVS_TRAFFIC_VSWITCHD_START()
21062+
21063+ ADD_BR([br-int])
21064+ ADD_BR([br-ext])
21065+
21066+ ovs-ofctl add-flow br-ext action=normal
21067+ # Set external-ids in br-int needed for ovn-controller
21068+ ovs-vsctl \
21069+ -- set Open_vSwitch . external-ids:system-id=hv1 \
21070+ -- set Open_vSwitch . external-ids:ovn-remote=unix:$ovs_base/ovn-sb/ovn-sb.sock \
21071+ -- set Open_vSwitch . external-ids:ovn-encap-type=geneve \
21072+ -- set Open_vSwitch . external-ids:ovn-encap-ip=169.0.0.1 \
21073+ -- set Open_vSwitch . external-ids:ovn-bridge-mappings=phynet:br-ext
21074+ -- set bridge br-int fail-mode=secure other-config:disable-in-band=true
21075+
21076+ # Start ovn-controller
21077+ start_daemon ovn-controller
21078+
21079+ check ovn-nbctl lr-add lr1
21080+ check ovn-nbctl ls-add sw0
21081+ check ovn-nbctl ls-add public
21082+
21083+ check ovn-nbctl lrp-add lr1 rp-sw0 00:00:01:01:02:03 192.168.1.1/24
21084+ check ovn-nbctl lrp-add lr1 rp-public 00:00:02:01:02:03 172.16.1.1/24
21085+
21086+ check ovn-nbctl lsp-add-router-port sw0 sw0-rp rp-sw0
21087+ check ovn-nbctl lsp-add-router-port public public-rp rp-public
21088+
21089+ check ovn-nbctl lsp-add-localnet-port public localnet phynet
21090+
21091+ ADD_NAMESPACES(sw01-x)
21092+ ADD_VETH(sw01-x, sw01-x, br-int, "192.168.1.2/24", "f0:00:00:01:02:03", \
21093+ "192.168.1.1")
21094+ check ovn-nbctl lsp-add sw0 sw01-x \
21095+ -- lsp-set-addresses sw01-x "f0:00:00:01:02:03 192.168.1.2"
21096+
21097+ ADD_NAMESPACES(ext-foo)
21098+ ADD_VETH(ext-foo, ext-foo, br-ext, "172.16.1.100/24", "00:10:10:01:02:13", \
21099+ "172.16.1.1")
21100+
21101+ # Create distributed nat and set gw chassis to non-exisrting
21102+ # one - to check distributed NAT on non gw-chassis.
21103+ check ovn-nbctl lrp-set-gateway-chassis rp-public hv2
21104+ check ovn-nbctl lr-nat-del lr1
21105+ check ovn-nbctl lr-nat-add lr1 dnat_and_snat 172.16.0.1 192.168.1.2 sw01-x 00:00:04:00:00:01
21106+
21107+ NS_EXEC([ext-foo], [ip r add 172.16.0.1/32 dev ext-foo])
21108+ NS_CHECK_CONNECTIVITY([ext-foo], [sw01-x], 172.16.0.1)
21109+
21110+ OVN_CLEANUP_CONTROLLER([hv1])
21111+ OVN_CLEANUP_NORTHD
21112+ as
21113+ OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
21114+ /connection dropped.*/d"])
21115+ AT_CLEANUP
21116+ ])
21117+
2105621118OVN_FOR_EACH_NORTHD([
2105721119AT_SETUP([ACL CT translation - UDP fragmentation])
2105821120AT_KEYWORDS([acl_ct_translation_udp_fragmentation])
@@ -21782,3 +21844,77 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
2178221844
2178321845AT_CLEANUP
2178421846])
21847+
21848+ OVN_FOR_EACH_NORTHD([
21849+ AT_SETUP([VIF port connected to localnet network])
21850+ #
21851+ # Topology:
21852+ # (fabric) -- localnet-port -- LS --- DGP(chassis2) -- LR
21853+ # |
21854+ # |
21855+ # VM (chassis1)
21856+ #
21857+ # It is expected that ARP requests to this port are allowed on the chassis that hosts this port.
21858+
21859+ ovn_start
21860+ OVS_TRAFFIC_VSWITCHD_START()
21861+ ADD_BR([br-int])
21862+ ADD_BR([br-ext])
21863+
21864+ ovs-ofctl add-flow br-ext action=normal
21865+ # Set external-ids in br-int needed for ovn-controller
21866+ ovs-vsctl \
21867+ -- set Open_vSwitch . external-ids:system-id=hv1 \
21868+ -- set Open_vSwitch . external-ids:ovn-remote=unix:$ovs_base/ovn-sb/ovn-sb.sock \
21869+ -- set Open_vSwitch . external-ids:ovn-encap-type=geneve \
21870+ -- set Open_vSwitch . external-ids:ovn-encap-ip=169.0.0.1 \
21871+ -- set Open_vSwitch . external-ids:ovn-bridge-mappings=phynet:br-ext \
21872+ -- set bridge br-int fail-mode=secure other-config:disable-in-band=true
21873+
21874+ # Start ovn-controller
21875+ start_daemon ovn-controller
21876+
21877+ check ovn-nbctl lr-add lr1
21878+ check ovn-nbctl ls-add public
21879+
21880+ check ovn-nbctl lrp-add lr1 rp-public 00:00:02:01:02:03 172.31.1.1/24
21881+ check ovn-nbctl lsp-add-router-port public public-rp rp-public
21882+ check ovn-nbctl lsp-add-localnet-port public localnet phynet
21883+ check ovn-nbctl lrp-set-gateway-chassis rp-public hv2
21884+
21885+ ADD_NAMESPACES(ext)
21886+ ADD_VETH(ext, ext, br-ext, "172.31.1.2/24", "f0:00:00:01:02:02", \
21887+ "172.31.1.1")
21888+ ADD_NAMESPACES(lsp1)
21889+ ADD_VETH(lsp1, lsp1, br-int, "172.31.1.3/24", "f0:00:00:01:02:03", \
21890+ "172.31.1.1")
21891+ ADD_NAMESPACES(lsp2)
21892+ ADD_VETH(lsp2, lsp2, br-int, "172.31.1.4/24", "f0:00:00:01:02:04", \
21893+ "172.31.1.1")
21894+
21895+ check ovn-nbctl lsp-add public lsp1
21896+ check ovn-nbctl lsp-set-addresses lsp1 "f0:00:00:01:02:03 172.31.1.3"
21897+ check ovn-nbctl lsp-add public lsp2
21898+ check ovn-nbctl lsp-set-addresses lsp2 "f0:00:00:01:02:04 172.31.1.4"
21899+
21900+ check ovn-nbctl --wait=hv sync
21901+
21902+ NS_CHECK_EXEC([ext], [ping -q -c 3 -i 0.3 -w 2 172.31.1.3 | FORMAT_PING], \
21903+ [0], [dnl
21904+ 3 packets transmitted, 3 received, 0% packet loss, time 0ms
21905+ ])
21906+
21907+ NS_CHECK_EXEC([lsp1], [ping -q -c 3 -i 0.3 -w 2 172.31.1.4 | FORMAT_PING], \
21908+ [0], [dnl
21909+ 3 packets transmitted, 3 received, 0% packet loss, time 0ms
21910+ ])
21911+
21912+ OVN_CLEANUP_CONTROLLER([hv1])
21913+ OVN_CLEANUP_NORTHD
21914+
21915+ as
21916+ OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d
21917+ /connection dropped.*/d"])
21918+
21919+ AT_CLEANUP
21920+ ])
0 commit comments