FlowVisor Overview.

Slides:



Advertisements
Similar presentations
Software Update GEC10 March List of Software OpenFlow ref. implementation git://openflowswitch.org/openflow.git
Advertisements

DOT – Distributed OpenFlow Testbed
Virtual LANs.
Command-line tool for Flowvisor administration
Programmable Virtual Networks
An Overview of Software-Defined Network Presenter: Xitao Wen.
OpenFlow Costin Raiciu Using slides from Brandon Heller and Nick McKeown.
Can the Production Network Be the Testbed? Rob Sherwood Deutsche Telekom Inc. R&D Lab Glen Gibb, KK Yap, Guido Appenzeller, Martin Cassado, Nick McKeown,
EWDSN 2012 PaFloMon A Slice Aware Passive Flow Monitoring Framework for OpenFlow Enabled Experimental Facilities Christos Argyropoulos Network Management.
Mobile Communication and Internet Technologies
Software-Defined Networking, OpenFlow, and how SPARC applies it to the telecommunications domain Pontus Sköldström - Wolfgang John – Elisa Bellagamba November.
Virtualization and OpenFlow Nick McKeown Nick McKeown VISA Workshop, Sigcomm 2009 Supported by NSF, Stanford Clean.
Traffic Management - OpenFlow Switch on the NetFPGA platform Chun-Jen Chung( ) SriramGopinath( )
Can the Production Network Be the Testbed? Rob Sherwood Deutsche Telekom Inc. R&D Lab Glen Gibb, KK Yap, Guido Appenzeller, Martin Cassado, Nick McKeown,
An Overview of Software-Defined Network
Microsoft Virtual Academy Module 4 Creating and Configuring Virtual Machine Networks.
Internet2 Network: Controlling a Slice of the National Network Eric Boyd Senior Director of Strategic Projects.
An Overview of Software-Defined Network Presenter: Xitao Wen.
Virtual LANs. VLAN introduction VLANs logically segment switched networks based on the functions, project teams, or applications of the organization regardless.
VLAN Trunking Protocol (VTP) W.lilakiatsakun. VLAN Management Challenge (1) It is not difficult to add new VLAN for a small network.
Information-Centric Networks10b-1 Week 13 / Paper 1 OpenFlow: enabling innovation in campus networks –Nick McKeown, Tom Anderson, Hari Balakrishnan, Guru.
Introduction to SDN & OpenFlow Based on Tutorials from: Srini Seetharaman, Deutsche Telekom Innovation Center FloodLight Open Flow Controller, floodlight.openflowhub.org.
Brent Salisbury CCIE#11972 Network Architect University of Kentucky 9/22/ OpenStack & OpenFlow Demo.
Aaron Gember Aditya Akella University of Wisconsin-Madison
Jon Turner, John DeHart, Fred Kuhns Computer Science & Engineering Washington University Wide Area OpenFlow Demonstration.
CS : Software Defined Networks 3rd Lecture 28/3/2013
Sponsored by the National Science Foundation Tutorial: An Introduction to OpenFlow using POX GENI Engineering Conference 20 June 2014.
Sponsored by the National Science Foundation Programmable Networks and GENI Marshall Brinn, GPO GEC October 25, 2012.
VLAN V irtual L ocal A rea N etwork VLAN Network performance is a key factor in the productivity of an organization. One of the technologies used to.
Fast NetServ Data Path: OpenFlow integration Emanuele Maccherani Visitor PhD Student DIEI - University of Perugia, Italy IRT - Columbia University, USA.
Sponsored by the National Science Foundation Tutorial: OpenFlow in GENI with Instrumentation and Monitoring Divya Bhat Shufeng Huang Niky Riga GENI Project.
Sponsored by the National Science Foundation 1 GEC16, March 21, 2013 Are you ready for the tutorial? 1.Did you do the pre-work? A.Are you able to login.
HP Hybrid Switches. HP OpenFlow Enabled Switches OF Firmware for Existing Procurve Switches – 5406zl, 5412zl, 3500yl and 6600 – Supports OpenFlow 1.0.
Virtual Machines Created within the Virtualization layer, such as a hypervisor Shares the physical computer's CPU, hard disk, memory, and network interfaces.
SDN Management Layer DESIGN REQUIREMENTS AND FUTURE DIRECTION NO OF SLIDES : 26 1.
S7C7 – Multilayer Switching Design and Configuration.
Switching Topic 2 VLANs.
Mininet and Openflow Labs. Install Mininet (do not do this in class) Download VirtualBox Download Xming for windows (X11) Download Mininet VM for linux-ubuntu.
Information-Centric Networks Section # 13.2: Alternatives Instructor: George Xylomenos Department: Informatics.
Introduction to Mininet, Open vSwitch, and POX
Jennifer Rexford Princeton University MW 11:00am-12:20pm Data-Plane Verification COS 597E: Software Defined Networking.
Software Defined Networking and OpenFlow Geddings Barrineau Ryan Izard.
LAN Switching Virtual LANs. Virtual LAN Concepts A LAN includes all devices in the same broadcast domain. A broadcast domain includes the set of all LAN-connected.
Chapter 6.  Upon completion of this chapter, you should be able to:  Configure switches  Configure VLANs  Verify configuration settings  Troubleshoot.
Virtual Local Area Networks In Security By Mark Reed.
Basic Edge Core switch Training for Summit Communication.
InterVLAN Routing 1. InterVLAN Routing 2. Multilayer Switching.
Mininet and Openflow Labs
SDN challenges Deployment challenges
The DPIaaS Controller Prototype
Heitor Moraes, Marcos Vieira, Italo Cunha, Dorgival Guedes
Programming Assignment
Programming Assignment
NOX: Towards an Operating System for Networks
Overview of SDN Controller Design
Chapter 5: Inter-VLAN Routing
Chapter 2: Basic Switching Concepts and Configuration
Virtual LANs.
Oracle Solaris Zones Study Purpose Only
SDN Overview for UCAR IT meeting 19-March-2014
The Stanford Clean Slate Program
Routing and Switching Essentials v6.0
Access Control Lists CCNA 2 v3 – Module 11
Software Defined Networking (SDN)
Handout # 18: Software-Defined Networking
Open vSwitch HW offload over DPDK
Implementing an OpenFlow Switch on the NetFPGA platform
Chapter 2: Scaling VLANs
An Introduction to Software Defined Networking and OpenFlow
Chapter 4: outline 4.1 Overview of Network layer data plane
Presentation transcript:

FlowVisor Overview

Network Virtualization Network Operators “Delegate” control of subsets of network hardware and/or traffic to other Network Operators or Users Multiple Controllers can talk to same set of switches Imagine a Hypervisor for network equipment Allows experiments to be run on the network in isolation of each other and production traffic

Virtualization or “Slicing” Trend Controller 1 App Controller 2 Virtualization or “Slicing” OpenFlow NOX (Network OS) Network OS App App App Windows (OS) Linux Mac OS Windows (OS) Linux Mac OS Windows (OS) Linux Mac OS Virtualization layer x86 (Computer) Computer Industry Network Industry

FlowVisor Network Hypervisor developed by Stanford A software proxy between the forwarding and control planes of network devices > /usr/sbin/flowvisor /usr/etc/flowvisor/config.xml & > man flowvisor > man fvconfig > man fvctl

FlowVisor Slicing Slices are defined using a slice definition policy The policy language specifies the slice’s resource limits, flowspace, and controller’s location in terms of IP and TCP port-pair FlowVisor enforces transparency and isolation between slices by inspecting, rewriting, and policing OpenFlow messages as they pass

FlowVisor Resource Limits FV assigns hardware resources to “Slices” Topology Network Device or Openflow Instance (DPID) Physical Ports Bandwidth Each slice can be assigned a per port queue with a fraction of the total bandwidth CPU Employs Course Rate Limiting techniques to keep new flow events from one slice from overrunning the CPU Forwarding Tables Each slice has a finite quota of forwarding rules per device

Slicing Carves Network into “Slices” and Assigns hardware resources to each slice. Switch DPID, Port.

FlowVisor FlowSpace FlowSpace defined by a collection of packet headers and assigned to “Slices” Src/Dst MAC Address VLAN ID Ethertype IP Protocol Src/Dst IP Address ToS/DSCP Src/Dst Port Number

Also slices network traffic based on layer 2-4 header information

FlowSpace

FlowSpace (Cont.)

FlowVisor Slicing Policy FV intercepts OF messages from devices FV only sends control plane messages to the Slice controller if the src device is in the Slice Topology. Rewrites OF feature negotiation messages so the slice controller only sees the ports in it’s slice Port up/down messages are pruned and only forwarded to affected slices

FlowVisor Slicing Policy FV intercepts OF messages from controllers Rewrites Flow Insertion, Deletion & Modifications so they don’t violate the slice definition Flow definition – ex. Limit Control to HTTP traffic only Actions – ex. Limit forwarding to only ports in the slice Expand Flow rules into multiple rules to fit policy Flow definition – ex. If there is a policy for John’s HTTP traffic and another for Uwe’s HTTP traffic, FV would expand a single rule intended to control all HTTP traffic into 2 rules. Actions – ex. Rule action is send out all ports. FV will create one rule for each port in the slice. Returns “action is invalid” error if trying to control a port outside of the slice

FVCTL fvctl is the cli used to control a running instance of flowvisor (over XMLRPC) fvctl --passwd-file=/etc/flowvisor/fvpasswd command [args…] fvctl command [args…]

> fvctl createSlice Specifies a controller/slice fvctl createSlice <slicename> <controller_url> <email> controller_url = tcp:<ip address>:<port #> fvctl createSlice FinanceDept tcp:155.55.5.5:6633 bob@finance.example.edu

> fvctl getSliceInfo Dumps information about the slice controller_port=6633 controller_hostname=140.221.223.153 creator=fvadmin contact_email=bob@example.edu

> fvctl changeSlice Edit a slice attributes: controller_port=6633 controller_hostname=140.221.223.153 creator=fvadmin contact_email=you@example.edu Examples: fvctl changeSlice <slicename> <key> <value> fvctl changeSlice iCAIR controller_port 6644

> fvctl listSlices lists the slices that have been created Slice 0: iCAIR Slice 1: CPQD Slice 2: Clemson Slice 3: I2-NOX Slice 4: IU-100G Slice 5: SARA Slice 6: ESNet Slice 7: fvadmin

> fvctl deleteSlice Delete a slice, and the slice’s corresponding flowspace fvctl deleteSlice ESNet

> fvctl listDevices List DPID of all connected OpenFlow devices Device 0: 00:00:0e:83:40:39:18:58 Device 1: 00:00:0e:83:40:39:1a:57 Device 2: 00:00:0e:83:40:39:19:96 Device 3: 00:00:0e:83:40:39:1b:93 Device 4: 00:00:0e:83:40:39:18:1b Device 5: 00:00:0e:84:40:39:19:96 Device 6: 00:00:0e:84:40:39:1a:57 Device 7: 00:00:0e:84:40:39:1b:93 Device 8: 00:00:0e:84:40:39:18:1b Device 9: 00:00:0e:84:40:39:18:58

> fvctl getLinks List port # and DPID of both ends of each link Link 0: Link[srcDPID=00:00:0e:83:40:39:1b:93,srcPort=2,dstDPID=00:00:0e:83:40:39:18:1b,dstPort=2] Link 1: Link[srcDPID=00:00:0e:84:40:39:18:1b,srcPort=2,dstDPID=00:00:0e:84:40:39:1b:93,dstPort=2]

> fvctl addFlowSpace Insert a flowspace rule fvctl addFlowSpace <dpid> <priority> <match> <actions> fvctl addFlowSpace 00:c8:08:17:f4:4b:82:00 100 in_port=22 Slice:ESNet=4

dpid Unique DPID Wildcard DPID 00:00:00:23:10:35:ce:a5 HP VLAN:MAC-ADDRESS VLAN 10 - 00:0a:2c:27:d7:76:ea:80 VLAN 20 - 00:14:2c:27:d7:76:ea:80 VLAN 30 - 00:1e:2c:27:d7:76:ea:80 VLAN 40 - 00:28:2c:27:d7:76:ea:80 Wildcard DPID ff:ff:ff:ff:ff:ff:ff or “any” or “all” DPID The datapath identifier (DPID) is a unique ID to name and identify OpenFlow devices. With fvctl, DPIDs are 8 bytes and can be specified as a decimal number or as 8 hex octets, e.g., 00:00:00:23:10:35:ce:a5. The DPID ff:ff:ff:ff:ff:ff:ff is a "wildcard" DPID that matches all DPIDs. It can be specified using any of the following short cuts: all, any, or ALL_DPIDS.

priority Flow entries are sorted by PRIORITY (high number is higher priority) and only the highest priority matched is considered. Priorities are any positive integer in the range [0:2^31]

match Flow packet match fields in_port=port_no dl_vlan=vlan dl_src/dl_dst=mac nw_src/nw_dst=ip[/netmask] nw_proto=proto nw_tos=tos/dscp tp_src/tp_dst=port FLOW SYNTAX Some fvctl commands accept an argument that describes a flow or flows. Such flow descriptions comprise a series field=value assignments, sepa- rated by commas. The following field assignments describe how a flow matches a packet. If any of these assignments is omitted from the flow syntax, the field is treated as a wildcard; thus, if all of them are omitted, the result- ing flow matches all packets. The string all or any is used to specify a flow that matches all packets. in_port=port_no Matches physical port port_no. Switch ports are numbered as displayed by fvctl getDeviceInfo DPID. dl_vlan=vlan Matches IEEE 802.1q virtual LAN tag vlan. Specify 0xffff as vlan to match packets that are not tagged with a virtual LAN; otherwise, specify a number between 0 and 4095, inclusive, as the 12-bit VLAN ID to match. dl_src=mac Matches Ethernet source address mac, which should be specified as 6 pairs of hexadecimal digits delimited by colons, e.g. 00:0A:E4:25:6B:B0. dl_dst=mac Matches Ethernet destination address mac. dl_type=ethertype Matches Ethernet protocol type ethertype, which should be speci- fied as a integer between 0 and 65535, inclusive, either in dec- imal or as a hexadecimal number prefixed by 0x, e.g. 0x0806 to match ARP packets. nw_src=ip[/netmask] Matches IPv4 source address ip, which should be specified as an IP address, e.g. 192.168.1.1. The optional netmask allows matching only on an IPv4 address prefix. The netmask is speci- ficed "CIDR-style", i.e., 192.168.1.0/24. nw_dst=ip[/netmask] Matches IPv4 destination address ip. nw_proto=proto Matches IP protocol type proto, which should be specified as a decimal number between 0 and 255, inclusive, e.g. 6 to match TCP packets. nw_tos=tos/dscp Matches ToS/DSCP (only 6-bits, not modify reserved 2-bits for future use) field of IPv4 header tos/dscp, which should be spec- ified as a decimal number between 0 and 255, inclusive. tp_src=port Matches transport-layer (e.g., TCP, UDP, ICMP) source port port, which should be specified as a decimal number between 0 and 65535 (in the case of TCP or UDP) or between 0 and 255 (in the case of ICMP), inclusive, e.g. 80 to match packets originating from a HTTP server. tp_dst=port Matches transport-layer destination port port. For example: Match on all traffic that has ether_type of IP and IP->protocol of ICMP: dl_type=0x0800,nw_proto=1. A more complicated FLOW MATCH: dl_src=00:23:10:ff:a4:b1,dl_type=0x0800,nw_proto=6,tp_dst=80

actions Comma-separated list of slices with control permissions over matching flowspace Permissions Delegate=1 Read=2 Write=4 Ex. Slice:IU-LB=4,Monitor=2 SLICEACTIONS Slice actions is a comma separated list of slices that have control over a specific FlowSpace. Slice actions are of the form "Slice:slice- name1=perm[Slice:slicename2=perm[...]]". Each slice can have three types of permissions over a flowspace: DELEGATE, READ, and WRITE. Per- missions are currently a bitmask specified as an integer, with DELE- GATE=1, READ=2, WRITE=4. So, "Slice:alice=5,bob=2" would give Alice’s slice DELEGATE and WRITE permissions (1+4=5), but Bob only READ permis- sions. Improving this interface is on the TODO list. For example, fvctl addFlowSpace all 2 any Slice:slice1=4,Slice:slice2=2 DELEGATE A slice can delegate control of this flowspace to another slice. It also has permissions to un-delegate/reclaim the flowspace. READ A slice receives packet_in’s matching this flow entry, can send LLDP messages and stats to switches in this flow entry, but can- not write to or change the switch’s flow table. This is useful for implementing a monitoring slice. WRITE A slice has all of the permissions of READ but can also write to the flow table if the flow_mod matches this flow entry. FlowVi- sor will try to rewrite a flow_mod (if necessary) as the logical intersection of a slice’s flow_mod and the union of its FlowS- pace.

> fvctl listFlowSpace Dumps a list of the FlowSpace rules, matching: listFlowsSpace rule #: <dpid>,<ruleMatch>,<actionList>,<id>,<priority> dpid=[00:00:00:00:00:00:00:13] ruleMatch=[OFMatch[in_port=53,dl_src=8c:7c:ff:0d:e7:02]] actionsList=[Slice:IU-100G=4] id=[62973] priority=[50]

> fvctl changeFlowSpace Change an existing FlowSpace rule fvctl changeFlowSpace <id><dpid> <priority> <match> <actions> fvctl changeFlowSpace 62973 00:00:00:00:00:00:00:13 50 in_port=53 Slice:IU-100G=4

> fvctl removeFlowSpace Remove an existing FlowSpace rule fvctl removeFlowSpace <id> fvctl removeFlowSpace 62973

> complete list of fvctl commands listSlices createSlice <slicename> <controller_url> <email> changeSlice <slicename> <key> <value> deleteSlice <slicename> changePasswd <slicename> getSliceInfo <slicename> getSliceStats <slicename> getSwitchStats <dpid> getSwitchFlowDB <dpid> getSliceRewriteDB <slicename> <dpid> listFlowSpace removeFlowSpace <id> addFlowSpace <dpid> <priority> <match> <actions> changeFlowSpace <id> <dpid> <priority> <match> <actions> listDevices getDeviceInfo <dpid> getLinks ping <msg> getConfig <configEntry> setConfig <configEntry> <value> registerCallback <URL> <methodName> <cookie> registerTopologyEventCallback <URL> <methodName> <eventType> deregisterTopologyEventCallback <method> <eventType> unregisterCallback

FlowVisor git clone git://gitosis.stanford.edu/flowvisor.git https://openflow.stanford.edu/display/DOCS/Installation+Guide

Expedient / Opt-In manager Software to tie campus OpenFlow deployments to GENI. Allows Aggregate Providers (Campus) to make a “sliver” of a switch available to researchers Integrates with Flowvisor XMLRPC interface and GENI AAA infrastructure http://www.openflowswitch.org/foswiki/bin/view/OpenFlow/Deployment/HOWTO/ProductionSetup/InstallingExpedientOIM ----- Meeting Notes (1/13/11 11:40) ----- Aloos sp

FOAM FlowVisor OpenFlow Aggregate Manager Replaces the AM and OIM parts of Expedient GENI AM API interface for experimenters JSON API interface for management foamctl command-line interface to the JSON API

Insert FlowVisor between Controller and Switch FlowVisor Lab 1 Insert FlowVisor between Controller and Switch

Start FlowVisor Login to FV VM Reset the Flowvisor config > sudo fvconfig generate /usr/etc/flowvisor/config.xml set password as “flowvisor” (without quotes) Start Flowvisor > /usr/sbin/flowvisor /usr/etc/flowvisor/config.xml &

Restart NOX (if necessary) Login to NOX-[group_num] VM # cd /home/openflow/nox/build/src # ./nox_core -v -i ptcp:6633 pyhub &

Reconfigure Switch Point OF VLAN at FV as its controller vlan <group vlan number> openflow disable no openflow controller tcp:<controller ip address>:6633        openflow controller tcp:<flowvisor ip address>:6633        openflow enable

Create Slice & FlowSpace Create Slice (pick a slice name and email address fvctl  createSlice <slice name> tcp:<nox controller ip address>:6633 <email_address> Create Flowspace (replace x,y,z with assigned ports) fvctl addFlowSpace <switch dpid> <priority> in_port=x Slice:<slice name>=4 fvctl addFlowSpace <switch dpid> <priority> in_port=y Slice:<slice name>=4 fvctl addFlowSpace <switch dpid> <priority> in_port=z Slice:<slice name>=4

Verify List Existing Slices & Devices Verify NOX sees switch DPID fvctl listSlices fvctl getSliceInfo <slicename> fvctl getSliceStats <slicename> fvctl listDevices fvctl getDeviceInfo <dpid> fvctl getSwitchStats <dpid> fvctl getSwitchFlowDB <dpid> fvctl getLinks fvctl listFlowSpace Verify NOX sees switch DPID Ping between hosts

Expand each groups repeater across all four switches FlowVisor Lab 2 Expand each groups repeater across all four switches

Configure Switch On your own switch configure an openflow vlan for each of the other 3 groups and point them to your flowvisor vlan <group vlan number> name “OpenFlow VLAN Group <group number>”           untagged <group port range>           tagged <trunk port list>           openflow enable           openflow controller tcp:<flowvisor ip address>:6633

Configure FlowVisor On your flowvisor, create 3 additional slices pointing to each other groups NOX controller fvctl  createSlice <slice name> tcp:<nox controller ip address>:6633 <email_address> Create FlowSpace for each Slice fvctl addFlowSpace <switch dpid> <priority> in_port=x Slice:<slice name>=4 fvctl addFlowSpace <switch dpid> <priority> in_port=y Slice:<slice name>=4 fvctl addFlowSpace <switch dpid> <priority> in_port=z Slice:<slice name>=4

Restart NOX (if necessary) Login to NOX-[group_num] VM > cd /home/openflow/nox/build/src > ./nox_core -v -i ptcp:6633 pyhub &

Verify List Existing Slices & Devices Verify NOX sees switch DPIDs fvctl listSlices fvctl getSliceInfo <slicename> fvctl getSliceStats <slicename> fvctl listDevices fvctl getDeviceInfo <dpid> fvctl getSwitchStats <dpid> fvctl getSwitchFlowDB <dpid> fvctl getLinks fvctl listFlowSpace Verify NOX sees switch DPIDs Ping between hosts