-
Notifications
You must be signed in to change notification settings - Fork 3.7k
KPR: support RevDNAT for ICMP error messages #32029
Copy link
Copy link
Open
Labels
area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.Impacts bpf/ or low-level forwarding details, including map management and monitor messages.area/kprAnything related to our kube-proxy replacement.Anything related to our kube-proxy replacement.area/loadbalancingImpacts load-balancing and Kubernetes service implementationsImpacts load-balancing and Kubernetes service implementationskind/enhancementThis would improve or streamline existing functionality.This would improve or streamline existing functionality.pinnedThese issues are not marked stale by our issue bot.These issues are not marked stale by our issue bot.
Description
Background
In the LB frontend path, we intentionally ignore ICMP traffic (as services can only be defined for TCP/UDP/SCTP).
But we currently also ignore ICMP traffic in the RevDNAT code path for replies by service backends (eg. the local backend path). This prevents ICMP error messages by the backend from being RevDNATed, and thus from reaching the client with the expected Source IP / Port.
This affects all backend types:
- DSR (where the outbound NAT path would need to look at the ICMP packet's payload, and derive the DSR-SNAT entry from it)
- remote backend (where the LB's inbound RevNAT path would need to look at the ICMP packet's payload, do a CT lookup and obtain the RevNAT-Index from it),
- local backend (same as remote backend)
One special case for "local backend" is that the ICMP packet is currently handled via tail-call from bpf_lxc - and the missing RevDNAT action is unexpected, and thus the packet is dropped.
Proposal
Implement ICMP support in the RevDNAT path for service replies.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.Impacts bpf/ or low-level forwarding details, including map management and monitor messages.area/kprAnything related to our kube-proxy replacement.Anything related to our kube-proxy replacement.area/loadbalancingImpacts load-balancing and Kubernetes service implementationsImpacts load-balancing and Kubernetes service implementationskind/enhancementThis would improve or streamline existing functionality.This would improve or streamline existing functionality.pinnedThese issues are not marked stale by our issue bot.These issues are not marked stale by our issue bot.