Você está tendo o problema mencionado neste artigo de Olaf Titz?
Citando (desde que eu não poderia dizer mais claro). Observe que a camada superior e a camada inferior do TCP possuem timers diferentes. Quando uma conexão de camada superior é iniciada rapidamente, seus temporizadores também são rápidos. Agora, pode acontecer que a conexão inferior tenha temporizadores mais lentos, talvez como uma sobra de um período com uma conexão de base lenta ou não confiável.
Imagine o que acontece quando, nessa situação, a conexão básica começa a perder pacotes. A camada inferior TCP coloca em fila uma retransmissão e aumenta seus tempos limite. Como a conexão é bloqueada durante esse período, a camada superior (ou seja, payload) TCP não recebe um ACK oportuno e também enfileira a retransmissão. Como o tempo limite ainda é menor do que o tempo limite da camada inferior, a camada superior fará fila para mais retransmissões mais rapidamente do que a camada inferior poderá processá-las. Isso faz com que a conexão da camada superior pare muito rapidamente e cada retransmissão apenas aumenta o problema - um efeito interno de fusão.
As provisões de confiabilidade dos TCPs saem pela culatra aqui. As retransmissões da camada superior são completamente desnecessárias, uma vez que a operadora garante a entrega - mas a camada superior do TCP não pode saber disso, porque o TCP sempre assume uma portadora não confiável. "
Talvez essa seja a discussão neste tópico ( link ) para obter algumas dicas que ajudarão.