Skip to content

Bug: ICMP error packets have incorrect checksum after SNAT RevNAT in LB-node #40827

@yushoyamaguchi

Description

@yushoyamaguchi

Is there an existing issue for this?

  • I have searched the existing issues

Version

equal or higher than v1.18.0 and lower than v1.19.0

What happened?

ICMP error packets returned from LB's backend pod on other node have incorrect checksum after SNAT RevNAT in LB-node.
It occur when external-traffic-policy is cluster and LB mode is SNAT.

Image

How I think this error occurs is below.

Note:
Currently, because DNAT RevNAT of ICMP error is not supported, the reply packet(4 in above figure) cannot reach client correctly with or without this checksum bug.
(The reply packet should have LB's VIP as saddr but currently it have backend pod's address as saddr.)
That might be why this bug wasn’t detected.

How can we reproduce the issue?

Settings like above figure.

Cilium Version

cilium image (running): 1.19.0-dev

Kernel Version

6.8.0-60-generic

Kubernetes Version

Client Version: v1.33.3
Kustomize Version: v5.6.0
Server Version: v1.29.0

Regression

No response

Sysdump

No response

Relevant log output

Anything else?

No response

Cilium Users Document

  • Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/datapathImpacts bpf/ or low-level forwarding details, including map management and monitor messages.area/kprAnything related to our kube-proxy replacement.feature/snatRelates to SNAT or Masquerading of traffickind/bugThis is a bug in the Cilium logic.kind/community-reportThis was reported by a user in the Cilium community, eg via Slack.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions