Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The OpenFlow Soft Switch

The OpenFlow Soft Switch

Presentation from Erlang User Conference in Stockholm, June 2012.

Avatar for Krzysztof Rutka

Krzysztof Rutka

May 30, 2012
Tweet

Other Decks in Technology

Transcript

  1. © 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
  2. © 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
  3. © 1999-2012 Erlang Solutions Ltd. How it works? 6 OpenFlow

    pipeline • Actions • Instructions
  4. © 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
  5. © 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/ .0 1 OpenFlow
  6. © 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
  7. © 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
  8. © 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
  9. © 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
  10. © 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
  11. © 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
  12. © 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
  13. © 1999-2012 Erlang Solutions Ltd. Erlang implementation 16 OpenFlow Switch

    Application Receiver Supervisor Port Supervisor Receiver Port Switch Logic Backend Application Supervisor Supervision tree
  14. © 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
  15. © 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
  16. © 1999-2012 Erlang Solutions Ltd. • Implements gen_switch behaviour, •

    Pure userspace Erlang implementation. Userspace implementation 19 ofs_userspace Ease of use Extensibility Performance >
  17. © 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
  18. © 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.
  19. © 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!