Friday, July 11, 2014

Automation, Scripting, SDN, CLI, API, etc.

Greg blogged about current state on automation and it's pain points. Marten followed it up with his thoughts. Though, agree with Marten but there are still lot more to be thought out. Hence this post. 

Top-Down (vs) Bottom-Up
When a product is conceptualized, it usually takes a top-down approach where architecture is always on the top of the list. The goal of any architecture is to take in to account aspects like frame-work, performance, scale-ability, flexibility, extension-ability, usability, etc. Such an architecture is made of many pieces called modules. Each modules are designed independently to achieve it's purpose and also adheres to over-all architecture goals. Modules could be realized using any software like C, Java, Python, etc.

Automation is like an architecture where top-down format should be followed and all goals of architecture applies to automation as well. 
On the other hand scripting is somewhat like modules that fits well in to automation frame work. A bottom-up approach of building scripts and gluing all scripts together to arrive at automation is not the right way go.

Lesson-1: Top-Down approach to be followed. 

Macro (vs) Micro  
CLI is a traditional way to configure that beautifully abstracts NPU programming. From single NPU perspective, CLI has a macro view but when it comes to fabric, CLI is at micro level. This micro-view leads to lot of touch-points. Larger the touch-points large the Opex costs. So, basing automation using CLI is a bottom-up approach and is also laborious & tedious to develop and to maintain. API model is little better as it provides a consistent format across releases but has similar over all constructs like CLI.

Hence, a frame-work is required that has macro view, provides top-down and reduces #touch-points. Tools like Network Management(NM), SNMP have macro-view but always played the game of fabric (read it as CLI) which has always been bottom-up format. Hence, these tools did not realize it's potential for data center networks. Additionally, these tools have moved it's touch-point complexity from device to a browser.

Lesson-2: Macro view is required. 

Can SDN help ?
SDN has many hands, devops is one of them. NM is good starting point for devops but it does not leverage it's macro-view. For NM to be effective, there must be synergy between NM and fabric. Fabric to provide handles for top-down format and reduce #touch-points. NM to leverage handles provided by the fabric. This is where we are getting in to dark and innovation areas of devops.

It might take a while for the industry to arrive at such a synergy but there are solutions getting towards this direction. Few are listed below

  • PTM: It is open source project from Cumulus networks for Cable management and physical connection verification.
  • Un-numbered Interfaces: Un-numbered interfaces is an age old technology supported by most vendors. Interestingly, Cumulus networks is pushing them on DC from DevOps perspective.
  • Converged Infrastructure:  Vendors like DELL are championing this cause. From the opensource side, Openstack-Neutron-ODL are focusing on such an approach.
  • Zero touch provisioning: Vendors support different methods to support provisioning with Zero or No touch. All solutions can be broadly classified in to Network Way (Eg: PXE Boot) or Management Way (Eg: Puppet/Chef/CFEngine). Most of the network PXE has it's own set of use-cases but attempts to solve the problem from device level. On the other hand, Management way has potential to look at solution from Macro level.
  • Big clouds builders like Facebook, Google, etc have automated such that it reduces their Opex costs.
Lesson-3: Innovative interaction between Fabric and Orchestration tool is name of the game.

Final Thoughts
Devops is taking networking head-on. Though the fundamentals of networking would remain the same but the way we sleep, eat and drink networking are definitely changing.