By Lori MacVittie | Article Rating: |
|
October 29, 2013 09:00 AM EDT | Reads: |
564 |

Like most terms associated with any technology in the beginning of the hype cycle, programmability is being used and abused to mean a variety of different capabilities. It's important to understand what people mean when they say "programmability" because it ultimately impacts the ways in which you can use it.
Many application-driven solutions claim programmability as a key characteristic and, by extension, a benefit. The benefit, of course, is being able to customize the behavior of the solution to fit just about any possible solution. Zero-day exploit? Check. API versioning change? Check. Application needs the actual IP address of every client? Check. There are too many possibilities to list because the point of programmability is that you can make a programmable "X" do anything.
For the past decade or so, however, the term "programmability" has been used to describe two very different kinds of anything. On the one hand, there's programmability in the classic sense: execution of logic. On the other hand, there's programmability in a more limited sense: extract and act.
The difference may, at first, seem subtle or even pedantic. The ability to extract data, evaluate it, and act on it certainly seems on the surface to be execution of logic. And it is - at least on very rudimentary level. The problem is that "extract and act" systems tend to proscribe what it is you can extract as well a what actions you can take.
For example, a modern switch is programmable when using an "extract and act" definition. A switch can extract data from an IP packet such as source and destination IP and then choose to forward or deny based on policy. Many L4-7 devices, too, can accomplish this feat at higher layers of the stack, enabling "extract and act" capabilities against HTTP headers as well as TCP and IP variables.
But no one has ever referred to a switch as programmable because it can "extract and act". Such capability is a very limited subset of programmability, and is more accurately described as configurable, not programmable.
Programmability implies a more free-form definition and execution of logic. Logic that enables not only extraction and action, but transformation and collaboration. Programmability enables extensibility; the creation of new services designed to meet a specific operational or business need not currently addressed by available solutions. Programmability doesn't limit you to this HTTP header or that TCP option. Programmability is imagination and innovation and comes without such highly limiting constraints.
SDN architectures today speak in broad terms about programmability but the applicability of that characteristic pertains only to the controller, not the data path. The northbound API, on which many dreams and hopes for the success of SDN are currently laid, gives SDN controllers the right to call itself "programmable". The northbound API enables extensibility, that is the ability of the system to extend its features and functions and capabilities programmatically. Using the northbound API, anyone (ostensibly) can extend how SDN controllers make decisions and, ultimately, how traffic is routed through the network.
But that programmability does not necessarily extend to the data path. The data path, comprising the switches that form the network fabric, still operate under the constraints of an "extract and act" model and it can only extract from data available which, at this time, means TCP and below in the network stack. Extending the SDN controller's capabilities does not change what the switches it controls (and thus the data path) can do. The SDN data path is not truly programmable. Oh, it could be, and the notion of extending a controller with applications via the oft-mentioned northbound API would certainly allow this. But suddenly we've inserted software running on commodity hardware with all the limitations on scale and capacity that implies, into the data path. It's the 25 mile an hour zone on a US highway that runs through a small Midwest town. It can easily become a bottleneck.
That's not going to be acceptable in the long run, because anything that impedes the speed of the data path ultimately impacts the responsiveness of the application and that, as well all know, is unacceptable.
The SDN data path will never truly be programmable unless programmable data path elements are inserted and enabled with the ability execute actually logic; logic that enables modern application architectures to be implemented with relative ease without requiring you to "reduce speed ahead."
Read the original blog entry...
Published October 29, 2013 Reads 564
Copyright © 2013 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Lori MacVittie
Lori MacVittie is responsible for education and evangelism of application services available across F5’s entire product suite. Her role includes authorship of technical materials and participation in a number of community-based forums and industry standards organizations, among other efforts. MacVittie has extensive programming experience as an application architect, as well as network and systems development and administration expertise. Prior to joining F5, MacVittie was an award-winning Senior Technology Editor at Network Computing Magazine, where she conducted product research and evaluation focused on integration with application and network architectures, and authored articles on a variety of topics aimed at IT professionals. Her most recent area of focus included SOA-related products and architectures. She holds a B.S. in Information and Computing Science from the University of Wisconsin at Green Bay, and an M.S. in Computer Science from Nova Southeastern University.
- WebRTC Summit at Cloud Expo Agenda Announced
- Mainstream Business Applications and In-Memory Databases
- Column Store, In-Memory, MPP Databases and Oracle
- Cloud Expo Silicon Valley: Business APIs in the Cloud
- User Accounts Are Only the Tip of the Iceberg
- WebRTC Summit | WebRTC Business Models: Building a Web-Based Telecom Co
- Cloud Security Alliance Releases Cloud Controls Matrix, Version 3.0
- Announcing "OpenStack Fundamentals Track" at Cloud Expo
- Survey Finds Large Enterprises Adopting WebRTC
- Cloud Expo Silicon Valley: Zero to Empire in 89 Days
- It's the Java vs. C++ Shootout Revisited!
- The Telco Cloud Dilemma
- FoundationDB Announces General Availability of Unique ACID-Compliant NoSQL Database
- Cloud Expo 2013 Silicon Valley Call for Papers Deadline August 31
- WebRTC Summit at Cloud Expo Agenda Announced
- ARM Server “Microservers” Seek to Transform Cloud, Big Data
- Mainstream Business Applications and In-Memory Databases
- Give Cisco 60 Minutes and It Will Give You The Next-Generation IT World!
- The Workspace of a Modern Programmer
- Column Store, In-Memory, MPP Databases and Oracle
- Software-Defined Networking: The Promise and the Reality
- Hard Dollar ROI of Gamification
- Cloud Expo Silicon Valley: Business APIs in the Cloud
- User Accounts Are Only the Tip of the Iceberg
- A Cup of AJAX? Nay, Just Regular Java Please
- Java Developer's Journal Exclusive: 2006 "JDJ Editors' Choice" Awards
- JavaServer Faces (JSF) vs Struts
- The i-Technology Right Stuff
- Rich Internet Applications with Adobe Flex 2 and Java
- Java vs C++ "Shootout" Revisited
- Bean-Managed Persistence Using a Proxy List
- Reporting Made Easy with JasperReports and Hibernate
- Why Do 'Cool Kids' Choose Ruby or PHP to Build Websites Instead of Java?
- Creating a Pet Store Application with JavaServer Faces, Spring, and Hibernate
- Where Are RIA Technologies Headed in 2008?
- What's New in Eclipse?