[go: up one dir, main page]

|
|
Log in / Subscribe / Register

Standardizing BPF

April 10, 2023

This article was contributed by David Vernet

The extended BPF (eBPF) virtual machine allows programs to be loaded into and executed with the kernel — and, increasingly, other environments. As the use of BPF grows, so does interest in defining what the BPF virtual machine actually is. In an effort to ensure a consistent and fair environment for defining what constitutes the official BPF language and run-time environment, and to encourage NVMe vendors to support BPF offloading, a recent effort has been undertaken to standardize BPF.

BPF programs are written in C, and compiled into BPF bytecode. Like other bytecode instruction sets, BPF programs are platform-independent and just-in-time (JIT) compiled. For a long time, "platform-independent" for BPF simply meant the ability to run BPF programs on multiple different architectures on Linux. That definition has expanded in recent years, with Microsoft implementing a version of BPF for Windows, and network-interface vendors, such as Netronome, providing the ability to offload BPF networking programs. NVMe vendors are also looking into supporting offloading functionality to BPF for storage devices with a new framework called eXpress Resubmission Path (XRP), though this effort is currently stalled due to BPF not being standardized.

What's in scope for standardization?

BPF is not simply an instruction set, but rather a combination of an instruction set and a run-time environment. The latter must, at a minimum, include the necessary logic to execute the BPF program; either through an interpreter, or by JIT-compiling the program directly into native instructions. Additionally, it may include features such as static verification of the program, performing type checking using information provided via BTF, built-in data structures, and more. While the BPF instruction set architecture (ISA) is in scope for standardization, it's less clear which other aspects of BPF are appropriate.

This question was posed by Christoph Hellwig in his 2022 LSFMM/BPF presentation. While all of the participants in the discussion agreed that standardizing the ISA is the highest priority, there was also discussion about whether to standardize certain run-time semantics such as what happens when a program divides by zero. In the discussion, Alexei Starovoitov explained that, initially, BPF would simply exit the program if a divide by zero was encountered. After realizing that abruptly exiting a program can be dangerous (it may, for example, have needed to clean up some state), the semantics were changed to instead simply return zero and produce no exception; matching the behavior of aarch64.

The discussion concluded with a general agreement that the first order of business was to fully document and decide on a versioning system for the ISA.

In a follow-up email, Hellwig suggested that the ISA should be versioned according to Clang CPU levels — the "processor version" used by Clang when compiling BPF programs. Starovoitov pointed out in response that multiple instructions have, in the past, been added to the BPF ISA without a bump in the Clang CPU level, so the CPU levels weren't a clean match with the BPF ISA versions. Starovoitov suggested a number of other approaches, such as versioning with an upstream kernel commit hash, or simply declaring the current ISA as 1.0 and bumping it for every new instruction. Hellwig was unenthusiastic about the idea of using kernel commit hashes, but was amenable to the idea of considering the current ISA as version 1.0.

Following these discussions, the BPF ISA documentation has been improved significantly, with all of the current instructions being fully documented. The documentation page lists the instruction set as v1.0, so it would seem that Starovoitov's idea of treating the current ISA as v1.0 was chosen as the way forward.

Yet, while the current ISA is fully documented, there are still new instructions being added that will presumably be included in the official v1.0 BPF ISA. Yonghong Song proposed a set of six such instructions to be included in the new -mcpu=v4 Clang CPU level. These will surely not be the last instructions added to the ISA, but for now they appear to be the last instructions that will be added to v1.0.

Choosing a standards organization

In addition to finalizing the ISA and deciding what else is in scope for standardization, there is another important question to resolve before standardization can begin in earnest: with which organization will the standard be ratified?

The natural choice is the eBPF Foundation, which was founded as a subsidiary of the Linux Foundation in December 2021; the foundation is responsible for managing both the finances and the technical direction of the BPF project. For technical matters, the foundation has a steering committee composed of engineers from various companies throughout the tech industry. Were BPF to be standardized through the eBPF Foundation, the steering committee would presumably be the responsible party.

Standardizing through the eBPF Foundation would likely be the most straightforward option, incurring the smallest amount of latency in achieving consensus. It does, however, have a major drawback: the eBPF Foundation has never published a standard. This, on its own, isn't necessarily a hard blocker for publishing (every organization had to publish their first standard at some point), but it does mean that the eBPF Foundation would have to go through the standardization process without the benefit of prior experience. In this regard, while the bureaucracy of a more recognized organization could be considered a pain point, it could also be considered a feature if that organization's processes and experience help to ensure that the standard is well considered and of the highest quality. On the other hand, some members of the steering committee, such as Dave Thaler, have experience from working with other standards organizations such as the Internet Engineering Task Force (IETF).

One alternative to publishing with the eBPF Foundation is publishing directly through ISO, an international standards organization that is home to the C programming language standard, among others, that we all know and love. Standardizing with ISO would likely guarantee the strongest possible worldwide consensus, as it is an international standards body with a rigorous and widely reviewed ratification process. For that reason, it is also likely to be the most difficult and time-consuming option. While I am by no means an expert in the domain of standardizing with ISO, it appears that, in order to even consider standardizing BPF with the ISO, the standard would first have to be brought before the American National Standards Institute (ANSI), (the ISO member representing the US), which would then propose the idea to the larger international ISO community. Ratifying the BPF standard with the ISO may be a desirable long-term goal, but seems unlikely to be the approach taken for the initial standardization effort.

IETF discussions

Yet another alternative is standardizing with the IETF, which is best known for creating the standards that comprise the "Internet Protocol Suite", more commonly known as TCP/IP, though it also publishes standards for non-networking topics such as file formats. The IETF is also an international standards body, though its process for standardization is less onerous than the ISO. As such, it may represent an ideal middle ground between the eBPF Foundation and the ISO.

Discussions have been ongoing between members of the BPF and IETF communities, including on an IETF mailing list, following a BPF standardization meeting at the IETF 115 conference in 2022 as to whether IETF is an appropriate venue for BPF standardization. The topic was recently revisited at IETF 116 in 2023. Despite there being some vocal opponents among the attendees, the overall consensus in favor of standardizing BPF was apparently quite strong relative to the norm for IETF. Jari Arkko, an IETF Area Director (AD), posted this summary on the IETF BPF mailing list:

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.

Yet, while IETF as an organization seems enthusiastic to move forward (pending some legal matters as discussed below), Arkko also pointed out that more work needs to be done in terms of formally defining what is in scope for standardization:

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.

Arkko certainly has a point. As discussed above, the scope of standardization for BPF could be broad. If BPF proceeds with the IETF, achieving consensus on what will be in scope for the first publication of the standard will certainly be one of the major work items.

Now that some sort of consensus has been achieved in the IETF community, it seems likely that BPF standardization will proceed through the IETF. Before work can formally begin in earnest, however, there are still a few legal matters to finalize. The co-chairs of the IETF 116 BPF BoF meeting, Suresh Krishnan and Lorenzo Colitti, mentioned that the IETF legal counsel was still doing due diligence on some questions related to licensing and copyright. Though these legal matters are expected to be resolved without issue, final approval has yet to be given. Assuming there are no legal hiccups, the next step would be to formally create an IETF working group, which would likely be co-chaired by Krishnan and myself.

Worth noting as well is that BPF is not the first major subsystem in the kernel that is undergoing a standardization effort. Virtio was first standardized through the Organization for the Advancement of Structured Information Standards (OASIS) back in March 2016, and there are lessons to be learned from that effort. For instance, Rusty Russell, who led this effort, also made it a point to shop around for different standards organizations. According to the LWN article linked above, he was warned that, "some standards groups exist primarily to slow things down", which did not suit his goals of finding an organization that was "interested in the creation of useful standards without a lot of unnecessary hoops to jump through." The BPF community will have similar goals of its own and, so far, it seems that it is following virtio's example of putting in the legwork to find an organization whose processes match the project's needs.

It will be interesting to see where the standardization effort goes from here. Some interested parties, such as the aforementioned NVMe vendors, seem to be deferring substantial investment until BPF is fully standardized. There is thus a significant incentive for the effort to proceed. In the meantime, we can at least enjoy the steady stream of high-quality BPF documentation inspired by this standardization effort.

Index entries for this article
KernelBPF/Standardization
GuestArticlesVernet, David


to post comments

Standardizing BPF

Posted Apr 10, 2023 21:58 UTC (Mon) by jhoblitt (subscriber, #77733) [Link] (5 responses)

I'm surprised there is so much pressure to run through a traditional standards organization. AFAIK, the wasm spec hasn't been submitted to a formal standards body and that doesn't seem to have slowed down it's adoption. I guess the stability concerns for storage device firmware are greater than for a browser which may be updated daily -- probably a good thing.

Standardizing BPF

Posted Apr 10, 2023 22:52 UTC (Mon) by kaesaecracker (subscriber, #126447) [Link] (3 responses)

There is https://www.w3.org/TR/wasm-core-1/, I think HTML5 had the recommendation status for a long time too.

Standardizing BPF

Posted Apr 11, 2023 6:42 UTC (Tue) by NYKevin (subscriber, #129325) [Link] (1 responses)

HTML5 is weird. Prior to 2019, it was published by both W3C and WHATWG, both of which considered their version to be authoritative. WHATWG was (and still is) publishing a "living standard" that changes as the web develops, while W3C was essentially making "snapshots" of the WHATWG's work with minor changes (or at least, that is how Hixie characterized it at the time - the W3C might have disagreed with him, but I wasn't able to find their public comments on the matter). The current agreement[1] is essentially that the WHATWG will write "drafts" and then the W3C will republish them as "recommendations" (subject to a lot of bureaucracy so that disagreements can be resolved if necessary - but for the most part, disputes are resolved within the WHATWG's internal processes, and the W3C merely reserves the right to fork as a last resort).

Arguably, this was the inevitable result of a conflict between standards body and implementers - if nobody will implement your standard, then your standard is worthless paper. Unfortunately, quite a few standards bodies don't seem to have realized this, perhaps because software is uniquely amenable to rapid divergence between standards and implementations. Contrast, for example, the IETF's "rough consensus and running code" practice with, say, the ISO's army of bureaucrats.

[1]: https://www.w3.org/2019/04/WHATWG-W3C-MOU.html

Standardizing BPF

Posted Apr 11, 2023 12:36 UTC (Tue) by excors (subscriber, #95769) [Link]

HTML5 has had a rather messy history. It started in 2004 when some browser developers wanted to work on modest improvements to HTML4 forms, but the W3C voted no: the future was XHTML2. The browser developers realised they didn't need the W3C at all; its legitimacy and authority over web standards was largely a fiction, and they had enough market share that they could just write and publish their own specification and it would become the de facto standard, so they formed the WHATWG to do that.

They also had a very different culture: the W3C was quite a closed environment, with teleconferences and private mailing lists limited to W3C Member organisations and Invited Experts, and a formal consensus process, with many participants from an academic background. The WHATWG was mostly very open, based around a public mailing list and IRC channel where any random person could join and participate in discussions, regularly publishing working drafts from the public Subversion repository, and I think the most active participants were largely open-source-friendly software engineers and others with a similar background and perspective. Also the WHATWG was a benevolent dictatorship where one person (Ian Hickson) made every decision and wrote every line of specification text, and its success depended entirely on him doing a good job over many years.

The biggest problem for the WHATWG was that Microsoft was unwilling to get involved without a proper patent policy. Meanwhile the W3C (who did have a patent policy) realised that XHTML2 was not the future and they had lost control of the evolution of the web, so they reluctantly joined forces in 2007. For the WHATWG, it was seen as a necessary evil for getting Microsoft on board - there was basically no interest in the W3C Process, because most WHATWG participants much preferred their own way of working, so both groups worked in parallel on the same document under the same editor but with different discussion forums and different decision-making processes.

Perhaps unsurprisingly, the relationship between the two groups was highly acrimonious. They had some fundamentally different perspectives on technical and social matters and couldn't get along with each other, but both believed the future of the web was too important to back down. In the early years, I think that made the W3C's HTML WG a miserable place for everyone and the mailing list was full of endless flame wars and it achieved basically nothing, while most of the technical work continued in the WHATWG.

If I remember correctly, at first both groups published different documents based on the same source file: sometimes the W3C would formally make a decision that the editor strongly disagreed with, so he would include both variations in the source and a preprocessor would pick the correct text for each publication. Later the two sides drifted further apart, as the W3C focused on getting snapshots of the specification through their Recommendation process while the WHATWG continued evolving it incrementally (the Living Standard, which better matches how HTML is implemented and deployed in practice), resulting in many more incompatible forks and much confusion and unhappiness.

I stopped paying attention around that time, but it sounds like the WHATWG formalised its processes and adopted an IPR policy in 2017 (presumably so Microsoft could work with it directly), and the W3C stopped its parallel work in 2019 and now most of its old URLs simply redirect to the WHATWG Living Standard, to solve the confusion caused by forks. So it appears the WHATWG 'won' in the end, but it was a painful journey.

I'm not sure what my point was, but maybe there's a lesson like: When standardising a technology where there's a natural incentive for interoperability (so you don't need to e.g. legally mandate that people follow the standard), the name or reputation of the organisation doesn't matter - you can even make up your own organisation and succeed. The most important factor is having the right people involved, which depends largely on culture (who you'll attract to participate and how well they'll work together) and IPR policy (so their employer will allow them to participate), so that you can do a technically competent job and get buy-in from a critical mass of implementers, and then you'll have a successful standard.

Standardizing BPF

Posted Apr 11, 2023 8:38 UTC (Tue) by anselm (subscriber, #2796) [Link]

Note that with the W3C, documents don't get more official than “recommendation”. What the W3C calls a recommendation is what ISO and friends would call a standard.

Standardizing BPF

Posted Apr 17, 2023 16:44 UTC (Mon) by jontrossbach (guest, #164668) [Link]

Very interesting write-up, still have a question though. My understanding of most RFCs and how they got approved comes from Peter Dordel's book AItCN (~pg 37, 1.15 IETF and OSI). In summary, most successful RFCs are the results of an industry generally already having been standardized around a somewhat accepted standard. Attempts to generically define an RFC in a top down manner have (not always but) generally failed or gone less smoothly in the past. Dordel points out the reason OSI Layers are so sloppily defined is because it was largely a top down definition many often ignored or didn't fit squarely into.

Is there a somewhat interoperable working standard most in the industry are already working off of for eBPF or is this an attempt at something like a top down RFC definition? If the former, then is that standard largely defined anywhere yet?

Or are we just in the phase of asking the question: should this ever be an RFC at all for any reason?

Also, what are the best resources to look at for what will eventually likely be the proposed standard? I seem to be confused on that as well. I think a chart showing who is already using what would be helpful in trying to wrap ones head around the details of what is going on here, if we're mostly to a point where such a chart can be made, that is.

Standardizing BPF

Posted Apr 10, 2023 23:23 UTC (Mon) by tialaramex (subscriber, #21167) [Link] (22 responses)

ISO is definitely the wrong choice. ISO is a clumsy bureaucracy, and since this is IT, it actually wouldn't want this directly anyway, it would want it to go to JTC1, which is an ISO sub-committee, which in turn has sub-committees, which also in turn have sub-committees. WG21 aka "The C++ Standards Committee" is one of those sub-sub-committees of JTC1. That's the levels of bureaucracy we're talking about.

ISO 216 is the sort of thing worth sending to ISO. A4 paper was the same size in 1975 as it was in 2000, and doubtless in 2025 and to the extent they need much paper in 2050 doubtless A4 will be the same, a successful standard. The A-series paper sizes are excellent, but not so obvious as to have no need to write down why we did that.

ISO 14882 is useless. The C++ programming language as actually used changes both faster and less steadily than ISO processes can tolerate, and so every three years a new ISO standard is issued (14882/2023 will be published this year) but they just reflect more or less arbitrary snapshots, the existence of 14882/2020 was neither necessary nor sufficient for implementations to exist - work on core parts of "C++ 20" was done before the document was finalised, and is not yet complete. To achieve this, a large volume of work is needed for each of these revisions of the document.

eBPF isn't exactly like the C++ programming language, but it's a lot more like it than it is like A-series paper.

The IETF looks like a reasonable fit in context, if they'll have it, which it sounds like they'd allow. An IETF Working Group, unlike an ISO Working Group, is actually responsible for the work (why ISO calls them "working groups" I have no idea) and so just as TLS writes the TLS RFCs, and ACME writes the ACME RFCs (which make Let's Encrypt work in case you wondered), a hypothetical EBPF Working Group would write RFCs about EBPF. If you have more than a handful of people, especially if they don't live near each other, who'd collaborate to do this work, then the IETF seems like a reasonable host. I can't speak to the suitability of a Linux Foundation affiliated entity.

Standardizing BPF

Posted Apr 11, 2023 0:42 UTC (Tue) by kschendel (subscriber, #20465) [Link] (12 responses)

If BPF were going to be standardized by ISO or IEC, presumably it would go into JTC 1/SC 22, which is the programming languages subcommittee; and probably into a new SC 22 Working Group. (and yes, Working Groups do typically do the actual work.) It's possible for a JTC 1 SC/WG to move quickly; it's just not the norm.

A more likely path would be for someone like the IETF to come out with a document, and then work with JTC 1 for a PAS (Publicly Available Specification) based on it.

Standardizing BPF

Posted Apr 11, 2023 1:36 UTC (Tue) by tialaramex (subscriber, #21167) [Link] (11 responses)

WG21 certainly doesn't do the actual work. Contrast what happened to say Epochs with what happened to eSNI

Eric Rescorla wrote and presented a single draft document, sketching how eSNI could work, almost immediately after the group (TLS) had decided that encrypting SNI wasn't a solved problem and so they would publish only a "Want to have" document describing why this is a problem and what desirable properties of a solution would be - not a proposed way to actually do it. The group adopted eSNI, and (eventually renamed Encrypted Client Hello) subsequent drafts were published under the group's name, and the responsibility for driving this document, despite Eric's name as lead author, is shared by the group. There have been sixteen subsequent drafts over several years.

Epochs meanwhile was a proposal for C++ to have something akin to Rust's Editions. A way to adopt changes to the language syntax on a per-module basis. A sketch was presented to a preliminary panel, which agreed it could be presented to a sub-committee of the (sub-sub) committee for C++, that committee decided that although this was a potentially interesting idea there were further questions to answer.

And that's it. That's all that was done, because despite being a "Working Group" WG21 takes no responsibility to actually do any of this work, and so unless the author of the original proposal is willing to extensively rewrite it and present it again, and again, and again, perhaps for many years (as often happen check out the miserable story of how #embed finally made it into C23!) until the committee is satisfied that it's finished - it is discarded and plays no further role beyond historical.

Standardizing BPF

Posted Apr 11, 2023 10:28 UTC (Tue) by magfr (subscriber, #16052) [Link]

The repeated rewrite of the world is something the kernel community should be familiar with, quite a few patches have ended up in that particular hell over the years.

Standardizing BPF

Posted Apr 11, 2023 13:13 UTC (Tue) by ojeda (subscriber, #143370) [Link]

It depends on what you mean by "work". The Working Groups (and the Study Groups within them, too) definitely do work, such as discussing and voting on proposals, reviewing national comments, performing editorial reviews and so on. In many cases, paper authors are part of the committee, and some of those papers are written as a consequence of discussions within the committee, too.

That is not to say ISO is ideal for programming languages at all, but saying work does not happen there is a bit harsh, especially for those that put their own free time into it.

Standardizing BPF

Posted Apr 12, 2023 16:26 UTC (Wed) by mathstuf (subscriber, #69389) [Link] (8 responses)

> Epochs meanwhile was a proposal for C++ to have something akin to Rust's Editions. A way to adopt changes to the language syntax on a per-module basis. A sketch was presented to a preliminary panel, which agreed it could be presented to a sub-committee of the (sub-sub) committee for C++, that committee decided that although this was a potentially interesting idea there were further questions to answer.

I was there for the presentation. The questions asked are certainly relevant and not easy to answer. Given the number of things that could actually be fixed by it (without rewriting a *lot* of rules), it didn't seem worth the weight. Note that deprecating `0` and `NULL` for `nullptr` were in the "not sure how that will be done" bucket because ADL is a thing and getting a different overload/lookup that still works with `0` while wanting it to be `nullptr` sounds like a rich vein of false positive diagnostics to me. Much better to instead use something like `clang-tidy` to detect "you can use better spellings for things here" than trying to force it into a language that cares about how things are explicitly spelled as much as C++ does.

> And that's it. That's all that was done, because despite being a "Working Group" WG21 takes no responsibility to actually do any of this work, and so unless the author of the original proposal is willing to extensively rewrite it and present it again, and again, and again, perhaps for many years

I don't know who else you think should do the work. To translate to the Rust world: do Rust RFCs have anyone other than the authors to push them forward? Python PEPs? Is it the obligation of the Rust developers to do as much work as possible on every RFC submission? How about pre-RFCs (which is what SGs usually work with)?

(FD: WG21 member)

Standardizing BPF

Posted Apr 13, 2023 2:13 UTC (Thu) by tialaramex (subscriber, #21167) [Link] (7 responses)

It seems to me I explained exactly what the alternative was in my original post by referring to how this happens in the IETF. The Working Group could, and should, (but in WG21's case won't) actually do the work. Proposals for what problems should be solved and a sketch of how the group could go about solving them are quite different from "proposals" which detail finished work complete with wording for the standards document.

I noticed that even though Bjarne's recent proposal is both woollier than Epochs and attacking a problem that's much less amenable to technical solution, it somehow obtained a large majority vote in favour rather than just the endless stream of questions. It seems to me that one of the subtle good things about Rust is that while Graydon's contribution isn't ignored, nobody is under any illusions that this is Graydon's language, indeed if anything Val is likely closer to what Graydon had in mind that Rust today. In contrast people are still asking if Bjarne will write a fifth edition of his book about what is clearly still his programming language.

Standardizing BPF

Posted Apr 13, 2023 14:44 UTC (Thu) by kpfleming (subscriber, #23250) [Link] (6 responses)

> It seems to me I explained exactly what the alternative was in my original post by referring to how this happens in the IETF. The Working Group could, and should, (but in WG21's case won't) actually do the work. Proposals for what problems should be solved and a sketch of how the group could go about solving them are quite different from "proposals" which detail finished work complete with wording for the standards document.

Having participated in both WG21 and in various IETF WGs, I don't understand the distinction you are trying to make here. A WG is a collection of people providing their time and expertise to the combined effort, and that's it. No member of any WG is obligated to do any amount of 'work' on any proposal, they choose to do so.

In both cases, if there are not a sufficient number of WG participants motivated to engage with the authors of a draft document, it won't move forward. If the WG21 membership can't find a reasonable number of people to work on a proposal for 'Epochs', that's fine, it won't move ahead. The same thing happens all the time in IETF WGs; WGs call for votes on whether to accept an author's document as a WG document and start the process, and quite often those votes result in 'no' and the document does not get accepted.

Standardizing BPF

Posted Apr 13, 2023 21:47 UTC (Thu) by tialaramex (subscriber, #21167) [Link] (5 responses)

What "combined effort" though? I agree this is how IETF working groups behave and I would like to think that in my small way I've contributed here and there. In contrast I haven't seen much evidence of this combined effort from WG21 in the ~3 years I've been studying it. What I see are individual (or small self-selected group) contributions, brought before a series of committees, presented to people who may or may not have any interest in the work done for their vote, and thus the contribution's destiny is sometimes apparently at a whim beyond the ken of mortal man.

This applies whether the scope is narrow or broad, whether it's a technical change to the language or library per se or just improving how the document (because WG21 doesn't produce an implementation, just the document) is worded. AIUI For the very biggest tasks - when they are recognised properly in advance - sometimes a deliberate task force is created to attack them, but this is exceptional.

But let's be more specific here, take P2806 (Barry Revzin's "Do expressions"). I say the only useful "vote" is on the question of whether the problem identified needs to be solved (obviously IMO yes but who am I), and if that's resolved in the affirmative, it's everybody's shared responsibility to get that done. That doesn't mean everybody is necessarily signed up to do equal work, but it does mean either you're helping get that done, or you're getting out of the way. That's what a combined effort is.

The WG21 process means instead that members can contribute nothing to this effort, and then show up, observe that Barry's do expressions are very ugly (sorry Barry but they are) and that Barry's argument against introducing yet more Undefined Behaviour contradicts WG21 orthodoxies in some ways, and vote "Strong against" without proposing what else to do about the problem instead. Is that work? By some definitions I'm sure it is, but IMNSHO it's not _useful_ work.

Standardizing BPF

Posted Apr 14, 2023 15:41 UTC (Fri) by kschendel (subscriber, #20465) [Link] (4 responses)

> The WG21 process means instead that members can contribute nothing to this effort, and then show up, observe that Barry's do expressions are very ugly (sorry Barry but they are) and that Barry's argument against introducing yet more Undefined Behaviour contradicts WG21 orthodoxies in some ways, and vote "Strong against" without proposing what else to do about the problem instead. Is that work?

So what? Unless your posited member manages to convince others, an against vote need not mean anything. JTC 1 WG's operate by consensus, not vote-counting, and consensus doesn't mean unanimity.

In the WG's I participate in, said member would have been told that (s)he should have brought up the issue sooner, and would be invited to bring a solution to the table. (Unless of course the disagreement sways sufficient opinion in the absence of a solution.)

You seem to be insisting that "work" means that the WG members produce output -- which, in the standards world, means a document -- in a collaborative meeting of the members. Not all WG's choose to operate that way, and it's up to the members and the Convenor to set specifics. Quite a few WG's operate by one or more members producing a proposal document which others can read and comment on, with the actual WG meeting mostly being a review, optional discussion, and blessing (or not) of the proposal. I'll note that this is at least partly due to the fact that in prehistoric times, before the pandemic and Zoom, WG's usually only met a few times a year (because travel), and it would simply be impractical to leave all the "work" to the actual meeting.

Standardizing BPF

Posted Apr 16, 2023 16:59 UTC (Sun) by tialaramex (subscriber, #21167) [Link] (3 responses)

> So what? Unless your posited member manages to convince others, an against vote need not mean anything. JTC 1 WG's operate by consensus, not vote-counting, and consensus doesn't mean unanimity.

Consensus functions as a fig leaf. If they actually cared about consensus they wouldn't count votes and they definitely wouldn't care so very, very much about who gets to vote, and under what circumstances, which they do.

> I'll note that this is at least partly due to the fact that in prehistoric times, before the pandemic and Zoom, WG's usually only met a few times a year (because travel), and it would simply be impractical to leave all the "work" to the actual meeting.

And here we get to the crucial difference in why the IETF's Working Groups are able to actually do the work. By its nature this work happens electronically. When ISO 216 was standardised it's very understandable that ISO weren't able to do this (although note that the Mother Of All Demos happens *substantially before* ISO 216 standardisation so this was definitely not categorically impossible). But it didn't take a pandemic in 2020 to change this, it was practical for most IETF participants for 30+ years.

Most of the TLS 1.3 document (RFC 8446) came together as git PRs. When someone had a great idea for padding (check it out, TLS 1.3 padding is rather clever), they just wrote an email, they didn't need to wait until London, do a slide presentation and hope everybody present understood why it was a good idea and wasn't too hungry / playing Candy Crush / hungover. Meanwhile WG21 considers it an important innovation that in 2023 it is now able to allow people to participate without _flying to Hawaii_ at last.

The facts speak for themselves. ISO would be a disaster for BPF standardisation. I don't know if the IETF is a perfect fit, but it can't be worse than ISO for this purpose.

Standardizing BPF

Posted Apr 17, 2023 7:34 UTC (Mon) by kschendel (subscriber, #20465) [Link] (2 responses)

> > So what? Unless your posited member manages to convince others, an against vote need not mean anything. JTC 1 WG's operate by consensus, not vote-counting, and consensus doesn't mean unanimity.
> Consensus functions as a fig leaf. If they actually cared about consensus they wouldn't count votes and they definitely wouldn't care so very, very much about who gets to vote, and under what circumstances, which they do.

I have no idea what you're on about here. I'm not familiar with SC 22/WG 21, which I gather is the WG you are referring to; if it operates that way, it operates very differently from any of the working groups I'm familiar with. We do not, in fact, count votes; and if you're an expert qualified (by your national body) to sit on the working group, you have as much say as anyone else. That's universal across JTC1 as far as I understand it.

Standardizing BPF

Posted Apr 18, 2023 0:06 UTC (Tue) by tialaramex (subscriber, #21167) [Link] (1 responses)

WG21 explicitly tallies votes as I mentioned and you can even watch video of Bjarne Stroustrup crowing about just how many votes his woolly "strategy" to address the C++ safety problem got.

OOXML is also a product of JTC1. Obviously creating a "standard" that is in practice owned by single for profit corporation, in the face of an existing standard (ODF) that's widely used for the exact same purpose - is nonsense, yet somehow "consensus" was achieved to publish this as a standard.

How? By simply paying for the necessary votes, because talk of consensus is just a fig leaf.

I have no insight into what work you do, perhaps you are earnestly involved in valuable technical standardisation which makes the world a better place, but you should know that under ISO if somebody wants to splash cash to destroy everything you've ever worked on, ISO will claim there was "consensus" to go with whatever nonsense was bought and paid for and disregard your expertise.

Standardizing BPF

Posted Apr 18, 2023 2:10 UTC (Tue) by mathstuf (subscriber, #69389) [Link]

Note that determining consensus is up to the chair of the group at hand (at the SG level at least). So while there may be 3 SA and 40 SF, if the 3 SA are implementers that say "this is not possible and we cannot implement this", a result of "no consensus" can come from such a vote (though the implementers not having swayed anyone in the discussion is…interesting for this hypothetical). That's because while the paper might get through and into the standard, if nothing implements it, what is gained? Such things also usually end up with NB veto threats. SG votes are strongly affected by who is in the room at the time and nerd sniping the topic to elsewhere is…possible (and are why papers require a champion present).

Note that the votes that ISO actually cares about are plenary votes at the WG level with NB entities as the voters and are generally unanimous (because if an NB is angered enough, they can throw all kinds of road blocks in the way of the entire standard).

ISO is problematic

Posted Apr 11, 2023 9:43 UTC (Tue) by chris_se (subscriber, #99706) [Link] (8 responses)

In addition to all the issues you mentioned with ISO, there's another, much bigger thing going on here: access to their standards is ludicrous. Take ISO 8601, for example, which just describes how dates can be represented as strings in a universal manner. (I.e. the current date could be written as either "2023-04-11" or "20230411" according to ISO.) That this standard exists is great, I actually like it. But if you want to read the standard to know how to specify dates according to it, officially you have to pay 166 CHF; and for the second part regarding extensions you have to pay 187 CHF. (As of the time of writing this, and this is for the PDF/ePUB version!)

There are draft versions of that particular standard online, and there are some others for which this is true as well, but not for most of them. I think nobody should use ISO to standardize anything new until ISO changes how they operate. I get that when working on something that's already part of ISO one might have to bite the bullet here, but I see no reason to support that organization for anything new.

ISO is problematic

Posted Apr 11, 2023 11:57 UTC (Tue) by hkario (subscriber, #94864) [Link]

Hear! Hear!

ISO is primarily dedicated to selling PDFs you're not allowed to share with other people for ridiculous prices and rubber stamping other people's work.

Anything but them, please.

(And I'm speaking that from the privileged position of actually being able to afford them.)

ISO is problematic

Posted Apr 11, 2023 14:43 UTC (Tue) by jhoblitt (subscriber, #77733) [Link] (2 responses)

Restricting distribution of a "open standard" with copyright and hiding it behind a paywall is almost as reprehensible as some US states trying to do the same with the text of state law.

How much revenue does ISO actually derive from selling copies of standards? I have little doubt that the monetization value is dwarfed by the wasted economic activity of organizations having to run the formal proceurement gauntlet every time a copy of CHF 166 standard is needed.

ISO is problematic

Posted Apr 11, 2023 17:05 UTC (Tue) by chris_se (subscriber, #99706) [Link] (1 responses)

> How much revenue does ISO actually derive from selling copies of standards? I have little doubt that the monetization value is dwarfed by the wasted economic activity of organizations having to run the formal proceurement gauntlet every time a copy of CHF 166 standard is needed.

Well, their budget is available online, at least for 2021: <https://www.iso.org/ar2021.html#finance>

That's 13 million CHF in 2021 from their members (various national standards bodies) selling standards, plus 7 million CHF revenue in net sales (I assume they only sell standards), which combined was about 46.6% of their total income, so indeed a significant amount relatively speaking. Unfortunately their expenditures aren't really that transparent (97% of their expenses goes to "operations", which is nearly 36 million CHF), so it's really unclear how bloated or lean that budget really is. There doesn't appear to be any more detailed financial statement I can find, so that's where my cursory investigation of this stops.

That all said, if the 30 richest countries in the world all paid ISO 700kCHF more per year each (that wouldn't even make a dent in any national budget of those countries), that part of the income of ISO could easily be replaced entirely, even if it turns out that ISO's current expenditures aren't bloated at all. (See above: I can't tell because they aren't very transparent.)

ISO is problematic

Posted Apr 13, 2023 21:57 UTC (Thu) by tialaramex (subscriber, #21167) [Link]

Right, because ISO is a creature of its constituent national bodies, and the national bodies are exclusively controlled by sovereign entities, the funding of ISO is entirely in the gift of the sovereign entities ("Countries"). They can, and perhaps should, just pay for it and stop messing about with for-$$$ PDFs.

And yet, I suspect in the largely democratic or semi-democratic countries that have the largest economies of those sovereign entities, and thus would be in the best position to just fork over the cash, such a decision would be a political matter, and "Give money to ISO" is not a vote winner. Still, if the $$$ PDFs annoy you, tell your Congress member or equivalent what you want them to do about it.

ISO is problematic

Posted Apr 13, 2023 16:54 UTC (Thu) by flussence (guest, #85566) [Link] (2 responses)

One time I went to actually look up ISO 8601 out of curiosity, and that's how I found out everyone on the internet was cargo-culting it. The more interesting spec is RFC 3339, a subset of ISO 8601 that contains just the date formatting part, and none of the sanity-eating nonsense like calendar-relative duration shorthand. (It would be nice if ostensibly-open formats like WHATWG HTML would reference this one instead of a loginwall…)

In any case, I don't think that organisation has been fit to define standards since the advent of ISO 29500 (OOXML).

ISO is problematic

Posted Apr 13, 2023 18:12 UTC (Thu) by excors (subscriber, #95769) [Link]

> It would be nice if ostensibly-open formats like WHATWG HTML would reference this one instead of a loginwall…

HTML only mentions ISO 8601 as an explicitly non-normative reference; you don't need it in order to use or implement HTML, it's just referenced as background information for some of the features normatively defined within the HTML spec. In one case it's referenced specifically to warn against using an ISO 8601 implementation, because ISO doesn't define the parsing rules properly and you need to implement HTML's parsing rules instead.

HTML supports week strings (<time datetime=2023-W15>this week</time>) which aren't defined in RFC 3339 so that wouldn't be a useful reference.

ISO is problematic

Posted Apr 13, 2023 18:30 UTC (Thu) by kunitz (subscriber, #3965) [Link]

Be careful with RFC 3339. The RFC does specify datetime stamps that are valid ISO 8601 datetime stamps, but are only a subset. Be also aware that the ABNF in the appendix of the RFC describes ISO9601:1998 time stamps, which differs from the ABNF actually defined in the text of the RFC. ISO 8601 allows two-digit years and defines the comma as preferred decimal sign, but allows the dot too.

ISO is problematic

Posted Apr 13, 2023 20:09 UTC (Thu) by kschendel (subscriber, #20465) [Link]

The questions of standards pricing and free (or less expensive) availability, or lack thereof, is an ongoing source of ... mmm, let's say "discussion" ... within JTC and its subcommittees, and among JTC1, ISO, and IEC management boards. So far, I am not aware that the parent bodies have rushed to embrace suggestions for modifying the pricing schemes.

Standardizing BPF

Posted Apr 11, 2023 4:29 UTC (Tue) by mtaht (guest, #11087) [Link] (3 responses)

Getting fq_codel through the IETF process took 6 years. QUIC, 10. While I wish the best for those wishing to standardize eBPF and think the IETF is the best fit, I will be making popcorn by the sidelines this time around, as I would be wheelchair-bound by the end.

Standardizing BPF

Posted Apr 11, 2023 18:49 UTC (Tue) by squarooticus (subscriber, #105300) [Link] (2 responses)

> QUIC, 10

False. Google brought QUIC to IETF at a BoF in Prague in July of 2015. The QUIC RFC was published in May 2021. So 6 years from "here's our thing" to "we've published the community version". Not especially speedy, mind you, and there were a lot of debates that ran for way too long, but it's not helpful to overstate the process latency.

Standardizing BPF

Posted Apr 12, 2023 0:18 UTC (Wed) by mtaht (guest, #11087) [Link] (1 responses)

By my lights QUIC took 10. Jim Roskind took QUIC to IETF in 2013. There was much skepticism over it at the time. By 2015 it had become more viable.

https://www.ietf.org/proceedings/88/slides/slides-88-tsva...

Standardizing BPF

Posted Apr 13, 2023 22:11 UTC (Thu) by tialaramex (subscriber, #21167) [Link]

Mmm, those slides don't suggest standardization, they actually tell people watching that if you're interested you can contribute to development of Chromium. I think if I present about a cool idea I had using LibreOffice at a conference this summer, and then in five years that same idea is the launching point for an ODF revision effort, I don't get to say the standardisation of that ODF revision began in 2023 even if the ODF people were at my conference talk. Also, November 2013 to May 2021 is less than 8 years, not ten.

Standardizing BPF

Posted Apr 11, 2023 6:48 UTC (Tue) by SPYFF (subscriber, #131114) [Link] (3 responses)

typo: Jiri Arkko -> Jari Arkko

Standardizing BPF

Posted Apr 11, 2023 7:24 UTC (Tue) by smurf (subscriber, #17840) [Link]

Please report typos et al. via email to lwn@lwn.net, not to the comments.

Standardizing BPF

Posted Apr 11, 2023 18:55 UTC (Tue) by squarooticus (subscriber, #105300) [Link] (1 responses)

Also, Jari is not an AD and hasn't been for a long time. (He's been on IAB more recently, but I don't know that he's been Internet AD since before he was IETF chair, which was quite some time ago.)

Standardizing BPF

Posted Apr 12, 2023 13:50 UTC (Wed) by Manifault (subscriber, #155796) [Link]

My mistake -- I was basing that off of his IETF profile: https://datatracker.ietf.org/person/jari.arkko@ericsson.com

In fairness, the biography is arguably not difficult to misinterpret:

>At the IETF, he has served six years as one of the Internet Area Directors in the Internet Engineering Steering Group (IESG).
>...
>He has previously served as a chair of three IETF working groups, and has created and terminated over a dozen of working groups at the IETF in his Area Director role.

I suppose the true source of truth is the *Roles* section of the page.

Standardizing BPF

Posted Apr 11, 2023 13:56 UTC (Tue) by sutt (guest, #160663) [Link]

> BPF programs are written in C

FWIW you can write BPF programs in other languages. Rust for instance: https://aya-rs.dev/


Copyright © 2023, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds