left.gif (284 bytes)  up.gif (289 bytes)  right.gif (280 bytes)

Local Area Networks

1. Simulare una LAN

Le LAN possono essere implementate in ns mediante il comando newLan, da usarsi con la sintassi seguente:

    set lan1 [$ns newLan $nodelist $bandwith $delay \
          -llType LL -ifqType DropTail \
          -macType Csma/Cd -chanType Channel]

$nodelist  è una lista dei nodi appartenenti alla LAN e può essere definita mediante elencazione diretta di nodi precedentemente dichiarati:

        "n0 n1 n2 n3 n4 n5"

oppure mediante l’istruzione lappend all’interno di un ciclo for:

    for {set i 0} {$i < $num} {incr i} {
        set node($i) [$ns node]
        lappend nodelist $node($i)
    }

$bandwith  è la larghezza di banda della LAN

$delay  è il ritardo di propagazione sulla LAN

-llType LL specifica il tipo di link layer implementato, cioè l’oggetto responsabile di simulare il protocollo di livello data link. Le sue funzioni sono: frammentare e riassemblare i dati, e risolvere gli indirizzi MAC dei destinatari dei pacchetti. Per quest’ultimo compito l’oggetto link layer fa uso delle informazioni del LanRouter, che tra breve descriveremo. Attualmente si può usare in ns solo l’oggetto link layer di tipo LL.

-ifqType DropTail  specifica la disciplina della coda gestita dal link layer per prelevare e consegnare i dati agli strati superiori. Oltre a DropTail possono essere usate tutte le discipline previste in ns per l’oggetto coda.

-macType Csma/Cd  specifica l’oggetto Mac che simula i protocolli di accesso al mezzo trasmissivo; si può scegliere tra Csma/Cd e Csma/Ca .

-chanType Channel specifica il tipo di canale utilizzato sulla LAN. In questo caso specifico Channel implementa un generico mezzo trasmissivo condiviso.

2. LanNode

Quando viene creata una LAN in ns mediante il comando newLan, viene automaticamente creato anche l’oggetto LanNode. LanNode è un nodo "virtuale" della LAN ed è virtualmente collegato a tutti gli altri nodi. Di fatto questo nodo non ha nessun corrispettivo fisico. Esso è un contenitore per tutti gli oggetti condivisi sulla LAN e quindi è in primo luogo rappresentativo del mezzo trasmissivo. Inoltre il suo scopo principale è quello di mostrare la LAN all’esterno come un unico nodo ai fini del routing. Poiché si tratta di un nodo virtuale, il programmatore non può accedere direttamente al LanNode come a qualsiasi altro nodo della rete; nonostante ciò nei trace file uno scambio di pacchetti tra due nodi su una stessa LAN viene documentato con un hop dal mittente al LanNode.

3. LanRouter

È un oggetto che viene creato e associato alla LAN ogni volta che viene chiamata la procedura newLAN. Diciamo subito che non si tratta di un router fisico collegato alla rete (quest’ultima funzione potendo essere svolta da un nodo qualsiasi della LAN con una linea verso l’esterno).

Per ogni nodo sulla LAN, l’oggetto link layer possiede un puntatore al LanRouter, mediante il quale riesce a trovare l’indirizzo MAC del prossimo nodo (sempre sulla LAN) a cui spedire un certo pacchetto. In fatti il link layer conosce solo l’indirizzo IP del destinatario.

Quindi se il destinatario di tale pacchetto è sulla stessa LAN del mittente, il LanRouter fornisce al link layer il corrispondente indirizzo MAC (applica quindi un protocollo ARP); se invece il destinatario è all’esterno, il LanRouter fornisce al link layer l’indirizzo MAC del nodo che fa da router per la LAN.

4. Alcune considerazioni

Coerentemente con il fatto che nelle animazioni del NAM vengono mostrati i pacchetti di livello IP, su una LAN non è possibile vedere né collisioni, né ritrasmissioni (non si vedono le MAC-pdu). Comunque i pacchetti occupano tutto il mezzo trasmissivo pur essendo destinati a un singolo nodo.Come vedremo in acuni casi è possibile verificare l'influenza di eventuali collisioni e dell'algoritmo di backoff sui tempi di trasmissione dei pacchetti.

Attualmente non è prevista la possibità simulare in ns bridge e switch.

Nelle attuali versioni di ns e NAM è stata riscontra ta l'impossibilità di marcare con colori diversi  i vari flussi di pacchetti su una LAN.

Vai alla pagina degli esempi sulle LAN

left.gif (284 bytes)  up.gif (289 bytes)  right.gif (280 bytes)