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.
I also have been finding this difficult to understand. It doesn't help that the Wikipedia article for NFV reads like vendor marketing copy:
> NFV has proven a popular standard even in its infancy. Its immediate applications are numerous, such as virtualization of mobile base stations, platform as a service (PaaS), content delivery networks (CDN), fixed access and home environments. The potential benefits of NFV is anticipated to be significant.
Sounds like it can do everything! By comparison, the paper is apparently more self-reflective and says:
> despite[] promised advances, there has been little progress towards large-scale NF deployments
Skimming the paper and comparing it to MapReduce, it seems to provide a MR-like programming model tailored to packet processing. In section 3.1 they describe programming control flow abstractions: group by, shuffle, merge. These should be familiar to users of distributed compute frameworks like Hadoop. NFV seems to be about implementing this style of compute while processing packets at network line rate.
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.
Hi, author here. While I am sorry that the code is not as well documented as it should be, I think your comment that you could not find a single comment might be a bit overblown. The heart of the project is in the framework directory, where things are documented, for example https://github.com/NetSys/NetBricks/blob/master/framework/sr.... Also if you look at build.sh there is a documentation build that would have given you documentation.
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.
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.
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.
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.