O problema de desempenho surge quando você está tunelando TCP sobre TCP, porque você tem duas camadas fazendo correções adaptativas (início lento, evitar congestionamento, restransmitir rápido, ver RFC2001 ).
Não se conscientizando um do outro, eles terão grandes dificuldades se você tiver perda na conexão externa.
Esta página descreve o fenômeno em detalhes.
edit:
Em vez de ficar com o problema TCP over TCP, dê uma olhada no sshuttle que o impede.
Dê uma olhada na seção chamada " Teoria da Operação " para obter mais detalhes sobre essa situação.