GIMS Tutorial - GEC 12 Packet Capture for GENI Charles Thomas & Dongchan Kim University of Wisconsin - Madison
GIMS Tutorial Follow along (cut and paste commands): Start your VirtualBox Tutorial image.
Tutorial Outline Introduction to GIMS. Setting up for using GIMS. Creating a capture filter. Creating an RSpec. Creating a slice and starting the experiment
Tutorial Outline (Cont.) Tour of the monitoring GUI tools. Pause/Restart traffic capture. Stop and teardown the experiment. Post-experiment data analysis. System capabilities. Future directions / Q&A
What is GIMS? GENI Instrumentation and Measurement Systems Collaboration between University of Wisconsin (Barford), Colgate University (Sommers) and Boston University (Crovella) High-speed packet capture system integrated with ProtoGENI. Infrastructure could be modified to support other types of instrumentation.
GIMS Architecture ProtoGENI Scripts –Allow us to control the capture system. GIMS Backend –Coordinates communication. MySQL Database Capture Device –Daemon & hardware Web-based GUIs –Device and configuration control, real-time monitoring, experiment results.
GIMS Database MySQL Stores information about: –Experiments –Capture Devices –Experiment/Device pairings –Device Configurations –Experiment Results –Device Statistics
capd, the GIMS Capture Daemon XML/RPC control structures Supports a wide variety of hardware. libpcap support Flow aggregation based on IPFIX CryptoPan anonymization Sampling (every N, randomized) Remote storage (SSH, Amazon S3)
ProtoGENI Scripts
Current Functionality CreateSliver –Create new experiment –Load config into device –Start capture StopSliver –Pause capture StartSliver –Restart capture after pause DeleteSlice –Shutdown capture activities and cleanup.
Installing the ProtoGENI Scripts
M2crypto > sudo apt-get install python-m2crypto
Test Scripts > wget
Test Scripts >mkdir test_scripts; >tar xzf protogeni-tests.tar.gz –C test_scripts;
Emulab Account Click Request Account button on
Emulab Account Choose the corresponding option
Emulab Account Fill out the form
Emulab Account Click the Submit button when done
SSL Certificate Click Login button
SSL Certificate Login with your account
SSL Certificate Click Generate SSL Cert in the left column
SSL Certificate Type the PassPhrase for your certificate and Emulab Password
SSL Certificate Click Download to save your SSL Certificate
SSL Certificate Save the SSL Certificate as $HOME/.ssl/encrypted.pem
SSL Certificate Create a $HOME/.ssl/password file containing the PassPhrase for your certificate
SSH Key > cd $HOME/.ssl; ssh-keygen –f protogeni-key
SSH Key Click Edit SSH Keys on the Emulab login page
SSH Key Add the public key and Emulab password at the bottom of the web page
SSH Key The keys added to your account
Creating a Capture Filter
Setup Capture Filter Config Name: GEC12_ Source IP address: Destination IP address: Source port number: Destination port number: 5001 Protocol: UDP
Setup Capture Filter (Cont.) SSH User: gimsusr SSH Host: ops.schooner.wail.wisc.edu SSH Port: 22 SSH Path: /proj/GEC12/data SSH Private Key: foo Rollover Interval: 1 minute Sampling: everyN Param: 5
Creating an Rspec For Your Experiment cd ~geni/Tutorials/GIMS/ cp GimsMSNProduction.rspec GEC12.rspec vi GEC12.rspec
Save as GEC12.rspec When youre done editing, simply type ZZ
Creating a Slice and Starting the Experiment cd ~geni/Tutorials/GIMS ls -l./registerslice.py -n./createsliver.py -m -d -n GEC12.rspec
GIMS Monitoring Tools gimsd - Device monitor LogViewer.cgi Results.cgi
gimsd - The GIMS Hardware Monitoring Daemon Sits in a loop looking for running experiments. If it finds any, queries the capture device via SNMP to get information on the device status (Only queries each device once.), storing results in DB. Calls GetExperimentStats for each running experiment and stores the results in the database. Runs every 15 seconds (configurable).
Pause/Restart Capture./sliveraction.py -m -d -n stop./sliveraction.py -m -d -n start
Stopping and Tearing Down the Experiment./deleteslice.py -m -d -n
Post-Experiment Analysis
Accessing Captured Data As configured by GEC12 config, captured data is at: Host: ops.schooner.wail.wisc.edu Username: gimsusr Password: genigec12 Directory: /proj/GEC12/data/[exp ID]/
Packet analyzer Display packet in fields Selective view of packets by filters WireShark
Experimental Traffic Packet generator: Iperf Protocol: UDP Source IP address: Source port number: Destnation IP address: Destination port number: 5001
Experimental Traffic
WireShark Usage
System Capabilities Current system is fairly low-end Dell 2650 PowerEdge server Onboard e1000 network card
System Capabilities In metadata file, … …
Stress Test – Capture Daemon 1000Mbps w/o Samp. 1000Mbps w/ Samp. 100Mbps w/o Samp. 100Mbps w/ Samp. 1Mbps w/o Samp. 1Mbps w/ Samp. Pkt received Pkt dropped Ratio ** Sampled every 5 th packet
Stress Test – NIC 1000Mbps w/o Samp. 1000Mbps w/ Samp. 100Mbps w/o Samp. 100Mbps w/ Samp. 1Mbps w/o Samp. 1Mbps w/ Samp. Pkt received Pkt dropped Ratio ** Sampled every 5 th packet
Future Directions Wide variety of feature requests, bug fixes, security improvements. Integration with other frameworks. Deployment of 5 more GIMS capture systems across the US to make capture more widely available.
Q&A