18.04.2013 Views

Monografia - PUC-Rio

Monografia - PUC-Rio

Monografia - PUC-Rio

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!