Página 1 de 3 123 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1

    Padrão Gostaria de compreender o NTH

    Olá amigos
    Não sei se utiliza isso em outros recursos, mas estou usando para o Balanceamento, mas gostaria de compreender melhor o que e como
    é o funcionamento desse NTH.
    Acredito que teria melhores resultados, se eu pudesse entender isso.
    Por exemplo, utilizo no Balanceamento, e testei nas seguintes configuracoes (para 3 links no caso), e tive os seguintes resultados

    Funciona, mas acompanhando o nr de pacotes observo a a proporcao citada ao lado (aproximadamente)
    2,1,0 100 pacotes
    2,1,1 50 pacotes
    2,1,2 25 pacotes

    Funciona, mas acompanhando o nr de pacotes observo a a proporcao citada ao lado (aproximadamente)
    2,4,0 100 pacotes
    2,4,1 50 pacotes
    2,4,2 25 pacotes

    Nao funcionou
    1,1,0
    2,1,0
    2,1,1

    Não funcionou
    1,1,0
    1,1,1
    1,1,2

    Não me recordo o teste
    3,1,0
    3,1,1
    3,1,2

    Não funcionou
    3,1,0
    3,2,1
    3,3,2

  2. #2

    Padrão

    o amigo mson77 acho que poderia explicar bem sobre o nth.



  3. #3

    Padrão

    Olá....


    vamos lá:


    1) Vc define o tamanho do seu universo... isso se faz no campo "every";
    2) Vc batiza/nomeia/seleciona o contador.... um numero de 0 a 15 pois MK possui 16 contadores;
    3) Valor atual do contador... nesse momento;

    Isso tudo fica no trinomo (every,contador,valor). Nessa ordem.


    Entao... se vc define:
    every=5... seu universo de valores será 0,1,2,3,4,5 ==> ou seja 6 valores.

    every=1... seu universo será 0,1 ==> 02 valores
    every=2... seu universo será 0,1,2 ==> 03 valores.

    Entao a mecanica de round-robin será:

    (1,0,0),(1,0,1) ==> 2 valores usando contador numero 0
    (1,7,0),(1,7,1) ==> 2 valores usando contador numero 7

    =======================

    (3,9,0),(3,9,1),(3,9,2),(3,9,3) ==> 4 valores (every=3) usando contador numero 9.

    Deu pra entender...???

    Agora basta usar isso nas "new connections"... round-robin.... ciclico.


    Abraços,

  4. #4

    Padrão

    PErfeito... consegui entender.

    Agora precisaria entender qual a lógica para o MT usar isso num balanceamento, visto que percebi a seguinte logica:

    Para 2 links
    usei
    1,1,0 - A
    1,1,1 - B
    Funciona normal, mas percebi que de n pacotes,
    100 passam pelo A e
    55 passam pelo B

    Já para 3 links usei:
    2,1,0 - A
    2,1,1 - B
    2,1,2 - C
    Funciona, mas percebi que de n pacotes,
    Passaram
    1000 no A
    330 no B
    100 no C


    Ou seja, quanto mais links tiver, o segundo link será terá menos passagem de pacotes

    O ideal seria que conseguisse utilizar com maior enfase o segundo link.



  5. #5

    Padrão

    Ola liandrocarniel....


    Vamos iniciar entendendo o que é uma "conexão".

    Resp: Por conexão entende-se um enlace tcp/ip que começou com SYN.
    Tem gente aqui no forum que confunde conexao tcp/ip por conexão de login de usuario de hotspot. Ambas sao conexoes mas conceitualmente distintas.

    Em cenario de load balancing... estamos falando de conexao tcp/ip.

    Entao... fazemos marcação de "novas conexoes" tcp/ip... e atribuimos rotas estáticas. Correto?

    Existem algumas conexoes **SEM** marcacao... por exemplo... aquelas originadas de 127.0.0.1 e que nao passou pela sua regra do "mangle". E vc ainda deve defiir uma rota para essa conexao... que nao possui marcacao... entao... defina uma rota estatica X para os pacotes sem marcacao. Isso vai gerar tb um desequilibrio.

    Enfim... o desequilibrio que vc aponta é devido ao perfil de conexoes tcp/ip... e nao da distribuição da marcacao de pacotes tcp/ip usando-se a mecanica de round-robin.


    Espero ter esclarecido.

    Abraços,



    ========================
    editado:


    ==> de onde vc tirou a contagem de pacotes... que vc apresentou na sua ultima mensagem?
    ==> essa contagem de pacotes é...
    • acumulado geral no tempo?
    • acumulado numa janela de tempo? (frame de monitoramento no winbox)
    No seu raciocinio... cabe considerar o MTU... (tamanho do frame ethernet... geralmente 1500bytes). Entao uma resposta pode gerar mais de 01 pacote devido a limitacao do MTU... digo: Se Y quer enviar 2000 bytes p vc... isso irá gerar 02 pacotes obrigatoriamente.




    mson77
    =================================== ====
    Se voce achou minha ajuda interessante... e se desejar retribuir-me... visite a minha lista de desejos da Livraria Cultura. Segue link abaixo:
    https://under-linux.org/forums/../im...c/progress.gif
    Última edição por mson77; 18-02-2008 às 14:25. Razão: adicionar mais informacao com respeito a pacote tcp e MTU

  6. #6

    Padrão

    Essa contagem verifiquei no Mangle, zerando os counters e acompanhando (nem precisaria zerar, pois a proporção permanece mais ou menos a mesma)..


    http://www.medianeira.com.br/mangle.gifhttp://www.medianeira.com.br/mangle.gif



  7. #7

    Padrão

    Segue a minha imagem... /ip firewall mangle


    Abraços,
    Miniaturas de Anexos Miniaturas de Anexos Clique na imagem para uma versão maior

Nome:	         2links_LB_image.gif
Visualizações:	445
Tamanho: 	12,7 KB
ID:      	1780  
    Imagens Anexas Imagens Anexas  
    Última edição por mson77; 18-02-2008 às 15:33.

  8. #8

    Padrão

    REalmente é mais ou menos como a sua que gostaria que fosse.

    Não sei por que aqui acontece essa diferença (pode ser porque os links são de tamanho diferentes? o sistema iria identificar automaticamente isso? creio que não).

    Teria como voce postar as regras do teu mangle?



  9. #9

    Padrão

    Atendendo a solicitação... segue:



    Código :
    [[email protected]] > ip firewall mangle print 
    Flags: X - disabled, I - invalid, D - dynamic 
     0   chain=prerouting in-interface=hotspot connection-state=new nth=1,1,0 
         action=mark-connection new-connection-mark=con110 passthrough=yes 
     
     1   chain=prerouting in-interface=hotspot connection-mark=con110 
         action=mark-routing new-routing-mark=con110 passthrough=no 
     
     2   chain=prerouting in-interface=hotspot connection-state=new nth=1,1,1 
         action=mark-connection new-connection-mark=con111 passthrough=yes 
     
     3   chain=prerouting in-interface=hotspot connection-mark=con111 
         action=mark-routing new-routing-mark=con111 passthrough=no 
    [[email protected]] >
    Nao deixe de visitar o link abaixo da Livraria Cultura... rsrs

  10. #10

    Padrão

    Ola liandrocarniel....



    deve haver algum erro na sua regra da tabela mangle.
    Por que?
    Resp.: Observando a figura que voce apresenta... nas regras que definem (que deveriam definir) as **NOVAS CONEXOES** no estilo round-robin... tem-se:

    1) 104
    2) 54
    3) 21

    E sendo round-robin... para as regras mangle de **new connection** OBRIGATORIAMENTE deveria-se ter numeros praticamente iguais.

    Assim... eu criaria as regras mangle (3 links) da seguinte forma:

    Código :
    chain=prerouting in-interface=hotspot connection-state=new nth=2,1,0 
    action=mark-connection new-connection-mark=con210 passthrough=yes 
     
    chain=prerouting in-interface=hotspot connection-mark=con210 
    action=mark-routing new-routing-mark=con210 passthrough=no 
    ===========================
    chain=prerouting in-interface=hotspot connection-state=new nth=2,1,1 
    action=mark-connection new-connection-mark=con211 passthrough=yes 
     
    chain=prerouting in-interface=hotspot connection-mark=con211 
    action=mark-routing new-routing-mark=con211 passthrough=no 
     ===========================
    chain=prerouting in-interface=hotspot connection-state=new nth=2,1,2 
    action=mark-connection new-connection-mark=con212 passthrough=yes 
     
    chain=prerouting in-interface=hotspot connection-mark=con210 
    action=mark-routing new-routing-mark=con212 passthrough=no
    Tendo essas regras criadas... no /ip firewall nat:
    Código :
    chain=srcnat routing-mark=con210 action=src-nat to-addresses=IPLINK1 to-ports=0-65535
    =======================
    chain=srcnat routing-mark=con211 action=src-nat to-addresses=IPLINK2 to-ports=0-65535
    =======================
    chain=srcnat routing-mark=con212 action=src-nat to-addresses=IPLINK3 to-ports=0-65535
    Agora basta acertar o roteamento no /ip route:

    Código :
    dst-address=0.0.0.0/0 gateway=GATEWAY_LINK1 check-gateway=arp interface=wan1 gateway-state=reachable scope=255 target-scope=10 routing-mark=con210
    ======================
    dst-address=0.0.0.0/0 gateway=GATEWAY_LINK2 check-gateway=arp interface=wan2 gateway-state=reachable scope=255 target-scope=10 routing-mark=con211
    ======================
    dst-address=0.0.0.0/0 gateway=GATEWAY_LINK3 check-gateway=arp interface=wan3 gateway-state=reachable scope=255 target-scope=10 routing-mark=con212
    Feito isso na tabela de roteamento... eleja um gateway para atender aquelas conexoes sem marcação (NAO_con210/NAO_con211/NAO_con212).
    Exemplo abaixo... eu elegi o LINK3.
    Código :
    dst-address=0.0.0.0/0 gateway=GATEWAY_LINK3 check-gateway=arp interface=wan3 gateway-state=reachable scope=255 target-scope=10
    Quando voce verifica o gateway... (check-gateway=arp)... significa que se o gateway NÃO EXISTIR... essa rota vai se desativada automaticamente.
    • Exercicio: Se um gateway sumir.... o que vai acontecer? Descreva a consequencia aqui.
    Pronto!

    Agora voce deverá ter os 3 links sendo utilizados de forma igualmente distribuido.


    Abraços,



  11. #11

    Padrão

    Segue as regras de mangle que utilizo

    PARA 2 LINKS

    chain=prerouting connection-state=new nth=1,1,0 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=bancos passthrough=yes
    chain=prerouting connection-mark=bancos src-address-list=ADSLlista dst-address-list=!valido action=mark-routing new-routing-mark=bancos passthrough=no

    chain=prerouting connection-state=new nth=1,1,1 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=teste2 passthrough=yes
    chain=prerouting connection-mark=teste2 src-address-list=ADSLlista dst-address-list=!valido action=mark-routing new-routing-mark=teste3 passthrough=no





    PARA 3 LINKS

    chain=prerouting connection-state=new nth=2,4,0 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=bancosx passthrough=yes
    chain=prerouting connection-mark=bancosx src-address-list=ADSLlista dst-address-list=!valido action=mark-routing new-routing-mark=bancos passthrough=no


    chain=prerouting connection-state=new nth=2,4,1 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=teste2x passthrough=yes
    chain=prerouting connection-mark=teste2x src-aUtiliddress-list=ADSLlista dst-address-list=!valido action=mark-routing new-routing-mark=teste3 passthrough=no


    chain=prerouting connection-state=new nth=2,4,2 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=adsl_res2x passthrough=yes
    chain=prerouting connection-mark=adsl_res2x src-address-list=ADSLlista dst-address-list=!valido action=mark-routing new-routing-mark=adsl_r2 passthrough=no



    Veja que tem alguns itens a mais, mas isso não deve interferir
    - Negando lista de alguns ip's válidos "=!valido"
    -Definindo clientes que passarão "src-address-list=ADSLlista"

    Creio que os NTH's estão corretos, e portanto imagino que somente eles poderiam alterar essa proporção

  12. #12

    Padrão

    Ola liandrocarniel...


    Pronto.
    Vc acaba de apontar a causa do seu problema de load unbalancing...

    Vamos analisar uma regra sua:

    Código :
    chain=prerouting connection-state=new nth=1,1,0 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=bancos passthrough=yes
    O contador Nth por padrao está amarrado as conexoes (todas novas) de uma dada interface... e não é **seletiva** como no seu caso. Ou seja... o contador está incrementando... mesmo qdo nao ocorre **match** na sua regra.


    Abraços,



  13. #13

    Padrão

    Desculpe a ignorância mas não consegui compreender essa falha citada.


    Comparando a sua:
    chain=prerouting in-interface=hotspot connection-state=new nth=1,1,0 action=mark-connection new-connection-mark=con110 passthrough=yes

    e a minha
    chain=prerouting connection-state=new nth=1,1,0 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=bancos passthrough=yes


    Seria a questão de definir "in-interface"? Fiz isso, mas o resultado foi o mesmo ainda..
    Ou é outra diferença que não consegui identificar na sua explicação.
    Não seria definir a interface de saida? (OUT) ao inves de entrada?


    REGRAS definindo a In-interface
    chain=prerouting in-interface=SAIDA_LINK99 connection-state=new nth=1,1,0 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=bancos passthrough=yes

    chain=prerouting in-interface=SAIDA_LINK99 connection-
    mark=bancos src-address-list=ADSLlista dst-address-list=!valido action=mark-routing new-routing-mark=bancos passthrough=no



    chain=prerouting in-interface=SAIDA_LINK99 connection-state=new nth=1,1,1 src-address-list=ADSLlista dst-address-list=!valido action=mark-connection new-connection-mark=teste2 passthrough=yes

    chain=prerouting in-interface=SAIDA_LINK99 connection-mark=teste2 src-address-list=ADSLlista dst-address-list=!valido action=mark-routing new-routing-mark=teste3 passthrough=no

  14. #14

    Padrão

    amigo vou aproveitar o embalo de vcs e colocar uma questao em duvida: como fazer pra o web-proxy funcionar corretamente com o balanceamento por nth?

    desde de ja agradeço a quem participar



  15. #15

    Padrão

    Ola liandrocarniel...


    Vá com calma que voce entende.
    Vc é bom!

    Vc diz que fez... mas nao funcionou... **DEVE TER COMETIDO ALGUM EQUIVOCO**.

    Editado por mson77:
    **** porque voce faz seleção para marcar pacotes? Por que usar dos criterios src/dst_addresses....nesse momento?
    **** voce **REALMENTE** precisa fazer essa marcacao baseado em src e dst address?
    **** voce nao pode fazer essa selecao... (nao sei porque vc faz isso)... na tabela filter rules?
    **** qual a diferença entre a "mangle" e a "filter rules"....????
    SUGESTÃO: remova src/dst address dessas regras na mangle e se preciso aplique/use/reaplique na filter rules. Use apenas in-interface para fazer marcacao de "new connections".



    ==========================


    Ola schramm...

    Veja esse LINK abaixo:Peço que dê **CONTINUIDADE** no outro tópico.
    Dessa forma ORGANIZAREMOS melhor os topicos iniciados aqui nesse forum.



    Abracos,
    Última edição por mson77; 20-02-2008 às 10:07. Razão: Separar TOPICOS...

  16. #16

    Padrão

    Bom..
    Vamos tentar explicar a minha situação:

    Por que usar marcação de src e dst?
    em SRC aponto para uma address list onde escolho quais faixas de ip's ou clientes irão passar na regra. Tem algumas redes que deixo fora, pois sao importantes para nós, ou alguns serviços especificos, que podem trazer problemas.


    Ainda tenho em dst negando alguns ip's validos (do nosso servidor ou outros) ip's validos de clientes (ex:. Tenho um cliente que tem um servidor com ip valido com servidor de email, e esse mesmo cliente tem uma acesso em casa, e sem essa negacao ao ip valido, ele passaria pelo balanceamento, o que nao é necessario).

    Obs.: Tenho ainda algumas outras regras que fazem com que alguns destinos especificos (Caixa, Bradesco, etc) não cheguem às regras de balanceamento.

    NAo sei se somente com Filter Rules, conseguirei fazer todas essas regras (deixar clientes fora do balanceamento, negar balanceamento para alguns ips validos, etc).

    Todas essas regras foram sendo implantadas durante meses, diante de problemas que vinham surgindo, e aplicando as mesmas, foram resolvidas, portanto se faz necessário algo semelhante a isso (não sei se por filter Rules dá para fazer)



  17. #17

    Padrão

    Olá....



    Simples.

    Baseado na IN_INTERFACE:
    1) Faça **APENAS** marcação pacotes sobre as new-connections;
    2) faça marcação de routing sobre os pacotes já marcadas em (1).

    PRONTO.

    ==========================================
    E agora?

    Nas regras de NAT... voce iria distribuir para LINK1, LINK2... conforme pacotes marcados... correto?
    Pois bem... é aqui que voce vai PRESTAR ATENÇÃO.
    Na tabela NAT do firewall... a ordem das regras é RELEVANTE. Entao tome cuidado.
    a) Para sites de bancos (tcp/443) em geral... evite LB fazendo src_nat num link especifico que vc escolher. Pronto! Acabaram-se os seus "pobremas".

    b) Qto a fazer LB de source_IP especificos... ou nao.. coloque todas as regras aqui... e nessa ordem.

    Problemas resolvidos!!!

    Abraços,
    • nao deseja visitar minha wish list?
    • com certeza essas informações resolveram todos os seu problemas empresariais... e te poupou de muitas horas.
    • Solução GARANTIDA com as informações acima.
    ============
    editando:
    • mangle é mangle...
    • nat é nat...
    • filter rules é filter rules...
    C'est tout!!!
    Time to pass by the mson77's wish list...
    Última edição por mson77; 20-02-2008 às 11:58.

  18. #18

    Padrão nth

    quando crio a regra nao aceita nth=2,1,0 ou qualquer outra combinaçao nao so aceita um unico numero nth = 1



  19. #19

    Padrão

    Ola Rhander....


    desculpe a colocação... mas voce deveria começar a usar "pontos", "virgulas", separadores de sentença.
    Fica ruim ler uma sentença... como a sua acima... numa UNICA LEITURA DIRETA.

    Peça p uma OUTRA PESSOA ler a sua sentença... e veja se essa pessoa consegue ler e compreender numa UNICA PASSADA pela sentença... sem ter que ler, voltar... analisar as paradas... enfim... estamos usando "internetês"... mas vamos colaborar.

    Particularmente... sou TOTALMENTE CONTRA ao uso do INTERNETÊS.

    Eu respondi a sua mensagem... mas com toda honestidade... eu nao entendi o que voce quis expressar na sua sentença.
    Digo isso pois... acredito que estão assassinando o português em prol do mikrotik/linux/wireless/etc...
    Não dá pra fazer as 2 coisas com presteza?
    ================================


    Na versao 2.9... sao 3 campos;
    Na versao 3.x... sao 2 campos;


    Exemplo: v2.9.x
    1. every=2
    2. contador n° 1 (contador de id=1)
    3. variaveis => 0,1,2
    Trinomios: (2,1,0), (2,1,1), (2,1,2)


    Exemplo: v3.x
    1. every=2
    2. contador ==> nao existe esse campo
    3. variaveis ==> 1,2
    Binomios: (2,1) e (2,2)





    Abraços,
    Última edição por mson77; 26-02-2008 às 15:59.

  20. #20

    Padrão

    Desculpe a falta de cuidado, valeu pela ajuda.