Software Defined Networking (SDN)
"SDN provides a global view of the state of the network by having visibility and control of the forwarding plane. On top of this global view a network virtualization can create an abstract view of the same network for different control programs. A control program then can be a function of that particular view." Nick McKeown ONS 2012
The network today is composed by closed boxes. Each box has a set of features, an operating system and a specialized forwarding hardware. SDN pulls these features out of the hardware and puts them on top of a network operating system (NOS) that is external, extensible and possibly opensource, and that is connected to the physical hardware by an open interface. The applications running on top of the NOS will use a well defined API. It is also possible to think of extra virtualized layer between the NOS and the physical layer, so to have a virtualized environment with multiple NOS running on top of the same network hardware.
In few words, SDN gives the possibility of building your own functions on top of vendor hardware. Vendor hardware are known to be closed systems. The interface that they provide cannot be extended and this creates big limits on the use of the network. SDN allows to go beyond these limits. The basic idea is to think of a switch as a mean to forward packets that does not have any logic implemented in it. A main controller (or more than one) on top of the physical network will be in charge of defining the "behavior" of the network itself.
The most representative SDN protocol today is OpenFlow.
An interesting article on SDN and OpenFlow can be found on Martin Casado's blog: Is OpenFlow/SDN good at forwarding?