ns - Online in de Cloud

Dit is de opdracht ns die kan worden uitgevoerd in de gratis hostingprovider OnWorks met behulp van een van onze verschillende gratis online werkstations, zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


ns - netwerksimulator (versie 2)

KORTE INHOUD


ns [ filet [ arg arg ... ] ]

PRODUCTBESCHRIJVING


ns is een event-driven netwerksimulator. Er is een uitbreidbare simulatie-engine geïmplementeerd.
in C++ dat gebruikmaakt van de Object Tool Command Language van MIT, OTcl (een objectgeoriënteerde versie van
Tcl) als de commando- en configuratie-interface. Een eerdere versie van de simulator, d.w.z.
ns versie 1 gebruikte de Tool Command Language, Tcl als configuratietaal. De
De huidige versie ondersteunt nog steeds simulatiescripts die in Tcl zijn geschreven en bedoeld zijn voor de ns-versie.
1 simulator.

Deze handleiding documenteert enkele interfaces voor ns. Voor meer complete informatie
Voor documentatie, zie "ns Notes and Documentation" [13], beschikbaar in de distributie
en op het web.

De simulator wordt aangeroepen via de ns tolk, een uitbreiding van de vanille otclsh
command shell. Een simulatie wordt gedefinieerd door een OTcl-script. De scripts gebruiken de Simulator.
Klasse als belangrijkste interface voor de simulatie-engine. Gebruikmakend van de methoden die zijn gedefinieerd in
in deze klasse wordt een netwerktopologie gedefinieerd, worden verkeersbronnen en -putten geconfigureerd, de
simulatie wordt aangeroepen en de statistieken worden verzameld. Door voort te bouwen op een volledig
functionele taal, willekeurige acties kunnen in de configuratie worden geprogrammeerd.

De eerste stap in de simulatie is het verkrijgen van een instantie van de Simulator-klasse.
Instanties van objecten in klassen worden in ns gemaakt en vernietigd met behulp van de nieuwe en verwijderen
methoden. Een instantie van het Simulator-object wordt bijvoorbeeld als volgt gemaakt:
opdracht:

bijv. set ns [nieuwe Simulator]

Een netwerktopologie wordt gerealiseerd met behulp van drie primitieve bouwstenen: knooppunten, verbindingen en
agenten. De Simulator-klasse heeft methoden om elk van deze gebouwen te maken/configureren.
blokken. Knooppunten worden gemaakt met de knooppunt Simulatormethode die automatisch een
uniek adres voor elk knooppunt. Er worden verbindingen tussen knooppunten gemaakt om een ​​netwerktopologie te vormen.
met de simplex-link en duplex-link methoden die unidirectionele en bidirectionele
links. Agenten zijn de objecten die de simulatie actief aansturen. Agenten
kan worden beschouwd als de processen en/of transportentiteiten die op knooppunten Dat kan wel zo zijn
eindhosts of routers. Verkeersbronnen en -putten, dynamische routeringsmodules en de verschillende
Protocolmodules zijn allemaal voorbeelden van agenten. Agenten worden gemaakt door objecten te instantiëren.
in de subklasse van klasse Agent, d.w.z. Agent/type waarbij het type de aard van de
agent. Een TCP-agent wordt bijvoorbeeld aangemaakt met de opdracht:

set tcp [nieuwe Agent/TCP]

Zodra de agenten zijn aangemaakt, worden ze gekoppeld aan knooppunten met de attach-agent Simulator
methode. Aan elke agent wordt automatisch een poortnummer toegewezen dat uniek is voor alle agenten op een
gegeven knooppunt (analoog aan een TCP- of UDP-poort). Sommige typen agents kunnen bronnen hebben
aan hen gekoppeld, terwijl anderen hun eigen gegevens kunnen genereren. U kunt bijvoorbeeld
``ftp''- en ``telnet''-bronnen naar ``tcp''-agenten, maar ``constante bitsnelheid''-agenten genereren
hun eigen gegevens. Applicaties worden aan agenten gekoppeld met behulp van de bijlage-app methode.

Aan elk object zijn een aantal configuratieparameters gekoppeld die kunnen worden gewijzigd.
Configuratieparameters zijn instantievariabelen van het object. Deze parameters zijn
geïnitialiseerd tijdens het opstarten naar standaardwaarden die eenvoudig van het exemplaar kunnen worden gelezen
variabelen van het object. Bijvoorbeeld, $tcp reeks venster_ geeft de standaardvenstergrootte terug
voor het TCP-object. De standaardwaarden voor dat object kunnen expliciet worden overschreven door
eenvoudige toewijzing, hetzij vóórdat een simulatie begint, hetzij dynamisch, terwijl de simulatie plaatsvindt
is in uitvoering. Zo kan bijvoorbeeld de venstergrootte voor een bepaalde TCP-sessie worden gewijzigd.
op de volgende manier.

$tcp set window_ 25

De standaardwaarden voor de configuratieparameters van alle klasseobjecten worden vervolgens
gemaakt kan ook worden gewijzigd door een eenvoudige toewijzing. We kunnen bijvoorbeeld zeggen

Agent/TCP-setvenster_ 30

om alle toekomstige TCP-agentcreaties standaard op een venstergrootte van 30 te zetten.

Gebeurtenissen worden gepland in ns met behulp van de at Simulatormethode waarmee OTcl-procedures kunnen worden
aangeroepen op willekeurige momenten in de simulatietijd. Deze OTcl-callbacks bieden een flexibele
simulatiemechanisme - deze kunnen worden gebruikt om bronnen te starten of te stoppen, statistieken te dumpen,
linkfouten instantiëren, de netwerktopologie opnieuw configureren, enz. De simulatie is
gestart via de lopen methode en gaat door totdat er geen gebeurtenissen meer te verwerken zijn.
Op dit moment is de oorspronkelijke aanroeping van de lopen commando retourneert en het Tcl-script kan
afsluiten of een andere simulatierun starten na een mogelijke herconfiguratie. Als alternatief kan de
simulatie kan voortijdig worden gestopt door het aanroepen van de stoppen opdracht of door het script te verlaten
met de standaard van Tcl afrit opdracht.

Pakketten worden via de kortste route van een bron naar een bestemming doorgestuurd, waarbij
de afstandsmetriek is de som van de kosten van de verbindingen die van de bron naar de
bestemming. De kosten van een link zijn standaard 1; de afstandsmetriek is simpelweg de hop
tellen in dit geval. De kosten van een link kunnen worden gewijzigd met de kosten Simulatormethode. A
Het statische topologiemodel wordt gebruikt als standaard in ns waarin de toestanden van knooppunten/verbindingen
niet veranderen tijdens een simulatie. Netwerkdynamiek kan worden gespecificeerd met behulp van
methoden beschreven in de sectie NETWERKDYNAMIEKMETHODEN. Statische unicast-routering is ook de
standaard waarbij de routes vooraf over de gehele topologie worden berekend, eenmalig
De simulatie starten. Methoden voor het inschakelen en configureren van dynamische unicast en multicast.
routering worden beschreven in de UNICAST ROUTING METHODEN en MULTICAST ROUTING METHODEN
respectievelijk secties.

NS COMMANDO'S


In dit gedeelte worden de basisopdrachten beschreven om de bouwstenen van de simulatie te maken
(d.w.z. de node-, link- en agentobjecten) en om de simulatie uit te voeren.

De eerste stap bij het uitvoeren van een simulatie zoals eerder vermeld is het verkrijgen van een exemplaar van de
Simulatorklasse met methoden om de simulatie te configureren en uit te voeren. In dit
sectie wordt de objectvariabelenaam $ns gebruikt om een ​​Simulator-object aan te duiden.

$ns knooppunt
Maak een nieuw node-object en retourneer er een handle aan.

$ns lijst met alle knooppunten
Retourneert een lijst met alle knooppuntobjecten die in de simulatie zijn gedefinieerd.

$ns simplex-link node1 node2 bw vertraging type dan:
Creëer een nieuwe unidirectionele link tussen node1 en node2 met bandbreedte bw in stukjes
per seconde en linkpropagatievertraging vertraging in seconden. node1 en node2 moet hebben
al aangemaakt met de knooppunt methode. bw en vertraging standaard ingesteld op 1.5 Mbits/sec
en respectievelijk 100 ms. De standaardinstellingen kunnen worden gewijzigd door de relevante
configuratieparameters van het DelayLink-object (zie sectie DELAYLINK-OBJECTEN).
node1 en node2 moet al zijn aangemaakt met de knooppunt methode. De wachtrij
discipline van de link wordt gespecificeerd door type, dat kan zijn DropTail, VRAAG, SFQ, DRR,
ROOD, CBQ, or CBQ/WRR. Een DropTail-link is een eenvoudige FIFO-wachtrij die de laatste
pakket in de wachtrij wanneer de wachtrij overloopt. Een FQ-link is voor Fair Queuing (voor
details zie [?]). Een SFQ-link is voor Stochastic Fair Queuing (voor details zie [?]).
Een DRR-link is bedoeld voor het plannen van tekorten in de vorm van een round robin-schema (zie [9] voor details). Een RED-link
is een wachtrij met willekeurige vroege drop (zie [2] voor details). Een CBQ-link is voor klassegebaseerde
wachtrijen met behulp van een pakket-voor-pakket round-robin scheduler (voor details zie [3]).
De CBQ/WRR-koppeling is bedoeld voor klassengebaseerde wachtrijen met een gewogen round robin-scheduler. Als
Multicast-routing wordt gebruikt. Links met interfacelabels zijn vereist. Dergelijke links zijn
gemaakt door de variabele Simulator NumberInterfaces_ op 1 in te stellen. Alle volgende
Aangemaakte links krijgen interfacelabels. Om het aanmaken van interfaces uit te schakelen, hoeft u alleen maar
NumberInterfaces_ opnieuw instellen op 0 (dit is de standaardinstelling).

$ns duplex-link node1 node2 bw vertraging type dan:
Maak een nieuwe bidirectionele link tussen node1 en node2 met bandbreedte bw in stukjes
per seconde en linkpropagatievertraging vertraging in seconden. node1 en node2 moet hebben
al aangemaakt met de knooppunt methode. bw en vertraging standaard ingesteld op 1.5 Mbits/sec
en respectievelijk 100 ms. De standaardinstellingen kunnen worden gewijzigd door de relevante
configuratieparameters van het DelayLink-object (zie sectie DELAYLINK-OBJECTEN).
De wachtrijdiscipline van de link wordt gespecificeerd door type, dat kan zijn DropTail, FQ
SFQ, DRR, ROOD, CBQ, or CBQ/WRR. Een DropTail-link is een eenvoudige FIFO-wachtrij die
het laatste pakket in de wachtrij wanneer de wachtrij overloopt. Een FQ-link is voor Fair
Wachtrijen (voor details zie [?]). Een SFQ-link is voor Stochastic Fair Queuing (voor
details zie [?]). Een DRR-link is bedoeld voor het plannen van een tekortronde (voor details
zie [9]). Een RED-link is een wachtrij met willekeurige vroege drop (voor details zie [2]). Een CBQ
De link is bedoeld voor op klassen gebaseerde wachtrijen met behulp van een pakket-voor-pakket round-robin-scheduler (voor
details zie [3]). Een CBQ/WRR-link is bedoeld voor klassengebaseerde wachtrijen met een gewogen ronde
Robin Scheduler. Als multicast-routing wordt gebruikt, worden links met interfacelabels gebruikt.
vereist. Dergelijke links worden gemaakt door de variabele NumberInterfaces_ van de simulator in te stellen
naar 1. Alle links die hierna worden aangemaakt, hebben interfacelabels. Om uit te schakelen
Bij het aanmaken van interfaces stelt u NumberInterfaces_ eenvoudigweg opnieuw in op 0 (dit is de standaardinstelling).

$ns link node1 node2
Retourneert een referentie naar de link die knooppunten verbindt node1 en knooppunt 2. Dit is handig
voor het instellen van linkconfiguratieparameters en het aanroepen van traceringsmethoden (zie LINK
OBJECTEN sectie).

$ns wachtrijlimiet node1 node2 wachtrijlimiet
Stel het maximale aantal pakketten in dat in de wachtrij op de link in de richting kan worden geplaatst
van node1 naar node2 naar wachtrijlimiet. De link tussen node1 en node2 zou moeten zijn:
al aangemaakt.

$ns vertraging node1 node2 tijdsinterval
Stel de latentie van de link in de richting van in node1 naar node2 naar tijdsinterval
seconden. De link tussen node1 en node2 zou al gemaakt moeten zijn.

$ns kosten node1 node2 kosten-waarde
Wijs de kosten toe kosten-waarde naar de verbinding tussen knooppunten node1 en knooppunt 2. De kosten
De aan links toegewezen verbindingen worden gebruikt in unicast-routeberekeningen. Alle links zijn standaard ingesteld op
een kostprijs van 1.

$ns multilink knooppuntenlijst bw vertraging type dan:
Verbindt de knooppunten die zijn opgegeven in knooppuntenlijst door een netwerk van duplexverbindingen (om een
broadcast LAN) met bandbreedte bw in bits per seconde en linkpropagatievertraging
vertraging in seconden. knooppuntenlijst is een lijst met node-objecthandles die al
is gemaakt met de knooppunt methode. bw en vertraging standaard ingesteld op 1.5 Mbits/sec en 100
ms respectievelijk. De standaardinstellingen kunnen worden gewijzigd door de relevante
configuratieparameters van het DelayLink-object (zie sectie DELAYLINK-OBJECTEN).
De wachtrijdiscipline van de link wordt gespecificeerd door type, dat kan zijn DropTail, FQ
SFQ, DRR, ROOD, CBQ, or CBQ/WRR. Een DropTail-link is een eenvoudige FIFO-wachtrij die
het laatste pakket in de wachtrij wanneer de wachtrij overloopt. Een FQ-link is voor Fair
Wachtrijen (voor details zie [?]). Een SFQ-link is voor Stochastic Fair Queuing (voor
details zie [?]). Een DRR-link is bedoeld voor het plannen van een tekortronde (voor details
zie [9]). Een RED-link is een wachtrij met willekeurige vroege drop (voor details zie [2]). Een CBQ
De link is bedoeld voor op klassen gebaseerde wachtrijen met behulp van een pakket-voor-pakket round-robin-scheduler (voor
details zie [3]). Een CBQ/WRR-link is bedoeld voor klassengebaseerde wachtrijen met een gewogen ronde
robin-planner.

$ns multi-link-of-interfaces knooppuntenlijst bw vertraging type dan:
Verbindt de knooppunten die zijn opgegeven in knooppuntenlijst door een netwerk van duplexverbindingen met interfaces
(om een ​​broadcast-LAN ​​te simuleren) met bandbreedte bw in bits per seconde en link
voortplantingsvertraging vertraging in seconden. knooppuntenlijst is een lijst met node-objecthandles
die al zijn aangemaakt met de knooppunt methode. bw en vertraging standaard op 1.5
Mbits/sec en 100 ms respectievelijk. De standaardinstellingen kunnen worden gewijzigd door de
relevante configuratieparameters van het DelayLink-object (zie DELAYLINK-OBJECTEN
sectie). De wachtrijdiscipline van de link wordt gespecificeerd door type, dat kan zijn
DropTail, FQ SFQ, DRR, ROOD, CBQ, or CBQ/WRR. Een DropTail-link is een eenvoudige FIFO
wachtrij die het laatste pakket in de wachtrij laat vallen wanneer de wachtrij overloopt. Een FQ-link
is voor Fair Queuing (voor details zie [?]). Een SFQ-link is voor Stochastic Fair
Wachtrijen (voor details zie [?]). Een DRR-link is bedoeld voor planning met een tekort op basis van round robin.
(voor details zie [9]). Een RODE link is een wachtrij met willekeurige vroege drop (voor details zie
[2]). Een CBQ-link is bedoeld voor op klassen gebaseerde wachtrijen met behulp van een pakket-voor-pakket-round-robin
scheduler (voor details zie [3]). Een CBQ/WRR-koppeling is bedoeld voor op klassen gebaseerde wachtrijen met een
gewogen round robin-planner.

nieuwe Tussenpersoon/ type dan:
Maak een agent van het type type dan: wat kan zijn:
Null - Verkeersgootsteen
LossMonitor - Verkeersgootsteen die verliesparameters bewaakt
TCP - BSD Tahoe TCP
TCP/FullTcp - Volledige Reno TCP met tweerichtingsverbindingen [11]
TCP/Reno - BSD Reno TCP
TCP/Newreno - een aangepaste versie van BSD Reno TCP
TCP/Vegas - Vegas TCP (vanuit U. Arizona via USC)
TCP/Sack1 - BSD Reno TCP met selectieve ACK's
TCP/Fack - BSD Reno TCP met forward ACK's
TCPSink - standaard TCP-sink
TCPSink/DelAck - TCP-sink die vertraagde ACK's genereert
TCPSink/Sack1 - TCP-sink die selectieve ACK's genereert
TCPSink/Sack1/DelAck - vertraagde ACK TCP-sink met selectieve ACK's
UDP - UDP-transport
RTP - RTP-agent
Sessie/RTP -
RTCP - RTCP-agent
IVS/Bron -
IVS/Ontvanger -
SRM -
De methoden, configuratieparameters en de relevante statusvariabelen die hieraan gekoppeld zijn
met deze objecten worden in latere secties in detail besproken. Merk op dat sommige
Agenten zoals TCP of SRM genereren geen eigen gegevens. Dergelijke agenten hebben bronnen nodig.
eraan gekoppeld om gegevens te genereren (zie de methoden attach-source en attach-traffic in
sectie AGENTOBJECTEN).

$ns attach-agent knooppunt agent
Het agentobject koppelen agent naar knooppunt. De agent en knooppunt objecten zouden moeten hebben
al aangemaakt.

$ns losmaken-agent knooppunt agent
Het agentobject loskoppelen agent van knooppunt.

$ns verbinden src dst
Een tweerichtingsverbinding tot stand brengen tussen de agent src en de agent zomertijd Retourneren
het handvat naar src agent. Er is een helpermethode gedefinieerd om het maken van
en het koppelen van een agent aan elk van de twee knooppunten en het tot stand brengen van een tweerichtingsverbinding
ertussen. (zie INBOUW sectie).

$ns gebruiksplanner type dan:
Gebruik een gebeurtenisplanner van het type type dan: in de simulaties. type dan: is een van Lijst, Heap,
Kalender, RealTime. De lijstplanner is de standaard. Een heapplanner gebruikt een
heap voor gebeurteniswachtrijen. Een kalenderplanner gebruikt een kalenderwachtrij om de gebeurtenissen bij te houden.
van gebeurtenissen. RealTime-scheduler wordt gebruikt in de emulatiemodus wanneer de simulator
interageert met een externe factor.

$ns at tijd procedures
Schatten procedures op simulatietijdstip tijd. De procedure zou wereldwijd kunnen zijn
toegankelijke functie (proc) of een objectmethode (instproc). Deze opdracht kan zijn
wordt gebruikt om bronnen te starten en te stoppen, de simulator dynamisch opnieuw te configureren, te dumpen
statistieken met opgegeven intervallen, enz. Retourneert een gebeurtenis-id.

$ns annuleren eid
Verwijder de gebeurtenis die is opgegeven door de gebeurtenis-id eid uit de gebeurtenissenwachtrij.

$ns nu
Geef de huidige simulatietijd terug.

$ns gen-map
Loopt door de simulatietopologie en geeft een lijst van alle objecten die zijn
gemaakt en de manier waarop ze met elkaar verbonden zijn. Dit is handig om te debuggen.
simulatiescripts.

ns-versie
Retourneer een string die de versie van ns identificeert die momenteel actief is. Deze methode is
uitgevoerd in de globale context door de interpreter.

ns-willekeurig [ zaad ]
If zaad niet aanwezig is, retourneert een pseudo-willekeurig geheel getal tussen 0 en 2^31-1.
Anders moet u de pseudo-willekeurige getallengenerator zaaien met zaad en het zaad teruggeven
gebruikt. Indien zaad is 0, kies dan heuristisch een initieel zaad (dat varieert op
opeenvolgende aanroepen). Deze methode wordt in de globale context uitgevoerd door de
tolk.

Ns heeft andere faciliteiten voor het genereren van willekeurige getallen; zie de documentatie voor details
[13].

VOORWERP HIËRARCHIE


Een korte beschrijving van de objecthiërarchie in ns wordt in deze sectie gepresenteerd. Deze
De beschrijving is niet bedoeld om volledig te zijn. Het is bedoeld om te laten zien hoe de
Methoden en configuratieparameters die aan de verschillende objecten zijn gekoppeld, worden overgeërfd.
Voor meer volledige informatie zie "ns notes & documentation" en de automatisch
gegenereerde klassebibliotheekinformatie op de ns-webpagina.

Objecten worden gekoppeld aan configuratieparameters die dynamisch kunnen worden ingesteld en
opgevraagd en statusvariabelen die kunnen worden opgevraagd (meestal alleen gewijzigd als de status
variabelen moeten opnieuw worden ingesteld voor een nieuwe simulatierun).

Configuratieparameters vertegenwoordigen simulatieparameters die gewoonlijk tijdens de
volledige simulatie (zoals de bandbreedte van een link), maar kan indien gewenst dynamisch worden gewijzigd.
Toestandsvariabelen vertegenwoordigen waarden die specifiek zijn voor een bepaald object en de status van dat object.
implementatie.

Het onderstaande diagram geeft een deel van de objecthiërarchie weer:
Simulator
multisim
Knooppunt
Link
SimpleLink
CBQLink
DummyLink
VertragingLink
Queue
DropTail
FQ
SFQ
DRR
ROOD
CBQ
CBQ/WRR
WachtrijMonitor
ED
Flowmon
Stroom
rtObject
RouteLogic
Agent
rtProto
Statisch
Sessie
DV
Direct
Null
VerliesMonitor
TCP
FullTcp
Reno
Newreno
Zak1
Fack
TCPSink
DelAck
Zak1
DelAck
UDP
RTP
RTCP
IVS
Bron
Ontvanger
SRM
Sessie
RTP [wat is het verschil met Agent/CBR/RTP]
Toepassing
FTP
Telnet
Verkeer
Expoo
Pareto
CBR
Opsporen
integrator
Stalen

Voor een volledige, automatisch gegenereerde, objecthiërarchie, zie de link "klassenhiërarchie"
(wat wijst op http://www-sop.inria.fr/rodeo/personnel/Antoine.Clerget/ns/) op de ns
webpagina's. (Met dank aan Antoine Clerget voor het onderhouden hiervan!)

Elke methode die bijvoorbeeld wordt ondersteund door een TCP agent wordt ook ondersteund door een Reno nodig heeft of
Zak1 agent. Standaardconfiguratieparameters worden ook overgenomen. Bijvoorbeeld: $tcp reeks
venster_ 20 waarbij $tcp een TCP-agent is die de standaard TCP-venstergrootte definieert voor beide TCP en
Reno voorwerpen.

VOORWERP METHODEN


In de volgende secties worden de methoden, configuratieparameters en statusvariabelen gedocumenteerd
gekoppeld aan de verschillende objecten en die welke netwerkdynamiek en unicast mogelijk maken
routing, multicast routing en trace- en monitoringondersteuning. De objectklasse is
impliciet gespecificeerd door de objectvariabelenaam in de beschrijving. Bijvoorbeeld, $tcp
impliceert de tcp-objectklasse en al haar onderliggende klassen.

NODE VOORWERPEN


[LET OP: Er is niet geverifieerd of dit gedeelte up-to-date is met de release.]

$knooppunt id
Geeft de knooppunt-id terug.

$knooppunt buren
Retourneert een lijst met aangrenzende node-objecten.

$knooppunt hechten agent
Een agent van het type koppelen agent naar dit knooppunt.

$knooppunt DETACH agent
Een agent van het type loskoppelen agent vanaf dit knooppunt.

$knooppunt agent port
Geef een handvat terug aan de agent die aan de poort is gekoppeld port op dit knooppunt. Retourneert een lege
tekenreeks als de poort niet in gebruik is.

$knooppunt opnieuw in te stellen
Reset alle agents die aan dit knooppunt zijn gekoppeld. Dit zou de status opnieuw initialiseren.
variabelen die gekoppeld zijn aan de verschillende agenten op dit knooppunt.

$knooppunt rtObject?
Retourneert een handvat naar rtObject als er op dat moment een exemplaar van het object bestaat
knooppunt. Alleen knooppunten die deelnemen aan een dynamisch unicast-routeringsprotocol zullen
dit object (zie de sectie UNICAST ROUTING METHODS en RTOBJECT OBJECTS).

$knooppunt lid worden van de groep agent groep
Voeg de agent toe die is opgegeven door de object-handle agent naar de multicast-hostgroep
geïdentificeerd door het adres groep. Dit zorgt ervoor dat het groepslidmaatschapsprotocol
Zorg ervoor dat het juiste multicastverkeer deze agent bereikt. Multicastgroep
Adres moet in het bereik 0x8000 - 0xFFFF liggen.

$knooppunt allocaddr
Retourneert het multicast-groepsadres in oplopende volgorde bij elke aanroep, beginnend bij
0x8000 en eindigend op 0xFFFF.

$knooppunt vorm vorm
Stel de vorm van het knooppunt in op "vorm". Wanneer aangeroepen voordat de simulator begint te
uitvoeren, verandert het de standaardvorm van het knooppunt in het nam trace-bestand. De standaard
De vorm van een knooppunt is "cirkel"

$knooppunt kleur kleur
Stel de kleur van het knooppunt in op kleur. Het kan op elk moment worden aangeroepen om de huidige
kleur van het knooppunt in het nam trace-bestand, indien aanwezig.

$knooppunt get-attribuut naam
Het opgegeven kenmerk ophalen naam van het knooppunt. Momenteel heeft een Node-object twee
attributen: COLOR en SHAPELet op: deze letters moeten hoofdletters zijn.

$knooppunt toevoegen-markering naam kleur vorm
Voeg een markering toe (in het nam trace-bestand) met kleur en vorm rond het knooppunt. De vorm kan
zijn """cirkel""", """zeshoek""" en """vierkant""" (hoofdlettergevoelig). Het toegevoegde teken
zal worden geïdentificeerd door naam.

$knooppunt verwijdermarkering naam
Verwijder het merkteken met naam in het gegeven knooppunt.

Er zijn geen statusvariabelen of configuratieparameters specifiek voor de knooppuntklasse.

LINK VOORWERPEN


[LET OP: Er is niet geverifieerd of dit gedeelte up-to-date is met de release.]

$ Link sporendynamiek ns bestandsID
Volg de dynamiek van deze link en schrijf de uitvoer naar bestandsID bestandshandle. ns is
een exemplaar van het Simulator- of MultiSim-object dat is gemaakt om de
simulatie (zie het gedeelte TRACE- EN MONITORINGMETHODEN voor het uitvoertraceringsformaat).

$ Link trace-callback ns cmd
Traceer alle pakketten op de link met de callback cmd. Cmd wordt voor elk spoor aangeroepen
gebeurtenis (enqueue, dequeue, drop) met de tekst die als parameters zou worden vastgelegd.
(Zie de beschrijving van het logbestand voor deze informatie.) Een demo van trace
callbacks bevindt zich in het programma tcl/ex/callback_demo.tcl in de distributie.

$ Link kleur kleur
Stel de kleur van het Link-object in. Het kan op elk moment worden aangeroepen om de huidige kleur te wijzigen.
kleur van de link in het nam trace-bestand, indien aanwezig.

$ Link get-attribuut naam
Het opgegeven kenmerk ophalen naam van de Link. Momenteel heeft een Link-object drie
attributen: COLOR, ORIENTATIONen WACHTRIJ_POS.

Momenteel mogen de volgende twee functies niet rechtstreeks worden aangeroepen. Gebruik $ns duplex-link-
op Raadpleeg de overeenkomstige sectie in deze manpagina.

$ Link oriënteren of
Stel de oriëntatie van de link in op of. Wanneer aangeroepen voordat de simulator begint te
uitvoeren, verandert de standaardoriëntatie van de link in het nam trace-bestand, als er
1. Als de oriëntatie voor een of meer links niet is gespecificeerd, gebruikt nam automatische lay-out.
De standaardoriëntatie van een Link-object is niet gespecificeerd.

$ Link wachtrijPos post
Stel de wachtrijpositie van de link in op post. Wanneer aangeroepen voordat de simulator start
om te draaien, verandert het de standaard wachtrijplaatsing van de simplex-link in nam trace
bestand, indien aanwezig. post specificeert de hoek tussen de horizontale lijn en de
lijn waarlangs de in de wachtrij geplaatste pakketten worden weergegeven.

SIMPLELINK VOORWERPEN


[LET OP: Er is niet geverifieerd of dit gedeelte up-to-date is met de release.]

$ Link kosten kosten-waarde
Merk kosten-waarde de kosten van deze link.

$ Link kosten?
Retourneer de kosten van deze link.

Zijn er configuratieparameters of statusvariabelen?

VERTRAAGDE LINK VOORWERPEN


[OPMERKING: Deze sectie is niet geverifieerd als up-to-date met de release.] De
DelayLink-objecten bepalen de hoeveelheid tijd die een pakket nodig heeft om een ​​verbinding te passeren.
Dit wordt gedefinieerd als grootte/bw + vertraging waarbij grootte de pakketgrootte is en bw de link
Bandbreedte en vertraging zijn de vertraging van de linkpropagatie. Er zijn geen methoden of statussen.
variabelen die aan dit object zijn gekoppeld.

Configuratie parameters

bandbreedte_
Linkbandbreedte in bits per seconde.

vertraging_ Vertraging van de verbinding in seconden.

Er zijn geen statusvariabelen aan dit object gekoppeld.

NETWERK DYNAMIEK METHODEN


In deze sectie worden methoden beschreven om de links en knooppunten in de topologie omhoog en omlaag te laten gaan
volgens verschillende distributies. Over het algemeen moet een dynamisch routeringsprotocol worden gebruikt.
wanneer een simulatie met netwerkdynamiek moet worden uitgevoerd. Merk op dat een statische topologie
model is de standaard in ns.

$ns rtmodel model model-parameters node1 [knooppunt2]
Maak de link tussen node1 en node2 verandering tussen op- en neergaande toestanden volgens
naar het model model. Alleen in geval node1 worden alle links gespecificeerd die op de
knooppunt zou omhoog en omlaag worden gebracht volgens de opgegeven model. model-parameters
bevat de parameters die nodig zijn voor het relevante model en moet worden opgegeven als een
lijst, d.w.z. de parameters moeten tussen accolades worden geplaatst. model kan een van zijn
Deterministisch, exponentieel, Handleiding, Spoor. Geeft een handvat terug naar een modelobject
overeenkomend met de opgegeven model.

In het deterministische model model-parameters is [starttijd] opwaartse interval down-interval
[eindtijd]. Vanaf starttijd de link is gemaakt voor opwaartse interval en
naar beneden voor down-interval naar eindtijd is bereikt. De standaardwaarden voor start-
tijd, op-interval, neer-interval zijn respectievelijk 0.5s, 2.0s, 1.0s. finish-tijd
staat standaard op het einde van de simulatie. De starttijd staat standaard op 0.5 s om
laat de berekening van het routingprotocol stilvallen.

Als het exponentiële model wordt gebruikt model-parameters is van de vorm opwaartse interval neer-
interval waarbij de verbindingstijd exponentieel verdeeld is rond het gemiddelde op-
interval en de downtime van de link is exponentieel verdeeld rond het gemiddelde
neerwaartse interval. Standaardwaarden voor opwaartse interval en down-interval zijn 10en en 1en
respectievelijk.

Als de handmatige distributie wordt gebruikt model-parameters is at op met de meeste at specificeert de
tijdstip waarop de operatie plaatsvindt op zou moeten plaatsvinden. op is een van up, naar beneden. De handleiding
distributie kan afwisselend worden gespecificeerd met behulp van de rtmodel-at beschreven methode
verderop in de sectie.

Als Trace is opgegeven als de model De link/node-dynamiek wordt uit een Tracefile gelezen.
De model-parameters argument zou in dit geval de bestandshandle van de Tracefile zijn
die de dynamische informatie bevat. Het tracefile-formaat is identiek aan het trace
output gegenereerd door de trace-dynamics link-methode (zie TRACE EN MONITORING
METHODEN SECTIE).

$ns rtmodel-verwijderen model-handvat
Verwijder het exemplaar van het routemodel dat is opgegeven door model-handvat.

$ns rtmodel-at at op node1 [knooppunt2]
Wordt gebruikt om de up- en downtijden van de verbinding tussen knooppunten te specificeren node1 en knooppunt 2.
Als maar node1 krijgt alle links die betrekking hebben op node1 zal omhoog en omlaag gebracht worden.
at is het tijdstip waarop de operatie plaatsvindt op dat kan allebei up or beneden zal zo zijn
uitgevoerd op de opgegeven link(s).

WACHTRIJ VOORWERPEN


Een wachtrijobject is een algemene klasse van objecten die in staat zijn om items vast te houden en mogelijk te markeren of
het weggooien van pakketten terwijl ze door de gesimuleerde topologie reizen.

Configuratie parameters

begrenzing_ De wachtrijgrootte in pakketten.

geblokkeerd_
Standaard staat dit op false, dit is waar als de wachtrij geblokkeerd is (niet in staat om
een pakket naar zijn downstream-buur sturen).

deblokkeren_bij_hervatten_
Standaard ingesteld op true, geeft aan dat een wachtrij zichzelf moet deblokkeren op het moment dat
het laatste verzonden pakket is verzonden (maar niet noodzakelijkerwijs
ontvangen).

DROP-STAART VOORWERPEN


Drop-tail-objecten zijn een subklasse van Queue-objecten die een eenvoudige FIFO-wachtrij implementeren.
Er zijn geen methoden die specifiek zijn voor drop-tail-objecten. De enige configuratieparameter
is drop-front_, wat, wanneer ingesteld op waar, ervoor zorgt dat de wachtrij zich gedraagt ​​als een drop-from-front
wachtrijdiscipline. Deze variabele staat standaard op false.

FQ VOORWERPEN


FQ-objecten zijn een subklasse van Queue-objecten die Fair Queuing implementeren. Er zijn geen
methoden die specifiek zijn voor FQ-objecten.

Configuratie parameters

seconden per byte_

Er zijn geen statusvariabelen aan dit object gekoppeld.

SFQ VOORWERPEN


SFQ-objecten zijn een subklasse van Queue-objecten die Stochastic Fair-queuing implementeren.
Er zijn geen methoden die specifiek zijn voor SFQ-objecten.

Configuratie parameters

maximale wachtrij_

emmers_

Er zijn geen statusvariabelen aan dit object gekoppeld.

DRR VOORWERPEN


DRR-objecten zijn een subklasse van wachtrijobjecten die deficit round robin-planning implementeren.
Deze objecten implementeren een tekort-round robin-planning tussen verschillende stromen (A
een bepaalde stroom is een stroom die pakketten heeft met dezelfde knooppunt- en poort-id OF pakketten die
hebben alleen dezelfde knooppunt-id). Ook in tegenstelling tot andere multi-wachtrijobjecten, heeft dit wachtrijobject
implementeert één gedeelde bufferruimte voor de verschillende stromen.

Configuratie parameters

emmers_
Geeft het totale aantal buckets aan dat moet worden gebruikt voor het hashen van elk van de
stroomt.

blimit_
Geeft de gedeelde buffergrootte in bytes aan.

quantum_
Geeft aan (in bytes) hoeveel elke stroom tijdens zijn beurt kan verzenden.

maskeren_ mask_, wanneer ingesteld op 1, betekent dat een bepaalde stroom bestaat uit pakketten
met dezelfde knooppunt-id (en mogelijk verschillende poort-id's), anders een stroom
bestaat uit pakketten met dezelfde knooppunt- en poort-id's.

ROOD VOORWERPEN


RED-objecten zijn een subklasse van Queue-objecten die willekeurige vroege detectie implementeren
gateways. Het object kan worden geconfigureerd om pakketten te verwijderen of te 'markeren'. Er zijn geen
methoden die specifiek zijn voor RED-objecten.

Configuratie parameters

bytes_ Instellen op "true" om ``byte-mode'' ROOD in te schakelen, waarbij de grootte van de binnenkomende
pakketten beïnvloeden de waarschijnlijkheid van het markeren (verwijderen) van pakketten.

wachtrij-in-bytes_
Stel in op "true" om de gemiddelde wachtrijgrootte in bytes te meten in plaats van
pakketten. Als u deze optie inschakelt, worden ook dorsen_ en maxthresh_ te
automatisch geschaald door gemiddelde_pktgrootte_ (zie hieronder).

dorsen_
De minimumdrempelwaarde voor de gemiddelde wachtrijgrootte in pakketten.

maxthresh_
De maximumdrempel voor de gemiddelde wachtrijgrootte in pakketten.

gemiddelde_pktgrootte_
Een ruwe schatting van de gemiddelde pakketgrootte in bytes. Wordt gebruikt bij het updaten van de
Berekende gemiddelde wachtrijgrootte na een inactieve periode.

q_gewicht_
Het wachtrijgewicht, gebruikt in het exponentieel gewogen voortschrijdend gemiddelde voor
het berekenen van de gemiddelde wachtrijgrootte.

wachten_ Stel in op 'true' om een ​​interval tussen gedropte pakketten te behouden.

linter_
Omdat de gemiddelde wachtrijgrootte varieert tussen "thresh_" en "maxthresh_",
De waarschijnlijkheid dat een pakket verloren gaat, varieert tussen 0 en "1/linterm".

setbit_
Instellen op "true" om pakketten te markeren door de congestie-indicatiebit in te stellen
pakketheaders in plaats van pakketten te laten vallen.

drop-tail_
Stel in op 'true' om drop-tail te gebruiken in plaats van random-drop of drop-from-front wanneer
De wachtrij loopt over of de gemiddelde wachtrijgrootte overschrijdt "maxthresh_". Dit is
het standaardgedrag. Voor een verdere uitleg van deze variabelen, zie
[2].

drop-rand_
Stel in op 'true' om 'random-drop' te gebruiken in plaats van 'drop-tail' of 'drop-from-front' wanneer
De wachtrij loopt over of de gemiddelde wachtrijgrootte overschrijdt "maxthresh_".

drop-front_
Stel in op 'true' om drop-from-front te gebruiken in plaats van drop-tail of random drop wanneer
De wachtrij loopt over of de gemiddelde wachtrijgrootte overschrijdt "maxthresh_".

ns1-compatibel_
Stel in op 'true' om te voorkomen dat de telling opnieuw wordt ingesteld sinds de laatste pakketdrop, na een
Het pakket wordt geforceerd verwijderd. Dit zorgt voor compatibiliteit met eerder gedrag.
van ROOD. De standaardwaarde is false.

entle_ Stel in op true om de pakketverliessnelheid langzaam te verhogen van max_p naar 1 als de
De gemiddelde wachtrijgrootte varieert van maxthresh tot tweemaal maxthresh. De standaardwaarde is
ingesteld op false, en max_p stijgt abrupt van max_p naar 1 wanneer het gemiddelde
wachtrijgrootte overschrijdt maxthresh.

Land Variabelen
Geen van de statusvariabelen van de RED-implementatie zijn toegankelijk.

CBQ VOORWERPEN


CBQ-objecten zijn een subklasse van Queue-objecten die klassegebaseerde wachtrijen implementeren.

$cbq invoegen $klasse
Verkeersklasse invoegen klasse in de link-sharingstructuur die aan de link is gekoppeld
object cbq.

$cbq binden $cbqklasse $id1 [$id2]
Oorzaak pakketten die stroom-id bevatten $id1 (of die in het bereik $id1 naar $id2
inclusief) om te worden gekoppeld aan de verkeersklasse $cbqklasse.

$cbq algoritme $alg
Selecteer het interne CBQ-algoritme. $alg kan worden ingesteld op een van de volgende opties: "alleen voorouder",
"topniveau" of "formeel".

CBQ/WRR VOORWERPEN


CBQ/WRR-objecten zijn een subklasse van CBQ-objecten die gewogen round-robin implementeren
Planning tussen klassen met hetzelfde prioriteitsniveau. CBQ-objecten daarentegen implementeren
pakket-voor-pakket round-robin-planning tussen klassen met hetzelfde prioriteitsniveau.

Configuratie parameters

maxpkt_
De maximale grootte van een pakket in bytes. Dit wordt alleen gebruikt door CBQ/WRR-objecten.
bij het berekenen van maximale bandbreedtetoewijzingen voor de gewogen round-robin
planner.

CBQCLASS VOORWERPEN


CBQClass-objecten implementeren de verkeersklassen die aan CBQ-objecten zijn gekoppeld.

$cbqklasse setparameters ouder oklenen toewijzen maxidle prio niveau extradelay
Stelt diverse configuratieparameters in voor de CBQ-verkeersklasse (zie hieronder).

$cbqklasse ouder [$cbqcl|geen]
specificeer de ouder van deze klasse in de link-sharing-tree. De ouder kan zijn
opgegeven als ``none'' om aan te geven dat deze klasse een root is.

$cbqklasse nieuwlot $a
Wijzig de linktoewijzing van deze klasse naar het opgegeven bedrag (in het bereik van 0.0 tot
1.0). Houd er rekening mee dat alleen de opgegeven klasse wordt beïnvloed.

$cbqklasse installatiewachtrij $q
Installeer een Queue-object in de samengestelde CBQ- of CBQ/WRR-linkstructuur. Wanneer een CBQ
object aanvankelijk wordt aangemaakt, bevat het geen interne wachtrij (alleen een pakket
classificator en scheduler).

Configuratie parameters

oklenen_
is een boolean die aangeeft dat de klasse bandbreedte mag lenen van zijn
ouder.

toewijzen is het maximale deel van de linkbandbreedte die aan de klasse is toegewezen, uitgedrukt
als een reëel getal tussen 0.0 en 1.0.

maxidle_
is de maximale tijd die een klasse nodig heeft om zijn pakketten te hebben
in de wachtrij geplaatst voordat ze mogen worden doorgestuurd

prioriteit_
is het prioriteitsniveau van de klasse ten opzichte van andere klassen. Deze waarde kan
variëren van 0 tot 10, en er kunnen meerdere klassen met dezelfde prioriteit bestaan.
Prioriteit 0 is de hoogste prioriteit.

niveau_ is het niveau van deze klasse in de link-sharing-boom. Bladknooppunten in de boom
worden beschouwd als niveau 1; hun ouders als niveau 2, etc.

extradelay_
de vertraging die een vertraagde klasse ervaart, met het opgegeven aantal verhogen
seconden.

WACHTRIJBEWAKER Objecten


QueueMonitor-objecten worden gebruikt om een ​​reeks pakket- en byte-aankomsten, -vertrek- en -verwerkingen te bewaken.
droptellers. Het bevat ook ondersteuning voor geaggregeerde statistieken, zoals gemiddelde wachtrijen.
grootte, enz. [zie TRACE- EN MONITORINGMETHODEN].

$wachtrijmonitor opnieuw in te stellen
reset alle cumulatieve tellers die hieronder worden beschreven (aankomsten, vertrekken en afzetten)
op nul. Reset ook de integratoren en de delay sampler, indien gedefinieerd.

$wachtrijmonitor set-delay-samples delaySamp_
Het Samples-object instellen delaySamp_ om statistieken over wachtrijvertragingen vast te leggen.
delaySamp_ is een handvat naar een Samples-object, d.w.z. het Samples-object zou moeten hebben
al aangemaakt.

$wachtrijmonitor get-bytes-integrator
Retourneert een Integrator-object dat kan worden gebruikt om de integraal van de wachtrij te vinden
grootte in bytes. (zie sectie Integrator Objecten).

$wachtrijmonitor krijg-pkts-integrator
Retourneert een Integrator-object dat kan worden gebruikt om de integraal van de wachtrij te vinden
grootte in pakketten. (zie het gedeelte Integrator-objecten).

$wachtrijmonitor get-delay-samples
Retourneert een Samples-object delaySamp_ om statistieken over wachtrijvertragingen vast te leggen (zie
Sectie Voorbeelden Objecten).

Er zijn geen configuratieparameters specifiek voor dit object.

Land Variabelen

grootte_ Directe wachtrijgrootte in bytes.

pkts_ Directe wachtrijgrootte in pakketten.

parrivalen_
Totaal aantal ontvangen pakketten.

barrières_
Totaal aantal bytes in de binnengekomen pakketten.

vertrekken_
Totaal aantal pakketten dat is vertrokken (niet verwijderd).

vertrekken_
Totaal aantal bytes in de pakketten die zijn vertrokken (niet
laten vallen).

pdruppels_
Totaal aantal verloren pakketten.

bdrops_
Totaal aantal verwijderde bytes.

bytesInt_
Integratorobject dat de integraal van de wachtrijgrootte in bytes berekent.
De som_ variabele van dit object heeft de lopende som (integraal) van de wachtrij
grootte in bytes.

pktsInt_
Integratorobject dat de integraal van de wachtrijgrootte in pakketten berekent.
De som_ variabele van dit object heeft de lopende som (integraal) van de wachtrij
grootte in pakketten.

RIJBEWAKER/ED Objecten


Dit afgeleide object is in staat om onderscheid te maken tussen normale pakketverliezen en vroeg druppels.
Sommige wachtrijen maken onderscheid tussen gewone drops (bijvoorbeeld drops vanwege bufferuitputting) en andere
drops (bijvoorbeeld willekeurige drops in RODE wachtrijen). Onder bepaalde omstandigheden is het nuttig om
onderscheid maken tussen deze twee soorten druppels.

Land Variabelen

epdrops_
Het aantal pakketten dat ``vroeg'' is verwijderd.

ebdrops_
Het aantal bytes waaruit pakketten bestaan ​​die ``vroeg'' zijn verwijderd

Opmerking: omdat deze klasse een subklasse is van QueueMonitor, hebben objecten van dit type ook
velden zoals pdrops_ en bdrops_. Deze velden beschrijven de totaal aantal gevallen
pakketten en bytes, inclusief zowel vroege als niet-vroege drops.

WACHTRIJMONITOR/ED/FLOWMON Objecten


Deze objecten kunnen worden gebruikt in plaats van een conventioneel QueueMonitor-object als u dat wenst.
om naast de totale aantallen ook per-stroom aantallen en statistieken te verzamelen en
statistieken die door de basis QueueMonitor worden verstrekt.

$fmon classificeren [$cl]
Voeg (lees) de opgegeven classificator in (vanuit) het flowmonitorobject in. Dit
wordt gebruikt om inkomende pakketten in kaart te brengen aan welke stromen ze zijn gekoppeld.

$fmon storten
Dump de huidige per-flow-tellers en statistieken naar het I/O-kanaal dat is opgegeven in een
vorige bevestigingsbewerking.

$fmon stroomt
Retourneer een tekenreeks met de namen van alle stroomobjecten die door deze bekend zijn
Flowmonitor. Elk van deze objecten is van het type QueueMonitor/ED/Flow.

$fmon hechten $chan
Sluit een TCL I/O-kanaal aan op de flowmonitor. Flowstatistieken worden naar de
kanaal wanneer de dumpbewerking wordt uitgevoerd.

Configuratie parameters

inschakelen_in_
Standaard ingesteld op true, geeft aan dat de aankomststatus per stroom behouden moet blijven
door de stroommonitor. Indien ingesteld op false, wordt alleen de totale aankomst
informatie wordt bewaard.

inschakelen_uit_
Standaard ingesteld op true, geeft aan dat de vertrekstatus per stroom moet zijn
bijgehouden door de flowmonitor. Indien ingesteld op false, wordt alleen het totale vertrek geregistreerd.
informatie wordt bewaard.

inschakelen_drop_
Standaard ingesteld op true, geeft aan dat de dropstatus per flow behouden moet blijven door
de stroommonitor. Indien ingesteld op false, wordt alleen de geaggregeerde druppelinformatie weergegeven.
bewaard.

enable_edrop_
Standaard ingesteld op true, geeft aan dat de vroege dropstatus per flow moet worden
bijgehouden door de flowmonitor. Indien ingesteld op false, wordt alleen de geaggregeerde vroege daling
informatie wordt bewaard.

WACHTRIJMONITOR/ED/FLOW Objecten


Deze objecten bevatten aantallen per stroom en statistieken beheerd door een QUEUEMONITOR/ED/FLOWMON
object. Ze worden over het algemeen gemaakt in een OTcl-callbackprocedure wanneer een flowmonitor is
gegeven een pakket kan het niet worden toegewezen aan een bekende stroom. Merk op dat de classificatie van de stroommonitor
is verantwoordelijk voor het op een willekeurige manier toewijzen van pakketten aan stromen. Dus, afhankelijk van de
Afhankelijk van het type gebruikte classificator zijn mogelijk niet alle toestandsvariabelen relevant (bijvoorbeeld één kan
pakketten classificeren op basis van alleen de stroom-id, in welk geval de bron- en bestemmingsadressen
(is mogelijk niet significant).

Land Variabelen

bron_ Het bronadres van pakketten die tot deze stroom behoren.

dst_ Het bestemmingsadres van pakketten die tot deze stroom behoren.

flowid_
De stroom-id van pakketten die tot deze stroom behoren.

UNICAST ROUTING METHODEN


Een dynamisch unicast-routeringsprotocol kan worden gespecificeerd om te worden uitgevoerd op een subset van knooppunten in de
topologie. Houd er rekening mee dat een dynamisch routeringsprotocol over het algemeen moet worden gebruikt wanneer een
simulatie wordt gedaan met netwerkdynamiek.

$ns rtproto daarom knooppuntenlijst
Geeft het dynamische unicast-routeringsprotocol aan daarom op de knooppunten worden uitgevoerd
gespecificeerd door knooppuntenlijst. Op dit moment daarom kan een van de volgende zijn: Statisch, Sessie, DV. Statisch
Routing is de standaard. Sessie impliceert dat de unicast-routes over de gehele
topologie worden onmiddellijk opnieuw berekend wanneer een link omhoog of omlaag gaat. DV
houdt in dat een eenvoudig afstandsvectorrouteringsprotocol moet worden gesimuleerd. knooppunt-
lijst standaard alle knooppunten in de topologie.

$ns rekenroutes
Bereken routes tussen alle knooppunten in de topologie. Dit kan worden gebruikt als er sprake is van statische
De routering is voltooid en de routes moeten opnieuw worden berekend naarmate de status van een link verandert.
gewijzigd. Let op: Sessieroutering (zie rtproto (de bovenstaande methode) zal opnieuw berekenen
Routeert automatisch wanneer de status van een koppeling in de topologie verandert.

$ns get-routelogic
Retourneert een handvat naar een RouteLogic-object dat methoden heeft voor het opzoeken van de routetabel
enz.

ROUTELOGICA VOORWERPEN


$routelogic lookup srcid bestemd
Retourneert de id van het knooppunt dat de volgende hop is vanaf het knooppunt met id srcid aan de
knooppunt met id bestemd.

$routelogic storten knooppunt
Dump de routeringstabellen van alle knooppunten waarvan de id kleiner is dan knooppunt-ID. Node-id's zijn
worden doorgaans in oplopende volgorde aan knooppunten toegewezen, beginnend bij 0, op basis van hun volgorde van
creatie.

RTOBJECT VOORWERPEN


Elk knooppunt dat deelneemt aan een dynamisch unicast-routeringsprotocol, zal een exemplaar hebben van
rtObject (zie het gedeelte NODE OBJECTS voor de methode om een ​​handvat voor dit object te krijgen op een
een bepaald knooppunt). Houd er rekening mee dat knooppunten geen exemplaar van dit object zullen hebben als sessie
routering wordt uitgevoerd omdat er in dit geval geen gedetailleerd routeringsprotocol wordt gesimuleerd.

$rtobject stortroutes bestandsID
Dump de routingtabel naar het door u opgegeven uitvoerkanaal bestandsID. bestandsID moet een zijn
bestandshandle geretourneerd door de Tcl open commando en het moet geopend zijn geweest voor
schrijven.

$rtobject rtProto? daarom
Retourneert een handvat naar de routingprotocolagent die is opgegeven door daarom als het bestaat op
dat knooppunt. Anders wordt een lege string geretourneerd.

$rtobject volgendeHop? bestemmings-ID
Geeft de id terug van het knooppunt dat de volgende hop is naar de bestemming die is opgegeven door de
knooppunt-id, bestemmings-ID.

$rtobject rtpref? bestemmings-ID

$rtobject metrisch? bestemmings-ID

MULTICAST ROUTING METHODEN


Multicast-routing wordt ingeschakeld door de variabele Simulator EnableMcast_ op 1 in te stellen
begin van de simulatie. Merk op dat deze variabele moet worden ingesteld vóór elk knooppunt, elke link of
Agentobjecten worden in de simulatie aangemaakt. Ook moeten er koppelingen zijn gemaakt met
interfacelabels (zie simplex-link- en duplex-linkmethoden in het gedeelte NS-OPDRACHTEN).

$ns mrtproto daarom knooppuntenlijst
Geeft het multicast-routeringsprotocol aan daarom moet worden uitgevoerd op de knooppunten die zijn opgegeven door
knooppuntenlijst. Op dit moment daarom kan een van de volgende zijn: CtrMcast, DM, detailedDM, dynamicDM,
pimDM. knooppuntenlijst standaard alle knooppunten in de topologie. Retourneert een handle naar
een protocolspecifiek object met methoden en configuratieparameters die specifiek zijn voor
dat protocol. Merk op dat het CtrMcastComp-object momenteel wordt geretourneerd als CtrMcast is
gebruikt, maar er wordt een lege string geretourneerd als DM, detailedDM, dynamicDM of pimDM wordt gebruikt.

Als proto 'CtrMcast' is, wordt een gedeelde boom met Rendezvous Point (RP) als root gebouwd voor een
Multicast-groep. Het daadwerkelijk verzenden van prune-, join-berichten enz. om de status in te stellen.
op de knooppunten wordt niet gesimuleerd. Een gecentraliseerde rekenagent wordt gebruikt om te berekenen
de doorstuurbomen en stel de multicast-doorstuurstatus in, (*,G) op de relevante
knooppunten wanneer nieuwe ontvangers zich bij een groep voegen. Datapakketten van de verzenders naar een groep worden
unicast naar de RP. Methoden worden aangeboden in het CtrMcastComp-object (zie
CTRMCASTCOMP OBJECTS sectie) die door mrtproto wordt geretourneerd om over te schakelen naar bron-
specifieke bomen, kies enkele knooppunten als kandidaat-RP's enz. Wanneer een knooppunt/link op een
Als de multicast-distributieboom uitvalt, wordt de boom onmiddellijk opnieuw berekend.

Als proto 'DM' is, wordt een DVMRP-achtige dichte modus gesimuleerd. Ouder-kindlijsten worden gebruikt.
om het aantal verbindingen te verminderen waarover de datapakketten worden verzonden.
Berichten worden door knooppunten verzonden om takken uit de multicast-doorstuurboom te verwijderen
die niet leiden tot groepsleden. De time-outwaarde voor het opschonen is standaard 0.5 s.
(zie het gedeelte DM OBJECTEN om de standaardinstelling te wijzigen). Dit past zich niet aan het netwerk aan.
veranderingen. Er is momenteel ook geen ondersteuning voor een goede werking in topologieën
met LAN's.

Als proto 'detailedDM' is, is een dichte modusprotocol gebaseerd op Protocol Independent
Multicast - Dense Mode (PIM-DM) wordt gesimuleerd. Dit is momenteel de meest complete
versie van het dichte modusprotocol in de simulator en wordt aanbevolen voor gebruik over
de andere dichte modusprotocollen. Het past zich aan de netwerkdynamiek en -functies aan.
correct in topologieën met LAN's (waar LAN's worden gecreëerd met behulp van de multi-link-of-
interfacesmethode - zie NS-OPDRACHTEN). In het geval dat er meerdere potentiële
forwarders voor een LAN, het knooppunt met de hoogste id wordt gekozen als forwarder (dit
wordt gedaan via het Assert-mechanisme). De standaardwaarden voor de prune-timeout,
interface-verwijderingstime-out (gebruikt voor LAN's) en graft-hertransmissietime-out zijn
0.5s, 0.1s en 0.05s respectievelijk. (zie Prune/Iface/Timer, Deletion/Iface/Timer
en GraftRtx/Timer-objecten om respectievelijk de standaardwaarden te wijzigen en voor meer
informatie over de timers).

Als proto 'dynamicDM' is, is het DVMRP-achtige dichte modusprotocol dat zich aanpast aan het netwerk
veranderingen worden gesimuleerd. 'Poison-reverse'-informatie (d.w.z. de informatie dat een
(bepaalde naburige knoop gebruikt deze knoop om een ​​bepaald netwerk te bereiken) wordt gelezen
van de routeringstabellen van aangrenzende knooppunten om zich aan te passen aan de netwerkdynamiek
(DVMRP gebruikt zijn eigen unicast-routeringsprotocol dat deze informatie uitwisselt).
De huidige implementatie ondersteunt geen goede werking in topologieën met LAN's.
De prune-timeoutwaarde is standaard 0.5 seconden (zie het gedeelte DM-OBJECTEN om de waarde te wijzigen).
standaard).

Als proto 'pimDM' is, wordt Protocol Independent Multicast - Dense-modus gesimuleerd. In
in dit geval worden de datapakketten via alle uitgaande verbindingen uitgezonden, behalve de
inkomende link. Prune-berichten worden door knooppunten verzonden om de takken van de
multicast-doorstuurboom die niet naar groepsleden leidt. De huidige
implementatie past zich niet aan de netwerkdynamiek aan en ondersteunt geen goede
Functioneert in topologieën met LAN's. De time-outwaarde voor het opknappen is standaard 0.5 s.
(zie het gedeelte DM OBJECTEN om de standaard te wijzigen).

CTRMCASTCOMP VOORWERPEN


Er wordt een handvat naar het CtrMcastComp-object geretourneerd wanneer het protocol is opgegeven als
'CtrMcast' in mrtproto.

$ctrmcastcomp switch-treetype groepsadres
Schakel over van de gedeelde boom met wortel van Rendezvous Point naar bronspecifieke bomen voor
de groep gespecificeerd door groepsadres Houd er rekening mee dat deze methode niet kan worden gebruikt om te schakelen
van bron-specifieke bomen terug naar een gedeelde boom voor een multicastgroep.

$ctrmcastcomp set_c_rp knooppuntenlijst
Maak alle knooppunten die zijn opgegeven in knooppuntenlijst als kandidaat-RP's en de staat van verandering veranderen
Alle andere knooppunten zijn geen kandidaat-RP's. Merk op dat alle knooppunten kandidaat-RP's zijn.
standaard. Momenteel dient het knooppunt met de hoogste knooppunt-id als RP voor alle
multicastgroepen. Deze methode moet worden aangeroepen voordat een bron begint met verzenden.
pakketten naar de groep verzenden of als een ontvanger zich bij de groep aansluit.

$ctrmcastcomp ophalen_rp knooppunt groep
Retourneert de RP voor de groep zoals gezien door het knooppunt knooppunt voor de multicastgroep met
adres groepsadres Houd er rekening mee dat verschillende knooppunten verschillende RP's voor de groep kunnen zien
als het netwerk is gepartitioneerd, kunnen de knooppunten zich in verschillende partities bevinden.

DM VOORWERPEN


DM-objecten implementeren DVMRP-stijl densemode-multicast waarbij ouder-kindlijsten worden gebruikt om
het aantal verbindingen verminderen waarover initiële datapakketten worden uitgezonden. Er zijn geen
methoden of toestandsvariabelen die specifiek zijn voor dit object.

Configuratie parameters

PruneTimeout

Time-outwaarde voor de prune-status op knooppunten.

PRUNE/GEZICHT/TIMER VOORWERPEN


De Prune/Iface/Timer-objecten worden gebruikt om de prune-timer voor gedetailleerde DM te implementeren.
Er zijn geen methoden of statusvariabelen specifiek voor dit object.

Configuratie parameters

time-out

Time-outwaarde voor de prune-status op knooppunten.

VERWIJDERING/GEZICHT/TIMER VOORWERPEN


De objecten Deletion/Iface/Timer worden gebruikt om de timer voor het verwijderen van de interface te implementeren.
zijn vereist voor een correcte werking op knooppunten die deel uitmaken van LAN's. Als een knooppunt een LAN heeft
als inkomende interface voor pakketten van een bepaalde bron en het heeft geen
downstream-leden stuurt een prune-bericht naar het LAN. Elk knooppunt met het LAN
als inkomende interface voor dezelfde bron en heeft downstream-leden die de
prune-bericht verzonden op het LAN. stuurt een join-bericht naar het LAN. Wanneer het knooppunt dat
fungeert als doorstuurder voor het LAN, hoort het prune-bericht van het LAN, maar het doet het niet
het LAN onmiddellijk afsnijden als uitgaande interface. In plaats daarvan start het een interface
verwijdertimer voor de uitgaande interface. De forwarder verwijdert het LAN als zijn
uitgaande interface alleen als deze geen join-berichten van het LAN ontvangt vóór de uitgaande interface.
Verwijderingstimer verloopt. Er zijn geen methoden of statusvariabelen specifiek voor dit object.

Configuratie parameters

time-out

Time-outwaarde voor de timer voor het verwijderen van de interface.

GRAFTRTX/TIMER VOORWERPEN


De GraftRtx/Timer-objecten worden gebruikt om de graft-hertransmissietimer op knooppunten te implementeren.
Dit is om de betrouwbaarheid van transplantaten die door een knooppunt stroomopwaarts worden gestuurd, te garanderen.

Configuratie parameters

time-out

Time-outwaarde voor de graft-hertransmissietimer.

AGENT VOORWERPEN


[LET OP: Er is niet geverifieerd of dit gedeelte up-to-date is met de release.]

$agent port
Retourneer de transportpoort van de agent. Poorten worden gebruikt om agenten te identificeren.
binnen een knooppunt.

$agent dst-addr
Retourneer het adres van het bestemmingsknooppunt waarmee deze agent verbonden is.

$agent dst-poort
Geef de poort terug op het bestemmingsknooppunt waarmee deze agent verbonden is.

$agent bron koppelen type dan:
Installeer een gegevensbron van het type type dan: in deze agent. type dan: is een van FTP of
bursty[???]. Zie de corresponderende objectmethoden voor informatie over de configuratie.
parameters. Retourneert een handle naar het bronobject.

$agent koppelverkeer verkeersobject
hechten verkeersobject aan deze agent verkeersobject is een voorbeeld van Traffic/Expoo,
Traffic/Pareto of Traffic/Trace. Traffic/Expoo genereert verkeer op basis van een
Exponentiële aan/uit-verdeling. Traffic/Pareto genereert verkeer op basis van een
Pareto On/Off-distributie. Traffic/Trace genereert verkeer vanuit een tracebestand.
De relevante configuratieparameters voor elk van de bovenstaande objecten zijn te vinden in
het gedeelte VERKEERSWIJZEN.

$agent verbinden addr port
Verbind deze agent met de agent die wordt geïdentificeerd door het adres addr en poort haven. Deze
zorgt ervoor dat pakketten die door deze agent worden verzonden, het adres en de poort bevatten
aangegeven, zodat dergelijke pakketten naar de beoogde agent worden gerouteerd. De twee agenten
moet compatibel zijn (bijvoorbeeld een tcp-source/tcp-sink-paar in tegenstelling tot een cbr/tcp-sink
Anders zijn de resultaten van de simulatie onvoorspelbaar.

Configuratie parameters

dst_ Adres van de bestemming waarmee de agent verbonden is. Momenteel 32 bits.
waarbij de hogere 24 bits de bestemmingsknooppunt-ID zijn en de lagere 8 bits
het poortnummer.

Er zijn geen statusvariabelen specifiek voor de generieke agentklasse.

NULL VOORWERPEN


[OPMERKING: Deze sectie is niet geverifieerd als up-to-date met de release.] Null
objecten zijn een subklasse van agentobjecten die een verkeerssink implementeren. Ze erven alle
van de functionaliteit van het generieke agentobject. Er zijn geen methoden, configuratieparameters
of toestandsvariabelen die specifiek zijn voor dit object.

VERLIESMONITOR VOORWERPEN


[OPMERKING: Deze sectie is niet geverifieerd als up-to-date met de release.] LossMonitor
objecten zijn een subklasse van agentobjecten die een verkeersgootsteen implementeren die ook onderhoudt
enkele statistieken over de ontvangen gegevens, bijvoorbeeld het aantal ontvangen bytes en het aantal pakketten
verloren etc. Ze erven alle generieke functionaliteit van het agentobject.

$verliesmonitor duidelijk
Zet het verwachte volgnummer terug naar -1.

Configuratie parameters

Er zijn geen configuratieparameters specifiek voor dit object.

Land Variabelen

nlost_ Aantal verloren pakketten.

npkts_ Aantal ontvangen pakketten.

bytes_ Aantal ontvangen bytes.

laatstePktTijd_
Tijdstip waarop het laatste pakket is ontvangen.

verwacht_
Het verwachte sequentienummer van het volgende pakket.

TCP VOORWERPEN


TCP-objecten zijn een subklasse van agentobjecten die het BSD Tahoe TCP-transport implementeren
protocol zoals beschreven in [7]. Ze erven alle generieke agentfunctionaliteit.

Om TCP-parameters te traceren, markeert u elke parameter met ``$tcp trace window_'' en stuurt u vervolgens de
uitvoer naar een tracebestand met ``$tcp attach [open trace.tr w]''.

TCP-segmenten kunnen worden verzonden met de commando's 'advanceby' en 'advanaceby'. Wanneer alle gegevens zijn verzonden,
de done-methode wordt aangeroepen (die in OTcl kan worden overschreven).

$tcp bevorderen n
Stuur tot het n-de pakket.

$tcp vooruitgeschoven n
Stuur nog meer pakketten.

$tcp gedaan
Functioneel aangeroepen wanneer alle pakketten (gespecificeerd door advance/advanceby/maxpkts_)
verzonden. Kan per object worden overschreven.

Configuratie parameters

venster_
De bovengrens van het geadverteerde venster voor de TCP-verbinding (in
pakketten).

maxcwnd_
De bovengrens van het congestievenster voor de TCP-verbinding. Ingesteld op
nul om te negeren. (Dit is de standaardinstelling.) Gemeten in pakketten.

vensterInit_
De initiële grootte van het congestievenster bij een langzame start. (in pakketten).

wnd_init_optie_
Het algoritme dat wordt gebruikt om de initiële omvang van de congestie te bepalen
venster. Instellen op 1 voor een statisch algoritme met de waarde in vensterInit_.
Instellen op 2 voor een dynamisch algoritme met behulp van een functie van pakketgrootte_.

syn_ Instellen op 'true' om de initiële SYN/ACK-uitwisseling in eenrichtings-TCP te modelleren. Instellen op
standaard ingesteld op false.

vertraging_groei_
Stel in op 'true' om het initiële congestievenster uit te stellen tot na één pakket
is verzonden en bevestigd. Standaard ingesteld op false.

vensterOptie_
Het algoritme dat gebruikt moet worden voor het beheren van het congestievenster in lineaire fase.
Het standaardalgoritme is 1 (de standaardwaarde). Andere experimentele algoritmen
Zijn gedocumenteerd in de broncode.

vensterDrempel_
Versterk constant tot exponentieel middelingsfilter dat wordt gebruikt om te berekenen kafnaald (Zie
(onder). Voor onderzoek naar verschillende algoritmen voor venstervergroting.

boven het hoofd_
Het bereik (in seconden) van een uniforme stochastische variabele die wordt gebruikt om elke
uitvoerpakket. Het idee is om willekeurige vertragingen bij de bron in te voegen om
om fase-effecten te vermijden, indien gewenst [4]. Dit is alleen geïmplementeerd
voor de Tahoe ("tcp")-versie van tcp, niet voor tcp-reno. Dit is niet
bedoeld als een realistisch model van de CPU-verwerkingsoverhead.

ECN_ Stel in op 'true' om naast pakketmeldingen ook expliciete congestiemeldingen te gebruiken
daalt tot signaalcongestie. Dit maakt een snelle hertransmissie mogelijk na een quench().
vanwege een ECN-bit (expliciete congestiemelding).

pakketgrootte_
De grootte in bytes die moet worden gebruikt voor alle pakketten van deze bron.

tcpip_base_hdr_grootte_
De grootte in bytes van de basis TCP/IP-header.

tcpTick_
De TCP-klokgranulariteit voor het meten van retourtijden. Merk op dat het
Standaard ingesteld op de niet-standaardwaarde van 100 ms. Gemeten in seconden.

bugFix_
Stel in op 'true' om een ​​bug te verwijderen wanneer meerdere snelle heruitzendingen zijn toegestaan ​​voor
pakketten die in één enkel gegevensvenster worden gedropt.

maxburst_
Stel in op nul om te negeren. Anders is het maximale aantal pakketten dat de
bron kan een bericht sturen als reactie op één binnenkomende ACK.

langzame_start_herstart_
Booleaans; stel in op 1 om langzaam te starten nadat de verbinding inactief is geworden. Aan door
standaard.

srtt_init_
Initiële waarde voor de geschatte retourtijd. Standaardwaarde is 0.
seconden.

t_rttvar_
Initiële waarde voor de variantie in de retourtijd. Standaardwaarde is 3 seconden.

rtxcur_init_
Initiële waarde voor de hertransmissiewaarde. Standaard is dit 6 seconden.

T_SRTT_BITS
Exponent van het gewicht voor het bijwerken van de gladgestreken retourtijd t_srtt_.
De standaardwaarde is 3, voor een gewicht van 1/2^T_SRTT_BITS of 1/8.

T_RTTVAR_BITS
Exponent van het gewicht voor het bijwerken van de variantie in de retourtijd, t_rttvar_.
De standaardwaarde is 2, voor een gewicht van 1/2^T_RTTVAR_BITS of 1/4.

rttvar_exp_
Exponent van een veelvoud van de gemiddelde afwijking bij het berekenen van de stroom
Hertransmissiewaarde t_rtxcur_. Standaard is dit 2, voor een veelvoud van 2^rttvar_exp_
of 4.

Bepaald constanten

MWS De maximale venstergrootte in pakketten voor een TCP-verbinding. MWS bepaalt de
Grootte van een array in tcp-sink.cc. De standaard voor MWS is 1024 pakketten. Voor
Tahoe TCP, de "venster"-parameter, die de geadverteerde informatie van de ontvanger vertegenwoordigt
window, moet kleiner zijn dan MWS-1. Voor Reno TCP, de "window"-parameter
moet kleiner zijn dan (MWS-1)/2.

Land Variabelen

dupacks_
Aantal dubbele bevestigingen dat is gezien sinds nieuwe gegevens zijn bevestigd.

volgnr_ Hoogste volgnummer voor gegevens van gegevensbron naar TCP.

t_seqno_
Huidig ​​verzendvolgnummer.

ack_ Hoogste erkenning van de ontvanger.

cwnd_ Huidige waarde van het congestievenster (in pakketten).

kafnaald_ Huidige waarde van een laagdoorlaatfilterversie van het congestievenster. Voor
onderzoek naar verschillende algoritmen voor venstervergroting.

ssthresh_
Huidige waarde van de drempelwaarde voor langzame start (in pakketten).

RTT_ Geschatte retourtijd. In seconden (uitgedrukt in veelvouden van tcpTick_).

srtt_ Geëgaliseerde schatting van de retourtijd. In seconden (in veelvouden van tcpTick_/8).

rttvar_
Geschatte gemiddelde afwijking van de retourtijd.

t_rtxcur_
Huidige hertransmissiewaarde. In seconden.

Donder op_
Exponentiële backoff-constante voor de retourtijd.

TCP/RENO VOORWERPEN


TCP/Reno-objecten zijn een subklasse van TCP-objecten die het Reno TCP-transport implementeren
protocol zoals beschreven in [7]. Er zijn geen methoden, configuratieparameters of status
variabelen die specifiek zijn voor dit object.

TCP/NEWRENO VOORWERPEN


TCP/Newreno-objecten zijn een subklasse van TCP-objecten die een aangepaste versie van de
BSD Reno TCP-transportprotocol.

Er zijn geen methoden of statusvariabelen specifiek voor dit object.

Configuratie parameters

newreno_changes_
Stel in op nul voor de standaard NewReno zoals beschreven in [7]. Stel in op 1 voor
aanvullende NewReno-algoritmen zoals voorgesteld in [10]; dit omvat de
schatting van de ssthresh-parameter tijdens langzame start.

TCP/VEGAS VOORWERPEN


Dit gedeelte van de manpagina is nog niet geschreven.

TCP/SACK1 VOORWERPEN


TCP/Sack1-objecten zijn een subklasse van TCP-objecten die het BSD Reno TCP-transport implementeren
protocol met Selective Acknowledgement Extensions zoals beschreven in [7].

Ze erven alle functionaliteit van het TCP-object. Er zijn geen methoden, configuratie
parameters of toestandsvariabelen die specifiek zijn voor dit object.

TCP/FACK VOORWERPEN


TCP/Fack-objecten zijn een subklasse van TCP-objecten die het BSD Reno TCP-transport implementeren
protocol met Forward Acknowledgement-congestiecontrole.

Ze erven alle functionaliteit van het TCP-object. Er zijn geen methoden of statusvariabelen.
die specifiek zijn voor dit object.

Configuratie parameters

ss-div4
Overdempingsalgoritme. Deelt ssthresh door 4 (in plaats van 2) als er congestie is.
gedetecteerd binnen 1/2 RTT van langzame start. (1=Inschakelen, 0=Uitschakelen)

afbouw
Rampdown-algoritme voor het gladstrijken van gegevens. Vermindert langzaam het congestievenster in plaats van
dan het direct te halveren. (1=Inschakelen, 0=Uitschakelen)

TCP/VOLLEDIGTCP VOORWERPEN


Deze sectie is nog niet toegevoegd aan de manpagina. De implementatie en de
configuratieparameters worden beschreven in [11].

TCPSINK VOORWERPEN


TCPSink-objecten zijn een subklasse van agentobjecten die een ontvanger voor TCP-pakketten implementeren.
De simulator implementeert alleen "eenrichtings"-TCP-verbindingen, waarbij de TCP-bron gegevens verzendt
pakketten en de TCP-sink verzendt ACK-pakketten. TCPSink-objecten erven alle generieke
agentfunctionaliteit. Er zijn geen methoden of statusvariabelen specifiek voor de TCPSink
voorwerp.

Configuratie parameters

pakketgrootte_
The size in bytes to use for all acknowledgment packets.

maxSackBlocks_
The maximum number of blocks of data that can be acknowledged in a SACK
option. For a receiver that is also using the time stamp option [RFC 1323],
the SACK option specified in RFC 2018 has room to include three SACK blocks.
This is only used by the TCPSink/Sack1 subclass. This value may not be
increased within any particular TCPSink object after that object has been
allocated. (Once a TCPSink object has been allocated, the value of this
parameter may be decreased but not increased).

TCPSINK/DELACK VOORWERPEN


DelAck objects are a subclass of TCPSink that implement a delayed-ACK receiver for TCP
packets. They inherit all of the TCPSink object functionality. There are no methods or
state variables specific to the DelAck object.

Configuratie parameters

interval_
The amount of time to delay before generating an acknowledgment for a single
packet. If another packet arrives before this time expires, generate an
acknowledgment immediately.

TCPSINK/SACK1 VOORWERPEN


TCPSink/Sack1 objects are a subclass of TCPSink that implement a SACK receiver for TCP
packets. They inherit all of the TCPSink object functionality. There are no methods,
configuration parameters or state variables specific to this object.

TCPSINK/SACK1/DELACK VOORWERPEN


TCPSink/Sack1/DelAck objects are a subclass of TCPSink/Sack1 that implement a delayed-SACK
receiver for TCP packets. They inherit all of the TCPSink/Sack1 object functionality.
Er zijn geen methoden of statusvariabelen specifiek voor dit object.

Configuratie parameters

interval_
The amount of time to delay before generating an acknowledgment for a single
packet. If another packet arrives before this time expires, generate an
acknowledgment immediately.

SRM VOORWERPEN


SRM objects are a subclass of agent objects that implement the SRM reliable multicast
transport protocol. They inherit all of the generic agent functionalities.

$srm traffic-source bron
Attach a traffic source, e.g., Application/Traffic/CBR, to the SRM agent.

$srm begin
Join the multicast group, start the SRM agent and its attached traffic source.

$srm verwijderen
Stop the SRM agent, delete all its status and detach the traffic source.

$srm opsporen trace-bestand
Write the traces generated by the SRM agent to trace-bestand. The traces includes
timer settings, request and repair sending and receipts, etc. Two related files
that are not built into ns are tcl/mcast/srm-debug.tcl that permits more detailed
tracing of the delay computation functions, and tcl/mcast/srm-nam.tcl uit die
separately marks srm control messages from data. The latter is useful to enhance
nam visualisation.

$srm inloggen log-bestand
Write the recovery statistics during each request or repair to log-bestand. De
statistics include start time, duration, message id, total number of duplicate
requests and repairs.

$srm distance? knooppunt
Return the distance estimate to knooppunt in this SRM agent.

$srm distances? knooppunt
Returns a list of <group member, distance> tuples of the distances to all group
members that this node is aware of. The group member is identified as the address
of the remote agent. The first tuple is this agent's token. The list can be
directly loaded into a Tcl array.

Configuratie parameters

pakketgrootte_
The data packet size in bytes that will be used for repair messages. The
standaardwaarde is 1024.

requestFunction_
The algorithm used to produce a retransmission request, e.g., setting
request timers. The default value is SRM/request. Other possible request
functions are SRM/request/Adaptive, used by the Adaptive SRM code.

repairFunction_
The algorithm used to produce a repair, e.g., compute repair timers. The
default value is SRM/repair. Other possible request functions are
SRM/repair/Adaptive, used by the Adaptive SRM code.

sessionFunction_
The algorithm used to generate session messages. Default is SRM/session

sessionDelay_
The basic interval of session messages. Slight random variation is added to
this interval to avoid global synchronization of session messages. User may
want to adjust this variable according to their specific simulation.
Measured in seconds; default value is 1.0 seconds.

C1_, C2_
The parameters which control the request timer. Refer to [8] for detail. The
standaardwaarde is C1_ = C2_ = 2.0.

D1_, D2_
The parameters which control the repair timer. Refer to [8] for detail. The
standaardwaarde is D1_ = D2_ = 1.0.

requestBackoffLimit_
The maximum number of exponential backoffs. Default value is 5.

Land Variabelen

stats_ An array containing multiple statistics needed by adaptive SRM agent.
Including: duplicate requests and repairs in current request/repair period,
average number of duplicate requests and repairs, request and repair delay
in current request/repair period, average request and repair delay.

SRM/Adaptive VOORWERPEN


SRM/Adaptive objects are a subclass of the SRM objects that implement the adaptive SRM
reliable multicast transport protocol. They inherit all of the SRM object functionalities.

Land Variabelen Refer to the SRM paper by Sally et al ([11]) for more detail.

pdistance_
This variable is used to pass the distance estimate provided by the remote
agent in a request or repair message.

D1_, D2_
The same as that in SRM agents, except that they are initialized to
log10(group size) when generating the first repair.

MinC1_, MaxC1_, MinC2_, MaxC2_
The minimum/maximum values of C1_ and C2_. Default initial values are
defined in [8]. These values define the dynamic range of C1_ en C2_.

MinD1_, MaxD1_, MinD2_, MaxD2_
The minimum/maximum values of D1_ and D2_. Default initial values are
defined in [8]. These values define the dynamic range of D1_ en D2_.

AveDups
Higher bound for average duplicates.

AveDelay
Higher bound for average delay.

eps AveDups - dups determines the lower bound of the number of duplicates, when
we should adjust parameters to decrease delay.

TOEPASSING VOORWERPEN


Application objects generate data for transport agents to send.

FTP TOEPASSING VOORWERPEN


Application/FTP objects produce bulk data for a TCP object to send.

$ftp begin
Causes FTP to produce packets indefinitely.

$ftp produceren n
Causes the FTP object to produce n packets instantaneously.

$ftp stoppen
Causes the attached TCP object to stop sending data.

$ftp hechten agent
Attaches an Application/FTP object to agent.

$ftp producemore tellen
Causes the Application/FTP object to produce tellen more packets.

Configuratie parameters

maxpkts
The maximum number of packets generated.

TELNET TOEPASSING VOORWERPEN


Application/Telnet objects produce individual packets with inter-arrival times as follows.
If interval_ is non-zero, then inter-arrival times are chosen from an exponential
distribution with average interval_. Indien interval_ is zero, then inter-arrival times are
chosen using the "tcplib" telnet distribution.

$telnet begin
Causes the Application/Telnet object to start producing packets.

$telnet stoppen
Causes the Application/Telnet object to stop producing packets.

$telnet hechten agent
Attaches a Application/Telnet object to agent.

Configuratie parameters

interval_
The average inter-arrival time in seconds for packets generated by the
Application/Telnet object.

VERKEER VOORWERPEN


Traffic objects create data for a transport protocol to send. A Traffic object is created
by instantiating an object of class Application/Traffic/ type dan: met de meeste type dan: is een van
Exponential, Pareto, CBR, Trace.

EXPONENTIEEL VERKEER VOORWERPEN


Application/Traffic/Exponential objects generate On/Off traffic. During "on" periods,
packets are generated at a constant burst rate. During "off" periods, no traffic is
generated. Burst times and idle times are taken from exponential distributions.

Configuratie parameters

pakketgrootte_
The packet size in bytes.

burst_time_
Burst duration in seconds.

idle_time_
Idle time in seconds.

tarief_ Peak rate in bits per second.

PARETO VERKEER VOORWERPEN


Application/Traffic/Pareto objects generate On/Off traffic with burst times and idle times
taken from pareto distributions.

Configuratie parameters

pakketgrootte_
The packet size in bytes.

burst_time_
Average on time in seconds.

idle_time_
Average off time in seconds.

tarief_ Peak rate in bits per second.

vorm_ Pareto shape parameter.

CBR (CONSTANT BIT RATE) VERKEER VOORWERPEN


Application/Traffic/CBR objects generate packets at a constant rate. Dither can be added
to the interarrival times by enabling the "random" flag.

Configuratie parameters

tarief_ Peak rate in bits per second.

pakketgrootte_
The packet size in bytes.

willekeurige_
Flag that turns dithering on and off (default is off).

maxpkts_
Maximum number of packets to send.

SPOOR VERKEER VOORWERPEN


Application/Traffic/Trace objects are used to generate traffic from a trace file.

$trace attach-tracefile tbestand
Attach the Tracefile object tbestand to this trace. The Tracefile object specifies
the trace file from which the traffic data is to be read (see TRACEFILE OBJECTS
section). Multiple Application/Traffic/Trace objects can be attached to the same
Tracefile object. A random starting place within the Tracefile is chosen for each
Application/Traffic/Trace object.

There are no configuration parameters for this object.

TRACEERBESTAND VOORWERPEN


Tracefile objects are used to specify the trace file that is to be used for generating
traffic (see TRAFFIC/TRACE OBJECTS section). $tracefile is an instance of the Tracefile
Voorwerp.

$tracefile bestandsnaam trace-input
Set the filename from which the traffic trace data is to be read to trace-input.

There are no configuration parameters for this object. A trace file consists of any
number of fixed length records. Each record consists of 2 32 bit fields. The first
indicates the interval until the next packet is generated in microseconds. The second
indicates the length of the next packet in bytes.

SPOOR EN TOEZICHT METHODEN


[NOTE: This section has not been verified to be up-to-date with the release.] Trace
objects are used to generate event level capture logs typically to an output file.
Throughout this section $ns refers to a Simulator object, $agent refers to an Agent
voorwerp.

$ns create-trace type dan: bestandsID node1 node2 [optie]
Create a Trace object of type type dan: and attach the filehandle bestandsID ernaar toe
monitor the queues between nodes node1 en knooppunt 2. type dan: can be one of Enque, Deque,
Drop. Enque monitors packet arrival at a queue. Deque monitors packet departure
at a queue. Drop monitors packet drops at a queue. bestandsID must be a file handle
returned by the Tcl open command and it must have been opened for writing. If
optie is not specified, the command will instruct the created trace object to
generate ns traces. If optie is """nam""" the new object will produce nam traces.
Returns a handle to the trace object.

$ns drop-trace node1 node2 opsporen
Remove trace object attached to the link between nodes node1 en node2 with opsporen
as the object handle.

$ns trace-queue node1 node2 bestandsID
Enable Enque, Deque and Drop tracing on the link between node1 en knooppunt 2.

$ns namtrace-queue node1 node2 bestandsID
Zelfde functie als $ns trace-queue, except it produces nam traces.

$ns traceer alles bestandsID
Enable Enque, Deque, Drop Tracing on all the links in the topology created after
this method is invoked. Also enables the tracing of network dynamics. bestandsID Dan moet je
be a file handle returned by the Tcl open commando en het moet geopend zijn geweest voor
schrijven.

$ns namtrace-all bestandsID
Zelfde functie als $ns traceer alles, except it will produce all equivalent traces in nam
format. In addition, calling this command vaardigheden the simulator starts to run will
generate color configurations (if any) and topology information needed by nam
(nodes, links, queues). An example can be found at ns-2/tcl/ex/nam-example.tcl.

$ns namtrace-config bestandsID
Assign a file to store nam configuration information, e.g., node/link/agents and
some Simulator-related traces such as annotations. When you don't want to trace
every object. call this function and then use $ns namtrace-queue, rtModel opsporen,
etc., to insert traces individually. Note that you should use the same file for
individual traces and nam configuration. An example for this is available at
ns-2/tcl/ex/nam-separate-trace.tcl.

$ns monitor-queue node1 node2
Arrange for queue length of link between nodes node1 en node2 to be tracked.
Returns QueueMonitor object that can be queried to learn average queue size etc.
[see QueueMonitor Objects section]

$ns flush-trace
Flush the output channels attached to all the trace objects.

$ Link sporendynamiek ns bestandsID [optie]
Volg de dynamiek van deze link en schrijf de uitvoer naar bestandsID bestandshandle. ns is
een exemplaar van het Simulator- of MultiSim-object dat is gemaakt om de
simulatie.

$ns kleur id naam
Create a color index, which links the number id to the color name naam. All colors
aangemaakt vaardigheden the simulator starts to run will be written to nam trace file, if
er is er een.

$ns trace-annotate snaar
Writes an annotation to ns and nam trace file, if there are any. The string should
be enclosed in double quote to make it a single argument.

trace_annotate snaar
Een andere versie van $ns trace-annotate, which is a global function and doesn't
require the caller to know ns.

$ns duplex-link-op $node1 $node2 $op $ args
Perform a given operation $op on the given duplex link ($node1, $node2). De
following two operations may be used:
orient - Specify the nam orientation of the duplex link. Values can be
left, right, up, down, their mixture combined by '-' (e.g.,
left-down), and a number specifying the angle between the
link and the horizontal line.
queuePos - Construct a queue of the simplex link ($node1,
$node2) in nam, and specify the angle between the
horizontal line and the line along which the queued packets
zal worden vertoond.

$ns add-agent-trace agent naam [bestands-ID]
Write a nam trace line, which will create a trace agent for agent when interpreted
by nam. The trace agent's name will be naam. This nam trace agent is used to show
the position of agent and can be used to write nam traces of variables associated
with the agent. By default traces will be written to the file assigned by
namtrace-all. bestandsID can be used to write traces to another file.

$agent tracevar naam
Label OTcl variable naam of $agent to be traced. Then whenever the variable naam
changes value, a nam trace line will be written to nam trace file, if there is one.
Merk op dat naam must be the same as the variable's real OTcl name.

$ns delete-agent-trace agent
Write a nam trace line, which will delete the nam trace associated with agent wanneer
interpreted by nam.

$agent add-var-trace naam waarde [type]
Write a nam trace line, which creates a variable trace with name naam en waarde
waarde, when interpreted by nam. type dan: indicates the type of the variable, e.g., is
it a list, array, or a plain variable. Currently only plain variable is supported,
waarvoor type dan: = 'v'.

The following 2 functions should be called na the simulator starts running. This can be
done using $ns at.

$agent delete-var-trace naam
Write a nam trace line, which deletes the variable trace naam when interpreted by
naam.

$agent update-var-trace naam waarde [type]
Write a nam trace line, which changes the value of traced variable naam wanneer
interpreted by nam. Unlike $agent tracevar, the above 3 functions provide 'manual'
variable tracing, in which variable tracing are done by placing $agent update-var-
opsporen in OTcl code, while tracevar automatically generates nam traces when the
traced variable changes value.

The tracefile format is backward compatible with the output files in the ns version 1
simulator so that ns-1 post-processing scripts can still be used. Trace records of
traffic for link objects with Enque, Deque or Drop Tracing have the following form:

<code> <time> <hsrc> <hdst> <packet>

met de meeste

<code> := [hd+-r] h=hop d=drop +=enque -=deque r=receive
<time> := simulation time in seconds
<hsrc> := first node address of hop/queuing link
<hdst> := second node address of hop/queuing link
<packet> := <type> <size> <flags> <flowID> <src.sport> <dst.dport> <seq> <pktID>
<type> := tcp|telnet|cbr|ack etc.
<size> := packet size in bytes
<flags> := [CP] C=congestion, P=priority
<flowID> := flow identifier field as defined for IPv6
<src.sport> := transport address (src=node,sport=agent)
<dst.sport> := transport address (dst=node,dport=agent)
<seq> := packet sequence number
<pktID> := unique identifer for every new packet

Only those agents interested in providing sequencing will generate sequence numbers
and hence this field may not be useful for packets generated by some agents.

For links that use RED gateways, there are additional trace records as follows:

<code> <time> <value>

met de meeste

<code> := [Qap] Q=queue size, a=average queue size,
p=packet dropping probability
<time> := simulation time in seconds
<value> := value

Trace records for link dynamics are of the form:

<code> <time> <state> <src> <dst>

met de meeste

<code> := [v]
<time> := simulation time in seconds
<state> := [link-up | link-down]
<src> := first node address of link
<dst> := second node address of link

INTEGRATOR Objecten


Integrator Objects support the approximate computation of continuous integrals using
discrete sums. The running sum(integral) is computed as: sum_ += [lasty_ * (x - lastx_)]
where (x, y) is the last element entered and (lastx_, lasty_) was the element previous to
that added to the sum. lastx_ and lasty_ are updated as new elements are added. The
first sample point defaults to (0,0) that can be changed by changing the values of
(lastx_,lasty_).

$integrator newpoint x y
Add the point (x,y) to the sum. Note that it does not make sense for x to be less
than lastx_.

Er zijn geen configuratieparameters specifiek voor dit object.

Land Variabelen

lastx_ x-coordinate of the last sample point.

lasty_ y-coordinate of the last sample point.

som_ Running sum (i.e. the integral) of the sample points.

MONSTERS Objecten


Samples Objects support the computation of mean and variance statistics for a given
monster.

$samples gemiddelde
Returns mean of the sample.

$samples variantie
Returns variance of the sample.

$samples cnt
Returns a count of the sample points considered.

$samples opnieuw in te stellen
Reset the Samples object to monitor a fresh set of samples.

There are no configuration parameters or state variables specific to this object.

GEBOUWD


[NOTE: This section has not been verified to be up-to-date with the release.] Because
OTcl is a full-fledged programming language, it is easy to build high-level simulation
constructs from the ns primitives. Several library routines have been built in this way,
and are embedded into the ns interpreter as methods of the Simulator class. Throughout
this section $ns represents a Simulator object.

$ns create-verbinding srcType srcNode dstType dstNode klasse
Create a source agent of type srcType at node srcNode en sluit het aan op een
destination agent of type dstType at node dstNode. Also, connect the destination
agent to the source agent. The traffic class of both agents is set to klasse. Deze
method returns the source agent.

VOORBEELD


set ns [new Simulator]

#
# Create two nodes
#
set n0 [$ns node]
set n1 [$ns node]

#
# Create a trace and arrange for all the trace events of the
# links subsequently created to be dumped to "out.tr"
#
set f [open out.tr w]
$ns trace-all $f

#
# Connect the two nodes with a 1.5Mb link with a transmission
# delay of 10ms using FIFO drop-tail queuing
#
$ns duplex-link $n0 $n1 1.5Mb 10ms DropTail

#
# Set up BSD Tahoe TCP connections in opposite directions.
#
set tcp_src1 [new Agent/TCP]
set tcp_snk1 [new Agent/TCPSink]
set tcp_src2 [new Agent/TCP]
set tcp_snk2 [new 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 connect $tcp_src1 $tcp_snk1
$ns connect $tcp_src2 $tcp_snk2

#
# Create ftp sources at the each node
#
set ftp1 [$tcp_src1 attach-source FTP]
set ftp2 [$tcp_src2 attach-source FTP]

#
# Start up the first ftp at the time 0 and
# the second ftp staggered 1 second later
#

$ns at 0.0 "$ftp1 start"
$ns at 1.0 "$ftp2 start"

#
# run the simulation for 10 simulated seconds
#
$ns at 10.0 "exit 0"
$ns run

DEBUGEN


To enable debugging when building ns from source:
% ./configure --enable-debug
% maken

For more details about ns debugging please see <http://www-mash.cs.berkeley.edu/ns/ns-
debugging.html>.

VERSCHILLEN NU NS-1


In general, more complex objects in ns-1 have been broken down into simpler components for
greater flexibility and composability. Details of differences between ns-1 and ns-2 can
gevonden worden bijhttp://www-mash.cs.berkeley.edu/ns/ns.html>.

GESCHIEDENIS


Work on the LBL Network Simulator began in May 1990 with modifications to S. Keshav's
(keshav@research.att.com) REAL network simulator, which he developed for his Ph.D. work at
U.C. Berkeley. In Summer 1991, the simulation description language was revamped, and
later, the NEST threads model was replaced with an event driven framework and an efficient
scheduler. Among other contributions, Sugih Jamin (jamin@usc.edu) contributed the
calendar-queue based scheduling code to this version of the program, which was known as
tcpsim. In December 1994, McCanne ported tcpsim to C++ and replaced the yacc-based
simulation description language with a Tcl interface, and added preliminary multicast
support. Also at this time, the name changed from tcpsim to the more generic NS.
Throughout, Floyd has made modifications to the TCP code and added additional source
models for her investigations into RED gateways, resource management, class-based queuing,
explicit congestion notification, and traffic phase effects. Many of the papers
discussing these issues are available through URL http://www-nrg.ee.lbl.gov/.

Use ns online using onworks.net services



Nieuwste Linux & Windows online programma's