[Bpf] My thoughts on the BPF BOF

Jari Arkko <jari.arkko@piuha.net> Wed, 29 March 2023 01:26 UTC

Return-Path: <jari.arkko@piuha.net>
X-Original-To: bpf@ietfa.amsl.com
Delivered-To: bpf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 86065C1524DB for <bpf@ietfa.amsl.com>; Tue, 28 Mar 2023 18:26:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.1
X-Spam-Level:
X-Spam-Status: No, score=-1.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KHxUiDbIarrm for <bpf@ietfa.amsl.com>; Tue, 28 Mar 2023 18:26:08 -0700 (PDT)
Received: from p130.piuha.net (unknown [IPv6:2001:14b8:1829::130]) by ietfa.amsl.com (Postfix) with ESMTP id 0C182C14CE29 for <bpf@ietf.org>; Tue, 28 Mar 2023 18:26:08 -0700 (PDT)
Received: from smtpclient.apple (dhcp-810d.meeting.ietf.org [31.133.129.13]) by p130.piuha.net (Postfix) with ESMTPSA id 5B1F0660118 for <bpf@ietf.org>; Wed, 29 Mar 2023 04:26:04 +0300 (EEST)
From: Jari Arkko <jari.arkko@piuha.net>
Content-Type: multipart/alternative; boundary="Apple-Mail=_4CE97F02-1621-44CC-9E1A-EAE88D806E64"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\))
Message-Id: <95056E22-ABAD-4AAB-BD7E-76ED7EC762EF@piuha.net>
References: <65105C09-BFBC-4F7F-831E-9DE6324263A3@piuha.net>
To: bpf@ietf.org
Date: Wed, 29 Mar 2023 10:26:01 +0900
X-Mailer: Apple Mail (2.3696.120.41.1.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/bpf/JTUytbt_kEscF0oC_P8LvRREFo0>
Subject: [Bpf] My thoughts on the BPF BOF
X-BeenThere: bpf@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Discussion of BPF/eBPF standardization efforts within the IETF <bpf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/bpf>, <mailto:bpf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/bpf/>
List-Post: <mailto:bpf@ietf.org>
List-Help: <mailto:bpf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/bpf>, <mailto:bpf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Mar 2023 01:26:12 -0000

IAB members are asked to provide feedback on BOFs, and we do this, but it should be noted that the feedback is a personal opinion, and often from a generalist perspective. In other words, here’s some feedback, hopefully it is helpful, feel free to do what you want with it, including ignoring it :-) 

What: I attended the BPF/eBPF BOF today. BPF is a filtering technology and a mechanism for representing small, verifiable programs that can execute in time critical contexts such as packet processing on path. BPF is mature technology, but its use is expanding, both in terms of different implementations of the different system components and use in applications across basic networking tasks, cloud frameworks, or even things like storage systems.

There’s a suggestion to formalize the core pieces of BPF as a standard. Parts (perhaps majority) of a forum currently doing this work are looking for a place to do this standard, and IETF is their primary choice. The stated reason for the need for standards is the expanding ecosystem, e.g., increasing number of NIC vendors wishing to develop hardware support. 

Discussion:

For background, there’s previously been a question about whether there are copyright or license issues with regards to IETF doing some of this work, e.g., are there parts of the existing material under GPL which might be difficult to use in IETF documents. Just before the meeting IETF lawyers indicated that due to dual licensing, Linux documents can likely be used in the IETF using our standard contribution rights model. This needs to be checked in detail of course, but that’s separate work and ruled out of scope for the working. (There may be another question about being able to use future IETF specifications as machine-readable input to code generation in implementations; it would be good to understand if this will be acceptable for the implementations.) 

But the main discussion point in the meeting was whether this is work that fits the IETF well in terms of not having competing organizations doing the same effort, how the work with the open source and other parts of the community are arranged, and if there’s suitable expertise in the IETF. Joel Halpern brought up his concern that the IETF does not have expertise or track record to solve these kinds of problems that are more about compilers and languages than networking. Most others believed that there’s space for IETF work on this, given some overlap between the communities, the stable situation with the existing technology, and its relationship to topics closer to the IETF (such as packets).

The chairs asked if the room felt the problem was well defined and scoped. The meeting was almost unanimous that it was. Same for recommending to start the work. The community seems to want the work to go ahead by a larger level of consensus than we’re normally used to in IETF BOFs.

Conclusion: In my personal opinion there’s likely a possibility for the IETF to do successful work in this space, if it is rational and narrowly-scoped. There does seem to be a community of interested parties, including many with different parts of the expertise that is required and some who are willing to come to the IETF to do the work.

I do have one concern however. I think the meeting discussed the issues only in the abstract, and spent almost no time discussing the actual list of work items. There’s a draft list of work items in the charter (https://datatracker.ietf.org/doc/charter-ietf-bpf/) and the room hums seemed to say that the charter is acceptable. However, to what extent has this been discussed on list or somewhere else? I personally thought some items were quite clearly feasible while I wasn’t so sure of others. For instance, the basic definition of the instruction set seems clearly something that should and could be done. But at the same time, what about extensions or things built on top or architecture that relate to specific usage outside network, e.g., linux or storage systems? Also, the list is quite long and unordered. Perhaps step one (as also suggested in the meeting) is to publish specifications for the core BPF instruction set as currently defined, and then tackle the next steps. E.g., a next set of the instructions set with some new extensions, or some of the other activities suggested in the current version of the charter.

Jari