EnglishFrenchSpanish

OnWorks favicon

udp-sender - Online in the Cloud

Run udp-sender in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command udp-sender that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

PROGRAM:

NAME


udp-sender - broadcast file on a LAN

SYNOPSIS


udp-sender [--file file] [--full-duplex] [--half-duplex] [--pipe pipe] [--portbase
portbase] [--blocksize size] [--interface net-interface] [--mcast-data-address data-mcast-
address] [--mcast-rdv-address mcast-rdv-address] [--max-bitrate bitrate] [--pointopoint]
[--async] [--log file] [--min-slice-size min] [--max-slice-size max] [--slice-size] [--ttl
time-to-live] [--fec stripesxredundancy/stripesize] [--print-seed]
[--rexmit-hello-interval interval] [--autostart autostart] [--broadcast] [--min-receivers
receivers] [--min-wait sec] [--max-wait sec] [--nokbd] [--retries-until-drop n]
[--bw-period n] [--rate-governor module.so:key1=value1,key2=value2] [--stat-period n]
[--print-uncompressed-position flag]

DESCRIPTION


"Udp-sender" is used to broadcast a file (for instance a disk image) to multiple
"udp-receivers" on the local LAN. In order to do this, it uses Ethernet multicast or
broadcast, so that all receivers profit from the same physical datastream. Thus, sending
to 10 destinations does not take more time than it would take to send just 2.

OPTIONS


Basic options
--file file
Reads data to be transmitted from file. If this parameter is not supplied, data to be
transmitted is read from stdin instead.

--pipe command
Sends data through pipe before transmitting it. This is useful for
compressing/decompressing it, or for stripping out unused blocks. The command gets a
direct handle on the input file or device, and thus may seek inside it, if needed.
"Udpcast" itself also keeps a handle on the file, which is used for an informal
progress display. The command's stdout is a pipe to udpcast.

--autostart n
Starts transmission after n retransmissions of hello packet, without waiting for a key
stroke. Useful for unattended operation, where udp-sender is started from a cron-job
for a broadcast/multicast at a scheduled time.

Networking options
The following networking options should be supplied both on the sender and the receivers:

--portbase portbase
Default ports to use for udpcast. Two ports are used: portbase and portbase+1 . Thus,
Portbase must be even. Default is 9000. The same portbase must be specified for both
"udp-sender" and "udp-receiver".

--interface interface
Network interface used to send out the data. Default is "eth0"

--ttl time to live
Sets the time-to-live parameter for the multicast packets. Should theoretically allow
to use UDPCast beyond the local network, but not tested for lack of a multicast
router.

--mcast-rdv-address address
Uses a non-standard multicast address for the control (rendez-vous) connection. This
address is used by the sender and receivers to "find" each other. This is not the
address that is used to transfer the actual data.

By default "mcast-rdv-address" is the Ethernet broadcast address if "ttl" is 1, and
224.0.0.1 otherwise. This setting should not be used except in very special
situations, such as when 224.0.0.1 cannot be used for policy reasons.

The following networking options should be supplied only on the sender:

--mcast-data-address address
Uses the given address for multicasting the data. If not specified, the program will
automatically derive a multicast address from its own IP (by keeping the last 27 bits
of the IP and then prepending 232).

--pointopoint
Point-to-point mode. Only a single receiver is allowed, but the data will be directly
send to this receiver (in unicast mode), rather than multicast/broadcast all over the
place. If no async mode is chosen, and there happens to be only one receiver, point-
to-point is activated automatically.

--nopointopoint
Don't use point-to-point, even if there is only one single receiver.

--full-duplex
Use this option if you use a full-duplex network. T-base-10 or 100 is full duplex if
equipped with a switch. Hub based networks, or T-base-2 networks (coaxial cable) are
only half-duplex and you should not use this option with these networks, or else you
may experience a 10% performance hit.

N.B. On high-latency WAN links, the full-duplex option can lead to substantial
performance improvements, because it allows udp-sender to send more data while it is
still waiting for the previous batch to get acknowledged.

--half-duplex
Use half duplex mode (needed for Hub based or T-base-2 networks). This is the default
behavior in this version of udpcast.

--broadcast
Use Ethernet broadcast, rather than multicast. Useful if you have Ethernet cards which
don't support multicast.

By default, "udpcast" uses multicast. This allows sending the data only to those
receivers that requested it. Ethernet cards of machines which don't participate in the
transmission automatically block out the packets at the hardware level. Moreover,
network switches are able to selectively transmit the packets only to those network
ports to which receivers are connected. Both features thus allow a much more efficient
operation than broadcast. This option should only be supplied on the sender.

-b blocksize
Choses the packet size. Default (and also maximum) is 1456.

Unidirectional mode (without return channel)
The options described below are useful in situations where no "return channel" is
available, or where such a channel is impractical due to high latency. In an
unidirectional setup (i.e. without return channel), the sender only sends data but doesn't
expect any reply from the receiver.

Unidirectional options must be used together, or else the transfer will not work
correctly. You may for example use the following command line:

"udp-sender --async --max-bitrate 10m --fec 8x8"

--async
Asynchronous mode. Do not request confirmations from the receiver. Best used together
with forward error correction and bandwidth limitation, or else the receiver will
abort the reception as soon as it misses a packet. When the receiver aborts the
reception in such a way, it will print a list of packets lost in the slice causing the
problem. You can use this list to tune the forward error correction parameters.

--max-bitrate bitrate
Limits bandwidth used by udpcast. Useful in asynchronous mode, or else the sender may
send too fast for the switch and/or receiver to keep up. Bitrate may be expressed in
bits per second (--bitrate 5000000), kilobits per second ("--bitrate 5000k") or
megabits per second ("--bitrate 5m"). This is the raw bitrate, including packet
headers, forward error correction, retransmissions, etc. Actual payload bitrate will
be lower.

--fec interleave"x"redundancy"/"stripesize
Enables forward error correction. The goal of forward error correction is to transmit
redundant data, in order to make up for packets lost in transit. Indeed, in
unidirectional mode, the receivers have no way of requesting retransmission of lost
packets, thus the only way to address packet loss is to include redundant information
to begin with. The algorithm is designed in such a way that if r redundant packets are
transmitted, that those can be used to compensate for the loss of any r packets in the
same FEC group (stripe).

In order to increase robustness of the FEC algorithm against burst packet losses, each
slice is divided in interleave stripes. Each stripe has stripesize blocks (if not
specified, stripesize is calculated by diving slice-size by interleave). For each
stripe, redundancy FEC packets are added. Stripes are organized in such a fashion that
consecutive packets belong to different stripes. This way, we ensure that burst losses
affect different stripes, rather than using all FEC packets of a single stripe.
Example: "--fec 8x8/128"

--rate-governor module.so:key1=value1,key2=value2
Applies a dynamically loadable rate governor. module.so is the name of the preloadable
module, which is followed by a number of property assignments (key1=value1). The rate
governor controls the transmission rate according to various criteria, such as
congestion information received from a routing or encapsulating device. See comments
in "/usr/include/udpcast/rateGovernor.h" and example in "examples/rateGovernor" for
more details

--rexmit-hello-interval timeout
If set, rebroadcasts the HELLO packet used for initiating the casting each timeout
milliseconds.

This option is useful together with asyc mode, because with async mode the receiver
won't send a connection request to the sender (and hence won't get a connection
reply). In async mode, the receivers get all needed information from the hello packet
instead, and are thus particularly dependent on the reception of this packet, making
retransmission useful.

This option is also useful on networks where packet loss is so high that even with
connection requests, sender and receiver would not find each other otherwise.

--retries-until-drop retries
How many time to send a REQACK until dropping a receiver. Lower retrycounts make
"udp-sender" faster to react to crashed receivers, but they also increase the
probability of false alerts (dropping receivers that are not actually crashed, but
merely slow to respond for whatever reason)

--streaming
Allows receivers to join an ongoing transmission mid through

Keyboardless mode
The options below help to run a sender in unattended mode.

--min-receivers n
Automatically start as soon as a minimal number of receivers have connected.

--min-wait t
Even when the necessary amount of receivers do have connected, still wait until t
seconds since first receiver connection have passed.

--max-wait t
When not enough receivers have connected (but at least one), start anyways when t
seconds since first receiver connection have passed.

--nokbd
Do not read start signal from keyboard, and do not display any message telling the
user to press any key to start.

--start-timeout sec
sender aborts at start if it doesn't see a receiver within this many seconds.
Furthermore, transmission of data needs to start within this delay. Once transmission
is started, the timeout no longer applies.

--daemon-mode
Do not exit when done, but instead wait for the next batch of receivers. If this
option is given twice, udp-sender puts itself into the background, closes its standard
file descriptors, and acts as a real daemon.

--pid-file file
Allow to specify a pid file. If given together with "--daemon-mode", udp-sender will
write its pid into this file. If given together with "--kill", the process with the
given pid will be killed.

--kill
Shuts down the udp-sender identified by the pid file (which also must be specified).
Kill does not interrupt an ongoing transmission, but instead waits until it is
finished.

Example:

"udp-sender -f zozo --min-receivers 5 --min-wait 20 --max-wait 80"

· If one receiver connects at 18h00.00, and 4 more within the next 5 minutes, start at
18h00.20. (5 receivers connected, but min-wait not yet passed)

· If one receiver connects at 18h00.00, and 3 more within the next 5 minutes, then a
last one at 18h00.25, start right after.

· If one receiver connects at 18h00.00, then 3 more within the next 15 minutes, then no
one, start at 18h01.20. (not enough receivers, but we start anyways after max-wait).

Logging and statistics options
The options instruct "udp-sender" to log some additional statistics to a file:

--stat-period seconds
Every so much milliseconds, print some statistics to stderr: how much bytes sent so
far log, position in uncompressed file (if applicable), retransmit count... By
default, this is printed every half second.

--print-uncompressed-position flag
By default, udp-sender only prints the position in uncompressed file if the 2
following conditions are met:

· Input is piped via a compressor ("-p " option).

· The primary input is seekable (file or device)

With the "--print-uncompressed-position", options, you can change this behavior:

· If flag is 0, uncompressed position will never be printed, even if above
conditions are met

· If flag is 1, uncompressed position will always be printed, even if above
conditions are not met

--log file
Logs some stuff into file.

--no-progress
Do not display progress statistics.

--bw-period seconds
Every so much seconds, log instantenous bandwidth seen during that period. Note: this
is different from the bandwidth displayed to stderr of the receiver, which is the
average since start of transmission.

Tuning options (sender)
The following tuning options are all about slice size. Udpcast groups its data in slices,
which are a series of blocks (UDP packets). These groups are relevant for

· data retransmission: after each slice, the server asks the receivers whether they have
received all blocks, and if needed retransmits what has been missing

· forward error correction: each slice has its set of data blocks, and matching FEC
blocks.

--min-slice-size size
minimum slice size (expressed in blocks). Default is 16. When dynamically adjusting
slice size (only in non-duplex mode), never use smaller slices than this. Ignored in
duplex mode (default).

--max-slice-size size
maximum slice size (expressed in blocks). Default is 1024. When dynamically adjusting
slice size (only in non-duplex mode), never use larger slices than this. Ignored in
duplex mode (default).

--default-slice-size size
Slice size used (starting slice size in half-duplex mode).

--rehello-offset offs
in streaming mode, how many packets before end of slice the hello packet will be
transferred (default 50). Chose larger values if you notice that receivers are
excessively slow to pick up running transmission

Tuning the forward error correction
There are three parameters on which to act:

redundancy
This influences how much extra packets are included per stripe. The higher this is,
the more redundancy there is, which means that the transmission becomes more robust
against loss. However, CPU time necessary is also proportional to redundancy (a factor
to consider on slow PC's), and of course, a higher redundancy augments the amount of
data to be transmitted.

interleave
This influences among how many stripes the data is divided. Higher interleave improves
robustness against burst loss (for example, 64 packets in a row...). It doesn't
increase robustness against randomly spread packet loss. Note: interleave bigger than
8 will force a smaller stripesize, due to the fact that slicesize is limited to 1024.

stripesize
How many data blocks there are in a stripe. Due to the algorithm used, this cannot be
more than 128. Reducing stripe size is an indirect way of augmenting (relative)
redundancy, without incurring the CPU penalty of larger (absolute) redundancy.
However, a larger absolute redundancy is still preferable over a smaller stripesize,
because it improves robustness against clustered losses. For instance, if 8/128 is
preferable over 4/64, because with 8/128 the 8 FEC packets can be used to compensate
for the loss of any of the 128 data packets, whereas with 4/64, each group of 4 FEC
packets can only be used against its own set of 64 data packets. If for instance the
first 8 packets were lost, they would be recoverable with 8/128, but not with 4/64.

Considering these, change parameters as follows:

· If you observe long stretches of lost packets, increase interleave

· If you observe that transfer is slowed down by CPU saturation, decrease redundancy and
stripesize proportionnally.

· If you observe big variations in packet loss rate, increase redundancy and stripesize
proportionnally.

· If you just observe high loss, but not necessarily clustered in any special way,
increase redundancy or decrease stripesize

· Be aware that network equipment or the receiver may be dropping packets because of a
bandwidth which is too high. Try limiting it using "max-bitrate"

· The receiver may also be dropping packets because it cannot write the data to disk
fast enough. Use hdparm to optimize disk access on the receiver. Try playing with the
settings in "/proc/sys/net/core/rmem_default" and "/proc/sys/net/core/rmem_max", i.e.
setting them to a higher value.

Use udp-sender online using onworks.net services


Free Servers & Workstations

Download Windows & Linux apps

  • 1
    QNAP NAS GPL Source
    QNAP NAS GPL Source
    GPL source for QNAP Turbo NAS.
    Audience: Developers. User interface:
    Web-based. Programming Language: C,
    Java. Categories:System, Storage,
    Operating System Ker...
    Download QNAP NAS GPL Source
  • 2
    deep-clean
    deep-clean
    A Kotlin script that nukes all build
    caches from Gradle/Android projects.
    Useful when Gradle or the IDE let you
    down. The script has been tested on
    macOS, but ...
    Download deep-clean
  • 3
    Eclipse Checkstyle Plug-in
    Eclipse Checkstyle Plug-in
    The Eclipse Checkstyle plug-in
    integrates the Checkstyle Java code
    auditor into the Eclipse IDE. The
    plug-in provides real-time feedback to
    the user about viol...
    Download Eclipse Checkstyle Plug-in
  • 4
    AstrOrzPlayer
    AstrOrzPlayer
    AstrOrz Player is a free media player
    software, part based on WMP and VLC. The
    player is in a minimalist style, with
    more than ten theme colors, and can also
    b...
    Download AstrOrzPlayer
  • 5
    movistartv
    movistartv
    Kodi Movistar+ TV es un ADDON para XBMC/
    Kodi que permite disponer de un
    decodificador de los servicios IPTV de
    Movistar integrado en uno de los
    mediacenters ma...
    Download movistartv
  • 6
    Code::Blocks
    Code::Blocks
    Code::Blocks is a free, open-source,
    cross-platform C, C++ and Fortran IDE
    built to meet the most demanding needs
    of its users. It is designed to be very
    extens...
    Download Code::Blocks
  • More »

Linux commands

  • 1
    abidw
    abidw
    abidw - serialize the ABI of an ELF
    file abidw reads a shared library in ELF
    format and emits an XML representation
    of its ABI to standard output. The
    emitted ...
    Run abidw
  • 2
    abilint
    abilint
    abilint - validate an abigail ABI
    representation abilint parses the native
    XML representation of an ABI as emitted
    by abidw. Once it has parsed the XML
    represe...
    Run abilint
  • 3
    core-cleanup
    core-cleanup
    core-cleanup - clean-up script for CORE
    DESCRIPTION: usage: core-cleanup [-d
    [-l]] Clean up all CORE namespaces
    processes, bridges, interfaces, and
    session dir...
    Run core-cleanup
  • 4
    core-daemon
    core-daemon
    core-daemon - CORE daemon manages
    emulation sessions started from GUI or
    scripts ...
    Run core-daemon
  • 5
    g++-4.9
    g++-4.9
    gcc - GNU project C and C++ compiler ...
    Run g++-4.9
  • 6
    g++-5
    g++-5
    gcc - GNU project C and C++ compiler ...
    Run g++-5
  • More »

Ad