Leveraging Machine Learning for Enhanced Decision-Making in Software-Defined Networking and Network Function Virtualization
This repository contains the implementation of the research project titled "Leveraging Machine Learning for Enhanced Decision-Making in Software-Defined Networking and Network Function Virtualization." The project explores the integration of Machine Learning (ML) techniques to improve decision-making processes within SDN and NFV environments. By leveraging synthetic data, this project aims to optimize network performance, predict anomalies, and automate network functions, thereby significantly enhancing operational efficiency and reducing costs.
- Project Overview
- Table of Contents
- Directory Structure
- Getting Started
- Usage
- Results
- Contributing
- License
- Acknowledgments
.
├── data
│ ├── synthetic_data_generator.py
│ ├── network_data.csv
│ ├── anomaly_data.csv
│ ├── performance_metrics.csv
├── preprocessing
│ ├── data_cleaning.py
│ ├── normalization.py
│ ├── feature_engineering.py
├── models
│ ├── traffic_prediction
│ │ ├── lstm.py
│ ├── anomaly_detection
│ │ ├── svm.py
│ │ ├── random_forest.py
│ │ ├── cnn.py
│ │ ├── autoencoder.py
│ ├── network_optimization
│ │ ├── dqn.py
│ │ ├── q_learning.py
├── evaluation
│ ├── evaluation_metrics.py
│ ├── results_visualization.py
├── deployment
│ ├── sdn_controller_integration.py
│ ├── nfv_orchestrator_integration.py
│ ├── real_time_decision_making.py
├── README.md
├── requirements.txt
Before you begin, ensure you have met the following requirements:
Python 3.6+: Ensure you have Python 3.6 or higher installed. pip: Ensure you have pip installed for package management. Installation Clone the repository:
git clone https://github.com/your_username/your_repository.git cd your_repository Install dependencies:
pip install -r requirements.txt
Generate synthetic data to simulate real-world network scenarios.
python data/synthetic_data_generator.py
Clean, normalize, and engineer features for the generated data.
Data Cleaning:
python preprocessing/data_cleaning.py Normalization:
python preprocessing/normalization.py Feature Engineering:
python preprocessing/feature_engineering.py Model Training Train various ML models for traffic prediction, anomaly detection, and network optimization.
python models/model_training.py
Evaluate the trained models using different metrics and visualize the results.
python evaluation/model_evaluation.py python evaluation/results_visualization.py
Deploy the models for real-time decision-making in SDN and NFV environments.
SDN Controller Integration:
python deployment/sdn_controller_integration.py NFV Orchestrator Integration:
python deployment/nfv_orchestrator_integration.py Real-Time Decision Making:
python deployment/real_time_decision_making.py
The results of this project demonstrate significant improvements in network performance, anomaly detection, and resource optimization. The models trained using synthetic and real datasets show robustness and efficacy under various network scenarios. Below are some key highlights:
Traffic Prediction: Achieved high accuracy in forecasting network traffic, enabling proactive resource management. Anomaly Detection: Successfully identified and classified network anomalies with high precision and recall. Network Optimization: Improved resource utilization by 30% and reduced operational costs by 20%.
Contributions are always welcome! Please read the contributing guidelines first.
To contribute:
Fork the repository.
Create a new branch (git checkout -b feature-branch).
Make your changes.
Commit and push your changes (git commit -m 'Add some feature' and git push origin feature-branch).
Create a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for details.
I would like to thank the following resources and communities:
Keras Scikit-Learn TensorFlow Seaborn Matplotlib
Contact: Raj Kashikar - rajskashikar@vt.edu
Affiliation: Department of Electrical Engineering, Virginia Polytechnic Institute and State University, Blacksburg, VA
css
The commands below were run in a clean environment to validate the pipeline end-to-end.
pip install -r requirements.txt
./scripts/run_pipeline.shFor a faster training loop (useful in CI), you can also run:
./scripts/smoke_test.shThese environment variables control training duration:
SDN_NFV_LSTM_EPOCHS(default: 1)SDN_NFV_CNN_EPOCHS(default: 1)SDN_NFV_DQN_EPISODES(default: 5)SDN_NFV_DQN_STEPS(default: 25)
requests connection errors when running deployment scripts
The deployment scripts attempt to reach a controller/orchestrator on localhost:8080. If none is running, they fall back to simulated state and print a warning. This is expected for local runs without an SDN/NFV stack.
Empty or missing CSV files
If data/*.csv files are missing or empty, the data generation and cleaning steps create placeholder datasets so the pipeline can proceed.
Headless environments and plots
evaluation/results_visualization.py uses a non-interactive matplotlib backend and saves a plot to data/visualization_outputs.png.