wiki:ConnectivityTesting

Version 2 (modified by jwilliams@bbn.com, 14 years ago) (diff)

added pageoultine macro

DRAFT: OpenFlow CAMPUS NETWORK TESTS

FIRST-CUT NETWORK TOOLS AND CONFIGURATION FOR TESTS BETWEEN GPO LAB AND OpenFlow CAMPUSES

Below are a few network tools currently supported by the GPO Lab for testing purposes. Should your campus decide to test with BBN, please note the tool, and its respective configurations (NB. These configurations were tested on Ubuntu 10.04).

Network Monitoring Tools

Our objective here is to monitor hosts connected to OpenFlow switches (which perhaps may be used in experiments). The statistics obtained will be available to the public via our monitoring web-server and will prove effective in determining the operational status of OpenFlow nodes.

Note: We have installed the monitoring server in the GPO lab, and unless you intend to run your own server, you need only install the ganglia client (See section below: On the system(or systems) which runs the Ganglia client)

On the system which runs the Ganglia server, do the following:

  1. Install gmetad, ganglia-monitor (from package manager)
  2. Create folder /var/www/ganglia
  3. Copy folder "ganglia-webfrontend" from /usr/share to /var/www/ganglia
  4. Modify/add the following lines as necessary, in the configuration file /etc/gmetad.conf:
    1. data_source "ganglia_server" localhost
    2. data_source "ganglia_client_1" ganglia_client_1_ip
    3. data_source "ganglia_client_2 " ganglia_client_2_ip
    4. gridname "GPO Lab"
    5. setuid_username "ganglia"

where ganglia_server is the hostname of your ganglia server, and ganglia_client_x and ganglia_client_x_ip are the respective names and IP addresses of your ganglia clients (i.e. the systems which will run the ganglia client daemon).

  1. Modify configuration file /etc/gmond.conf

cluster {

name ="OpenFlow Integration"
owner ="ganglia_server"
latlong = "unspecified"
url = "unspecified"
}

  1. Start apache
/etc/init.d/apache2 restart
  1. Start gmond
gmond
  1. Start gmetad
    service gmetad restart
    

On the system(or systems) which runs the Ganglia client, do the following:

  1. Install ganglia-monitor (from package manager)
  2. Modify /etc/ganglia/gmond.conf on all client systems:

cluster {

name ="OpenFlow Integration"
owner ="ganglia_client_x"
latlong = "unspecified"
url = "unspecified"
}

Network Performance and Functional Tools

  1. traceroute
  1. Jperf: requires installation of Jperf, which can be obtained from the following link:

http://www.softpedia.com/progDownload/JPerf-Download-154326.html

PS. Jperf is simply iperf with a GUI

  1. packETH
    • packETH is a packet generator and will be used to generate LLDP packets (though you can generate your choice of packets). On debian distributions (like Ubuntu), packETH can be installed from the package manager. This test simply verifies LLDP connectivity between OpenFlow switches
    • The source computer installs packETH and generates these packets to the destination host. packETH has a self explanatory interface At the receiving end, the host simply runs tcpdump to collect the statistics
  1. VLC Method 1 (For all tests, we assume a client/server paradigm, and that VLC is installed)

VIDEO STREAMING USING VLC

For this test, the video server streams UDP packets to the client who stores the stream in a file (Perhaps for later viewing). This test primarily analyzes performance statistics (using tcpdump) rather than viewing the stream on the client side.

FROM STREAMING SERVER (CLI)

  1. The command below assumes that the server terminal is currently pointing to a directory with file "CMU.mov." This file will be streamed to the given destination IP address and port address with the specified time-to-live of 7.

vlc -vvv CMU.mov --sout '#std{access=udp{ttl=7},mux=ts,dst=a.b.c.d,port=abcd}

FROM CLIENT

  1. The client receives contents of the stream (from port abcd) and stores it in a file named GpENI.mov

vlc -vvv udp://@:abcd --sout file/ts:GpENI.mov 

OR

vlc -vvv udp://@:abcd 

if you would simply like to use vlc to view the stream.

  1. TCPDUMP: FROM CLIENT/SERVER SIDE (Modify accordingly)

Save all packets destined to a given IP address, via a given port number, in a file named "statistics."

 /usr/sbin/tcpdump -nnvvS src a.b.c.d and dst port abcd > statistics
  1. VLC: Method 2

This test is strictly for decorative purposes. For this reason, the received stream will be displayed at the host's terminal. Please note that, due to latency constraints on the streamed frames, DO NOT be disappointed if the resulting video is not HD quality.

HOW TO STREAM VIDEO WITH VLC (From the VLC GUI)

  1. FROM STREAMING SERVER
  • Select Media > streaming
  • Add streams to play-list
  • Select stream > Next > check Display locally (should you choose to view stream locally) > "File=UDP" > Add
  • Specify destination IP address and destination port, and ensure "activate transcoding" is unchecked
  • Select next > stream

  1. FROM CLIENT
  • Select file > open network stream > check UDP/RTP > Port=abcd
  • Optional "Customize=udp://@:abcd" > OK

NB. Ensure your firewall does not block access to UDP traffic on port abcd

HOW TO STREAM VIDEO FROM VLC (From the CLI)

  1. FROM STREAMING SERVER

vlc -vvv CMU.mov --sout '#std{access=udp{ttl=7},mux=ts,dst=a.b.c.d,port=abcd}

The line above assumes the file "CMU.mov" is to be streamed from the server to the host with an IP address of a.b.c.d, via port abcd

  1. FROM CLIENT
vlc -vvv udp://@:abcd

NB. If Xserver fails, try

vlc --no-x11-shm --no-xvideo-shm --no-glx-shm vlc -vvv udp://@:abcd 

OR SIMPLY

 vlc --no-x11-shm -vvv udp://@:abcd
  1. VLC TELECONFERENCING (WEBCAM)
  1. FROM STREAMING SERVER
  • Install ffmpeg
  • Ensure webcam is disconnected and check to see the audio and video drivers in use (if any)
     ls -s /dev/audio*
    
     ls -s /dev/video*
    
  • Plug the webcam and run the two commands above to see the new video and audio drivers in use
  • In vlc, you will need to know the card and device number

  • In vlc, go to media > streaming and select "capture device"
  • video name = /dev/video0 (this is the value obtained from running the ls -s /dev/video* cmd)

  • audio name = hw:1,0 (where hw:x, y st x is the card number and y is the device number)
  • You can do UDP streaming only with TS type codec

  • Below "Transcoding options" Video - H.264 + AAC (TS) gives best resolution but you have to install "mpeg aac audio" for the audio to work
  • I used mpeg-2 + mpga (TS), but the video quality is not close to HD quality
  1. FROM CLIENT
    vlc -vvv udp://@:abcd
    

NB. TO RUN SMOOTHLY specify RTP protocol > activate transcoding > video H.264 + AAC (TS)