[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