Code Monkey home page Code Monkey logo

legacy's Introduction

Kytos SDN Platform

Experimental Tag Release License Build status Code coverage Code-quality score

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.

Kytos SDN Platform is the fastest way to deploy an SDN Network. With this you can deploy a basic OpenFlow controller or your own controller. Kytos was designed to be easy to install, use, develop and share Network Apps (NApps). Kytos is incredibly powerful and easy, its modular design makes Kytos a lightweight SDN Platform.

Kytos is conceived to ease SDN controllers development and deployment. It was motivated by some gaps left by common SDN solutions. Moreover, it has strong tights with a community view, so it is centered on the development of applications by its users. Thus, our intention is not only to build a new SDN solution, but also to build a community of developers around it, creating new applications that benefit from the SDN paradigm.

The project was born in 2014 and has been under active development since 2016.

For more information about this project, please visit Kytos project website.

Quick Start

Try First

You may try kytos without installing it by running our docker image. Just install docker from your package provider and run:

$ sudo docker run -it --privileged kytos/tryfirst

Installing

If you don't have Python 3 installed, please install it. Please make sure that you're using python3.6 or a later version:

$ apt install python3

Then, the first step is to clone kytos repository:

$ git clone https://github.com/kytos/kytos.git

After cloning, the installation process is done by standard setuptools install procedure:

$ cd kytos
$ sudo python3 setup.py install

Configuring

After kytos installation, all config files will be located at /etc/kytos/.

Kytos also accepts a configuration file as argument to change its default behaviour. You can view and modify the main config file at /etc/kytos/kytos.conf, and the logging config file at /etc/kytos/logging.ini.

For more information about the config options please visit the Kytos's Administrator Guide.

How to use

Once Kytos is installed, you can run the controller using:

$ kytosd

Kytos runs as a daemon by default. To run it in foreground, add the -f option to the command line:

$ kytosd -f

You can use -h or --help for more information about options to the command line.

With the above commands your controller will be running and ready to be used. Please note that you have to run it as an user with permission to open sockets at ports 6653 and 8181.

The Web Admin User Interface

Kytos installs automatically a web interface for administration. When Kytos is running, the Web UI runs in your localhost and can be accessed via browser, in http://localhost:8181. Have fun (:

Get Help

You can find us on the #kytos IRC channel on freenode.net network.

We also have two mailing lists:

Submit an Issue

If you find a bug or a mistake in the documentation, you can help us by submitting an issue to our repo. Even better, you can submit a Pull Request to fix it. Before sharing a fix with the Kytos Community, please, check the :ref:`contributing-submission-guidelines` section.

Get Involved

We'd love for you to contribute to our source code and to make Kytos better than it is today!

This is one component of the Kytos project. For more information on how to get involved, please, visit the section :doc:`/developer/how_to_contribute` of the Kytos documentation. Our mailing lists are in :doc:`/home/get_help`.

Authors

For a complete list of authors, please see AUTHORS.rst.

Contributing

If you want to contribute to this project, please read Kytos Documentation website.

License

This software is under MIT-License. For more information please read LICENSE file.

What's Next

You are now ready to browse our guide for :doc:`administrators </admin/intro>` or :doc:`developers </developer/intro>`. Check out!

.prev-next-nav li:last-child { display: none; }

legacy's People

Contributors

abaruchi avatar beraldoleal avatar cemsbr avatar diraol avatar erickvermot avatar macartur avatar raphaelmcobe avatar renanrodrigo avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

legacy's Issues

Cannot import app's class

For example:

  • my_app/
    • main.py
    • myclass.py

Both ways do not work in main.py:

  • from .myclass import MyClass (preferred)
  • from myclass import MyClass

The (dangerous) workaroud is:

sys.path.insert(0, dirname(__file__))
from myclass import MyClass
sys.path.pop(0)

Fix bug when getting topology

2016-11-09 13:23:39,477 - WARNING [kyco.core.switch] (Thread-20) No speed port 65534, sw :db, feats 0
[2016-11-09 13:23:39,477] ERROR in app: Exception on /kytos/topology [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/var/lib/kytos/napps/kytos/of.topology/main.py", line 58, in get_json_topology
    nodes.append(switch.as_dict())
  File "/usr/src/beraldo/ncc/github/kyco/kyco/core/switch.py", line 314, in as_dict
    'connection': "{}:{}".format(self.connection.address,
AttributeError: 'NoneType' object has no attribute 'address'
2016-11-09 13:23:39,477 - ERROR [kyco.controller] (Thread-20) Exception on /kytos/topology [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.5/dist-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/var/lib/kytos/napps/kytos/of.topology/main.py", line 58, in get_json_topology
    nodes.append(switch.as_dict())
  File "/usr/src/beraldo/ncc/github/kyco/kyco/core/switch.py", line 314, in as_dict
    'connection': "{}:{}".format(self.connection.address,
AttributeError: 'NoneType' object has no attribute 'address'
2016-11-09 13:23:39,479 - INFO [werkzeug] (Thread-20) 200.145.46.2```

Store flow stats by hash

Currently, all FlowStats are stored in one file (table_id.rdd). However, we should provide statistics by Flow hash, with Flow being defined in flow-manager app.

Show flow "installed since" information on web-ui

I am not sure if this information will be gathered by the of.flow-manager or by the of.stats napp, but we were asked to show on the web-ui (under the flows tab) for how long the flow has been installed on the switch.

ipv6disable test failure

With only of.core and of.ipv6disable, a kyco test fails.

======================================================================
FAIL: test_echo_reply (tests.test_core_apps.test_ofcore.TestOFCoreApp)
Testing a echo request/reply interaction.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/crypt/noBackup/repos/kytos/kyco/tests/test_core_apps/test_ofcore.py", line 192, in test_echo_reply
    self.assertEqual(response_header.message_type, Type.OFPT_ECHO_REPLY)
AssertionError: UBInt8(Type.OFPT_FLOW_MOD) != <Type.OFPT_ECHO_REPLY: 3>

----------------------------------------------------------------------

Improve handshake process

On the of.core napp some methods does not need to be 'listeners' since they can be called directly by other of.core methods.

For example, the "Hello handler" can be called directly by the method that creates the Hello event. The same occurs with the features_request 'handler'.

[stats] Rename API JSON keys

Currently, the fields are the same as OF spec. Their names should be changed so we know it is per second. E.g.: "bytes_count" -> "Bps".

  • /flows
  • /flow
  • /ports
  • /port

Migrate of.lldp to new execute model.

The lldp app still uses the old fashion execute method, with a loop until a signal is received.
There is a new model that only informs that the app will run inside a loop.

In l2ls app, "App information goes to app_name.json"

This was a TODO in setup method. It had self.name = 'kytos.l2_learning_switch'. I noticed there is a kytos.json file with "name" = "of.l2ls" and that's why I removed both TODO and self.name line, but I'm not sure whether there is anything else to do (e.g., change kytos.json to app_name.json as said in TODO). Could the TODO creator check if this is solved?

FlowStats API

Implement FlowStats API (Flask). Should be /of.stats/switches/<dpid>/flows/<hash>.

Output for chord diagram

Create output for kytos/kytos-admin-ui#37. Besides statistics in ../flows, also Flow.to_json()

Handle port status change

Today, if a switch send a Port Status Message (item 5.4.3 of spec) will are not handling this.

This should be implemented on kytos/of.topology napp.

Migrate of.stats rest logic to controller.

The controller now is responsible for maintaining the list of rest endpoints as well as starting and stopping the http server.

The of.stats app has to remove the lines responsible for the rest stuff.

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.