PacketDrillApp

Package: inet.applications.packetdrill

PacketDrillApp

simple module

This is a port of Google's Packetdrill testing tool into the INET Framework.

Google released the script-based Packetdrill tool in 2013. It allows one to test transport protocols like UDP and TCP on Linux and BSD-based operating systems. Scripts define test cases that inject packets to the protocol implementation under test, perform operations using the API controlling the transport protocol, and verify the sending of packets, all at specified times. The ported version provides a simple and powerful method of testing transport protocols implemented in INET.

PacketDrillApp

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Used in compound modules

Name Type Description
PacketDrillHost compound module

IPv4 host with SCTP, TCP, UDP layers and a packetdrill application. The application has a direct connection to the TunInterface.

Parameters

Name Type Default value Description
scriptFile string
startTime double 0s
localPort int

port number of the initiator

remotePort int
localAddress string
remoteAddress string
interfaceTableModule string
interface string

tun interface name

inboundStreams int 20
outboundStreams int 20
streamReset int 0
crcMode string "declared"
latency double 0s

Properties

Name Value Description
display i=block/app

Gates

Name Direction Size Description
socketIn input
socketOut output

Source code

//
// This is a port of Google's Packetdrill testing tool into the INET Framework.
//
// Google released the script-based Packetdrill tool in 2013. It allows one
// to test transport protocols like UDP and TCP on Linux and BSD-based
// operating systems. Scripts define test cases that inject packets to the
// protocol implementation under test, perform operations using the API
// controlling the transport protocol, and verify the sending of packets, all
// at specified times. The ported version provides a simple and powerful
// method of testing transport protocols implemented in INET.
//
simple PacketDrillApp like IApp
{
    parameters:
        string scriptFile;
        double startTime @unit(s) = default(0s);
        int localPort; // port number of the initiator
        int remotePort;
        string localAddress;
        string remoteAddress;
        string interfaceTableModule;
        string interface;   // tun interface name
        int inboundStreams = default(20);
        int outboundStreams = default(20);
        int streamReset = default(0);
        string crcMode @enum("declared","computed") = default("declared");
        double latency @unit(s) = default(0s);
        @display("i=block/app");
    gates:
        input socketIn;
        output socketOut;
}

File: src/inet/applications/packetdrill/PacketDrillApp.ned