Cláudia Shizue Watanabe <claudia@pop-pr.rnp.br>
Rede Nacional de Ensino e Pesquisa (RNP)
Introdução
Conceituação
Hierarquia de servidores
O uso de filtros
Vantagens
Medidas de desempenho
Considerações finais
Conclusão
Referências bibliográficas
Sites relacionados
Embora este artigo trate-se de uma introdução ao serviço de cache de Web, o que de certa forma já foi feito neste boletim através do artigo Cache: Melhor Aproveitamento dos Recursos na Internet , aqui, alguns dos conceitos então apresentados são vistos de forma mais aprofundada. Há também outros que, com a evolução do serviço, surgiram mais recentemente e que, desta forma, são apresentados pela primeira vez nesta publicação.
Introdução
A popularidade da Web está causando sérios problemas de desempenho nos acessos à Internet, de forma que a redução da latência tem se tornado uma questão importante. O número de usuários que se conectam cresce de forma muito acentuada, sendo que mais de 2/3 do tráfego Internet atual é gerado pela Web.
A latência para se recuperar um documento Web depende de vários fatores, tais como: largura de banda, tempo de propagação, velocidade dos computadores cliente e servidor, etc.
No esforço de minimizar as conseqüências deste crescimento, alguns métodos podem ser adotados. Pode-se fazer uma atualização dos recursos: um servidor mais rápido, switch, aumento da banda. Entretanto, isto além de não ser economicamente viável, pode não resolver o problema, uma vez que são numerosos os fatores que envolvem uma única transação Web. Alternativas como cache de WWW, espelhamento de arquivos e outros têm sido adotados para resolver os gargalos existentes na rede.
A iniciativa de se implantar um sistema de cache WWW que armazene localmente objetos (páginas HTML, imagens e arquivos) da Internet, pode melhorar a qualidade do serviço fornecido aos usuários. Servidores proxy ajudam a diminuir significamente o tempo médio de acesso a páginas e a transferência de arquivos, porque muitos deles são requisitados mais de uma vez e, exceto na primeira, as requisições são atendidas localmente.
Este não é um conceito novo. A maioria dos sistemas de computadores modernos usam este princípio para melhorar o desempenho de muitos processadores, velocidade, acesso a disco, etc. Alguns componentes da Internet têm sido cacheados há um longo tempo - como o DNS (Domain Name System).
Conceituação
Normalmente, os visualizadores de páginas Web (browsers) fazem conexão direta com os servidores remotos. Entretanto, eles podem ser configurados para se conectar a um servidor proxy. Assim, quando um usuário requisita uma página, o browser primeiramente checa seu cache local. Se a página (URL) não é encontrada, ele a requisita para o servidor proxy local. Se este tem a cópia (cache hit) e ela não expirou, ele a retorna imediatamente. Caso esta não esteja no cache (cache miss), ele entrará em contato com o servidor remoto e fará a transferência, mantendo uma cópia (opcional) em seu cache e enviando uma cópia para a máquina do usuário.
O proxy deve ser capaz de agir tanto como um servidor como um cliente. Ele age como um servidor quando aceita requisições HTTP e age como cliente quando se conecta com servidores remotos para conseguir retornar ou atualizar os documentos para seus clientes.
Uma requisição através de um proxy HTTP é um pouco diferente do que uma requisição HTTP normal, por exemplo:
- Sem proxy (conexão direta com o servidor WWW):
GET /Cache/index.html HTTP/1.0
Accept: */* - Com proxy configurado:
GET http://www.ircache.net/Cache/index.html HTTP/1.0
Accept: */*
Desta forma, o servidor proxy tem todas as informações necessárias para fazer a requisição ao servidor remoto especificado na URL.
As requisições de outros protocolos, por exemplo FTP, são um pouco mais complicadas. O servidor proxy deve usar o protocolo FTP para requisitar o arquivo do servidor. Além disso, ele deve transformar esta requisição FTP em uma resposta HTTP para o cliente. Isto significa incluir os cabeçalhos Content-Lenght, Last-Modified, e Content-Type. Um comando list, por exemplo, é retornado como um documento HTML.
GET ftp://ftp.ircache.net/download/README HTTP/1.0
Accept: */*
Uma questão importante é determinar quando os objetos serão atualizados ou removidos, de forma a garantir a sua consistência. Alguns podem permanecer estáveis por um longo tempo e de repente mudar, outros mudam diariamente.
Se um objeto expirou, o servidor Web original será consultado para revalidá-lo. Quando o objeto armazenado no cache contém no cabeçalho o campo Last-Modified, que indica quando ele sofreu a última modificação, o servidor proxy pode usá-lo para fazer uma requisição If-Modified-Since ao servidor Web remoto e, a partir da comparação das datas, saber se o objeto foi alterado. Se o documento não foi modificado, não será retornado. O cliente receberá como resposta informações como, por exemplo, a nova data de expiração. Se o objeto foi modificado, ele será retornado.
Quando os diretórios de cache estão cheios, alguns objetos devem ser removidos para que novos objetos sejam armazenados. A escolha é feita usando algoritmos de substituição, em conjunto com algumas regras configuradas pelo administrador.
TIPOS DE CACHE
De acordo com a sua característica, um serviço de cache pode ser classificado segundo os seguintes tipos:
-
Browser Cache
A maioria dos visualizadores possuem um cache próprio, pois é bastante provável que um usuário acesse as mesmas páginas freqüentemente, ou muitas vezes num mesmo dia. Browser Caches não são compartilhados entre os usuários. -
Proxy Cache
Pode ser acessado e compartilhado por muitos usuários. A aplicação proxy age como intermediário entre clientes e servidores WWW. O servidor local procura pela página, grava-a no disco e repassa para o usuário. Requisições subseqüentes de outros usuários recuperam a página que está gravada localmente. Os servidores proxies são usados por organizações ou provedores que querem reduzir a quantidade de banda que utilizam. -
Transparent Proxy Cache
É assim chamado porque ele trabalha interceptando o tráfego da rede transparentemente para o browser. São usados especialmente por ISP, porque não é necessário nenhuma configuração no browser do usuário.
Figura 1: Esquema de Funcionamento de um Servidor de Cache
Hierarquia de servidores
Para reduzir a banda utilizada nas WANs, a carga sobre os servidores de informação e o tempo de acesso a páginas, os servidores proxies podem compartilhar informações. Eles podem se comunicar com outros servidores, podendo estar no mesmo nível (irmão) ou em níveis diferentes (pai-filho). Neste caso, o objeto é recuperado do site com menor medida de latência.
No modelo de interligação de servidores, pode-se formar uma hierarquia regional, nacional ou internacional. Assim, se o servidor proxy não encontra a página no cache local, ele pergunta aos outros servidores na hierarquia, caso nenhum deles tenha uma cópia o servidor original da página é consultado.
Em nível nacional, a RNP , através dos seus Pontos de Presença (PoPs), está implantando uma hierarquia de proxies visando a redução do tráfego do backbone nacional, melhorando a qualidade de serviço fornecido aos usuários.
Para a comunicação entre servidores proxies, existe o Internet Cache Protocol (ICP) [RFC 2186, RFC 2187], suportado por alguns softwares. Ele permite um cache consultar outros sobre seu conteúdo e, baseado nos tempos de respostas, decide qual cache entregará um dado objeto. O problema é que o ICP aumenta a latência e o tráfego da rede.
Cache-digest é a resposta para os problemas de latência e congestionamento associados com protocolos como o ICP. Trata-se de um sumário do conteúdo do cache de um servidor que é trocado periodicamente com outros servidores pertencentes à hierarquia. Usando cache-digests, é possível determinar, com alto grau de precisão, se uma dada URL está "cacheada" em um servidor. O cache-digest está implementado na versão 2 do software Squid .
O uso de filtros
Filtros são usados para permitir ou negar o acesso à Internet ou a determinados sites. Administradores podem criar regras para filtrar requisições baseados no endereço IP do cliente, domínios, redes, localização (URL) do objeto requisitado, bloqueando assim requisições inapropriadas. São usados principalmente em escolas e em organizações para que possam permitir o acesso a páginas que realmente sejam de seu interesse.
Eles podem ser simples (baseados em um lista de páginas Web, por exemplo) ou podem conter regras mais complexas. A restrição de acesso do proxy mais externo tem precedência sobre o mais interno.
Vantagens
Pode-se citar como vantagens do uso de servidores cache:
- Redução do tráfego
Menos requisições e respostas precisam trafegar na rede. O objeto é recuperado do servidor somente uma vez, reduzindo a quantidade de banda usada pelo cliente. Pode-se conseguir taxas de acerto de até 60%. - Redução de carga dos servidores
Menos requisições para o servidor WWW atender. Exemplificando, alguns sites ficam extremamente congestionados quando do lançamento de novos produtos. Um servidor proxy pode resolver o problema. - Redução da latência
As respostas de requisições aos objetos "cacheados" são feitas a partir do cache local, não pelo servidor WWW original, ou seja, o acesso tende a ser bastante rápido. - Possibilidade de acesso
Considerando que o servidor WWW do endereço especificado no URL está inacessível (queda de enlace, servidor desligado, etc) ou está recebendo mais solicitações do que ele pode agüentar, se a página estiver armazenada no proxy será possível acessá-la (mas não vai ser possível atualizá-la).
Medidas de desempenho
Algumas são usadas para medir a eficiência do cache Web: hit ratio (taxa de acerto), byte hit ratio e tempo.
O hit ratio é a proporção de acertos para todas as requisições. Já o byte hit ratio é medido a partir do tamanho dos objetos, ou seja, é a proporção dos bytes dos acertos pelos bytes de todas as requisições.
O tempo é uma importante medida porque ele representa o tempo salvo esperando por requisições Web. Mas não é tarefa fácil medi-lo. O cache próprio pode medir o tempo transcorrido enquanto processa uma requisição. Mas não há como saber exatamente quando o primeiro pacote requisitado foi transmitido e quando o último pacote de resposta foi recebido. Os valores dependem de muitos fatores, tais como a velocidade da conexão Internet, hora do dia, dia da semana, localização geográfica e velocidade entre o cache e seus usuários.
O desempenho do servidor pode ser acompanhado através de ferramentas que analisam os logs e permitem identificar endereço IP, data e hora, URL, status da requisição. É possível monitorar dados como: percentagem de acertos no cache (que pode chegar a 60%), sites mais acessados, clientes que mais acessam, requisições satisfeitas diretamente, requisições feitas a servidores da hierarquia, tipos de documentos armazenados - texto, imagens, arquivos (doc, txt, ppt, ps, exe, gz, etc). Como é possível verificar o endereço IP de onde partiu determinada requisição, alguns usuários julgam que podem ter a sua privacidade comprometida.
Vários grupos de pesquisas estudam o desempenho de softwares existentes. Polyteam é um grupo de pesquisadores do Information Resource Cache (IRCache, Boulder, Colo) que conduz testes de desempenho sobre os principais produtos de cache de Web. Mas o grupo não recomenda produtos nem seleciona vencedores. Testes recentes mostraram que o taxa de rendimento e tempo de resposta melhoraram e as diferenças no preço e performance aumentaram.
A tendência é o aumento de desempenho dos softwares sem aumentos na complexidade da administração.
Considerações finais
Como o cache age como intermediário dos seus clientes, os servidores Web não sabem o endereço real de quem fez a requisição. Isso pode trazer vantagens, mas existem casos em que o endereço do cliente é usado para controle de acesso.
Muitos browsers precisam ter o endereço do servidor proxy e o número da porta correspondente configurada para cada protocolo (HTTP, FTP, etc). Existem scripts para a configuração automática, mas ainda exige que o usuário entre com o URL.
Soluções para cache tem um mercado crescente. Hoje existem muitos softwares disponíveis. Eis alguns: Apache, Avirt, BrowserGate, CacheBack, CacheFlow, CacheQube, CacheRaq, CERN/W3C, Cisco Cache Engine, CSM Proxy, DeleGate, DynaCache, FastLane, Harvest, IBM Web Traffic Express, InfoStorm, Inktomi Traffic Server, Jigsaw, JProxyma, Lagoon, Lucent's IPWorX, Microsoft Proxy, MOWS, NetCache, NetFilter, NetHawk, Netscape Proxy Server, Novell BorderManager FastCache, Novell Internet Caching System, Peregrine, Pushcache Cuttlefish, Roxen, SoftRouter Plus, Spaghetti, SpoonProxy, Squid, Sun Netra Proxy, TeraNode, Venturi, Viking, Wcol, WebSpeed, WinGate, WinProxy, Workfire.
Assim como muitos produtos auxiliares, como as ferramentas para análise dos logs: Cache Stats, Calamaris, Prostat, Proxy-stats.gawk, Pwebstats, Sqmgrlog, Squeezer, Squidclients, Squij, Web Log, Web Trends.
O modelo trabalha bem para documentos estáticos. Entretanto, existem muitas partes da Web que consistem de documentos dinâmicos ou que são alterados freqüentemente. A presença deste tipo de situação exige um desenvolvimento de uma política mais sofisticada, que permita browsers e servidores proxy determinar como e por quanto tempo as cópias serão guardadas.
Alguns destes objetos nunca são cacheados, como os programas CGI - que são usados para consulta a base de dados e processamento para formulários, páginas que registram datas atuais e contadores de acesso, objetos protegidos por senha, resultados de scripts executados em servidores remotos, etc. Para os contadores de acesso, recomenda-se colocá-lo em um pequeno documento e fazê-lo não "cacheável" (através do seu cabeçalho - header).
Existe uma campanha que tem por objetivo difundir e aumentar a utilização de servidores de cache na Web, a Cache Now! , que também tenta conscientizar os desenvolvedores de páginas Web a evitar o uso dos objetos que não podem ser armazenados, orientando sobre a melhor utilização desse recurso.
De acordo com um pesquisa da Stat Market , 17% de toda a Internet global acessa a Web através de um servidor proxy. É um número bastante significativo, mas o objetivo é aumentá-lo cada vez mais, aproveitando ao máximo o recurso.
Conclusão
A quantidade de informação disponível na Internet aumenta a cada dia. O comércio eletrônico, home banking, compras on-line, propaganda, redução nos custos de acesso à Internet, acessos gratuitos, tudo isto tem agravado cada vez mais os gargalos nas conexões. Recursos como o uso de cache de Web têm sido implantados para reduzir o tráfego, de forma que se evite a utilização de conexões da Internet, diminuindo o tempo de acesso e aumentando a qualidade do serviço para os usuários finais.
Referências bibliográficas
RFC 2186 – Internet Cache Protocol (ICP) version 2
RFC 2187 – Application of Internet Cache Protocol (ICP) version 2
Wessels, Duane; Chisolm, Glen; Rousskov, Alex; Proxy Caches: Speeding Up the Web - Data Comunications, volume 28, número 14, p. 56-70, Out/99.
Sites relacionados
Campanha Cache Now!: http://vancouver-webpages.com/CacheNow
Estatísticas da Internet: http://www.statmarket.com
Informações sobre Cache WWW: http://www.web-caching.com
Information Resource Cache: http://www.ircache.net
Internet Caching Resource Center: http://www.caching.com
RNP – Rede Nacional de Pesquisa: http://www.rnp.br/proxies
Squid: http://www.squid-cache.org
NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004