A programmable network is one in which the behavior of network devices and flow control is handled by software that operates independently from network hardware. A truly programmable network will allow a network engineer to re-program a network infrastructure instead of having to re-build it manually.
Programmable networking has several benefits over traditional networking:
- Reduced long-term costs.
- Ability for applications to maintain information about device capabilities.
- Ability for networks to respond to application status and resource requirements.
- Better allocation of bandwidth and resources.
- Packet prioritization for traffic shaping.
- Improved operational flexibility and enhanced transparency.
- Support for emerging privacy and security technologies.
Network programmability is central to software-defined networking (SDN). Currently, the most popular specification for creating a software-defined network is a protocol called OpenFlow, which lets network administrators remotely control routing tables. With OpenFlow, the packet-moving decisions are centralized, so that the network can be programmed independently of the individual switches and data center gear.
The term programmable network is used by some vendors as a synonym for software-defined networking. In its infancy, SDN was often referred to as the "Cisco killer" because it allows network engineers to support a switching fabric across multi-vendor commodity hardware and use software to shape traffic from a centralized control console without having to touch individual switches.
Cisco, however, has adopted the term programmable networking to desribe its own vision for the future of networking -- a future that goes beyond separating the control and forwarding planes to actually permitting programming up and down the network stack. To that end, Cisco says it will address demand for programmable networks in three ways. First, it will offer software-defined networking and OpenFlow for some users. Second, Cisco will support virtual network overlays like LISP and VXLAN, to bridge the physical and virtual worlds. Third, Cisco will introduce a software development kit (SDK) that makes all of its routers and switches programmable through a universal API.