 STN and NFV are the abbreviations that the networking community has started to come across very often. In fact, almost all the time. So, let's quickly start looking at in this particular module and upcoming lectures on what are these terms and how do these relate to the programming that is typically attributed to the computer scientists or programmers. So, we are going to start off with a very basic example of a problem that has existed since ever and then we are going to look at the consequent definitions which emerge as a solution to that problem. Then we are going to look at the software side to begin with. Let's look at the protocol configuration. For instance, telnet terminal emulation where command line interface was used back in 1990s to enable the terminal emulation that is remote login using the command line interface and carrying out certain configuration settings. In 2014, the only change that we see is instead of the plain text unencrypted terminal emulation now we have secure shell. So, if you look at the command line interface configuration setting in Cisco router based environment you see that there isn't much of a difference. It is just from the comparison viewpoint making a case that if you want to change the behavior of a network element you may as well have to think about something else because sitting on a device like a router or a managed switch firewall or a gateway and configuring it has very limited options and control for the network administrator. So, we say that in terms of network agility over the last 20 years from 1990s to early 2010 there wasn't much of a difference. So, this leads us to a unique requirement. The unique requirement is that when we talk about the notion of networking we think about certain devices like a switch, gateway, firewall, access control list, etc. So, can we enable something that allows the behavior of the device to change fundamentally? Well, there is something known as software defined networking it is a concept that has been with us for quite some time now, but we are looking at it from the pedagogical or academic purposes. So, what is SDN? SDN is basically white box networking compare this to the black box networking where the internal working of a certain network device is not visible for the administrator to come to grips with fully. So, it is also known as having an API to the internal operation of a networking device. SDN is also known by certain namesakes for instance, network first function virtualization that we will give some time to because it is quite different actually. Then virtual switching, network automation, bare metal switching or controlled networking. Now, these are what define software defined networking as a very broad concept. Network function virtualization is more local concept that is virtualize the functions of network by doing what? By thinking about the functions which were traditionally carried out by or through hardware and instead provide them through software. So, it means there is some kind of decoupling that is going to take place within the hardware. Examples are we could think about router as a monolithic device where we have hardware implementation of router, but we already know that the router can be seen as the hardware and the iOS, the internet operating system. Then we have the firewalls. Now, all these services like load balancing, intrusion prevention and detection, virtual private networking and firewalls at the application layer all can be thought about or thought of as being softwares which are running on some hardware. So, what hardware part or what software part is going to remain as such in which part is going to change that is where continuous research is going on. Now, once we know that software defined networking is the way of the future and network function virtualization is what is being done to achieve the software defined networking. How could we possibly look at the traditional system administrators or network engineers who are more accustomed to probably dealing with wires and to an extent interacting with the terminal through command line interface? Should they be worried about software? So, let us look at the level of software interaction very briefly now and then we will delve more into it. So, the network engineers, should they be learning to code as such? Immediately, once coding comes into mind then very frightful scenes appear like advanced topics handling data structures like classes and objects as in C or C++. This portrays a very scary picture. So, is that what the network engineer is supposed to do? Well, every network engineer should at least know how to write and read a basic script. A script is what would run on the command line terminal in bash. So, it means that this is where at least some level of understanding is expected out of a network engineer. Take the example of Linux for instance. Linux is considered to be the operating system for network automation because most of the modern network operating systems which implement TCP IP kernel are based on Linux and the modern distributions for multiple network elements actually are emerging which are based on Linux. Let us look at the example of possible programmability of traditional network elements where we are now going to provide software based control of the network element. We know that there is a control plane which are the rules for forwarding, denying or perhaps to an extent managing the flow of traffic through a certain network device and the data plane is where the packets or aka the IP packets are processed in the networking stack at the network layer. So, if we think about traditional devices like a switch or a router, both control plane and data plane are intertwined but if we think about decoupling or separating the control plane and the data plane we could think about something known as the network device which is in this particular case based on open flow which is a protocol to enable the software defined networking and then we have the controller. So, we have the controller and controlled the controller provides the control plane and the network devices provide the data plane. Now this decoupling implemented through the open flow protocol allows the controller to calculate and manage the paths between the network elements like a topology and the forwarding rules on that topology. Now these this topology and the forwarding rules for this topology are calculated in a centralized manner and then are pushed or aka broadcast to the data plane elements. The data plane elements are not expected to do any computation or the distributed execution of protocols like border gateway protocol which is autonomous inter autonomous system protocol or the shortest path finding algorithm like open shortest path first or the bridging protocol known as the STP or the spanning tree protocol. Instead they just merely act as forwarding elements which just relay the traffic depending upon the rules that they have received from the centralized controller. So, the data plane would just have most of the hardware part that is the ports and the wires and some probably software implementation that is the we can say the agent or the forwarding element agent that only subscribes to and implements the rules provided by the centralized controller and then the hardware tables implemented as in registers the the ports port identifies and the forwarding element which involve specific integrated circuits. Now this particular relationship between the controller and the controlled elements is what describes software defined networking the example that we just saw was network function virtualization through open flow now the book network programmability and automation skills for the next generation network engineer is a very interesting read by Jason Edelman, Scott Louie and Matt Oswald. So we we would continue with this and some related stuff in due course.