A framework for building high-performance cloud-native network functions in Go using DPDK and AF_XDP.
NFF-Go is a framework for creating and deploying cloud-native Network Functions (NFs) using the Go programming language. It simplifies NF development by providing higher-level abstractions than DPDK while leveraging DPDK or AF_XDP as high-performance I/O engines for packet processing. The framework enables network functions to run as application programs with built-in auto-scaling based on traffic, reducing the need for virtual machines.
Network engineers and developers building high-performance, cloud-native network functions such as firewalls, load balancers, or routers, particularly those seeking to use Go for its safety and concurrency without sacrificing packet processing speed.
Developers choose NFF-Go because it offers up to a 10x reduction in code complexity compared to low-level DPDK implementations while maintaining similar performance, and it automatically handles elasticity and scaling without requiring expert network programming skills.
NFF-Go -Network Function Framework for GO (former YANFF)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Go's safety and concurrency for network functions while using DPDK as a high-performance I/O engine, achieving similar performance to C/DPDK with less code.
Built-in scheduler auto-scales processing up and down based on input traffic, eliminating manual elasticity management for cloud-native deployments.
Easily taps into Intel capabilities like multi-cores, AES-NI, and QAT, as mentioned in the README, for optimized packet processing without low-level coding.
Dynamically supports both DPDK and AF_XDP for packet I/O, allowing a single codebase to handle different driver types without rewriting, per the README news.
Requires installing and configuring DPDK with kernel modules like igb_uio, which involves system-level changes and can be error-prone for non-experts.
Heavily leans on Intel hardware features; performance on non-Intel architectures may be suboptimal, and the ecosystem is tailored to Intel environments.
As a framework rather than a full toolkit, it lacks a wide range of ready-to-use network functions, requiring more custom development compared to some alternatives.
Relies on DPDK docs and a mailing list for support, indicating sparse tutorials or examples beyond basics, which can slow onboarding.