
A Internet atual é uma rede baseada em uma arquitetura monista que encaminha sem distinção todos os pacotes segundo o modelo 
de melhor esforço, sendo usada para diversas aplicações com diferentes requisitos. Para muitos pesquisadores, uma única rede para atender 
os requisitos atuais da Internet como segurança, qualidade de serviço, mobilidade, confiança, entre outros, é inviável.  
Por isso, as principais propostas para a nova Internet se baseiam na arquitetura pluralista~\cite{rexford2010future,moreira.sbrc09}, na qual se define que a 
Internet do Futuro será composta por diversas redes virtuais operando simultaneamente. Cada rede virtual pode ser vista como uma 
fatia (\textit{slice}) de rede, cada uma com seus recursos e com a sua pilha de protocolos específica. Essa divisão da rede em fatias 
garante a dinamicidade e a capacidade de evoluir da nova arquitetura. Em cada fatia de rede podem ser executados protocolos que 
satisfaçam os requisitos de uma dada aplicação e até mesmo propostas de novos protocolos para a Internet podem ser testadas, 
uma vez que as fatias são independentes e não interferem no funcionamento uma da outra. Por isso, um requisito fundamental 
para a adoção da arquitetura pluralista na prática é o isolamento entre as redes virtuais, para que por exemplo o tráfego gerado em uma rede não interfira no desempenho de nenhuma outra rede virtual.

\section{Isolamento entre Redes}
 
Cada uma das redes executadas sobre a infraestrutura virtualizada é, portanto, uma rede virtual. Nesse caso, o gerenciamento da infraestrutura de rede para garantir ausência de interferência inter-redes é um desafio, porque os recursos físicos são compartilhados.
As plataformas de virtualização lidam com compartilhamento de recursos em diferentes
níveis. Por exemplo, o Xen~\cite{barham.sosp2003} virtualiza o \textit{hardware} de uma máquina entre diferentes sistemas operacionais executados em paralelo através de um hipervisor, que é uma camada de software entre as máquinas virtuais e o \textit{hardware}. 
Nessa plataforma, as máquinas virtuais podem assumir o papel de roteadores, possibilitando a criação de diversas redes virtuais operando ao mesmo tempo. 
No Xen, uma única máquina virtual privilegiada é responsável por permitir o acesso das máquinas virtuais a diferentes recursos de rede, 
através de chamadas ao hipervisor. 
Assim, essa máquina virtual privilegiada, chamada de Domínio~0, pode se tornar um gargalo para certas operações e levar à quebra do isolamento entre as máquinas virtuais. 
Para garantir o isolamento, há necessidade de um melhor gerenciamento dos recursos virtualizados, o que não é atendido plenamente pelo Xen em sua forma nativa, como será detalhado mais à frente neste projeto.
A distribuição de recursos no Xen pode ser realizada pelo ajuste de parâmetros
como a quantidade de CPU e memória atribuída a cada roteador virtual. O Xen não possui, porém, um mecanismo para limitar a quantidade de recursos do Domínio~0
utilizada pelas máquinas virtuais em tarefas de rede, havendo a necessidade de uma forma indireta de alocar esses recursos.

\section{Objetivos do Projeto}

Para garantir isolamento de rede, este trabalho propõe o XTC (\textit{Xen~Throughput~Control}), um mecanismo que visa orquestrar a quantidade de recursos do Domínio~0
oferecida para cada roteador virtual.
Diversos trabalhos já propõem formas de alocação de recursos em \textit{data centers}~\cite{padala2007adaptive, wang-utilization}.
Diferente desses trabalhos, o XTC lida com o compartilhamento de recursos em um ambiente de redes virtuais. 
No XTC, a quantidade de CPU atribuída a cada roteador virtual é mapeada para limitar
a vazão encaminhada pelo roteador virtual, reduzindo seu impacto no Domínio~0.
Essa quantidade de CPU alocada a cada roteador virtual é
controlada em tempo de execução o que garante ao sistema a capacidade de se adaptar às condições da rede.
O XTC pode ser utilizado para prover diferenciação de recursos quando ocorre gargalo de processamento no Domínio~0 devido
às suas operações de rede, possibilitando a limitação de diferentes valores de vazão para cada roteador.

A partir do exposto, o objetivo geral do trabalho é construir um controlador de vazão capaz de garantir o isolamento entre diferentes redes virtuais. 
Para isso, o XTC necessita limitar a capacidade dos roteadores virtuais em encaminhar pacotes. 
Essa capacidade é limitada indiretamente, a partir da porcentagem de CPU da máquina física alocada para cada roteador virtual. 
Desta forma, o trabalho engloba três objetivos específicos: (1) desenvolver um modelo matemático, específico para a plataforma Xen, que relacione a porcentagem de CPU com 
a vazão obtida pelo roteador virtual; (2) a partir do modelo matemático, desenvolver um controlador que rastreie uma determinada vazão para o roteador a partir 
da atuação em sua porcentagem de CPU, e; (3) avaliar a solução proposta através de análise experimental.
A partir da análise experimental mostra-se que o mecanismo proposto é uma ferramenta flexível para prover diferenciação entre roteadores. 
Os resultados também mostram que o XTC é tolerante a distúrbios introduzidos no roteador
virtual por processos executados em paralelo às tarefas de rede e possui capacidade de se adaptar a mudanças na rede.

A ideia do XTC, bem como os experimentos para sua validação, foi publicada em um veículo nacional~\cite{couto2011XTC} e aceita
para publicação em um veículo internacional~\cite{couto2011XTCGC}.

\section{Organização do Texto}

Este trabalho está organizado da seguinte forma. O Capítulo~\ref{sec:conceitos} introduz os conceitos de virtualização de redes e detalha o funcionamento da plataforma Xen.
O Capítulo~\ref{sec:trabalhosRelacionados} apresenta os trabalhos relacionados com o XTC e o Capítulo~\ref{sec:testbed} descreve a plataforma de testes utilizada.
O Capítulo~\ref{sec:xtc} descreve o XTC, fornecendo uma visão geral do sistema e apresentando o modelo matemático utilizado para analisar o comportamento do Xen, bem
como o projeto dos blocos que compõem o sistema. O Capítulo~\ref{sec:resultados} avalia o XTC experimentalmente. O Capítulo~\ref{sec:produtoFinal} descreve a arquitetura do XTC em sua implementação final. Finalmente, o Capítulo~\ref{sec:conclusoes} conclui este trabalho.
