Commit 45831b7
northd: Skip UNSNAT for force-SNAT load balancer VIPs.
Northd adds a priority-120 UNSNAT bypass when a load balancer VIP
also appears as a NAT external IP. This prevents packets for the VIP
from repeatedly entering an SNAT zone lookup that never commits the
pre-DNAT tuple. Such packets remain ct.new and cannot be offloaded.
Gateway routers using lb_force_snat_ip=router_ip may use a router
port IP as the VIP while their NAT external IP is a different
masquerade address. Northd then omits the bypass even though it
creates an UNSNAT flow for the router port IP.
Generate the bypass when a port-specific VIP also matches a DNAT or
load balancer force-SNAT address, or a router port address selected
by lb_force_snat_ip=router_ip.
Do not extend the bypass to port-less VIPs in the new force-SNAT
cases. Such a flow would match replies sent to the force-SNAT
address and shadow the flow that reverses SNAT. Keep the existing
NAT external-IP behavior unchanged.
Add coverage using port-specific and port-less VIPs with a different
masquerade SNAT address. A single-stream OVN-Kubernetes DPU test with
the port-specific NodePort VIP improved from 8.8 Gbit/s to 19.8
Gbit/s.
Reported-at: ovn-kubernetes/ovn-kubernetes#6422
Assisted-by: GPT-5, OpenAI Codex
Signed-off-by: Tim Rozet <trozet@nvidia.com>
Signed-off-by: Han Zhou <hzhou@ovn.org>1 parent a9d49f5 commit 45831b7
2 files changed
Lines changed: 71 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13761 | 13761 | | |
13762 | 13762 | | |
13763 | 13763 | | |
| 13764 | + | |
| 13765 | + | |
| 13766 | + | |
| 13767 | + | |
| 13768 | + | |
| 13769 | + | |
| 13770 | + | |
| 13771 | + | |
| 13772 | + | |
| 13773 | + | |
| 13774 | + | |
| 13775 | + | |
| 13776 | + | |
| 13777 | + | |
| 13778 | + | |
| 13779 | + | |
| 13780 | + | |
| 13781 | + | |
| 13782 | + | |
| 13783 | + | |
| 13784 | + | |
| 13785 | + | |
13764 | 13786 | | |
13765 | 13787 | | |
13766 | 13788 | | |
| |||
13910 | 13932 | | |
13911 | 13933 | | |
13912 | 13934 | | |
13913 | | - | |
13914 | | - | |
13915 | | - | |
13916 | | - | |
13917 | | - | |
| 13935 | + | |
| 13936 | + | |
| 13937 | + | |
| 13938 | + | |
13918 | 13939 | | |
13919 | | - | |
13920 | | - | |
| 13940 | + | |
| 13941 | + | |
13921 | 13942 | | |
13922 | | - | |
| 13943 | + | |
13923 | 13944 | | |
13924 | 13945 | | |
13925 | 13946 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1882 | 1882 | | |
1883 | 1883 | | |
1884 | 1884 | | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
| 1904 | + | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
| 1921 | + | |
| 1922 | + | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
1885 | 1927 | | |
1886 | 1928 | | |
1887 | 1929 | | |
| |||
0 commit comments