HOWTO use ns-3 scripts to drive real hardware (experimental): Difference between revisions

From Nsnam
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 8: Line 8:
to get this HOWTO to work, you will have to set up a VMware environment with
to get this HOWTO to work, you will have to set up a VMware environment with
two virtual machines, "ns-3-test-1" and "ns-3-test-2" as described in
two virtual machines, "ns-3-test-1" and "ns-3-test-2" as described in
 
[[HOWTO use VMware to set up virtual networks (Windows)]].  Once you have this
done, you can pick up at the instructions below.


== HOWTO use ns-3 scripts to drive real hardware (experimental) ==
== HOWTO use ns-3 scripts to drive real hardware (experimental) ==


1.  Get the VMware server software
1.  Start the VMware virtual machines
     a.  You may read in various release notes or documentation that you need
     a.  Select the "Start this virtual machine" command on the "ns-3-test-1"
        Microsoft servers of various kinds.  This is not the case.  You can
        virtual machine in the VMware Server Console;
        run VMware server on XP just fine;
     b.  Recall that you type <Ctrl>+<Alt> to exit the VM;
    b.  Go to http://www.vmware.com/download/server/ to get the software;
     c.  Select the "Start this virtual machine" command on the "ns-3-test-2"
    c.  Select the Download Now button (download as usual);
         virtual machine in the VMware Server Console;
    d.  Install the software in the usual way;
2Clone and build the ns-3-emu experimental repositories on both machines
    e.  Ignore warnings about requiring Microsoft IIS to continue.
     a.  Select the "ns-3-test-1" virtual machine and click in the console to
2.  Request a Serial Number
         interact with the VM
    a.  Go to http://register.vmware.com/content/registration.html
     bLog in as your normal user;
    b.  Fill out the page and select "Submit";
     c.  Change into the repos directory;
    c.  You will be redirected to a page with your new serial number;
     dClone the repository
    d.  Copy the serial number;
        hg clone http://code.nsnam.org/craigdo/ns-3-emu
    e.  Run the VMware server;
     eBuild the code
    f.  Select the menu item Help->Enter Serial Number ...
        ./waf -d debug configure
    g.  Paste in the new serial number.
        ./waf
3.  Install a Virtual Machine
     f.  <Ctrl>+<Alt> to exit the VM
    a.  Exit the VMware Server.
     g.  Select the "ns-3-test-2" virtual machine and click in the console to
     b.  We prefer Ubuntu JeOS (Just enough OS).  You can download the code from
        interact with the VM
        the VMware "Virtual Appliance Marketplace" by going to
     h.  Log in as your normal user;
        http://www.vmware.com/appliances/directory/1136 and selecting "Download
     i.  Change into the repos directory;
        this Appliance" link from the "Download" box to the right of the
     jClone the repository
        appliance name (Ubuntu 7.10 JeOS v1.031 with VMware drivers (70MB));
        hg clone http://code.nsnam.org/craigdo/ns-3-emu
     c.  Download the appliance and unzip the file.  You should have a directory
     kBuild the code
        named "ub710jeos".  Copy this directory to the "c:\Virtual Machines"  
        ./waf -d debug configure
         (VMware) directory.
        ./waf
    d.  Run the VMware server.  If you get a complaint about not having a disk
3Configure the network interfaces
        in your CD-ROM, just continue;
    a.  Select the "ns-3-test-1" virtual machine and click in the console to
    eSelect the "Local Host" radio button and press "OK";
        interact with the VM
    f.  Select the File->Open menu option and Browse for the 
     b.  Log in as root (su or sudo as you wish);
        "ub710jeos" directory and open the "ub710jeos.vmx" file;
     c.  Put the test network interface into promiscuous mode
5.  Start the new Virtual Machine
         ifconfig eth1 promisc up
     a.  Select the "Start this virtual machine" command on the VMware Server
     d<Ctrl>+<Alt> to exit the VM
        Console;
     e.  Select the "ns-3-test-2" virtual machine and click in the console to
    b.  You will get a dialog box asking about a new UUID.  Select the "Create"
         interact with the VM
        radio button and press "OK";
     f.  Log in as root (su or sudo as you wish);
    c.  Ubuntu JeOS will start in a "console window."  If you want to type into
     gPut the test network interface into promiscuous mode
        the JeOS VM, you must click your mouse in the console window.  If you
        ifconfig eth1 promisc up
        want to exit to Windows, press <ctrl>+<alt> and you will pop out of
     h<Ctrl>+<Alt> to exit the VM
         the VM;
4Run the server script as root (I habitually use ns-3-test-2 as the server)
     dLogin as user: root, password root;
     a.  Select the "ns-3-test-2" virtual machine and click in the console to
     e.  Change the password (passwd)if you are connected to the real world and
         interact with the VM
        like your system intact.
     b.  ./waf --run emu-udp-echo-server
     fPing www.google.com to test network connectivity.
     c.  <Ctrl>+<Alt> to exit the VM
5. Freshen the Software Distribution
     d'''''You have about 50 seconds to get back and start the client
    a. apt-get update
        before the server exits'''''
     bapt-get install
5.  Run the client script as root (I habitually use ns-3-test-1 as the client)
    c. apt-get install pkg-config libxml2 libxml2-dev
     aSelect the "ns-3-test-1" virtual machine and click in the console to
    d.  apt-get install gcc g++ make automake autoconf binutils
         interact with the VM
    e. apt-get install openssh-server openssh-client openssl libssl-dev
     b./waf --run emu-udp-echo-client
     f.  apt-get install python-dev mercurial
     cThe client will run for about ten seconds;
     g.  apt-get install tcpdump gdb emacs
6Take a look at the client pcap file
     h.  exit
     a.  tcpdump -nn -tt -r emu-udp-echo-client-0-0.pcap
6.  Log in as User (Appliance comes pre-configured with one user)
     a.  log in as user: user, password user
    b.  Change your password (passwd) if you are connected to the real world and
        like your system intact
7.  Get and Test ns-3-dev
    a.  mkdir repos
     bcd repos
    c.  hg clone http://code.nsnam.org/ns-3-dev
     dcd ns-3-dev
    e.  ./waf configure -d debug
    f.  ./waf
    g./waf --regression
 
As an old math professor once said, "I feel joy"!
 
Now it's time for a breatherYou have a configured Ubuntu JeOS Virtual Machine
and you've built and tested ns-3 on it.  Now might be a good time to copy this
VM somewhere safe as your base machine.  If you want to clone your machine you can
use this copy, or if you manage to wedge the VM, you can use the copy as a
checkpoint and restore a working copy without going through all the pain we just
suffered through.
 
8.  Checkpoint the VM
    a.  log out of the VM (exit);
     b.  Press the red rectangle (stop) button on the VMware Server Console;
     c.  Open My Computer/Virtual Machines
    d.  Copy "ub710jeos" to "ub710jeos checkpoint"
 
Now it's time to start creating that test network that was the reason we started
this process.  We'll use the checkpointed VM we just made and copy it to begin.
 
9.  Create new VM with a Private Network
    a.  Copy "c:\Virtual Machines\ub710jeos checkpoint" to another directory in
         the "Virtual Machines" directory and call it "ns-3-test-1"
     bSelect the File->Open menu option and Browse for the
        "ns-3-test-1" directory and open the "ub710jeos.vmx" file;
     e.  Select the "Edit virtual machine settings" command on the VMware Server
        Console;
    d.  Click on the "Options" tab;
    e.  Enter "ns-3-test-1" in the "Virtual machine name" text box;
    f.  Click on the "Hardware" tab;
    g.  Click on the "Add" button.  You will launch the "Add Hardware Wizard";
    h.  Click "Next";
    i.  Click "Ethernet Adapter" and then "Next";
    j.  Click the "Host Only:  A private network shared with the host" radio
         button and then "Next";
    k.  Click "OK";
    l.  Select the "Start this virtual machine" command on the VMware Server
        Console;
     m.  You will get a dialog box asking about a new UUID.  Select the "Create"
        radio button and press "OK";
    n.  Ubuntu JeOS will start in a "console window."
    o.  Log in as root (you changed the password, right?)
     pEdit (vi) "/etc/network/interfaces" and add the following lines
        '''''before''''' the similar delcaration of the primary network interface:
            # The private network interface
            auto eth1
            iface eth1 inet dhcp
     qEdit (vi) /etc/hosts and replace instances of "ub710jeos" with
        "ns-3-test-1";
    r.  Edit (vi) /etc/hostname and replace "ub710jeos" with "ns-3-test-1";
    s.  Change the host hame by executing "hostname ns-3-test-1";
    t.  Log out of the VM;
    uPress the red square (stop) button on the VMware Server Console to
        stop the VM.
 
Now you have one VM with a private network on it.  You can repeat step nine
as many times as you want, renaming the VMs ns-test-2, ns-test-3, etc.  Go
ahead and make a ns-test-2 virtual machine just so we can do something
interesting.
 
10. Start Your Virtual Test Network
     a.  Select the "ns-3-test-1" tab on the VMware Server Console;
    b.  Select the "Start this virtual machine" command on the VMware Server
         Console;
     cUbuntu JeOS will start in a "console window";
    d. You should see an "ns-3-test-1 login" prompt when it comes up;
    e.  Select the "ns-3-test-2" tab on the VMware Server Console;
     fSelect the "Start this virtual machine" command on the VMware Server
        Console;
    g.  Ubuntu JeOS will start in a "console window."
    h.  You should see an "ns-3-test-2 login" prompt when it comes up;
 
You can now switch between the running virtual machines by selecting the
appropriate tab on the VMware Server Console.  Enter a VM by clicking in the
console window and exit by pressing <ctrl>+<alt>.  Select another tab of a
running VM and enter that VM by clicking in the console window.
 
12. Update /etc/hosts and Check Connectivity
     aLog in to "ns-3-test-1" as root;
    b.  Run ifconfig -a and note the IP address of eth1;
    c.  Log in to "ns-3-test-2" as root;
    d.  Run ifconfig -a and note the IP address of eth1;
    e.  Edit (vi) "/etc/hosts" on "ns-3-test-1" and add an appropriate line
        for "ns-3-test-2".  On my machine it is
        "192.168.136.129 ns-3-test-2";
     fEdit (vi) "/etc/hosts" on "ns-3-test-2" and add an appropriate line
        for "ns-3-test-1".  On my machine it is
         "192.168.136.128 ns-3-test-1";
     gOn ns-3-test-1 run "ping ns-3-test-2" to verify;
     hOn ns-3-test-2 run "ping ns-3-test-1" to verify;
 
At this point, you probably will want to set up users, shells, aliases, other
tools (emacs, ddd, etc) or whatever else you will be needingFor example,
I set up a new user to match my user name on all of the other ns-3-related
machines I work with, set the shell to bash, copied over my aliases, ssh keys,
etc., etc., yadda, yadda.
 
CAVEATS
     a.  Be careful about carelessly using disk space in these VMs.  We have
        intentionally limited the size of the backing disk file to 1 GB so we
        don't consume all of your Windows resources.  This does mean that you
        will be limited to perhaps one or two full builds of ns-3 with regression
        traces depending on what other stuff you install.  If you run out of
        disk, you can increase it using VMware tools installed for you in the
        Windows "Command Prompt."
        i.  Open your "Command Prompt";
        ii.  Change into "C:\Program Files\VMWare\VMware Server;
        iii. There is an executable there named "vmware-vdiskmanager.exe";
        iv.  Find the full path to the disk image file you want to increase;
        v.  Increase the disk size using the following recipe:
            vmware-vdiskmanager -x 16GB "C:\Virtual Machines\ns-3-test-1\ub710jeos.vmdk"
 
Congratulations, you are now ns-3 emulation ready.


[[User:Craigdo|Craigdo]] 16:17, 6 August 2008 (EDT)
[[User:Craigdo|Craigdo]] 21:54, 13 August 2008 (EDT)

Revision as of 01:54, 14 August 2008

Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects

HOWTOs - Installation - Troubleshooting - User FAQ - Samples - Models - Education - Contributed Code - Papers

We provide a realtime emulation package that allows us to connect ns-3 to real networks on real machines. Typically the real network will be a testbed of some kind. The immediate problem for this HOWTO is, of course, that we don't have a testbed handy. What we'll do is show how this can be done in VMware using a couple of virtual machines connected on a dedicated network. In order to get this HOWTO to work, you will have to set up a VMware environment with two virtual machines, "ns-3-test-1" and "ns-3-test-2" as described in HOWTO use VMware to set up virtual networks (Windows). Once you have this done, you can pick up at the instructions below.

HOWTO use ns-3 scripts to drive real hardware (experimental)

1. Start the VMware virtual machines

   a.  Select the "Start this virtual machine" command on the "ns-3-test-1"
       virtual machine in the VMware Server Console;
   b.  Recall that you type <Ctrl>+<Alt> to exit the VM;
   c.  Select the "Start this virtual machine" command on the "ns-3-test-2"
       virtual machine in the VMware Server Console;

2. Clone and build the ns-3-emu experimental repositories on both machines

   a.  Select the "ns-3-test-1" virtual machine and click in the console to
       interact with the VM
   b.  Log in as your normal user;
   c.  Change into the repos directory;
   d.  Clone the repository
       hg clone http://code.nsnam.org/craigdo/ns-3-emu
   e.  Build the code
       ./waf -d debug configure
       ./waf
   f.  <Ctrl>+<Alt> to exit the VM
   g.  Select the "ns-3-test-2" virtual machine and click in the console to
       interact with the VM
   h.  Log in as your normal user;
   i.  Change into the repos directory;
   j.  Clone the repository
       hg clone http://code.nsnam.org/craigdo/ns-3-emu
   k.  Build the code
       ./waf -d debug configure
       ./waf

3. Configure the network interfaces

   a.  Select the "ns-3-test-1" virtual machine and click in the console to
       interact with the VM
   b.  Log in as root (su or sudo as you wish);
   c.  Put the test network interface into promiscuous mode
       ifconfig eth1 promisc up
   d.  <Ctrl>+<Alt> to exit the VM
   e.  Select the "ns-3-test-2" virtual machine and click in the console to
       interact with the VM
   f.  Log in as root (su or sudo as you wish);
   g.  Put the test network interface into promiscuous mode
       ifconfig eth1 promisc up
   h.  <Ctrl>+<Alt> to exit the VM

4. Run the server script as root (I habitually use ns-3-test-2 as the server)

   a.  Select the "ns-3-test-2" virtual machine and click in the console to
       interact with the VM
   b.  ./waf --run emu-udp-echo-server
   c.  <Ctrl>+<Alt> to exit the VM
   d.  You have about 50 seconds to get back and start the client
       before the server exits

5. Run the client script as root (I habitually use ns-3-test-1 as the client)

   a.  Select the "ns-3-test-1" virtual machine and click in the console to
       interact with the VM
   b.  ./waf --run emu-udp-echo-client
   c.  The client will run for about ten seconds;

6. Take a look at the client pcap file

   a.  tcpdump -nn -tt -r emu-udp-echo-client-0-0.pcap

Craigdo 21:54, 13 August 2008 (EDT)