Preface What this book covers What you need for this book Who this book is for Conventions Reader feedback Customer support Downloading the example code Downloading the color images of this book Errata Piracy Questions Software-Defined Networks Understanding SDN Characteristics of SDN Plane decoupling Central control and simple forwarding elements Network automation and virtualization SDN use cases Data center applications Campus networks applications Service provider applications Mobile network applications NFV How is NFV different from SDN? NFV challenges Summary Introducing OpenFlow Activities around SDN/OpenFlow Building Blocks of an SDN deployment Header field Counters Actions Priority Timeouts Cookies Flags OpenFlow messages Controller-to-switch Features Configuration Modify-State Read-State Packet-out Barrier Role-Request Setting asynchronous configuration Symmetric messages Hello Echo Errors Experimenter Asynchronous messages Packet-in Flow-Removal Port-status Role-status Controller-status Table-status Request-forward Northbound interface Summary Implementing the OpenFlow Switch OpenFlow reference switch Controller-to-switch messages Asynchronous messages Symmetric messages OpenFlow enabled switches Software-based switches Hardware-based switches OpenFlow laboratory with Mininet Getting started with Mininet Experimenting with Mininet Experimenting with Mininet GUI (MiniEdit) Getting started with MiniEdit Creating a custom topology on Mininet canvas Configuring the controller Configuring the switch Configuring the host Setting the MiniEdit preferences Saving the configuration Running a Mininet topology simulation, generating logs, and monitoring the flow table Summary The OpenFlow Controllers Software-Defined Networking controllers Existing implementations NOX and POX Running a POX application NodeFlow Floodlight Virtual networking filter Firewall module Static flow pusher Network plugin for OpenStack ODL Ryu Ryu architecture Ryu libraries OpenFlow protocol and controller Managers and core processes Northbound Applications Installation of a Ryu controller Running a Ryu application Special controllers Summary Setting Up the Environment Understanding the OpenFlow laboratory External controllers Completing the OpenFlow laboratory Replacing ethX with the name of the unnumbered interface ODL ODL controller ODL-based SDN laboratory SDN Hub starter VM kit Summary Net App Development Net App 1 - an Ethernet learning switch Building the learning switch Net App 2 - a simple firewall Net App 3 - simple forwarding in OpenDaylight Net App 4 – simple switching hub using Ryu controller Executing the Simple Switching Hub Testing application Net App 5 – simple router using Ryu controller Creating the topology on Mininet IP address configuration on the hosts Configuring the default gateway on the host Starting the Ryu controller Configuring the address of the router (switch) Configuring the default gateway of the switch Verification Conclusion Net App 6 – simple firewall using Ryu controller Creating the topology on Mininet Starting the rest firewall application Enabling the firewall Creating rules Verifying that these rules have been set ICMP Verification Configuring deny instructions Conclusion Summary Getting a Network Slice Network virtualization FlowVisor Isolation mechanism Bandwidth isolation Topology isolation Switch CPU isolation New flow messages Controller requests Slow-path packet forwarding Internal state keeping Flowspace isolation OpenFlow control isolation FlowVisor API FLOW_MATCH structure Slice actions structure FlowVisor slicing Summary OpenFlow in Cloud Computing OpenStack and Neutron OpenStack Networking architecture Neutron plugins Summary Open Source Resources Controllers Beacon Floodlight Maestro Trema FlowER Ryu Open Network Operating System Atrium OpenContrail Miscellaneous FlowVisor Flowsim Avior RouteFlow OFlops and Cbench OSCARS Twister FortNOX Nettle Frenetic Open Exchange Software Suite Summary The Future of SDN Packet forwarding innovations beyond OpenFlow POF POF architecture Structure of POFOX POFSwitch Programming protocol-independent packet processors P4 components Forwarding model of P4 Protocol-independent forwarding Table Type Patterns Relationship between TTP and OF-PI Goals of OF-PI Optical transport protocol extensions Generalized Multiprotocol Label Switching Packet-optical Integration Summary