From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3CA2FC43381 for ; Sat, 23 Feb 2019 01:07:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0D77E2075C for ; Sat, 23 Feb 2019 01:07:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="ai3rWfHz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727650AbfBWBHa (ORCPT ); Fri, 22 Feb 2019 20:07:30 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:36042 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727609AbfBWBH1 (ORCPT ); Fri, 22 Feb 2019 20:07:27 -0500 Received: from pps.filterd (m0001255.ppops.net [127.0.0.1]) by mx0b-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x1N129Bv021047 for ; Fri, 22 Feb 2019 17:07:26 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=facebook; bh=6+SNpCO1LDmaC8s/i28zQN4fpurwKKbwRT/HfSKLqaY=; b=ai3rWfHzJN0BpX29sPGcxO4pUJzVqyRUrJwjD2G39bgT1VdKROHE1DVuvgHdUsRRJDe2 fcsKaQIKxFuUkDLktBn5/MaM7yTbK984haj3r/cTRY8WvP9PnKkZKNGRuSF5ZhC9/9gG rbjqElyopQDJZ+eQ4V9Ps0f3tjlbEjEoIbQ= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0b-00082601.pphosted.com with ESMTP id 2qtpvjh033-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Fri, 22 Feb 2019 17:07:26 -0800 Received: from mx-out.facebook.com (2620:10d:c081:10::13) by mail.thefacebook.com (2620:10d:c081:35::129) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3; Fri, 22 Feb 2019 17:07:12 -0800 Received: by devbig009.ftw2.facebook.com (Postfix, from userid 10340) id 5A10A5AE1524; Fri, 22 Feb 2019 17:07:11 -0800 (PST) Smtp-Origin-Hostprefix: devbig From: brakmo Smtp-Origin-Hostname: devbig009.ftw2.facebook.com To: netdev CC: Martin Lau , Alexei Starovoitov , Daniel Borkmann , Eric Dumazet , Kernel Team Smtp-Origin-Cluster: ftw2c04 Subject: [PATCH v2 bpf-next 0/9] bpf: Network Resource Manager (NRM) Date: Fri, 22 Feb 2019 17:06:54 -0800 Message-ID: <20190223010703.678070-1-brakmo@fb.com> X-Mailer: git-send-email 2.17.1 X-FB-Internal: Safe MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-02-23_01:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Network Resource Manager is a framework for limiting the bandwidth used by v2 cgroups. It consists of 4 BPF helpers and a sample BPF program to limit egress bandwdith as well as a sample user program and script to simplify NRM testing. The sample NRM BPF program is not meant to be production quality, it is provided as proof of concept. A lot more information, including sample runs in some cases, are provided in the commit messages of the individual patches. Two more BPF programs, one to limit ingress and one that limits egress and uses fq's Earliest Departure Time feature (EDT), will be provided in an upcomming patchset. Changes from v1 to v2: * bpf_tcp_enter_cwr can only be called from a cgroup skb egress BPF program (otherwise load or attach will fail) where we already hold the sk lock. Also only applies for ESTABLISHED state. * bpf_skb_ecn_set_ce uses INET_ECN_set_ce() * bpf_tcp_check_probe_timer now uses tcp_reset_xmit_timer. Can only be used by egress cgroup skb programs. * removed load_cg_skb user program. * nrm bpf egress program checks packet header in skb to determine ECN value. Now also works for ECN enabled UDP packets. Using ECN_ defines instead of integers. * NRM script test program now uses bpftool instead of load_cg_skb Martin KaFai Lau (2): bpf: Remove const from get_func_proto bpf: Add bpf helper bpf_tcp_enter_cwr brakmo (7): bpf: Test bpf_tcp_enter_cwr in test_verifier bpf: add bpf helper bpf_skb_ecn_set_ce bpf: Add bpf helper bpf_tcp_check_probe_timer bpf: sync bpf.h to tools and update bpf_helpers.h bpf: Sample NRM BPF program to limit egress bw bpf: User program for testing NRM bpf: NRM test script drivers/media/rc/bpf-lirc.c | 2 +- include/linux/bpf.h | 3 +- include/linux/filter.h | 3 +- include/uapi/linux/bpf.h | 27 +- kernel/bpf/cgroup.c | 2 +- kernel/bpf/syscall.c | 12 + kernel/bpf/verifier.c | 4 + kernel/trace/bpf_trace.c | 10 +- net/core/filter.c | 101 ++++- samples/bpf/Makefile | 5 + samples/bpf/do_nrm_test.sh | 437 +++++++++++++++++++ samples/bpf/nrm.c | 440 ++++++++++++++++++++ samples/bpf/nrm.h | 31 ++ samples/bpf/nrm_kern.h | 137 ++++++ samples/bpf/nrm_out_kern.c | 190 +++++++++ tools/include/uapi/linux/bpf.h | 27 +- tools/testing/selftests/bpf/bpf_helpers.h | 6 + tools/testing/selftests/bpf/verifier/sock.c | 33 ++ 18 files changed, 1444 insertions(+), 26 deletions(-) create mode 100755 samples/bpf/do_nrm_test.sh create mode 100644 samples/bpf/nrm.c create mode 100644 samples/bpf/nrm.h create mode 100644 samples/bpf/nrm_kern.h create mode 100644 samples/bpf/nrm_out_kern.c -- 2.17.1