FLOPY-NET is an open-source observatory for researchers to study the direct impact of network dynamics—from packet loss to complex topologies—on the performance, security, and behavior of Federated Learning systems.
The classic approach to AI is simple: gather all user data on a single, powerful central server. This server processes the data to build an intelligent model. It's effective, but it comes with a critical challenge in the modern world: data privacy.
Federated Learning (FL) flips the script. Instead of moving data to the model, the model is sent to the data. It trains directly on the user's device, and only anonymous mathematical updates—not raw data—are sent back to the server to collaboratively improve the global model. Your data stays with you.
This elegant solution introduces a new, often-ignored dependency: the network. Standard FL frameworks operate in a theoretical vacuum, assuming a perfect, stable connection. But real-world networks are chaotic. How can you trust a distributed model that hasn't been tested against the harsh reality of packet loss, latency spikes, and unstable connections?
Define your entire experiment—from the virtual network topology and ML models to the specific network conditions you want to test—in a single, version-controllable scenario file. No more manual setups.
{
"network": "chaos_test",
"packet_loss": "15%",
"latency": "200ms"
}
With one command, FLOPY-NET's orchestration engine provisions the entire virtual lab inside GNS3, deploying all components as Docker containers on a realistic, SDN-controlled network.
Monitor every layer in real-time. Correlate network failures directly with model convergence, all from a single pane of glass. Stop guessing at the cause of failures; see it.
Use GNS3 and OpenFlow-enabled switches to build complex topologies. The integrated Ryu SDN Controller allows for programmatic, real-time traffic shaping and network manipulation.
A standalone Flask microservice that governs the federation. Other components make REST API calls
to its /check endpoint to
validate actions against a central, dynamically-loaded JSON rule set.
Our dashboard provides a unified view, correlating FL metrics like model accuracy directly with network KPIs like packet loss and latency collected from all system components.
Ensure reproducibility. Our Python-based scenario classes orchestrate the entire experiment,
from infrastructure provisioning via the GNS3Manager
to results collection.
Every component in the FLOPY-NET ecosystem is a container, pulled from a public registry and deployed into a virtualized GNS3 environment. This ensures a consistent, reproducible setup for every experiment.
FLOPY-NET is designed with a clear separation between the Control Plane (the 'brains' that manage and monitor) and the Data Plane (the 'action' where the experiment runs). This modularity allows for powerful and flexible experimentation.
| Feature | FLOPY-NET | NVIDIA Flare |
|---|---|---|
| Primary Purpose | Research & Network Impact Analysis | Production FL Deployment |
| Network Emulation | ✅ Full GNS3 + SDN Integration | ❌ No Network Simulation |
| Real Network Conditions | ✅ Packet Loss, Latency, Jitter | ❌ Assumes Perfect Network |
| Observability | ✅ Network + FL Metrics Correlation | ⚠️ FL Metrics Only |
| Scenario Reproducibility | ✅ Declarative JSON Scenarios | ⚠️ Manual Configuration |
| Production Ready | ⚠️ Research Focus | ✅ Enterprise Grade |
| Learning Curve | ✅ Simple JSON Configuration | ❌ Complex Setup Required |
Bottom line: Use NVIDIA Flare for production deployments. Use FLOPY-NET to understand how your FL system will actually behave in the real world.
You are here
v1.0.0-alpha.8
Real-time network condition changes during experiments
Complete experiment definition in version-controlled files
Advanced privacy mechanisms for federated learning
FLOPY-NET requires Docker, Docker Compose, Python 3.8+, and a running GNS3 server. Ensure you have access to all required components before proceeding.
git clone <repository-url>cd flopy-net
Create a .env file in the root directory with your GNS3 server details:
GNS3_URL=http://<your-gns3-server-ip>:3080
POLICY_ENGINE_URL=http://localhost:5000
# ... other variables
You can use the docker-compose.yml file as a reference for required variables.
Launch all platform components with Docker Compose:
docker-compose up -d
Open your browser and navigate to the FLOPY-NET dashboard:
http://localhost:8085