+ Responder ao Tópico



  1. #1
    Moderador Avatar de Magal
    Ingresso
    Mar 2007
    Localização
    Rio de Janeiro
    Posts
    2.041
    Posts de Blog
    118

    Padrão Controle de ack timeout

    COMO FUNCIONA O CONTROLE DE ACK TIMEOUT

    O controle de ACK timeout serve para otimizar o throughput de uma transmissão ao máximo. Este valor corresponde a uma temporização interna do protocolo de comunicação. Basicamente, seria o tempo de espera de um pacote. Se você colocar um tempo muito alto, o rádio vai ficar esperando um tempo desnecessário, diminuindo a eficiência (throughput) da conexão. Se você colocar um tempo muito baixo, o rádio vai “desistir” de esperar antes mesmo do pacote ter chegado ao destino, causando novamente a diminuição de eficiência (throughput) da conexão.
    E é esse o principal motivo da perda de desempenho em distâncias longas, pois os rádios que utilizam o protocolo 802.11a/b/g, são otimizados para curtas distâncias! E quanto maior a velocidade da conexão, mais notável se torna esta perda.
    Com a possibilidade de ajuste do ACK timeout, é possível aumentar (e muito) a eficiência de um link ponto a ponto, tirando o máximo proveito possível!
    Como exemplo, podemos citar um link de 6Km usando um rádio 802.11a com controle de ACK . De 1M de throughput, ele pulou para incríveis 17M real! Somente ajustando o ACK Timeout. Esta configuração é muito particular e pode variar de hardware para hardware. O melhor ajuste será encontrado somente testando.
    Não existe uma tabela com valores de referência. E este valor vai depender também, se o rádio estiver operando no padrão 802.11a, 802.11b ou 802.11g. O valor default, de fábrica é 91. Quanto maior a distância do link, maior deverá ser o valor do ACK Timeout, podendo ir até no máximo ao valor 255.

    Texto do Manual APROUTER
    Última edição por Magal; 23-07-2008 às 00:07.

  2. #2

    Padrão

    Então, aí vem a minha dúvida: por que não deixar o ACK sempre no máximo de espera?

    Num link ponto a ponto: se eu deixar o ACKTIMEOUT em 250 mas com 100 o pacote já chega, ele não irá esperar até 250 para processar o pacote. Mas se por um acaso o pacote atrasar e demorar 200 para chegar ele não se perderá e terá que ser reenviado...

    Não entendo muito disso, mas não seria por aí?
    Abraço!

  3. #3

    Padrão

    Citação Postado originalmente por FabricioViana Ver Post
    Então, aí vem a minha dúvida: por que não deixar o ACK sempre no máximo de espera?

    Num link ponto a ponto: se eu deixar o ACKTIMEOUT em 250 mas com 100 o pacote já chega, ele não irá esperar até 250 para processar o pacote. Mas se por um acaso o pacote atrasar e demorar 200 para chegar ele não se perderá e terá que ser reenviado...

    Não entendo muito disso, mas não seria por aí?
    Abraço!
    Neste caso Fabricio seria configurar como ACK dinâmico e não fixo. Assim, ao ter sucesso na negociação do pacote ele toca o barco prá frente.

    E daí vem a minha dúvida também: porque existe a configuração fixa se o ACK dinâmico poderia resolver tudo?
    Se deixar fixo em 250 ele vai ficar todo este tempo aguardando mesmo depois de ter sucesso.

  4. #4
    Moderador Avatar de Magal
    Ingresso
    Mar 2007
    Localização
    Rio de Janeiro
    Posts
    2.041
    Posts de Blog
    118

    Padrão

    Abaixo uma excelente explicação do Roberto21:

    Vamos lá, vou explicar!

    O host (computador) que inicia a conexão, ou seja ( solicita uma página ou arquivo qualquer) envia um segmento com a flag SYN ativado.

    O host de destino responde com outro segmento com a flag SYN e ACK ativados contendo um número de sequência que identificará o próximo seguimento que o host enviará e o próximo número de sequencia que esse host espera receber.

    O host que iniciou a conexão confirma o estabelecimento da conexão enviando um segundo seguimento com o flag ACK ativado e com o número de sequencia que o destino espera.Nesse seguimento ele informará também o próximo número de sequencia que espera receber.

    Então traduzindo isso em miúdos, quanto mais rápido for a resposta de ACK entre os host's mais rápido o arquivo será transferido e o AP estará pronto para outra tarefa.

    Agora se o ACK está em 255, a flag já chegou, mas ele continua esperando até 255, então isso causa lentidão e perda de pacotes na rede, até por que o host de destino vai perder pacotes porque o host de origem já vai ter enviado mas ele não recebeu, por que estava esperando terminar o tempo de 255.

    Estou tentando explicar de uma forma simplificada, agora é fácil perceber que quanto menor esse tempo, melhor o desempenho da rede.

    Leiam e interpretem com atenção que vão compreender.


    Citação Postado originalmente por FabricioViana Ver Post
    Então, aí vem a minha dúvida: por que não deixar o ACK sempre no máximo de espera?

    Num link ponto a ponto: se eu deixar o ACKTIMEOUT em 250 mas com 100 o pacote já chega, ele não irá esperar até 250 para processar o pacote. Mas se por um acaso o pacote atrasar e demorar 200 para chegar ele não se perderá e terá que ser reenviado...

    Não entendo muito disso, mas não seria por aí?
    Abraço!

  5. #5

    Padrão

    Entendi! Eu achava que ele parava de esperar qdo recbia o pacote. Mas pelo que percebi é o contrário: mesmo tendo recbido ele espera! Valeu!

  6. #6

    Padrão

    tem outro tópico correndo a respeito disso já, e tem um monte de informações. Tô procurando aqui no fórum do mikrotik um scrpit que eu ví, pra resetar a conexão dos clientes com ack maior do que o valor desejado, mas era um tópico antigo, e parece que foi removido

  7. #7

    Padrão

    Citação Postado originalmente por FabricioViana Ver Post
    Entendi! Eu achava que ele parava de esperar qdo recbia o pacote. Mas pelo que percebi é o contrário: mesmo tendo recbido ele espera! Valeu!
    Sim, é isso mesmo. Mas fica ainda a curiosidade: porque existe a opção de fixar o ACK se o dinâmico resolveria tudo? Ou não?

  8. #8

    Padrão

    Citação Postado originalmente por 1929 Ver Post
    Sim, é isso mesmo. Mas fica ainda a curiosidade: porque existe a opção de fixar o ACK se o dinâmico resolveria tudo? Ou não?
    Ola 1929, eu tambem sempre tive essa duvida, vou acompanhar esse tópico para ver noque da......
    Valeu

  9. #9
    Moderador Avatar de Magal
    Ingresso
    Mar 2007
    Localização
    Rio de Janeiro
    Posts
    2.041
    Posts de Blog
    118

    Padrão

    Na página 1 deste tópico tem a explicação.

    Citação Postado originalmente por 1929 Ver Post
    Sim, é isso mesmo. Mas fica ainda a curiosidade: porque existe a opção de fixar o ACK se o dinâmico resolveria tudo? Ou não?

  10. #10

    Padrão

    Citação Postado originalmente por magal Ver Post
    Na página 1 deste tópico tem a explicação.
    Sim Magal, quanto ao objetivo da configuração não há a menor dúvida.

    Mas só porque me bateu a curiosidade sobre a opção dinâmica e a fixa. Na dinâmica eu entendi que sempre vai ser negociado o melhor tempo e na fixa nós iremos testando até onde der o melhor resultado.
    Então vamos a um exemplo: depois de testar vários ACK chegamos a conclusão que o melhor seria 65 por exemplo. Mas isso para aquele momento. Muitos colegas tem relatado que o desempenho da rede tem variado durante o dia em relação a noite.
    Este ajuste então seria válido para um link perfeitamente estável que é o que não parece acontecer com frequencia. Com alguma variação no link este valor poderia em outro momento estar em 50 ou em 80 vamos supor. Neste caso então o dinâmico seria o ideal.
    E para um ponto de distribuição, como dinâmico também teria mais vantagem porque assim estaria satisfazendo tanto usuários próximos como distantes.
    Então a minha dúvida é porque tem as duas opções se a dinâmica já seria suficiente para todas as situações? Isto eu não achei na pag. 1
    Se eu estiver "viajando" me corrija por favor!

  11. #11
    Moderador Avatar de Magal
    Ingresso
    Mar 2007
    Localização
    Rio de Janeiro
    Posts
    2.041
    Posts de Blog
    118

    Padrão

    Esse é o script que tem no forum.

    # Defina abaixo o valor mínimo de ACK
    :global ack 90;
    # Defina abaixo 1 para bloquear e 0 para não bloquear o cliente que estiver acima do valor mínimo
    :global block 1;
    # Defina abaixo 1 para reiniciar a Interface quando um cliente estiver acima do valor mínimo e 0 para não fazer nada
    # Obs.: Ative apenas no último dos casos, pois derruba todos clientes enlaçados na Interface
    :global intdis 0;
    # Defina abaixo a Interface
    :global interf "wlan2";
    #-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    :global total 0;
    :global mac "";
    :global cliente "";
    :log info ("Listando Clientes com ACK acima de " . $ack . " ms:");
    :foreach i in=[/interface wireless registration-table find interface=$interf] do={
    :if ([/interface wireless registration-table get $i ack-timeout] > $ack) do={
    :set mac [/interface wireless registration-table get $i mac-address];
    :set cliente [/interface wireless access-list find mac-address=$mac];
    :log info ("COMENTARIO: " . [/interface wireless access-list get $cliente comment] . " - MAC: " . [/interface wireless registration-table get $i mac-address] . " - ACK: " . [/interface wireless registration-table get $i ack-timeout]);
    :if ($block = 1) do={
    /interface wireless access-list disable $cliente;
    /interface wireless access-list enable $cliente;
    };
    :set total total+1;
    };
    };
    :if ($total = 0) do={
    :log info ("Nenhum Cliente com ACK acima de " . $ack . " ms encontrado.");
    } else {
    :if ($intdis = 1) do={
    /interface wireless disable $interf;
    /interface wireless enable $interf;
    };
    };


    Citação Postado originalmente por Gosulator Ver Post
    tem outro tópico correndo a respeito disso já, e tem um monte de informações. Tô procurando aqui no fórum do mikrotik um scrpit que eu ví, pra resetar a conexão dos clientes com ack maior do que o valor desejado, mas era um tópico antigo, e parece que foi removido

  12. #12

    Padrão

    heh, entendi nada.

    nessa linha:

    :if ([/interface wireless registration-table get $i ack-timeout] > $ack) do={

    Eu substituo o termo "$ack" pelo valor limite de ack que eu quero que os clientes tenham?

    E no "do={", creio que seja pra designar a ação caso o script ache clientes com acks maiores do que o desejado. O que eu ponho lá?"

  13. #13
    Moderador Avatar de Magal
    Ingresso
    Mar 2007
    Localização
    Rio de Janeiro
    Posts
    2.041
    Posts de Blog
    118

    Padrão

    Só altere os valores das linhas que tem #

    Citação Postado originalmente por Gosulator Ver Post
    heh, entendi nada.

    nessa linha:

    :if ([/interface wireless registration-table get $i ack-timeout] > $ack) do={

    Eu substituo o termo "$ack" pelo valor limite de ack que eu quero que os clientes tenham?

    E no "do={", creio que seja pra designar a ação caso o script ache clientes com acks maiores do que o desejado. O que eu ponho lá?"

  14. #14

    Padrão

    Citação Postado originalmente por magal Ver Post
    Só altere os valores das linhas que tem #
    isso eu sei né...
    Dei uma olhada no script de novo, e ví que não precisa mexer em nada no script, apenas setar o valor limite de acktimeout (e talvez setar a interface pra qual o script valha). Minha questão é, na linha

    :if ([/interface wireless registration-table get $i ack-timeout] > $ack) do={
    onde eu coloco o valor de acktimeout que eu quero? no lugar do "ack" que tem depois do > $ack
    :if ([/interface wireless registration-table get $i ack-timeout] > $60) do={
    ou eu coloco sem apagar o "ack"
    :if ([/interface wireless registration-table get $i ack-timeout] > $ack60) do={
    Ou não é de nenhum dos dois modos?

    eu + scripts = fracasso total.

  15. #15

    Padrão

    Citação Postado originalmente por 1929 Ver Post
    Sim Magal, quanto ao objetivo da configuração não há a menor dúvida.

    Mas só porque me bateu a curiosidade sobre a opção dinâmica e a fixa. Na dinâmica eu entendi que sempre vai ser negociado o melhor tempo e na fixa nós iremos testando até onde der o melhor resultado.
    Então vamos a um exemplo: depois de testar vários ACK chegamos a conclusão que o melhor seria 65 por exemplo. Mas isso para aquele momento. Muitos colegas tem relatado que o desempenho da rede tem variado durante o dia em relação a noite.
    Este ajuste então seria válido para um link perfeitamente estável que é o que não parece acontecer com frequencia. Com alguma variação no link este valor poderia em outro momento estar em 50 ou em 80 vamos supor. Neste caso então o dinâmico seria o ideal.
    E para um ponto de distribuição, como dinâmico também teria mais vantagem porque assim estaria satisfazendo tanto usuários próximos como distantes.
    Então a minha dúvida é porque tem as duas opções se a dinâmica já seria suficiente para todas as situações? Isto eu não achei na pag. 1
    Se eu estiver "viajando" me corrija por favor!

    Perfeitamente entendido sobre o mecanismo do comando.
    Mas porque existe a opção de fixa e dinâmica se a dinâmica resolveria tudo?

    Para um PTP até que seria compreensível fixar o ACK, mas para distribuição o ideal é que a base esteja dinâmica e negociasse com cada usuário, perto ou distânte.
    Mas tem alguns firmwares que nem tem a opção de ACK dinâmico.

  16. #16
    Moderador Avatar de Magal
    Ingresso
    Mar 2007
    Localização
    Rio de Janeiro
    Posts
    2.041
    Posts de Blog
    118

    Padrão

    Caro 1929, a opção fixa é para quando se tem uma rede homogênea em termos de cobertura (distância).


    Citação Postado originalmente por 1929 Ver Post
    Perfeitamente entendido sobre o mecanismo do comando.
    Mas porque existe a opção de fixa e dinâmica se a dinâmica resolveria tudo?

    Para um PTP até que seria compreensível fixar o ACK, mas para distribuição o ideal é que a base esteja dinâmica e negociasse com cada usuário, perto ou distânte.
    Mas tem alguns firmwares que nem tem a opção de ACK dinâmico.