From patchwork Wed Dec 19 01:04:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: William Tu X-Patchwork-Id: 1015775 Return-Path: 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=) 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="irYsWzEe"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43KGdl11Csz9s1c for ; Wed, 19 Dec 2018 11:55:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726893AbeLSAzN (ORCPT ); Tue, 18 Dec 2018 19:55:13 -0500 Received: from mail-pg1-f193.google.com ([209.85.215.193]:44951 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726629AbeLSAzN (ORCPT ); Tue, 18 Dec 2018 19:55:13 -0500 Received: by mail-pg1-f193.google.com with SMTP id t13so8608204pgr.11 for ; Tue, 18 Dec 2018 16:55:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=8wTsAuE3VgN5XW8MHagy+qi4hFCVLoaEJEx/iutcXsg=; b=irYsWzEeVu6fOICX4w3SXwHoJva0UK+TqkYMUBVWkrd3xwokUHWB0i9fxUPo0KfsUX iF+at3XvBS9UYg1UW0pa7+SzXeM6bCLGdHLksJstaA6hfh0aucf0Pu4wxxHJRQ0IaFuW M9LVtlzZIA9yCPhalTYnnXcM+VCzk/A1MD4aCZ3j5TxbXEJK/hpL0HpgkP5miS+izWYx 1ZEK/1SDk7MhsS0rERrvu/56UqxI9yvlaapPLDo4ecilFF8SZ1D/+nc/z6RTVOgWtBhk yOt3tSGQpFw3ArQ0Z9YMJbGAa98U44UjC8mLPOFvZmITeaziVHgvjEpqm+8ulO3VlGdO 9jGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=8wTsAuE3VgN5XW8MHagy+qi4hFCVLoaEJEx/iutcXsg=; b=qeY3vOMN75yd5NQ7Ff33/10RMyqORxlhlBzi3Tl9ooHJbaPYauVJh76gzPhWyaaXY9 TY+35tUYntJYGZUMFI3arhhWCSXX/QkyLOab2qB4iplqSkybebGOBJk6C4b5YWorAlsz JPPjZ3XHC3pVVs6q5E9a0Rh514Lix3IaNcn6OM4rou7OQAQcnTmjQZSv8T2irkwlc17c Vl7N0m35ylmMl79QQXAtanSYdaMDz/b+GFznWKGzUK0nDoMBtZ2+T1I3GvzdwsBv0YE1 Lby+1/ZKIRP1qE/nA39X3+Buuia+2FeU9UA3awQPGc9t3BLrzBV6pf3x+dEbeFBwLau8 6gHg== X-Gm-Message-State: AA+aEWaM83jUZ4KdZ5hVsr3thhtgE9EYBpPnRAVA33cbjaMqLiuRnoEI kpEX/zKHoFadOtWAT2hXQW4= X-Google-Smtp-Source: AFSGD/WCc/PBrlAUVMDS/2e8hujw0ZA6VxVkzZ8JPvZoYvzG9ulUV/HY91afZTaGdVZXYvblGvDrVg== X-Received: by 2002:a62:d743:: with SMTP id v3mr3994583pfl.34.1545180911992; Tue, 18 Dec 2018 16:55:11 -0800 (PST) Received: from sc9-mailhost2.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id c13sm38964804pfe.93.2018.12.18.16.55.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 18 Dec 2018 16:55:11 -0800 (PST) From: William Tu To: bjorn.topel@gmail.com, magnus.karlsson@gmail.com, ast@kernel.org, daniel@iogearbox.net, netdev@vger.kernel.org, makita.toshiaki@lab.ntt.co.jp, yihung.wei@gmail.com Subject: [bpf-next RFCv2 0/3] AF_XDP support for veth. Date: Tue, 18 Dec 2018 17:04:50 -0800 Message-Id: <1545181493-8743-1-git-send-email-u9012063@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The patch series adds AF_XDP async xmit support for veth device. First patch add a new API for supporting non-physical NIC device to get packet's virtual address. The second patch implements the async xmit, and last patch adds example use cases. I tested with 2 namespaces, one as sender, the other as receiver. The packet rate is measure at the receiver side. ip netns add at_ns0 ip link add p0 type veth peer name p1 ip link set p0 netns at_ns0 ip link set dev p1 up ip netns exec at_ns0 ip link set dev p0 up # receiver ip netns exec at_ns0 xdp_rxq_info --dev p0 --action XDP_DROP # sender with AF_XDP xdpsock -i p1 -t -N -z # or sender without AF_XDP xdpsock -i p1 -t -S Without AF_XDP: 724 Kpps RXQ stats RXQ:CPU pps issue-pps rx_queue_index 0:1 724339 0 rx_queue_index 0:sum 724339 With AF_XDP: 1.1 Mpps (with ksoftirqd 100% cpu) RXQ stats RXQ:CPU pps issue-pps rx_queue_index 0:3 1188181 0 rx_queue_index 0:sum 1188181 v1->v2: - refactor the xsk_umem_consume_tx_virtual - use the umems provided by netdev - fix bug from locating peer side rq with qid William Tu (3): xsk: add xsk_umem_consume_tx_virtual. veth: support AF_XDP. samples: bpf: add veth AF_XDP example. drivers/net/veth.c | 199 ++++++++++++++++++++++++++++++++++++++++- include/net/xdp_sock.h | 7 ++ net/xdp/xdp_umem.c | 1 + net/xdp/xsk.c | 21 ++++- samples/bpf/test_veth_afxdp.sh | 67 ++++++++++++++ 5 files changed, 291 insertions(+), 4 deletions(-) create mode 100755 samples/bpf/test_veth_afxdp.sh