Arquivo por Autor

Web caching para uma Internet mais rápida

5 de junho de 2010

Rodrigo Filipe Silva Carramate


Web caching nada mais é do que um processo pelo qual se armazena localmente conteúdo disponível na internet, a fim de minimizar o tráfego de rede e sua latência [1]. Apesar de parecer um conceito simples e de fácil compreensão, temos no web caching uma grande ajuda em dois fatores críticos nas redes atuais: a largura de banda [2] e a latência.

Devido à queda no custo da Internet de banda larga para o usuário final doméstico e empresarial nos últimos anos, temos muitas vezes a falsa impressão de que largura de banda se tornou algo economicamente acessível. Na verdade isto é um equívoco, uma vez que esse tipo de usuário paga, na verdade, por uma concessão que, segundo o SLA [3] (em português “Acordo do nível de serviço”), lhe garante apenas 10% do que contrata nominalmente. Temos porém exemplos em que a situação é bastante diferente, como no caso de pequenos provedores, em que há necessidade de um SLA que garanta algo próximo dos 100% da banda; nestes casos temos preços bastante elevados para o total de banda contratado. Desta forma, quanto menor for a demanda de banda nessas redes, menor será o custo com contratação de banda.

Outro grande problema que frequentemente encontramos é a baixa latência. Este costuma ser mais notado quando utilizamos algum serviço de streaming [4] diretamente da Internet, seja ao realizar uma video-conferência ou ao assistir a algum vídeo diretamente da Internet. Geralmente o sintoma mais comum em uma rede com baixa latência são travamentos frequentes durante a execução dessas tarefas.

Infelizmente, o web caching é limitado apenas ao caso da execução de conteúdo arquivado, porém, nesse contexto o web caching se torna um excelente aliado: ao manter em servidores locais o conteúdo da Internet mais acessado, evitam-se acessos externos desnecessários, sendo o mesmo conteúdo repassado diretamente pelos servidores ao usuário. Assim, além de o usuário receber a informação muito mais rapidamente, permitindo uma navegação muito mais proveitosa, há uma economia considerável de recursos, já que a necessidade de banda diminui consideravelmente.

Além de beneficiar a velocidade do acesso dos usuários da sua rede à Internet, o web caching ainda tem outro grande atrativo: o Squid [5], que é o software de web caching mais utilizado mundialmente tem seu código aberto, o que significa que todos podem estudá-lo e o melhorar. Além disso, felizmente alguns dos programadores do Squid têm permitido que seus usuários o possam usar gratuitamente.

Devemos entender também que há vários tipos de caching, entre eles o caching feito na própria máquina e aquele feito na rede local. O primeiro é mais comumente feito pelo próprio navegador, possibilitando que se volte de maneira praticamente instantânea a páginas visitadas recentemente. O segundo, foco deste artigo, objetiva criar um cache compartilhado entre os usuários de uma mesma rede, de tal modo que se um usuário acessar uma determinada página, o servidor grava todo seu conteúdo automaticamente e distribui a cópia a cada uma das próximas tentativas de acesso.

A aquisição de uma página por um navegador sem uso de web caching se dá pelo contato direto entre o cliente e o servidor que hospeda a página, havendo transferência direta dos dados. Quando se utiliza o web caching, o navegador faz a requisição da mesma forma, porém quem recebe e interpreta o pedido é o servidor de web cache. Este procura pela página em seu cache e, caso a possua, avalia sua idade e a compara com a sua data de validade estipulada pelo criador da página ou segundo um conjunto de regras estipuladas pelo próprio servidor de web cache. Caso a página ainda seja válida, a envia ao cliente; caso contrário, redireciona o cliente à página original e cria em seu cache uma cópia da mesma.

Um problema que pode ocorrer é dado pelo chamado balanço de carga: para dividir o trabalho entre servidores distintos, um mesmo conteúdo é reescrito em URLs semelhantes, mas não iguais. Por exemplo, em [6] é dado o exemplo de uma mesma imagem armazenada em 3 diferentes servidores do Orkut:

http://img1.orkut.com/imagem1.jpg (1)
http://img2.orkut.com/imagem1.jpg (2)
http://img3.orkut.com/imagem1.jpg (3)

Como o Squid trabalha através de URLs, ele entenderia que são 3 arquivos diferentes, o que causaria muito mais transferências do que necessário. Sendo assim, há softwares como o InComum [7], que podem ser programados para dar ao Squid a habilidade de reconhecer essa similaridade.

O processamento da URL para detectar a uniformidade pode ser bastante complexo, uma vez que a URL pode conter muito mais informações do que aquela do nome do servidor e do arquivo. Podem haver, por exemplo, informações para controle da sessão.

Conclusão

A arquitetura complexa e gigantesca de sistemas como o da Wikimedia[8], fundação que atende os projetos Wikipedia, Wikidictionary, entre outros, só é realizável devido à existência de formas para minimizar o tráfego interno e externo, através do Squid.

A imagem mostra um grupo muito grande de servidores formando um cluster, no qual há vários servidores squid.

Servidores da Wikimedia

Arquitetura de servidores da Wikimedia

Referências

[1] It’s the Latency, Stupid
http://www.stuartcheshire.org/rants/Latency.html
Visitado em 31/05/2010

[2] Largura de banda
http://pt.wikipedia.org/wiki/Largura_de_banda_%28telecomunica%C3%A7%C3%B5es%29
Visitado em 31/05/2010

[3] Acordo de nível de serviço
http://pt.wikipedia.org/wiki/Acordo_de_N%C3%ADvel_de_Servi%C3%A7o
Visitado em 31/05/2010

[4] Streaming Definition
http://www.techterms.com/definition/streaming
Visitado em 31/05/2010

[5] Squid: Optimising Web Delivery
http://www.squid-cache.org/
Visitado em 31/05/2010

[6] Cache efetivo de vídeos do Youtube com Squid
http://www.lucianopinheiro.net/portal/?q=node/130
Visitado em 31/05/2010

[7] inComum
http://sourceforge.net/projects/incomum/
Visitado em 31/05/2010

[8] Wikimedia servers
http://meta.wikimedia.org/wiki/Wikimedia_servers
Visitado em 31/05/2010

Saiba mais

Abordagens mais aprofundadas sobre web caching

[9] Web caching
http://www.ccda.biz/web/about/ac123/ac147/ac174/ac199/about_cisco_ipj_archive_article09186a00800c8903.html
Visitado em 31/05/2010

[10] Introdução ao Cache de Web
http://www.rnp.br/newsgen/0003/cache.html
Visitado em 31/05/2010

[11] Making the Most of Your Internet Connection
http://www.web-cache.com/
Visitado em 31/05/2010

Relação entre web caching e QoS

[12] ENHANCING QoS IN WEB CACHING USING DIFFERENTIATED SERVICES
http://www.tmrfindia.org/ijcsa/V3I17.pdf
Visitado em 31/05/2010

Licença Creative Commons
Esta obra foi licenciada com uma Licença Creative Commons – Atribuição – Partilha nos Mesmos Termos 3.0 Não Adaptada.

O que é Traffic shaping, afinal?

26 de fevereiro de 2010

Rodrigo Filipe Silva Carramate


Traffic shaping [1], ao contrário do que muitos pensam, não é apenas uma forma de os provedores comerciais limitarem taxas de transferência dos chamados heavy users, que transferem muita informação pela Internet. É bem verdade que há inúmeros relatos de usuários que dizem ter sido afetados pelo traffic shaping, sobretudo daqueles adeptos do peer-to-peer (como eMule e BitTorrent) [2], mas esta prática questionável por parte dos provedores está longe de ser a única utilidade do shaping, que, quando bem utilizado, pode tornar as redes muito mais produtivas.

Do inglês shaping (em português, formatar ou modelar), o nome já elucida bastante a finalidade do procedimento, que nada mais é do que modelar a banda da rede, ou ainda atribuir um perfil de controle de banda à rede.

O leitor pode, então, se perguntar porque deveria querer introduzir limites em sua rede, quando, na verdade, quer maximizar sua capacidade. Para responder a esta pergunta devemos nos lembrar que os diferentes tipos de tráfego na rede também têm diferentes prioridades: ninguém ficaria incomodado de enviar um e-mail e este chegar um ou dois segundos mais tarde ao seu destinatário. Por outro lado, se esta pessoa estiver em uma videoconferência com o seu chefe em Miami e tiver que esperar os mesmos dois segundos entre cada palavra que ele diz, a situação tende a ficar bastante desagradável. Os dois casos citados explicam um dos benefícios do uso do traffic shaping: a priorização de tráfego, que tem por objetivo atrasar a transmissão de pacotes menos urgentes a fim de entregar mais rapidamente outros mais prioritários, esta característica do traffic shaping constitui um dos mecanismos de QoS [3], ou a tentativa de garantir diferentes níveis de serviço da rede para diferentes aplicações dela.

Uma outra vantagem do uso do traffic shaping é a quantização de banda por tipo de tráfego. Para explicar a necessidade desta utilização vamos supor que esteja em seu escritório, a poucas horas da entrega daquele relatório essencial para a conclusão do projeto, quando misteriosamente a rede, tão necessária para o término do relatório, demora minutos para carregar uma simples página da Internet. Por outro lado, no computador ao lado seu colega faz download de músicas através de torrents a alta taxa de transferência. Há grandes chances de as conexões criadas pelo seu colega estarem utilizando toda a banda disponível para a Internet na rede do escritório. Obviamente nesta situação exagerada, poderíamos simplesmente bloquear a utilização de torrents na empresa, mas suponhamos que, por alguma razão, seu uso seja necessário.

Desta forma seria necessário limitar a taxa de transferência concedida a esse tipo de tráfego, o que se trata de uma outra utilidade do traffic shaping. Com as taxas para o download e upload de torrents limitadas, a navegação na Web certamente ficaria mais rápida.

Outra face do traffic shaping é o agendamento de perfis, no qual o gerente da rede, por meio de ferramentas adequadas ao seu sistema operacional, implementa o disparo automático de configurações pré-programadas, desta forma podendo adequar as quantidades de banda às necessidades específicas dos vários horários.

No caso de cidades digitais [4] temos uma grande variedade de usos, devido à complexidade das redes. Podemos, por exemplo, imaginar uma cidade em que tenha sido projetada uma rede para atender tanto a repartições da prefeitura quanto à população em geral. Uma regra de traffic shaping apropriada a essa estrutura seria reservar uma quantidade razoável de banda às repartições durante os seus respectivos horários de funcionamento. Esta medida preveniria o uso de todos os recursos pela população, evitando limitações na conectividade da prefeitura. Do mesmo modo, após o horário de funcionamento poderia se estabelecer uma regra onde essa banda fosse novamente disponibilizada à população, promovendo melhora na conexão a ela oferecida.

Podemos, então, entender o traffic shaping como um conjunto de regras planejado a fim de otimizar a rede e moldá-la a necessidades específicas. Infelizmente há quem o utilize para lesar consumidores. Por exemplo, proibindo tráfegos como Peer-to-Peer, ou a telefonia pela Internet, chamada VoIP [5].

Referências


[1] Traffic shaping
Visitado em 26/02/2010

[2] Quality of Service
Visitado em 26/02/2010

[3] Peer_to_peer
Visitado em 26/02/2010


[4] O que é Cidade Digital?
Visitado em 26/02/2010


[5] VoIP

Visitado em 26/02/2010

Saiba Mais

Controle de tráfego

QoS

Licença Creative Commons
Esta obra foi licenciada com uma Licença Creative Commons – Atribuição – Partilha nos Mesmos Termos 3.0 Não Adaptada.

Por que usar VPNs seguras?

15 de janeiro de 2010

Rodrigo Filipe Silva Carramate


VPN segura é uma rede virtual, que tem seu tráfego criptografado a fim de permitir a passagem deste através de redes inseguras sem que haja perda do sigilo das informações. A segurança dos dados se dá através de um processo de tunelamento criptografado, no qual se forma um túnel virtual entre cliente e servidor, onde temos os pacotes codificados em uma borda, sendo apenas descriptografados na outra borda. Com essa estrutura, mesmo que os pacotes sejam interceptados por usuários mal-intencionados, dificilmente a segurança dos dados será comprometida[1].

Dentre os usos para uma VPN segura podem ser citados três principais[2]:

  • Acesso remoto via internet: permite que um usuário acesse sua rede doméstica ou corporativa sem estar presente fisicamente na mesma, usando a Internet como intermediadora;
  • Conexão de LANs via internet: possibilita a junção de duas ou mais LANs através da internet, compondo uma WAN sem necessidade de um link dedicado;
  • Conexão de computadores numa intranet: cria dentro de uma rede corporativa uma outra rede, invisível a todos os usuários que não estiverem conectados ao servidor de VPN, permitindo a transmissão de conteúdo confidencial através da rede corporativa.

No contexto das VPNs existe um software muito interessante chamado OpenVPN[3]: trata-se de uma ferramenta multiplataforma de código aberto, muito completa, madura e robusta. O fato de possuir código aberto, além de dar ao OpenVPN portabilidade, faz com que existam versões para os principais sistemas operativos existentes, também atrai uma comunidade bastante ativa e solícita, onde sempre ocorrem discussões sobre o desenvolvimento do programa e se fornece ajuda aos que possuem dúvidas.

Após devidamente configurado, o programa cria uma interface virtual, que é responsável por estabelecer o túnel que efetua a conexão entre cliente e servidor. O OpenVPN implementa a criptografia dos pacotes através do renomado OpenSSL, o que garante a segurança do tráfego na rede virtual.

No nosso projeto de cidades digitais temos no OpenVPN a base da segurança da rede mesh[4]. Neste tipo de rede devemos tomar um cuidado muito especial devido à ausência de criptografia nativa nas redes ad hoc. Desta forma, para garantir a proteção dos dados dos usuários recorremos ao OpenVPN, que provou ser uma solução extremamente dinâmica, acompanhando eventuais modificações nas topologias de rede, sempre se adequando a necessidades específicas das diferentes localidades.

Saiba mais

HowStuffWorks – Como funciona uma VPN

HOWTO (OpenVPN)

Linux: VPN em Linux com OpenVPN [Artigo]

Referências

[1] Virtual Private Network – Wikipédia, a enciclopédia livre

[2] Rede Privada Virtual – VPN

[3] Community Software Overview

[4] HowStuffWorks “How Wireless Mesh Networks Work”

Licença Creative Commons
Esta obra foi licenciada com uma Licença Creative Commons – Atribuição – Partilha nos Mesmos Termos 3.0 Não Adaptada.