[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f644ca6d-f82d-c5a6-f4db-80988dfe7897@iogearbox.net>
Date: Thu, 11 Apr 2019 22:59:08 +0200
From: Daniel Borkmann <daniel@...earbox.net>
To: Willem de Bruijn <willemdebruijn.kernel@...il.com>,
Alan Maguire <alan.maguire@...cle.com>
Cc: Willem de Bruijn <willemb@...gle.com>,
Alexei Starovoitov <ast@...nel.org>,
David Miller <davem@...emloft.net>,
Shuah Khan <shuah@...nel.org>, Martin KaFai Lau <kafai@...com>,
songliubraving@...com, yhs@...com, quentin.monnet@...ronome.com,
John Fastabend <john.fastabend@...il.com>, rdna@...com,
linux-kselftest@...r.kernel.org,
Network Development <netdev@...r.kernel.org>,
bpf <bpf@...r.kernel.org>
Subject: Re: [PATCH v3 bpf-next 0/4] L2 encap support for bpf_skb_adjust_room
On 04/09/2019 04:34 PM, Willem de Bruijn wrote:
> On Tue, Apr 9, 2019 at 10:08 AM Alan Maguire <alan.maguire@...cle.com> wrote:
>>
>> Extend bpf_skb_adjust_room growth to mark inner MAC header so that
>> L2 encapsulation can be used for tc tunnels.
>>
>> Patch #1 extends the existing test_tc_tunnel to support UDP
>> encapsulation; later we want to be able to test MPLS over UDP and
>> MPLS over GRE encapsulation.
>>
>> Patch #2 adds the BPF_F_ADJ_ROOM_ENCAP_L2(len) macro, which
>> allows specification of inner mac length. Other approaches were
>> explored prior to taking this approach. Specifically, I tried
>> automatically computing the inner mac length on the basis of the
>> specified flags (so inner maclen for GRE/IPv4 encap is the len_diff
>> specified to bpf_skb_adjust_room minus GRE + IPv4 header length
>> for example). Problem with this is that we don't know for sure
>> what form of GRE/UDP header we have; is it a full GRE header,
>> or is it a FOU UDP header or generic UDP encap header? My fear
>> here was we'd end up with an explosion of flags. The other approach
>> tried was to support inner L2 header marking as a separate room
>> adjustment, i.e. adjust for L3/L4 encap, then call
>> bpf_skb_adjust_room for L2 encap. This can be made to work but
>> because it imposed an order on operations, felt a bit clunky.
>>
>> Patch #3 syncs tools/ bpf.h.
>>
>> Patch #4 extends the tests again to support MPLSoverGRE,
>> MPLSoverUDP, and transparent ethernet bridging (TEB) where
>> the inner L2 header is an ethernet header. Testing of BPF
>> encap against tunnels is done for cases where configuration
>> of such tunnels is possible (MPLSoverGRE[6], MPLSoverUDP,
>> gre[6]tap), and skipped otherwise. Testing of BPF encap/decap
>> is always carried out.
>>
>> Changes since v2:
>> - updated tools/testing/selftest/bpf/config with FOU/MPLS CONFIG
>> variables (patches 1, 4)
>> - reduced noise in patch 1 by avoiding unnecessary movement of code
>> - eliminated inner_mac variable in bpf_skb_net_grow (patch 2)
>>
>> Changes since v1:
>> - fixed formatting of commit references.
>> - BPF_F_ADJ_ROOM_FIXED_GSO flag enabled on all variants (patch 1)
>> - fixed fou6 options for UDP encap; checksum errors observed were
>> due to the fact fou6 tunnel was not set up with correct ipproto
>> options (41 -6). 0 checksums work fine (patch 1)
>> - added definitions for mask and shift used in setting L2 length
>> (patch 2)
>> - allow udp encap with fixed GSO (patch 2)
>> - changed "elen" to "l2_len" to be more descriptive (patch 4)
>>
>>
>> Alan Maguire (4):
>> selftests_bpf: extend test_tc_tunnel for UDP encap
>> bpf: add layer 2 encap support to bpf_skb_adjust_room
>> bpf: sync bpf.h to tools/ for BPF_F_ADJ_ROOM_ENCAP_L2
>> selftests_bpf: add L2 encap to test_tc_tunnel
>>
>> include/uapi/linux/bpf.h | 10 +
>> net/core/filter.c | 12 +-
>> tools/include/uapi/linux/bpf.h | 10 +
>> tools/testing/selftests/bpf/config | 8 +
>> tools/testing/selftests/bpf/progs/test_tc_tunnel.c | 321 +++++++++++++++++----
>> tools/testing/selftests/bpf/test_tc_tunnel.sh | 136 +++++++--
>> 6 files changed, 417 insertions(+), 80 deletions(-)
>
> For the series:
>
> Acked-by: Willem de Bruijn <willemb@...gle.com>
>
> Thanks Alan.
>
> (quick response due to iterative review: checked out both v2 and v3
> series from patchwork (a super useful feature!) and did a git diff)
Applied, thanks! Small follow-up request though, will comment in patch 2.
Powered by blists - more mailing lists