Git Product home page Git Product logo

flow_manager's Introduction

Overview

WARNING: As previously announced on our communication channels, the Kytos project will enter the "shutdown" phase on May 31, 2021. After this date, only critical patches (security and core bug fixes) will be accepted, and the project will be in "critical-only" mode for another six months (until November 30, 2021). For more information visit the FAQ at <https://kytos.io/faq>. We'll have eternal gratitude to the entire community of developers and users that made the project so far.

License Build status Code coverage Code-quality score

Attention

THIS NAPP IS STILL EXPERIMENTAL AND ITS EVENTS, METHODS AND STRUCTURES MAY CHANGE A LOT ON THE NEXT FEW DAYS/WEEKS. USE IT AT YOUR OWN DISCRETION

The kytos/flow_manager NApp exports a REST API to add, remove and list flows from OpenFlow switches, for versions 1.0 and 1.3. It can be used by other applications to manage flows with the supported fields.

This application creates an abstraction layer to other applications: it is only necessary to know the endpoints. The application handles the requests and returns the information already formatted.

Supported Fields

This NApp supports a subset of the OpenFlow specification fields in the bodies of the requests when creating and removing flows:

  • Flow attributes:
    • priority: Priority of the flow entry when matching packets;
    • idle_timeout: Time before the flow expires when no packet is matched;
    • hard_timeout: Time before the flow expires, not related to matching;
    • cookie: Flow cookie;
    • match:
      • in_port: Port where the packet came from;
      • dl_src: Ethernet frame source MAC address;
      • dl_dst: Ethernet frame destination MAC address;
      • dl_type: EtherType of the upper layer protocol;
      • dl_vlan: 802.1q VLAN ID;
      • dl_vlan_pcp: 802.1q VLAN PCP;
      • nw_src: IPv4 source address of the packet;
      • nw_dst: IPv4 destination address of the packet;
      • nw_proto: Upper layer protocol number;
    • actions:
      • push_vlan: Add a new VLAN tag to the packet. The type is tag_type ('s' for service, 'c' for client);
      • set_vlan: Change the VLAN ID of the packet to vlan_id;
      • pop_vlan: Remove the outermost VLAN tag of the packet.
      • output: Send the packet through port port.

Note

For the Output Action port you may use any port number or the string "controller". The string will be interpreted and converted to the correct controller port number for the datapath protocol version.

Note

For OpenFlow 1.3, the only Instruction supported is InstructionApplyAction.

Other fields are not supported and will generate error messages from the NApp.

Installing

All of the Kytos Network Applications are located in the NApps online repository. To install this NApp, run:

$ kytos napps install kytos/flow_manager

Requirements

  • kytos/of_core
  • kytos/storehouse

Events

Generated

kytos/flow_manager.flow.added

buffer: app

Event reporting that a FlowMod was sent to a Datapath with the ADD command.

Content

{
  'datapath': <Switch object>,
  'flow': <Object representing the installed flow>
}

kytos/flow_manager.flow.removed

buffer: app

Event reporting that a FlowMod was sent to a Datapath with the DELETE command.

Content

{
  'datapath': <Switch object>,
  'flow': <Object representing the removed flow>
}

Flow consistency mechanism

This NApp is also responsible for the consistency of the installed flows through kytos/flow_manager. To do this, all the flows sent to the switches are stored in the kytos/storehouse NApp and checked every X seconds if the flows installed in the switches are consistent with the stored data.

By default, the consistency mechanism is enabled, running every 60 seconds. This resource can be disabled in the settings.py file, changing the time of the check to 0.

Rest API

You can find a list of the available endpoints and example input/output in the 'REST API' tab in this NApp's webpage in the Kytos NApps Server.

flow_manager's People

Contributors

abaruchi avatar ajoaoff avatar beraldoleal avatar cemsbr avatar cmagnobarbosa avatar diraol avatar erickvermot avatar gleybersonandrade avatar hdiogenes avatar italovalcy avatar josemauro avatar llgoncalves avatar macartur avatar raphaelmcobe avatar renanrodrigo avatar viniarck avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.