The community is currently in the process of defining Cloud-Native Network Functions (CNFs). Due to the differences between the current modern architecture and cloud-native environment, many questions will arise about how to create, consume, operate, monitor and scale CNFs. As CNFs gain in popularity, it will become increasingly important to have a set of guidelines to help the community maximize the benefit received from running in the new Cloud-Native environment.
When cloud-native arrived, it was often unclear how web applications should be designed or rearchitected to make use of cloud-native infrastructure. Many mistakes were repeated due to a lack of guidance. In response, Adam Wiggins and others created a methodology known as 12 Factor Apps. 12 factor apps guide developers towards building applications capable of taking advantage of cloud-native infrastructure. These properties include but are not limited to:
- Easier on-boarding for developers
- Maximize portability
- Deploy on modern cloud platforms
- Minimized divergence between development, test and production environments
- Horizontal scaling
There is currently limited expertise on how to build CNFs. The bindings between CNFs are much more complex and diverse than 12 factor apps. Many of the heuristics in the 12 Factor Apps methodology cleanly apply to building CNFs, while others do not translate as well. Likewise, current techniques for scaling VNFs do not apply well to cloud-native environments.
CNFs must have at least the following properties:
- Declarative configuration
- Well defined and published communications capabilities (e.g. Linux network stack, DPDK, VPP memif)
- Well defined and published payload capabilities (e.g. Ethernet, IP, MPLS, VXLAN)
- No VNF specific kernel modules
- No configurations that interfere with other VNFs without resource locking
- Gracefully handle errors in itself and its dependencies
Often, the following properties will also be sought:
- On demand horizontal scalability
- On demand deployment
- Unified event monitoring
- Clean separation from SDN, allowing CNFs and SDNs to be upgraded and evolve independently of each other
- Ability to chain other CNFs to implement SFC
To help realize these properties in a cloud-native environment, we propose the community rally together to define a methodology, tentatively being called X-Factor CNFs.
P.s. please do not take the list above as authoritative. We should refine this list based on our learnings.