As I’ve been I guess “evolving” as a network engineer/packet pusher/router jockey/packet herder/ whatever you’d like I’ve been working more and more with APIs (in my case mostly ACI, but also a bit of vCenter, and other random bits). This has obviously been really cool, getting exposed to a new, arguably better, way to interact with devices. It has, however, opened up lots of new questions for me. These questions pretty much all revolve around APIs and standardization, and I think most poignantly around the question of: “is networking really that far behind everyone else?”
That last question is pretty near and dear to me as I’ve so far made my career out of just being that “network” guy. I certainly don’t want to feel like networking is the last kid on the block to get it together, but that is for sure the messaging that has been coming out of the Twitters and podcasts and the like.
I guess I should preface the rest of everything I’m going to write with this one tidbit: “I don’t know what I don’t know.” What I mean by that is that this post really is an open question because I only know what I’ve seen or been exposed to, and I’m genuinely interested and curious about this topic.
So my position (question?) on this is that it doesn’t seem, to me at least, that networking is really *that* far behind in terms of programmability or standardization. Now I guess I should clarify that position a bit because I do feel there are some relevant caveats to that statement…. Firstly, I completely agree with a lot of the rhetoric out there that networking hasn’t really changed in the last two decades. We still manage things box by box, we still have spanning-tree, we still have basic routing protocols, we still are doing all of the things that were invented when the Internet came to be (more or less).
That being said, I think there are some valid reasons why we do things the way we do them. The biggest point for networking not changing is that it (networking) is arguably the most critical component (from a technology perspective) of any organization. If the network is down people are not happy. No email, no VoIP, no applications, no eCommerce, no XYZ — without the network these things just don’t work. That is a serious burden to bear for the network. It makes changing things hard, because if you screw up…. it could be a bad day for you and your organization. This is definitely not intended to diminish the importance of other disciplines in the IT world — storage is super critical (perhaps the next most critical in my view), voice is super critical, security is super critical, but none of those pieces by themselves necessarily will cause a complete failure for an organization.
All in all I don’t see that there are standardized APIs across any hyper-visor or storage array or any other box in general, so I don’t understand why we should expect the network to have universally accepted standard APIs. Moreover I think that would even be a bad thing — think about SNMP! SNMP was supposed to be a standard universal way to query devices, and indeed everyone supports SNMP, but look what a shit show it is — do you really want that again!?
To put a bow on this I guess I’ll just lay out what I think about the current state of things. APIs are good — and networking folk should learn to love them. We’re getting there — Arista, Cisco, Big Switch, and tons of other vendors have heard loud and clear and are implementing them. I can tell you from my personal experience that working with the ACI API is smooth and awesome. We’ll get there in other networking domains (WAN/Campus/Security), but it will take time. Taking time is probably even a good thing as network folk like myself need to learn to get up to speed on all of this new fangled API stuff. So, in the meantime, learn some basics of how to interact with an API — I would strongly recommend checking out Google Postman and the collections runner — it’s a tool I use regularly and is a super simple way to get started. What are you waiting for?