Software Defined Networking is an interlocking group of technologies that can described to the use of software to control the network hardware. A network device has an network operating system that manages internal device operation. Each device is individually configured using long standing protocols like SSH/Terminal or SNMP.
In the current “legacy” mode of operation, autonomous protocols like OSPF and Spanning Tree provide automated self-configuration that is established according to rigid design practices.
SDN requires the network operation systems to offer APIs that enable external software to configure the device. The consumption of these APIs enables the end-to-end configuration of services across many network devices and this shifts the focus of networks away from connectivity to services.
SDN applications most often use a network controller as a gateway to access the APIs on the devices. The most popular gateway is OpenDaylight because it is open and widely available.
Automation can be defined as the use of software to reduce the operational workload of configuration, troubleshooting and asset management. Automation is often seen in the form of Python or Perl scripts that perform a specific or narrow set of functions. More complex automation tools are emerging such as Ansible and Puppet.
Orchestration can be defined as the use of the automation to provide services through the use of applications that drive the network.
As an example, orchestration is application that can take an request from a customer via web portal for new virtual server requiring provisioning. This ideal app will analyse the network configuration and implement the configuration change for the customer and then update the billing system. The network itself might implement in the physical network, in a virtual overlay on hypervisors, across the WAN via encrypted tunnel or one of many other options. The connectivity is far less important than the orchestrated service establishment across many devices and platforms.