On Tue, Jan 24, 2017 at 03:09:59PM -0500, David Miller wrote:> From: "Michael S. Tsirkin" <mst at redhat.com> > Date: Tue, 24 Jan 2017 21:53:13 +0200 > > > I didn't realise. Why can't we? I thought that adjust_header is an > > optional feature that userspace can test for, so no rush. > > No, we want the base set of XDP features to be present in all drivers > supporting XDP.I see, I didn't realize this. In light of this, is there any guidance *how much* head room is required to be considered valid? We already have 12 bytes of headroom. I'm generally sorry it's taking long, a large part of that is difficulty figuring out the requirements: when we discussed this on LPC my take-away was that one of the first users will be fighting DDOS attacks. In light of this, I assumed that - supporting just DROP (or DROP+TX) would already be useful - XDP_PASS shouldn't be too slow as some people will run all their traffic with XDP enabled - people actually want this in virtio because they run in a vm Since then I heard opinions that seem to imply that - you must support all features, not just DROP, otherwise it's useless - XDP_PASS is a slow path fallback as people are not expected to mix XDP with regular sockets - DDOS protection and by extension XDP in virtio is a developer's toy anyway Thus, expect some slowness while I figure it all out. -- MST
From: "Michael S. Tsirkin" <mst at redhat.com> Date: Tue, 24 Jan 2017 22:45:37 +0200> On Tue, Jan 24, 2017 at 03:09:59PM -0500, David Miller wrote: >> From: "Michael S. Tsirkin" <mst at redhat.com> >> Date: Tue, 24 Jan 2017 21:53:13 +0200 >> >> > I didn't realise. Why can't we? I thought that adjust_header is an >> > optional feature that userspace can test for, so no rush. >> >> No, we want the base set of XDP features to be present in all drivers >> supporting XDP. > > I see, I didn't realize this. In light of this, is there any > guidance *how much* head room is required to be considered > valid? We already have 12 bytes of headroom.The idea is to allow programs to implement arbitrary kinds of encapsulation, so we need to be able to allow them to push headers for all kinds of software tunnels, with allowance for a few depths in some extreme cases. In that light, a nice round power of 2 number such as 256 seems quite reasonable to me. This seems to be what other XDP implementations in drivers use at the moment as well.
On Tue, Jan 24, 2017 at 03:53:31PM -0500, David Miller wrote:> From: "Michael S. Tsirkin" <mst at redhat.com> > Date: Tue, 24 Jan 2017 22:45:37 +0200 > > > On Tue, Jan 24, 2017 at 03:09:59PM -0500, David Miller wrote: > >> From: "Michael S. Tsirkin" <mst at redhat.com> > >> Date: Tue, 24 Jan 2017 21:53:13 +0200 > >> > >> > I didn't realise. Why can't we? I thought that adjust_header is an > >> > optional feature that userspace can test for, so no rush. > >> > >> No, we want the base set of XDP features to be present in all drivers > >> supporting XDP. > > > > I see, I didn't realize this. In light of this, is there any > > guidance *how much* head room is required to be considered > > valid? We already have 12 bytes of headroom. > > The idea is to allow programs to implement arbitrary kinds of > encapsulation, so we need to be able to allow them to push headers for > all kinds of software tunnels, with allowance for a few depths in some > extreme cases. > > In that light, a nice round power of 2 number such as 256 seems quite > reasonable to me. > > This seems to be what other XDP implementations in drivers use at the > moment as well.It bothers me that this becomes a part of userspace ABI. Apps will see that everyone does 256 and will assume it, we'll never be able to go back. This does mean that XDP_PASS will use much more memory for small packets and by extension need a higher rmem limit. Would all admins be comfortable with this? Why would they want to if all their XDP does is DROP? Why not teach applications to query the headroom? Or even better, do what we do with skbs and do data copies whenever you run out of headroom instead of a failure. Anyone using build_skb already has a ton of tailroom so that will work better. -- MST