
NetBricks: A new network function framework based on Rust - qeole
https://github.com/netsys/NetBricks
======
kaoD
I've spent a few minutes digging around the repo and I still don't know what
this does or how it works. There doesn't seem to be an obvious library "entry
point" from where to start understanding the system. Where are the docs? I
could only find a paper. There is no way people are going to use your
framework if you didn't document it!

There are no doc comments, which is pretty unusual for a Rust project. Please
use Rust's excellent documentation generator. It takes a few seconds to
document an item as you're coding it, and it really pays off if you want to
attract new users or contributors. Even if you didn't document it, rustdoc is
still useful to see the project structure. Generate static documentation!

There is a /tests/ folder but they're not very useful to understand what it
_is_ or what I can do with it, and they have no comments either.

Remember: it is your responsibility as an engineer to document your project.
I'm guilty of documenting scarcely as much as anyone else, but I couldn't find
a _single_ comment which didn't consist of old code commented out.

EDIT: I don't want to sound dismissive or anything. It's just a pity not being
able to use an interesting framework due to lack of documentation.

~~~
etrain
You might find the OSDI slides useful:
[https://people.eecs.berkeley.edu/~apanda/assets/slides/osdi-...](https://people.eecs.berkeley.edu/~apanda/assets/slides/osdi-
talk.pdf)

~~~
qeole
Thanks for the slides!

I agree the lack of documentation is not really encouraging to test. My guess
(I am not related to the project) is that it's pretty experimental work for
now, and authors may have focused more on optimizing for performance than on
stabilizing things / documenting. But better guidance would help reach more
users and get more feedback.

For my part I like the concept of using Rust features to provide packet
isolation without having too much performance downgrade. Also, this is the
first time I hear of Rust running on top of DPDK.

------
Pyxl101
Interesting. Never heard the term Network Functions Virtualization (NFV)
before.

> Network functions virtualization (NFV) is a network architecture concept
> that uses the technologies of IT virtualization to virtualize entire classes
> of network node functions into building blocks that may connect, or chain
> together, to create communication services.

[https://en.wikipedia.org/wiki/Network_function_virtualizatio...](https://en.wikipedia.org/wiki/Network_function_virtualization)

Seems to be focused on low layers of a telecom stack, so packet processing
rather than traditional application layer distributed systems. From the paper:

> One can think of the relationship between Click and NetBricks to be
> analogous to the difference between MPI and Map Reduce. Both Click and MPI
> give developers a totally general framework in which to build their
> applications, but the developer must take on the task of optimizing the
> resulting code (unless they can reuse existing modules without change). In
> contrast, NetBricks and Map Reduce support only a more limited set of
> abstractions whose actions can be customized through user code.

~~~
grok2
NFV refers to the trend nowadays of implementing in software, networking
functionality that traditionally used to run in custom built hardware boxes --
even things like your wireless router at home. Providers seem to think that
it's easier to manage software in their data-centers (and achieve better scale
perhaps) than to deploy hardware.

