I've been observing a problem with dropped connections on live streams
being reflected through DSS to clients using HTTP port 80. Here is
the configuration information:
DSS 4.1.1 (Built from source on RH 7.1)
Red Hat Linux 7.1
eepro100 and 8139too Ethernet drivers
smp and uniprocessor systems
The user-level symptom, as seen in QTPlayer/Properties/Streaming
Track/Bit Rate, is that the stream is playing with little or no packet
loss when suddenly the data rate goes to zero.
The problem only seems to occur when the stream is going "across the
Internet" and doesn't reproduce with a LAN connection to the server.
It must happen only when the transmit queue gets full (or something
like that.)
I originally discovered the problem while reflecting a live stream,
but have reproduced it with a "sequentially looped" playlist broadcast
and have been using the playlist broadcast as a test for the last few
days. (It's easy to setup on any server and eliminates variables.)
Playlist broadcaster is running on the same server as the reflector (I
use streamingadminserver.pl to set it up.)
The problem does not seem to occur with UDP streams.
Using EtherPeek, I noticed "Bad TCP Checksum" errors in the last
packets sent before the connection is dropped. It looks like TCP
sends several re-transmits each with a bad checksum, the client throws
them out and sends no acks, and the server eventually times out.
Using tcpdump (I had to compile a newer version than ships with RH7.1
to get the checksum checking code) I verified that the packets are
being corrupted on the server.
So, at this point, it looks like a problem in the Linux TCP stack. I
suppose it could be a problem in the Ethernet driver, but I have seen
it with two different drivers (which could have the same bug from
common code.)
Things I've tried:
1) Different servers in different Internet locations
2) Commenting out changes in /etc/sysctl.conf:
# Set max well above default for streaming server performance
#net.core.rmem_max = 1048576
# Set max well above default for streaming server performance
#net.core.wmem_max = 1048576
3) Changes in /etc/streamingserver.xml
a) Lowering "max_tcp_buffer_size" to "60000" and then to "20000"
b) Setting "disable_overbuffering" to "true"
Things not tried yet:
1) Installing an updated kernel for RH7.1. RH7.1 ships with 2.4.2 and
RedHat provides an update to 2.4.9-34.
2) Using RH7.3. (Our application has many components and switching to
RH7.3 is not easy or risk-free.)
3) Testing on other platforms (e.g. Mac OS X, BSD, Windows). (Not an
option for our customer, but could help define the problem - although
it sure looks like a Linux kernel/driver problem at this point.)
Any information, ideas, or suggestions would be greatly appreciated.
My next step is to install the kernel updates. I'll report back to
the list with final results (hopefully a solution.)
Regards,
Sean
--
-----------------------------------------------------------------------
----
M. Sean Gilligan : mailto:email@hidden
Catalla Systems, Inc. : 831-439-9568 x11
-----------------------------------------------------------------------
----
_______________________________________________
streaming-server-developers mailing list |
email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/streaming-server-> developers
Do not post admin requests to the list. They will be ignored.