Introduzione all'uso del simulatore di rete cnet

Indice | Introduzione alla simulazione basata sugli eventi >>

Installazione di cnet

Attualmente cnet non gira in Windows o MacOS e il porting non è facile, in quanto il suo codice sorgente è specifico per i sistemi di tipo Unix.

L'installazione di cnet è ben descritta nel suo manuale. Lo scopo di questa pagina è quindi solo di fornire un rapido riferimento per l'installazione in un tipico sistema Linux a 32 bit e di fornire alcuni suggerimenti supplementari.

Dapprima verificare se la propria distribuzione di Linux fornisce già cnet in forma binaria pacchettizzata. Se è così l'installazione è banale. Altrimenti occorre seguire i seguenti passi per installare cnet in forma locale nel sistema:

  1. Scaricare il codice sorgente dell'ultima versione seguendo il link in questa pagina.
  2. Scompattare l'archivio scaricato. Un buona scelta della directory che conterrà i sorgenti è /usr/local/src/cnet-2.0.9
    # cd /usr/local/src
    # tar zxf /percorso_scaricamento/cnet-2.0.9.tgz
    # cd cnet-2.0.9
    
  3. (opzionale) Se si intende installare anche una copia della documentazione di cnet nel sito web locale, potrebbe essere necessario modificare la riga seguente del file Makefile:
    WEBDIR         = /home/httpd/html/cnet
    
    Il percorso indica la directory che conterrà i file HTML della documentazione e deve essere visibile via web. Questo percorso varia a seconda della distribuzione di Linux (ad es. potrebbe essere piuttosto /home/www/htdocs/cnet, oppure /var/www/html, ecc.) Consultare la documentazione del proprio server web o chiedere al responsabile del sito web in caso di dubbi.

    Le altre variabili contenute nel file Makefile dovrebbero avere già dei valori accettabili.

  4. Per la gestione della grafica cnet utilizza le librerie del sistema grafico X e di Tcl/Tk, che devono essere installate nel proprio sistema affinché cnet possa essere compilato e funzionare. La variabile seguente nel file Makefile.linux:
    XLIBS           = -ltcl -ltk -lX11
    
    contiene le opzioni sulla riga di comando che indicano al linker di cercare queste librerie durante la fase di collegamento per la generazione dell'eseguibile finale. La ricerca avviene in directory di sistema standard dedicate a contenere file di libreria.

    Dato che in molti sistemi esistono diverse versioni delle librerie Tcl/Tk, potrebbe essere necessario specificare correttamente quale versione utilizzare, ad esempio cambiando questa riga in:

    XLIBS           = -ltcl8.4 -ltk8.4 -lX11
    

    Sempre in Makefile.linux la riga:

    CFLAGS         = -O -Wall -fPIC $(INCLUDES) $(XINCLUDES)
    
    contiene alcune opzioni per il compilatore C. Le opzioni di default vanno sicuramente bene. Tuttavia per avere un simulatore più veloce potreste voler aumentare il livello di ottimizzazione del codice oggetto durante la compilazione:
    CFLAGS         = -O2 -march=i686 -pipe -Wall -fPIC $(INCLUDES) $(XINCLUDES)
    
    Qui ho usato il livello 2 che produce un programma più veloce rispetto al livello 1, ma senza occupare più memoria durante l'esecuzione; la generazione di miglior codice oggetto naturalmente si paga con un maggior tempo di compilazione, ma questo è un prezzo da pagare una sola volta e comunque con un programma di piccole dimensioni come cnet la differenza non è significativa. Inoltre ho richiesto la generazione di codice ottimizzato per una cpu di tipo i686 (pentiumpro) e lo sfruttamento dell'intero set di istruzioni di macchina messo a disposizione da questa CPU. Naturalmente questo ha lo svantaggio di rendere l'eseguibile non retrocompatibile sui sistemi inferiori (i386, i486, i586). Infine ho richiesto l'uso delle pipe per la comunicazione tra i processi che si occupano dei vari passi della compilazione. Rispetto all'uso dei file temporanei è più efficiente, anche se richiede maggiore memoria centrale.
  5. Avviare la compilazione automatica:
    # make
    
  6. Se tutto va bene questo comando installerà l'eseguibile cnet, la sua pagina di manuale e alcuni file di supporto (principalmente immagini e file header necessari alla compilazione dei protocolli di rete):
    # make install
    
  7. (opzionale) Se si vuole installare una copia della documentazione di cnet nel sito web locale (come preparato al punto 3), eseguire il comando:
    # make web
    
  8. (opzionale) Per cancellare i file oggetto intermedi generati durante la compilazione, in modo da risparmiare spazio su disco:
  9. # make clean
    
  10. (consigliato) Oltre alla documentazione, la distribuzione di cnet comprende alcuni file di esempio molto utili per imparare ad usare cnet. Conviene quindi copiarli in una directory di sistema adatta a contenere esempi di dati e programmi, con comandi del tipo:
    # mkdir -p /usr/local/share/examples/cnet
    # install -m 644 EXAMPLES/* /usr/local/share/examples/cnet
    
    In questo modo gli utenti di cnet possono copiare gli esempi da questa directory nella loro propria home directory e poi compilarli ed eseguirli, anche dopo una eventuale modifica.
  11. (consigliato) Provate a lanciare l'eseguibile cnet anche senza argomenti per verifica l'avvenuta installazione:
    # cnet
    Usage: cnet [options] {TOPOLOGY | -r nnodes}
    options are:
    ...
    

Indice | Introduzione alla simulazione basata sugli eventi >>