在 2023/2/28 下午7:16, Michael S. Tsirkin 写道:
On Sat, Feb 18, 2023 at 10:37:15PM +0800, Heng Qi wrote:
If the tunnel is used to encapsulate the packets, the hash calculated
using the outer header of the receive packets is always fixed for the
same flow packets, i.e. they will be steered to the same receive queue.
Wait a second. How is this true? Does not everyone stick the
inner header hash in the outer source port to solve this?
For example geneve spec says:
it is necessary for entropy from encapsulated packets to be
exposed in the tunnel header. The most common technique for this is
to use the UDP source port
same goes for vxlan did not check further.
so what is the problem? and which tunnel types actually suffer from the
problem?
Inner hash can at least hash tunnel flows without outer transport
headers like GRE to multiple queues,
which is beneficial to us.
For tunnel flows with outer transport headers like VXLAN, although they
can hash flows to different queues
by setting different outer udp port, this does not conflict with inner
hash. Inner hashing can also be used for this purpose.
For the same flow, packets in the receiving and sending directions may
pass through different tunnels respectively, which cause
the same flow to be hashed to different queues. In this case, we have to
calculate a symmetric hash (can be called an inner symmetric hash, which
is a type of inner hash.)
through the inner header, so that the same flow can be hashed to the
same queue.
Symmetric hashing can ignore the order of the 5-tuples to calculate the
hash, that is, the hash values calculated by (a1, a2, a3, a4) and (a2,
a1, a4, a3) respectively are the same.
Thanks.
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscr...@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-h...@lists.oasis-open.org