PacketFlowPcapFileRecorder¶
Package: inet.queueing.flow
simple module PacketFlowPcapFileRecorder
Records packets passing through the module to a PCAP or PCAPNG file. The file format, and fields like network type, time precision, and direction flag can be configured. It supports truncation of long packets. It can also be configured to flush the file after each write to ensure all packets are captured even in case of a crash.
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
simple module |
Base module for various packet flow modules. A packet flow module passes or streams all pushed or pulled packets after processing them from its input to its output. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“processed {numProcessedPackets} pk ({processedTotalLength})” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
fileFormat |
string |
“pcap” |
|
filename |
string |
the PCAP file to be written |
|
networkType |
int |
the network type header field in the PCAP file, see http://www.tcpdump.org/linktypes.html (1=ethernet, 204=ppp, 105=IEEE 802.11, …) |
|
snaplen |
int |
65535 |
maximum number of bytes to record per packet |
timePrecision |
int |
6 |
Time precison in recorded file. pcap supports only 6 (usec) or 9 (nanosec), pcapng supports more values (see ‘if_tsresol’ option in pcapng file format). |
direction |
string |
direction flag |
|
alwaysFlush |
bool |
false |
flush the PCAP file after each write to ensure that all packets are captured in case of a crash |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
PacketFlowPcapFileRecorder |
|
display |
i=block/rightarrow |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
in |
input |
||
out |
output |
Signals¶
Name |
Type |
Unit |
Description |
|---|---|---|---|
packetPulledIn |
|||
packetPulledOut |
|||
packetPushedIn |
|||
packetPushedOut |
Statistics¶
Name |
Title |
Source |
Record |
Unit |
Interpolation Mode |
Description |
|---|---|---|---|---|---|---|
flowIncomingDataRate |
flow specific incoming data rate |
throughput(demuxFlow(merge(packetPushedIn, packetPulledIn))) |
vector |
bps |
linear |
the statistical value is the flow specific data rate of the incoming packets |
flowIncomingPacketLengths |
flow specific incoming packet lengths |
packetLength(demuxFlow(merge(packetPushedIn, packetPulledIn))) |
sum,histogram,vector |
b |
none |
the statistical value is the flow specific length of the incoming packet |
flowOutgoingDataRate |
flow specific outgoing data rate |
throughput(demuxFlow(merge(packetPushedOut, packetPulledOut))) |
vector |
bps |
linear |
the statistical value is the flow specific data rate of the outgoing packets |
flowOutgoingPacketLengths |
flow specific outgoing packet lengths |
packetLength(demuxFlow(merge(packetPushedOut, packetPulledOut))) |
sum,histogram,vector |
b |
none |
the statistical value is the flow specific length of the outgoing packet |
incomingDataRate |
incoming data rate |
throughput(merge(packetPushedIn, packetPulledIn)) |
vector |
bps |
linear |
the statistical value is the data rate of the incoming packets |
incomingPacketLengths |
incoming packet lengths |
packetLength(merge(packetPushedIn, packetPulledIn)) |
sum,histogram,vector |
b |
none |
the statistical value is the length of the incoming packet |
incomingPackets |
incoming packets |
merge(packetPushedIn, packetPulledIn) |
count |
pk |
the statistical value is the incoming packet |
|
outgoingDataRate |
outgoing data rate |
throughput(merge(packetPushedOut, packetPulledOut)) |
vector |
bps |
linear |
the statistical value is the data rate of the outgoing packets |
outgoingPacketLengths |
outgoing packet lengths |
packetLength(merge(packetPushedOut, packetPulledOut)) |
sum,histogram,vector |
b |
none |
the statistical value is the length of the outgoing packet |
outgoingPackets |
outgoing packets |
merge(packetPushedOut, packetPulledOut) |
count |
pk |
the statistical value is the outgoing packet |
Source code¶
//
// Records packets passing through the module to a PCAP or PCAPNG file. The file format,
// and fields like network type, time precision, and direction flag can be configured.
// It supports truncation of long packets. It can also be configured to flush the file
// after each write to ensure all packets are captured even in case of a crash.
//
simple PacketFlowPcapFileRecorder extends PacketFlowBase like IPacketFlow
{
parameters:
string fileFormat @enum("pcap","pcapng") = default("pcap");
string filename; // the PCAP file to be written
int networkType; // the network type header field in the PCAP file, see http://www.tcpdump.org/linktypes.html (1=ethernet, 204=ppp, 105=IEEE 802.11, ...)
int snaplen = default(65535); // maximum number of bytes to record per packet
int timePrecision = default(6); // Time precison in recorded file. pcap supports only 6 (usec) or 9 (nanosec), pcapng supports more values (see 'if_tsresol' option in pcapng file format).
string direction @enum(inbound, outbound); // direction flag
bool alwaysFlush = default(false); // flush the PCAP file after each write to ensure that all packets are captured in case of a crash
@class(PacketFlowPcapFileRecorder);
}