Вы находитесь на странице: 1из 4

Q1. Pliki .

pcap - cieka: ns-3-allinone/ns-3-dev


2 pliki:
first-0-0.pcap
first-1-0.pcap

Q2. Pole nagwkowe: "Header checksum" , poniewa nie zgadza si suma kontrolna 0x0000 zamiast
0x60cd

Q3. model - abstrakcyjne wyobraenie rzeczywistoci


system - zbir zalenoci pomidzy powizanymi elementami penicymi okrelone funkcje
Najczciej modele przedstawiaj uproszczone dziaanie pewnego systemu, pozwalaj nam one
przyjrze si konretnemu zagadnieniu w danym systemie.

Q4. nCsma
Elastyczno symulacji na przykladzie nCsma przejawia si w zdolnosci do kontrolowania liczby
urzdzen CSMA w systemie wprost z terminalu, mozna je okresli poprzez argument, nie jest
wymagana rekonfiguracja pliku rodowego.
np.
./waf --run "scratch/mysecond --nCsma=4"

Q5. Routing: Kady wze zachowuje si jakby by routerem OSPF i komunikuje si z wszystkimi
routerami. Kady wze generuje rozgoszenie zawierajace informacje o wzach, z ktrymi ma
pocznie.
Dane trafiaj do globalnego routera, ktry ustala tabel routingu dla kadego wza.
W skrypcie: Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
Systemem bdzie tutaj protok OSPF jako zbir zalenoci i cech, natomiast skrypt modeluje
niewielk cz protokou.

Q6.
csma.EnablePcap ("second", csmaDevices.Get (1), true);
Jest to zwizane z faktem, e sie CSMA to sie multipoint-to-point.
Musimy zdecydowa czy informacje o ruchu w sieci powinny znajdowa si na kadym urzdzeniu
osobno(tylko dotyczce danego urzdzenia) czy moe uruchomi promiscious mode, w ktrym jedno
urzdzenie jest odpowiedzialne za monitoring ruchu i zapisywanie informacji do pliku pcap.

W deklaracji true oznacza, e uruchomiony jest promiscious mode i urzdzenie 1 bdzie zbiera
informacje z sieci.

Q7. Plik second-0-0.pcap pokazuje drog pliku w sieci, poniewa pokazuje ruch z punktu wza
zerowego.
Tablic ARP(Address Resolution Protocol) zawiera plik second-2-0.pcap
, poniewa potrzebuje on adresu MAC, aby dostarczy pakiet do odbiorcy.

Q8.
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/csma-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
// Default Network Topology
//
//

10.1.1.0

// n0 -------------- n1 n2 n3 n4
// point-to-point | | | |
//
//

================
LAN 10.1.2.0

using namespace ns3;


NS_LOG_COMPONENT_DEFINE ("SecondScriptExample");
int
main (int argc, char *argv[])
{
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("448kb/s"));
CommandLine cmd;
cmd.Parse (argc,argv);

NS_LOG_INFO ("Create nodes.");


NodeContainer c;
c.Create (5);
NodeContainer n0n1 = NodeContainer (c.Get (0), c.Get(1));
NodeContainer n1234 = NodeContainer (c.Get (1), c.Get(2), c.Get(3), c.Get(4));
InternetStackHelper internet;
internet.Install (c);
NS_LOG_INFO ("Create channels.");
PointToPointHelper p2p;
p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));
NetDeviceContainer d0d1 = p2p.Install (n0n1);
CsmaHelper csma;
csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps"));
csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));
NetDeviceContainer d1234 = csma.Install (n1234);
NS_LOG_INFO ("Assign IP Addresses.");
Ipv4AddressHelper ipv4;
ipv4.SetBase ("10.1.1.0", "255.255.255.0");
Ipv4InterfaceContainer i0i1 = ipv4.Assign (d0d1);
ipv4.SetBase ("10.1.2.0", "255.255.255.0");
ipv4.Assign (d1234);
Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
NS_LOG_INFO ("Create Applications.");
uint16_t port = 9; // Discard port (RFC 863)
OnOffHelper onoff ("ns3::UdpSocketFactory",
InetSocketAddress (i0i1.GetAddress (1), port));
onoff.SetConstantRate (DataRate ("300bps"));
onoff.SetAttribute ("PacketSize", UintegerValue (50));
ApplicationContainer apps = onoff.Install (c.Get (0));
apps.Start (Seconds (1.0));

apps.Stop (Seconds (10.0));


AsciiTraceHelper ascii;
Ptr<OutputStreamWrapper> stream = ascii.CreateFileStream ("mysecond.tr");
p2p.EnableAsciiAll (stream);
csma.EnableAsciiAll (stream);
p2p.EnablePcapAll ("second");
csma.EnablePcapAll ("second", false);
NS_LOG_INFO ("Run Simulation.");
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");
}

Вам также может понравиться