Sinan Nalkaya wrote:
hello, i have a server and client, there are about 50
routers between
them and connection type is satellite, i am allowed to use addresses
between 224.1.1.1 - 239.1.1.1 and ports between 1000 - 6000 on server,
and have a multicasting policy, my all switches configured properly
about IGMP Snooping
The options you want for satellite are --async, --fec, --max-bitrate on the sender,
and --nosync on the receiver:
udp-sender -f deneme.mpg --portbase 3000 --mcast-rdv-addr 224.2.2.1 -mcast-data-addr
224.2.2.2 --interface eth1 --async --fec 8x6/64 --max-bitrate 39m
udp-receiver -f deneme.mpg --portbase 3000 --mcast-rdv-addr 224.2.2.1 --nosync --interface
dvb0
The --async parameter instructs the sender not to expect anything back
from the client (... which would usually not be possible or advisable
for a satellite transmission), and --fec instructs the sender to include
redundancy (... as the receiver cannot ask for retransmissions, we need
a different way of dealing with packet loss)
--fec IxF/N
means "for every N datablocks include F Fec blocks, and use I interleave".
If less (or equal) than N blocks are lost in a fec group, the group may be
recovered by use of these redundant blocks.
"Interleave" is meant to offer better protection against burst packet loss
(many consecutive packets lost). It works by keeping I fec groups open at
once, and alternating among them. So, with I=8 the first packet transmitted
will be of group 1, the next of group 2, etc. and the nineth will be group 1
again. The effect of this is that a burst packet loss is spread over many
groups. With the parameters above (8x6/64) we can afford to lose 48 packets
in a row (which would mean that each of the 8 groups would only lose 6 packets),
whereas with no interleave, we would fail at 6.
Higher interleave does need more memory though, and introduces more latency.
Increasing the F/N ratio increases bandwidth needs (more redundancy)
--mcast-rdv-addr sets the "rendez-vous" address, to which the packets are sent
that set up the transfer.
--mcast-data-addr sets the address of the actual transfer.
N.B. Currently, both addresses cannot be the same, but this will be fixed in
one of the next versions.
The --nosync parameter on the receivers instructs udp-receiver not to use
synchronous disk writes. This is important as synchronous disk writes may make
the receiver temporarily unavailable for some amount of time, and as the async
mode on the server effectively switches off flow control, this may lead to
interrupted transfers. With --nosync, the probability of such happening is
much, much lower.
Regards,
Alain