๐ Enhanced Ryu SDN Framework - A modernized, feature-rich Software Defined Networking framework with advanced middleware capabilities, multi-controller support, and AI/ML integration.
This is a comprehensively modernized and enhanced version of the Ryu SDN framework that includes:
- ๐ Modern Python Support: Python 3.8+ with type hints and modern syntax
- ๐ฆ Updated Dependencies: Latest stable versions of all dependencies
- ๐งช Modern Testing: Migrated from nose to pytest with comprehensive test coverage
- ๐๏ธ Modern Project Structure: Uses pyproject.toml and modern packaging standards
- Python 3.8 or later
- pip (Python package manager)
- Mininet (for network emulation) - run
sudo apt install mininet
The following dependencies are automatically installed with Ryu:
eventlet- Asynchronous networkingmsgpack- Binary serializationnetaddr- Network address manipulationoslo.config- Configuration managementovs- Open vSwitch bindingstinyrpc- RPC library for WSGI functionalitywebob- WSGI request/response objects
# Clone the repository
git clone https://github.com/nqmn/ryu.git
cd ryu
# Create virtual environment
python3 -m venv venv
# Activate it
source venv/bin/activate
# Upgrade pip and install the package
pip install --upgrade pip
# Install with Core Ryu only (default)
pip install -e .
# Clone the repository
git clone https://github.com/nqmn/ryu.git
cd ryu
# Upgrade pip and install the package
pip install --upgrade pip --break-system-package --ignore-installed
# Install with Core Ryu only (default)
pip install -e . --break-system-package --ignore-installed
# Add to PATH environment
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Start Ryu with with simple switch
ryu-manager ryu/app/simple_switch_13.py
# Install mininet
sudo apt install mininet -y
# Install Git
sudo apt install git -y
# Install Python3, pip and its dependencies
sudo apt install python3-pip
# Clone the repository
git clone https://github.com/nqmn/ryu.git
cd ryu
# Upgrade pip and install the package
pip install --upgrade pip --break-system-package --ignore-installed
# Install with Core Ryu only (default)
pip install -e . --break-system-package --ignore-installed
# Install with Core Ryu only (default) for sudo
sudo pip install -e . --break-system-package --ignore-installed
# Add to PATH environment
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Start Ryu with with simple switch
ryu-manager ryu/app/simple_switch_13.py
# Install Curl (Optional)
sudo apt install curl
# Test installation
python3 test_full_deployment.py
โ๏ธ If you found any issues, do reach me!
If you want to test the advanced middleware capabilities, multi-controller support, and AI/ML integration, here it is.
- ๐ RESTful API: Comprehensive REST API for network management
- โก WebSocket Streaming: Real-time event streaming and monitoring
- ๐ Multi-Controller Support: OpenFlow (Ryu) and P4Runtime controller management
- ๐ค AI/ML Integration: Plugin architecture for machine learning modules
- ๐ Advanced Monitoring: Flow statistics, port metrics, and network analytics
- ๐ฅ๏ธ Web-based GUI: Interactive topology visualization and management
- ๐บ Live Terminal: Real-time network event monitoring with color coding
- ๐ง Dynamic Configuration: Runtime topology and flow management
- ๐ Performance Analytics: Comprehensive network performance metrics
# Install with all features
pip install -e .[all]
# Or install individual features
pip install -e .[middleware] # Enhanced SDN middleware
pip install -e .[gui] # Web GUI
pip install -e .[p4runtime] # P4Runtime support
pip install -e .[dev] # Development tools
# Or install with specific features
pip install -e .[middleware,gui,p4runtime]
# Start Ryu with middleware
ryu-manager ryu.app.middleware.core
# Start with GUI and monitoring
ryu-manager ryu.app.middleware.core ryu.app.gui.topology
# Start multi-controller setup
python demo_multi_controller.py# Run basic tests
python test_middleware.py
# Check API health
curl http://localhost:8080/v2.0/health
# View GUI (if enabled)
# Open browser to http://localhost:8080/guiOur documentation is organized into clear sections for easy navigation:
๐ Getting Started
๐๏ธ Architecture
๐ง Installation & Setup
๐ API Reference
๐ Examples & Tutorials
๐ Changelog
- RESTful Interface: Complete REST API for network management
- Real-time Events: WebSocket streaming for live network monitoring
- Topology Management: Dynamic network topology creation and modification
- Flow Control: Advanced OpenFlow rule management
- Traffic Generation: Built-in traffic generation and testing tools
- Heterogeneous Controllers: Support for OpenFlow and P4Runtime
- Unified Management: Single API for multiple controller types
- Health Monitoring: Automatic health checks and failover
- Dynamic Registration: Runtime controller registration and management
- Plugin Architecture: Easy integration of ML models
- Real-time Inference: Live network analysis and prediction
- Event-driven Processing: Automatic ML processing of network events
- Performance Optimization: ML-based network optimization
- Topology Visualization: Interactive network topology graphs
- Live Monitoring: Real-time network status and metrics
- Control Interface: GUI-based network management
- Export Capabilities: Network data export and reporting
We welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Documentation: Full Documentation
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Original Ryu Website: Ryu Official Site
- Original Ryu GitHub: Ryu GitHub
This enhanced version builds upon the excellent foundation of the original Ryu SDN framework. We thank the original Ryu development team and the SDN community for their contributions.
Ready to build the future of networking? ๐ Get Started today!