netperfmeter(1)
β¨ NAME β¨
okay so bestie, welcome to netperfmeter(1) β the General Commands Manual page β aka the Network Performance Meter. it's giving main character energy for network benchmarking π
πΈ SYNOPSIS πΈ
netperfmeter [Port]
netperfmeter [Destination:Port] -control-over-tcp
-local=Address[,Address,...]
-controllocal=Address[,Address,...] -runtime=Seconds
-config=Name -scalar=Name -vector=Name
-activenodename=Description -passivenodename=Description
-quiet -verbose -verbosity=Level -v6only -pathmgr=name
-scheduler=name -sndbuf=bytes -rcvbuf=bytes -tcp -sctp -udp
-dccp [FLOWSPEC] [...]
π¦ DESCRIPTION π¦
netperfmeter is a network performance meter, and no cap, it handles the UDP, TCP, MPTCP, SCTP and DCCP transport protocols. it simultaneously transmits bidirectional flows to an endpoint and measures the resulting flow bandwidths. and then? the results get written out as vector and scalar files. obsessed. πβ¨
π ARGUMENTS π
these are the arguments you have to provide, fr fr:
Portβ the port number for the passive side's data socket. the port number of the control socket is gonna beport+1. and the way that specifying a port number turnsnetperfmeterinto passive modeβ¦ it just sits there and waits for incoming connections. lowkey iconic of it π«ΆDestination:Portβ specifies the destination endpoint to connect to. this flipsnetperfmeterinto active mode, meaning it goes and connects to that remote endpoint. no waiting around, she's proactive π-control-over-tcpβ use TCP instead of SCTP for the control connection. super handy for NAT traversal, iykyk.-local=Address[,Address,...]β specifies address(es) of the local data endpoint. β οΈ heads up: for TCP, UDP and DCCP, only the first address is used! on an active node, this option applies to the following flows, so it must be set before specifying a flow. periodt.-controllocal=Address[,Address,...]β specifies address(es) of the local control endpoint (SCTP or TCP). and again: for TCP, only the first address is used!-runtimeβ specifies the measurement runtime in seconds. after that time span is up,netperfmeterfinishes the measurement. bye bestie π-config=Nameβ specifies the name of the configuration file to write. default isoutput.config.-vector=Nameβ specifies the name pattern of the vector files to write. if the suffix of this name is.bz2, the file gets BZip2-compressed on the fly β¨. the vector name is automatically extended to name the flow vector files by adding-<active|passive>-<flow_id>-<stream_id>before the suffix. default isvector.vec.bz2, so the name of the vector file for flow 5, stream 2 on the passive node will bevector-passive-00000005-0002.vec.bz2. cute, right?-scalar=Nameβ specifies the name pattern of the scalar files to write. if the suffix is.bz2, it gets BZip2-compressed on the fly too. the scalar name is automatically extended to name the flow scalar files by adding-<active|passive>-<flow_id>-<stream_id>before the suffix. default isscalar.vec.bz2, so the name of the scalar file for flow 5, stream 2 on the passive node will bescalar-passive-00000005-0002.vec.bz2.-activenodename=Descriptionβ sets a textual description of the active node (e.g.Client).-passivenodename=Descriptionβ sets a textual description of the passive node (e.g.Server).-quietβ reduces verbosity of log output. may be specified multiple times.-verboseβ increases verbosity of log output. may be specified multiple times.-verbosity=Levelβ sets the verbosity of the log output to a given level, from0(lowest) to6(highest). pick your vibe π-v6onlyβ use sockets with IPv6 only (by setting theIPV6_V6ONLYsocket option).-pathmgr=nameβ set MPTCP path manager for the passive node (MPTCP for Linux only. requires socket options kernel patch!). on an active node, this option applies to the following flows, so it must be set before specifying a flow!-scheduler=nameβ set MPTCP scheduler for the passive node (MPTCP for Linux only. requires socket options kernel patch!). on an active node, this option applies to the following flows, so it must be set before specifying a flow!rcvbuf=bytesβ sets the receiver buffer size (on the listening socket) to the given number of bytes.sndbuf=bytesβ sets the sender buffer size (on the listening socket) to the given number of bytes.-sctpβ establish a new SCTP association. the streams of this association must be specified by one or moreFLOWSPECspecifications as following parameters.-tcpβ establish a new TCP or MPTCP connection. the flow of this connection must be specified by aFLOWSPECspecification as following parameter. MPTCP support in NetPerfMeter is realized as an additional"MPTCP"socket (i.e. another TCP socket, but bound to another port number and with CMT enabled). so for MPTCP usage, it must contain the optioncmt=mptcp(see below) to usage the MPTCP socket instead of the TCP socket. π§-udpβ establish a new UDP connection. the flow of this connection must be specified by aFLOWSPECspecification as following parameter.-dccpβ establish a new DCCP connection. the flow of this connection must be specified by aFLOWSPECspecification as following parameter. note that DCCP is not available on all platforms yet. currently, only Linux provides DCCP in its official kernel. πFLOWSPECβ specifies a new flow. the format is:
outgoing_frame_rate:outgoing_frame_size:incoming_frame_rate:incoming_frame_size:option:...
the first four parameters (outgoing_frame_rate:outgoing_frame_size:incoming_frame_rate:incoming_frame_size:option) may be substituted by the option "default", creating a flow with some more or less useful default parameters.
outgoing_frame_rateβ the frame rate of the outgoing transfer (i.e. active node to passive node). if set toconst0, the sender will be saturarted, i.e. it will try to send as much as possible. go off, sender πoutgoing_frame_sizeβ the frame size of the outgoing transfer (i.e. active node to passive node). if set toconst0, there will be no data transmission in this direction. like, nothing. zero. silence. πincoming_frame_rateβ the frame rate of the incoming transfer (i.e. passive node to active node). seeoutgoing_frame_ratefor details.incoming_frame_sizeβ the frame size of the incoming transfer (i.e. active node to passive node). seeoutgoing_frame_sizefor details.
π possible options π
id=Flow Identifierβ sets an ID number for the flow. β οΈ the IDs within a measurement must be unique!description=Descriptionβ sets a textual description of the flow (e.g.HTTP-Flow). do not use spaces in the description! bestie. please.maxmsgsize=Bytesβ splits frames into messages of at most the given number of bytes. messages may not exceed65535bytes.defragtimeout=Millisecondsβ messages not received within this timeout after the last successfully received message are accounted as lost. NOTE: this also happens if the transport protocol is reliable and the message is actually received later! π yes, really. it's giving unfair but that's the spec.unordered=Fractionβ specifies the fraction of the messages that will be sent in unordered mode (SCTP only).ordered=Fractionβ specifies the fraction of the messages that will be sent in ordered mode (SCTP only).reliable=Fractionβ specifies the fraction of the messages that will be sent in reliable mode (SCTP only).unreliable=Fractionβ specifies the fraction of the messages that will be sent in unreliable mode (SCTP only).rtx_timeout=Millisecondsβ sets the retransmission timeout for unreliable messages (SCTP only; not available on all platforms!).rtx_trials=Trialsβ sets the retransmission trials for unreliable messages (SCTP only; not available on all platforms!).rcvbuf=Bytesβ sets the receiver buffer size to the given number of bytes.sndbuf=Bytesβ sets the sender buffer size to the given number of bytes.onoff=t1,t2,...[,repeat]β a list of time stamps when the flow should be activated or deactivated. ifonoffis given, the flow is off at startup. att1, it will be turned on; att2, it will be turned off, etc.. time stamps can be given as absolute values (e.g.onoff=0,10,30β to turn on att=0, turn off att=10and turn on again att=30until end of measurement) or relative values (e.g.on=10,+30,+60β to turn on att=10, turn off att=40and turn on again att=100until end of measurement). a repetition of the list is possible with the keyword"repeat"at the end of the list. then, all values need to be relative values and the number of items must be even. πΈerror_on_abort=on|offβ by default, the active side stops with an error when a transmission tails (e.g. on connection abort). this parameter turns this behaviouronoroff. your call bestie π
nodelay=on|offβ kills the Nagle algorithm, aka stops your packets from being held back waiting for more data to glom onto. TCP and SCTP only, bestie. Default isoffπdebug=on|offβ flips debug mode on the socket. Currently MPTCP for Linux only, and ngl it requires the socket options kernel patch! So no patch, no debug, no cap π«Άndiffports=numberβ sets how many different MPTCP subflows you want. MPTCP for Linux only, and again it requires the socket options kernel patch! β-v6onlyβ use a socket that's IPv6 only, by setting theIPV6_V6ONLYsocket option. Iconic, exclusive, no crossover energy πpathmgr=nameβ set the MPTCP path manager. MPTCP for Linux only, and yep, it requires the socket options kernel patch! π§scheduler=nameβ set the MPTCP scheduler. MPTCP for Linux only, and once more with feeling: requires the socket options kernel patch! πcc=nameβ set the congestion control name. TCP and MPTCP for Linux only πcmt=off|cmt|cmtrpv1|cmtrpv2|like-mptcp|mptcp-like|mptcpβ configures whether Concurrent Multipath Transfer (CMT) gets used, and honestly the way this one has a whole menu of moods:offβ turned off, and this is the default π€cmtβ independent pathscmtrpv1β CMT/RPv1cmtrpv2β CMT/RPv2mptcp/like-mptcp/mptcp-likeβ MPTCP0-255β a custom value, if you're feeling spicy
Currently only supported by CMT-SCTP on FreeBSD systems and MPTCP on Linux systems. And heads up: CMT for MPTCP always uses MPTCP congestion control. Periodt β¨
πΈ EXAMPLES πΈ
Some netperfmeter usage examples, because seeing it in action hits different:
netperfmeter 9000
Start in passive mode, i.e. accepting connections, on port 9000 π
netperfmeter 172.16.255.254:9000 -vector=output.vec.bz2
-scalar=output.sca.bz2 -sctp
const5:exp1000:const3:exp500:description="Alpha":onoff=+10
const5:exp1000:const3:exp500:description="Beta":onoff=+30 -tcp
const5:exp1000:const3:exp500:description="Gamma":onoff=+60
-runtime=300
Start in active mode, i.e. establish connection to 172.16.255.254, port 9000. Frames will be segmented into messages of up to 4096 bytes. Write vectors to output.vec.bz2 (BZip2-compressed). Write scalars to output.sca.bz2 (BZip2-compressed). Establish SCTP association. At t=10s, start flow "Alpha" as first stream of this association, using a frame rate of 5 (constant) and average frame size of 1000 bytes (negative exponential distribution) for the outgoing data and a frame rate of 3 (constant) and average frame size of 500 bytes (negative exponential distribution) for the incoming data. At t=30s, start flow "Beta" as second stream on the SCTP association (same parameters as flow "Alpha"). Start TCP connection. At t=60s, start flow "Gamma" over the TCP connection (same parameters as flow "Alpha"). At t=300s, stop the measurement. Main character energy, honestly π
netperfmeter 172.16.255.254:9000 -control-over-tcp -tcp const2:const1000
Start in active mode, i.e. establish connection to 172.16.255.254, port 9000. The control connection uses TCP instead of SCTP. Simple, clean, slay π₯
π AUTHORS π
Thomas Dreibholz π
https://www.nntb.no/~dreibh/netperfmetermailto://thomas.dreibholz@gmail.com
okay bestie that's the whole page!! This was the netperfmeter(1) manual, dated April 29, 2016 β go forth and measure your networks, you absolute legend π¦β¨π
π¦ where this page comes from
- debian trixie: netperfmeter 1.9.6-1 Β· GPL-3.0-or-later
- ubuntu noble: netperfmeter 1.9.6-1 Β· GPL-3.0-or-later
- ubuntu questing: netperfmeter 1.9.6-1
- ubuntu resolute: netperfmeter 1.9.6-1build1 Β· GPL-3.0-or-later
- ubuntu stonking: netperfmeter 1.9.6-1build1 Β· GPL-3.0-or-later
- Copyright (C) 2009-2024 by Thomas Dreibholz
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms