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=-0.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS 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 88E58C43381 for ; Tue, 19 Feb 2019 18:29:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 548F12147C for ; Tue, 19 Feb 2019 18:29:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n5UgNknC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726612AbfBSS32 (ORCPT ); Tue, 19 Feb 2019 13:29:28 -0500 Received: from mail-pg1-f193.google.com ([209.85.215.193]:43244 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725807AbfBSS31 (ORCPT ); Tue, 19 Feb 2019 13:29:27 -0500 Received: by mail-pg1-f193.google.com with SMTP id v28so10506834pgk.10 for ; Tue, 19 Feb 2019 10:29:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=X7mwRl8TRmZtY6Dy26dehpSIaq83X2eXdRTq3YpFI1U=; b=n5UgNknCA84qkTNigwD/SPkI/+Q066ggkgdd9QML7ZNG8f77Kqu56x+Fdgai7s5TSZ NmfpLH38THKkLaW+5a8QycGG1IWkqvGZ4FCQCGDK7UEyj8YlcIDzLpCygxwJaZ//NRE4 B78x5TwzCevkAjlSqU+Li/Jx/FG73nlViHx17uqDlsbQl1GsHYZurnU98A/sPGbt/wAB GNiMWMrCPyLydj5M681twuyOqXppAvDlJoFWmUd+KHcCqFWw+5z3DJcrHkT8MTUO/TqN hlNOUFeixXWirJ6EyHrKsafHe8Qcpp8ucw/F0rQM3S0wG9E6CiXCunCMqAhUM7MNmVWW krWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=X7mwRl8TRmZtY6Dy26dehpSIaq83X2eXdRTq3YpFI1U=; b=q85xB3xX8JDWdpRG7SyqXoJSQPkTzuX93OMrfLxlcP3Qgs6t7ivUel8cT1ecHRl7MT wWAt+EgiMqr+BBaJ/wOo/gIH/ef6KQfzoGcKHXaor0v8giyn+TTHMeVPz59KEah9RhIQ e90wr75Tfq8DuRJEFwbsTH4XLjIso00ScRSjqcPKMTabaOKu+t2tWicb/Qutg4IS4Dsc dv1TZo/ixZf8lzaOANUi1cLeN8ncw+nvKxw3E2A+IyTXdb0Plw9fzMNTy9bG4r53D6Gz B03zkSesfR+RkT3R7feCI+753nsUEDdTf/E5NhCQ/z2NgPYN3EF6wISLIEoIiHBf4n4X yiOg== X-Gm-Message-State: AHQUAua1MumpGd/pgOMG8PZSfRKtLvHjZuONtkW0YS/F0F1YknVkgXk+ 3G8DtMgvQ2BBEGID8nQJvEw= X-Google-Smtp-Source: AHgI3IYiY0lFjXpHvIdqPygODNtXQ7AloFs8kAvKA1mQWA/V+R9KoTRQCfYpkgDP0MuFRoXSZgkK0A== X-Received: by 2002:a63:4913:: with SMTP id w19mr24843571pga.394.1550600966969; Tue, 19 Feb 2019 10:29:26 -0800 (PST) Received: from ?IPv6:2620:15c:2c1:200:55c7:81e6:c7d8:94b? ([2620:15c:2c1:200:55c7:81e6:c7d8:94b]) by smtp.gmail.com with ESMTPSA id f16sm27641897pgg.20.2019.02.19.10.29.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Feb 2019 10:29:26 -0800 (PST) Subject: Re: [PATCH bpf-next 7/9] bpf: Sample NRM BPF program to limit egress bw To: brakmo , netdev Cc: Martin Lau , Alexei Starovoitov , Daniel Borkmann References: <20190219053837.2086945-1-brakmo@fb.com> From: Eric Dumazet Message-ID: Date: Tue, 19 Feb 2019 10:29:25 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190219053837.2086945-1-brakmo@fb.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On 02/18/2019 09:38 PM, brakmo wrote: > + > +static __always_inline void get_nrm_pkt_info(struct bpf_sock *sk, > + struct nrm_pkt_info *pkti) > +{ > + if (sk->family == AF_INET6 || sk->family == AF_INET) { > + pkti->is_ip = true; > + pkti->is_tcp = (sk->protocol == IPPROTO_TCP); > + if (pkti->is_tcp) { > + struct bpf_tcp_sock *tp; > + > + tp = bpf_tcp_sock(sk); > + if (tp) > + pkti->ecn = tp->ecn_flags & TCP_ECN_OK; > + else > + pkti->ecn = 0; > + } else { > + pkti->ecn = 0; > + } > + } else { > + pkti->is_ip = false; > + pkti->is_tcp = false; > + pkti->ecn = 0; > + } > +} > This looks very strange. ECN capability is per packet, and does not need access to the original TCP socket really. We definitely can use ECN with UDP packets. IMO this sample looks like a work in progress. EDT model allows to implement full shaping (not only virtual one) by twaking/advancing skb->tstamp (see commit f11216b24219a bpf: add skb->tstamp r/w access from tc clsact and cg skb progs) Implementing shaping with the need of accessing TCP sockets seems a layering violation, a lot of things can go wrong with this model. For instance, you wont be able to offload this.