NetRoute è un'applicazione web interattiva per la modellazione, la visualizzazione e la simulazione di topologie di rete aziendali. Permette di definire nodi e archi, tracciare percorsi basati sui pesi di routing e testare scenari di failover simulando il guasto degli apparati in tempo reale.
Il backend dell'applicazione è sviluppato in Python utilizzando FastAPI e NetworkX.
- Assicurati di avere Python 3 installato.
- Installa le dipendenze eseguendo questo comando nel terminale:
pip install fastapi uvicorn networkx pydantic
- Apri un terminale nella cartella del progetto (
NetRoute). - Avvia il server backend con il comando:
python app.py
- Apri il browser e vai all'indirizzo: http://127.0.0.1:8000
- Render Interattivo: Mappa generata con Cytoscape.js. Supporto per Zoom, Pan e Drag-and-Drop (la posizione personalizzata dei nodi viene salvata automaticamente).
- Auto-Layout Intelligente: Pulsante "Disponi (Auto)" per organizzare organicamente un'intera topologia caotica tramite l'algoritmo force-directed CoSE.
- Compound Nodes (Sedi/Edifici): Raggruppamento visivo degli apparati appartenenti alla stessa area fisica all'interno di rettangoli semitrasparenti. I colori vengono assegnati automaticamente da una palette dedicata. La loro visualizzazione può essere attivata o nascosta tramite un toggle.
- Forme Distinte: Forme geometriche e colori dedicati in base al ruolo dell'apparato (Router: circolare rosso, Switch: rack blu, Firewall: scudo/diamante arancione, DB: cilindro viola, PC: verde, VLAN: esagono rosa).
- Shortest Path & Multi-path (ECMP): Calcolo dinamico del percorso basato sul valore della
Metrica. Se esistono due percorsi con lo stesso costo (Equal-Cost Multi-Path), vengono evidenziati ed animati in parallelo. - Animazione del Traffico: Simula il transito dei pacchetti nella rete. La velocità di attraversamento di ogni link scala in base alla metrica assegnata all'arco.
- Cliccando con il tasto destro su un apparato o su un link, è possibile metterlo temporaneamente in stato di "Guasto".
- Gli elementi in guasto diventeranno traslucidi con i bordi rossi tratteggiati.
- Lanciando nuovamente il tracciamento rotta con nodi in guasto, il backend NetworkX ricalcolerà il percorso escludendoli, mostrando istantaneamente il comportamento di Failover e routing secondario.
- Pannello Laterale (Sidebar): Cliccando su un elemento apparirà la scheda di dettaglio tecnico (IP, Subnet, Banda, Protocollo).
- Modifica al Volo: Modifica inline degli attributi tecnici di un nodo senza ricaricare la pagina.
- Aggiunta Apparati e Rotte: Form dedicati per aggiungere dinamicamente nuovi dispositivi o cablaggi/rotte logiche alla rete, assegnando protocollo, metrica e banda.
- Salvataggio JSON: La topologia (nodi, connessioni, posizioni cartesiane) viene salvata real-time su un file locale (
topology.json). - Backup & Restore: Funzionalità per scaricare una copia del JSON attuale e ripristinarne istantaneamente uno caricandolo con un file browser.
- Esportazione PNG: Cattura e scarica lo stato attuale del canvas della mappa sotto forma di immagine ad alta risoluzione (scala 2x).
- Frontend: HTML5, CSS3, Vanilla JavaScript, Cytoscape.js.
- Backend: Python 3, FastAPI, Uvicorn (Webserver ASGI), NetworkX (Teoria dei grafi / Algoritmo di Dijkstra).
- Architettura: Applicazione Single Page (SPA) che dialoga con API REST JSON per l'inversione di controllo del routing dal frontend al backend.