[lvs-users] How to make LVS Direct Route work for UDP programs?

Simon Horman horms at verge.net.au
Thu Nov 24 00:09:47 GMT 2011

On Thu, Nov 24, 2011 at 11:16:10AM +1300, Roger Littin wrote:
> Hi Wang,
> I have had similar problems where the director thinks the packet size is larger than mtu of the real
> server and sends back this message.  Do you see anything in wireshark to indicate this.  Overly
> large udp packet size?
> I think when the network layer hands off the packet to lvs, it may have already reassembled any
> fragments and then when lvs hands it back to the network layer, it is rejected because it is too
> large.

Hi Roger,

if you are seeing that problem then I suggest turning off
both GRO and LRO on the interface on the director that receives
the packets.

# ethtool -k eth0 | egrep '(receive-offload)'
generic-receive-offload: on
large-receive-offload: on

# ethtool -K eth0 lro off
# ethtool -K eth0 gro off

# ethtool -k eth0 | egrep '(receive-offload)'
generic-receive-offload: off
large-receive-offload: off

IPVS may be used in conjunction with GRO since 2.6.39,
so it should not be necessary to disable GRO if
a 2.6.39 is used.

IPVS is not compatible with LRO as of 3.1 (or 3.2, when it is released)

LRO is specific to TCP.
GRO affects both TCP and UDP (and other protocols IIRC).

More information about the lvs-users mailing list