Message ID | 20190322151504.89983-1-willemdebruijn.kernel@gmail.com |
---|---|
Headers | show
Return-Path: <netdev-owner@vger.kernel.org> X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="bHl6OcHQ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44QnJv3CjJz9sRk for <patchwork-incoming-netdev@ozlabs.org>; Sat, 23 Mar 2019 02:15:10 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726215AbfCVPPJ (ORCPT <rfc822;patchwork-incoming-netdev@ozlabs.org>); Fri, 22 Mar 2019 11:15:09 -0400 Received: from mail-qt1-f194.google.com ([209.85.160.194]:36169 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726041AbfCVPPI (ORCPT <rfc822;netdev@vger.kernel.org>); Fri, 22 Mar 2019 11:15:08 -0400 Received: by mail-qt1-f194.google.com with SMTP id y36so2904138qtb.3 for <netdev@vger.kernel.org>; Fri, 22 Mar 2019 08:15:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ZmiCAB65BKBRc8EYTA2qMTiuq546CYtI70E143j5JoE=; b=bHl6OcHQQvgRVCkLDgngapJvu9ClSYFMg3IYoDF1iMDLGwVNxw9TLvfOAaMJglA3fH 7SlWQH17yxhiFl3eZOgBUj0dSP7Qd8BeI3Lczzu0suHmp2i8ZuJsiHFl/z6ZJyMG1S24 I9ovsdH+hc7CMpcJLu7EntDvKSGe/7YjSrG1w+E7ijZgwnYbZqORy0dNAVWbUc6TpHTt gfQVhMd1Q7baylJg2GvZ+106d7psMavcqvQe0EuYZ+Q+FQt2jBvNawbQHJKQ1Cuppluq 8N79m0/U4DRcWI5GJeyFNwa2+7oiZHsF+//0emoSoxa4P9aD6aZdgsvg+lzK9OhJLQZt opXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ZmiCAB65BKBRc8EYTA2qMTiuq546CYtI70E143j5JoE=; b=PzIZESEq2/GcEm3Hj23/5q8y73HxB8EO/9OZqSTZmAXP1u+HhzM/SldMpd8dyhJU6K RbR0AnppmjupvVu87DTjdsluXAhrurWWaCRqjCky/0xg6kuh6DRZlO9fyh4ZySsr6zP2 N9X0oSEvZyl+bGOAP/LbIX2Y6Jmz77+qKAxFlq10pnMgCUQHep2Ucd/XljGQa5XwK4G6 4o951Xj32oRWyq3busG98aXLs4zQ0yh+MZaGBbUIHYENyX+2J5UvY8VwRWL7c7vxlK/w cK3zGFWP1q/Pz9uNNDXrRQaO5HuoB2pks0dDAxBl08TIyws2/lLJ7LgbwBzi0HyxEgf1 wFmw== X-Gm-Message-State: APjAAAUh1fmVi5NSf2D/43rjiOWPju3DDXo7YWmYQL/DmFlKWmjEqcfm YjeUz1Df4GXFTPobG4qhDhTBLLKz X-Google-Smtp-Source: APXvYqx0+zoGilAjfddyDjFhbBHUtn1AJY32ULleRZqWKm1G9nWyH2oe29unSy0W6mzAu7gk3NEt/g== X-Received: by 2002:ac8:3328:: with SMTP id t37mr8874051qta.246.1553267707393; Fri, 22 Mar 2019 08:15:07 -0700 (PDT) Received: from willemb1.nyc.corp.google.com ([2620:0:1003:315:3fa1:a34c:1128:1d39]) by smtp.gmail.com with ESMTPSA id v4sm4631317qtq.94.2019.03.22.08.15.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Mar 2019 08:15:06 -0700 (PDT) From: Willem de Bruijn <willemdebruijn.kernel@gmail.com> To: netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, alan.maguire@oracle.com, Willem de Bruijn <willemb@google.com> Subject: [PATCH bpf-next v2 00/13] bpf tc tunneling Date: Fri, 22 Mar 2019 11:14:51 -0400 Message-Id: <20190322151504.89983-1-willemdebruijn.kernel@gmail.com> X-Mailer: git-send-email 2.21.0.392.gf8f6787159e-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: <netdev.vger.kernel.org> X-Mailing-List: netdev@vger.kernel.org |
Series |
bpf tc tunneling
|
expand
|
From: Willem de Bruijn <willemb@google.com> BPF allows for dynamic tunneling, choosing the tunnel destination and features on-demand. Extend bpf_skb_adjust_room to allow for efficient tunneling at the TC hooks. Most features are required for large packets with GSO, as these will be modified after this patch. Patch 1 is a performance optimization, avoiding an unnecessary unclone for the TCP hot path. Patches 2..6 introduce a regression test. These can be squashed, but the code is arguably more readable when gradually expanding the feature set. Patch 7 is a performance optimization, avoid copying network headers that are going to be overwritten. This also simplifies the bpf program. Patch 8 reenables bpf_skb_adjust_room for UDP packets. Patch 9 configures skb tunneling metadata analogous to tunnel devices. Patches 10..13 expand the regression test to make use of the new features and enable the GSO testcases. Changes v1->v2 - move BPF_F_ADJ_ROOM_MASK out of uapi as it can be expanded - document new flags - in tests replace netcat -q flag with coreutils timeout: the -q flag is not supported in all netcat versions Willem de Bruijn (13): bpf: in bpf_skb_adjust_room avoid copy in tx fast path selftests/bpf: bpf tunnel encap test selftests/bpf: expand bpf tunnel test with decap selftests/bpf: expand bpf tunnel test to ipv6 selftests/bpf: extend bpf tunnel test with gre selftests/bpf: extend bpf tunnel test with tso bpf: add bpf_skb_adjust_room mode BPF_ADJ_ROOM_MAC bpf: add bpf_skb_adjust_room flag BPF_F_ADJ_ROOM_FIXED_GSO bpf: add bpf_skb_adjust_room encap flags bpf: Sync bpf.h to tools selftests/bpf: convert bpf tunnel test to BPF_ADJ_ROOM_MAC selftests/bpf: convert bpf tunnel test to BPF_F_ADJ_ROOM_FIXED_GSO selftests/bpf: convert bpf tunnel test to encap modes include/uapi/linux/bpf.h | 32 ++- net/core/filter.c | 129 +++++++-- tools/include/uapi/linux/bpf.h | 32 ++- tools/testing/selftests/bpf/Makefile | 3 +- tools/testing/selftests/bpf/config | 2 + .../selftests/bpf/progs/test_tc_tunnel.c | 261 ++++++++++++++++++ tools/testing/selftests/bpf/test_tc_tunnel.sh | 178 ++++++++++++ 7 files changed, 601 insertions(+), 36 deletions(-) create mode 100644 tools/testing/selftests/bpf/progs/test_tc_tunnel.c create mode 100755 tools/testing/selftests/bpf/test_tc_tunnel.sh