Como depurar porque a taxa de transferência TCP / IP da WAN está abaixo do esperado?

3

Estou tentando descobrir por que o throughput tcp / ip entre dois hosts que eu controle é muito menor que o esperado.

Host A: conectividade com a Internet fornecida pela Comcast (Residencial) no Metrô de Boston - pode consistentemente obter download de 100Mbps de vários sites conhecidos (por exemplo, baixando o Google Chrome)

Host B: conectividade com a Internet fornecida pela Cogent; Consegue atingir quase 100 Mbps de e para vários sites.

Conexão de Teste: o Host A baixa um arquivo grande de B, via rsync / ssh em uma porta não padrão (22442) (por exemplo, rsync --progress -e 'ssh -p 22442' ... - a taxa de transferência é apenas em torno de 2.5Mbps (292564 Bps)

Outros clientes (por exemplo, uma instância inicial do EC2) podem atingir uma taxa de transferência de quase 30 vezes ao tentar o mesmo download de B

Eu consegui capturar estatísticas da conexão entre A e B com tcptrace (anexado abaixo), mas não tenho certeza se algo parece errado.

Eu imagino que há algo do meu lado que precisa de ajustes, mas também tenho uma leve suspeita sobre a Comcast moldar o tráfego - então, antes de começar a me debater, pensei em buscar conselhos. Quais são alguns bons próximos passos para eu tentar? Desde já, obrigado.

tcptrace -r -l -o1 dump.out
 1 arg remaining, starting with 'dump.out'
 Ostermann's tcptrace -- version 6.6.7 -- Thu Nov  4, 2004

 5763 packets seen, 5763 TCP packets traced
 elapsed wallclock time: 0:00:00.019828, 290649 pkts/sec analyzed
 trace file elapsed time: 0:00:18.655110
 TCP connection info:
 1 TCP connection traced:
 TCP connection 1:
    host a:        XXX.XXXX.XXX:41608
    host b:        XXX.XXXX.XXX:22442
    complete conn: RESET    (SYNs: 2)  (FINs: 1)
    first packet:  Sun May 26 14:48:52.923281 2013
    last packet:   Sun May 26 14:49:11.578391 2013
    elapsed time:  0:00:18.655110
    total packets: 5763
    filename:      dump.out
    a->b:                 b->a:
      total packets:          1946           total packets:          3817
      resets sent:              15           resets sent:               0
      ack pkts sent:          1930           ack pkts sent:          3817
      pure acks sent:         1874           pure acks sent:           35
      sack pkts sent:          228           sack pkts sent:            0
      dsack pkts sent:           0           dsack pkts sent:           0
      max sack blks/ack:         3           max sack blks/ack:         0
      unique bytes sent:      4100           unique bytes sent:   5457821
      actual data pkts:         55           actual data pkts:       3781
      actual data bytes:      4100           actual data bytes:   5457821
      rexmt data pkts:           0           rexmt data pkts:           0
      rexmt data bytes:          0           rexmt data bytes:          0
      zwnd probe pkts:           0           zwnd probe pkts:           0
      zwnd probe bytes:          0           zwnd probe bytes:          0
      outoforder pkts:           0           outoforder pkts:          23
      pushed data pkts:         55           pushed data pkts:         41
      SYN/FIN pkts sent:       1/1           SYN/FIN pkts sent:       1/0
      req 1323 ws/ts:          Y/Y           req 1323 ws/ts:          Y/Y
      adv wind scale:            7           adv wind scale:            7
      req sack:                  Y           req sack:                  Y
      sacks sent:              228           sacks sent:                0
      urgent data pkts:          0 pkts      urgent data pkts:          0 pkts
      urgent data bytes:         0 bytes     urgent data bytes:         0 bytes
      mss requested:          1460 bytes     mss requested:          1460 bytes
      max segm size:           712 bytes     max segm size:          1448 bytes
      min segm size:            16 bytes     min segm size:            21 bytes
      avg segm size:            74 bytes     avg segm size:          1443 bytes
      max win adv:          301184 bytes     max win adv:           21632 bytes
      min win adv:            5888 bytes     min win adv:           14592 bytes
      zero win adv:              0 times     zero win adv:              0 times
      avg win adv:          269168 bytes     avg win adv:           21615 bytes
      initial window:           20 bytes     initial window:           21 bytes
      initial window:            1 pkts      initial window:            1 pkts
      ttl stream length:      4101 bytes     ttl stream length:        NA
      missed data:               1 bytes     missed data:              NA
      truncated data:            0 bytes     truncated data:            0 bytes
      truncated packets:         0 pkts      truncated packets:         0 pkts
      data xmit time:       18.128 secs      data xmit time:       18.527 secs
      idletime max:         5206.5 ms        idletime max:         5285.9 ms
      throughput:              220 Bps       throughput:           292564 Bps

      RTT samples:              57           RTT samples:            1661
      RTT min:                59.0 ms        RTT min:                 0.0 ms
      RTT max:               106.1 ms        RTT max:                40.1 ms
      RTT avg:                77.2 ms        RTT avg:                 1.4 ms
      RTT stdev:              17.2 ms        RTT stdev:               7.1 ms

      RTT from 3WHS:          60.0 ms        RTT from 3WHS:           0.0 ms

      RTT full_sz smpls:         2           RTT full_sz smpls:         1
      RTT full_sz min:        60.0 ms        RTT full_sz min:         0.0 ms
      RTT full_sz max:        70.1 ms        RTT full_sz max:         0.0 ms
      RTT full_sz avg:        65.1 ms        RTT full_sz avg:         0.0 ms
      RTT full_sz stdev:       0.0 ms        RTT full_sz stdev:       0.0 ms

      post-loss acks:            0           post-loss acks:           16
      segs cum acked:            0           segs cum acked:         2090
      duplicate acks:            0           duplicate acks:          201
      triple dupacks:            0           triple dupacks:            8
      max # retrans:             0           max # retrans:             0
      min retr time:           0.0 ms        min retr time:           0.0 ms
      max retr time:           0.0 ms        max retr time:           0.0 ms
      avg retr time:           0.0 ms        avg retr time:           0.0 ms
      sdv retr time:           0.0 ms        sdv retr time:           0.0 ms

Algumas atualizações Eu tentei algumas outras coisas.

  • Primeiramente eu tentei "reencaminhar" o fluxo tunelando a transferência através de um terceiro host - consegui um rendimento muito respeitável por cerca de 30 minutos e então o throughput decaiu por um fator de 20-ish para mais ou menos correspondência o fluxo original.

  • Segundo, executei mtr de B- > A com pacotes de tamanho 1400b e vi o seguinte:


    X.X.X       (0.0.0.0)                                                                        Mon May 27 19:20:37 2013
    Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                                                 Packets               Pings
     Host                                                                      Loss%   Snt   Last   Avg  Best  Wrst StDev
     1. X-X-X.X.X                                                               0.0%   173    0.1   0.1   0.1   0.2   0.0
     2. X-X.X.X-X.X.atlas.cogentco.com                                          0.0%   173    0.9   0.9   0.8   4.2   0.3
     3. X-X.X.X-X.X.atlas.cogentco.com                                          0.0%   173    0.7  12.7   0.7 211.8  38.3
     4. te7-3.ccr01.ord07.atlas.cogentco.com                                    0.0%   173    1.1  12.8   0.7 196.8  39.9
     5. te0-4-0-7.mpd21.ord01.atlas.cogentco.com                                0.0%   173    1.0   1.0   0.9   1.5   0.1
     6. be2006.ccr21.ord03.atlas.cogentco.com                                   0.0%   173    1.3   1.3   1.2   1.9   0.1
     7. be-202-pe04.350ecermak.il.ibone.comcast.net                             0.0%   172   39.7  41.6  36.3 156.7  15.4
     8. he-3-2-0-0-cr01.350ecermak.il.ibone.comcast.net                         2.3%   172   46.9  45.0  36.8  51.4   3.6
        he-3-1-0-0-cr01.350ecermak.il.ibone.comcast.net
        he-3-0-0-0-cr01.350ecermak.il.ibone.comcast.net
        he-3-12-0-0-cr01.350ecermak.il.ibone.comcast.net
     9. he-3-6-0-0-ar01.woburn.ma.boston.comcast.net                            1.2%   172   68.7  67.9  64.8  72.4   1.6
    10. X.X.X.X.boston.comcast.net                                              1.7%   172   67.6  66.8  64.2  70.4   1.0
    11. X.X.X.X.boston.comcast.net                                              1.2%   172   67.5  66.4  64.0  69.2   1.0
    12. X.X.X.X.comcast.net                                                     1.2%   172   75.7  75.2  72.0  85.8   1.9


Dado os resultados da minha primeira experiência, e o fato de que muita perda de pacotes está ocorrendo entre dois roteadores controlados pela Comcast em uma instalação Tier III (350 Cermak) - estou começando a me inclinar mais para o "Comcast Boogeyman "explicação.

    
por lilinjn 26.05.2013 / 22:15

1 resposta

0

Eu sugeriria algumas coisas:

  • Verifique se há perda de pacotes com ping. Tente pelo menos 100 pings com diferentes tamanhos de pacote, incluindo um pacote maior em torno de 1400 bytes.

  • O tempo de ida e volta (RTT) de ~ 70 ms pode ser bastante alto, dependendo da distância. Talvez tenha certeza de olhar para um traceroute indo em cada direção. Na saída que você colou, parece que o tráfego de um - > b está sofrendo de latência, mas não o contrário, o que poderia sugerir que há um problema com o caminho de um - > b, mas que o caminho de retorno de b - > a está bem.

  • Veja as técnicas em este documento antigo para analisar o rendimento do TCP.

O papel está um pouco desatualizado (o Ethereal agora é Wireshark), mas as técnicas ainda são boas.

5 segundos de tempo ocioso comparado a 18 segundos de tempo de relógio de parede podem sugerir que a conexão fique ociosa quando um buffer de janela TCP (enviar ou receber) estiver ficando cheio, o que contribuiria para uma taxa de transferência ruim. No entanto, a latência muito assimétrica é a primeira coisa que se destaca, então eu focaria nisso primeiro. Boa sorte e obrigado por me apresentarem ao tcptrace; Eu não tinha visto isso antes.

    
por 26.05.2013 / 23:09