\documentclass[a4paper,11pt]{article}
% $Id: proposta.tex,v 1.15 2004/02/18 03:13:31 tmacam Exp $
%\documentclass[twocolumn,a4paper,11pts]{article}
% use a op<E7><E3>o draft no doclass para que o LaTeX marque linhas que ele
% julga serem dif<ED>ceis de formatar (overfull hbox , etc)
\usepackage [brazil]{babel}
%\usepackage [portuguese]{babel}
%\usepackage [brazilian]{babel}
%\usepackage {graphics}
%\usepackage {graphicx, color}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage {geometry}
\usepackage {float}
%\usepackage {syntonly}
%\syntaxonly % comente essa linha para gerar o dvi

\geometry {a4paper,left=2.5cm,right=2.5cm,top=3cm,bottom=2cm}

\title {\textbf{Proposta de Dissertação} \\
    Análise do Impacto do uso de \emph{proxies} em redes \emph{Peer-to-Peer}}
\author {Tiago Alves Macambira \thanks{ Menção à bolsa do CNPq} \\
    Orientador: Dorgival Olavo Guedes Neto \\
    \tt{\{tmacam,dorgival\}@dcc.ufmg.br}}
\date{30 de janeiro de 2003}

\begin {document}
\maketitle

%\begin{abstrac}
%Blá blá blá
%\end{abstract}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section {Introdução}

Existe uma constante pesquisa no meio acadêmico e comercial por formas
de economizar os recursos de rede de computadores em universidades,
instituições,
ISPs\footnote{\emph{Internet Service Providers} - Provedores de Acesso à
Internet}, órgãos governamentais, etc. Tradicionalmente, o foco desta
pesquisa é direcionado para as aplicações e/ou formas de acesso que,
no momento em questão, são tidas como
responsáveis pela maior parte do tráfego gerado e consumido na internet.

Até meados da década de 90, antes do surgimento da \emph{Web}, grande
parte das pesquisas com este foco não se concentravam nas aplicações, mas
nos próprios mecanismos de transporte e roteamento da
internet ~\cite{brakmo94tcp,rfc1247}. Naquela época \emph{pré-web}, a maior parte
do tráfego era devido aos protocolos SMTP e FTP que, em conjunto, eram
responsáveis por aproximadamente 80\% de tudo que transitava no
\emph{backbone} da NSFNet
~\cite{caceres89measurements,heimlich90nsfnet}.

O surgimento da Web, no entanto, modificou esse quadro profundamente.
Enquanto em 1995 calculava-se que 21\% de todo o tráfego na internet era
devido a tráfego HTTP, em 1997 esse valor já oscilava entre 60\% e 80\%
~\cite{thompson97widearea}. 

Essa mudança nos padrões do tráfego na rede mundial motivaram trabalhos
de análise, caracterização, controle e redução desse tráfego
~\cite{chankhunthod96hierarchical, caceres98web, barish00world,
arlitt00worldcup}.  Neste cenário, o uso de \emph{proxy caching} aparece
como uma ferramenta importante na diminuição da carga \emph{Web} na rede.

O aparecimento de aplicações \emph{peer-to-peer} (P2P) 
~\cite{balakrishnan03looking} de
compartilhamento de arquivos acarretou uma nova mudança nos
padrões de tráfego da internet. Em 2000, 23\% do tráfego de saída da
Universidade de Wisconsin era tráfego P2P, ao passo que o tráfego web
representava então apenas 20\% do total ~\cite{markatos02tracing}. De
maneira semelhante ao que aconteceu com a Web, o tráfego P2P apenas
aumentou daquela época para os dias atuais, já chegando a ocupar 45\% de
todo o tráfego daquela universidade. Comportamentos similares são relatados na
literatura e acredita-se que eles sejam reflexos do que está
acontecendo em
toda a internet ~\cite{gummadi03measurement}.

Assim sendo, a maior parte do tráfego da internet atual é devia a
aplicações P2P de troca de arquivos. Desta forma, similarmente ao
que foi feito quando da explosão do tráfego Web, faz-se necessário
analisar, caracterizar, buscar formas de controlar e diminuir esse
tráfego. Não somente, analisar o impacto e a eficiência destas propostas
tanto na dinâmica como no tráfego P2P. É exatamente nestes
últimos tópicos que pretendemos focar o nosso trabalho.

O restante deste documento é organizado da seguinte forma. 
A seção 2 delimita o escopo deste trabalho,
apresentando explicitamente o objeto do nosso estudo. A seção 3
apresenta trabalhos relacionados. Na
seqüência, as seções 4, 5 apresentam os objetivos traçados para a
realização de nosso trabalho e a forma como pretendemos realizá-los. A
seção 6 apresenta o cronograma de execução das atividades propostas.
Finalmente, na seção 7, apresentaremos
a bibliografia referenciada.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\section{Conceitos Básicos}
%Um \emph{proxy cache} intercepta uma requisição HTTP de um cliente web
%e, se ele puder responder este pedido com dados armazenados em seu
%\emph{cache}, ele os retornará ao usuário. Caso contrário, ele
%busca o respota do pedido na rede, armazena-o e finalmente retorna-o para o
%usuário ~\cite{barish00world}. Se essa interação for feita de maneira
%transparente ao cliente http, diz-se que tal proxy é um \textbf{proxy
%transparente}.
%
%O uso de \emph{proxy caches} para a tráfego melhora a percepção do
%usuário da rede, na medida que mascara eventuais perdas de
%conectividade, diminui a latência percebida pelo usuário e reduz o
%consumo de largura de banda da
%instituição ~\cite{barish00world,caceres98web}.
%
%
%As coisas não são bem assim com tráfego p2p.
%
%Sistemas P2P 
%
%em especial, sistemas P2P para troca de arquivo.
%
%
%index servers, etc
%
%formas de transferência de arquivos - segmentada, fragmentada (ref. para
%o http/1.0 Range)
%
%
%DHTs

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Definição do Problema}


As características do tráfego \emph{Web} já são conhecidas e
documentadas na literatura. O uso de \emph{proxy caches} é,
sabidamente, a forma mais eficiente de promover a conservação de
recursos de rede devido a esse tráfego.  
Tais ferramentas melhoram a
percepção que o usuário tem da rede na medida que mascaram eventuais
perdas de conectividade, diminuem a latência percebida pelo usuário e
reduzem o consumo de largura de banda de uma
instituição ~\cite{barish00world,caceres98web}.

Já existem propostas na literatura para o uso de soluções como
\emph{proxy caches} para sistemas P2P de troca de arquivo
~\cite{bala02p4p}. A esperança é que, dadas as características do
tráfego P2P, existam formas de conseguir uma conservação da largura de
banda usada por essas aplicações, da mesma forma à conseguida
no tráfego \emph{web} através de \emph{proxies}.

Contudo, como apontado por Gummadi ~\cite{gummadi03measurement}, tráfego
\emph{Web} é diferente do tráfego P2P. Isto faz com que todas as
soluções propostas para \emph{web-proxies} tenham que ser re-analisadas para o
cenário particular de aplicações \emph{peer-to-peer}.

Apesar de toda essa motivação para o uso de \emph{proxies} para
sistemas P2P, não existem trabalhos nem estudos divulgados na literatura que:
\begin{itemize}
\item comprovem empiricamente os resultados obtidos com o uso de tal abordagem;
\item analisem o impacto que essa solução provocaria na dinâmica das
aplicações P2P;
\item caracterizem como tal solução modifica o tráfego P2P de uma
instituição com o mundo exterior e
\item especifiquem como melhor modelar e construir tais \emph{proxies} de
forma a maximizar os ganhos possíveis.
\end{itemize}

Há ainda o fato de que caracterizações existentes da carga de sistemas
P2P de troca de arquivo são por vezes contraditórias e ainda 
em reduzido número. Isto nos motiva a:
\begin{itemize}
\item validar as pesquisa já efetuadas, procurando por comportamentos
similares em outros cenários ou em cenários mais abrangentes ou
\item observar novos comportamentos e métricas que não foram observadas
ou que não foram observadas com o rigor necessário.
\end{itemize}

O conjunto dos fatos supra-mencionados nos impulsiona a realizar
trabalhos adicionais de caracterização de carga de sistemas P2P e, com o
auxílio destes e de trabalhos já feitos, averigüar o possível
desempenho de \emph{proxy-caches} para redes P2P de troca de arquivo e
implementar um modelo real para validar nossas observações e propostas.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section {Trabalhos Relacionados}

A idéia de utilizar \emph{caches} para promover redução da latência e do
tráfego de rede é relativamente antiga ~\cite{danzig93case}, bem como a
sua associação com \emph{proxies} ~\cite{chankhunthod96hierarchical}. Um
\emph{proxy}, nesse contexo, é um elemento de rede que intermedia o
diálogo entre duas entidades na camada de aplicação. Essa intermediação
pode servir tanto para o propósito de permitir o diálogo entre essas
duas entidades quando, por exemplo, uma dessas entidades encontra-se
atrás de um \emph{firewall}, como para reforçar políticas de segurança,
conduta e uso dos recursos de rede de uma intituição.

Geralmente é necessário suporte por parte das apliações para que estas
usem
\emph{proxies}. Além disso, precisa-se configurá-las para tanto,
pois não existem mecanismos largamente implantados para a
auto-configuração de \emph{proxies} nas aplicações.
Existe, todavia, um mecanismo chamado de \emph{proxy transparente},
que permite a utilização de um \emph{proxy-cache} sem a necessidade de 
re-configuração das aplicações para tanto.
\emph{Proxies transparentes} funcionam interceptando as requisições de
clientes, sem que estes tomem conhecimento disso, e redirecionando-as
para um \emph{cache}. Contudo, como argumentado por Barish
~\cite{barish00world}, a conveniência e praticidade do uso de
tais \emph{proxies} têm um custo: a violação de argumento fim-a-fim
~\cite{saltzer84endtoend}.


%A utilização de \emph{proxy-caches} geralmente requer o suporte para tal
%por parte das aplicações e a alteração configurações destas. Todavia,
%existem mecanismos, como uso de \emph{proxies transparentes} que
%eliminam tais empecilhos  ~\cite{barish00world}. Há de se ressaltar que
%apesar de \emph{transparente}, as aplicações não são indiferentes ao uso
%de tais mecanismos, pois proxies, enquanto elementos situados no meio do
%canal de comunicação de duas entidades, possui uma natureza disruptiva. Estes podem modificar sensivelmente a comunicação
%entre duas entidades, por vezes beneficamente mascarando possíveis
%problemas com a rede ~\cite{barish00world,caceres98web}, mas por outras
%vezes constituindo um ponto único de falha artificial à aplicação. Desta
%forma, argumentamos que o uso de proxies, mesmo que transparentes,
%consituem....

Como já dito, a idéia do uso de \emph{proxies} para sistemas P2P não é nova.
Krishnamurthy e Zhang propuseram um sistema que não somente faria
\emph{caching} de pesquisas entre vários sistemas distribuídos de troca
de arquivo bem como dos dados trocados entre clientes destes
sistemas ~\cite{bala02p4p}. Nosso foco não é na implementação de um
\emph{proxy}
nem na proposta de um mecanismo que sirva de ponte entre vários sistemas
P2P, mas na observação da aplicabilidade de um \emph{proxy} para sistemas P2P,
não necessariamente nestes moldes, bem como na observação de como um
\emph{proxy} alteraria a dinâmica de um ou de vários desses sistemas.

Vários artigos recentes relatam métricas de sistemas P2P, focando nas
redes de troca de arquivo mais populares 
~\cite{chu02availability, markatos02tracing,
saroiu02measurement}. Esses artigos, no entanto, obtêm seus dados de uma
forma intrusiva, colocando um nó nessa rede que interage com os outros
nós, inferindo e obtendo métricas. Como apontado por
Sen ~\cite{senandwong2002}, esse tipo de estudo é limitado pela próprio
consumo de banda e recursos que gera, não sendo capaz de analisar redes
com um grande número de nós eficientemente.

Outros, como o do
próprio Sen e um artigo de Gummadi ~\cite{gummadi03measurement},
utilizam-se de monitoramento passivo de tráfego para 
obter seus dados e estatísticas.
Pretendemos, de forma similar a estes autores,
realizar monitoramento passivo de tráfego P2P.
Essa abordagem não é intrusiva, é mais escalável e mais
confiável, haja vista que toda a atividade dos nós de uma rede pode ser
detectada e monitorada. 


%Outros artigos como ~\cite{gummadi03measurement,} fazem parte desse
%trabalho mas obtêm seus seus dados de experimentos efetuados em
%ambientes limitados. Afim de aumentarmos nosso conhecimento sobre
%sistemas P2P é interessante para o meio ciêntífico realizar outras
%medições para poder compará-las com dados anteriormente obtidos e
%validar suas observações, sob a luz de outros olhos (?!).

Nosso trabalho diferencia-se de trabalhos recentes sobre redes P2P pois
não propomos uma nova rede P2P, não propomos formas de melhorar
buscas nestas redes, nem formas de torná-las mais escaláveis
~\cite{balakrishnan03looking,stoica01chord,ratnasamy01can}. 
Não abordamos o uso de técnicas de roteamento com conhecimento de
localidade (\emph{location-aware routing}). Tampouco propomos a modificação dos
protocolos existentes para que esses tirem proveito da localidade de
referência existentes dentro de uma instituição a fim de evitar
alguns meandros legais que envolvem o uso de caches e o armazenamento
(temporário) de arquivos ilegais.

%Forçamos o uso de informações de localidade de
%referência e observamos e bla bla bla o lance de ter um cache dentro da
%rede. Outra, trabalhos que sugerem o uso de roteamento baseado em
%localidade de referência o faz para evitar o uso de proxies dado todos
%os ~\cite{gummadi03measurement}.
%Apesar de acharmos que o uso de loca-ref atrapalha se abusivo, copyright
%bla bla bla websever existe e ninguém morreu por causa disso.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section {Objetivos}
\subsection{Monitoração de tráfego P2P}

Planejamos implementar uma arquitetura de monitoramento de tráfego P2P
não-intrusiva e colocá-la
em um ambiente real. O uso de uma abordagem não-intrusiva, como já dito
na seção de trabalhos relacionados, traria várias vantagens.

Colocaremos  essa
arquitetura nas fronteiras da rede de uma instituição parceira, onde
poderíamos efetivamente monitorar todo o tráfego P2P
desta instituição com o mundo exterior.
Nesse estágio pretendemos observar diversas métricas de sistemas
\emph{peer-to-peer} de troca de arquivos, verificando e comparando
nossos resultados com trabalhos da literatura.

\subsection{\emph{Cache} passivo}
Após um período de monitoramento no qual observaremos
a escalabilidade de nossa arquitetura, planejamos estendê-la,
acrescentando a ela a capacidade de recuperar e armazenar dados e arquivos
trocados no ambiente em questão.

Como construiremos essa infra-estrutura de \emph{cache} sobre a
infra-estrutura de monitoramento passivo da rede, ela gozará de todas as
vantagens desta última, podendo efetivamente realizar o armazenamento de
todos os arquivos trocados entre a instituição e a rede exterior.

O fato de não estarmos diretamente nem interagindo nem nos interpondo
entre dois nós da rede que realizam a troca de arquivos permite-nos,
diferentemente do que far-se-ia com o uso de um \emph{proxy}
transparente, 
realizar \emph{cache} de forma não-intrusiva e não-disruptiva,
não violando o argumento fim-a-fim.

\subsection{Nó-\emph{cache}}
Finalmente, seguindo a mesma estratégia
não-intrusiva, colocaríamos um nodo na rede que interagiria 
com a rede P2P, oferecendo seu \emph{cache} para os
nós  internos à instituição. 
Observaremos como a existência desse nó-\emph{cache} afeta a
dinâmica da rede P2P deste ambiente sob vários aspectos e métricas, entre
os quais:
\begin{itemize}
\item Média de sucesso de \emph{downloads};
\item tempo médio de conclusão de \emph{downloads};
\item velocidade média de \emph{downloads} e \emph{uploads};
\item variação do tráfego externo de entrada e saída;
\item localidade de referência dos arquivos (e seus fragmentos).
\end{itemize}


%Proxy Nossa proposta é fazer caching não intrusivo e observar o impacto que a presença de que um
%\emph{cache-node} causa na dinâmica da rede p2p.



\subsection {Resultados esperados}
Com essas ações e objetivos pretendemos:
\begin{enumerate}
\item ajudar a suprir a inexistência de estudos que comprovem empiricamente o
impacto que a presença de um \emph{cache} causaria na dinâmica de redes P2P;
\item comprovar o potencial que existe para \emph{caching} de dados em redes
P2P;
\item obter caracterizações mais precisas do tráfego P2P;
\item obter mais informações que possam nortear o desenvolvimento de
novas redes P2P e de soluções para controle de tráfego gerado por elas e
\item publicações baseadas nos resultados obtidos.
\end{enumerate}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section {Metodologia}
\subsection{Atividades}
\label{secatividades}
As seguintes atividades são previstas para o desenvolvimento do nosso
trabalho:
\begin{description}
\item[Levantamento Bibliográfico] fase onde relizaremos pesquisas e estudos da
bibliografia existente relacionados à área de sistemas P2P, \emph{web proxies} e
\emph{proxies} no geral,
monitoramento de tráfego em alta-velocidade e outros assuntos pertinentes
\item [Implementação da Infra-estrutura de Monitoramento] Pesquisa e análise das
ferramentas existentes para a sua elaboração. Implementação e
implantação dessa infra-estrutura em um cenário real
\item[Coleta de Dados] Obtenção e análise dos dados coletados
através da infra-estrutura de monitoramento
\item[Implementação do Proxy (nó-\emph{cache})] Pesquisa e análise das
ferramenta disponíveis para a elaboração do \emph{proxy} e ajuste deste mediante
dados obtidos na etapa de coleta de dados
\item[Coleta de Dados 2] Obtenção, análise e comparação dos dados
coletados através da infra-estrutura de monitoramento na presença do \emph{proxy}
\item[Análise] Observação e averigüação dos dados obtidos na segunda
coleta. Verificação da aplicabilidade e do sucesso da abordagem adotada
para implementação do \emph{proxy}.
\item[Refinamento] Re-estruturação das partes do projeto para
obtenção de dados e resultados mais precisos e/ou satisfatórios
\item[Escrita da dissertação]
%\item[Integração com o P4P] - E tal!!!
\end{description}

%\subsection{A infra-estrutura de monitoração}
%\subsection{A arquitetura}
%
%\subsection{Problemas esperados} 
%
%A busca é passiva - não é possível observar nos silenciosos e nós que
%usem portas não convencionais. Planejamos fazer medições quantitativas
%sobre esses nós a fim de podermos verificar o quanto estamos removendo
%do trace.
%
%E o problema do copyright?
%
%Escalonabilidade


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section {Cronograma}

As atividades propostas em \ref{secatividades} seguem o cronograma
descrito na
a Tabela \ref{Tab1}.

%\begin{minipage}[t]
\begin{center}
\centering
\begin{table*}[htbp]
\begin{tabular}{|l|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
Tarefa		&Jan&Fev&Mar&Abr&Mai&Jun&Jul&Ago&Set&Out&Nov&Dez\\ \hline \hline
Levantamento	& X & X & X &   &   &   &   &   &   &   &   &   \\\hline
Elaboração	& X & X &   &   &   &   &   &   &   &   &   &   \\\hline
Coleta 1	&   & X & X &   &   &   &   &   &   &   &   &   \\\hline
Analise 1 	&   & X & X & X &   &   &   &   &   &   &   &   \\\hline
Proxy   	&   &   & X & X & X & X &   &   &   &   &   &   \\\hline
Coleta 2	&   &   & X & X & X & X &   &   &   &   &   &   \\\hline
Analise 2	&   &   &   &   &   &   &   & X & X & X &   &   \\\hline
Refinamento	&   &   &   &   & X & X & X & X & X & X & X &   \\\hline
Escrita 	&   & X & X & X & X & X & X & X & X & X & X & X \\\hline
\end{tabular}
\caption{Cronograma de atividades - por mês}
\label{Tab1}
\end{table*}
\end{center}
%\end{minipage}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Bibliografia
\bibliographystyle {plain}
\bibliography{bibliografia}


\end{document}
