Git Product home page Git Product logo

spoorva / packetdrill Goto Github PK

View Code? Open in Web Editor NEW

This project forked from multipath-tcp/packetdrill

0.0 1.0 0.0 871 KB

A Packetdrill version to validate the Upstream MultiPath TCP kernel

Home Page: https://github.com/multipath-tcp/mptcp_net-next/wiki

License: GNU General Public License v2.0

C 90.09% Emacs Lisp 0.47% Shell 0.57% Lex 0.81% Yacc 6.32% Vim Script 0.81% Python 0.72% CMake 0.22%

packetdrill's Introduction

packetdrill

This is the official Google release of packetdrill.

The packetdrill scripting tool enables quick, precise tests for entire TCP/UDP/IPv4/IPv6 network stacks, from the system call layer down to the NIC hardware. packetdrill currently works on Linux, FreeBSD, OpenBSD, and NetBSD. It can test network stack behavior over physical NICs on a LAN, or on a single machine using a tun virtual network device.

The code is GPLv2. Currently the source for the testing tool and a number of test scripts is in the git repository. We will continue to post more tests from our team's Linux TCP test suite (described in our USENIX paper), as time permits.

Links:

External links:

How To Get Started with packetdrill

To check out and build packetdrill:

git clone https://github.com/google/packetdrill.git
cd packetdrill/gtests/net/packetdrill
./configure
make

If you are on a machine with a recent Linux kernel you can su to root and run all of the TCP stack tests included in the packetdrill distribution in the tcp/ directory:

cd ..
./packetdrill/run_all.py -S -v -L -l tcp/

How To Submit a Patch for packetdrill

We welcome patches with bug fixes or new features for packetdrill. The packetdrill project uses git for source code management. Please follow the following steps when sending in a patch for packetdrill:

  1. join the packetdrill e-mail list, so your e-mails to the list will be accepted by Google groups
  2. edit some files, compile, test
  3. verify that you can certify the origin of this code with a Signed-off-by footer, according to the standards of the Linux open source project
  4. git commit your change with a message like:
packetdrill: add amazing feature foo

This commit adds amazing feature foo, which ...

Tested on FooOS and BarOS by doing the following:
 ...

Signed-off-by: John Doe <[email protected]>
  1. Generate git patches using: git format-patch HEAD~1
  2. Check style for the patches by running checkpatch.pl from the Linux source tree, e.g.:
wget http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/scripts/checkpatch.pl
chmod u+x checkpatch.pl
./checkpatch.pl --no-tree --ignore FSF_MAILING_ADDRESS 00*.patch
  1. You can submit your patch as either a GitHub pull request or an e-mail patch series, with something like:
git send-email --to [email protected] 00*.patch

MPTCP version

Code-style

The idea is to easily spot options, direction, by increasing spaces and aligning groups.

Code style for the packet traces:

  • (minimum) 2 spaces between each section: times, syscalls, directions, flags, ACK, Win, options
  • Align all syscalls together: two spaces after the larger time
  • Align TCP flags (S, ., P, F, R)
  • It's OK to align per block, e.g. align for the initiation of the connection but it can be different for the options during a transfer
  • Spaces after commas in TCP options
  • Blank lines between blocks

Guidelines

  • Add load of comments: what the next block is doing and the reason
  • No need to put a TCP window for outbound packets (except for 0) to allow env with different auto-tuning settings
find gtests/net/mptcp/ -name *pkt -exec sed -i -e 's/\(^\S\+\s\+>.*\) win [1-9][0-9]*/\1/' \{\} \;

packetdrill's People

Contributors

dcaratti avatar nealcardwell avatar matttbe avatar malsbat avatar wdebruij avatar tuexen avatar mneilsen avatar jianfenw avatar tracywwnj avatar yuchungcheng avatar yousukseung avatar ligurio avatar mjmartineau avatar ac000 avatar ericsalo avatar fw-strlen avatar rscheff avatar jancd avatar soheilhy avatar xmmu avatar murraystokely avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.