Dies ist der Befehl ns, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
ns - Netzwerksimulator (Version 2)
ZUSAMMENFASSUNG
ns [ Datei [ arg arg ... ]]
BESCHREIBUNG
ns ist ein ereignisgesteuerter Netzwerksimulator. Eine erweiterbare Simulations-Engine ist implementiert
in C++, das die Object Tool Command Language des MIT verwendet, OTcl (eine objektorientierte Version von
Tcl) als Befehls- und Konfigurationsschnittstelle. Eine frühere Version des Simulators, dh
ns Version 1 verwendet die Tool Command Language, Tcl als Konfigurationssprache. Die
Die aktuelle Version unterstützt noch Simulationsskripte, die in Tcl geschrieben sind und für die ns-Version gedacht sind
1 Simulator.
Diese Handbuchseite dokumentiert einige der Schnittstellen für ns. Für viel mehr
Dokumentation, siehe "ns Notes and Documentation" [13], verfügbar in der Distribution
und im Netz.
Der Simulator wird über die ns Dolmetscher, eine Erweiterung der Vanille otclsh
Befehls-Shell. Eine Simulation wird durch ein OTcl-Skript definiert. Die Skripte verwenden den Simulator
Klasse als Hauptschnittstelle zur Simulations-Engine. Mit den in . definierten Methoden
dieser Klasse wird eine Netzwerktopologie definiert, Verkehrsquellen und -senken konfiguriert, die
Simulation wird aufgerufen und die Statistiken werden gesammelt. Durch den Aufbau auf einem vollständig
Funktionssprache können beliebige Aktionen in die Konfiguration programmiert werden.
Der erste Schritt in der Simulation besteht darin, eine Instanz der Simulator-Klasse zu erwerben.
Instanzen von Objekten in Klassen werden in ns mit dem erstellt und zerstört neu und löschen
Methoden. Eine Instanz des Simulator-Objekts wird beispielsweise wie folgt erstellt
Befehl:
zB set ns [neuer Simulator]
Eine Netzwerktopologie wird unter Verwendung von drei primitiven Bausteinen realisiert: Knoten, Links und
Agenten. Die Simulator-Klasse verfügt über Methoden zum Erstellen/Konfigurieren jedes dieser Gebäude
Blöcke. Knoten werden mit dem . erstellt Knoten Simulatormethode, die automatisch ein . zuweist
eindeutige Adresse für jeden Knoten. Verbindungen werden zwischen Knoten erstellt, um eine Netzwerktopologie zu bilden
an. Nach der Installation können Sie HEIC-Dateien mit der Simplex-Link und Duplex-Verbindung Methoden, die unidirektional und bidirektional einrichten
Links bzw. Agenten sind die Objekte, die die Simulation aktiv steuern. Makler
kann man sich als die Prozesse und/oder Transporteinheiten vorstellen, die auf Fiber Node Das könnte sein
Endhosts oder Router. Traffic-Quellen und -Senken, dynamische Routing-Module und die verschiedenen
Protokollmodule sind alles Beispiele für Agenten. Agenten werden durch Instanziieren von Objekten erstellt
in der Unterklasse der Klasse Agent, dh Agent/Typ wobei type die Art des angibt
Agent. Ein TCP-Agent wird beispielsweise mit dem Befehl erstellt:
set tcp [neuer Agent/TCP]
Sobald die Agenten erstellt sind, werden sie mit den Knoten an die Knoten angehängt Attach-Agent Simulator
Methode. Jedem Agenten wird automatisch eine Portnummer zugewiesen, die für alle Agenten auf einem
gegebener Knoten (analog zu einem TCP- oder UDP-Port). Einige Arten von Agenten können Quellen haben
an sie angehängt, während andere ihre eigenen Daten generieren können. Sie können zum Beispiel anhängen
``ftp''- und ``telnet''-Quellen zu ``tcp''-Agenten, aber ``konstante Bitrate''-Agenten erzeugen
ihre eigenen Daten. Anträge werden an Agenten mit dem Attach-App Methode.
Jedem Objekt sind einige Konfigurationsparameter zugeordnet, die geändert werden können.
Konfigurationsparameter sind Instanzvariablen des Objekts. Diese Parameter sind
beim Start auf Defaultwerte initialisiert, die einfach aus der Instanz ausgelesen werden können
Variablen des Objekts. Zum Beispiel, $TCP kompensieren Fenster_ gibt die Standardfenstergröße zurück
für das TCP-Objekt. Die Standardwerte für dieses Objekt können explizit überschrieben werden durch
einfache Zuweisung entweder vor Simulationsbeginn oder dynamisch während der Simulation
ist in Arbeit. Zum Beispiel kann die Fenstergröße für eine bestimmte TCP-Sitzung geändert werden
auf folgende Art.
$tcp set window_ 25
Die Standardwerte für die Konfigurationsparameter aller Klassenobjekte nachfolgend
erstellten können auch durch einfache Zuweisung geändert werden. Wir können zum Beispiel sagen
Agent/TCP-Set-Fenster_ 30
um alle zukünftigen TCP-Agentenerstellungen standardmäßig auf eine Fenstergröße von 30 zu setzen.
Ereignisse werden in ns mit dem geplant at Simulatormethode, die es ermöglicht, OTcl-Prozeduren
zu beliebigen Zeitpunkten in der Simulationszeit aufgerufen. Diese OTcl-Rückrufe bieten eine flexible
Simulationsmechanismus -- sie können verwendet werden, um Quellen zu starten oder zu stoppen, Statistiken zu speichern,
Verbindungsausfälle instanziieren, Netzwerktopologie neu konfigurieren usw. Die Simulation ist
gestartet über die Lauf -Methode und wird fortgesetzt, bis keine Ereignisse mehr zu verarbeiten sind.
Zu diesem Zeitpunkt ist die ursprüngliche Anrufung des Lauf Befehl kehrt zurück und das Tcl-Skript kann
beenden oder nach einer möglichen Neukonfiguration einen anderen Simulationslauf aufrufen. Alternativ kann die
Simulation kann durch Aufrufen des halt Befehl oder durch Beenden des Skripts
mit Tcl-Standard wunsch Befehl.
Pakete werden auf dem kürzesten Weg von einer Quelle zu einem Ziel weitergeleitet, wobei
Die Distanzmetrik ist die Summe der Kosten der von der Quelle zum zurückgelegten Links
Ziel. Die Kosten für einen Link betragen standardmäßig 1; die Distanzmetrik ist einfach der Hop
zählen in diesem Fall. Die Kosten für einen Link können mit dem geändert werden kosten Simulator-Methode. EIN
Das statische Topologiemodell wird als Standard in ns verwendet, in dem die Zustände von Knoten/Verbindungen
während einer Simulation nicht ändern. Network Dynamics kann mit . angegeben werden
Methoden, die im Abschnitt METHODEN DER NETZWERKDYNAMIK beschrieben sind. Auch statisches Unicast-Routing ist das
Standard, bei dem die Routen über die gesamte Topologie einmal vorberechnet werden
Starten der Simulation. Methoden zum Aktivieren und Konfigurieren von dynamischem Unicast und Multicast
Routing werden in den UNICAST ROUTING METHODS und MULTICAST ROUTING METHODS . beschrieben
Abschnitte bzw.
NS BEFEHLE
Dieser Abschnitt beschreibt die grundlegenden Befehle zum Erstellen der Bausteine der Simulation
(dh die Knoten-, Link- und Agentenobjekte) und die Simulation auszuführen.
Der erste Schritt beim Ausführen einer Simulation, wie bereits erwähnt, besteht darin, eine Instanz des
Simulatorklasse mit Methoden zum Konfigurieren und Ausführen der Simulation. Währenddessen
Abschnitt wird der Objektvariablenname $ns verwendet, um ein Simulator-Objekt zu implizieren.
$ns Knoten
Erstellen Sie ein neues Knotenobjekt und geben Sie ein Handle darauf zurück.
$ns Alle-Knoten-Liste
Gibt eine Liste aller in der Simulation definierten Knotenobjekte zurück.
$ns Simplex-Link node1 node2 bw verzögern tippe
Erstellen Sie eine neue unidirektionale Verbindung zwischen node1 und node2 mit Bandbreite bw in Bits
pro Sekunde und Link-Ausbreitungsverzögerung verzögern in Sekunden. node1 und node2 TOP-SELLERS
bereits erstellt mit dem Knoten Methode. bw und verzögern Standardmäßig 1.5 Mbit/s
bzw. 100 ms. Die Standardeinstellungen können durch Ändern der entsprechenden
Konfigurationsparameter des DelayLink-Objekts (siehe Abschnitt DELAYLINK-OBJEKTE).
node1 und node2 muss bereits mit dem erstellt worden sein Knoten Methode. Das Anstehen
Disziplin des Links wird angegeben durch Art, die sein kann DropTail, FQ, SFQ, DRR,
ROT, CBQ, or CBQ/WRR. Ein DropTail-Link ist eine einfache FIFO-Warteschlange, die die letzte löscht
Paket in der Warteschlange, wenn die Warteschlange überläuft. Ein FQ-Link ist für Fair Queuing (für
Details siehe [?]). Ein SFQ-Link ist für Stochastic Fair Queuing (Details siehe [?]).
Ein DRR-Link ist für das Defizit-Round-Robin-Scheduling (für Details siehe [9]). Ein ROTER Link
ist eine Random-Early-Drop-Queue (für Details siehe [2]). Ein CBQ-Link ist für klassenbasierte
Warteschlangen unter Verwendung eines paketweisen Round-Robin-Schedulers (für Details siehe [3]). EIN
Der CBQ/WRR-Link dient zum klassenbasierten Queuing mit einem gewichteten Round-Robin-Scheduler. Wenn
Multicast-Routing wird verwendet Verbindungen mit Schnittstellenlabels sind erforderlich. Solche Links sind
erstellt durch Setzen der Simulator NumberInterfaces_ Variable auf 1. Alle nachfolgenden
erstellte Links haben Schnittstellenbezeichnungen. Um die Erstellung von Schnittstellen einfach zu deaktivieren
Setzen Sie NumberInterfaces_ auf 0 zurück (dies ist die Standardeinstellung).
$ns Duplex-Verbindung node1 node2 bw verzögern tippe
Erstellen Sie eine neue bidirektionale Verbindung zwischen node1 und node2 mit Bandbreite bw in Bits
pro Sekunde und Link-Ausbreitungsverzögerung verzögern in Sekunden. node1 und node2 TOP-SELLERS
bereits erstellt mit dem Knoten Methode. bw und verzögern Standardmäßig 1.5 Mbit/s
bzw. 100 ms. Die Standardeinstellungen können durch Ändern der entsprechenden
Konfigurationsparameter des DelayLink-Objekts (siehe Abschnitt DELAYLINK-OBJEKTE).
Die Warteschlangendisziplin des Links wird spezifiziert durch Art, die sein kann DropTail, FQ
SFQ, DRR, ROT, CBQ, or CBQ/WRR. Ein DropTail-Link ist eine einfache FIFO-Warteschlange, die abfällt
das letzte Paket in der Warteschlange, wenn die Warteschlange überläuft. Ein FQ-Link ist für Fair
Warteschlangen (für Details siehe [?]). Ein SFQ-Link ist für Stochastic Fair Queuing (für
Details siehe [?]). Ein DRR-Link dient der Defizit-Round-Robin-Planung (für Details
siehe [9]). Ein ROTER Link ist eine zufällig-frühe Drop-Warteschlange (für Details siehe [2]). Ein CBQ
link ist für klassenbasiertes Queuing mit einem paketweisen Round-Robin-Scheduler (für
Details siehe [3]). Ein CBQ/WRR-Link dient zum klassenbasierten Queuing mit einer gewichteten Runde
Robin-Scheduler. Wenn Multicast-Routing verwendet wird, sind Links mit Schnittstellenbezeichnungen
erforderlich. Solche Links werden durch Setzen der Simulator NumberInterfaces_ Variable erstellt
zu 1. Alle nachfolgend erstellten Links haben Schnittstellenbezeichnungen. Etwas deaktivieren
Beim Erstellen von Schnittstellen setzen Sie NumberInterfaces_ einfach auf 0 zurück (dies ist die Standardeinstellung).
$ns Link node1 node2
Gibt eine Referenz auf die Verbindungsknoten zurück node1 und Knoten2. Das ist nützlich
zum Setzen von Link-Konfigurationsparametern und zum Aufrufen von Tracing-Methoden (siehe LINK
Abschnitt OBJEKTE).
$ns Warteschlangen-Limit node1 node2 Warteschlangen-Limit
Legen Sie die maximale Anzahl von Paketen fest, die auf dem Link in Richtung in die Warteschlange gestellt werden können
für node1 zu node2 zu Warteschlangenlimit. Die Verbindung zwischen Knoten1 und Knoten2 sollte
bereits erstellt worden.
$ns verzögern node1 node2 Zeitintervall
Stellen Sie die Latenz des Links in Richtung von node1 zu node2 zu Zeitintervall
Sekunden. Die Verbindung zwischen Knoten1 und Knoten2 sollte bereits erstellt worden sein.
$ns kosten node1 node2 Kostenwert
Weisen Sie die Kosten zu Kostenwert zur Verbindung zwischen Knoten node1 und Knoten2. Die Kosten
Verbindungen zugewiesene werden in Unicast-Routenberechnungen verwendet. Alle Links sind standardmäßig auf
Kosten von 1.
$ns Mehrfachverbindung Knotenliste bw verzögern tippe
Verbindet die in . angegebenen Knoten Knotenliste durch ein Netz von Duplexverbindungen (um a . zu simulieren
Broadcast-LAN) mit Bandbreite bw in Bits pro Sekunde und Verbindungsausbreitungsverzögerung
verzögern in Sekunden. Knotenliste ist eine Liste von Knotenobjekt-Handles, die bereits
erstellt mit dem Knoten Methode. bw und verzögern Standardmäßig 1.5 Mbit/s und 100
ms bzw. Die Standardeinstellungen können durch Ändern der entsprechenden
Konfigurationsparameter des DelayLink-Objekts (siehe Abschnitt DELAYLINK-OBJEKTE).
Die Warteschlangendisziplin des Links wird spezifiziert durch Art, die sein kann DropTail, FQ
SFQ, DRR, ROT, CBQ, or CBQ/WRR. Ein DropTail-Link ist eine einfache FIFO-Warteschlange, die abfällt
das letzte Paket in der Warteschlange, wenn die Warteschlange überläuft. Ein FQ-Link ist für Fair
Warteschlangen (für Details siehe [?]). Ein SFQ-Link ist für Stochastic Fair Queuing (für
Details siehe [?]). Ein DRR-Link dient der Defizit-Round-Robin-Planung (für Details
siehe [9]). Ein ROTER Link ist eine zufällig-frühe Drop-Warteschlange (für Details siehe [2]). Ein CBQ
link ist für klassenbasiertes Queuing mit einem paketweisen Round-Robin-Scheduler (für
Details siehe [3]). Ein CBQ/WRR-Link dient zum klassenbasierten Queuing mit einer gewichteten Runde
Robin-Scheduler.
$ns Multi-Link-of-Interfaces Knotenliste bw verzögern tippe
Verbindet die in . angegebenen Knoten Knotenliste durch ein Netz von Duplex-Links mit Schnittstellen
(um ein Broadcast-LAN zu simulieren) mit Bandbreite bw in Bits pro Sekunde und Link
Ausbreitungsverzögerung verzögern in Sekunden. Knotenliste ist eine Liste von Knotenobjekt-Handles
die bereits mit dem erstellt wurden Knoten Methode. bw und verzögern Standard auf 1.5
Mbit/s bzw. 100 ms. Die Standardeinstellungen können durch Ändern der
relevanten Konfigurationsparameter des DelayLink-Objekts (siehe DELAYLINK-OBJEKTE
Sektion). Die Warteschlangendisziplin des Links wird spezifiziert durch Art, die sein kann
DropTail, FQ SFQ, DRR, ROT, CBQ, or CBQ/WRR. Ein DropTail-Link ist ein einfaches FIFO
Warteschlange, die das letzte Paket in der Warteschlange verwirft, wenn die Warteschlange überläuft. Ein FQ-Link
ist für Fair Queuing (für Details siehe [?]). Ein SFQ-Link ist für Stochastic Fair
Warteschlangen (für Details siehe [?]). Ein DRR-Link dient der Defizit-Round-Robin-Planung
(Details siehe [9]). Ein ROTER Link ist eine zufällig-frühe Drop-Warteschlange (für Details siehe
[2]). Ein CBQ-Link dient zum klassenbasierten Queuing mit einem paketweisen Round-Robin
Scheduler (für Details siehe [3]). Ein CBQ/WRR-Link dient zum klassenbasierten Queuing mit a
gewichteter Round-Robin-Scheduler.
neu Agent/tippe
Erstellen Sie einen Agenten des Typs tippe die sein kann:
Null - Verkehrssenke
LossMonitor - Traffic-Senke, die Verlustparameter überwacht
TCP - BSD-Tahoe-TCP
TCP/FullTcp - Vollständiges Reno-TCP mit bidirektionalen Verbindungen [11]
TCP/Reno - BSD-Reno-TCP
TCP/Newreno - eine modifizierte Version von BSD Reno TCP
TCP/Vegas - Vegas TCP (von U. Arizonia über USC)
TCP/Sack1 - BSD Reno TCP mit selektiven ACKs
TCP/Fack - BSD Reno TCP mit Weiterleitungs-ACKs
TCPSink - Standard-TCP-Senke
TCPSink/DelAck - TCP-Senke, die verzögerte ACKs generiert
TCPSink/Sack1 - TCP-Senke, die selektive ACKs generiert
TCPSink/Sack1/DelAck - TCP-Senke mit verzögerter Bestätigung mit selektiven ACKs
UDP - UDP-Transport
RTP - RTP-Agent
Sitzung/RTP -
RTCP - RTCP-Agent
IVS/Quelle -
IVS/Empfänger -
SRM-
Die Methoden, Konfigurationsparameter und die zugehörigen zugehörigen Zustandsvariablen
mit diesen Objekten werden in späteren Abschnitten ausführlich besprochen. Beachten Sie, dass einige
Agenten wie zB TCP oder SRM erzeugen keine eigenen Daten. Solche Agenten brauchen Quellen
an sie angehängt, um Daten zu generieren (siehe Attach-Source- und Attach-Traffic-Methoden in
Abschnitt AGENTOBJEKTE).
$ns Attach-Agent Knoten Agent
Hängen Sie das Agentenobjekt an Agent zu Knoten. Dem Agent und Knoten Gegenstände sollten haben
bereits erstellt worden.
$ns Trennagent Knoten Agent
Trennen Sie das Agentenobjekt Agent für Knoten.
$ns connect src dst
Stellen Sie eine bidirektionale Verbindung zwischen dem Agenten her src und der Agent usw. Rücksendungen
der Griff zu src Agent. Es wurde eine Hilfsmethode definiert, um die Erstellung zu erleichtern
und Anhängen eines Agenten an jeden von zwei Knoten und Herstellen einer Zwei-Wege-Verbindung
zwischen ihnen. (siehe Abschnitt BUILTINS).
$ns Nutzungsplaner tippe
Verwenden Sie einen Ereignisplaner des Typs tippe bei den Simulationen. tippe ist eine von Liste, Heap,
Kalender, Echtzeit. Der Listenplaner ist die Standardeinstellung. Ein Heap-Scheduler verwendet a
Heap für Ereigniswarteschlangen. Ein Kalenderplaner verwendet eine Kalenderwarteschlange, um den Überblick zu behalten
von Ereignissen. Der RealTime-Scheduler wird im Emulationsmodus verwendet, wenn der Simulator
interagiert mit einem externen Agenten.
$ns at Zeit Verfahren
Bewerten Verfahren zur Simulationszeit Zeit. Das Verfahren könnte ein globaler
zugängliche Funktion (proc) oder eine Objektmethode (instproc). Dieser Befehl kann sein
verwendet, um Quellen zu starten und zu stoppen, den Simulator dynamisch neu zu konfigurieren, Dump
Statistiken in bestimmten Intervallen usw. Gibt eine Ereignis-ID zurück.
$ns stornieren Eid
Entfernen Sie das durch die Ereignis-ID angegebene Ereignis Eid aus der Ereigniswarteschlange.
$ns jetzt an
Gibt die aktuelle Simulationszeit zurück.
$ns Gen-Karte
Durchläuft die Simulationstopologie und listet alle Objekte auf, die
erstellt und wie sie miteinander verbunden sind. Dies ist nützlich zum Debuggen
Simulationsskripte.
ns-Version
Gibt eine Zeichenfolge zurück, die die derzeit ausgeführte Version von ns identifiziert. Diese Methode ist
im globalen Kontext vom Interpreter ausgeführt.
ns-zufällig [ Samen ]
If Samen nicht vorhanden ist, geben Sie eine pseudozufällige Ganzzahl zwischen 0 und 2^31-1 zurück.
Andernfalls setzen Sie den Pseudozufallszahlengenerator mit Samen und gib den Samen zurück
Gebraucht. Wenn Samen 0 ist, wählen Sie heuristisch einen anfänglichen Seed (der variiert je nach)
aufeinanderfolgende Aufrufe). Diese Methode wird im globalen Kontext von der
Dolmetscher.
Ns hat andere Einrichtungen zur Zufallszahlenerzeugung; Details entnehmen Sie bitte der Dokumentation
[13].
OBJEKT HIERARCHIE
Eine kurze Beschreibung der Objekthierarchie in ns wird in diesem Abschnitt vorgestellt. Dies
Beschreibung erhebt keinen Anspruch auf Vollständigkeit. Es wurde bereitgestellt, um darzustellen, wie die
Methoden und Konfigurationsparameter, die den verschiedenen Objekten zugeordnet sind, werden vererbt.
Ausführlichere Informationen finden Sie unter "ns Hinweise & Dokumentation" und die automatisch
generierte Klassenbibliotheksinformationen auf der ns-Webseite.
Objekte sind mit dynamisch einstellbaren Konfigurationsparametern verknüpft und
abgefragt und Zustandsvariablen, die abgefragt werden können (normalerweise nur geändert, wenn der Zustand
Variablen müssen für einen weiteren Simulationslauf zurückgesetzt werden).
Konfigurationsparameter stellen Simulationsparameter dar, die normalerweise während des
gesamte Simulation (wie eine Linkbandbreite), kann aber bei Bedarf dynamisch geändert werden.
Zustandsvariablen stellen Werte dar, die für ein bestimmtes Objekt spezifisch sind, und dieses Objekts
Umsetzung.
Das folgende Diagramm zeigt einen Teil der Objekthierarchie:
Simulator
Multi-Sim
Knoten
Link
Simple Link
CBQLink
DummyLink
VerzögerungLink
Warteschlange
DropTail
FQ
SFQ
DRR
Netz
CBQ
CBQ/WRR
Warteschlangenmonitor
ED
Flowmon
Flow
rtObject
RouteLogic
Makler
rtProto
Statisch
Session
DV
Direkt
Null
Verlustmonitor
TCP
FullTcp
Rentier
Neureno
Sack1
Fack
TCPSink
DelAck
Sack1
DelAck
UDP
RTP
RTCP
IVS
Quelle
Empfänger
SRM
Session
RTP [wie unterscheidet sich dieser von Agent/CBR/RTP]
Anwendung
fTP
Telnet
Traffic
Ausstellung
Pareto
CBR
Spur
Integrator
Muster
Eine vollständige, automatisch generierte Objekthierarchie finden Sie unter dem Link "Klassenhierarchie"
(was darauf hindeutet http://www-sop.inria.fr/rodeo/personnel/Antoine.Clerget/ns/) auf der ns
Webseiten. (Danke an Antoine Clerget für die Aufrechterhaltung!)
Zum Beispiel jede Methode, die von a . unterstützt wird TCP Agent wird auch von a . unterstützt Rentier oder eine
Sack1 Agent. Standardkonfigurationsparameter werden ebenfalls vererbt. Zum Beispiel, $TCP kompensieren
Fenster_ 20 wobei $tcp ein TCP-Agent ist, definiert die Standard-TCP-Fenstergröße für beide TCP und
Rentier Objekte.
OBJEKT METHODEN
Die folgenden Abschnitte dokumentieren die Methoden, Konfigurationsparameter und Zustandsvariablen
die mit den verschiedenen Objekten verknüpft sind, sowie die, um die Netzwerkdynamik zu ermöglichen, Unicast
Routing, Multicast-Routing und Unterstützung von Trace und Monitoring. Die Objektklasse ist
implizit durch den Objektvariablennamen in der Beschreibung angegeben. Zum Beispiel, $TCP
impliziert die tcp-Objektklasse und alle ihre untergeordneten Klassen.
KNOT OBJEKTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, um mit der Veröffentlichung auf dem neuesten Stand zu sein.]
$knoten id
Gibt die Knoten-ID zurück.
$knoten Nachbarschaft
Gibt eine Liste der Nachbarknotenobjekte zurück.
$knoten anhängen Agent
Fügen Sie einen Agenten des Typs . hinzu Agent zu diesem Knoten.
$knoten DETACH Agent
Trennen Sie einen Agenten des Typs Agent von diesem Knoten.
$knoten Agent port
Geben Sie ein Handle an den an Port angeschlossenen Agenten zurück port auf diesem Knoten. Gibt ein leeres zurück
string, wenn der Port nicht verwendet wird.
$knoten zurückstellen
Setzen Sie alle mit diesem Knoten verbundenen Agenten zurück. Dies würde den Staat neu initialisieren
Variablen, die den verschiedenen Agenten an diesem Knoten zugeordnet sind.
$knoten rtObjekt?
Gibt ein Handle an rtObject zurück, wenn dort eine Instanz des Objekts existiert
Knoten. Nur Knoten, die an einem dynamischen Unicast-Routing-Protokoll teilnehmen, haben
dieses Objekts (siehe Abschnitt UNICAST-ROUTING-METHODEN und RTOBJEKT-OBJEKTE).
$knoten Gruppe beitreten Agent Gruppe
Fügen Sie den durch das Objekt-Handle angegebenen Agenten hinzu Agent zur Multicast-Hostgruppe
identifiziert durch die Adresse Gruppe. Dadurch wird das Gruppenmitgliedschaftsprotokoll
dafür sorgen, dass der entsprechende Multicast-Verkehr diesen Agenten erreicht. Multicast-Gruppe
Adresse sollte im Bereich 0x8000 - 0xFFFF liegen.
$knoten Zuweisungsadr
Gibt die Multicast-Gruppenadresse in aufsteigender Reihenfolge bei jedem Aufruf zurück, beginnend mit
0x8000 und endet bei 0xFFFF.
$knoten gestalten gestalten
Stellen Sie die Form des Knotens auf "gestalten". Bei Aufruf vor dem Start des Simulators
ausführen, ändert es die Standardform des Knotens in der Namensverfolgungsdatei. Der Standard
Form eines Knotens ist """Kreis"""
$knoten Farbe Farbe
Setzen Sie die Farbe des Knotens auf Farbe. Es kann jederzeit aufgerufen werden, um den Strom zu ändern
Farbe des Knotens in der Namensverfolgungsdatei, falls vorhanden.
$knoten Get-Attribut Name
Holen Sie sich das angegebene Attribut Name des Knotens. Derzeit hat ein Node-Objekt zwei
Attribute: FARBE und SHAPE. Hinweis: Diese Buchstaben müssen Großbuchstaben sein.
$knoten hinzufügen-markieren Name Farbe gestalten
Fügen Sie eine Marke (in der Namensverfolgungsdatei) mit hinzu Farbe und gestalten um den Knoten. Die Form kann
"""Kreis""", """Hexagon""" und """Quadrat""" sein (Groß-/Kleinschreibung beachten). Die hinzugefügte Marke
wird identifiziert durch Name.
$knoten löschen-markieren Name
Löschen Sie die Markierung mit Name im angegebenen Knoten.
Es gibt keine für die Knotenklasse spezifischen Zustandsvariablen oder Konfigurationsparameter.
LINK OBJEKTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, um mit der Veröffentlichung auf dem neuesten Stand zu sein.]
$ Link Spurendynamik ns Datei-ID
Verfolgen Sie die Dynamik dieses Links und schreiben Sie die Ausgabe an Datei-ID Dateihandle. ns is
eine Instanz des Simulator- oder MultiSim-Objekts, die erstellt wurde, um die
Simulation (siehe Abschnitt TRACE- UND ÜBERWACHUNGSMETHODEN für das Ausgabe-Trace-Format).
$ Link Trace-Callback ns cmd
Verfolgen Sie alle Pakete auf dem Link mit dem Rückruf cmd. Cmd wird für jeden Trace aufgerufen
event (enqueue, dequeue, drop) mit dem Text, der als Parameter protokolliert würde.
(Diese Informationen finden Sie in der Beschreibung der Protokolldatei.) Eine Demo von trace
callbacks befindet sich im Programm tcl/ex/callback_demo.tcl in der Distribution.
$ Link Farbe Farbe
Legen Sie die Farbe des Link-Objekts fest. Es kann jederzeit aufgerufen werden, um den Strom zu ändern
Farbe des Links in der Namensverfolgungsdatei, falls vorhanden.
$ Link Get-Attribut Name
Holen Sie sich das angegebene Attribut Name des Links. Derzeit hat ein Link-Objekt drei
Attribute: FARBE, ORIENTIERUNG und QUEUE_POS.
Derzeit sollten die folgenden beiden Funktionen nicht direkt aufgerufen werden. Verwenden $ns Duplex-Link-
op stattdessen. Lesen Sie den entsprechenden Abschnitt auf dieser Manpage.
$ Link Orient oder
Legen Sie die Ausrichtung des Links fest auf oder. Bei Aufruf vor dem Start des Simulators
ausführen, ändert es die Standardausrichtung des Links in der Namensverfolgungsdatei, falls vorhanden
einer. Wenn die Ausrichtung für einen oder mehrere Links nicht angegeben ist, verwendet nam das automatische Layout.
Die Standardausrichtung eines Link-Objekts ist nicht angegeben.
$ Link WarteschlangePos Post
Stellen Sie die Warteschlangenposition des Links auf Post. Bei Aufruf vor dem Start des Simulators
zum Ausführen ändert es die Standardwarteschlangenplatzierung des Simplex-Links in nam trace
Datei, falls vorhanden. Post gibt den Winkel zwischen der horizontalen Linie und dem
Zeile, entlang der Pakete in der Warteschlange angezeigt werden.
EINFACHLINK OBJEKTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, um mit der Veröffentlichung auf dem neuesten Stand zu sein.]
$ Link kosten Kostenwert
Marke Kostenwert die Kosten für diesen Link.
$ Link Kosten?
Geben Sie die Kosten für diesen Link zurück.
Irgendwelche Konfigurationsparameter oder Zustandsvariablen?
VERZÖGERUNG OBJEKTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, um mit der Veröffentlichung auf dem neuesten Stand zu sein.] Die
DelayLink-Objekte bestimmen die Zeit, die ein Paket benötigt, um einen Link zu durchlaufen.
Dies ist definiert als size/bw + delay, wobei size die Paketgröße ist, bw der Link ist
Bandbreite und Verzögerung ist die Verbindungsausbreitungsverzögerung. Es gibt keine Methoden oder Zustände
Variablen, die diesem Objekt zugeordnet sind.
Konfiguration Parameter
Bandbreite_
Linkbandbreite in Bits pro Sekunde.
verzögern_ Verzögerung bei der Verbindungsausbreitung in Sekunden.
Mit diesem Objekt sind keine Zustandsvariablen verknüpft.
NETZWERK DYNAMIK METHODEN
In diesem Abschnitt werden Methoden beschrieben, um die Links und Knoten in der Topologie nach oben und unten zu bewegen
nach verschiedenen Verteilungen. Generell sollte ein dynamisches Routing-Protokoll verwendet werden
immer dann, wenn eine Simulation mit Netzdynamik durchgeführt werden soll. Beachten Sie, dass eine statische Topologie
model ist die Standardeinstellung in ns.
$ns rtmodel Modell Modellparameter node1 [Knoten2]
Stellen Sie die Verbindung her node1 und node2 Wechsel zwischen Auf- und Ab-Zuständen entsprechend
zum Modell Modell. Nur für den Fall node1 ist angegeben alle Links Vorfall auf der
Knoten würde entsprechend den angegebenen hoch- und runtergefahren werden Modell. Modellparameter
enthält die für das jeweilige Modell erforderlichen Parameter und ist anzugeben als a
list dh die Parameter sind in geschweifte Klammern zu setzen. Modell kann einer von sein
deterministisch, Exponentiell, Handbuch, Spur. Gibt ein Handle zu einem Modellobjekt zurück
entsprechend der angegebenen Modell.
Im deterministischen Modell Modellparameter is [Startzeit] Up-Intervall Down-Intervall
[Endzeit]. Ab Startzeit der link ist fertig Up-Intervall und
runter für Down-Intervall zu Endzeit ist erreicht. Die Standardwerte für Start-
Zeit, Up-Intervall, Down-Intervall sind 0.5s, 2.0s bzw. 1.0s. Endzeit
standardmäßig auf das Ende der Simulation. Die Startzeit ist standardmäßig auf 0.5s eingestellt, um
Lassen Sie die Berechnung des Routing-Protokolls in Ruhe.
Wenn das Exponentialmodell verwendet wird Modellparameter ist von der Form Up-Intervall Down-
Intervall wobei die Link-Up-Time eine exponentielle Verteilung um den Mittelwert ist oben-
Intervall und die Verbindungsausfallzeit ist eine exponentielle Verteilung um den Mittelwert
Down-Intervall. Standardwerte für Up-Intervall und Down-Intervall sind 10s und 1s
beziehungsweise.
Wenn die manuelle Verteilung verwendet wird Modellparameter is at op woher at spezifiziert das
Zeitpunkt, zu dem die Operation op auftreten sollte. op eines von up, nach unten. Das Handbuch
Die Verteilung könnte alternativ mit dem angegeben werden rtmodel-at Methode beschrieben
später im Abschnitt.
Wenn Trace als angegeben ist Modell die Link-/Knotendynamik wird aus einem Tracefile gelesen.
Dem Modellparameter Argument wäre in diesem Fall das Datei-Handle des Tracefile
das hat die Dynamikinformationen. Das Tracefile-Format ist identisch mit dem Trace
von der Trace-Dynamics-Link-Methode generierte Ausgabe (siehe TRACE AND MONITORING
ABSCHNITT METHODEN).
$ns rtmodel-löschen Modell-Griff
Löschen Sie die Instanz des durch . angegebenen Routenmodells Modell-Griff.
$ns rtmodel-at at op node1 [Knoten2]
Wird verwendet, um die Up- und Down-Zeiten der Verbindung zwischen Knoten anzugeben node1 und Knoten2.
Wenn nur node1 erhält alle Links Vorfall auf node1 wird hoch und runter gebracht.
at ist der Zeitpunkt, zu dem die Operation op das kann entweder sein up or nach unten ist zu sein
auf dem/den angegebenen Link(s) ausgeführt.
WARTESCHLANGE OBJEKTE
Ein Warteschlangenobjekt ist eine allgemeine Objektklasse, die in der Lage ist, oder möglicherweise zu markieren
Verwerfen von Paketen, während sie durch die simulierte Topologie wandern.
Konfiguration Parameter
begrenzen_ Die Warteschlangengröße in Paketen.
verstopft_
Standardmäßig auf false gesetzt, ist dies wahr, wenn die Warteschlange blockiert ist (kann nicht
ein Paket an seinen Downstream-Nachbarn senden).
unblock_on_resume_
Standardmäßig auf "true" gesetzt, zeigt an, dass sich eine Warteschlange zu diesem Zeitpunkt selbst entsperren sollte
das letzte gesendete Paketpaket wurde übertragen (aber nicht unbedingt
empfangen).
DROP-TAIL OBJEKTE
Drop-Tail-Objekte sind eine Unterklasse von Queue-Objekten, die eine einfache FIFO-Warteschlange implementieren. Dort
sind keine Methoden, die spezifisch für Drop-Tail-Objekte sind. Der einzige Konfigurationsparameter
is Drop-Front_, was bewirkt, dass sich die Warteschlange als Drop-from-Front verhält, wenn sie auf true gesetzt ist
Warteschlangendisziplin. Diese Variable ist standardmäßig auf false gesetzt.
FQ OBJEKTE
FQ-Objekte sind eine Unterklasse von Queue-Objekten, die Fair Queuing implementieren. Es gibt keine
Methoden, die für FQ-Objekte spezifisch sind.
Konfiguration Parameter
secsProByte_
Mit diesem Objekt sind keine Zustandsvariablen verknüpft.
SFQ OBJEKTE
SFQ-Objekte sind eine Unterklasse von Queue-Objekten, die Stochastic Fair Queuing implementieren. Dort
sind keine Methoden, die spezifisch für SFQ-Objekte sind.
Konfiguration Parameter
maxqueue_
Eimer_
Mit diesem Objekt sind keine Zustandsvariablen verknüpft.
DRR OBJEKTE
DRR-Objekte sind eine Unterklasse von Queue-Objekten, die das Defizit-Round-Robin-Scheduling implementieren.
Diese Objekte implementieren Defizit-Round-Robin-Scheduling zwischen verschiedenen Flüssen ( A
Ein bestimmter Fluss ist einer, der Pakete mit derselben Knoten- und Port-ID enthält ODER Pakete, die
nur dieselbe Knoten-ID haben). Auch im Gegensatz zu anderen Objekten mit mehreren Warteschlangen ist dieses Warteschlangenobjekt
implementiert einen einzelnen gemeinsam genutzten Pufferraum für seine verschiedenen Flüsse.
Konfiguration Parameter
Eimer_
Gibt die Gesamtzahl der Buckets an, die für das Hashing jedes der
fließt.
blimit_
Gibt die Größe des gemeinsam genutzten Puffers in Byte an.
Quanten-_
Gibt (in Bytes) an, wie viel jeder Flow während seines Zuges senden kann.
Maske"_ mask_, wenn auf 1 gesetzt, bedeutet, dass ein bestimmter Fluss aus Paketen besteht
mit der gleichen Knoten-ID (und möglicherweise unterschiedlichen Port-IDs), ansonsten ein Flow
besteht aus Paketen mit den gleichen Knoten- und Port-IDs.
Netz OBJEKTE
RED-Objekte sind eine Unterklasse von Queue-Objekten, die eine zufällige Früherkennung implementieren
Gateways. Das Objekt kann so konfiguriert werden, dass es Pakete entweder verwirft oder ``markiert''. Es gibt keine
Methoden, die für RED-Objekte spezifisch sind.
Konfiguration Parameter
Bytes_ Auf "true" setzen, um den ``Byte-Modus'' ROT zu aktivieren, wobei die Größe der ankommenden
Pakete beeinflussen die Wahrscheinlichkeit des Markierens (Verwerfens) von Paketen.
Warteschlange-in-Bytes_
Auf "true" setzen, um die durchschnittliche Warteschlangengröße in Bytes zu messen, anstatt
Pakete. Das Aktivieren dieser Option verursacht auch dreschen_ und maxthresch_ sein
automatisch skaliert um mittlere_pktgröße_ (siehe unten).
dreschen_
Der Mindestschwellenwert für die durchschnittliche Warteschlangengröße in Paketen.
maxthresch_
Der maximale Schwellenwert für die durchschnittliche Warteschlangengröße in Paketen.
mittlere_pktgröße_
Eine grobe Schätzung der durchschnittlichen Paketgröße in Byte. Wird bei der Aktualisierung der . verwendet
berechnete durchschnittliche Warteschlangengröße nach einer Leerlaufzeit.
q_gewicht_
Die Warteschlangengewichtung, die im exponentiell gewichteten gleitenden Durchschnitt für verwendet wird
Berechnung der durchschnittlichen Warteschlangengröße.
warten_ Auf true setzen, um ein Intervall zwischen verworfenen Paketen aufrechtzuerhalten.
linterm_
Da die durchschnittliche Warteschlangengröße zwischen "thresh_" und "maxthresh_" variiert, ist die
Die Wahrscheinlichkeit eines Paketverlusts variiert zwischen 0 und "1/linterm".
setbit_
Auf "true" setzen, um Pakete durch Setzen des Überlastungsanzeigebits in . zu markieren
Paket-Header statt Drop-Pakete.
Drop-Tail_
Auf true setzen, um Drop-Tail anstelle von Random-Drop oder Drop-from-Front zu verwenden, wenn
die Warteschlange überläuft oder die durchschnittliche Warteschlangengröße überschreitet "maxthresh_". Das ist
das Standardverhalten. Eine weitere Erläuterung dieser Variablen finden Sie unter
[2].
Tropfen-Rand_
Auf true setzen, um Random-Drop statt Drop-Tail oder Drop-from-Front zu verwenden, wenn
die Warteschlange überläuft oder die durchschnittliche Warteschlangengröße überschreitet "maxthresh_".
Drop-Front_
Auf true setzen, um Drop-from-Front anstelle von Drop-Tail oder zufälligem Drop zu verwenden, wenn
die Warteschlange überläuft oder die durchschnittliche Warteschlangengröße überschreitet "maxthresh_".
ns1-kompatibel_
Auf true setzen, um ein Zurücksetzen des Zählers seit dem letzten Paketverlust nach a . zu vermeiden
erzwungenes Paket wird verworfen. Dies gibt Kompatibilität mit dem vorherigen Verhalten
von ROT. Der Standardwert ist auf false gesetzt.
entle_ Auf true setzen, um die Paketabwurfrate langsam von max_p auf 1 zu erhöhen, da die
Die durchschnittliche Warteschlangengröße reicht von maxthresh bis zweimal maxthresh. Die Standardeinstellung ist
auf false gesetzt und max_p steigt abrupt von max_p auf 1, wenn der Durchschnitt
Warteschlangengröße überschreitet maxthresh.
Staat Variablen
Auf keine der Zustandsvariablen der RED-Implementierung kann zugegriffen werden.
CBQ OBJEKTE
CBQ-Objekte sind eine Unterklasse von Queue-Objekten, die klassenbasiertes Queueing implementieren.
$cbq einfügen $ class
Verkehrsklasse einfügen Klasse in die mit link verknüpfte Link-Sharing-Struktur
Objekt kbq.
$cbq binden $cbqclass $id1 [$id2]
Ursache Pakete mit Flow-ID $id1 (oder die im bereich $id1 zu $id2
inklusive) der Verkehrsklasse zuzuordnen $cbqklasse.
$cbq Algorithmus $alg
Wählen Sie den internen CBQ-Algorithmus aus. $alg kann auf einen der folgenden Werte eingestellt werden: "nur Vorfahren",
"oberste Ebene" oder "formell".
CBQ/WRR OBJEKTE
CBQ/WRR-Objekte sind eine Unterklasse von CBQ-Objekten, die gewichtetes Round-Robin implementieren
Scheduling zwischen Klassen der gleichen Prioritätsstufe. Im Gegensatz dazu implementieren CBQ-Objekte
paketweises Round-Robin-Scheduling zwischen Klassen derselben Prioritätsstufe.
Konfiguration Parameter
maxpkt_
Die maximale Größe eines Pakets in Byte. Dies wird nur von CBQ/WRR-Objekten verwendet
bei der Berechnung der maximalen Bandbreitenzuweisungen für das gewichtete Round-Robin
Planer.
CBQ-KLASSE OBJEKTE
CBQClass-Objekte implementieren die Verkehrsklassen, die CBQ-Objekten zugeordnet sind.
$cbqclass setparams Elternteil okborgen zuteilen maxid prio Grad des Extraverzögerung
Legt mehrere Konfigurationsparameter für die CBQ-Verkehrsklasse fest (siehe unten).
$cbqclass Elternteil [$cbqcl|keine]
Geben Sie das übergeordnete Element dieser Klasse im Link-Sharing-Baum an. Die Eltern können sein
als ``none'' angegeben, um anzuzeigen, dass diese Klasse ein Root ist.
$cbqclass neu zuteilen $a
Ändern Sie die Linkzuordnung dieser Klasse auf den angegebenen Betrag (im Bereich von 0.0 bis
1.0). Beachten Sie, dass nur die angegebene Klasse betroffen ist.
$cbqclass Installationswarteschlange $q
Installieren Sie ein Queue-Objekt in der zusammengesetzten CBQ- oder CBQ/WRR-Linkstruktur. Wenn ein CBQ
Objekt wird anfänglich erstellt, es enthält keine interne Warteschlange (nur ein Paket
Klassifizierer und Planer).
Konfiguration Parameter
okborg_
ist ein boolescher Wert, der angibt, dass die Klasse Bandbreite von ihrem . leihen darf
Elternteil.
zuteilen_ ist der maximale Anteil der Linkbandbreite, die der angegebenen Klasse zugewiesen ist
als reelle Zahl zwischen 0.0 und 1.0.
maxidle_
ist die maximale Zeit, die eine Klasse benötigt, um ihre Pakete zu haben
in die Warteschlange gestellt, bevor sie weitergeleitet werden dürfen
Priorität_
ist die Prioritätsstufe der Klasse gegenüber anderen Klassen. Dieser Wert kann
Bereich von 0 bis 10, und mehr als eine Klasse kann mit derselben Priorität vorhanden sein.
Priorität 0 ist die höchste Priorität.
Niveau_ ist die Ebene dieser Klasse im Link-Sharing-Baum. Blattknoten im Baum
gelten als Stufe 1; ihre Eltern sind auf Stufe 2 usw.
Extraverzögerung_
Erhöhen Sie die Verspätung einer verspäteten Klasse um die angegebene Anzahl von
Sekunden.
WARTESCHLANGENMONITOR Objekte
QueueMonitor-Objekte werden verwendet, um eine Reihe von Paket- und Byte-Ankünften, -Abgängen und
Zähler fallen lassen. Es umfasst auch Unterstützung für aggregierte Statistiken wie die durchschnittliche Warteschlange
Größe usw. [siehe TRACE- UND ÜBERWACHUNGSMETHODEN].
$warteschlangenmonitor zurückstellen
Zurücksetzen aller unten beschriebenen kumulativen Zähler (Ankünfte, Abflüge und Abgänge)
bis Null. Setzen Sie auch die Integratoren und den Delay-Sampler zurück, falls definiert.
$warteschlangenmonitor Set-Delay-Samples VerzögerungSamp_
Richten Sie das Samples-Objekt ein VerzögerungSamp_ um Statistiken über Warteschlangenverzögerungen aufzuzeichnen.
VerzögerungSamp_ ist ein Handle für ein Samples-Objekt, dh das Samples-Objekt sollte
bereits erstellt worden.
$warteschlangenmonitor Get-Bytes-Integrator
Gibt ein Integrator-Objekt zurück, das verwendet werden kann, um das Integral der Warteschlange zu finden
Größe in Byte. (siehe Abschnitt Integratorobjekte).
$warteschlangenmonitor get-pkts-integrator
Gibt ein Integrator-Objekt zurück, das verwendet werden kann, um das Integral der Warteschlange zu finden
Größe in Paketen. (siehe Abschnitt Integratorobjekte).
$warteschlangenmonitor Get-Delay-Samples
Gibt ein Samples-Objekt zurück VerzögerungSamp_ um Statistiken über Warteschlangenverzögerungen aufzuzeichnen (siehe
Abschnitt "Beispielobjekte").
Es gibt keine spezifischen Konfigurationsparameter für dieses Objekt.
Staat Variablen
Größe_ Momentane Warteschlangengröße in Byte.
pkt_ Momentane Warteschlangengröße in Paketen.
Gleichgesinnte_
Laufende Gesamtzahl der Pakete, die angekommen sind.
Barrivals_
Laufende Gesamtzahl der Bytes, die in Paketen enthalten sind, die angekommen sind.
pAbfahrten_
Laufende Gesamtzahl der Pakete, die gegangen sind (nicht verworfen).
bAbfahrten_
Laufende Summe der Bytes, die in Paketen enthalten sind, die gegangen sind (nicht
fallen gelassen).
Tropfen_
Gesamtzahl der verworfenen Pakete.
Tropfen_
Gesamtzahl der verworfenen Bytes.
bytesInt_
Integrator-Objekt, das das Integral der Warteschlangengröße in Byte berechnet.
Dem Summe_ Variable dieses Objekts hat die laufende Summe (Integral) der Warteschlange
Größe in Byte.
pktsInt_
Integratorobjekt, das das Integral der Warteschlangengröße in Paketen berechnet.
Dem Summe_ Variable dieses Objekts hat die laufende Summe (Integral) der Warteschlange
Größe in Paketen.
QUEUEMONITOR/ED Objekte
Dieses abgeleitete Objekt ist in der Lage, reguläre Paketverluste von zu unterscheiden früh Tropfen.
Einige Warteschlangen unterscheiden reguläre Drops (z. B. Drops aufgrund von Puffererschöpfung) von anderen
Drops (zB zufällige Drops in ROTEN Warteschlangen). Unter Umständen ist es sinnvoll,
Unterscheiden Sie diese beiden Arten von Tropfen.
Staat Variablen
Eptropfen_
Die Anzahl der Pakete, die ``früh'' verworfen wurden.
Ebtropfen_
Die Anzahl der Bytes, die Pakete enthalten, die ``früh'' verworfen wurden
Hinweis: Da diese Klasse eine Unterklasse von QueueMonitor ist, haben Objekte dieses Typs auch
Felder wie pdrops_ und bdrops_. Diese Felder beschreiben die gesamt Anzahl der fallengelassenen
Pakete und Bytes, einschließlich Early und Non-early Drops.
QUEUEMONITOR/ED/FLOWMON Objekte
Diese Objekte können auf Wunsch anstelle eines herkömmlichen QueueMonitor-Objekts verwendet werden
um Zählungen und Statistiken pro Flow zusätzlich zu den aggregierten Zählungen zu sammeln und
Statistiken, die vom grundlegenden QueueMonitor bereitgestellt werden.
$fmon Klassifikator [$cl]
füge (liest) den angegebenen Klassifizierer in (aus) das Flow-Monitor-Objekt ein. Dies
wird verwendet, um eingehende Pakete zuzuordnen, denen sie zugeordnet sind.
$fmon abladen
Geben Sie die aktuellen Zähler und Statistiken pro Durchfluss in den in a . angegebenen E/A-Kanal aus
vorheriger Attach-Vorgang.
$fmon fließt
Gibt eine Zeichenkette zurück, die die Namen aller dieser bekannten Flow-Objekte enthält
Strömungswächter. Jedes dieser Objekte ist vom Typ QueueMonitor/ED/Flow.
$fmon anhängen $chan
Schließen Sie einen tcl-E/A-Kanal an den Durchflussmonitor an. Flow-Statistiken werden in die . geschrieben
Kanal, wenn die Dump-Operation ausgeführt wird.
Konfiguration Parameter
aktivieren_in_
Standardmäßig auf "true" gesetzt, gibt an, dass der Ankunftsstatus pro Flow beibehalten werden soll
durch den Strömungswächter. Wenn auf false gesetzt, wird nur die aggregierte Ankunft
Informationen aufbewahrt werden.
enable_out_
Standardmäßig auf "true" gesetzt, gibt an, dass der Abfahrtsstatus pro Flow sein sollte
vom Strömungswächter gehalten. Wenn auf false gesetzt, wird nur die aggregierte Abfahrt
Informationen aufbewahrt werden.
enable_drop_
Standardmäßig auf "true" gesetzt, gibt an, dass der Drop-Status pro Flow beibehalten werden soll von
der Strömungswächter. Wenn auf false gesetzt, sind nur die aggregierten Drop-Informationen
gehalten.
enable_edrop_
Standardmäßig auf "true" gesetzt, gibt an, dass der Early-Drop-Status pro Flow sein sollte
vom Strömungswächter gehalten. Wenn auf false gesetzt, wird nur der aggregierte Early Drop
Informationen aufbewahrt werden.
QUEUEMONITOR/ED/FLOW Objekte
Diese Objekte enthalten Zählungen und Statistiken pro Fluss, die von einem QUEUEMONITOR/ED/FLOWMON . verwaltet werden
Objekt. Sie werden im Allgemeinen in einer OTcl-Callback-Prozedur erstellt, wenn ein Flow-Monitor
gegeben ein Paket kann es nicht auf einen bekannten Fluss abbilden. Beachten Sie, dass der Klassifikator des Strömungswächters
ist für die willkürliche Zuordnung von Paketen zu Flüssen verantwortlich. Also je nach
verwendeter Klassifikator sind möglicherweise nicht alle Zustandsvariablen relevant (z
klassifizieren Pakete nur basierend auf der Fluss-ID, in diesem Fall die Quell- und Zieladressen
kann nicht von Bedeutung sein).
Staat Variablen
Quelle_ Die Quelladresse von Paketen, die zu diesem Fluss gehören.
dst_ Die Zieladresse von Paketen, die zu diesem Fluss gehören.
fließend_
Die Fluss-ID von Paketen, die zu diesem Fluss gehören.
UNIKAST Drinnen METHODEN
Ein dynamisches Unicast-Routing-Protokoll kann so festgelegt werden, dass es auf einer Teilmenge von Knoten im
Topologie. Beachten Sie, dass ein dynamisches Routing-Protokoll im Allgemeinen verwendet werden sollte, wenn a
Die Simulation erfolgt mit Netzwerkdynamik.
$ns rtproto deshalb Knotenliste
Gibt das dynamische Unicast-Routing-Protokoll an deshalb auf den Knoten ausgeführt werden
spezifiziert durch Knotenliste. Zur Zeit deshalb kann einer von Static, Session, DV sein. Statisch
Routing ist die Standardeinstellung. Session impliziert, dass die Unicast-Routen über den gesamten
Topologie werden sofort neu berechnet, wenn eine Verbindung nach oben oder unten geht. DV
impliziert, dass ein einfaches Distanzvektor-Routing-Protokoll simuliert werden soll. Knoten-
Liste Standardmäßig werden alle Knoten in der Topologie verwendet.
$ns Compute-Routen
Berechnen von Routen zwischen allen Knoten in der Topologie. Dies kann verwendet werden, wenn statisch
Routing erfolgt und die Routen müssen neu berechnet werden, da der Status eines Links hat
geändert. Beachten Sie, dass das Session-Routing (siehe rtproto Methode oben) wird neu berechnet
leitet automatisch weiter, wenn sich der Status eines Links in der Topologie ändert.
$ns get-routelogic
Gibt ein Handle an ein RouteLogic-Objekt zurück, das Methoden für die Routentabellensuche hat
usw.
ROUTELOGIK OBJEKTE
$routelogic Nachschlagen srcid Bestimmung
Gibt die ID des Knotens zurück, der der nächste Hop vom Knoten mit id . ist srcid zu den
Knoten mit id bestimmt.
$routelogic abladen Knotenid
Die Routing-Tabellen aller Knoten ausgeben, deren ID kleiner ist als Knoten-ID. Knoten-IDs sind
wird den Knoten normalerweise aufsteigend zugewiesen, beginnend bei 0 in der Reihenfolge
Schaffung.
RTOBJEKT OBJEKTE
Jeder Knoten, der an einem dynamischen Unicast-Routing-Protokoll teilnimmt, hat eine Instanz von
rtObject (siehe Abschnitt NODE OBJECTS für die Methode zum Abrufen eines Handles für dieses Objekt bei a
bestimmten Knoten). Beachten Sie, dass Knoten keine Instanz dieses Objekts haben, wenn Session
Routing erfolgt, da in diesem Fall kein detailliertes Routing-Protokoll simuliert wird.
$rtobject Dump-Routen Datei-ID
Verschieben Sie die Routing-Tabelle auf den durch . angegebenen Ausgangskanal Datei-ID. Datei-ID muss ein sein
Dateihandle, die von der Tcl . zurückgegeben wird XNUMXh geöffnet Befehl und es muss geöffnet worden sein für
Schreiben.
$rtobject rtProto? deshalb
Gibt ein Handle an den Routingprotokollagenten zurück, der durch . angegeben wird deshalb wenn es existiert bei
dieser Knoten. Gibt andernfalls einen leeren String zurück.
$rtobject nächsteHop? ZielID
Gibt die ID des Knotens zurück, der der nächste Hop zum Ziel ist, das durch die
Knoten-ID, ZielID.
$rtobject rtpref? ZielID
$rtobject metrisch? ZielID
MULTICAST Drinnen METHODEN
Multicast-Routing wird aktiviert, indem die Variable Simulator EnableMcast_ auf 1 gesetzt wird
Beginn der Simulation. Beachten Sie, dass diese Variable vor jedem Knoten, Link oder
Agentenobjekte werden in der Simulation erstellt. Außerdem müssen Links erstellt worden sein mit
Schnittstellenbezeichnungen (siehe Simplex-Link- und Duplex-Link-Methoden im Abschnitt NS-Befehle).
$ns mrtproto deshalb Knotenliste
Gibt das Multicast-Routing-Protokoll an deshalb auf den durch . angegebenen Knoten ausgeführt werden
Knotenliste. Zur Zeit deshalb kann einer von CtrMcast, DM, detailDM, dynamicDM sein,
pimDM. Knotenliste Standardmäßig werden alle Knoten in der Topologie verwendet. Gibt ein Handle zu . zurück
ein protokollspezifisches Objekt mit Methoden, Konfigurationsparametern speziell für
dieses Protokoll. Beachten Sie, dass derzeit das CtrMcastComp-Objekt zurückgegeben wird, wenn CtrMcast . ist
verwendet, aber ein Null-String wird zurückgegeben, wenn DM, DetailDM, dynamicDM oder pimDM verwendet wird.
Wenn proto 'CtrMcast' ist, wird ein Rendezvous Point (RP) Rooted Shared Tree erstellt für a
Multicast-Gruppe. Das eigentliche Senden von Prune-, Join-Nachrichten usw. zum Einrichten des Status
an den Knoten wird nicht simuliert. Ein zentralisierter Berechnungsagent wird verwendet, um zu berechnen
die Weiterleitungsbäume und richten Sie den Multicast-Weiterleitungsstatus (*,G) an den entsprechenden
Knoten als neue Empfänger einer Gruppe beitreten. Datenpakete von den Absendern an eine Gruppe sind
Unicast zum RP. Methoden werden im CtrMcastComp-Objekt bereitgestellt (siehe
Abschnitt CTRMCASTCOMP OBJECTS), der von mrtproto zurückgegeben wird, um zur Quelle zu wechseln.
bestimmte Bäume, wählen Sie einige Knoten als Kandidaten-RPs usw. Wenn ein Knoten/Link auf a
Multicast-Verteilungsbaum nach unten geht, wird der Baum sofort neu berechnet.
Wenn proto 'DM' ist, wird DVMRP-ähnlicher dichter Modus simuliert. Eltern-Kind-Listen werden verwendet
um die Anzahl der Verbindungen zu reduzieren, über die die Datenpakete rundgesendet werden. Pflaume
Nachrichten werden von Knoten gesendet, um Zweige aus dem Multicast-Weiterleitungsbaum zu entfernen
die zu keinen Gruppenmitgliedern führen. Der Wert für das Bereinigungs-Timeout beträgt standardmäßig 0.5 s
(Siehe Abschnitt DM-OBJEKTE, um die Standardeinstellung zu ändern). Dies passt sich nicht an das Netzwerk an
Änderungen. Es gibt derzeit auch keine Unterstützung für die ordnungsgemäße Funktion in Topologien
mit LANs.
Wenn proto 'detailedDM' ist, ist ein Protokoll mit dichtem Modus basierend auf Protocol Independent
Multicast - Dense Mode (PIM-DM) wird simuliert. Dies ist derzeit die vollständigste
Version des Dense-Mode-Protokolls im Simulator und wird für die Verwendung über
die anderen Dense-Mode-Protokolle. Es passt sich der Netzwerkdynamik und den Funktionen an
korrekt in Topologien mit LANs (wo LANs mit dem Multi-Link-of-
Schnittstellenmethode - siehe NS-BEFEHLE). Falls mehrere Potenziale vorhanden sind
Forwarder für ein LAN wird der Knoten mit der höchsten ID als Forwarder gewählt (dieser
erfolgt über den Assert-Mechanismus). Die Standardwerte für das Bereinigungs-Timeout,
Zeitüberschreitung beim Löschen der Schnittstelle (verwendet für LANs) und Zeitüberschreitung für die Transplantat-Neuübertragung sind
0.5s, 0.1s bzw. 0.05s. (siehe Prune/Iface/Timer, Löschen/Iface/Timer
und GraftRtx/Timer-Objekte, um die Standardwerte zu ändern und für mehr
Informationen zu den Timern).
Wenn proto 'dynamicDM' ist, ein DVMRP-ähnliches Protokoll im Dichtemodus, das sich an das Netzwerk anpasst
Änderungen werden simuliert. „Gift-Rückwärts“-Informationen (dh die Informationen, die a
bestimmter Nachbarknoten verwendet diesen Knoten, um ein bestimmtes Netzwerk zu erreichen) wird gelesen
aus den Routingtabellen benachbarter Knoten, um sich an die Netzwerkdynamik anzupassen
(DVMRP führt sein eigenes Unicast-Routing-Protokoll aus, das diese Informationen austauscht). Die
Die aktuelle Implementierung unterstützt kein ordnungsgemäßes Funktionieren in Topologien mit LANs.
Der Wert für das Bereinigungs-Timeout beträgt standardmäßig 0.5 s (siehe Abschnitt DM-OBJEKTE zum Ändern der
Standard).
Wenn proto 'pimDM' ist, wird der protokollunabhängige Multicast-Modus simuliert. In
In diesem Fall werden die Datenpakete über alle ausgehenden Verbindungen mit Ausnahme der
eingehender Link. Prune-Nachrichten werden von Knoten gesendet, um die Zweige der . zu entfernen
Multicast-Weiterleitungsbaum, der zu keinen Gruppenmitgliedern führt. Die jetzige
Implementierung passt sich nicht der Netzwerkdynamik an und unterstützt keine ordnungsgemäße
Funktionieren in Topologien mit LANs. Der Wert für das Bereinigungs-Timeout beträgt standardmäßig 0.5 s
(Siehe Abschnitt DM-OBJEKTE, um die Standardeinstellung zu ändern).
CTRMCASTCOMP OBJEKTE
Ein Handle für das CtrMcastComp-Objekt wird zurückgegeben, wenn das Protokoll als . angegeben wird
'CtrMcast' in mrtproto.
$ctrmcastcomp Switch-Baumtyp Gruppenadresse
Wechseln Sie vom Rendezvous Point-verwurzelten gemeinsamen Baum zu quellenspezifischen Bäumen für
die von . angegebene Gruppe Gruppen-Adr. Beachten Sie, dass diese Methode nicht zum Umschalten verwendet werden kann
von quellenspezifischen Bäumen zurück zu einem gemeinsam genutzten Baum für eine Multicast-Gruppe.
$ctrmcastcomp set_c_rp Knotenliste
Machen Sie alle in angegebenen Knoten Knotenliste als Kandidaten-RPs und ändern Sie den Status von
alle anderen Knoten sollen keine Kandidaten-RPs sein. Beachten Sie, dass alle Knoten Kandidaten-RPs sind
standardmäßig. Derzeit dient der Knoten mit der höchsten Knoten-ID als RP für alle
Multicast-Gruppen. Diese Methode sollte aufgerufen werden, bevor eine Quelle mit dem Senden beginnt
Pakete an die Gruppe oder ein beliebiger Empfänger tritt der Gruppe bei.
$ctrmcastcomp get_rp Knoten Gruppe
Gibt den RP für die Gruppe aus der Sicht des Knotens zurück Knoten für die Multicast-Gruppe mit
Adresse Gruppen-Adr. Beachten Sie, dass verschiedene Knoten unterschiedliche RPs für die Gruppe sehen können
wenn das Netzwerk partitioniert ist, da sich die Knoten in verschiedenen Partitionen befinden können.
DM OBJEKTE
DM Objects implementieren Densemode-Multicast im DVMRP-Stil, bei dem Eltern-Kind-Listen verwendet werden, um
Reduzieren Sie die Anzahl von Verbindungen, über die anfängliche Datenpakete rundgesendet werden. Es gibt keine
objektspezifische Methoden oder Zustandsvariablen.
Konfiguration Parameter
PruneTimeout
Zeitüberschreitungswert für den Bereinigungsstatus bei Knoten.
BESCHNEIDEN/GESICHT/TIMER OBJEKTE
Die Prune/Iface/Timer-Objekte werden verwendet, um den Prune-Timer für detailliertes DM zu implementieren. Dort
sind keine objektspezifischen Methoden oder Zustandsvariablen.
Konfiguration Parameter
Timeout
Zeitüberschreitungswert für den Bereinigungsstatus bei Knoten.
LÖSCHEN/GESICHT/TIMER OBJEKTE
Die Deletion/Iface/Timer-Objekte werden verwendet, um den Interface-Löschtimer zu implementieren, der
sind für die korrekte Funktion an Knoten erforderlich, die Teil von LANs sind. Wenn ein Knoten über ein LAN verfügt
als eingehende Schnittstelle für Pakete von einer bestimmten Quelle und hat keine
Downstream-Mitglieder sendet es eine Bereinigungsnachricht an das LAN. Jeder Knoten, der über das LAN verfügt
als eingehende Schnittstelle für dieselbe Quelle und hat Downstream-Mitglieder beim Hören des
prune-Nachricht, die im LAN gesendet wird. sendet eine Beitrittsnachricht an das LAN. Wenn der Knoten, der
als Weiterleitung für das LAN agiert hört die Bereinigungsnachricht vom LAN, aber nicht
Entfernen Sie sofort das LAN als ausgehende Schnittstelle. Stattdessen startet es eine Schnittstelle
Löschtimer für die ausgehende Schnittstelle. Der Forwarder entfernt das LAN als seine
ausgehende Schnittstelle nur, wenn sie keine Join-Nachrichten aus dem LAN empfängt, bevor sie
Löschtimer läuft ab. Es gibt keine objektspezifischen Methoden oder Zustandsvariablen.
Konfiguration Parameter
Timeout
Timeout-Wert für den Timer zum Löschen der Schnittstelle.
GRAFTRTX/TIMER OBJEKTE
Die GraftRtx/Timer-Objekte werden verwendet, um den Transplantat-Neuübertragungszeitgeber an Knoten zu implementieren.
Dies soll die Zuverlässigkeit von Transplantaten sicherstellen, die von einem Knoten stromaufwärts gesendet werden.
Konfiguration Parameter
Timeout
Timeout-Wert für den Zeitgeber für die Transplantat-Neuübertragung.
AGENT OBJEKTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, um mit der Veröffentlichung auf dem neuesten Stand zu sein.]
$agent port
Geben Sie den Port auf Transportebene des Agenten zurück. Ports werden verwendet, um Agenten zu identifizieren
innerhalb eines Knotens.
$agent Zieladresse
Geben Sie die Adresse des Zielknotens zurück, mit dem dieser Agent verbunden ist.
$agent Ziel-Port
Geben Sie den Port am Zielknoten zurück, mit dem dieser Agent verbunden ist.
$agent Attach-Quelle tippe
Installieren Sie eine Datenquelle vom Typ tippe in diesem Agenten. tippe ist einer von FTP oder
platzend[???]. Informationen zur Konfiguration finden Sie in den entsprechenden Objektmethoden
Parameter. Gibt ein Handle für das Quellobjekt zurück.
$agent Attach-Verkehr Verkehrsobjekt
Anfügen Verkehrsobjekt zu diesem Agenten Verkehrsobjekt ist eine Instanz von Traffic/Expoo,
Verkehr/Pareto oder Verkehr/Spur. Traffic/Expoo generiert Traffic basierend auf einem
Exponentielle Ein/Aus-Verteilung. Traffic/Pareto generiert Traffic basierend auf a
Pareto Ein/Aus-Verteilung. Traffic/Trace generiert Datenverkehr aus einer Trace-Datei.
Die entsprechenden Konfigurationsparameter für jedes der oben genannten Objekte finden Sie in
den Abschnitt VERKEHRSMETHODEN.
$agent connect Adr port
Verbinden Sie diesen Agenten mit dem durch die Adresse identifizierten Agenten Adr und Hafen Hafen. Dieses
bewirkt, dass von diesem Agenten übertragene Pakete die Adresse und den Port enthalten
angegeben, damit solche Pakete an den vorgesehenen Agenten weitergeleitet werden. Die beiden Agenten
muss kompatibel sein (z. B. ein tcp-source/tcp-sink-Paar im Gegensatz zu einem cbr/tcp-sink
Paar). Andernfalls sind die Ergebnisse der Simulation unvorhersehbar.
Konfiguration Parameter
dst_ Adresse des Ziels, mit dem der Agent verbunden ist. Derzeit 32 Bit
wobei die höheren 24 Bit die Zielknoten-ID und die unteren 8 Bit sind
die Portnummer.
Es gibt keine spezifischen Zustandsvariablen für die generische Agentenklasse.
NULL OBJEKTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, um mit der Veröffentlichung auf dem neuesten Stand zu sein.] Null
Objekte sind eine Unterklasse von Agentenobjekten, die eine Datenverkehrssenke implementieren. Sie erben alles
der generischen Agentenobjektfunktionalität. Es gibt keine Methoden, Konfigurationsparameter
oder Zustandsvariablen, die für dieses Objekt spezifisch sind.
VERLUSTMONITOR OBJEKTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, ob er mit der Veröffentlichung auf dem neuesten Stand ist.] LossMonitor
-Objekte sind eine Unterklasse von Agentenobjekten, die eine Datenverkehrssenke implementieren, die auch
einige Statistiken über die empfangenen Daten, z. B. Anzahl der empfangenen Bytes, Anzahl der Pakete
verloren usw. Sie erben die gesamte Funktionalität des generischen Agentenobjekts.
$verlustmonitor klar
Setzt die erwartete Sequenznummer auf -1 zurück.
Konfiguration Parameter
Es gibt keine spezifischen Konfigurationsparameter für dieses Objekt.
Staat Variablen
nverloren_ Anzahl verlorener Pakete.
npkts_ Anzahl der empfangenen Pakete.
Bytes_ Anzahl der empfangenen Bytes.
lastPktTime_
Zeitpunkt, zu dem das letzte Paket empfangen wurde.
erwartet_
Die erwartete Sequenznummer des nächsten Pakets.
TCP OBJEKTE
TCP-Objekte sind eine Unterklasse von Agentenobjekten, die den BSD-Tahoe-TCP-Transport implementieren
Protokoll wie in [7] beschrieben. Sie erben alle generischen Agentenfunktionen.
Um TCP-Parameter zu verfolgen, markieren Sie jeden Parameter mit ``$tcp trace window_'' und senden Sie dann die
Ausgabe in eine Trace-Datei mit ``$tcp attach [open trace.tr w]''.
TCP-Segmente können mit den Befehlen advance und advanaceby gesendet werden. Wenn alle Daten gesendet wurden,
die done-Methode wird aufgerufen (die in OTcl überschrieben werden kann).
$TCP vorantreiben n
Senden Sie bis zu den n-ten Paketen.
$TCP vorweg n
Senden Sie n weitere Pakete.
$TCP erledigt
Funktional aufgerufen, wenn alle Pakete (angegeben durch advance/advanceby/maxpkts_) haben
wurde gesendet. Kann pro Objekt überschrieben werden.
Konfiguration Parameter
Fenster_
Die obere Grenze des angekündigten Fensters für die TCP-Verbindung (in
Pakete).
maxcwnd_
Die obere Grenze des Überlastungsfensters für die TCP-Verbindung. Einstellen
Null zu ignorieren. (Dies ist die Standardeinstellung.) Gemessen in Paketen.
FensterInit_
Die anfängliche Größe des Überlastungsfensters beim langsamen Start. (in Paketen).
wnd_init_option_
Der Algorithmus zur Bestimmung der Anfangsgröße des Staus
Fenster. Auf 1 setzen für einen statischen Algorithmus mit dem Wert in FensterInit_.
Auf 2 setzen für einen dynamischen Algorithmus mit einer Funktion von Paketgröße_.
syn_ Auf true setzen, um den anfänglichen SYN/ACK-Austausch in unidirektionalem TCP zu modellieren. Einstellen
false als Standard.
Verzögerung_Wachstum_
Auf true setzen, um das anfängliche Überlastungsfenster bis nach einem Paket zu verzögern
wurde gesendet und bestätigt. Standardmäßig auf false gesetzt.
FensterOption_
Der zum Verwalten des Überlastungsfensters in linearer Phase zu verwendende Algorithmus.
Der Standardalgorithmus ist 1 (Standard). Andere experimentelle Algorithmen
sind im Quellcode dokumentiert.
FensterThresh_
Verstärkungskonstante zum exponentiellen Mittelungsfilter, der zur Berechnung verwendet wird Mark (sehen
unter). Zur Untersuchung verschiedener Window-Increase-Algorithmen.
oben_
Der Bereich (in Sekunden) einer einheitlichen Zufallsvariablen, die verwendet wird, um jede zu verzögern
Ausgabepaket. Die Idee ist, zufällige Verzögerungen an der Quelle in der Reihenfolge einzufügen
Phaseneffekte zu vermeiden, wenn gewünscht [4]. Dies wurde nur umgesetzt
für die Tahoe ("tcp")-Version von tcp, nicht für tcp-reno. Das ist nicht
soll ein realistisches Modell des CPU-Verarbeitungs-Overheads sein.
ecn_ Auf "true" setzen, um zusätzlich zum Paket eine explizite Überlastungsbenachrichtigung zu verwenden
fällt auf Signalstau. Dies ermöglicht eine schnelle erneute Übertragung nach einem Quench()
aufgrund eines ECN (Explicit Congestion Notification)-Bits.
Paketgröße_
Die Größe in Byte, die für alle Pakete von dieser Quelle verwendet werden soll.
tcpip_base_hdr_size_
Die Größe des Basis-TCP/IP-Headers in Byte.
tcpTick_
Die TCP-Taktgranularität zum Messen von Roundtrip-Zeiten. Beachten Sie, dass es
standardmäßig auf den nicht standardmäßigen Wert von 100 ms eingestellt. In Sekunden gemessen.
Fehlerbehebung_
Auf true setzen, um einen Fehler zu entfernen, wenn mehrere schnelle erneute Übertragungen zulässig sind
Pakete, die in einem einzigen Datenfenster verworfen werden.
maxburst_
Zum Ignorieren auf Null setzen. Andernfalls wird die maximale Anzahl von Paketen, die die
Quelle kann als Antwort auf eine einzelne eingehende ACK senden.
langsamer_start_neustart_
Boolesch; auf 1 setzen, um langsam zu starten, nachdem die Verbindung inaktiv geworden ist. Auf von
default.
srtt_init_
Anfangswert für die geglättete Roundtrip-Zeitschätzung. Standard ist 0
Sekunden.
t_rttvar_
Anfangswert für die Varianz in der Roundtrip-Zeit. Standard ist 3 Sekunden.
rtxcur_init_
Anfangswert für den Neusendewert. Standard ist 6 Sekunden.
T_SRTT_BITS
Gewichtungsexponent zur Aktualisierung der geglätteten Umlaufzeit t_srtt_.
Der Standardwert ist 3, für eine Gewichtung von 1/2^T_SRTT_BITS oder 1/8.
T_RTTVAR_BITS
Exponent der Gewichtung für die Aktualisierung der Varianz in der Umlaufzeit, t_rttvar_.
Der Standardwert ist 2, für eine Gewichtung von 1/2^T_RTTVAR_BITS oder 1/4.
rttvar_exp_
Exponent des Vielfachen der mittleren Abweichung bei der Berechnung des Stroms
Wert t_rtxcur_ erneut übertragen. Der Standardwert ist 2, für ein Vielfaches von 2^rttvar_exp_
oder 4.
definiert Konstante
MWS Die maximale Fenstergröße in Paketen für eine TCP-Verbindung. MWS ermittelt die
Größe eines Arrays in tcp-sink.cc. Der Standardwert für MWS ist 1024 Pakete. Zum
Tahoe TCP, der "Fenster"-Parameter, der die vom Empfänger angekündigten
Fenster, sollte kleiner als MWS-1 sein. Für Reno TCP ist der Parameter "Fenster"
sollte kleiner als (MWS-1)/2 sein.
Staat Variablen
Dupacks_
Anzahl der doppelten Bestätigungen, die seit der Bestätigung neuer Daten aufgetreten sind.
sequenznummer_ Höchste Sequenznummer für Daten von der Datenquelle zu TCP.
t_seqnr_
Aktuelle Sendesequenznummer.
ack_ Höchste Bestätigung vom Empfänger gesehen.
cwnd_ Aktueller Wert des Staufensters (in Paketen).
Mark_ Aktueller Wert einer tiefpassgefilterten Version des Staufensters. Zum
Untersuchungen verschiedener Window-Increase-Algorithmen.
ssthresh_
Aktueller Wert der Slow-Start-Schwelle (in Paketen).
rtt_ Schätzung der Hin- und Rückfahrt. In Sekunden (ausgedrückt in Vielfachen von tcpTick_).
srtt_ Geglättete Rundreisezeitschätzung. In Sekunden (in Vielfachen von tcpTick_/8).
rttvar_
Schätzung der mittleren Abweichung der Round-Trip-Zeit.
t_rtxcur_
Aktueller Rücksendewert. In Sekunden.
Backoff_
Exponentielle Backoff-Konstante für die Umlaufzeit.
TCP/RENO OBJEKTE
TCP/Reno-Objekte sind eine Unterklasse von TCP-Objekten, die den Reno-TCP-Transport implementieren
Protokoll wie in [7] beschrieben. Es gibt keine Methoden, Konfigurationsparameter oder Status
Variablen, die für dieses Objekt spezifisch sind.
TCP/NEWRENN OBJEKTE
TCP/Newreno-Objekte sind eine Unterklasse von TCP-Objekten, die eine modifizierte Version des
BSD Reno TCP-Transportprotokoll.
Es gibt keine objektspezifischen Methoden oder Zustandsvariablen.
Konfiguration Parameter
newreno_changes_
Auf Null setzen für das in [7] beschriebene Standard-NewReno. Auf 1 setzen für
zusätzliche NewReno-Algorithmen, wie in [10] vorgeschlagen; dazu gehört die
Schätzung des ssthresh-Parameters beim Slow-Start.
TCP/VEGAS OBJEKTE
Dieser Abschnitt der Manpage wurde noch nicht geschrieben.
TCP/SACK1 OBJEKTE
TCP/Sack1-Objekte sind eine Unterklasse von TCP-Objekten, die den BSD Reno TCP-Transport implementieren
Protokoll mit Selective Acknowledgement Extensions wie in [7] beschrieben.
Sie erben die gesamte TCP-Objektfunktionalität. Es gibt keine Methoden, Konfiguration
objektspezifische Parameter oder Zustandsvariablen.
TCP/FACK OBJEKTE
TCP/Fack-Objekte sind eine Unterklasse von TCP-Objekten, die den BSD Reno TCP-Transport implementieren
Protokoll mit Forward Acknowledgement Congestion Control.
Sie erben die gesamte TCP-Objektfunktionalität. Es gibt keine Methoden oder Zustandsvariablen
spezifisch für dieses Objekt.
Konfiguration Parameter
ss-div4
Überdämpfungsalgorithmus. Dividiert ssthresh durch 4 (statt 2), wenn Stau . ist
innerhalb von 1/2 RTT des langsamen Starts erkannt. (1=Aktivieren, 0=Deaktivieren)
runterfahren
Rampdown-Datenglättungsalgorithmus. Reduziert eher langsam das Staufenster
als sofort zu halbieren. (1=Aktivieren, 0=Deaktivieren)
TCP/FULLTCP OBJEKTE
Dieser Abschnitt wurde noch nicht zur Manpage hinzugefügt. Die Umsetzung und die
Konfigurationsparameter sind in [11] beschrieben.
TCPSINK OBJEKTE
TCPSink-Objekte sind eine Unterklasse von Agentenobjekten, die einen Empfänger für TCP-Pakete implementieren.
Der Simulator implementiert nur "unidirektionale" TCP-Verbindungen, bei denen die TCP-Quelle Daten sendet
Pakete und die TCP-Senke sendet ACK-Pakete. TCPSink-Objekte erben alle generischen
Agentenfunktionalität. Es gibt keine spezifischen Methoden oder Zustandsvariablen für TCPSink
Objekt.
Konfiguration Parameter
Paketgröße_
Die Größe in Byte, die für alle Bestätigungspakete verwendet werden soll.
maxSackBlocks_
Die maximale Anzahl von Datenblöcken, die in einem SACK quittiert werden können
Möglichkeit. Für einen Empfänger, der auch die Zeitstempeloption [RFC 1323] verwendet,
die in RFC 2018 angegebene SACK-Option bietet Platz für drei SACK-Blöcke.
Dies wird nur von der Unterklasse TCPSink/Sack1 verwendet. Dieser Wert darf nicht sein
innerhalb eines bestimmten TCPSink-Objekts erhöht, nachdem dieses Objekt
zugeteilt. (Sobald ein TCPSink-Objekt zugewiesen wurde, wird der Wert dieses
Parameter kann verringert, aber nicht erhöht werden).
TCPSINK/DELACK OBJEKTE
DelAck-Objekte sind eine Unterklasse von TCPSink, die einen verzögerten ACK-Empfänger für TCP implementieren
Pakete. Sie erben die gesamte TCPSink-Objektfunktionalität. Es gibt keine Methoden oder
Zustandsvariablen, die für das DelAck-Objekt spezifisch sind.
Konfiguration Parameter
Intervall_
Die Zeit, die vergehen soll, bevor eine Bestätigung für ein einzelnes . generiert wird
Paket. Wenn vor Ablauf dieser Zeit ein weiteres Paket ankommt, generieren Sie ein
Bestätigung sofort.
TCPSINK/SACK1 OBJEKTE
TCPSink/Sack1-Objekte sind eine Unterklasse von TCPSink, die einen SACK-Empfänger für TCP implementieren
Pakete. Sie erben die gesamte TCPSink-Objektfunktionalität. Es gibt keine Methoden,
objektspezifische Konfigurationsparameter oder Zustandsvariablen.
TCPSINK/SACK1/DELACK OBJEKTE
TCPSink/Sack1/DelAck-Objekte sind eine Unterklasse von TCPSink/Sack1, die einen verzögerten SACK implementieren
Empfänger für TCP-Pakete. Sie erben die gesamte TCPSink/Sack1-Objektfunktionalität.
Es gibt keine objektspezifischen Methoden oder Zustandsvariablen.
Konfiguration Parameter
Intervall_
Die Zeit, die vergehen soll, bevor eine Bestätigung für ein einzelnes . generiert wird
Paket. Wenn vor Ablauf dieser Zeit ein weiteres Paket ankommt, generieren Sie ein
Bestätigung sofort.
SRM OBJEKTE
SRM-Objekte sind eine Unterklasse von Agentenobjekten, die das zuverlässige SRM-Multicast implementieren
Transportprotokoll. Sie erben alle generischen Agentenfunktionen.
$srm Traffic-Quelle Quelle
Verbinden Sie eine Verkehrsquelle, z. B. Anwendung/Verkehr/CBR, mit dem SRM-Agenten.
$srm Anfang
Treten Sie der Multicast-Gruppe bei, starten Sie den SRM-Agenten und die zugehörige Verkehrsquelle.
$srm löschen
Stoppen Sie den SRM-Agenten, löschen Sie seinen gesamten Status und trennen Sie die Verkehrsquelle.
$srm Spur Trace-Datei
Schreiben Sie die vom SRM-Agenten generierten Traces in Trace-Datei. Die Spuren beinhalten
Timereinstellungen, Senden und Empfangen anfordern und reparieren usw. Zwei zugehörige Dateien
die nicht in ns eingebaut sind sind tcl/mcast/srm-debug.tcl das erlaubt genauere
Verfolgen der Verzögerungsberechnungsfunktionen, und tcl/mcast/srm-nam.tcl zur Verbesserung der Gesundheitsgerechtigkeit
markiert SRM-Steuernachrichten getrennt von Daten. Letzteres ist nützlich, um zu verbessern
Namensvisualisierung.
$srm Log Logdatei
Schreiben Sie die Wiederherstellungsstatistik bei jeder Anfrage oder Reparatur an Logdateidem „Vermischten Geschmack“. Seine
Statistiken umfassen Startzeit, Dauer, Nachrichten-ID, Gesamtzahl der Duplikate
Anfragen und Reparaturen.
$srm Distanz? Knoten
Geben Sie die Entfernungsschätzung zurück an Knoten in diesem SRM-Agenten.
$srm Entfernungen? Knoten
Gibt eine Liste von zurück Tupel der Distanzen zu allen Gruppen
Mitglieder, die diesem Knoten bekannt sind. Das Gruppenmitglied wird als Adresse identifiziert
des Remote-Agenten. Das erste Tupel ist das Token dieses Agenten. Die Liste kann sein
direkt in ein Tcl-Array geladen.
Konfiguration Parameter
Paketgröße_
Die Datenpaketgröße in Byte, die für Reparaturnachrichten verwendet wird. Die
Standardwert ist 1024.
AnfrageFunktion_
Der Algorithmus, der verwendet wird, um eine Neuübertragungsanforderung zu erzeugen, z. B. Einstellung
Timer anfordern. Der Standardwert ist SRM/Anfrage. Andere mögliche Anfrage
Funktionen sind SRM/Request/Adaptive, die vom adaptiven SRM-Code verwendet werden.
ReparaturFunktion_
Der Algorithmus, der verwendet wird, um eine Reparatur zu erzeugen, zB Reparaturzeitgeber berechnen. Die
Standardwert ist SRM/Reparatur. Weitere mögliche Anfragefunktionen sind
SRM/Reparatur/Adaptiv, wird vom adaptiven SRM-Code verwendet.
Sitzungsfunktion_
Der Algorithmus, der zum Generieren von Sitzungsnachrichten verwendet wird. Standard ist SRM/Sitzung
Sitzungsverzögerung_
Das grundlegende Intervall von Sitzungsnachrichten. Leichte zufällige Variation wird hinzugefügt
dieses Intervall, um eine globale Synchronisierung von Sitzungsnachrichten zu vermeiden. Benutzer darf
diese Variable entsprechend ihrer spezifischen Simulation anpassen möchten.
Gemessen in Sekunden; Der Standardwert ist 1.0 Sekunden.
C1_, C2_
Die Parameter, die den Anforderungstimer steuern. Einzelheiten finden Sie in [8]. Die
Standardwert ist C1_ = C2_ = 2.0.
D1_, D2_
Die Parameter, die den Reparaturtimer steuern. Einzelheiten finden Sie in [8]. Die
Standardwert ist D1_ = D2_ = 1.0.
AnfrageBackoffLimit_
Die maximale Anzahl exponentieller Backoffs. Der Standardwert ist 5.
Staat Variablen
Statistik_ Ein Array mit mehreren Statistiken, die vom adaptiven SRM-Agenten benötigt werden.
Darunter: doppelte Anfragen und Reparaturen im aktuellen Anfrage-/Reparaturzeitraum,
durchschnittliche Anzahl doppelter Anfragen und Reparaturen, Anfrage- und Reparaturverzögerung
im aktuellen Anforderungs-/Reparaturzeitraum, durchschnittliche Anforderung und Reparaturverzögerung.
SRM/Adaptiv OBJEKTE
SRM/Adaptive Objekte sind eine Unterklasse der SRM-Objekte, die das adaptive SRM implementieren
zuverlässiges Multicast-Transportprotokoll. Sie erben alle SRM-Objektfunktionalitäten.
Staat Variablen Weitere Informationen finden Sie im SRM-Papier von Sally et al. ([11]).
pabstand_
Diese Variable wird verwendet, um die von der Fernbedienung bereitgestellte Entfernungsschätzung zu übergeben
Agent in einer Anfrage- oder Reparaturnachricht.
D1_, D2_
Dasselbe wie in SRM-Agenten, außer dass sie initialisiert werden auf
log10(Gruppengröße) beim Generieren der ersten Reparatur.
MinC1_, MaxC1_, MinC2_, MaxC2_
Die minimalen/maximalen Werte von C1_ und C2_. Standardanfangswerte sind
definiert in [8]. Diese Werte definieren den Dynamikbereich von C1_ und C2_.
MinD1_, MaxD1_, MinD2_, MaxD2_
Die minimalen/maximalen Werte von D1_ und D2_. Standardanfangswerte sind
definiert in [8]. Diese Werte definieren den Dynamikbereich von D1_ und D2_.
AveDups
Höhere Grenze für durchschnittliche Duplikate.
AveVerzögerung
Höhere Grenze für durchschnittliche Verzögerung.
eps AveDups - dups bestimmt die untere Grenze der Anzahl der Duplikate, wenn
Wir sollten die Parameter anpassen, um die Verzögerung zu verringern.
Anmeldeformular OBJEKTE
Anwendungsobjekte generieren Daten zum Senden von Transport-Agents.
fTP Anmeldeformular OBJEKTE
Anwendungs-/FTP-Objekte erzeugen Massendaten, die von einem TCP-Objekt gesendet werden sollen.
$ftp Anfang
Veranlasst FTP, Pakete auf unbestimmte Zeit zu produzieren.
$ftp produziert n
Veranlasst das FTP-Objekt zu produzieren n Pakete sofort.
$ftp halt
Veranlasst das angehängte TCP-Objekt, das Senden von Daten zu beenden.
$ftp anhängen Agent
Hängt ein Anwendungs-/FTP-Objekt an Agent.
$ftp mehr produzieren zählen
Veranlasst das Application/FTP-Objekt zu produzieren zählen mehr Pakete.
Konfiguration Parameter
maxpkts
Die maximale Anzahl der generierten Pakete.
TELNET Anmeldeformular OBJEKTE
Anwendungs-/Telnet-Objekte erzeugen einzelne Pakete mit Zwischenankunftszeiten wie folgt.
If Intervall_ ungleich Null ist, werden die Zwischenankunftszeiten exponentiell gewählt
Verteilung mit Durchschnitt Intervall_. Wenn Intervall_ Null ist, dann sind die Zwischenankunftszeiten
mit der Telnet-Distribution "tcplib" ausgewählt.
$telnet Anfang
Veranlasst das Application/Telnet-Objekt, mit der Erzeugung von Paketen zu beginnen.
$telnet halt
Bewirkt, dass das Application/Telnet-Objekt keine Pakete mehr produziert.
$telnet anhängen Agent
Hängt ein Anwendungs-/Telnet-Objekt an Agent.
Konfiguration Parameter
Intervall_
Die durchschnittliche Zwischenankunftszeit in Sekunden für Pakete, die von der
Anwendung/Telnet-Objekt.
DER VERKEHR OBJEKTE
Verkehrsobjekte erstellen Daten, die ein Transportprotokoll senden soll. Ein Verkehrsobjekt wird erstellt
durch Instanziieren eines Objekts der Klasse Application/Traffic/tippe woher tippe eines von
Exponentiell, Pareto, CBR, Trace.
EXPONENTIELL DER VERKEHR OBJEKTE
Anwendungs-/Verkehrs-/Exponentialobjekte erzeugen Ein-/Aus-Datenverkehr. Während "Ein"-Zeiten,
Pakete werden mit einer konstanten Burst-Rate erzeugt. In "Aus"-Zeiten ist kein Verkehr
erzeugt. Burst- und Leerlaufzeiten werden exponentiellen Verteilungen entnommen.
Konfiguration Parameter
Paketgröße_
Die Paketgröße in Byte.
Burst_Zeit_
Burst-Dauer in Sekunden.
Wartezeit_
Leerlaufzeit in Sekunden.
Rate_ Spitzenrate in Bits pro Sekunde.
PARETO DER VERKEHR OBJEKTE
Anwendungs-/Traffic-/Pareto-Objekte generieren On/Off-Traffic mit Burst- und Leerlaufzeiten
aus Pareto-Verteilungen entnommen.
Konfiguration Parameter
Paketgröße_
Die Paketgröße in Byte.
Burst_Zeit_
Durchschnittliche Pünktlichkeit in Sekunden.
Wartezeit_
Durchschnittliche Ausschaltzeit in Sekunden.
Rate_ Spitzenrate in Bits pro Sekunde.
gestalten_ Parameter der Pareto-Form.
CBR (KONSTANTE BIT BEWERTUNG) DER VERKEHR OBJEKTE
Anwendungs-/Verkehrs-/CBR-Objekte erzeugen Pakete mit einer konstanten Rate. Dither kann hinzugefügt werden
zu den Zwischenankunftszeiten, indem Sie das Flag "zufällig" aktivieren.
Konfiguration Parameter
Rate_ Spitzenrate in Bits pro Sekunde.
Paketgröße_
Die Paketgröße in Byte.
zufällig_
Flag, das Dithering ein- und ausschaltet (Standard ist aus).
maxpkts_
Maximale Anzahl zu sendender Pakete.
SPUR DER VERKEHR OBJEKTE
Application/Traffic/Trace-Objekte werden verwendet, um Datenverkehr aus einer Trace-Datei zu generieren.
$spur Attach-Tracefile tfile
Hängen Sie das Tracefile-Objekt an tfile zu dieser Spur. Das Tracefile-Objekt spezifiziert
die Trace-Datei, aus der die Verkehrsdaten gelesen werden sollen (siehe TRACEFILE-OBJEKTE
Sektion). Mehrere Anwendungs-/Verkehrs-/Trace-Objekte können an dasselbe angehängt werden
Tracefile-Objekt. Für jeden wird ein zufälliger Startplatz innerhalb des Tracefiles gewählt
Anwendung/Verkehr/Trace-Objekt.
Für dieses Objekt gibt es keine Konfigurationsparameter.
TRACEDATEI OBJEKTE
Tracefile-Objekte werden verwendet, um die Trace-Datei anzugeben, die zum Generieren verwendet werden soll
(siehe Abschnitt VERKEHR/SPUROBJEKTE). $tracefile ist eine Instanz des Tracefile
Objekt.
$tracefile Dateinamen Trace-Eingang
Legen Sie den Dateinamen fest, aus dem die Verkehrsverfolgungsdaten gelesen werden sollen Trace-Eingabe.
Für dieses Objekt gibt es keine Konfigurationsparameter. Eine Trace-Datei besteht aus beliebigen
Anzahl von Datensätzen mit fester Länge. Jeder Datensatz besteht aus 2 32-Bit-Feldern. Der erste
gibt das Intervall in Mikrosekunden an, bis das nächste Paket generiert wird. Der Zweite
gibt die Länge des nächsten Pakets in Bytes an.
SPUR UND ÜBERWACHUNG METHODEN
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, um mit der Veröffentlichung auf dem neuesten Stand zu sein.] Trace
-Objekte werden verwendet, um Erfassungsprotokolle auf Ereignisebene in der Regel in einer Ausgabedatei zu generieren.
In diesem Abschnitt bezieht sich $ns auf ein Simulator-Objekt, $agent auf einen Agenten
Objekt.
$ns Erstelle-Spur tippe Datei-ID node1 node2 [Möglichkeit]
Erstellen Sie ein Trace-Objekt vom Typ tippe und hänge das Dateihandle an Datei-ID dazu
Überwachen Sie die Warteschlangen zwischen den Knoten node1 und Knoten2. tippe kann einer von Enque, Deque,
Tropfen. Enque überwacht die Ankunft von Paketen in einer Warteschlange. Deque überwacht Paketabgang
an einer Warteschlange. Drop überwacht Paketverluste in einer Warteschlange. Datei-ID muss ein Datei-Handle sein
zurückgegeben von der Tcl XNUMXh geöffnet Befehl und es muss zum Schreiben geöffnet worden sein. Wenn
zu erhalten nicht angegeben ist, weist der Befehl das erstellte Trace-Objekt an,
ns-Spuren erzeugen. Wenn zu erhalten """nam""" ist, erzeugt das neue Objekt Namensspuren.
Gibt ein Handle für das Trace-Objekt zurück.
$ns Drop-Spur node1 node2 Spur
Entfernen Sie das Trace-Objekt, das an die Verknüpfung zwischen den Knoten angehängt ist node1 und node2 mit Spur
als Objekthandle.
$ns Trace-Warteschlange node1 node2 Datei-ID
Aktivieren Sie Enque-, Deque- und Drop-Tracing auf der Verbindung zwischen node1 und Knoten2.
$ns Nametrace-Warteschlange node1 node2 Datei-ID
Gleiche Funktion wie $ns Trace-Warteschlange, außer dass es Namensspuren erzeugt.
$ns Spurensuche Datei-ID
Aktivieren Sie Enque, Deque, Drop Tracing für alle Links in der Topologie, die danach erstellt wurde
diese Methode wird aufgerufen. Ermöglicht auch die Verfolgung von Netzwerkdynamiken. Datei-ID sollen
ein Datei-Handle sein, das von der Tcl . zurückgegeben wird XNUMXh geöffnet Befehl und es muss geöffnet worden sein für
Schreiben.
$ns nametrace-all Datei-ID
Gleiche Funktion wie $ns Spurensuche, außer dass es alle äquivalenten Spuren in nam . erzeugt
Format. Außerdem rufen Sie diesen Befehl auf bevor der Simulator beginnt zu laufen wird
Generieren von Farbkonfigurationen (falls vorhanden) und Topologieinformationen, die von nam . benötigt werden
(Knoten, Links, Warteschlangen). Ein Beispiel finden Sie unter ns-2/tcl/ex/nam-example.tcl.
$ns nametrace-config Datei-ID
Weisen Sie eine Datei zum Speichern von Namenskonfigurationsinformationen zu, z. B. Knoten/Link/Agenten und
einige Simulator-bezogene Spuren wie Anmerkungen. Wenn du nicht nachverfolgen willst
jedes Objekt. Rufen Sie diese Funktion auf und verwenden Sie dann $ns Nametrace-Warteschlange, rtModell Spur,
usw., um Spuren einzeln einzufügen. Beachten Sie, dass Sie dieselbe Datei für verwenden sollten
individuelle Traces und Namenskonfiguration. Ein Beispiel dafür gibt es unter
ns-2/tcl/ex/nam-separate-trace.tcl.
$ns Monitor-Warteschlange node1 node2
Warteschlangenlänge der Verbindung zwischen Knoten festlegen node1 und node2 verfolgt werden.
Gibt das QueueMonitor-Objekt zurück, das abgefragt werden kann, um die durchschnittliche Warteschlangengröße usw.
[siehe Abschnitt QueueMonitor-Objekte]
$ns Spülspur
Spülen Sie die mit allen Trace-Objekten verbundenen Ausgabekanäle.
$ Link Spurendynamik ns Datei-ID [Möglichkeit]
Verfolgen Sie die Dynamik dieses Links und schreiben Sie die Ausgabe an Datei-ID Dateihandle. ns is
eine Instanz des Simulator- oder MultiSim-Objekts, die erstellt wurde, um die
Simulation.
$ns Farbe id Name
Erstellen Sie einen Farbindex, der die Zahl verknüpft id zum Farbnamen Name. Alle Farben
erstellt bevor der Simulator läuft, wird in die Namens-Trace-Datei geschrieben, wenn
da ist etwas.
$ns Trace-Anmerkung Schnur
Schreibt eine Anmerkung in die ns- und nam-Trace-Datei, falls vorhanden. Die Saite sollte
in doppelte Anführungszeichen eingeschlossen werden, um es zu einem einzelnen Argument zu machen.
Trace_annotate Schnur
Eine andere Version von $ns Trace-Anmerkung, die eine globale Funktion ist und nicht
verlangen, dass der Anrufer ns kennt.
$ns Duplex-Link-Op $node1 $node2 $op $args
Führen Sie eine bestimmte Operation aus $op auf dem angegebenen Duplex-Link ($node1, $node2). Die
Folgende zwei Operationen können verwendet werden:
orient - Geben Sie die Namensausrichtung der Duplexverbindung an. Werte können sein
links, rechts, oben, unten, ihre Mischung kombiniert mit '-' (zB,
links unten) und eine Zahl, die den Winkel zwischen den
Link und die horizontale Linie.
queuePos - Konstruiert eine Warteschlange des Simplex-Links ($node1,
$node2) in nam, und geben Sie den Winkel zwischen den
horizontale Linie und die Linie, entlang der die Pakete in der Warteschlange
wird Angezeigt werden.
$ns Add-Agent-Trace Agent Name [Datei-ID]
Schreiben Sie eine Name-Trace-Zeile, die einen Trace-Agenten für . erstellt Agent wenn interpretiert
nach nam. Der Name des Trace-Agenten lautet Name. Dieser Name Trace Agent wird verwendet, um zu zeigen
die Position von Agent und kann verwendet werden, um Namensspuren von zugeordneten Variablen zu schreiben
mit dem Agenten. Standardmäßig werden Traces in die von . zugewiesene Datei geschrieben
nametrace-all. Datei-ID kann verwendet werden, um Traces in eine andere Datei zu schreiben.
$agent Tracevar Name
Label OTcl-Variable Name of $agent verfolgt werden. Dann immer dann, wenn die Variable Name
Wert ändert, wird eine nam-trace-Zeile in die nam-trace-Datei geschrieben, falls vorhanden.
Beachten Sie, dass Name muss mit dem echten OTcl-Namen der Variablen übereinstimmen.
$ns delete-agent-trace Agent
Schreiben Sie eine Name-Trace-Zeile, die den zugehörigen Nam-Trace löscht Agent wann
interpretiert mit Namen.
$agent var-trace hinzufügen Name Wert [Art]
Schreiben Sie eine Name-Trace-Zeile, die einen Variablen-Trace mit Namen erstellt Name und Wert
Wert, wenn interpretiert von nam. tippe gibt den Typ der Variablen an, zB is
es eine Liste, ein Array oder eine einfache Variable. Derzeit wird nur einfache Variable unterstützt,
wofür tippe = 'v'.
Die folgenden 2 Funktionen sollten aufgerufen werden nachdem Der Simulator beginnt zu laufen. Das kann sein
fertig mit $ns at.
$agent var-trace löschen Name
Schreiben Sie eine Name-Trace-Zeile, die den Variablen-Trace löscht Name wenn interpretiert von
Nam.
$agent Update-Var-Trace Name Wert [Art]
Schreiben Sie eine Name-Trace-Zeile, die den Wert der verfolgten Variablen ändert Name wann
interpretiert mit Namen. nicht wie $agent Tracevar, die oben genannten 3 Funktionen bieten 'manuell'
Variablenverfolgung, bei der die Variablenverfolgung durch Platzierung erfolgt $agent update-var-
Spur im OTcl-Code, während Tracevar generiert automatisch Namensspuren, wenn die
Die verfolgte Variable ändert den Wert.
Das Tracefile-Format ist abwärtskompatibel mit den Ausgabedateien in der ns-Version 1
Simulator, damit ns-1-Post-Processing-Skripte weiterhin verwendet werden können. Aufzeichnungen von verfolgen
Traffic für Linkobjekte mit Enque, Deque oder Drop Tracing hat folgende Form:
woher
:= [hd+-r] h=hop d=drop +=enque -=deque r=receive
:= Simulationszeit in Sekunden
:= erste Knotenadresse des Hop/Queuing-Links
:= zweite Knotenadresse des Hop/Queuing-Links
:=
:= tcp|telnet|cbr|ack usw.
:= Paketgröße in Byte
:= [CP] C=Stau, P=Priorität
:= Flow-Identifier-Feld wie für IPv6 definiert
:= Transportadresse (src=node,sport=agent)
:= Transportadresse (dst=node,dport=agent)
:= Paketsequenznummer
:= eindeutige Kennung für jedes neue Paket
Nur diejenigen Agenten, die an einer Sequenzierung interessiert sind, werden Sequenznummern generieren
und daher kann dieses Feld für Pakete, die von einigen Agenten erzeugt werden, nicht nützlich sein.
Für Links, die RED-Gateways verwenden, gibt es zusätzliche Trace-Records wie folgt:
woher
:= [Qap] Q=queue size, a=average queue size,
p=Paketverlustwahrscheinlichkeit
:= Simulationszeit in Sekunden
:= Wert
Trace-Datensätze für Link-Dynamik haben die Form:
woher
:= [v]
:= Simulationszeit in Sekunden
:= [Verlinkung | Link-Down]
:= erste Knotenadresse des Links
:= zweite Knotenadresse des Links
INTEGRATOR Objekte
Integratorobjekte unterstützen die ungefähre Berechnung stetiger Integrale mit
diskrete Summen. Die laufende Summe (Integral) wird berechnet als: sum_ += [lasty_ * (x - lastx_)]
wobei (x, y) das letzte eingegebene Element ist und (lastx_, lasty_) das Element vor
das addierte sich zur Summe. lastx_ und lasty_ werden aktualisiert, wenn neue Elemente hinzugefügt werden. Die
Der erste Abtastpunkt ist standardmäßig auf (0,0) eingestellt und kann durch Ändern der Werte von geändert werden
(letztex_,letzte_).
$integrator neuer Punkt x y
Addiere den Punkt (x,y) zur Summe. Beachten Sie, dass es keinen Sinn macht, wenn x kleiner ist
als lastx_.
Es gibt keine spezifischen Konfigurationsparameter für dieses Objekt.
Staat Variablen
letztex_ x-Koordinate des letzten Abtastpunktes.
zuletzt_ y-Koordinate des letzten Abtastpunktes.
Summe_ Laufende Summe (dh das Integral) der Abtastpunkte.
PROBEN Objekte
Samples Objects unterstützen die Berechnung von Mittelwert- und Varianzstatistiken für ein gegebenes
Sample.
$proben bedeuten
Gibt den Mittelwert der Stichprobe zurück.
$proben Unterschied
Gibt die Varianz der Stichprobe zurück.
$proben Cnt
Gibt eine Anzahl der berücksichtigten Abtastpunkte zurück.
$proben zurückstellen
Setzen Sie das Samples-Objekt zurück, um einen neuen Satz von Samples zu überwachen.
Es gibt keine spezifischen Konfigurationsparameter oder Zustandsvariablen für dieses Objekt.
EINGEBAUTE
[HINWEIS: Dieser Abschnitt wurde nicht überprüft, ob er mit der Veröffentlichung auf dem neuesten Stand ist.] Weil
ÜKl ist eine vollwertige Programmiersprache, es ist einfach, eine High-Level-Simulation zu erstellen
Konstrukte aus den ns-Primitiven. Mehrere Bibliotheksroutinen wurden auf diese Weise erstellt,
und werden als Methoden der Simulator-Klasse in den ns-Interpreter eingebettet. Hindurch
dieser Abschnitt $ns repräsentiert ein Simulator-Objekt.
$ns create-Verbindung Quellentyp Quellenknoten Zieltyp Zielknoten Klasse
Erstellen Sie einen Quellagenten des Typs Quellentyp am Knoten Quellenknoten und verbinde es mit a
Zielagent des Typs Zieltyp am Knoten dstNode. Verbinden Sie auch das Ziel
Agent an den Quellagenten. Die Verkehrsklasse beider Agenten ist auf . eingestellt Klasse. Dieses
Methode gibt den Quellagenten zurück.
BEISPIEL
set ns [neuer Simulator]
#
# Erstellen Sie zwei Knoten
#
setze n0 [$ns Knoten]
setze n1 [$ns Knoten]
#
# Erstellen Sie einen Trace und ordnen Sie alle Trace-Ereignisse der
# Links, die anschließend erstellt wurden, um auf "out.tr" abgelegt zu werden
#
setze f [open out.tr w]
$ns Trace-all $f
#
# Verbinden Sie die beiden Knoten mit einem 1.5-Mb-Link mit einer Übertragung
# Verzögerung von 10 ms bei Verwendung von FIFO-Drop-Tail-Warteschlangen
#
$ns Duplex-Link $n0 $n1 1.5Mb 10ms DropTail
#
# Richten Sie BSD Tahoe TCP-Verbindungen in entgegengesetzte Richtungen ein.
#
set tcp_src1 [neuer Agent/TCP]
set tcp_snk1 [neuer Agent/TCPSink]
set tcp_src2 [neuer Agent/TCP]
set tcp_snk2 [neuer Agent/TCPSink]
$ns Attach-Agent $n0 $tcp_src1
$ns Attach-Agent $n1 $tcp_snk1
$ns Attach-Agent $n1 $tcp_src2
$ns Attach-Agent $n0 $tcp_snk2
$ns verbinden $tcp_src1 $tcp_snk1
$ns verbinden $tcp_src2 $tcp_snk2
#
# Erstellen Sie FTP-Quellen an jedem Knoten
#
set ftp1 [$tcp_src1 FTP-Quelle anhängen]
set ftp2 [$tcp_src2 FTP-Quelle anhängen]
#
# Starten Sie den ersten FTP-Server zur Zeit 0 und
# der zweite ftp ist 1 Sekunde später gestaffelt
#
$ns bei 0.0 "$ftp1 start"
$ns bei 1.0 "$ftp2 start"
#
# die Simulation 10 simulierte Sekunden lang ausführen
#
$ns bei 10.0 "Ausgang 0"
$ns ausgeführt
FEHLERBEHEBUNG
So aktivieren Sie das Debugging beim Erstellen von ns from source:
% ./configure --enable-debug
% machen
Weitere Informationen zum ns-Debugging finden Sie unterhttp://www-mash.cs.berkeley.edu/ns/ns-
debugging.html>.
UNTERSCHIEDE AB NS-1
Im Allgemeinen wurden komplexere Objekte in ns-1 in einfachere Komponenten zerlegt für
mehr Flexibilität und Kombinierbarkeit. Details zu den Unterschieden zwischen ns-1 und ns-2 können
zu finden unterhttp://www-mash.cs.berkeley.edu/ns/ns.html>.
HISTORIEN
Die Arbeiten am LBL Network Simulator begannen im Mai 1990 mit Modifikationen an S. Keshavs
([E-Mail geschützt] ) REAL-Netzwerksimulator, den er für seinen Ph.D. arbeiten bei
UC Berkeley. Im Sommer 1991 wurde die Simulationsbeschreibungssprache überarbeitet und
später wurde das NEST-Threads-Modell durch ein ereignisgesteuertes Framework und ein effizientes
Planer. Unter anderem hat Sugih Jamin ([E-Mail geschützt] ) hat das beigesteuert
kalenderwarteschlangenbasierter Planungscode für diese Version des Programms, die als . bekannt war
TCPIM. Im Dezember 1994 portierte McCanne tcpsim nach C++ und ersetzte das yacc-basierte
Simulationsbeschreibungssprache mit Tcl-Schnittstelle und hinzugefügtem vorläufigem Multicast
Unterstützung. Auch zu dieser Zeit änderte sich der Name von TCPIM zu den allgemeineren ns.
Während der gesamten Zeit hat Floyd Änderungen am TCP-Code vorgenommen und zusätzliche Quellen hinzugefügt
Modelle für ihre Untersuchungen zu RED-Gateways, Ressourcenmanagement, klassenbasiertem Queuing,
explizite Staumeldung und Verkehrsphaseneffekte. Viele der Papiere
Diskussionen zu diesen Themen sind über die URL verfügbar http://www-nrg.ee.lbl.gov/.
Verwenden Sie ns online mit den onworks.net-Diensten