Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some implementation architectures favour extensibility #6

Open
obonaventure opened this issue Sep 8, 2020 · 1 comment
Open

Some implementation architectures favour extensibility #6

obonaventure opened this issue Sep 8, 2020 · 1 comment
Labels
deployability Implementations, interoperability, and experiments

Comments

@obonaventure
Copy link

The extensibility of protocols cannot be decoupled from their implementations. Experience shows that it is easier to extend user space implementations than kernel implementations for protocols such as TCP. However, it is also important to note that there are technical solutions that favour the extensibility of implementations.

One example is the adoption of eBPF inside the Linux kernel. Initially, this virtual machine has been used to collect statistics and track various events. Gradually, it became a technique that allows to extend the Linux kernel and this applies to the TCP stack itself.

An important contribution was the TCP-BPF support added by Lawrence Brakmo and described in : https://netdevconf.info/2.2/papers/brakmo-tcpbpf-talk.pdf

This kernel extension has been used to implement several TCP options using eBPF:

Martin Lau has recently pushed a similar approach in the Linux kernel that allows to implement TCP options and TCP congestion control schemes using only eBPF:
https://linuxplumbersconf.org/event/7/contributions/687/attachments/537/1262/BPF_network_tcp-cc-hdr-sk-stg_LPC_2020.pdf

This solution is focussed on the Linux TCP stack, but it demonstrates that it is possible to dynamically extend TCP implementations and could contribute to our extensibility goal.

@tfpauly tfpauly added the deployability Implementations, interoperability, and experiments label Dec 9, 2020
@tfpauly
Copy link
Member

tfpauly commented Dec 9, 2020

Thanks, @obonaventure! This is a good point that implementation design and openness ends up contributing a lot to practical protocol extensions. I think this goes beyond just saying that we need to actively use extensions, as use-it-or-lose suggests, but brings up the fact that there are impediments to use that come from deployment models and prominent implementations.

Is there anything we can do in an IETF context to help to encourage more extensibility in this way?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
deployability Implementations, interoperability, and experiments
Projects
None yet
Development

No branches or pull requests

2 participants