Si-Wei Liu
2022-Aug-09 20:32 UTC
[virtio-dev] [PATCH] virtio-net: use mtu size as buffer length for big packets
On 8/9/2022 12:18 PM, Parav Pandit wrote:>> From: Si-Wei Liu <si-wei.liu at oracle.com> >> Sent: Tuesday, August 9, 2022 3:09 PM >>>> From: Si-Wei Liu <si-wei.liu at oracle.com> >>>> Sent: Tuesday, August 9, 2022 2:39 PM Currently it is not. Not a >>>> single patch nor this patch, but the context for the eventual goal is >>>> to allow XDP on a MTU=9000 link when guest users intentionally lower >>>> down MTU to 1500. >>> Which application benefit by having asymmetry by lowering mtu to 1500 >> to send packets but want to receive 9K packets? > Below details doesn?t answer the question of asymmetry. :) > >> I think virtio-net driver doesn't differentiate MTU and MRU, in which case >> the receive buffer will be reduced to fit the 1500B payload size when mtu is >> lowered down to 1500 from 9000. > How? Driver reduced the mXu to 1500, say it is improved to post buffers of 1500 bytes.For big_packet path, yes, we need improvement; for mergeable, it's adaptable to any incoming packet size so 1500 is what it is today.> > Device doesn't know about it because mtu in config space is RO field. > Device keep dropping 9K packets because buffers posted are 1500 bytes. > This is because device follows the spec " The device MUST NOT pass received packets that exceed mtu".Right, that's what it happens today on device side (i.e. vhost-net, btw mlx5 vdpa device seems to have a bug not pro-actively dropping packets that exceed the MTU size, causing guest panic in small packet path).> > So, I am lost what virtio net device user application is trying to achieve by sending smaller packets and dropping all receive packets. > (it doesn?t have any relation to mergeable or otherwise).Usually, the use case I'm aware of would set the peer's MTU to 1500 (e.g. on a virtual network appliance), or it would rely on path mtu discovery to avoid packet drop across links. -Siwei
Parav Pandit
2022-Aug-09 21:13 UTC
[virtio-dev] [PATCH] virtio-net: use mtu size as buffer length for big packets
> From: Si-Wei Liu <si-wei.liu at oracle.com> > Sent: Tuesday, August 9, 2022 4:33 PM > > On 8/9/2022 12:18 PM, Parav Pandit wrote: > >> From: Si-Wei Liu <si-wei.liu at oracle.com> > >> Sent: Tuesday, August 9, 2022 3:09 PM > >>>> From: Si-Wei Liu <si-wei.liu at oracle.com> > >>>> Sent: Tuesday, August 9, 2022 2:39 PM Currently it is not. Not a > >>>> single patch nor this patch, but the context for the eventual goal > >>>> is to allow XDP on a MTU=9000 link when guest users intentionally > >>>> lower down MTU to 1500. > >>> Which application benefit by having asymmetry by lowering mtu to > >>> 1500 > >> to send packets but want to receive 9K packets? > > Below details doesn?t answer the question of asymmetry. :) > > > >> I think virtio-net driver doesn't differentiate MTU and MRU, in which > >> case the receive buffer will be reduced to fit the 1500B payload size > >> when mtu is lowered down to 1500 from 9000. > > How? Driver reduced the mXu to 1500, say it is improved to post buffers of > 1500 bytes. > For big_packet path, yes, we need improvement; for mergeable, it's > adaptable to any incoming packet size so 1500 is what it is today. > > > > Device doesn't know about it because mtu in config space is RO field. > > Device keep dropping 9K packets because buffers posted are 1500 bytes. > > This is because device follows the spec " The device MUST NOT pass > received packets that exceed mtu". > Right, that's what it happens today on device side (i.e. vhost-net, btw > mlx5 vdpa device seems to have a bug not pro-actively dropping packets that > exceed the MTU size, causing guest panic in small packet path). > > > > So, I am lost what virtio net device user application is trying to achieve by > sending smaller packets and dropping all receive packets. > > (it doesn?t have any relation to mergeable or otherwise). > > Usually, the use case I'm aware of would set the peer's MTU to 1500 (e.g. on > a virtual network appliance), or it would rely on path mtu discovery to avoid > packet drop across links.Ok. Somehow the application knows the mtu to set on (all) peer(s) and hope for the best. Understood.