/telecomdrive/media/post_attachments/wp-content/uploads/2022/09/data-network-digital.jpg)
Spotlight on Innovations & Disruptions | TelecomDrive.com
The promising success and expansion of cloud technologies are dramatically reshaping the role and function of networks. Embracing virtualization and cloud-native methodologies in network frameworks is just the beginning. We are in the midst of a profound re-engineering endeavor, aimed at enabling networks to support cloud applications seamlessly and automatically.
Operationally, this translates into the integration of NetOps within the continuous integration and deployment (CI/CD) pipeline. Emulation tools, digital twins and development and testing sandboxes are some of the robust tools needed for the development and rigorous testing of network topologies to guarantee their fitness to support cloud applications.
There are even some efficient open-source virtual lab tools emerging, such as the Containerlab project, which are meeting this need, replacing older network lab setups with what is essentially ‘lab as code.’
First Up: Infrastructure as code
Infrastructure as Code (IaC) is a methodology by which network infrastructure is managed using code and automation rather than manual processes. It involves defining and managing infrastructure resources such as servers, networks, and storage using machine-readable files (e.g., YAML, JSON and HCL).
There are many benefits to IaC, especially for deploying rapidly scaling networks to support cloud applications. It allows network engineers to automate provisioning of routers, switches, firewalls and load balancers and allows them to test and validate network topologies before deployment.
Configurations can also be standardized and automatically deployed, eliminating risk of human error. Reproducible across multiple environments, they enable networks to scale quickly according to rules and policies embedded in the code. Network engineers can collaborate with other teams using Git repositories to manage version control.
Introducing Lab as code
Just as IaC helps network engineers to automate and provision with the necessary agility to meet the needs of cloud applications, there is a similar need for application developers to automate their network labs. Network labs play a crucial role in the CI/CD pipeline by providing developers with a controlled environment for testing, validating, and experimenting against, for instance, the control and data plane functionalities of the production network.
The same principles being used in IaC can also be used for configuring and deploying network topologies in the lab. Instead of using a graphical user interface (GUI), developers can specify the desired number of nodes and links within their topology and deploy them using machine-readable files such as YAML.
Where DevOps is working closely with NetOps, the network engineering team can share the IaC production network topology packages with the development team to deploy in their lab-as-code test beds.
A good example of a lab-as-code approach is seen in the open-source project, Containerlab. Like IaC, it uses YAML text files to provide a blueprint for lab-based network topologies. Originally developed as an emulation tool to create and test network topologies, Containerlab is an open-source project that combines lab-as-code with the ability to leverage others’ knowledge to further its development.
Topology templates help speed automation
Integrating other open-source tools like Git help users incorporate lab-as-code into complex CI/CD pipelines. A NetOps team can leverage it to craft intricate network topologies, storing them within a code repository like GitHub to create a catalog of templates readily accessible depending on the specific application under preparation for release.
This shows the efficiency of lab-as-code for development pipelines. These abstracted network configurations can then be effortlessly retrieved from the code repository, deployed in the lab and use to test the application in development. This can ensure optimal performance for the specific network on which the application will be deployed.
The versatility of the lab-as-code approach is demonstrated by its ability to extend beyond development scenarios; it can be employed for a spectrum of network automation trials such as IP and data center networks use cases.
One of the strengths of lab as code is its ability to be integrated into continuous integration pipelines to facilitate network testing and validation. For example, a lab as code project could test multihoming functionalities in Ethernet VPN (EVPN) networks by addressing the inherent challenges associated with classic Linux bridges by implementing virtual Ethernet pairs, ensuring a streamlined data path channel.
Addressing these kinds of challenges is much easier with a vibrant open-source community of network engineers and developers working together to collaboratively address and enhance solutions that the whole industry can appreciate. The adoption of the lab-as-code idea will help further integrate DevOps and NetOps. Whether used for training, by single network engineers or integrated into complex development pipelines, the lab-as-code approach is what the industry needs as network operations are integrated into the larger DevOps environment.