210 likes | 335 Views
Precise Traffic Generator. Geoff Salmon, Monia Ghobadi , Yashar Ganjali , Martin Labrecque , J. Gregory Steffan University of Toronto. What is the Precise Traffic Generator (PTG)?. Uses NetThreads on the NetFPGA to generate packets. Goals
E N D
Precise Traffic Generator Geoff Salmon, MoniaGhobadi, YasharGanjali, Martin Labrecque, J. Gregory Steffan University of Toronto
What is the Precise Traffic Generator (PTG)? • Uses NetThreads on the NetFPGA to generate packets. • Goals • Send packets precisely at the requested time. • Allow packets to be constantly streamed from host PC. • No separate “load phase”.
Why Are These Goals Interesting? • Precise transmission times: • Can emulate diverse network conditions and topologies. • Stream packets from host PC: • Allows generated traffic to be reactive • ie. TCP flows with congestion control
Motivation: Network Testbed Experiments • Testing systems which are sensitive to packet arrival times (ie. packet buffering and scheduling in routers) requires realistic test traffic. • Need to explore a wide range of traffic • With a small testbed, this is difficult or impossible. • With a large enough testbed, this is difficult and expensive.
Simplified Problem • A few computers can create required traffic volume. • However, resulting traffic may not be realistic. The PTG focuses on controlling the packet transmission times. How is the traffic different?
Components of the PTG Linux Kernel 3. pktgen 2. nf2 Linux Driver NetFPGA 1. NetThreads Application NetLink PCI GigE Host Computer Packet Travel Direction
Userspace Program: pktgen • Simple command-line utility used for testing PTG. • Sends descriptions of packets and transmission times to the driver. • Uses inter-transmission times and payload sizes that are either: • fixed, or • read from files. • Communicates with driver using a NetLink socket. • Easily replaced by other userspace or kernel code.
nf2 Linux Driver • Modified version of nf2 driver. • Main jobs: • Receive packet descriptions from NetLink socket. • Build command packets containing multiple descriptions. • Send command packets to the NetThreads app over the PCI bus.
NetThreads Application • Eight threads of execution in NetThreads: • 7 threads receive command packets and prepare packets to transmit in output memory. • 1 thread sends packets from the output memory at correct times. Input Memory Output Memory
PCI Bus is a Bottleneck • Cannot copy all packets across PCI bus. • Main idea: do not copy packet payloads • Payloads are zeroed when sent from NetFPGA. • Experiment often only look at packet headers anyway. • PCI transaction overheads require driver to gather multiple packet descriptions into single command packet.
Transmission Time Precision • Compare against Stanford’s Packet Generator (SPG) PTG/SPG Sending fixed rate packets NetFPGA router measures inter-arrival times Remember it takes 8ns to send 1 byte on GigE.
Throughput: MTU-Size Packets MTU-sized Packet = 1526 bytes Transmits in 1526 * 8 = 12208 ns Add Inter Frame Gap of 96ns. 12304ns is back to back! Preamble Ethernet Hdr Data CRC 22 bytes 46-1500 bytes 4 bytes
Throughput: Smaller Packets cont. • Errors appear between 6000-7000ns. • See the same problem for different packet sizes. • The mean inter-transmission times are correct, • not a PCI bottleneck problem. • Most likely: the sending thread is doing too much work between packet transmissions. • In 6400ns each thread has 6400 ns / 8 ns per cycle / 4 threads = 200 clock cycles
Future Work • Implement receiving packets • Currently PTG cannot receive packets and send them to the host PC, so generating reactive traffic requires another NIC. • Augment existing software network emulator (ie. NISTNet) with PTG to transmit packets at the correct times.
Conclusion • The PTG precisely controls the transmission times of packets streamed from the host PC. • It has the potential to • enhance the realism of software network emulators, and • allow researchers to perform experiments which are currently difficult or impossible.
Modified Hardware Designs • NetThreads design: • Removed Output Queues increase accuracy of transmission times. • NetFPGA reference router design used in measurements: • Removed Input Arbiter and Output Port Lookup.
Inaccuracy of NISTNet • Software network emulators schedule packet transmissions with fixed-rate timers/interrupts. • Ran experiment to measure inaccuracy using NISTNet. NISTNet host Delays packets by 100ms NetFPGA router measuring arrival times PTG Measure inter-arrivals here Measure inter-arrivals here