All right. So today, we're going to be talking about software-defined networking, software-defined infrastructure, and network function virtualization. To begin with, software-defined networking, or SDN, is an architectural approach, where what we're doing is separating out the application layer, which is where your business application logic resides, from the control layer, which is where a lot of your network services are configured, and also from the infrastructure layer. And we're doing this in a way that things are centrally managed. It can be programmed through software, obviously. It's not fixed-function logic. And the interfaces that we're defining are all open and vendor neutral. So that's software-defined networking in a nutshell. SDN uses open flow as one of the first instantiations of an SDN protocol. So, again, we're taking this OpenFlow protocol. It's enabling innovation to occur above the infrastructure layer. And this allows us to simplify the provisioning to optimize performance, to have the business applications provide policies down in an open way that is not tied to any one vendor's implementation. The hardware and software are decoupled in this kind of architecture. Control plane and the forwarding are also decoupled. And the physical and logical configuration is similarly decoupled. We talk about OpenFlow as one of the primary examples of this. There are other examples of protocols that can be used. So for example, P4 might be one. EBPF. There's a number of others. But this OpenFlow is one of the first and one of the most widely used. Software-defined infrastructure is taking similar concepts, but broadening it to do a lot more than just networking, but also the storage and the compute. And what we're trying to do is achieve better efficiencies by having things defined through a software approach rather than fixed function hardware. This allows us to pool resources across a broad range of infrastructures and a broad base of physical hardware. So if we look at some of the potential use cases of this, CRM, customer relationship management, online sales, et cetera, we're able to assign those the right infrastructure attributes that's needed for the business application. We're doing all this with an intelligent resource orchestration, so that as the needs of the business change, might be changing on a very dynamic basis or changing over longer periods of time, we're able to change things without swapping out the hardware pieces. Now, we're going to be talking about network function virtualization. So why are we doing this? What is network function virtualization? Well, if we start on the left side of this picture, what we can see is we're coming from a world where everything was based around physical appliances. In a physical appliance, you had the application and the operating system were tied to one hardware instance. and it was inflexible and hard to upgrade individual components as different things changed. And you had physical appliances, such as a load balancer or a firewall, and these all resulted in a very fixed configuration. With network function virtualization, we're taking those physical network appliances and transforming them into virtualized network functions or VNFs. These VNFs can make use of something of different physical hardware attributes expressed through a hypervisor. The hypervisor provides a layer of virtualization such that the VNF is independent from the needs and the particulars of the hardware being used.