You are on page 1of 19

ns3:QuickIntroand

MANETWGImplementations
IETF72
MANETWG
2k8/7/29
Presentedby:
JoeKopena
tjkopena@cs.drexel.edu

http://nsnam.org/

PresentationContents

QuickintroductiontoNS3

Highlightitscapabilities,readynessforpracticaluse

Steadytrickleofpapersusingns3startingtoappear

ns3teamisveryeagertogetmorepeopleusingthe
systemandcontributingfeedbackorcode

Demotable@SIGCOMM2008,comecheckitout!

NotesonimplementationofMANETspecsforns3

pg.2/19

Alreadyreleased,done,inprogress
(Presentationgoal:~25minutes)

Part1

LightningQuickns3Introduction

BasicFacts

ns3:Anew,NSFprimed,opensourcesimulator
fornetworkingresearchandeducation

Cleanslatedesignfromns2,aimingtobeeasierto
useandmorereadyforextension

ns3coreiswrittenentirelyinC++

UsercodeprotocolsandscenariosalsoinC++

Pythonwrappersforusercodealsoexist

Librarybasedusage,nons3program(yet)
http://www.nsnam.org/getting_started.html

pg.4/19

KeyCodeFeatures

Sophisticatedsimulationfeaturesincluded

Extensiveparameterizationsystem

Configurableembeddedtracingsystem,withstandard
outputstotextlogsorPCAP(tcpdump/wireshark)

Objectorienteddesignforrapidcoding,extension

Automaticmemorymanagement

Objectaggregation/queryfornewbehaviors&state

pg.5/19

E.g.,addingmobilitymodelstonodes

KeySimulationFeatures

ModelstrueIPstack,w/potentiallymultiple
devices&IPaddressesoneverynode
BSDlookalike,eventbasedsocketsAPI

SynchronousAPIalternativeinprogress

Packetsincludewireformatted(serialized)bytes,
tags&metadataforeasyextensionandtracing

pg.6/19

SimulationNetworkArchitecture

LooksjustlikeIParchitecturestack
Application
Application

Protocol
stack

Application
Application

Socketslike
API

Protocol
stack

Packet(s)

Node
NetDevice
NetDevice

Node
Channel

NetDevice
NetDevice

Channel
pg.7/19

PicturefromTomHenderson,SimuToolsns3Tutorialslides

ArchitectureElements

Nodesmay/maynothavemobility,othertraits

Nodeshavenetworkdevices,e.g.WiFi,CSMA

NetDevicestransferpacketsoverChannels

IncorporatingLayer1(Physical)&Layer2(Link)

Devicesinterfacew/Layer3(Network:IP,ARP)

Layer3supportsLayer4(Transport:UDP,TCP)

Layer4isusedbyLayer5(Application)objects

pg.8/19

CodeExample1/3

CreatingaWiFi,IPbasednetwork:
NodeContainer nodes;

nodes.Create(g_numNodes);

WifiHelper wifi;
wifi.SetMac("ns3::AdhocWifiMac");

wifi.SetPhy("ns3::WifiPhy");

NetDeviceContainer nodeDevices = wifi.Install(nodes);

InternetStackHelper internet;
internet.Install(nodes);
Ipv4AddressHelper ipAddrs;
ipAddrs.SetBase("192.168.0.0", "255.255.0.0");
ipAddrs.Assign(nodeDevices);
pg.9/19

CodeExample2/3

Openingasocket:
InetSocketAddress addr(bcastAddr, m_bcastPort);

Ptr<SocketFactory> socketFactory = GetNode()->


GetObject<SocketFactory>(UdpSocketFactory::GetTypeId());
m_socket = socketFactory->CreateSocket();

InetSocketAddress local = InetSocketAddress


(Ipv4Address::GetAny(), m_bcastPort);
m_socket->Bind(local);

m_socket->Connect(addr);

m_socket->SetRecvCallback(MakeCallback(&Beacon::Receive, this));
pg.10/19

CodeExample3/3

Receivingapacket(callbacksetinpreviousslide):
void Beacon::Receive(Ptr<Socket> socket) {
Ptr<Packet> packet;
Address from;
while (packet = socket->RecvFrom(from)) {

Ipv4Address ipv4From =
InetSocketAddress::ConvertFrom(from).GetIpv4();
NS_LOG_INFO("Received packet, " << packet->GetSize() <<
" bytes from " << ipv4From);
...

pg.11/19

UpcomingFeatures

Known,establishedmodulesfornearfuture:

NSCLinuxnetworkstackportedintons3!

Ipv6Integratedintons3nativenetworkstack

EmulationRunsimulationsinrealtimeovernetwork

StatisticsDatacollection,manipulation,visualization

VisualizationWatchnetwork,applicationevents

Andmanymoreapologiesforanynotlisted!

pg.12/19

Part2

MANETWGImplementations

MANETImplementations

OLSRv1:Inns3stablereleaseforsometime
PacketBB&NHDP:ns3repotobereleasedright
afterIETF72(needspackaging/documentation)
SMF:Weakversionexists;tobeimproved

pg.14/19

OLSR

OLSRv1(RFC3626),basedonNS2code

Largelycompleteimplementationofspec

ns2versionbyF.J.Ros,ns3portbyG.Carneiro

NS3version:Supportsmultipleinterfaces,doesnot
supportMAClayerfeedback,HNAinprogress

InstalledsimplyusingHelperclass,e.g.:
OlsrHelper olsr;

pg.15/19

olsr.InstallAll ();

PacketBB

Recentlyupdatedtospecv13,latestns3API

LatestPacketBBspecnotablycleanerthanpreviously

Straightforwardimplementation

Easeofuse,coding>>memory,processoruse

Previousdirectbufferversionfrustratingtouse/develop

Presentsqueryinterface

I.e.:FetchTLVsbyaddress,addressesbyTLVs

pg.16/19

Butcancontroladdressblocklist,haveemptyaddrTLVs,etc

NHDP

Recentlyupdatedtospecv7,latestns3API

ns3::Applicationobjectwhichappsmayaccess

pg.17/19

NHDPobjectactsashubofprotocolarchitecture

Appsmayregistermessagetypetoreceive

Mayprovidemessagetoincludeinnextbeacon

SMF

Cheesyencapsulatingversiondeveloped

ns3::ApplicationobjectwhichpresentsForward()

Properintegrationwithns3forwardingtablesWIP

pg.18/19

TheEnd

ns3maincontact:

Presentationquestions/comments:

TomHenderson<tomhend@u.washington.edu>
JoeKopena<tjkopena@cs.drexel.edu>

ns3quickstartinstructions:

http://www.nsnam.org/getting_started.html

http://nsnam.org/
pg.19/19

You might also like