Observe, Control, and Understand
Federated Learning
in Realistic Networks

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.

How Machines Traditionally Learn

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.

A Privacy-First Revolution: Federated Learning

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.

But The Real World is Chaos

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, Deploy, and Observe.
Master the Chaos.

1

DEFINE

Declarative Experimentation

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"
}
2

DEPLOY

Automated Provisioning

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.

SDN Controller
3

OBSERVE

Integrated Observability

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.

Real-time Dashboard

Key Features

High-Fidelity Network Emulation

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.

Centralized Policy Engine

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.

Integrated Observability

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.

Scenario-Driven Experimentation

Ensure reproducibility. Our Python-based scenario classes orchestrate the entire experiment, from infrastructure provisioning via the GNS3Manager to results collection.

Architecture & Diagrams

A Modern, Container-First Architecture

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.

flowchart TD subgraph Cloud["Cloud Registry"] Registry["abdulmelink/flopynet-*
Container Images"] end subgraph GNS3Env["GNS3 Virtual Environment"] direction TB subgraph ContainerLayer["Application Layer"] PolicyEngine["Policy Engine
Governance & Rules"] FLServer["FL Server
Model Coordination"] FLClients["FL Clients
Distributed Training"] end subgraph RuntimeLayer["Runtime Layer"] Docker["Docker Engine
Container Management"] end subgraph SystemLayer["System Layer"] GNS3VM["GNS3 VM
Network Virtualization"] end subgraph InfraLayer["Infrastructure Layer"] Hardware["Physical/Virtual
Compute Resources"] end ContainerLayer -->|"Container Runtime"| RuntimeLayer RuntimeLayer -->|"System Services"| SystemLayer SystemLayer -->|"Resource Allocation"| InfraLayer end Registry -.->|"docker pull"| ContainerLayer classDef registryStyle fill:#1A1A2E,stroke:#00D4FF,stroke-width:3px,color:#FFFFFF classDef containerStyle fill:#2D3748,stroke:#00D4FF,stroke-width:2px,color:#FFFFFF classDef runtimeStyle fill:#4A5568,stroke:#718096,stroke-width:2px,color:#FFFFFF classDef systemStyle fill:#2D3748,stroke:#4A5568,stroke-width:2px,color:#FFFFFF classDef infraStyle fill:#1A202C,stroke:#2D3748,stroke-width:2px,color:#FFFFFF class Registry registryStyle class PolicyEngine,FLServer,FLClients containerStyle class Docker runtimeStyle class GNS3VM systemStyle class Hardware infraStyle

Separation of Concerns: Control vs. Data

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.

flowchart TB subgraph ControlPlane["Control Plane "] direction LR PE["Policy Engine
Rules & Governance
Decision Making "] Dashboard["Dashboard
Real-time Monitoring
Analytics Hub "] SDN["SDN Controller
Network Management
Traffic Control "] end subgraph DataPlane["Data & Emulation Plane"] direction TB subgraph NetworkInfra["Network Infrastructure"] GNS3["GNS3 Network
Virtual Topology
SDN Switches"] end subgraph MLWorkload["Machine Learning Workload"] FLServer["FL Server
Global Model
Aggregation"] subgraph ClientCluster["Client Ecosystem"] Client1["FL Client Alpha
Edge Device
Local Training"] Client2["FL Client Beta
Mobile Device
Model Updates"] Client3["FL Client Gamma
IoT Sensor
Data Processing"] end end end PE -->|"Policy Enforcement"| FLServer PE -->|"Rule Validation"| Client1 PE -->|"Rule Validation"| Client2 PE -->|"Rule Validation"| Client3 SDN -->|"Traffic Shaping"| GNS3 SDN -->|"Network Control"| NetworkInfra Dashboard -->|"Metrics Collection"| PE Dashboard -->|"Network Monitoring"| GNS3 Dashboard -->|"Performance Analysis"| MLWorkload FLServer <-->|"Model Exchange
Federated Updates"| Client1 FLServer <-->|"Model Exchange
Federated Updates"| Client2 FLServer <-->|"Model Exchange
Federated Updates"| Client3 MLWorkload -->|"Network Traffic"| NetworkInfra classDef controlStyle fill:#4A5568,stroke:#00D4FF,stroke-width:3px,color:#FFFFFF classDef dataStyle fill:#2D3748,stroke:#718096,stroke-width:2px,color:#FFFFFF classDef serverStyle fill:#1A1A2E,stroke:#00D4FF,stroke-width:2px,color:#FFFFFF classDef clientStyle fill:#2D3748,stroke:#48BB78,stroke-width:2px,color:#FFFFFF classDef networkStyle fill:#1A202C,stroke:#9F7AEA,stroke-width:2px,color:#FFFFFF class PE,Dashboard,SDN controlStyle class FLServer serverStyle class Client1,Client2,Client3 clientStyle class GNS3 networkStyle

Legend

Control Plane Components
Data Plane Components
Control & Monitoring
Bidirectional Data Flow

FLOPY-NET vs. NVIDIA Flare

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.

The Future of FLOPY-NET

📍

You are here

v1.0.0-alpha.8

1.1

Dynamic Chaos Engine

Real-time network condition changes during experiments

Network Control
1.2

Declarative JSON Scenarios

Complete experiment definition in version-controlled files

Architecture
1.3

Differential Privacy

Advanced privacy mechanisms for federated learning

Security

Getting Started

Prerequisites

FLOPY-NET requires Docker, Docker Compose, Python 3.8+, and a running GNS3 server. Ensure you have access to all required components before proceeding.

1

Clone the Repository

git clone <repository-url>
cd flopy-net
2

Configure Environment Variables

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.

3

Start the Services

Launch all platform components with Docker Compose:

docker-compose up -d
4

Access the Dashboard

Open your browser and navigate to the FLOPY-NET dashboard:

http://localhost:8085

About the Author

AS

Abdulmelik Saylan

Creator of FLOPY-NET

Researcher and developer focused on federated learning systems and network dynamics. Passionate about creating tools that help advance the field of privacy-preserving machine learning.