\section{Protocolos de Comunicação}

% http://www.ietf.org/rfc/rfc793.txt
% RFC: 793
%                      TRANSMISSION CONTROL PROTOCOL
%                          DARPA INTERNET PROGRAM
%                          PROTOCOL SPECIFICATION
%                              September 1981
% 
% 			      prepared for
% 
%                Defense Advanced Research Projects Agency
%                 Information Processing Techniques Office
%                          1400 Wilson Boulevard
%                        Arlington, Virginia  22209
% 
% 				   by
% 
%                      Information Sciences Institute
%                    University of Southern California
%                            4676 Admiralty Way
%                    Marina del Rey, California  90291


\subsection{\textit{Frame Relay}}

O \textit{Frame Relay} é uma eficiente tecnologia de comunicação de dados, usada para transmitir de maneira rápida e barata a informação digital através de uma rede de dados, dividindo essas informações em \textit{frames} (quadros) ou \textit{packets} (pacotes) a um ou muitos destinos. Em 2006, a \textit{Internet} baseada em ATM e IP nativo começaram, lentamente, a impelir o desuso do \textit{frame relay}.

\subsection{\textit{Asynchronous Transfer Mode}}

ATM é um protocolo de redes de computadores para comunicação de alto nível que encapsula os dados em pacotes de tamanho fixo (53 \textit{bytes}; 48 \textit{bytes} de dados e 5 de cabeçalho), em oposição aos de tamanho variável, comuns nas redes de comutação de pacotes (como os protocolos IP e \textit{Ethernet}). No ATM, esses pacotes são denominados células. O protocolo VPI (Virtual Path Identifier) que é utilizado neste tipo de tecnologia de rede, possui 8 \textit{bits} na interface UNI e 12 \textit{bits} na interface NNI. A tecnologia ATM permite a transmissão de dados, voz e vídeo.

O ATM é uma tecnologia de comunicação ou mais especificamente, de comutação rápida de pacotes que suporta taxas de transferência de dados com variação de velocidades sub-T1 (menos de 1,544 Mbps) até 10 Gbps. Como outros serviços de comutação de pacotes (\textit{Frame Relay}, SMDS), ATM atinge as suas altas velocidades, em parte, pela transmissão de dados em células de tamanho fixo, e dispensando protocolos de correção de erros.

\subsection{FDDI}

O padrão FDDI (\textit{Fiber Distributed Data Interface}) foi estabelecido pelo ANSI (\textit{American National Standards Institute}) em 1987. Este abrange o nível físico e de ligação de dados (as primeiras duas camadas do modelo OSI).

A expansão de redes de âmbito mais alargado, designadamente redes do tipo MAN (\textit{Metropolitan Area Network}), são algumas das possibilidades do FDDI, tal como pode servir de base à interligação de redes locais, como nas redes de campus.

As redes FDDI adotam uma tecnologia de transmissão idêntica às das redes \textit{Token Ring}, mas utilizando, comumente, cabos de fibra óptica, o que lhes concede capacidades de transmissão muito elevadas (na casa dos 100 Mbps ou mais) e a oportunidade de se alargarem a distâncias de até 100 Km.

Estas particularidades tornam esse padrão bastante indicado para a interligação de redes através de um \textit{backbone}. Nesse caso, o \textit{backbone} deste tipo de redes é justamente o cabo de fibra óptica duplo, com configuração em anel FDDI, ao qual se ligam as sub-redes.

\subsection{Modelo OSI}
\label{modeloosi}

OSI (\textit{Open Systems Interconnection}), ou Interconexão de Sistemas Abertos, é um conjunto de padrões ISO relativo à comunicação de dados. Um sistema aberto é um sistema que não depende de uma arquitetura específica.

O modelo tem como propósito facilitar o processo de padronização e obter interconectividade entre máquinas de diferentes sistemas operativos, a Organização Internacional de Padronização (ISO - \textit{International Organization for Standardization}) aprovou, no início dos anos 80, um modelo de referência para permitir a comunicação entre máquinas heterogêneas, denominado OSI (\textit{Open Systems Interconnection}). Esse modelo serve de base para qualquer tipo de rede, seja de curta, média ou longa distância.


\subsection{Protocolo IP}

IP é um acrônimo para a expressão inglesa "\textit{Internet Protocol}" (ou Protocolo de \textit{Internet}), que é um protocolo usado entre duas máquinas em rede para encaminhamento dos dados.

Os dados numa rede IP, são enviados em blocos referidos como pacotes ou datagramas (os termos são basicamente sinônimos no IP, sendo usados para os dados em diferentes locais nas camadas IP). Em particular, no IP nenhuma definição é necessária antes do \textit{host} tentar enviar pacotes para um \textit{host} com o qual não comunicou previamente.

O IP oferece um serviço de datagramas não confiável (também chamado de melhor esforço); ou seja, o pacote vem quase sem garantias. O pacote pode chegar desordenado (comparado com outros pacotes enviados entre os mesmos \textit{hosts}), também podem chegar duplicados, ou podem ser perdidos por inteiro. Se a aplicação precisa de confiabilidade, esta é adicionada na camada de transporte.

O IP é o elemento comum encontrado na \textit{Internet} dos dias de hoje. É descrito no RFC 791 da IETF, que foi pela primeira vez publicado em Setembro de 1981.



\subsection{\textit{Transmission Control Protocol}}

O TCP (acrônimo para o inglês \textit{Transmission Control Protocol}) é um dos protocolos sob os quais assenta o núcleo da \textit{Internet} nos dias de hoje. A versatilidade e robustez deste protocolo tornou-o adequado para redes globais, já que este verifica se os dados são enviados pela rede de forma correta, na seqüência apropriada e sem erros, pela rede.

O TCP é um protocolo do nível da camada de transporte (camada 4) do Modelo OSI e é sobre o qual assentam a maioria das aplicações cibernéticas, como o SSH, FTP, HTTP, portanto, a \textit{World Wide Web}.

% O protocolo TCP especifica três fases durante uma conexão: estabelecimento da ligação, transferência e término de ligação. O estabelecimento da ligação é feito em três passos, enquanto que o término é feito em quatro. Durante a inicialização são inicializados alguns parâmetros, como o Sequence Number (número de seqüência) para garantir a entrega ordenada e robustez durante a transferência.

\subsection{\textit{User Datagram Protocol}}

% O UDP dá às aplicações acesso direto ao serviço de entrega de datagramas, como o serviço de entrega que o IP dá. O UDP é pouco confiável, sendo um protocolo não orientado para conexão. O "pouco confiável" significa que não há técnicas no protocolo para confirmar que os dados chegaram ao destino corretamente. O UDP usa número de porta de origem e de destino de 16 \textit{bits} na word 1 do cabeçalho da mensagem.

O UDP é um acrônimo do termo inglês \textit{User Datagram Protocol} que significa protocolo de datagramas de utilizador (ou usuário). O UDP faz a entrega de mensagens independentes, designadas por datagramas, entre aplicações ou processos, em sistemas \textit{host}. A entrega é ``não confiável", porque os datagramas podem ser entregues fora de ordem ou até perdidos. A integridade dos dados pode ser gerida por um ``\textit{checksum}" (um campo no cabeçalho de checagem por soma).

% Os pontos de acesso do UDP são geralmente designados por "Portas de protocolo" ou "portas" ou até "portos", em que cada unidade de transmissão de dados UDP identifica o endereço IP e o número de porta do destino e da fonte da mensagem, os números podendo ser diferentes em ambos os casos.

\subsection{\textit{Real-time Transport Protocol}}

RTP (do inglês \textit{Real Time Protocol}) é um protocolo de redes utilizado em aplicações de tempo real como, por exemplo, Voz sobre IP, que é a entrega de dados áudio ponto-a-ponto. Define como deve ser feita a fragmentação do fluxo de dados-áudio, adicionando a cada fragmento informação de seqüência e de tempo de entrega. O controle é realizado pelo RTCP - \textit{Real Time Control Protocol}. Ambos utilizam o UDP como protocolo de transporte, o qual não oferece qualquer garantia que os pacotes serão entregues num determinado intervalo. Os protocolos RTP/RTCP são definidos pela RFC 3550 do IETF (\textit{Internet Engineering Task Force}).

\subsection{\textit{Virtual Router Redundancy Protocol}}
\label{vrrp}
O VRRP é designado para eliminar pontos de falhas criados por default-gateway de rede LAN (\textit{Local Area Network}).

VRRP é um protocolo especificado pela IEFT\footnote{\textit{Internet Engineering Task Force}} (RFC 3768) que permite dois ou mais roteadores atuarem como um roteador virtual. De acordo com essa especificação, os roteadores se apresentam para cliente com um endereço IP virtual (VIP - \textit{Virtual IP}) correspondente a um MAC virtual (VMAC), mas cada qual possui seu próprio IP e MAC reais. Se o roteador primário (\textit{master}), que inicialmente possuía os dados virtuais, falhar então um roteador secundário (\textit{backup}) assume a tarefa de roteamento.

As trocas de mensagem, para verificação de estado entre os servidores, acontecem através de IP \textit{multicast}. Uma falha no recebimento dessas mensagens em um intervalo especifico de tempo leva a um processo de eleição de um novo \textit{master}. Em situação normal, apenas o \textit{master} envia mensagens (IP \textit{multicast}), apenas quando há escolha para novo \textit{master} é que os servidores de \textit{backup} enviam mensagens.

% \subsection{Funcionamento em alguns detalhes}

% \subsubsection{Terminologia}

\begin{enumerate}[.]
\item \textbf{\textit{Virtual Router}} Roteador virtual, abstração formada por um ou mais roteadores rodando VRRP.

\item \textbf{\textit{VRRP Instance}} Implementação em programa do protocolo VRRP rodando em um roteador.

\item \textbf{\textit{Virtual Router ID (VRID)}} Identificação numérica para um \textit{Virtual Router} em particular que deve ser único para cada segmento de rede.

\item \textbf{\textit{Virtual Router IP}} Endereço IP associado ao um VRID que é usado por clientes para obter serviços dele. É gerenciado pela instância do VRRP que possui o VRID.

\item \textbf{\textit{Virtual MAC address}} Em casos em que endereço MAC é usado (\textit{Ethernet}), este endereço MAC virtual é associado ao Endereço IP virtual.

\item \textbf{\textit{Priority}} Valor (que varia de 1 a 254) associado a cada roteador rodando VRRP como maneira de determinar o \textit{master} (quanto maior o número, maior prioridade).
\end{enumerate}

\begin{figure}[!ht]
\centering
\insimg{0.3}{imagens/vrrp.png}
\caption{Esquema de funcionamento de um sistema VRRP}
\label{fig:vrrp}
\end{figure}

Na figura \ref{fig:vrrp}, o servidor $A$ envia pacotes \textit{multicast} para outras instâncias do VRRP que rodem na rede (no caso, apenas o roteador B). Estes pacotes carregam informação para duas finalidades principais:

\begin{enumerate}[.]
\item Forçar a eleição de outro \textit{master} caso haja algum com maior prioridade.

\item Notificar instâncias VRRP de \textit{backup} que há um \textit{master} ativo, caso não exista comunicação em intervalo definido, haverá uma nova escolha de \textit{master}.
\end{enumerate}
