Solaris 2.5 and Solaris 2.4 kernel patch 101945-34 and later have a bug in their TCP retransmission algorithm that cause excessive retransmissions over slow links, Sun's bug ID is #1233827.
A work around for this bug is running the following commands at system boot, e.g., by adding them to /etc/init.d/inetinit (values are in milliseconds):
# DO NOT USE THESE CHANGES ON PATCHED SYSTEMS /usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_min 3000 /usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_initial 3000
someone else suggested different changes, because with the above retransmits when you do lose a packet take a long time. The following uses a smaller value for the minimal retransmit interval but also limits the outgoing packet size to 536 bytes, so retransmitted packets are smaller and lost packets too.
# DO NOT USE THESE CHANGES ON PATCHED SYSTEMS /usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_min 1000 /usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_initial 3000 /usr/sbin/ndd -set /dev/tcp tcp_mss_max 536
Patches for this bug have been released, as listed below. You should not combine the patches with the tcp_rexmit_interval setting listed here (patches listed are the first revisions with the fixes; newer versions fixing more problems have been released and can be applied instead)
101945-42: SunOS 5.4: patch for kernel
103169-06: SunOS 5.5: ip driver and ifconfig fixes 103447-03: SunOS 5.5: tcp patch
103448-03: SunOS 5.5_x86: tcp patch 103170-06: SunOS 5.5_x86: ip driver and ifconfig fixes
103582-01: SunOS 5.5.1: /kernel/drv/tcp patch 103630-01: SunOS 5.5.1: ip and ifconfig patch
103631-01: SunOS 5.5.1_x86: ip and ifconfig patch 103581-01: SunOS 5.5.1_x86: /kernel/drv/tcp patch
103632-01: SunOS 5.5.1_ppc: ip and ifconfig patch 103583-01: SunOS 5.5.1_ppc: /kernel/drv/tcp patch