Acelerador de conexões dial-up para provedores de acesso

Você é provedor de acesso dial-up e ISDN? Quer aumentar a velocidade do acesso do clientes? Acelere em até 8 vezes a conexão dial-up compactando os dados antes de enviá-los para links lentos e sem precisar instalar nenhum programa nos PCs dos clientes e ainda economize sua banda.

[ Hits: 70.504 ]

Por: Patrick Brandao em 30/09/2004 | Blog: http://www.patrick.eti.br


Configurando ZIPROXY (ziproxy.conf)



O arquivo ziproxy.conf padrão está com o seguinte conteúdo:

# Example ziproxy.conf

# netd options
WhereZiproxy = "/home/juro/bin/ziproxy"
Port = 8080
OnlyFrom = "127.0.0.1"
NetdTimeout = 240

# This will append bzipped logging output to LogFile.
# LogPipe is only compatible with netd! LogPipe is not compatible with xinetd.
# LogPipe ={"bzip2", "-9cq", "-"}

# this will append logging output to file named DDD-YYYY.log
LogFile = "%j-%Y.log"

# ziproxy options
ZiproxyTimeout = 120
MaxSize = 4194304
UseContentLength = false

# Substrings for Compressible data types under application/. Matches with
# leading "x-" too.
Compressible = {
   "shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",  
   "java", "javascript", "staroffice", "vnd.", "futuresplash",
   "asp", "class", "font", "truetype-font", "php", "cgi", "executable",
   "shellscript", "perl", "python", "awk", "dvi"
}

# 75 is standard quality of JPEG images.
# ImageQuality = {75,75,75,75}

# Don't convert small images to JP2
JP2Rate={0,0,0.04,0.04}

Atenção: Este arquivo padrão não é suficiente para nossa solução, vamos estudar linha a linha para ajustá-lo corretamente:

A - WhereZiproxy


WhereZiproxy = "/home/juro/bin/ziproxy"

Define o local onde está o executável de ziproxy. Este parâmetro só tem efeito se você estiver usando netd como servidor tcp, nos demais servidores este parâmetro é ignorado. O valor que nos atende é:

WhereZiproxy = "/usr/local/bin/ziproxy"

B - Port


Port = 8080

Define a porta onde ziproxy receberá as requisições dos clientes http. Este parâmetro só tem efeito se você estiver usando netd como servidor tcp, nos demais servidores este parâmetro é ignorado. O valor padrão nos atende.

C - OnlyFrom


OnlyFrom = "127.0.0.1"

Define os endereços ip dos clientes que podem usar o serviço ziproxy, pode ser um único endereço ip, como no exemplo acima, como também uma faixa de endereços. Exemplo:

OnlyFrom = "192.168.10.1-192.168.10.89"

Vamos supor que o servidor BABA ACESSO concede aos clientes endereços ip não roteáveis na Internet, como por exemplo, a rede classe A - 10, então o valor que vai nos atender será:

OnlyFrom = "10.10.1.1-10.10.1.89"

Este parâmetro só tem efeito se você estiver usando netd como servidor tcp, nos demais servidores este parâmetro é ignorado. Usando inetd você pode usar os arquivos hosts.allow e hosts.deny para configurar redes permitidas e negadas respectivamente.

D - NetdTimeout


NetdTimeout = 240

Esta opção não é legal, ela define que se ninguém conectar-se ao ziproxy em 240 segundos, o netd irá abandonar o serviço. O valor que nos atende será:

NetdTimeout = 0

Assim ele ficará escutando conexões independente do fato de ter alguém usando ou não. Este parâmetro só tem efeito se você estiver usando netd como servidor tcp, nos demais servidores este parâmetro é ignorado.

E - LogFile


LogFile = "%j-%Y.log"

Define o arquivo de log das requisições feitas ao ziproxy. Este parâmetro é válido para todos os servidores tcp usados. As variáveis %j e %Y são baseadas nas variáveis do comando "date" do Linux e você pode definir da forma que quiser. O valor que nos atende é:

LogFile = "/var/log/ziproxy-%Y%m%d.log"

F - LogPipe


LogPipe ={"bzip2", "-9cq", "-"}

Parâmetro usado apenas pelo netd, ignorado nos demais servidores. Os valores entre chaves são {"comando", "argumento1", "argumento2"}. Se o parâmetro LogFile estiver definido, a saída do log será gravada nele.

G - ZiproxyTimeout


ZiproxyTimeout = 120

Tempo que o ziproxy irá esperar pela resposta da sua requisição ao servidor http no qual ele está buscando a página. Se o tempo limite definido aqui for atingido, ele irá abortar e retornar o erro. Importante definir aqui um tempo superior ao usado pelo Squid, pois evitará processamento desnecessário do ziproxy, uma vez que ele depende da resposta do Squid. O valor padrão nos atende.

H - MaxSize


MaxSize = 4194304

Tamanho máximo em bytes do arquivo que será processado e compactado. Definir um valor aqui ajuda muito na velocidade do atendimento dos pedidos. Uma imagem JPEG de 1 MB pode demorar a ser processada, tornando o processo lento, um bom valor seria 600 kb, valor 0 consideraria o tamanho ilimitado. O valor que nos atende será:

MaxSize = 524288

I - UseContentLength


UseContentLength = false

Valor definido como false ou true. Se for definido true, o ziproxy só enviará os dados ao browser depois de ter calculado o tamanho do arquivo e enviado a linha ContentLength no cabeçalho de resposta ao browser. Embora cause lentidão em alguns milésimos de segundos (muito pouco), pode evitar problemas, pois o navegador do cliente pode não saber quando abortar a conexão por causa do download de um arquivo de tamanho desconhecido.

Se você definiu um valor baixo em MaxSize, pode desabilitar esta opção. O valor padrão (false) nos atende aqui.

J - Compressible


Compressible = {
   "shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",  
   "java", "javascript", "staroffice", "vnd.", "futuresplash",
   "asp", "class", "font", "truetype-font", "php", "cgi", "executable",
   "shellscript", "perl", "python", "awk", "dvi"
}

Define os tipos de arquivos que serão compactados pelo ziproxy. As opções padrões são excelentes, mas caso algum cliente reclame de erros em algum tipo de arquivo baixado, você pode vir aqui e retirar da lista. O valor padrão nos atende perfeitamente.

K - ImageQuality


ImageQuality = {75,75,75,75}

Define em quantos porcento as imagens jpeg serão compactadas. Os valores podem variar de 0 a 100, ou -1 a -100. Os quatro números são usados da seguinte maneira:
  1. Para imagens com menos de 5000 pixels.
  2. Para imagens entre 5000 e 50000 pixels ou uma dimensão é menor de 150 pixels.
  3. Para imagens entre 50000 e 250000 pixels.
  4. Para imagens com mais de 250000 pixels.

O tamanho em pixels definido acima é calculado pelo ziproxy considerando with x height. A qualidade é baseada na cor.

Lembre-se: Embora uma imagem possa ser enquadrada no parâmetro 4, ela só será alterada se seu tamanho em bytes for menor do que o definido na opção MaxSize. Se a opção MaxSize for definido como 0, isto é, sem limite, as imagens serão alteradas normalmente.

Valores negativos definem em quanto a qualidade será subtraída. Se estiver -10 e a imagem atualmente for 90, o resultado será 80.

Ser o valor for definido como 0 (zero), a imagem não será alterada.

Exemplo: ImageQuality={-15,20,25,0}: As imagens menos de 5000 pixels serão convertidas ao JPEG com qualidade de 15. As imagens entre 5000 e 50000 pixels serão convertidas ao JPEG com qualidade de cor 20. As imagens entre 50000 e 250000 pixels serão convertidas ao JPEG com qualidade de cor 25. As imagens maiores de 250000 pixels ficarão inalteradas.

Caso o parâmetro ImageQuality seja omitido, o ziproxy irá considerar 75 para os quatro parâmetros.

O valor que nos atende:

ImageQuality={-15,60,65,70}

L - JP2Rate


JP2Rate={0,0,0.04,0.04}

Define como tratar imagens padrão jpeg 2000. Infelizmente não achei uma explicação clara na web, no Google só apareceram 4 resultados na época que estava criando este artigo. Os melhores valores (achei em um fórum) são:

JP2Rate={0.1,0.08,0.04,0.02 }

Vale lembrar que é necessário que o browser tenha o plug-in do JPEG2000 para que imagens desse formato sejam exibidas. Você pode fazer o download do plug-in em http://www.morgan-multimedia.com/JPEG2000/.

M - NextProxy


NextProxy="host.name"

Este parâmetro não aparece no arquivo padrão. Sem ele, o provedor exemplo BABA ACESSO tornaria a conexão do usuário dial-up mais rápida, mas não poderia economizar banda com a web. O valor definido pode ser endereço ip ou FQDN. A porta de acesso do proxy será definido no próximo parâmetro. O valor que nos atente é:

NextProxy="127.0.0.1"

Vale lembrar que o Squid está na mesma maquina em que estamos instalando o ziproxy.

N - NextPort


NextPort=3128

Define qual a porta do proxy definido em NextProxy escuta requisições dos clientes. No arquivo de configuração do Squid que usamos no capítulo anterior, usamos a porta 3128. O valor que nos atende então será:

NextPort=3128

FIM.

O conteúdo do ziproxy.conf ficou assim:

WhereZiproxy = "/usr/local/bin/ziproxy"
Port = 8080
OnlyFrom = "10.10.1.1-10.10.1.89"
NetdTimeout = 0

NextProxy="127.0.0.1"
NextPort=3128

LogPipe ={"bzip2", "-9cq", "-"}
LogFile = "/var/log/ziproxy-%Y%m%d.log"
ZiproxyTimeout = 120
MaxSize = 524288
UseContentLength = false
Compressible = {
   "shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",  
   "java", "javascript", "staroffice", "vnd.", "futuresplash",
   "asp", "class", "font", "truetype-font", "php", "cgi", "executable",
   "shellscript", "perl", "python", "awk", "dvi"
}
ImageQuality={-15,60,65,70}
JP2Rate={0.1,0.08,0.04,0.02 }

Se você chegou até aqui sem problemas, o acelerador está pronto, inicie (ou reinicie) o ziproxy (através do servidor tcp que você está usando) e faça um teste da máquina local, depois de uma máquina cliente.

Para um teste inicial, comente as linhas:

#NextProxy="127.0.0.1"
#NextPort=3128

Acesse o site www.1000imagens.com usando o ziproxy e salve uma imagem no disco, usando outro navegador, acesse o mesmo site e a mesma foto sem o ziproxy e compare os tamanhos. Não se assuste!!!!

Descomente as opções NextProxy e NextPort para ativar o Squid.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Objetivo e ambiente
   3. Instalação dos programas
   4. Iniciando ZIPROXY
   5. Configurando ZIPROXY (ziproxy.conf)
   6. Acelerador no cliente
   7. Ajuda
Outros artigos deste autor

NoCatAuth - Construindo um firewall/gateway autenticado

Gateway de email com Qmail - proteção antivírus e antispam

Anti-SPAM ASK - Válidando remetentes por confirmação de mensagens

Qmail e chkuser - fila de mensagens limpa

Freeradius - servidor radius eficiente e completo

Leitura recomendada

FreeBSD + Asterisk

Configurando um domínio pelo serviço ipturbo empresarial (Brasil Telecom)

OpenGoo - Seu escritório nas nuvens Online-Ontime-Fulltime

Apresentando o monitor de redes EtherApe

Laconica - Twitter? Open source? Sim! Eis nosso microbloging de código aberto

  
Comentários
[1] Comentário enviado por fabio em 30/09/2004 - 09:08h

Excelente artigo Patrick, meus parabéns! Enfim, agora sei qual é o segredo do famoso "Acelerador UOL" no qual eles fazem tanto marketing em cima.

Como minha mãe não tem UOL, vou configurar um ziproxy pra ela aqui no meu Velox 512 e fazer uns testes com ela usando meu servidor como proxy. Capaz de funcionar :P

[]'s

[2] Comentário enviado por AValle em 30/09/2004 - 09:37h

Excelente artigo, já tirei um modem da gaveta pra fazer uns testes :-)

[3] Comentário enviado por y2h4ck em 30/09/2004 - 11:14h

Pow muito bacana isso hein Patrick, sera que isso daria um GAz a mais em um servidor para clientes de Radio ?

[]s

Anderson

[4] Comentário enviado por daaugusto em 30/09/2004 - 11:51h

Interessante o artigo, entretanto faltou mencionar a configuração dos clientes (máquina/navegadores) rodando *Linux*.

Obs.: O artigo (versão atualizada) poderia estar disposto em um formato mais portável, como o PDF.

[5] Comentário enviado por nunix79 em 30/09/2004 - 12:27h

Parabéns pelo artigo ficou otimo, agora é testar nas vpns e RAS por ai a fora.

Fabio Nunes

[6] Comentário enviado por patrickbrandao em 30/09/2004 - 12:42h

Obrigado pessoal,

a aplicacao vai depender muito do ambiente, uma experiencia pode ser feita para verificar se o ganho vale a pena,

em links rápidos, pode nao fazer muita diferenca:

Se voce gasta num link dial-up, 7 segundos para baixar certo site e o ziproxy consegui baixar para 4 segundo, sendo que 2 segundo foi gasto no processamento de compactacao,

num link em que voce baixa em 3 segundos, voce vai aumentar para 5, entenderão?!

logo a diferenca vai mais nos dial-up do que nos adsl e radio PARA SITES PEQUENOS.

tomarei nota sobre o formato da publicacao atualizada!

Patrick Brandão

[7] Comentário enviado por lucianojs em 30/09/2004 - 13:46h

Excelente artigo, uma coisa que fiz na empresa foi configurar o DIAL-IN para suportar os protocolos MPPE e MPPC, assim ele tambem comprime dos dados no momento da conexão. Para isto vc deve aplicar patch´s no Kernel e no PPP. A unica coisa que não consegui foi configurar para fazer CALL-BACK, por isto ainda utilizo um winxp como servidor DIAL-UP.
Para quem não sabe o CALL-BACK faz retorno de chamada, ou seja, quando vc realizar a conexão ao final da autenticação ele abre uma caixa solicitando o numero do telefone que vc está utilizando para conexão, apois informado o numero, ele prepara sua maquina para receber uma chamada dial-up e encerra a conexão, em seguida ele inicia a ligação (do lado do servidor) e autentica no cliente, ou seja, os custos de telefonia ficam do lado do provedor, atualmente utilizo isto para dar manutenção remota nos servidores da minha empresa.


[8] Comentário enviado por patrickbrandao em 30/09/2004 - 14:10h

Brilhante,

realmente há várias formas de se compactar dados para otimizar a velocidade:

Hardaware e software

Para hardware a solucao indicada acima ajuda muito, para software, meu artigo e o artigo ensinando a usar o mod_gzip do Apache (http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1220) de Fabio Nunes sao algumas escolhas. No site do ziproxy (ziproxy.sourceforge.net) ha algumas notas de outros projetos usando softwares.

Patrick Brandão

[9] Comentário enviado por removido em 28/02/2005 - 22:05h

Soh algo que me ocorreu e que eu achei relevante o suficiente para comentar:

esses famosos "aceleradores" que foram mencionados eu imagino configuram seus discadores para adicionar/remover o proxy na hora da conexao/terminacao da conexao para evitar que caso o usario queria conectar com outra fonte (ex. outro servidor discado) haja um problema de "nao foi possivel conectar ao proxy", por que eles provavelmente soh servem (arquivos) aos seus proprios IPs.

Pensem o que quiser.

[10] Comentário enviado por Ruy_Go em 18/04/2007 - 13:00h

Então não ha nenhuma possibilidade de uso do mesmo com proxy transparente????

[11] Comentário enviado por kernelzinhu em 09/05/2009 - 02:07h

Eu fiz um ambiente proxy transparente, com compactação de dados e cache.
1. rodei o zipproxy em localhost
2. rodei o squid, com as confs de cache certinho, configurei ele transparente e apontei o cache_peer para o zipproxy


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts