Hyper-V supports receive side scaling. For TCP & UDP, packets can be distributed among available queues based on IP address and port number.

For TCP & UDP, we can switch hash level between L3 and L4 by ethtool command. TCP/UDP over IPv4 and v6 can be set differently. The default hash level is L4. We currently only allow switching TX hash level from within the guests.

On Azure, fragmented UDP packets have high loss rate with L4 hashing. Using L3 hashing is recommended in this case.

For example, for UDP over IPv4 on eth0:

To include UDP port numbers in hashing:

ethtool -N eth0 rx-flow-hash udp4 sdfn

To exclude UDP port numbers in hashing:

ethtool -N eth0 rx-flow-hash udp4 sd

To show UDP hash level:

ethtool -n eth0 rx-flow-hash udp4

References