Além dos elementos definidos na seção anterior, o protocolo prevê uma série de procedimentos necessários para se estabelecer uma conexão móvel. São eles:
Método no qual um dispositivo móvel determina se está conectado a rede doméstica ou visitada e também determina se ele está se movendo de uma rede para a outra.
Este prcesso é dividido em dois tipos de mensagens:
Mecanismo flexível desenvolvido para permitir que o dispositivo móvel comunique sua situação ao seu Home Agent associado. Além disso, o dispositivo móvel pode requisitar serviços ao Foreign Agent e pode renovar ou cancelar um registro na rede visitada. Outras funções também previstas nesse tipo de mensagem incluem a descoberta de seu Home Address, quando não configurado, manter multiplos registros para passar os datagramas a diferentes Care-of Addresses e cancelar o registro de um determinado Care-of Address, mantendo os demais ativos e descobrir o endereço de seu Home Agent, quando não configurado.
As mensagens de registro podem ser divididas em:
Estas são as mensagens enviadas/recebidas pelos elementos que formam a rede móvel. Abaixo a definição de cada mensagem e seus respectivos funcionamentos:
4.1 - Descoberta de Agente
4.1.1 - Anuncio de Agente
Anuncios de Agente são transmitidos por um agente (Home Agent ou Foreign Agent) para anunciar seus serviços na rede. Os dispositivos móveis usam esta informação para identificar sua atual situação de conexão à Internet. Esta mensagem é uma extensão da mensagem ICMP Router Advertisement, definida na RFC 1256, como uma mensagem utilizada pelos roteadores da rede para anunciarem sua disponibilidade, parte de um protocolo chamado ICMP Router Discovery Protocol. Esta extensão é chamada de Mobility Agent Advertisement Extension.
A Mobility Agent Advertisement Extension segue os campos da ICMP Router Advertisement, indicando que esta também é um Anuncio de Agente enviado por um dispositivo móvel. Esta mensagem é definida como:
0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Registration Lifetime |R|B|H|F|M|G|r|T| reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | zero or more Care-of Addresses | | ... |
Onde:
Type: Define o tipo da mensagem - default: 16
Length: Define o tamanho da mensagem - (6 + 4*N), onde: 6 são os bytes até o campo de endereços e N é o numero de endereços (4 bytes) anunciados.
Sequence Number: Quantidade de mensagens enviadas desde que o Agente foi iniciado.
Registration Lifetime: O maior tempo no qual o Agente aceitará uma Requisição de Registro. Um valor de 0xffff indica infinito.
Flags:
4.1.2 - Solicitações de Agente
Solicitações de Agente são transmitidas pelo dispositivos móveis para, imediatamente, receberem o Anuncio de Agente dos agentes presentes na rede. é basicamente a mesma mensagem de ICMP Router Solicitation, também definida no ICMP Router Discovery Protocol, RFC 1256, como uma mensagem utilizada pelos "hosts" de uma rede para requisitarem informações dos roteadores presentes na mesma. A diferença é que no, caso móvel, existe a restrição de que o campo IP TTL é necessariamente igual a 1.
4.1.3 - Considerações sobre os Anuncios
Qualquer Agente que não seja descoberto por algum protocolo da camada de enlace deve enviar Anuncios. Os Agentes enviam seus anuncios periodicamente, seguindo o padrões definidos para o ICMP Router Discovery Protocol. Porém, como os recursos em dispositivos móveis são limitados, é necessário que a frequencia dos anuncios seja limitada a uma taxa que não comprometa a banda passante da rede.
Esses anúncios só serão enviados quando a rede em questão estiver configurada para solicitar registros (Flag R habilitado) ou quando receberem uma Solicitações de Agente. Neste caso o Agente deve responder diretamente ao dispositivo que enviou a solicitação.
Todos os agentes devem responder a solicitações do grupo de multicast Mobile-Agents, endereço 224.0.0.11. Além disso, os dispositivos móveis podem enviar solicitações à este endereço.
Quanto as Solicitações de Agente, estas também serão limitadas a um intervalo que não degrade a rede. Inicialmente, os dispositivos móveis podem disparar três Solicitações, no máximo uma por segundo, ao procurar por um Agente. Depois disso a taxa deve cair para diminuir o "overhead" no link, utilizando-se um mecanismo de "backoff" binário exponencial, dobrando o intervalo de tempo entre as solicitações até um intervalo máximo, de pelo menos 1 minuto.
Afim de evitar conflitos, o dispositivo móvel deve sempre capturar o primeiro Care-of Address para se registrar.
Os anuncios servem também para que o dispositivo móvel saiba quando está se movendo ou quando retornou para sua rede de origem. No primeiro caso, o dispositivo móvel pode detectar que se moveu utilizando um algoritmo (outros podem ser desenvolvidos e utilizados) baseado no Lifetime: Neste caso o dispositivo móvel detecta que mudou de rede ao não receber, dentro do tempo estipulado pelo Lifetime, um novo Anuncio de Agente do Agente que ele está associado. Caso o dispositivo móvel receba um Anuncio de Agente de outro Agente antes do Lifetime expirar, o dispositivo móvel pode tentar se registrar a este novo Agente. Caso não tenha recebido nenhum novo anuncio e o Lifetime tenha expirado, o dispositivo dá inicio a um novo processo de Descoberta de Agente para se registrar.
4.2 - Registro
Mobile IP define dois diferentes tipos de procedimentos de registro: o primeiro através do Foreign Agent, que repassa o processo de registro para o Home Agente do dispositivo móvel e outro diretamente com o Home Agent do dispositivo móvel.
Ambos os procedimentos envolvem a troca de mensagens de Requisição de Registro (Registration Request) e Resposta de Registro (Registration Reply), que são apresentadas a seguir. Todas as mensagens de registro são trocadas utilizando-se o protocolo UDP.
4.2.1 - Requisição de Registro
O processo de Registro do dispositivo móvel com o seu Home Agent inicia-se com a mensagem de Requisição de Registro, para que o Home Agent possa criar ou modificar a Tabela de Relacionamento (Mobily Binding Table) para o dispositivo em questão. Para isso o dispositivo móvel pode enviar sua requisição de dois modos: o primeiro, quando estiver usando um endereço fornecido pelo Foreign Agent, o chamado Foreign Agent Care-of Address, envia sua requisição através do próprio Foreign Agent; ou então,quando estiver registrando um endereço adquirido de terceiros, o chamado Co-Located Care-of Agent, as requisições serão enviadas diretamente ao Home Address associado ao dispositivo móvel.
Como mencionado anteriormente, as mensagens são enviadas via UDP. Após o cabeçalho UDP são incluidos campos específicos para Mobile IP, mostrados a seguir:
0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type |S|B|D|M|G|r|T|x| Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Home Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Home Agent | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Care-of Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Identification + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Extensions ... +-+-+-+-+-+-+-+-
Onde:
Type: 1 - Indica Requisição de Registro (Registration Request).
Flags:
Ao receber uma mensagem de Requisição de Registro (Registration Request), o Agente retorna uma mensagem de Resposta de Registro (Registration Reply). Caso a mensagem do dispositivo móvel tenha vindo de um Foreign Agent, este receberá a mensagem do Home Agent e repassará a mensagem para o dispositivo móvel que enviou a Requisição. A mensagem de Resposta contém códigos que informam o "status" da Requisição, bem como seu Tempo de Vida (Lifetime) garantido pelo Home Agent. Os campos do protocolo UDP e do cabeçalho MIP adicionado são mostrados abaixo:
0 1 2 3 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Home Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Home Agent | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Identification + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Extensions ... +-+-+-+-+-+-+-+-Onde:
Code: Valor que indica o resultado da Requisição. A tabela abaixo mostra os valores e seu significado:
Registration Successful
Registration Denied by Foreign Agent
Registration Denied by Home Agent
0 - registration accepted
65 - administratively prohibited
77 - invalid care-of address
128 - reason unspecified
1 - registration accepted, but simultaneous mobility bindings unsupported
66 - insufficient resources
78 - registration timeout
129 - administratively prohibited
-
67 - mobile node failed authentication
80 - home network unreachable (ICMP error received)
130 - insufficient resources
-
68 - home agent failed authentication
81 - home agent host unreachable (ICMP error received)
131 - mobile node failed authentication
-
69 - requested Lifetime too long
82 - home agent port unreachable (ICMP error received)
132 - foreign agent failed authentication
-
70 - poorly formed Request
88 - home agent unreachable (other ICMP error received)
133 - registration Identification mismatch
-
71 - poorly formed Reply
-
134 - poorly formed Request
-
72 - requested encapsulation unavailable
-
135 - too many simultaneous mobility bindings
-
73 - reserved and unavailable
-
136 - unknown home agent address
Lifetime: Caso o código acima descrito indicar que o registro foi aceito, este campo é definido com o Tempo de Vida, em segundos, antes do Registro expirar. Caso este valor seja zero, indica que o registro do dispositivo móvel foi cancelado. Um valor de 0xffff indica infinito. Caso o código indique que o Registro foi negado, este campo será ignorado.
Home Address: Endereço IP do dispositivo móvel.
Home Agent: Endereço IP do Home Agent associado.
Care-of Address: Endereço IP do fim do tunel.
Identification: Numero de 64 bits utilizado para identificar a mensagem de Registro e compará-la com a Resposta de Registro, para evitar problemas de segurança.
Este valor é baseado no valor enviado pela Requisição de Registro e pelo tipo de proteção utilizada pelo dispositivo móvel e seu Home Agent associado (Mobility Security Association), mostrado mais adiante.
Extensions: Extensões utilizadas para autenticar as mensagens entre os elementos da rede MIP.
4.2.3 - Funcionamento do Registro
Como dito anteriormente, existem dois métodos de Registro. Um via Foreign Agent e o segundo diretamente com o Home Address. Para determinar qual dos métodos o dispositivo móvel deve utilizar, são utilizadas as seguintes regras:
Ao se registrar via Foreign Agent, o procedimento é dado da seguinte maneira:
A figura a seguir ilustra o processo de Registro via Foreign Agent:
Por outro lado, ao se registrar diretamente com o Home Address, o processo é reduzido a duas mensagens:
A figura a seguir ilustra o processo de Registro via Foreign Agent:
Ao enviar mensagens de Registro para seu Home Agent, os dispositivos móveis devem enviar ao menos uma Extensão de Autenticação, chamada de Autenticação Mobile-Home (Mobile-Home Authentication). Cada elemento da rede MIP deve suportar uma Associação de Segurança de Mobilidade (Mobility Security Association), determinada pelo seu SPI e seu endereço IP, que neste caso deve ser seu Home Address. Além desse tipo Extensão de Autenticação, outras podem estar presentes no cabeçalho MIP, porém a Mobile-Home Authentication deve sempre vir primeiro. Abaixo uma descrição dos tipos de Extensão de Autenticação que podem ser utilizados pelos dispositivos moveis:
Toda autenticação é baseada em um número calculado a partir de dados contidos na mensagem enviada, chamado Authenticator. Este número é calculado utilizando o algoritmo padrão HMAC-MD5, definido pela RFC 2104, gerando um número de 128 bits. Os dados levados em consideração neste cálculo são:
Podemos perceber que o Authenticator não leva em consideração os campos do cabeçalho UDP e o próprio campo de Authenticator. Isto se dá pelo caráter variável destes campos aos serem trocadas as mensagens, fazendo com que o valor não possa ser verificado no destino.
Como o escopo deste documento é apenas estudar o protocolo MIP, deixarei os detalhes de Autenticação para futuras discussões.
4.3 - Roteamento
Em redes que implementam o protocolo MIP todos os elementos cooperam para rotear os datagramas enviados/recebidos pelo dispositivo móvel que está conectado à uma rede visitada.
O processo começa a partir do Registro, que é efetuado pelo dispositivo móvel, junto ao seu Home Agent. A partir daí os Agentes negociam uma transação chamada Tunelamento, onde os datagramas enviados/recebidos pelo dispositivo móvel são encapsulados no inicio do túnel e desencapsulados ao fim do mesmo mantendo seu conteúdo transparente para Agentes externos a estrutura da rede MIP.
Todos os elementos da rede MIP devem suportar o esquema de encapsulamento IP dentro de IP. Minimal Encapsulation (RFC 2004) e GRE (RFC 2784) podem ser usados para encapsular os datagramas.
4.3.1 - Datagramas Unicast
No caso de datagramas unicast o roteamento pode ser dividido em dois tipos:
No caso em que o dispositivo móvel está fora da sua rede de origem, ele não deve fazer requisições ARP para tentar encontrar o endereço MAC de outro nó de Internet.
4.3.2 - Datagramas Broadcast
Ao interceptar uma mensagem de broadcast, o Home Agent não deve repassá-lo para os dispositivos móveis presentes em usa Tabela de Relacionamento de Mobilidade, a menos que o dispositivo móvel solicite receber broadcasts. Isto pode ser configurado na etapa de registro, onde o dispositivo móvel envia uma Requisição de Registro com o Flag "B" habilitado.
No caso do Flag "D" estar habilitado (indicando que o dispositivo móvel está usando Co-Located Care-of Address) os pacotes de broadcast são enviados para o dispositivo móvel "encapsulado" em um datagrama unicast direcionado a ele. Neste caso o dispositivo móvel terá que desencapsular o pacote para recuperar o datagrama original.
4.3.3 - Datagramas Multicast
Para receber pacotes multicast, o dispositivo móvel deve primeiro se juntar ao grupo de multicast. Isto é feito de duas formas:
Para que um dispositivo móvel receba mensagens de multicast, a regra é a mesma dos pacotes broadcast apresentados na seção anterior.
Para enviar datagramas multicast, o dispositivo móvel tem duas opções:
No caso de enviar diretamente para a rede visitada, o Co-Located Care-of Address deve ser utilizado como endereço de origem. Da mesma forma, ao enviar os datagramas para seu Home Agent, o dispositivo móvel deve utilizar seu Home Address.