The Openflow Soft Switch

5,794 views

Published on

Presentation from Erlang User Conference in Stockholm, June 2012.

Published in: Technology, News & Politics
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,794
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
183
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

The Openflow Soft Switch

  1. 1. © 1999-2012 Erlang Solutions Ltd. Krzysztof Rutka @rptkr The OpenFlow Soft Switch
  2. 2. © 1999-2012 Erlang Solutions Ltd. 2 http://www.openflow.org/documents/openflow-wp-latest.pdf • Run experimental protocols in the campus networks, • Exploit a common set of flow-table functions that run in many switches and routers, • Provide an open protocol to control different switches and routers in a unified way, • OpenFlow: Enabling Innovation in Campus Networks whitepaper. History of OpenFlow Stanford University
  3. 3. © 1999-2012 Erlang Solutions Ltd. OpenFlow is the leading standard for Software Defined Networking. What is OpenFlow? 3 Traditional networks OpenFlow/SDN Lots of protocols; STP, RIP, OSPF, BGP... All computation and logic handled by software; OpenFlow Controller Vendor specific interfaces Common API; OpenFlow Protocol Switches for L2 switching; Routers for L3 routing One device; OpenFlow Switch; Flow Forwarding; L2 - L4
  4. 4. © 1999-2012 Erlang Solutions Ltd. Open Network Foundation 4
  5. 5. © 1999-2012 Erlang Solutions Ltd. How it works? 5 OpenFlow Switch
  6. 6. © 1999-2012 Erlang Solutions Ltd. How it works? 6 OpenFlow pipeline • Actions • Instructions
  7. 7. © 1999-2012 Erlang Solutions Ltd. OpenFlow specifications 7 OpenFlow 1.3 TBA OpenFlow 1.2 December 2011 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.2.pdf OpenFlow 1.1 February 2011 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.1.0.pdf OpenFlow 1.0 December 2009 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.0.0.pdf
  8. 8. © 1999-2012 Erlang Solutions Ltd. • OpenVSwitch • of12softswitch (TrafficLab) • Hardware switches from HP, NEC... Switches: OpenFlow ecosystem 8 • Floodlight • FlowER • Beacon, Maestro, NOX/POX, Trema... Controllers (Frameworks): • OFTest Others: https://github.com/CPqD/of12softswitch http://openvswitch.org/ http://floodlight.openflowhub.org/ https://github.com/travelping/flower http://oftest.openflowhub.org/ .01 OpenFlow
  9. 9. © 1999-2012 Erlang Solutions Ltd. LINC - pure OpenFlow soft switch 9 Easily extensible Pure Erlang implementation Forwarding backend API Full-featured Full support for all OpenFlow 1.2 features Reference implementation http://www.infoblox.com
  10. 10. © 1999-2012 Erlang Solutions Ltd. • Excellent development speed, • Easy to read, modify and extend, • Great for implementing binary protocols like the OpenFlow Protocol, • Behaviours and callbacks as a way to make things modular. Why Erlang? ;) 10
  11. 11. © 1999-2012 Erlang Solutions Ltd. • Erlang representation of OpenFlow Protocol structures and enumerations, • Encoding/decoding of OpenFlow Protocol messages, • OpenFlow Protocol parser, • Support for older versions of the protocol. OpenFlow Protocol 1.2 Library 11
  12. 12. © 1999-2012 Erlang Solutions Ltd. -record(ofp_message, { experimental = false :: boolean(), version = 3 :: integer(), xid :: integer(), body :: ofp_message_body() }). -record(ofp_hello, {}). -record(ofp_echo_request, { data = <<>> :: binary() }). -record(ofp_flow_mod, { cookie = <<0:64>> :: binary(), cookie_mask = <<0:64>> :: binary(), table_id = all :: ofp_table_id(), command :: ofp_flow_mod_command(), idle_timeout = 0 :: integer(), ... OpenFlow Protocol 1.2 Library 12
  13. 13. © 1999-2012 Erlang Solutions Ltd. • Message enumeration, • Flat ofp_match structure, • One field for tcp/udp, • No instructions, • Lots of other small incompatibilities. OpenFlow Protocol 1.2 is not compatible with 1.0. OpenFlow Protocol 1.2 Library 13
  14. 14. © 1999-2012 Erlang Solutions Ltd. • Erlang behaviour, • Simple encode/1, decode/1 callbacks, • Convert structures from all versions to one common representation, • OpenFlow Protocol 1.2 as a base. OpenFlow Protocol 1.2 Library 14 gen_protocol
  15. 15. © 1999-2012 Erlang Solutions Ltd. -module(gen_protocol). %% Encode OpenFlow Protocol message %% from Erlang representation to binary. -callback encode(Message :: ofp_message()) -> {ok, Binary :: binary()} | {error, Reason :: any()}. %% Decode OpenFlow Protocol message %% from binary to Erlang representation. -callback decode(Binary :: binary()) -> {ok, Message :: ofp_message()} | {error, Reason :: any()}. OpenFlow Protocol 1.2 Library 15
  16. 16. © 1999-2012 Erlang Solutions Ltd. Erlang implementation 16 OpenFlow Switch Application Receiver Supervisor Port Supervisor Receiver Port Switch Logic Backend Application Supervisor Supervision tree
  17. 17. © 1999-2012 Erlang Solutions Ltd. • Communication with the OpenFlow Controllers, • Managing controller roles, • Managing the switch configuration, • Handling simple messages independent of the actual forwarding logic. Common switch logic 17
  18. 18. © 1999-2012 Erlang Solutions Ltd. • Erlang behaviour, • Separates common switch logic from the actual forwarding engine, • Implements flow tables, group table, packet matching engine, port abstraction, etc. • Callbacks to handle OpenFlow Protocol messages, • Userspace, kernel, hardware... Forwarding backend API 18 gen_switch
  19. 19. © 1999-2012 Erlang Solutions Ltd. • Implements gen_switch behaviour, • Pure userspace Erlang implementation. Userspace implementation 19 ofs_userspace Ease of use Extensibility Performance >
  20. 20. © 1999-2012 Erlang Solutions Ltd. • different switch configurations, • different port configurations, • random flows, • random ethernet frames, • OF Protocol messages with random content. Simulate a real-life use cases, by generating: How to test a switch? 20 Quviq’s QuickCheck
  21. 21. © 1999-2012 Erlang Solutions Ltd. • implemented OF Protocol Library with support for versions 1.2 and 1.0, • implemented OF Logical Switch in pure Erlang: • matching engine for all fields from 1.2, • support for (almost) all instructions, actions, reserved ports, groups, etc. Where we are at the moment: Current status 21 Where we are going: • implemented support for OpenFlow 1.1, • work on different forwarding backends.
  22. 22. © 1999-2012 Erlang Solutions Ltd. • Read the OpenFlow White Paper, • Look at the OpenFlow Specification, • Get involved. Where to go next? 22 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.2.pdf http://www.openflow.org/documents/openflow-wp-latest.pdf FlowForwarding.org community and LINC will launch around June 11th!

×