Skip to content

Instantly share code, notes, and snippets.

@fkautz
Created August 24, 2018 07:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fkautz/9d81bd0621f563d0db3b7651b6c6e473 to your computer and use it in GitHub Desktop.
Save fkautz/9d81bd0621f563d0db3b7651b6c6e473 to your computer and use it in GitHub Desktop.
X-Factor CNFs

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment