Por que o SCP fica pendurado na cópia de arquivos maiores que 1405 bytes? [duplicado]

22

Estou tentando copiar um arquivo de uma das minhas máquinas locais para uma máquina remota. Copiar um arquivo com tamanho até 1405 bytes funciona bem. Quando eu tento scp um arquivo maior, o arquivo é copiado, mas o processo scp desliga e não sai. Eu tenho que apertar Ctrl-C para voltar ao shell.

Eu observei o mesmo comportamento com o FTP também. Alguma idéia sobre o que pode estar causando isso?

    
por Chandranshu 29.03.2011 / 15:13

5 respostas

33

Isso definitivamente soa como problemas de MTU (como Konerak apontou), é assim que eu testaria isso:

ip link set eth0 mtu 1400

Isso define temporariamente o tamanho permitido dos pacotes de rede para 1400 na interface de rede eth0 (talvez seja necessário ajustar o nome). Seu sistema dividirá todos os pacotes acima desse tamanho antes de enviá-lo para a rede. Se isso corrigir o comando scp, você precisará encontrar o problema dentro da rede ou tornar essa correção feia permanente; )

    
por 29.03.2011 / 15:25
2

Considere que o MTU é tipicamente 1500 B (devido às limitações da ethernet). Dos 1500 B, nem todos são usados para 'dados'. Os chamados overheads de protocolo recebem um bom pedaço do 1500.

  • O SCP (não compactado) requer um cabeçalho 65 B.
  • O TCP exige um cabeçalho 20-60 B.
  • O
  • IP requer um cabeçalho 20-60 B.

Em vista disso, não é tão surpreendente que sua carga útil seja limitada a 1405 B.

Espero que isso ajude.

p. Divirta-se com wireshark e verifique os cabeçalhos IP. Eles estão permitindo a fragmentação de pacotes?

    
por 21.07.2012 / 15:49
0

Parece um hardware ruim para mim. Se é apenas uma máquina na LAN, pode ter uma placa de rede ruim; se são todas as máquinas na LAN, eu verifico o hub ou roteador.

    
por 29.03.2011 / 15:15
0

Parece uma má configuração do roteador, o limite de transferência de pacotes de dados deve ser menor do que eu acho

    
por 18.07.2012 / 13:58
0

Existe algum tipo de encapsulamento entre as máquinas de origem e de destino envolvidas. O TCP transmitirá um MSS ao abrir a conexão (que será usado para ssh / scp), e esses túneis ao longo do caminho (que adicionam encapsulamento e, portanto, reduzem o MTU máximo disponível) devem compensar modificando de maneira transparente os MSS em rota para o destino (e vice-versa).

Algum túnel (VPN?) não está fazendo o seu trabalho. Ou o MSS da sua máquina está mal configurado.

Eu estou supondo que você verá o mesmo comportamento se você ssh para a máquina da qual você está tentando copiar, e apenas faça um ls em um diretório vazio. Isso deve funcionar bem. Mas se você "cd /; ls -lR" (e, portanto, obter grandes pacotes), isso também irá travar.

    
por 23.07.2012 / 20:16