examples/emu-udp-echo.cc
author Craig Dowell <craigdo@ee.washington.edu>
Fri, 05 Dec 2008 16:49:29 -0800
changeset 3988 654eed5f3ad0
parent 3831 16c2970a0344
child 4210 da9be6abb1b2
permissions -rw-r--r--
branch merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3831
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     2
/*
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     3
 * This program is free software; you can redistribute it and/or modify
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     4
 * it under the terms of the GNU General Public License version 2 as
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     5
 * published by the Free Software Foundation;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     6
 *
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     7
 * This program is distributed in the hope that it will be useful,
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
     9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    10
 * GNU General Public License for more details.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    11
 *
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    12
 * You should have received a copy of the GNU General Public License
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    13
 * along with this program; if not, write to the Free Software
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    15
 */
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    16
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    17
// Network topology
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    18
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    19
// Normally, the use case for emulated net devices is in collections of
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    20
// small simulations that connect to the outside world through specific 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    21
// interfaces.  For example, one could construct a number of virtual
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    22
// machines and connect them via a host-only network.  To use the emulated
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    23
// net device, you would need to set all of the host-only interfaces in
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    24
// promiscuous mode and provide an appropriate device name (search for "eth1"
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    25
// below).  One could also use the emulated net device in a testbed situation
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    26
// where the host on which the simulation is running has a specific interface
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    27
// of interested.  You would also need to set this specific interface into
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    28
// promiscuous mode and provide an appropriate device name.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    29
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    30
// This philosophy carries over to this simple example.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    31
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    32
// We don't assume any special configuration and all of the ns-3 emulated net
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    33
// devices will actually talk to the same underlying OS device.  We rely on 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    34
// the fact that the OS will deliver copies of our packets to the other ns-3
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    35
// net devices since we operate in promiscuous mode.  
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    36
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    37
// Packets will be sent out over the device, but we use MAC spoofing.  The
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    38
// MAC addresses will be generated using the Organizationally Unique Identifier
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    39
// (OUI) 00:00:00 as a base.  This vendor code is not assigned to any 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    40
// organization and so should not conflict with any real hardware.  We'll use 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    41
// the first n of these addresses, where n is the number of nodes, in this
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    42
// simualtion.  It is up to you to determine that using these MAC addresses is
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    43
// okay on your network and won't conflict with anything else (including another
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    44
// simulation using emu devices) on your network.  Once you have made this 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    45
// determination, you need to put the interface you chose into promiscuous mode.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    46
// We don't do it for you since you need to think about it first.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    47
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    48
// This simulation uses the real-time simulator and so will consume ten seconds
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    49
// of real time.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    50
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    51
// By default, we create the following topology
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    52
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    53
//       n0    n1   n2   n3
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    54
//       |     |    |    |
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    55
//       -----------------
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    56
//             "eth1"
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    57
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    58
// - UDP flows from n0 to n1 and back
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    59
// - DropTail queues 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    60
// - Tracing of queues and packet receptions to file "udp-echo.tr"
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    61
// - pcap tracing on all devices
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    62
//
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    63
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    64
#include <fstream>
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    65
#include "ns3/core-module.h"
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    66
#include "ns3/simulator-module.h"
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    67
#include "ns3/helper-module.h"
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    68
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    69
using namespace ns3;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    70
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    71
NS_LOG_COMPONENT_DEFINE ("EmulatedUdpEchoExample");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    72
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    73
int 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    74
main (int argc, char *argv[])
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    75
{
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    76
  std::string deviceName ("eth1");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    77
  uint32_t nNodes = 4;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    78
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    79
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    80
  // Allow the user to override any of the defaults at run-time, via command-line
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    81
  // arguments
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    82
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    83
  CommandLine cmd;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    84
  cmd.AddValue("deviceName", "device name", deviceName);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    85
  cmd.AddValue("nNodes", "number of nodes to create (>= 2)", nNodes);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    86
  cmd.Parse (argc, argv);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    87
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    88
  GlobalValue::Bind ("SimulatorImplementationType", 
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    89
    StringValue ("ns3::RealtimeSimulatorImpl"));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    90
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    91
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    92
  // need at least two nodes
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    93
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    94
  nNodes = nNodes < 2 ? 2 : nNodes;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    95
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    96
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    97
  // Explicitly create the nodes required by the topology (shown above).
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    98
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
    99
  NS_LOG_INFO ("Create nodes.");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   100
  NodeContainer n;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   101
  n.Create (nNodes);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   102
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   103
  InternetStackHelper internet;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   104
  internet.Install (n);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   105
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   106
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   107
  // Explicitly create the channels required by the topology (shown above).
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   108
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   109
  NS_LOG_INFO ("Create channels.");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   110
  EmuHelper emu;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   111
  emu.SetAttribute ("DeviceName", StringValue (deviceName));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   112
  NetDeviceContainer d = emu.Install (n);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   113
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   114
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   115
  // We've got the "hardware" in place.  Now we need to add IP addresses.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   116
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   117
  Ipv4AddressHelper ipv4;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   118
  NS_LOG_INFO ("Assign IP Addresses.");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   119
  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   120
  Ipv4InterfaceContainer i = ipv4.Assign (d);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   121
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   122
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   123
  // Create a UdpEchoServer application on node one.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   124
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   125
  NS_LOG_INFO ("Create Applications.");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   126
  UdpEchoServerHelper server (9);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   127
  ApplicationContainer apps = server.Install (n.Get(1));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   128
  apps.Start (Seconds (1.0));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   129
  apps.Stop (Seconds (10.0));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   130
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   131
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   132
  // Create a UdpEchoClient application to send UDP datagrams from node zero to node one.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   133
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   134
  uint32_t packetSize = 1024;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   135
  uint32_t maxPacketCount = 1;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   136
  Time interPacketInterval = Seconds (1.);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   137
  UdpEchoClientHelper client (i.GetAddress (1), 9);
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   138
  client.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   139
  client.SetAttribute ("Interval", TimeValue (interPacketInterval));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   140
  client.SetAttribute ("PacketSize", UintegerValue (packetSize));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   141
  apps = client.Install (n.Get (0));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   142
  apps.Start (Seconds (2.0));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   143
  apps.Stop (Seconds (10.0));
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   144
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   145
  std::ofstream ascii;
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   146
  ascii.open ("emu-udp-echo.tr");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   147
  EmuHelper::EnablePcapAll ("emu-udp-echo");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   148
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   149
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   150
  // Now, do the actual simulation.
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   151
  //
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   152
  NS_LOG_INFO ("Run Simulation.");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   153
  Simulator::Run ();
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   154
  Simulator::Destroy ();
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   155
  NS_LOG_INFO ("Done.");
16c2970a0344 add emu-udp-echo example
Craig Dowell <craigdo@ee.washington.edu>
parents:
diff changeset
   156
}