NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
16 de março de 2001 | volume 5, número 2

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Implantando WCCP na Hierarquia de Proxies da RNP

Daniel Carlos S. de Jesus <>
Ivo de Carvalho Peixinho <>
Ronaldo de Lima Cardoso <>

Centro de Processamento de Dados
Divisão de Suporte (DISUP)
Universidade Federal da Bahia

Resumo
1. Introdução
2. Squid
3. WCCP
3.1 Ambiente
3.2 Configuração
3.2.1 Configurando o Servidor de Proxy-Cache
3.2.2 Configurando o Roteador
4. Conclusão
5. Sites relacionados
Referências bibliográficas

Resumo

O protocolo WCCP é uma forma bastante eficiente de implementar uma política de proxy-cache transparente em uma rede. Este artigo detalha as vantagens e as configurações necessárias para implantar o WCCP, utilizando elementos já presentes em muitos POPs da RNP.

^

1. Introdução

O uso de servidores proxy na Internet, em especial servidores proxy-cache, contribui muito para a economia da banda disponível e para tornar o serviço mais rápido para os usuários. Infelizmente, nem sempre é trivial implantar um serviço de proxy em redes grandes, pois o número de estações que terão que ser reconfiguradas torna inviável essa mudança.

As vantagens do uso de servidores proxy-cache são evidentes, visto que existem muitos recursos na Internet que são utilizados por diversos usuários. No esquema tradicional, a cada requisição de usuário, uma nova conexão é feita, mesmo que o recurso já tenha sido solicitado minutos atrás. O uso de servidores proxy-cache permite que requisições já feitas anteriormente não necessitem de novas conexões com a Internet, otimizando o uso de banda e tornando mais rápido o acesso à rede.

Numa tentativa de resolver o problema de implementação de um serviço desse tipo, diversas formas de proxy transparente foram criadas, permitindo a implantação de um proxy na rede, sem a reconfiguração das estações. Este artigo trata exatamente deste tipo de solução, em especial do protocolo WCCP (Web Cache Coordination Protocol), protocolo desenvolvido pela CISCO que, em conjunto com um servidor proxy-cache, constitui em uma solução muito interessante para proxy transparente, como veremos no decorrer do artigo.

Servidores proxy-cache já foram tema de outros artigos no NewsGeneration . Por este motivo, eles não serão detalhados neste. Para maiores informações sobre os servidores proxy-cache, consulte o artigo "Introdução ao Cache de Web", de Cláudia Watanabe, no endereço http://www.rnp.br/newsgen/0003/cache.html .

^

2. Squid

O Squid ( www.squid-cache.org ) é um servidor proxy-cache freeware, que suporta Web, FTP e Gopher. O Squid é o servidor proxy mais usado no mundo UNIX. Na hierarquia de proxies da RNP, este servidor foi escolhido como padrão para a criação da mesma. O Squid foi escolhido porque possui desempenho muito bom, além de ser gratuito.

O Squid utiliza o protoclo ICP, descrito nas RFC's 2186 e 2187, para formar hierarquias de proxy. Através deste protocolo, o Squid conversa com outros servidores proxy, questionando a existência de objetos nestes. Maiores informações sobre o protocolo ICP podem ser obtidas em http://www.squid-cache.org/Doc/rfc2186.txt e http://www.squid-cache.org/Doc/rfc2187.txt .

^

3. WCCP

O WCCP é um protocolo de redirecionamento transparente que permite o uso de um proxy-cache para manipular o tráfego Web, reduzindo o custo de transmissão e o tempo de download. Atualmente, existem duas versões do protocolo do WCCP. A versão 1 (WCCPv1) permite apenas que um roteador participe do serviço de proxy transparente, ou seja, só é permitido que um roteador atue como redirecionador de pacotes, entretanto é possível usar mais de um servidor proxy-cache para participar do serviço. A Figura 1 ilustra o uso do WCCPv1.

Uso do WccPv1

Figura 1 - Uso do WCCPv1

A versão 2 (WCCPv2) suporta múltiplos roteadores (ver Figura 2) o que aumenta o desempenho do serviço, pois a tarefa de encapsulamento de pacotes é balanceada entre os mesmos. Além disso, a versão 2 provê recursos de segurança na comunicação entre o roteador e o proxy-cache.

Uso do WCCPv2

Figura 2 - Uso do WCCPv2

Na data de finalização deste artigo a versão mais recente do Squid ainda não provia suporte ao WCCPv2, por isso toda a configuração abaixo será feita baseada no WCCPv1.

^

3.1 Ambiente

O sistema operacional utilizado na implementação do servidor proxy-cache foi o Linux SuSe 7.0 PPC (Kernel 2.2.16), rodando em uma máquina RS/6000 F50 com dois processadores de 332 MHz, 1 GB de memória RAM e com um total de disco de 50 GB. Provavelmente qualquer distribuição poderia ser utilizada para a implantação do proxy transparente através do WCCP. Entretanto, em virtude da arquitetura da máquina, escolhemos a distribuição SUSE, pois foi a que mostrou melhor suporte para as máquinas RISC IBM.

Infelizmente não foi possível implementar o WCCP diretamente no AIX, visto que o módulo necessário para a sua implementação não está disponível para este sistema. De modo a aproveitar os servidores proxy existentes da hierarquia, configuramos o servidor Linux para não fazer cache, e repassar as requisições para os servidores AIX da hierarquia.

O roteador Cisco utilizado consiste em um modelo 7500, rodando IOS 12.0.

^

3.2 Configuração

Dividiremos o processo de instalação em duas partes bem distintas. A primeira parte do processo se restringirá à configuração da máquina que irá atuar como proxy-cache, e a segunda parte irá cobrir a configuração do roteador.

^

3.2.1 Configurando o Servidor de Proxy-Cache

Basicamente, serão necessárias duas etapas para a configuração do servidor. A primeira etapa se refere à configuração do Squid, e a segunda etapa se refere à compilação do módulo WCCP e o uso do ipchains para direcionar o tráfego Web para a porta do Squid.

Configuração do Squid
O Squid pode ser obtido em http://www.squid-cache.org/Versions/v2/2.3/squid-2.3.STABLE4-src.tar.gz . Para instalá-lo, basta seguir os passos abaixo:

  1. tar -xvzf squid-2.3.STABLE4-src.tar.gz
  2. ./configure --enable-wccp --enable-snmp --prefix=

    A primeira opção habilita o suporte WCCP do Squid. A segunda habilita o suporte SNMP, que será usado para monitorar o desempenho do proxy. A última opção informa onde será instalado o Squid.

    Existem outras opções que podem ser habilitadas. Para maiores informações, execute o comando ./configure --help.

  3. make all
  4. make install

Caso nenhum erro tenha ocorrido, o Squid já estará instalado. Iremos agora mostrar a configuração necessária para o funcionamento do WCCP. Para isso edite o arquivo squid.conf (verifique a documentação do Squid para saber mais sobre as configurações específicas) e insira os seguintes parâmetros:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
wccp_router 192.168.0.11 1
wccp_version 42 2

1 - IP do roteador que estará com o WCCP habilitado para executar o direcionamento.

2 - É importante observar que o IOS 11.2 só suporta a versão 3 da implementação WCCP do Squid.

Na nossa disposição hierárquica, o servidor de proxy-cache não armazena as páginas Web. Ele atua apenas como uma interface entre o roteador e a hierarquia de proxies já existente. Isto é possível graças a possibilidade de se criar um relacionamento entre proxies vizinhos. Existem dois tipos de relacionamento: parent e sibling.

O proxy-cache irá requisitar o objeto inicialmente ao sibling e, caso, este vizinho não possua o objeto, o proxy-cache irá fazer uma nova requisição ao vizinho do tipo parent. A idéia é organizar os proxy-caches mais próximos entre si como siblings e os que estão na rede do roteador como parents.

Com o Squid configurado, podemos iniciá-lo com o comando:

/bin/squid start

Módulo ip_wccp
O protocolo GRE (Generic Routing Encapsulation) é um protocolo genérico, usado para encapsular informações de roteamento em pacotes IP. Este protocolo é usado pelo WCCP no roteador para encapsular os pacotes com destino a servidores Web por ele recebido. Este pacote será enviado para um servidor de proxy-cache que terá que desencapsular o mesmo antes de enviá-lo ao Squid.

Esta tarefa de desencapsulamento será executado pelo módulo ip_wccp que está disponível em http://www.squid-cache.org/WCCP-support/Linux/ip_wccp.c .

É necessário compilar este código-fonte pra gerar um módulo. A compilação deve ser específica para cada kernel. Seguem abaixo os parâmetros utilizados para a compilação do mesmo na plataforma RISC POWERPC.

gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
-fno-strict-aliasing -D__powerpc__ -fsigned-char -msoft-float -pipe -fno-builtin -ffixed-r2
-Wno-uninitialized -mmultiple -mstring -DMODULE   -DEXPORT_SYMTAB
-c ip_wccp.c -o ip_wccp.o

Para compilar o mesmo em plataforma Intel, o seguinte comando dará conta do recado:

gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
-fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS
-include /usr/src/linux/include/linux/modversions.h   -c -o ip_wccp.o ip_wccp.c

Após a compilação, execute o comando insmod ip_wccp.o para carregar o módulo na memória e verifique se o mesmo foi carregado com o comando lsmod:

Module            Size      Used by
ip_wccp           968       0 (unused)

Agora é necessário criar uma regra para direcionar os pacotes que o módulo recebeu do roteador e enviou para a porta que o Squid está escutando. No exemplo abaixo, o Squid está rodando na porta 3128, que é a porta default.

./ipchains -A input -s 0/0  -d 0/0 80 -p tcp -j REDIRECT 3128

^

3.2.2 Configurando o Roteador

A configuração do roteador consiste basicamente em habilitar o serviço de WCCP. Os passos abaixo mostram os comandos necessários para proceder a essa habilitação:

  1. conf t
  2. ip wccp version 1
  3. ip wccp web-cache
  4. int (interface que se deseja habilitar o WCCP. Correntemente, usa-se a interface de acesso à Internet)
  5. ip wccp web-cache redirect out

Após essas duas etapas, o proxy transparente já estará funcionando. Para verificar se o proxy-cache está se anunciando ao roteador, habilite o modo debug para analisar os eventos referentes ao WCCP:

terminal monitor
debug ip wccp events

Devem aparecer mensagens de comunicação entre o roteador e o proxy-cache parecidas com essas abaixo:

WCCP-EVNT: Built I_See_You msg body w/0 usable web caches, change # 00000001
WCCP-5-CACHEFOUND: Web Cache 200.18.228.51 acquired, service S00
WCCP-EVNT: Built I_See_You msg body w/1 usable web caches, change # 00000002

Para verificar se o Squid está recebendo as requisições, consulte os registros de log do mesmo (access_log) e veja se as requisições de página Web estão sendo atendidas.

^

4. Conclusão

Sem dúvida, um dos serviços mais populares e utilizados na Internet é o World Wide Web. Esta popularidade causa uma demanda em torno de 65% no uso da largura de banda de uma organização e tende a aumentar devido às crescentes aplicações desenvolvidas para sites Web. Por isso, é de suma importância que as organizações repensem o modo como seu acesso à Web está sendo utilizado e como ele poderá a vir a influenciar no desempenho de sua rede. O uso de um proxy-cache irá melhorar bastante a utilização deste acesso devido à contigência que ele faz a sites que são freqüentemente acessados e, que sem dúvida, causam uma redundância e desperdício na sua conexão Internet.

A configuração de clientes para utilização deste serviço em grandes coorporações seria muito difícil pelo simples fato de ter-se que configurar o browser em cada estação. O conceito de protocolo transparente vem ajudar em muito nesta tarefa, já que não se é preciso esta configuração em cada máquina cliente.

Dentre as soluções de proxy transparente, o WCCP se mostra uma solução interessante, visto que ele permite redundância de servidores proxy, e, no caso de falha em todos os servidores, permite a saída direta para a Internet.

Pode-se avaliar o uso deste serviço e, conseqüentemente, o uso dos servidores proxy-cache utilizando-se um analisador de tráfego. O analisador de tráfego permite observar a utilização do enlace, além da taxa de hits (objetos trazidos do cache) do seu servidor proxy. Essas medidas podem comprovar a eficácia da solução adotada.

Um programa muito utilizado para análise de tráfego e de servidores Squid é o MRTG. Este software gratuito faz uso da licença GNU e pode ser obtido em http://www.mrtg.org .

^

5. Sites relacionados

Configuring Web Cache Services Using WCCP
http://www.cisco.com/univercd/cc/td/doc/product/software/ios121/121cgcr/fun_c/fcprt3/fcd305.htm

Designing a Web Caching Infrastructure for You Network
http://www.swelltech.com/support/sizecache/transparent.html

Introdução ao Cache de Web
http://www.rnp.br/newsgen/0003/cache.html

Squid Cache http://www.squid-cache.org

^

Referências bibliográficas

[1] RFC 2784 - Generic Routing Encapsulation

[2] RFC 2186 - Internet Cache Protocol

[3] RFC 2187 - Application of Internet Cache Protocol

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004