A sophisticated network automation and monitoring system that simulates and manages BGP-based networks using Docker containers, with advanced fault injection and monitoring capabilities.
- BGP Network Simulation using FRRouting (FRR)
- Automated Fault Injection
- Real-time Network Monitoring
- Anomaly Detection
- Automated Remediation
- Prometheus & Grafana Integration
The project consists of the following components:
-
Network Simulation
- Docker containers running FRRouting
- BGP peering between nodes
- Configurable network topology
-
Fault Injection System
- Link loss simulation
- Interface down scenarios
- CPU stress testing
-
Monitoring Agent
- BGP route monitoring
- Latency tracking
- Peer availability checks
- Anomaly detection
-
Automation Framework
- Ansible playbooks for remediation
- Container management
- Network interface control
- BGP route manipulation
-
Metrics & Visualization
- Prometheus metrics collection
- Grafana dashboards
- Real-time monitoring
- Historical data analysis
- Docker
- Python 3.8+
- Ansible
- Prometheus
- Grafana
-
Clone the repository:
git clone https://github.com/yourusername/netbot.git cd netbot -
Install Python dependencies:
pip install -r requirements.txt
-
Start the network simulation:
docker-compose up -d
-
Start the monitoring agent:
python src/monitoring/agent.py
-
Access Grafana dashboard at
http://localhost:3000
netbot/
├── docker/
│ ├── Dockerfile
│ └── frr/
│ └── configs/
├── src/
│ ├── monitoring/
│ │ ├── agent.py
│ │ └── metrics.py
│ ├── fault_injection/
│ │ └── injector.py
│ └── utils/
│ └── network.py
├── ansible/
│ └── playbooks/
├── prometheus/
│ └── prometheus.yml
├── grafana/
│ └── dashboards/
├── docker-compose.yml
├── requirements.txt
└── README.md
-
Starting the Network
docker-compose up -d
-
Injecting Faults
python src/fault_injection/injector.py --type link_loss --node r1 --duration 60
-
Monitoring
python src/monitoring/agent.py
-
Viewing Metrics
- Access Grafana at
http://localhost:3000 - Default credentials: admin/admin
- Access Grafana at
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.