What does Programmable Networking mean ?
In a recent discussion someone asked the relatively simple question “What does Programmable Networking even mean ?” and, after I stumbled around trying to explain, agreed to write something that attempted to explain what I see as the basic requirement that networking has not met.
Here are some ideas just jotted down.
Programming a network
If server name matches χ then use this forwarding path
For traffic type α limit network traffic to β along entire path
For traffic type α limit network traffic to β
For all traffic α use this path until bandwidth > 90 percent for 10mins then select traffic β to use alternate path
For traffic matching α use this low cost path between 0800GMT AND 1800GMT
Programming a device
If “traffic match destination IP address” Then “send traffic over this path by changing next hop IP addresss
If “traffic matches source and destination IP address” Then “send traffic over this path by changing the flow path”
If “traffic received on this interface” then “add MPLS tag and send out this interface”
If “traffic matches” then “count packets”
While “time between this – then” then “traffic shape this profile” elseif “traffic shape this profile”
While “MPLS tag equals” then “pop MPLS tag” then “add vlan tag”
Programming a Cloud Network
If a server named xxx is in the location yyy then use TrafficProfile1
All server starting wtih “1002” to have use “TrafficProfile1002” and located in “NetworkZone1002”
Programming the Network for Applications
If application α is in category ♦ and Customer = “GoldClass” then send over Path B ≡ “Diamond Class Network” by MPLS Tag ϵ
If application β is in category ♣ and Customer = “TightWad” then send using “Path A” ≡ “Best Effort Network” by adding MPLS Tag η
Sound unrealistic ? These are examples of actions that out business want but how do we make these actions happen ? Is it possible ?
How Do We Deliver This ?
Today, it is not possible to deliver this type of control over networking. Control Plane protocols like MPLS, BGP and OSPF that select the available paths simply don’t have the capability. These autonomous protocols are broadly able to select a single best path based on destination IP address only. MPLS provides some addtional forms of control but ultimately it is a destination based protocol as well.
The “programming tool” must consider the source as well as the destination to be useful. The “Programmable Network” described here is what your business wants but is almost impossible to implement in technology.
Thats why OpenFlow is currently the best option for the data plane – because it can handle this requirement. And controllers can do what autonomous cannot do today (but, maybe, could in the future).
The EtherealMind View
This is just a few quick thoughts to outline what a possible definition of Programmable Network is. I don’t know if this is possible, practical or likely but it’s certainly what customers want.
Lets hope we can deliver it.
I have nothing to disclose in this article. My full disclosure statement is here