Skip to content

Latest commit

 

History

History
55 lines (42 loc) · 3.89 KB

File metadata and controls

55 lines (42 loc) · 3.89 KB

NetRoute - Enterprise Edition

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.

🚀 Requisiti e Installazione

Il backend dell'applicazione è sviluppato in Python utilizzando FastAPI e NetworkX.

  1. Assicurati di avere Python 3 installato.
  2. Installa le dipendenze eseguendo questo comando nel terminale:
    pip install fastapi uvicorn networkx pydantic

⚙️ Avvio dell'Applicazione

  1. Apri un terminale nella cartella del progetto (NetRoute).
  2. Avvia il server backend con il comando:
    python app.py
  3. Apri il browser e vai all'indirizzo: http://127.0.0.1:8000

✨ Funzionalità Implementate

🗺️ Visualizzazione e Layout

  • 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).

🔧 Analisi e Routing (Traccia ECMP)

  • 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.

💥 Simulazione Guasti Interattiva

  • 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.

📝 Gestione CRUD Inline (Nodi e Link)

  • 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.

💾 Persistenza e Utility

  • 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).

🛠️ Tecnologie Utilizzate

  • 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.