Você provavelmente está se deparando com efeitos de janelas. Os dados são transmitidos em pacotes de até 1500 bytes. Existe uma janela de transmissão que permite que uma certa quantidade de dados seja transmitida, mas não reconhecida. Seu sistema preencherá o pipe e terá que esperar pelos dados para receber um aviso antes de enviar mais dados. Alguns sistemas usam um tempo limite antes de transmitir a confirmação, portanto, você pode obter uma confirmação de vários pacotes em um, permitindo que seu sistema envie muitos outros pacotes. Isso pode levar a um comportamento em rajadas como você vê.
Existem vários fatores que podem aumentar a intermitência. Erros de amostragem podem aumentar a intermitência aparente. Períodos de amostragem mais longos tendem a minimizar os erros de amostragem.
É raro que um único fluxo possa ser executado na largura de banda total. Para isso, deve haver largura de banda suficiente ao longo de todo o caminho. A latência (tempo de transmissão de ponta a ponta) deve ser baixa o suficiente para que a janela de transmissão nunca seja totalmente usada. Quanto maior a largura de banda, mais difícil é fazê-lo.