Usando o Squid em Conexões Intermitentes

Por Jennifer Vesperman - 02/08/2001

Uma das solicitações mais frequentes nas listas de mail do Squid é pedindo ajuda para configurar o Squid para operar bem em redes dial-up ou demand-dial. O modo offline irá funcionar para algumas destas redes, mas está longe de ser o ideal. Infelizmente muitas das funcionalidades do modo offline do Squid parecem ter desaparecido durante o desenvolvimento da série Squid 2.x. Na versão 2.3 STABLE4, o modo offline não tem quase nenhum efeito.

O Squid pode ser patcheado para funcionar bem em conexões dial-up e outras conexões intermitentes. Ter um cache no lado intermitente do link pode acabar com alguns dos problemas destas conexões, dando acesso a informação que está em cache e assim reduzindo o uso do link. Sem as correções do patche, o Squid pode funcionar razoavelmente bem em conexões dial-on-demand, mas discar cada vez que uma consulta tem que ser resolvido pode ser caro.

Modo standard

O Squid foi projetado para conexões permanentes. Fazer o Squid funcionar em conexões intermitentes exige alterações no modo que o Squid trata páginas web antigas e pesquisas DNS antigas.

As páginas são consideradas antigas quando o seu TTL (tempo de vida) tiver expirado. Muitas páginas web possuem valores de validade em seus cabeçalhos -- informando até quando a página pode se considerada atualizada, e quando considerar a mesma como "velha". O Squid também possui informação padrão de validade -- se não há dados nos cabeçalhos, o Squid configura os seus próprios. Páginas antigas são mantidas no cache -- se o cache ainda tiver espaço para elas.

Se o cache ficar sem espaço, as páginas antigas são descartadas em uma ordem mais-velha-primeiro. Este algoritmo é chamado LRU (least recently used -- menos recentemente usada). Outros algoritmos estão disponíveis em versões mais atuais do Squid. A opção de compilação --enable-heap-replacement permite que você escolha outras opções.

Se ainda não puder ser liberado espaço suficiente, páginas que ainda são recentes também são descartadas. Isto é mau para a eficiência do cache -- se isto está acontecendo e há espaço no disco, ou você pode conseguir espremer mais espaço em disco ou RAM de seu chefe, ajuste sua configuração.

Páginas antigas que ficam no cache são validadas quando um cliente solicita a página. O Squid gasta uma solicitação, perguntando "Ei, esta página mudou desde [data]?", e o servidor de origem irá responder com "Sim, aqui está a nova página," ou "Não, ela ainda é boa". A página é considerada recente novamente, seja uma nova página ou a antiga. Este processo é chamado de solicitação IMS, uma abreviação para "if modified since" (se modificado desde). Desde quando? Desde a última vez que o Squid verificou que a mesma é recente.

Pesquisas DNS também são armazenadas em cache, e possuem um TTL configurável. Quando uma entrada cacheada de Fully Qualified Domain Name (FQDN) ou uma entrada IP DNS expira, ela é removida do cache.

Modo offline

Então por que não usar o modo offline?

O modo offline é projetado para completa desconexão da rede -- para ler apenas o que está no cache. Ele funciona bem para demonstrações e apresentações. Se você for um convidado para o "60 Minutes" ou estiver trabalhando offline em uma apresentação comercial, você pode mostrar partes do seu web site que estão armazenadas no cache e elas irão aparecer com uma velocidade excelente. Apenas certifique-se de evitar qualquer coisa que não esteja no cache!

O Squid faz isto alterando a validade de páginas e consultas antigas, e bloqueando tentativas de recuperar páginas da web. Se a página web é um "cache miss" (não está no cache), ele retorna um erro ao cliente em vez de tentar recuperar a página.

Artigos relacionados:

Instalando e Configurando o Squid
Utilizando o Squid, parte 1 de 2
Utilizando o Squid, parte 2 de 2

O modo offline também nunca expira informações de DNS que esteja no cache, e nunca renova páginas antigas. Isto não é o que os usuários de dial-up e outros usuários com conexões intermitentes querem.

Usando a configuração não modificada do Squid, offline_mode on assinala ao Squid para nunca tentar uma validação, e offline_mode off assinala operação normal.

Nota: No Squid 2.3 STABLE4, o modo offline não tem mais a maioria destas funções. Se você acrescentar o patch "intermittent connections", esta funcionalidade será restaurada e extendida.

Modo intermitente

Para trabalhar com conexões intermitentes, o Squid deve ser patcheado. O patch de pder informar se a conexão está de pé.

Se estiver conectado, ele deve executar como no modo padrão: expirando págians web; substituindo páginas antigas, se solicitado; e removendo entradas DNS antigas.

Se desconectado, ele deve rodar como se estivesse no modo offline -- exceto que deve marcar páginas e entradas DNS vencidas como antigas, de forma que possam ser removidas ou substituídas quando da próxima vez que o Squid estiver conectado.

Patch de conexões intermitentes

Um patch para habilitar conexões intermitentes está disponível em Simegen.com.

O nome do arquivo é squid-tristate-offline-patch-1.o.txt. Se houver algum bug (ou mais milagrosamente, patches ou correções de bugs) aparecerem, reporte-os para dancer@users.sourceforge.net.

O path atual é contra a versão Squid 2.3 STABLE4, uma versão do Squid que é largamente utilizada. Algumas alterações manuais são necessárias para aplicar o patch contra versões antigas. Para instalar o patch:

Detalhes do patch

Este patch tem os seguintes efeitos:

Em um Squid modificado, a diretiva offline_mode funciona de forma diferente. Antes era um tipo booleano simples com os valores on e off. Agora usamos os valores 0, 1 ou 2.

# Operação online normal
offline_mode 0

# Operação offline. Use informação em cache somente.
# Não fale com o mundo.
offline_mode 2

# Condicionalmente offline.
# Online se uma interface monitorada
# existir E estiver ativa. Se qualquer condição
# for falsa, o Squid irá atuar no modo offline.
offline_mode 1

A nova diretiva network_interface recebe um parâmetro string, que é o nome da interface de rede que deve ser checada. Se estamos no modo 1, o Squid irá trabalhar no modo offline (2) ou online (0), dependendo do status desta interface. O Squid irá testar o status desta interface com freqüência não superior a um teste por segundo.

# vigiar ppp0
network_interface ppp0

Você pode utilizar uma interface dummy para manualmente mudar o Squid entre os modos online e offline.

No squid.conf, configure

network_interface dummy0

No prompt, execute

% ifconfig dummy0 [up|down]

Como as conexões PPP levam vários segundos para serem estabelecidas completamente após a interface ter sido criada, você pode preferir trocar de modos usando uma interface dummy e controlar aquela interface dummy a partir dos scripts ip-up e ip-down (veja man 8 pppd para maiores informações).

Problemas e Armadilhas

O modo offline pode não funcionar corretamente em versões não modificadas do Squid.

Leitura Adicional

Como o Squid não é projetado para conexões intermitentes, nenhuma das informações na seção "leitura adicional" é específica sobre conexões intermitentes. Podem ser úteis quando instalando e configurando o patch.

Jennifer Vesperman gosta de pensar que nasceu com uma pastilha de silício grudada em sua coluna, mas não consegue fazer que seus pais admitam isto. Ela contribui para o Open Source, principalmente como usuária e defensora. Jenn é a coordenadora atual do Linuxchix.org

Versão inglesa oreillynet.com Copyright © 2000 O'Reilly & Associates, Inc.

Tradução do original em http://www.oreillynet.com/pub/a/linux/2001/08/02/offline_squid.html

1