18.04.2013 Views

Monografia - PUC-Rio

Monografia - PUC-Rio

Monografia - PUC-Rio

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!