# Flannel with VMWare,

**URL:** https://community.replicated.com/t/flannel-with-vmware/1396
**Category:** Troubleshooting
**Tags:** kurl
**Created:** [April 3, 2024, 1:40am UTC](https://community.replicated.com/t/flannel-with-vmware/1396 "2024-04-03T01:40:22Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Xav\_Paice](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/xav_paice/32/472_2.png) [@Xav\_Paice](https://community.replicated.com/u/Xav_Paice)
#### Post date: [April 3, 2024, 1:40am UTC](https://community.replicated.com/t/flannel-with-vmware/1396/1 "2024-04-03T01:40:22Z")

</div>

In several installations with VMWare vNIC drivers & Flannel, we have noticed a particular edge case requiring TCP checksum offloading disabled in the Linux kernel. This can result in seemingly random network issues between cluster nodes.

The following command disables the checksum offloading:

`ethtool -K flannel.1 tx-checksum-ip-generic off`

To make the change persistent, add the following to a new systemd unit `flannel-ethtool.service`:

```auto
[Unit]
Description=Disable vxlan checksum offloading for flannel.1
After=sys-devices-virtual-net-flannel.1.device
Requires=sys-devices-virtual-net-flannel.1.device

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -K flannel.1 tx-checksum-ip-generic off
RemainAfterExit=yes

[Install]
WantedBy=sys-devices-virtual-net-flannel.1.device

```

See the [Red Hat docs](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_systemd_unit_files_to_customize_and_optimize_your_system/assembly_working-with-systemd-unit-files_working-with-systemd#proc_creating-custom-unit-files_assembly_working-with-systemd-unit-files) or a more concise article [here](https://www.linux.org/threads/how-to-create-a-custom-systemd-service-file.47399/) for information about using systemd units.

The simpler, and preferred, answer is to update the kURL installer and Flannel as this is built in as of Flannel 0.24.4.

---

<div class="post-metadata">

### Author: ![Evans\_Mungai](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/evans_mungai/32/546_2.png) [@Evans\_Mungai](https://community.replicated.com/u/Evans_Mungai)
#### Post date: [July 2, 2025, 1:05pm UTC](https://community.replicated.com/t/flannel-with-vmware/1396/2 "2025-07-02T13:05:50Z")

</div>

The root cause of this problem is a flaw in the hardware offloading mechanism on VMware platforms, specifically in the virtual NIC’s handling of checksum calculations. This flaw can lead to incorrect checksum values for _inner packets_—the original packets encapsulated within the VXLAN tunnel.

This issue particularly affects modern Linux distributions, which enable checksum offloading by default. When these miscalculated checksums are encountered, the Linux networking stack treats the packets as corrupted and drops them, resulting in network connectivity problems.

The solution is to disable checksum offloading to the virtual NIC, allowing the Linux kernel to calculate checksums in software instead, ensuring packet integrity is maintained through the VXLAN tunnel.

---

<div class="post-metadata">

### Author: ![Evans\_Mungai](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/evans_mungai/32/546_2.png) [@Evans\_Mungai](https://community.replicated.com/u/Evans_Mungai)
#### Post date: [July 2, 2025, 1:09pm UTC](https://community.replicated.com/t/flannel-with-vmware/1396/3 "2025-07-02T13:09:08Z")

</div>

> [@Xav\_Paice](#):
>
> ```auto
> [Unit]
> Description=Disable vxlan checksum offloading for flannel.1
> After=sys-devices-virtual-net-flannel.1.device
> Requires=sys-devices-virtual-net-flannel.1.device
> 
> [Service]
> Type=oneshot
> ExecStart=/sbin/ethtool -K flannel.1 tx-checksum-ip-generic off
> RemainAfterExit=yes
> 
> [Install]
> WantedBy=sys-devices-virtual-net-flannel.1.device
> 
> ```

This file can be created in `/etc/systemd/system/flannel-ethtool.service` file. Once done, run `sudo systemctl enable flannel-ethtool.service --now` to enable the service. It will also be started.
