Monografia - PUC-Rio
Monografia - PUC-Rio
Monografia - PUC-Rio
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
NESTOR FELIPE MAYA QUINTERO<br />
MIDDLEWARE PARA OS PROTOCOLOS SCTP E HIP<br />
Introdução à computação móvel<br />
Professor: PHD. Markus Endler<br />
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO – <strong>PUC</strong><br />
CENTRO DE ESTUDOS DAS TELECOMUNICAÇÕES – CETUC<br />
DOUTORADO EM ENGENHARIA ELÉTRICA<br />
RIO DE JANEIRO<br />
2007.2
ÍNDICE<br />
1. Introdução ................................................................................................... 5<br />
2. Middleware MPI .......................................................................................... 6<br />
2.1. SCTP ................................................................................................... 6<br />
2.1.1. Limitações do TCP........................................................................ 6<br />
2.1.2. SCTP vs TCP................................................................................ 8<br />
2.1.3. Cabeçalho SCTP ........................................................................ 10<br />
2.2. Funcionamento do MPI ...................................................................... 11<br />
2.3. MPL.................................................................................................... 12<br />
2.4. Conformação de grupos no MPI ........................................................ 14<br />
3. Middleware FUEGO .................................................................................. 15<br />
3.1. Host Identity Protocol – HIP ............................................................... 15<br />
3.1.1. Estados do HIP........................................................................... 16<br />
3.1.2. Cabeçalho HIP............................................................................ 16<br />
3.1.3. Arquitetura do HIP ...................................................................... 17<br />
3.1.4. Troca básica do HIP ................................................................... 19<br />
3.1.5. Mobilidade e Multihoming HIP .................................................... 19<br />
3.2. Sistema de eventos............................................................................ 20<br />
3.3. Sistema de mensagens...................................................................... 21<br />
3.4. Serviço de presença .......................................................................... 23<br />
4. Conclusões ............................................................................................... 25<br />
5. Bibliografía ................................................................................................ 26
LISTA DE FIGURAS<br />
Figura 1. Cabeçalho SCTP............................................................................ 10<br />
Figura 2. Código fonte Hello definido para MPI ............................................. 12<br />
Figura 3. Exemplo do MPI do código fonte Hello........................................... 12<br />
Figura 4. Envelope do MPI ............................................................................ 13<br />
Figura 5. Mapeamento do MPI ...................................................................... 13<br />
Figura 6. Conformação de grupos no MPI..................................................... 14<br />
Figura 7. Cabeçalho HIP ............................................................................... 16<br />
Figura 8. Arquitetura de rede com HIP .......................................................... 18<br />
Figura 9. Troca básica do HIP ....................................................................... 19<br />
Figura 10. Sistema de mensagens .............................................................. 22<br />
Figura 11. Componentes do serviço de presença........................................ 23<br />
Figura 12. Exemplo de uma subscrição....................................................... 24
LISTA DE TABELAS<br />
Tabela 1. Comparação do SCTP com TCP e UDP ...................................... 8<br />
Tabela 2. Tipos de Chunk........................................................................... 11<br />
Tabela 3. Estados do HIP........................................................................... 16<br />
Tabela 4. Tipos de pacotes HIP.................................................................. 17
1. Introdução<br />
O middleware para computação móvel, na maioria das vezes depende das<br />
capacidades dos protocolos de transporte e das camadas mais baixas da<br />
arquitetura de rede. Embora o protocolo mais conhecido para realizar o<br />
transporte dos dados seja o TCP [1], será demonstrado que, para as atividades<br />
onde há mobilidade, ele é limitado e precisa de componentes que o ajudem<br />
neste processo.<br />
Em contraste com o protocolo TCP, o HIP, localizado entre as camadas de<br />
rede (com o protocolo IP) e de transporte (com o protocolo TCP), entra como<br />
um mecanismo que identifica a mobilidade com eficiência, permitindo<br />
determinar mudanças do endereço IP, persistindo nas comunicações sem<br />
interromper a conexão.<br />
Em contrapartida com o protocolo TCP, o protocolo de transporte SCTP foi<br />
especificado para resolver todas as limitações deste protocolo, tais como:<br />
mobilidade, múltiplas conexões associadas a um mesmo socket, dentre outras.<br />
Baseado nestes mecanismos e em novos protocolos, este trabalho identifica<br />
várias abordagens que visam aproveitar as vantagens fornecidas para o<br />
esquema de mobilidade. Inicialmente, a especificação do mecanismo HIP e<br />
protocolo SCTP serão descritas. Em seguida, serão especificados os<br />
Middleware Fuego e MIP, descrevendo seus funcionamentos e as<br />
características básicas de mobilidade que eles implementam para diferentes,<br />
aplicações, utilizando os protocolos anteriormente citados,.<br />
5
2. Middleware MPI<br />
A especificação do MPI (Message Passing Interface) define um middleware<br />
para troca de mensagens, usado especialmente em aplicações de computação<br />
paralela. As funções do middleware MPI foram projetadas para tomar<br />
vantagens de comunicações mais especializadas, para fornecer um<br />
componente de gerenciamento de processos. O padrão MPI especifica a<br />
criação dinâmica de processos, desde o início, execução e término. para<br />
ambientes de memória distribuída, máquinas paralelas, NOWs (network of<br />
workstations) e redes heterogêneas. Este padrão é utilizado sobretudo em<br />
grades computacionais, fornecendo grande eficiência às aplicações paralelas,<br />
possibilitando o escalonamento dinâmico de processos, a fim de obter maior<br />
eficiência na execução das aplicações.<br />
O MPI, junto com o protocolo de transporte SCTP, demonstrou notável<br />
aumento no desempenho das aplicações que realizam comunicações sobre<br />
canais altamente congestionados (com valores de latência e de taxa de perdas<br />
de pacotes elevados). Ainda que, a princípio, o protocolo TCP fosse utilizado<br />
como o protocolo de transporte padrão do MPI, o SCTP se adequou melhor às<br />
suas funções por ser baseado em mensagens.<br />
2.1. SCTP<br />
Streaming Control Transport Protocol (SCTP), é um protocolo projetado para<br />
suprir as deficiências e limitações encontradas no protocolo de transporte TCP.<br />
Tais limitações, juntamente com algumas comparações analíticas, serão<br />
determinadas a seguir.<br />
2.1.1. Limitações do TCP<br />
6
Atualmente o protocolo TCP (RFC793) é amplamente utilizado para diferentes<br />
tipos de serviços que necessitam de transporte confiável dos dados em redes<br />
IP. No entanto, um número crescente de aplicações mostrou que o TCP é<br />
bastante limitado, por este motivo, determinadas aplicações optaram por<br />
incorporar novos algoritmos para obter confiabilidade de forma mais flexível,<br />
utilizando o protocolo UDP (RFC768). As limitações mais comuns do TCP são:<br />
• O TCP fornece transporte confiável com uma ordem estrita de<br />
transferência de dados. Algumas aplicações precisam de confiabilidade,<br />
sem manutenção do número da seqüência,.enquanto que outras podem<br />
ser satisfeitas com uma ordem parcial. Em ambos os casos, o bloqueio<br />
causado por esta política do TCP, causa um atraso desnecessário.<br />
• A natureza stream-oriented do TCP é, na maioria das vezes, um<br />
inconveniente. As aplicações devem adicionar seu próprio registro de<br />
marcas para delinear suas próprias mensagens, e deve fazer<br />
explícitamente o uso desta facilidade para assegurar que a mensagem<br />
seja transferida em um tempo razoável.<br />
• O escopo limitado dos sockets do TCP complica a tarefa de fornecer alta<br />
disponibilidade na transferência de dados para aplicações que utilizam<br />
hosts “multihomed”.<br />
• O TCP é relativamente vulnerável a ataques, tal como o ataque do SYN<br />
para denegação do serviço DoS.<br />
Em contraste, o SCTP (Stream Control Transport Protocol) evoluiu a partir de<br />
um protocolo de sinalização telefônico desenvolvido para redes IP. Em Outubro<br />
de 2000 ele foi padronizado pela IETF (RFC 2960), sendo suportado por<br />
diversas variantes do Unix (kernel de Linux 2.6).<br />
7
2.1.2. SCTP vs TCP<br />
O termo multi-streaming refere-se à capacidade do SCTP em transmitir vários<br />
fluxos de mensagens independentes, paralelamente, como por exemplo, a<br />
transmissão simultânea de duas imagens sobre uma aplicação HTTP. Pensar<br />
em multi-streaming é semelhante a construir várias conexões TCP em uma<br />
única associação SCTP. De um lado, o TCP assegura uma ordem correta dos<br />
bytes em um fluxo contínuo, aplicando números de seqüências em cada pacote<br />
enviado. Por outro lado, o SCTP pode aplicar diferentes números de<br />
seqüências nos pacotes enviados sem precisar de uma ordem restrita. Não<br />
obstante, o ordenamento das mensagens e a confiabilidade do transporte são<br />
opcionais no SCTP. Uma comparação entre os protocolos de transporte TCP,<br />
UDP [2] e SCTP, pode ser vista na tabela 1.<br />
Função TCP UDP SCTP<br />
Orientado a Conexão Sim Não Sim<br />
Transporte Confiável Sim Não Sim<br />
Preserva um Limite de Mensagens Não Sim Sim<br />
Entrega Ordenada Sim Não Sim<br />
Entrega Desordenada Não Sim Sim<br />
Checksum de Dados Sim Sim Sim<br />
Path MTU Sim Não Sim<br />
Controle de Congestionamento Sim Não Sim<br />
Múltiplos streams Não Não Sim<br />
Suporte Multi-homing Não Não Sim<br />
Bundling Não Não Sim<br />
Tabela 1. Comparação do SCTP com TCP e UDP<br />
Outra característica marcante do protocolo SCTP é o suporte a múltiplos<br />
endereços IP em uma mesma “conexão” permitindo redundância de caminhos<br />
em caso de falhas na rede. Essa característica é conhecida como multihoming.<br />
O protocolo SCTP é orientado a conexão, estabelecendo uma associação entre<br />
o tx e o rx com um número arbitrário de fluxos simplex de transmissão e<br />
recepção.<br />
8
Diferentemente do TCP, que é orientado a octetos, o SCTP é um protocolo<br />
orientado a mensagens. Nesse esquema, as informações transmitidas em uma<br />
comunicação são transportadas em blocos de dados (chunks), que podem ser<br />
de usuários (dados da aplicação) ou de controle do protocolo. Mensagens de<br />
usuários e de controle podem estar contidas em um mesmo pacote SCTP. Os<br />
blocos de controle desempenham diversas tarefas necessárias à operação do<br />
protocolo, como o reconhecimento de mensagens proveniente de usuários e o<br />
estabelecimento de associações. Esse último procedimento é realizado pela<br />
troca de quatro mensagens de controle entre cliente e servidor, conhecido<br />
como four-way handshake. O fato de utilizar um esquema de mensagens de<br />
controle garante ao SCTP uma maior flexibilidade para complementações em<br />
sua estrutura operacional. Em contrapartida, o TCP possui suas funções de<br />
controle embutidas em uma estrutura de segmento, o que embora traga<br />
benefícios de eficiência computacional de processamento, inibe muitas<br />
tentativas de adaptação e evolução do protocolo.<br />
O protocolo SCTP é rate adaptive, o que garante adaptação dinâmica às<br />
variações e problemas que ocorrem na rede. Devido à eficiência comprovada<br />
em anos de operação, os algoritmos de controle de congestionamento do TCP<br />
foram aproveitados no SCTP, com pequenas variações.<br />
Quanto à mobilidade, o MSCTP (Mobile Stream Control Transmission<br />
Protocol), é uma extensão que define o uso do SCTP em conjunto com<br />
mecanismos de configuração dinâmica de endereços IP numa associação. A<br />
idéia é explorar a característica de multihoming do SCTP, juntamente com<br />
mecanismos de configuração dinâmica de endereços, o que permite operações<br />
de handover em ambientes que necessitam de mobilidade, garantindo assim<br />
“mobilidade de terminal” no nível de transporte.<br />
9
2.1.3. Cabeçalho SCTP<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Source Port Number | Destination Port Number |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Verification Tag |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Checksum |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Type = 0 | Reserved|U|B|E| Length |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| TSN |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Stream Identifier S | Stream Sequence Number n |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Payload Protocol Identifier |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
\ \<br />
/ User Data (seq n of Stream S) /<br />
\ \<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
Figura 1. Cabeçalho SCTP<br />
O cabeçalho do SCTP, como ilustrado na figura 1, está composto pelos<br />
seguintes campos: o campo U de um bit que determina se os pacotes podem<br />
chegar com número de seqüência desordenada. O campo B determina o<br />
primeiro fragmento da mensagem. O campo E determina o último fragmento da<br />
mensagem. O campo Stream Identifier determina o identificador da associação<br />
do usuário. O campo Payload Protocol Identifier é um dado que pode ser<br />
fornecido pelo usuário para uma aplicação específica. O campo TSN<br />
(Transmission Sequence Number) define a seqüência dos fragmentos<br />
transmitidos. O campo Type determina o tipo do pacote, que pode ser dados ou<br />
eventos, especificado na tabela 2.<br />
Valor Tipo de Chunk<br />
0 Dados<br />
1 INIT Inicio da associação<br />
3 INIT ACK<br />
4 Selective ACK – SACK<br />
5 HEARTBEAT<br />
6 ABORT<br />
7 SHUTDOWN<br />
8 SHUTDOWN ACK<br />
10
9 ERROR<br />
10 COOKIE ECHO – estado do coockie<br />
11 COOKIE ACK<br />
12 ECNE - Notificação explicita do congestionamento<br />
13 CWR – redimensiona o tamanho da Janela de congestionamento<br />
14 SHUTDOWN COMPLETE<br />
15-254 Reservado pela IETF<br />
Tabela 2. Tipos de Chunk<br />
2.2. Funcionamento do MPI<br />
No MPI, a execução de um processo pode ser dividida em pequenas partes<br />
que são distribuídas que são distribuídas entre múltiplas estações para o<br />
balanceamento da carga de processamento. Os resultados obtidos pelas<br />
outras máquinas são enviados a um receptor que os coleta e, em seguida, os<br />
agrupa para fornecer o resultado esperado. O processo pode ser executado em<br />
uma única máquina ou em várias máquinas. Todo o processo recebe uma<br />
identificação única, denominada de Rank. Essa identificação é contínua e é<br />
representada por um número inteiro, começando de zero até N-1, onde N é o<br />
número de processos.<br />
O MPI é composto por grupos representados por um conjunto ordenado de N<br />
processos. Todo e qualquer grupo é associado a um comunicador, muitas<br />
vezes pré-definido como "MPI_COMM_WORLD".<br />
- O comunicador é um objeto local que representa o contexto de uma<br />
comunicação entre um conjunto de processos que podem ser contatados.<br />
- O MPI_COMM_WORLD é o comunicador pré-definido que inclui todos os<br />
processos definidos pelo usuário numa aplicação MPI.<br />
- O Application Buffer representa o endereço de memória, gerenciado pela<br />
aplicação, que armazena um dado que o processo necessita enviar ou receber.<br />
- O System Buffer é um endereço de memória reservado pelo sistema para<br />
armazenar mensagens.<br />
Um exemplo de programação do MPI de um simples “hello world” pode ser<br />
visto na figura 2, cujo resultado de execução pode ser visto na figura 3.<br />
11
2.3. MPL<br />
Figura 2. Código fonte Hello definido para MPI<br />
Figura 3. Exemplo do MPI do código fonte Hello<br />
O MPI utiliza uma variedade de rotinas para passar mensagens entre<br />
processos, tal como o Message progression Layer (MPL), responsável pela<br />
progressão, coincidência e envio das mensagens. Esta rotina é composta por<br />
funções como o Matching, que verifica a coincidência das mensagens. Está<br />
conformado sobre parâmetros de: contexto, rank e tag. Uma chamada<br />
12
ecebida realiza uma correspondência dos valores no envelope da mensagem<br />
com cada um destes parâmetros, visualizados na figura 4 [6].<br />
Figura 4. Envelope do MPI<br />
- O contexto identifica uma série de processos que pode se comunicar com<br />
cada um dos outros.<br />
- O Identificador do processo, denominado de rank.<br />
- O tag, que identifica o tipo mensagem.<br />
Uma relação do protocolo SCTP com cada um dos parâmetros da<br />
especificação MPI, pode ser vista na figura 5 [7]. Significa que em uma<br />
conexão de um para muitos, um socket SCTP é associado aos diferentes<br />
pontos com identificadores únicos, que são traduzidos no MPI como rank. O<br />
contexto e o rank são utilizados no envelope da mensagem, através de tags<br />
necessários para as funções Matching.<br />
Figura 5. Mapeamento do MPI<br />
13
2.4. Conformação de grupos no MPI<br />
Uma conformação típica de grupos no MPI está ilustrada na figura 6,<br />
juntamente com uma série de funções, tais como:<br />
1. Composição de todos os pontos com o MPI_COMM_WORLD<br />
2. Conformação de subgrupos com MPI_Group_incl.<br />
3. Criação de um comunicador com MPI_Comm_create.<br />
4. Determinação de um novo rank para o grupo MPI_Comm_rank<br />
5. Canal de comunicações com alguma rotina de emissão de<br />
mensagens do MPI.<br />
6. Ao término da execução, são liberados os comunicadores e os<br />
grupos através das chamadas “MPI_Comm_free” e<br />
“MPI_Group_free”, respectivamente.<br />
Figura 6. Conformação de grupos no MPI<br />
14
3. Middleware FUEGO<br />
O Middleware FUEGO especifica uma serie de serviços para aplicações<br />
móveis sobre contextos móveis [10]. As áreas de estudo do projeto se focam<br />
em aplicações adaptativas, serviços de reconfiguração dinâmica, sistema de<br />
informação distribuída móvel, mobilidade, multihoming e identificação<br />
criptográfica de um host. As partes mais relevantes do Middleware FUEGO se<br />
resumem em sistemas de eventos distribuídos, serviço de transporte de<br />
mensagens, serviço de presença e o gateway FUEGO-SIP. O middleware<br />
FUEGO é baseado no protocolo HIP, que será o primeiro tema a ser<br />
apresentado neste segmento.<br />
3.1. Host Identity Protocol – HIP<br />
O HIP define uma forma de estabelecer e manter, de maneira segura, o estado<br />
da camada IP. Especifica identificadores e regras de localização para um<br />
endereço IP, permitindo a continuidade das comunicações, mesmo quando<br />
este é alterado. Usa identificadores de chaves públicas e privadas para<br />
determinar a identidade de um Host para uma autenticação mútua entre os<br />
pontos. O protocolo é projetado para ser resistente aos ataques de negação de<br />
serviço (Denial of Service - DoS) e homem no meio (Man in the middle - MitM),<br />
permite proteção à integridade dos dados aplicando o ESP (Encapsulated<br />
Security Payload) e criptografia para outras camadas, tal como TCP e UDP.<br />
A arquitetura do HIP propõe uma alternativa à utilização de endereços IP, como<br />
“localizador” (marcas de roteamento) e “identificadores” (identificador do host).<br />
Compreende duas principais representações da identidade do host: o<br />
identificador do host (HI) e uma etiqueta para a identidade do host (Host<br />
Identity Tag - HIT). O HI é uma chave pública que representa diretamente a<br />
identidade do host. O HIT é uma representação operacional, tem um tamanho<br />
de 128 bits utilizado no cabeçalho do HIP para indexar o estado<br />
15
correspondente no host final, o que servirá para gerenciar o estabelecimento<br />
dos estados, ponto a ponto.<br />
3.1.1. Estados do HIP<br />
O protocolo HIP tem poucos estados. Os estados iniciais são o Initiator e o<br />
Responder [8], utilizados no começo da conexão quando a associação é<br />
estabelecida. Não obstante, outros estados podem ser livremente<br />
especificados por implementações particulares. Os estados mais comuns<br />
podem ser vistos na tabela 3.<br />
Estado Descrição do estado<br />
UNASSOCIATED Estado inicial da máquina<br />
I1-SENT Inicio de troca básica<br />
I2-SENT Espera para completar a troca básica<br />
R2-SENT Espera para completar a troca básica<br />
ESTABLISHED Associação HIP estabelecida<br />
CLOSING Fechar associação HIP<br />
CLOSED Associação HIP fechada<br />
E-FAILED Falha na troca básica<br />
Tabela 3. Estados do HIP<br />
3.1.2. Cabeçalho HIP<br />
0 1 2 3<br />
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Next Header | Header Length |0| Packet Type | VER. | RES.|1|<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Checksum | Controls |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Sender's Host Identity Tag (HIT) |<br />
| |<br />
| |<br />
| |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| Receiver's Host Identity Tag (HIT) |<br />
| |<br />
| |<br />
| |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
| |<br />
/ HIP Parameters /<br />
/ /<br />
| |<br />
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<br />
Figura 7. Cabeçalho HIP<br />
16
O cabeçalho HIP, visto na figura 6, é logicamente uma extensão do cabeçalho<br />
IP. O campo Next Header não esta documentado na RFC, mas depende dos<br />
processos do IPv6, que será futuramente documentado quando for definida a<br />
sua utilidade. Por enquanto, este campo não indica nada para o protocolo HIP.<br />
O campo Header Length contém o tamanho do cabeçalho HIP. O campo<br />
Packet Type determina o tipo do pacote HIP, especificados na tabela a seguir:<br />
Tipo de pacote Nome do pacote<br />
1 I1 - Pacote Iniciador<br />
2 R1 - Pacote Responder<br />
3 I2 - Segundo pacote iniciador<br />
4 R2 - Segundo pacote Responder<br />
16 UPDATE - Pacote atualizador<br />
17 NOTIFY - Pacote notificador<br />
18 CLOSE - Pacote que fecha associação<br />
19 CLOSE_ACK - Pacote que fecha o ACK<br />
Tabela 4. Tipos de pacotes HIP<br />
O campo VER refere-se à versão do protocolo HIP, necessário para determinar<br />
incompatibilidades de versões. O campo RES, esta reservado para usos<br />
futuros. Os campos 0 e 1 do cabeçalho, são campos reservados para<br />
compatibilidade potencial com o protocolo SHIM6 [I-D.ietf-shim6-proto]. O<br />
campo Parameters, representa os parâmetros usados para com a chave<br />
pública associada com o HIT emitida junto com informação relativa à<br />
seguridade mais outro tipo de informação.<br />
3.1.3. Arquitetura do HIP<br />
Na atualidade, a internet usa dois espaços de nomes (namespace) globais:<br />
Nomes de domínio e Endereços IP [11]. O espaço de nomes representa<br />
identificadores simbólicos para uma série de endereços IP. Nesse sentido,<br />
estes espaços de nomes têm dois usos: o primeiro uso refere-se à localização<br />
topológica em pontos de aderência de uma rede, tal como o endereçamento<br />
17
para uma localização específica em uma topologia de rede. O segundo uso<br />
refere-se aos identificadores de interfaces rede.<br />
Em contraste, o HIP adiciona uma subcamada entre a camada de rede e de<br />
transporte [8]. Introduz um novo espaço de nomes criptografado e o conceito<br />
do HI, como pode ser visto na arquitetura de rede da figura 7.<br />
Figura 8. Arquitetura de rede com HIP<br />
No HIP, a camada de transporte é modificada para que as conexões sejam<br />
identificadas utilizando a fonte e o destino do HI.<br />
Basicamente, o HI é uma chave pública que serve como identificador do ponto<br />
destino. Cada host tem pelo menos um HI designado que é armazenado em<br />
diretórios, tal como no DNS, para permitir que o host possa ser contatado pelos<br />
demais. Um host pode ter vários HIs e este pode também gerar HIs anônimos<br />
para estabelecer conexões com outros hosts. O principal propósito de um HI<br />
anônimo é fornecer proteção da privacidade do host quando o host não permite<br />
utilizar HIs públicos.<br />
O HIT (Host Identity Tag), variante do HI, tem um tamanho fixo de cifragem que<br />
contém 128 bits, o que o torna vantajoso para realizar uma codificação mais<br />
fácil com um formato consistente. O HIT identifica a chave pública que pode<br />
validar a autenticidade do pacote.<br />
18
3.1.4. Troca básica do HIP<br />
O protocolo HIP realiza uma sinalização entre as comunicações dos pontos<br />
finais com o principal propósito de autenticação fim a fim e criar segurança IP<br />
(IPSec) com o ESP (Encapsulating Security Payload) [4]. A troca básica do<br />
HIP começa com a primeira mensagem denominada como I1, enviado pelo<br />
INITIATOR com seu próprio HIT e o HIT do RESPONDER. O RESPONDER<br />
envia uma resposta com a mensagem R1, que contem os HIs do INITIATOR e<br />
um desafio que consiste em um enigma que deve ser resolvido. O propósito<br />
deste desafio é fazer o protocolo resistente ao ataque DoS [5]. O INITIATOR<br />
resolve o desafio e envia a mensagem I2 com seus próprios HITs junto com a<br />
solução do enigma para realizar a autenticação com a resposta R2 do<br />
RESPONDER. Esta troca básica, descrita anteriormente, pode ser vista na<br />
figura 8.<br />
Figura 9. Troca básica do HIP<br />
3.1.5. Mobilidade e Multihoming HIP<br />
O HIP utiliza um par de chaves publica/privada, ao invés do endereço IP, com<br />
uma identificação do host. Não obstante, cada host deve conhecer pelo menos<br />
um endereço IP no qual o ponto pode ser alcançado, durante a troca básica do<br />
HIP. Em conseqüência a tal desacoplamento, uma nova solução de mobilidade<br />
e multihoming na camada de rede foram atribuídas.<br />
19
A mobilidade na camada de rede no HIP define um parâmetro genérico<br />
denominado LOCATOR, utilizado nas mensagens do HIP. Este parâmetro<br />
permite que um host HIP notifique a alternância de endereços que um ponto<br />
pode alcançar. O parâmetro LOCATOR pode ser endereços IP.<br />
Quando um host se move para outro endereço, um evento de mobilidade é<br />
notificado ao ponto conectado, enviando uma mensagem de tipo UPDATE que<br />
contém o parâmetro LOCATOR. Este pacote UPDATE é confirmado com um<br />
ACK no ponto de destino. Para confiabilidade em presença de pacotes<br />
perdidos, o pacote UPDATE é retransmitido, como definido nas especificações<br />
do HIP. O ponto de destino pode autenticar o conteúdo do pacote UPDATE,<br />
baseado nas chaves do pacote.<br />
Uma configuração operacional relatada é um host de tipo multihoming, que<br />
significa que um host possui simultaneamente múltiplos LOCATORS, o que em<br />
conseqüência, converge em um caso de mobilidade. Por usar o parâmetro<br />
LOCATOR, um host pode informar ao ponto de destino os LOCATORS<br />
adicionais, determinando como pode ser alcançado e definir um determinado<br />
LOCATOR como preferido [3].<br />
3.2. Sistema de eventos<br />
O sistema de eventos do Middleware FUEGO baseia-se em três entidades:<br />
• Subscribers: Recebe as notificações baseado em filtros<br />
• Publishers: Publica as notificações.<br />
• Fuego Router: Encaminha as notificações aos clientes.<br />
O roteador pode se dividir em duas partes: servidor de acesso e núcleo de<br />
roteamento. O roteador baseia-se em um algoritmo de roteamento<br />
fundamentado em distribuição sobre canais de eventos. Desde o ponto de vista<br />
do cliente, o objeto básico é a sessão que representa uma subscrição. Um<br />
20
canal é um tipo de objeto e pode determinar a estrutura de um evento. O<br />
subspcritor utiliza um listener específico que determina de onde estão vindo as<br />
notificações e para aonde devem ser enviadas.<br />
Um servidor de eventos pode ser estendido usando componentes, tais como:<br />
• EventServer: Funcionalidade de acesso ao servidor.<br />
• StartServer: Reinicia o sistema<br />
• IRoutingEngine: Interface para o motor de roteamento.<br />
• IMobilityEngine: Interface para o motor de mobilidade.<br />
A implementação da interface IMobilityEngine fornece o núcleo do sistema de<br />
eventos publish/subscribe e esta baseado em canais de eventos ou roteadores<br />
salto a salto.<br />
O núcleo do roteador é responsável por:<br />
• Processamento do serviço lógico<br />
• Armazenagem dos filtros<br />
• Coincidência das notificações<br />
• Operações de gerenciamento<br />
• Fornecer uma interface de usuário para o roteador<br />
3.3. Sistema de mensagens<br />
O sistema de mensagens para uma série de serviços que suporta<br />
comunicações de mensagens ou RPC (Remote Procedure Call), é constituído<br />
por três componentes:<br />
• Serviço de mensagens: fornece uma interface padrão à aplicação e<br />
conecta os componentes.<br />
• O protocolo AMME: responsável por gerenciar as conexões de rede<br />
enviando e recebendo mensagens.<br />
• Sistema Xebu: fornece formatos de serialização para mensagens SOAP.<br />
21
O principal sistema de mensagens é denominado de AMME, e esta dividido em<br />
uma camada de mobilidade compartilhada e um protocolo independente de<br />
transferência, denominado Meep e MOP. O Meep é baseado no protocolo de<br />
troca extensível de blocos BEEP (Blocks Extensible Exchange). O MOP o<br />
protocolo é baseado em HTTP. As partes do sistema de mensagens podem ser<br />
vistas na figura 9.<br />
Figura 10. Sistema de mensagens<br />
A API XAS, pertencente ao modulo Xebu, processa todas as mensagens que<br />
utilizam a linguagem XML, e conseqüentemente origina uma seqüência de<br />
eventos. O serviço de mensagens se compõe da subcamada Axis e Lye. O<br />
Axis é uma interface que apresenta um serviço de mensagens que permite ao<br />
servidor a comunicação com as subcamadas do mecanismo.<br />
O AMME é um protocolo de mensagens projetado para ambientes móveis. Este<br />
protocolo esta dividido em duas camadas:<br />
• Camada de mobilidade: Fornece uma conexão persistente produzindo o<br />
envio de eventos quando o cliente esta se deslocando.<br />
• Camada de transferência: Fornece um canal de comunicações full-<br />
duplex.<br />
22
O sistema de mensagens permite utilizar uma grande variedade de formatos<br />
textuais, como XML e formatos binários, como o Xebu. O sistema de<br />
mensagens baseado no Xebu, permite converter as mensagens no formato<br />
SOAP que tem associado uma interface de implementação XAS.<br />
3.4. Serviço de presença<br />
O serviço de presença e o serviço de mensagens instantâneo são simples<br />
protótipos da implementação de um serviço de notificação para conectividade e<br />
mobilidade. O protótipo esta implementado em J2ME (Java 2 Micro Edition) e<br />
utiliza a interface do MIDP (Mobile Information Device Profile). Mediante o<br />
componente de descoberta de presença junto com o serviço de mensagens<br />
instantâneo, o modelo de sensibilidade ponto a ponto, depende do sistema de<br />
notificações, o que permite operar sem um servidor dedicado. O serviço de<br />
presença está implementado por componentes que podem ser vistos na figura<br />
10.<br />
Figura 11. Componentes do serviço de presença<br />
23
Em cada serviço de presença existem canais de eventos tais como:<br />
• O canal de eventos relacionado à presença, o qual permite disseminar a<br />
informação de presença e de contexto.<br />
• O canal relacionado a mensagens instantâneas.<br />
• Canal de controle de presença, o qual realiza as subscrições e gerência<br />
do serviço.<br />
A função subscriptor refere-se ao estado onde o usuário solicita receber<br />
atualizações do contexto de outro usuário. Um exemplo de subscrição, que<br />
apresenta um cenário simples, pode ser visto na figura 11. Neste exemplo, o<br />
elemento “consumer” realiza um pedido de subscrição para os elementos<br />
“producer 1 e 2”. O elemento producer 1 permite realizar a subscrição,<br />
enquanto que o elemento producer 2 não.<br />
Figura 12. Exemplo de uma subscrição<br />
24
4. Conclusões<br />
O mecanismo HIP, é uma especificação eficiente e segura complementares ao<br />
endereço IP, que identifica um host com chaves públicas e privadas, permitindo<br />
a mobilidade no esquema de multihoming quando existem mudanças no<br />
endereçamento IP, sem perder as conexões TCP de uma aplicação. Em<br />
contraste com este mecanismo, o Middleware Fuego, aproveita todas as<br />
características de mobilidade que este mecanismo fornece, criando um<br />
esquema de eventos e mensagens, quando existem variações no<br />
endereçamento IP, com a finalidade de apoiar mobilidade na computação<br />
distribuída desde a camada de aplicação.<br />
O protocolo SCTP, é um protocolo de transporte, que resolve os problemas de<br />
mobilidade quando acontecem mudanças de endereçamento IP. Gera eventos<br />
de notificações, permitindo realizar em um mínimo tempo de handoff a<br />
identificação das variações do endereçamento IP. Neste sentido, o Middleware<br />
MIP, se encaixou perfeitamente, por ser um protocolo orientado a mensagens<br />
(eventos), permitindo diferentes associações em uma conexão.<br />
25
5. Bibliografía<br />
1. DARPA. “RFC793 Transmission Control Protocol TCP”. Internet<br />
Engineering Task Force,1981.<br />
2. J. POSTEL. “RFC768 User Datagram Protocol UPD”, Internet Engineering<br />
Task Force. 1980.<br />
3. R. MOSKOWITZ, P. NIKANDER. “Host Identity Protocol”, draft-ietf-hip-<br />
base-10. 2007.<br />
4. STEPHEN KENT, RANDALL ATKINSON. “RFC 2406: IP Encapsulating<br />
Security Payload (ESP)”. Internet Engineering Task Force, 1998.<br />
5. THOMAS AURA, PEKKA NIKANDER. “DOS resistant authentication with<br />
client puzzles”. In 8th International Workshop on Security Protocols, pages<br />
170–177, 2001.<br />
6. HUMAIRA KAMAL, BRAD PENOFF, “SCTP versus TCP for MPI”, SC, 2005.<br />
7. HUMAIRA KAMAL, BRAD PENOFF. “Using SCTP to hide latency in MPI<br />
programs”. HCW 2006 and IPDPS 2006, 2006.<br />
8. R. MOSKOWITZ, P. NIKANDER. “rfc4423 Host Identity Protocol (HIP)<br />
Architecture”, Internet Engineering Task Force, 2006.<br />
9. Márcia C. Cera, Nicolas Maillard, “Escalonamento Dinâmico de<br />
Processos MPI”, ERAD2006, 2006.<br />
10. SASU TARKOMA, JAAKKO KANGASHARJU. “Documentation of Fuego<br />
Service Set Implementation”. Helsinki Institute for Information Technology.<br />
2006.<br />
11. LARS EGGERT, JULIEN LAGANIER, “HIP Resolution and Rendezvous<br />
Mechanisms”. Workshop on HIP and Related Architectures. 2006.<br />
26