[FUG-BR] Sonho realizado: 2 links + 2squid com ZPH

Thiago J. Ruiz thiagojruiz em gmail.com
Quinta Março 6 15:22:14 BRT 2008


Show Mário,
post it ->  FUG!!!!


abraço e parabéns.

2008/3/6, Mario Augusto Mania <m3.bsd.mania em gmail.com>:
> Caros
>
>  To escrevendo numa tremenda empolgacao e prazer em utilizar o FreeBSD :)
>  Nao é de hoje que venho tentando fazer funcionar algumas coisas muito
>  interessantes e uteis no freebsd. Quase sempre, quando mando email pra
>  lista, as discussoes sao superficiais, senao, dicas dizendo que eh
>  melhor usar o linux pq jah tem XYZ funcionando e etc...
>
>  Bem, isso nao eh uma reclamacao, na verdade, eh mais um agradecimento,
>  pq, foi tambem por causa da lista que insisti tanto até conseguir
>  fazer o que eu queria!
>
>  Vamos ao ambiente:
>
>  2 links de internet
>  1 servidor com 3 nic
>
>  Bem, primeiramente, encarnei no policy routing com ipfw+natd, muitos
>  vao dizer: pf+route-to eh muito mais facil, etc.. etc..., rodar dois
>  nats na mao eh gambiarra, etc.. etc..
>  Bom, em primeiro lugar, com ipfw com uma simples regra eu escolho por
>  qual link quero que o cliente sai, segundo, estou rodando somente um
>  natd porem, com a flag instance que nao eh documentada. Ficou super
>  fileh e facil de administrar.
>
>  Segunda etapa, de que adianta balancear a carga de saida em dois links
>  se nao posso ter proxy/cache? Bom, isso ainda acho q eh gambiarra,
>  deve ter outro jeito melhor de fazer, fica ai a sugestao de quem tiver
>  uma saida melhor. O que fiz:
>  Dois processos squid rodando um na porta 3128 e outro na porta 3129,
>  usando dois arquivos .conf diferentes. No arquivo secundario, eu user
>  tcp_outgoind_address pra mudar o ip de saida do squid2 para sair pelo
>  link2. Blz... Funcionou, independente da politica de rota do ipfw, se
>  no cliente (browser) eu setar o proxy pra porta 3128, saio por um
>  link, se muda pra porta 3129 saio pelo outro link, ae eh soh usar
>  proxy transp pra jogar o cliente por onde eu quero, isso tudo com a
>  vantagem de se ter um squid nas conexoes http.
>  O problema que vejo, que nem eh tanto problema assim, eh ter dois
>  diretorios de cache separado.
>
>  Com isso, tava tudo fileh, dois links, politica de uso por
>  source_addr, ae implementei o controle de banda.
>
>  Ultimo passo: Patch ZPH no squid, rapaiz, ae foi dor de cabeca hehehe,
>  patchei o squid, fui compilar, pronto, erro, faltava definir SOL_IP e
>  IP_PKTOPTIONS. Bem, o SOL_IP descobri que no FreeBSD (valeu thiago:))
>  eh IPPROTO_IP, e o IP_PKTOPTIONS, heheheheh, ae eh foda, hehehe, nao
>  consegui achar, porem, achei que nos .h do linux, simplesmente tem:
>  #define IP_PKTOPTIONS 9
>  hehehe, portanto, fui no arquivo de patch, e mudei onde tava
>  IP_PKTOPTIONS pra 9, isso na funcao getsockopt() hehehhee, e pronto,
>  compilou fileh.
>  Ae, nos dois squid.conf, adicionei a linha: zph_tos_local 0x20, e
>  restatei o squid.
>  Ae, foi soh rodar um tcpdump -i rl0 -vv e ver que quando o arquivo
>  tava no cache, o squid marcava o tos do cabecalho ip com 0x20, e
>  quando nao tava era, o tos era 0x00. Ok. O patch tava fazendo o papel
>  dele. E como tratar isso com ipfw?
>
>  Bem, o ipfw tem a opcao iptos, porem, ele aceita algumas constantes,
>  tentei fazer:
>  ipfw add allow all from any to any iptos 0x20, e ele reclamou que 0x20
>  nao eh uma opcao valida. Ae, corri no man, e tava lah, eu tinha q usar
>  umas constantes, coloquei:
>  ipfw add X allow all from any to any iptos TCP_MINCOST e pronto, olhei
>  no cabecalho ip.h e TCP_MINCOST vale 0x02 :), fui nos squids.confs e
>  mudei o zph_tos_local para 0x02.
>
>  Restartei o squid, limpei o cache do squid e do navegador, limitei a
>  banda do cliente em 32 Kbit/s e fiz o download de um arquivo com 1
>  mega. Blz, no access.log do squi deu TCP_MISS, veio a 32Kbit/s.
>
>  Fui no firefox, limpei o cache do firefox, mandei baixar o arquivo de
>  novo ehhhhhh, tchararammm... o arquivo veio FULL, velocidade maxima
>  ethernet heheheh, que delicia hehehhhee, no access.log do squid,
>  TCP_REFRESH_HIT, ou seja, pegou do cache, marcou o tos com 0x02 e
>  escapou do controle de banda hehehhe
>
>  Enfim, to realizado :)
>
>  Soh estou meio trsite com dois diretorios de cache diferente, nao sei
>  se os dois squids compartilhando o mesmo /cache pode dar problema,
>  entao resolvi deixar dois mesmo pra testar.
>
>  Bem, pretendo escrever um arquivo e postar na fug, porem, pra quem
>  quiser se aventurar, meu e-mail tem tudo que passei.
>
>  PS. Desculpem o e-mail longo, mas eh meio que uma comemoracao
>  compartilhada hehehhe.
>
>  Mario Augusto Mania (m3bsd)
>
>  --
>  Atenciosmente
>
>
>  Mario Augusto Mania <m3BSD>
>  -----------------------------------------------
>  m3.bsd.mania em gmail.com
>  Cel.: (43) 9938-9629
>  Msn: mario em oquei.com
>  -------------------------
>  Histórico: http://www.fug.com.br/historico/html/freebsd/
>  Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


-- 
Thiago J. Ruiz
http://thiagoruiz.blogspot.com


Mais detalhes sobre a lista de discussão freebsd