Skip to content

Taurine-Technology/sdn-launch-control

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SDN Launch Control

A comprehensive Software-Defined Networking (SDN) management platform that enables easy and automated adoption of the SDN paradigm into new or pre-existing networks. This monorepo contains both the backend API and frontend.

πŸš€ Quick Start

There is an installation manual for the v1.0.0-beta realease here. This will give you guidance on setting up the software and a network. There is also a video version of this manual here.

Alternatively follow the instructions below to set up the software.

Prerequisites

Successfully Tested on Ubuntu Desktop, Ubuntu Server, Windows WSL and Mac.

  • Docker and Docker Compose

Backend Setup

  1. From the root of the repo Navigate to the backend directory:

    cd backend/
  2. Create environment configuration:

    cp control_center/.env.example control_center/.env
    # Edit .env with your configuration
  3. Run the automated setup:

    ./setup.sh

Frontend Setup

  1. From the root of the repo Navigate to the UI directory:

    cd ui/ui/
  2. Create environment configuration:

    cp .example .env.local
    # Edit .env.local with your backend API URLs
  3. Install dependencies and start:

    ./setup.sh
  4. Access the application:

πŸ“ Project Structure

sdn-launch-control/
β”œβ”€β”€ backend/                    # Django REST API backend
β”‚   β”œβ”€β”€ control_center/         # Main Django application
β”‚   β”‚   β”œβ”€β”€ account/           # User authentication & profiles
β”‚   β”‚   β”œβ”€β”€ ansible/           # Ansible playbooks & automation
β”‚   β”‚   β”œβ”€β”€ classifier/        # ML traffic classification
β”‚   β”‚   β”œβ”€β”€ controller/        # SDN controller management
β”‚   β”‚   β”œβ”€β”€ device_monitoring/ # Real-time device monitoring
β”‚   β”‚   β”œβ”€β”€ network_data/      # Network analytics & data
β”‚   β”‚   β”œβ”€β”€ network_device/    # Device management
β”‚   β”‚   β”œβ”€β”€ notification/      # Telegram notifications
β”‚   β”‚   β”œβ”€β”€ odl/              # OpenDaylight integration
β”‚   β”‚   β”œβ”€β”€ onos/             # ONOS integration
β”‚   β”‚   β”œβ”€β”€ ovs_install/      # Open vSwitch installation
β”‚   β”‚   β”œβ”€β”€ software_plugin/  # Plugin system
β”‚   β”‚   └── utils/            # Utility functions
β”‚   β”œβ”€β”€ setup.sh              # Backend setup script
β”‚   └── README.md             # Backend documentation
β”œβ”€β”€ ui/                        # Next.js React frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/              # Next.js app router pages
β”‚   β”‚   β”œβ”€β”€ components/       # React components
β”‚   β”‚   β”œβ”€β”€ context/          # React context providers
β”‚   β”‚   β”œβ”€β”€ hooks/            # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ lib/              # Utility functions & API calls
β”‚   β”‚   └── locales/          # Internationalization files
β”‚   β”œβ”€β”€ public/               # Static assets
β”‚   β”œβ”€β”€ Dockerfile            # Frontend containerization
β”‚   β”œβ”€β”€ docker-compose.yml    # Frontend services
β”‚   └── README.md             # Frontend documentation
└── README.md                 # This file

🎯 Features

Backend Features

  • Device Management: Automated installation and configuration of Open vSwitch
  • Controller Integration: Support for OpenDaylight controllers
  • Traffic Classification: Machine learning-based traffic analysis and categorization
  • Network Monitoring: Real-time device statistics and performance metrics
  • Plugin System: Extensible architecture for custom network functionality
  • Automation: Ansible-based deployment and configuration management
  • Notifications: Telegram integration for alerts and reports
  • REST API: Comprehensive API for frontend integration

Frontend Features

  • Typesafe: Built with React, TypeScript, and Next.js
  • Device Management: Intuitive interface for switches and controllers
  • Real-time Monitoring: Live charts and statistics using WebSocket connections
  • Network Visualization: Interactive network topology diagrams
  • Plugin Management: Install and configure network plugins
  • Multi-language Support: Internationalization (English/Spanish)
  • Responsive Design: interface designed with shadcn components

πŸ›  Technology Stack

Backend

  • Framework: Django with Django REST Framework
  • Database: PostgreSQL with TimescaleDB for time-series data
  • Message Broker: Redis with Celery for background tasks
  • WebSockets: Django Channels for real-time communication
  • ML/AI: TensorFlow/Keras for traffic classification
  • Automation: Ansible for infrastructure management
  • Containerization: Docker & Docker Compose

Frontend

  • Framework: Next.js with React
  • Language: TypeScript for type safety
  • Styling: Tailwind CSS with shadcn/ui components
  • State Management: React Context API
  • HTTP Client: Axios for API communication
  • Charts: Recharts for data visualization
  • Icons: Lucide React
  • Forms: React Hook Form with Zod validation

πŸ”§ Development

Backend Development

cd backend/control_center/
docker compose -f docker-compose.dev.yml up

Frontend Development

cd ui/ui/
npm run dev          # Start development server
npm run build        # Build for production
npm run start        # Start production server
npm run lint         # Run ESLint

Environment Variables

Backend (.env)

# Database
DB_HOST=pgdatabase
DB_NAME=postgres
DB_USER=postgres
DB_PASS=postgres
DB_PORT=5432

# Redis
CELERY_BROKER_URL=redis://redis:6379/1
CHANNEL_REDIS_HOST=redis
CHANNEL_REDIS_PORT=6379

# Django
DEBUG=False
DJANGO_LOG_LEVEL=INFO
DJANGO_SUPERUSER_USERNAME=admin
DJANGO_SUPERUSER_PASSWORD=admin

# Telegram
TELEGRAM_API_KEY=your_telegram_api_key

Frontend (.env.local)

NEXT_PUBLIC_API_BASE_URL=http://localhost:8000/api/v1
NEXT_PUBLIC_WS_OPENFLOW=ws://localhost:8000/ws/openflow_metrics/
NEXT_PUBLIC_WS_DEVICESTATS=ws://localhost:8000/ws/device_stats/
NEXT_PUBLIC_WS_CLASIFICATIONS=ws://localhost:8000/ws/flow_updates/

🐳 Docker Deployment

Backend

cd backend/control_center/
docker-compose up -d

Frontend

cd ui/
docker-compose up -d

πŸ“š Documentation

🀝 Contributing

Please keep your contributions focused and small to help with pull request management.

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run linting and integration tests
  5. Submit a pull request

Development Guidelines

  • Follow TypeScript best practices for frontend code
  • Use Django coding standards for backend code
  • Write comprehensive tests for new features
  • Update documentation for API changes

πŸ“„ License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).

⚠️ Warning: Closed-source commercial usage is not permitted with the GPL-3.0 license. If this license is not compatible with your use case, please contact [email protected] to purchase a commercial license.

πŸ†˜ Support

For issues, questions, or commercial licensing:

πŸŽ₯ Video Content

Watch the v1.0.0 release installation guide here

[DEPRECIATED] Watch the pre-production alpha release installation guide to see SDN Launch Control in action.


SDN Launch Control - Empowering network automation and management through modern SDN technologies.