I'm working with a 2.4 kernel and we have linux servers (over 3000) that have to talk over a slow satellite connection. We noticed that it was timing out on the initial TCP connection and had to retry. Between the first time out and the second try with a longer timeout it was actually taking longer than it use to with a different OS and we had more traffic on our network because of the retry. We changed one thing in include/linux/tcp.h Change: #define TCP_TIMEOUT_INIT ((unsigned)(3*HZ)) to be #define TCP_TIMEOUT_INIT ((unsigned)(5*HZ)) We did this and connections work the first time and we cut our traffic in half. Is there a better way than having to hardcode this in a header file and having to recompile the kernel? I would have thought someone would have run into this on a high latency network before now and this would be tuneable from /proc I know that there are some socket options that an application can set to override this in some places but I need to do this for all TCP traffic. All suggestions?