{"id":13471454,"url":"https://github.com/martimy/flowmanager","last_synced_at":"2025-03-26T13:31:06.185Z","repository":{"id":47753919,"uuid":"137810714","full_name":"martimy/flowmanager","owner":"martimy","description":"An SDN application that gives its user the ability to control flows in an OpenFlow network without coding.","archived":false,"fork":false,"pushed_at":"2024-05-23T14:44:49.000Z","size":2490,"stargazers_count":81,"open_issues_count":1,"forks_count":35,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-10-30T02:59:40.378Z","etag":null,"topics":["network-monitoring","networks","openflow","openflow-app","ryu-controller","sdn"],"latest_commit_sha":null,"homepage":"https://martimy.github.io/flowmanager/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martimy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-18T21:55:45.000Z","updated_at":"2024-10-23T23:20:03.000Z","dependencies_parsed_at":"2024-01-16T07:22:06.327Z","dependency_job_id":"f89ee44e-aad4-483d-b9d0-cb3bb1e916c3","html_url":"https://github.com/martimy/flowmanager","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimy%2Fflowmanager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimy%2Fflowmanager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimy%2Fflowmanager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimy%2Fflowmanager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martimy","download_url":"https://codeload.github.com/martimy/flowmanager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245662804,"owners_count":20652086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["network-monitoring","networks","openflow","openflow-app","ryu-controller","sdn"],"created_at":"2024-07-31T16:00:45.163Z","updated_at":"2025-03-26T13:31:05.661Z","avatar_url":"https://github.com/martimy.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# FlowManager\r\n\r\n[![Static Badge](https://img.shields.io/badge/Docs-github.io-blue)](https://martimy.github.io/flowmanager)\r\n\r\n\r\nThe FlowManager is a RYU controller application that gives the user manual control over the flow tables in an OpenFlow network. The user can create, modify, or delete flows directly from the application. The user can also monitor the OpenFlow switches and view statistics. The FlowManager is ideal for learning OpenFlow in a lab environment, or in conjunction with other applications to tweak the behaviour of network flows in a test environment. \r\n\r\n## Features\r\n\r\n- Add/modify/delete flow entries in flow tables.\r\n- Add/modify/delete group tables and meters.\r\n- Backup/restore switch tables to/from local drive.\r\n- View flow tables, group tables, and meters.\r\n- View switch statistics.\r\n- View network topology.\r\n- Track flow entries.\r\n\r\n![SCREEN1](web/img/screen1.png) ![SCREEN2](web/img/screen2.png)\r\n![SCREEN3](web/img/screen3.png) ![SCREEN4](web/img/screen4.png)\r\n\r\n### New in V0.4.2\r\n\r\n- Upgraded jquery to v3.7.1\r\n\r\n### New in V0.4.1\r\n\r\n- Upgraded jquery to v3.5.0\r\n\r\n### New in V0.4.0\r\n\r\n- Fixed a bug tracking flow entries.\r\n- Editing Python code style closer to PEP-8 (more work is needed).\r\n- Spliting Python code into four modules for easier management.\r\n- Reorganized folders. \r\n\r\n## Installation\r\n\r\n### Ryu Controller\r\n\r\nFlowManager is a [RYU Controller](https://osrg.github.io/ryu/) application, so make sure that the controller is installed properly before you proceed.\r\nAlso, if you intend to use FlowManager with [Mininet](http://mininet.org/), you will need to install that too.\r\n\r\nTo install Ryu, \r\n\r\n```\r\n$ pip install ryu\r\n```\r\n\r\nNote: The application, ryu-manager, which you will need to run the FlowManager is known to have issues with Python3.10 and eventlet module. In this case, you may need to downgrade the Python version and the eventlet module.\r\n\r\nIf the default Python version in your machine is higher than 3.9, you may need install Python v3.9 and change the default Python version running on you machine or install Ryu in a virtual environment for Python 3.9:\r\n\r\n1. Install Python 3.9\r\n\r\n    ```bash\r\n    $ sudo add-apt-repository ppa:deadsnakes/ppa\r\n    $ sudo apt-get update\r\n    $ sudo apt-get install python3.9\r\n    ```\r\n\r\n2. Install distutils\r\n\r\n    ```bash\r\n    $ sudo apt-get install python3.9-distutils\r\n    ```\r\n\r\n3. Create Virtual Environemnt (or change the default Python version)\r\n\r\n    ```bash\r\n    $ virtualenv -p /usr/bin/python3.9 venv39\r\n    ```\r\n\r\n4. Install Ryu\r\n\r\n    ```bash\r\n    $ source venv39/bin/activate\r\n    $ python -m pip install --upgrade pip\r\n    $ pip3 uninstall eventlet\r\n    $ pip3 install eventlet==0.30.2\r\n    $ pip3 install ryu\r\n    ```\r\n\r\n5. Verify the ryu-manager is working properly\r\n\r\n    ```bash\r\n    $ ryu-manager --version\r\n    ryu-manager 4.34\r\n    ```\r\n\r\n\r\n### FlowManager\r\n\r\nInstall FlowManager using the following steps:\r\n\r\n```\r\n$ git clone https://github.com/martimy/flowmanager\r\n```\r\n\r\n## Running the app\r\n\r\nRun the FlowManager alone:\r\n```\r\n$ ryu-manager ~/flowmanager/flowmanager.py\r\n```\r\n\r\nor with another RYU application:\r\n\r\n```\r\n$ ryu-manager ~/flowmanager/flowmanager.py ryu.app.simple_switch_13\r\n```\r\n\r\nand to display the topology:\r\n\r\n```\r\n$ ryu-manager --observe-links ~/flowmanager/flowmanager.py ryu.app.simple_switch_13\r\n```\r\n\r\nUse a web broswer to launch the site http://localhost:8080/home/index.html\r\n\r\n### Docker installation\r\n\r\nUse a [Docker image](https://hub.docker.com/r/martimy/ryu-flowmanager) to run Ryu Controller with the FlowManager.\r\n\r\n```\r\ndocker pull martimy/ryu-flowmanager\r\ndocker run -d -p 6633:6633 -p 8080:8080 martimy/ryu-flowmanager\r\n```\r\n\r\nTo run the controller with another Ryu app:\r\n\r\n```\r\ndocker run -d -p 6633:6633 -p 8080:8080 martimy/ryu-flowmanager:latest ryu.app.simple_switch_13\r\ndocker run -d -p 6633:6633 -p 8080:8080 martimy/ryu-flowmanager:latest flowmanager/flowmanager.py ryu.app.simple_switch_13\r\n```\r\n\r\nTo bypass the entry point:\r\n\r\n```\r\ndocker run -it --entrypoint bash martimy/ryu-flowmanager\r\n```\r\n\r\n## Documentation\r\n\r\nYou can find some useful documention in [here](https://martimy.github.io/flowmanager/), but it is still a work-in-progress.\r\n\r\n\r\n## Built With\r\n\r\n* [Python](https://www.python.org/) - A programming language ideal for SDN applications.\r\n* [jQuery](https://jquery.com/) - A JavaScript library for event handling, animation.\r\n* [D3.js](https://d3js.org/) - A JavaScript library for data visulization. \r\n\r\n## Authors\r\n\r\n* **Maen Artimy** - [Profile](http://adhocnode.com)\r\n\r\n## License\r\n\r\nFlowManager is licensed under the Apache 2 License - see the [LICENSE](LICENSE) file for details\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartimy%2Fflowmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartimy%2Fflowmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartimy%2Fflowmanager/lists"}