3. Introduction
• NS est un logiciel libre de simulation à événements discrets très
largement utilisé dans la recherche académique et dans
l'industrie.
• Il est considéré par beaucoup de spécialistes des
télécommunications comme le meilleur logiciel de simulation à
événements discrets, en raison de son modèle libre,
permettant l'ajout très rapide de modèles correspondant à des
technologies émergentes.
1 / 11
4. Les scripts sous ns-3 (1 / 7)
• La création de nœuds :
NodeContainer nodes; //creation d’une fabrique de noeuds
nodes.Create(2); //creation de deux noeuds
nodes.Get(0); //acces au premier noeud
nodes.Get(1); //acces au deuxieme nœud
2 / 11
5. Les scripts sous ns-3 (2 / 7)
• Définition et installation du média de communication :
PointToPointHelper pointToPoint; //definition du media PPP
//definition de la bande passante et du delai
pointToPoint.SetDeviceAttribute("DataRate",
StringValue("5Mbps"));
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
//creation d’un conteneur d’interfaces reseau
NetDeviceContainer devices;
//creation et installation des interfaces reseau aux noeuds
devices = pointToPoint.Install(nodes);
3 / 11
6. Les scripts sous ns-3 (3 / 7)
• Installation du protocole IP :
InternetStackHelper stack; //declaration de la pile protocolaire IP
stack.Install(nodes); //installation de la pile
//construction d’un espace d’adressage
Ipv4AddressHelper address;
//definition de l’espace d’adressage
//255.255.255.0 est le mask
address.SetBase("10.1.1.0","255.255.255.0");
//assignation des adresses
Ipv4InterfaceContainer interfaces = address.Assign(devices);
4 / 11
7. • Mise en place du serveur :
//declaration du serveur (ouverture du port 9)
UdpEchoServerHelper echoServer(9);
//installation de l’application serveur sur le nœud 2
ApplicationContainer serverApps =
echoServer.Install(nodes.Get(1));
serverApps.Start(Seconds(1.0)); //demarrage du traffic a 1s
serverApps.Stop(Seconds(10.0)); //arret du traffic a 10 s
5 / 11
Les scripts sous ns-3 (4 / 7)
8. Les scripts sous ns-3 (5 / 7)
• Installation du client :
//declaration du client (adresse et numero de port du serveur)
UdpEchoClientHelper echoClient(interfaces.GetAddress(1), 9);
//MaxPackets : nombre max de paquets envoyes
// Uinteger : unsigned integer
echoClient.SetAttribute("MaxPackets", UintegerValue(1));
echoClient.SetAttribute("Interval", TimeValue(Seconds(1.0)));
echoClient.SetAttribute("PacketSize", UintegerValue(1024));
6 / 11
9. Les scripts sous ns-3 (6 / 7)
• Installation du client :
//installation de l’application cliente
ApplicationContainer clientApps =
echoClient.Install(nodes.Get(0));
clientApps.Start(Seconds(2.0)); //demarrage du traffic a 2 s
clientApps.Stop(Seconds(10.0)); //arret du traffic a 10 s
7 / 11
10. • Démarrage de simulation :
Simulator::Run();
Simulator::Destroy();
8 / 11
Les scripts sous ns-3 (7 / 7)
11. 9 / 11
Premier script (1 / 2)
• Copiez le fichier examples/tutorial/first.cc dans le dossier
scratch
• Lancez la commande ./waf build
• Lancez la commande ./waf --run scratch/first
12. Premier script (2 / 2)
10 / 11
• Résultat :
At time 2s client sent 1024 bytes to 10.1.1.2 port 9
At time 2.00369s server received 1024 bytes from 10.1.1.1 port
49153
At time 2.00369s server sent 1024 bytes to 10.1.1.1 port 49153
At time 2.00737s client received 1024 bytes from 10.1.1.2 port 9
13. 11 / 11
Conclusion
• ns-3 peut être utilisé sur les plateformes Linux, Unix, OS X
(Mac) et Windows (via une machine virtuelle) et il fournit
plusieurs possibilités de simulation, par exemple :
Simulation de protocoles : TCP, UDP, IPv4, IPv6,. . .
Simulation de médias : Ethernet, WIFI, . . .
Possibilité d’émulation : exécution d’une implémentation d’un
protocole dans ns-3.