# Routing Protocol for Low power and Lossy Networks

A necessidade de desenvolvimento de uma solução de encaminhamento standard levou a IETF a formar um novo grupo, denominado ROLL (Routing Over Low Power and Lossy Networks) para estudar os requisitos do encaminhamento no mundo da “Internet of Things ” em inúmeras variedades de aplicações, tais como redes urbanas, automatização industrial e automatização de casas e edifícios. Também analisa os protocolos de encaminhamento existentes e como desenvolver um protocolo de encaminhamento para as redes LR-WPAN.
O resultado foi a criação do “Ripple” ou RPL (Routing Protocol for Low Power and Lossy Networks) um protocolo de encaminhamento pró-activo que constrói as suas rotas e topologia em intervalos aleatórios. A topologia é a base do funcionamento do RPL, este usa a topologia como um Grafo Acíclico Direccionado (“Directed Acyclic Graph”-DAG) para criar um ou mais destinos orientados (Destination Oriented DAGs” (DODAGs), que por sua vez podem estar associados a uma ou mais Instâncias RPL “RPL Instances”.
Cada RPL Instance possui uma topologia única, identificada pelo seu próprio ID (RPLInstanceID). Cada nó tem o seu próprio rank e para além disso, cada instância RPL é construída através do seu próprio conjunto de diferentes requisitos, das suas DAGs e descritos a seguir:
    •Métricas / restrições – Definem como um nó vai afectar o encaminhamento. É usado para calcular o rank de cada nó e decidir o/os nós pais (parents) preferidos, ou seja, as métricas/restrições ajudam a determinar o melhor caminho possível sendo as seguintes, as mais usadas:
       a)Contagem de saltos;
       b)Energia;
       c)Carga.
    •Rank – O rank descreve a “distância” lógica de um nó, a partir do nó root (de rank igual a zero), dentro de cada DODAG. A atribuição do rank é feita na formação da DODAG, em que cada nó selecciona o seu o/os seus nós pais (parents nodes) a partir do/dos seus nós vizinhos (neighbors nodes). Depois, cada nó calcula o seu próprio rank baseando-se nos seus pais, sendo este maior do que o rank dos seus pais. É bom referir que o rank não é necessariamente uma “distância” lógica ou mesmo uma distância relacionada ao número de saltos, mas sim á métrica escolhida;
    •Função objectiva – A “Objective function” combina as métricas e restrições para calcular o melhor caminho (selecção de pais) e cálculo do rank, sendo importante realçar que a existência de varias funções objectivas na rede leva ao recálculo sistemático do “melhor caminho”, levando a um maior consumo de energia devido ao processamento. Desta forma, não poderá existir mais do que uma função objectiva na mesma instância RPL.

## Processo de criação de uma Destination Oriented DAGs

Apesar de poderem existir múltiplos nós roots na mesma instância RPL, o processo de criação de cada DODAG é sempre o mesma. Inicia-se no nó root ou, como na maioria dos casos, no border router/coordenador, que é programado pelo administrador do sistema como root. O nó root contém os parâmetros de configuração da rede, essa configuração é agrupada num novo pacote de mensagem de controlo ICMPv6 do RPL, de nome DODAG Information Object (DIO), o qual é usado para disseminar a informação pelos seus vizinhos na rede, usando link-local multicasting. Apenas os root (coordenadores) podem iniciar o envio de mensagens DIO e ficam com o rank zero, uma vez que a distância a ele próprio é zero. Os nós que recebem as mensagens DIO processam as mensagens baseando-se em diversas características (métricas, Objective functions, DODAGID, InstanceID, entre outras) para se juntar ou não à respectiva DODAG. Sendo natural que cada nó receba múltiplas mensagens DIO, cada nó descarta as mensagens DIO dos nós com rank superior ao seu, calcula o seu rank através das Objective functions, actualiza a mensagem DIO, e envia para todos os seus vizinhos via broadcast.
Cada nó mantém um conjunto de vizinhos, que poderão ser possíveis candidatos para o nó pai (parent node) com classificação inferior ou igual, ou seja, vizinhos a partir dos quais recebeu uma mensagem DIO. No final, cada nó selecciona o seu nó pai (parent node), que tem um rank inferior ao seu, e que serve para encaminhar os dados até ao root. Este processo é contínuo, repetido e muito frequente até à formação total da DODAG, sendo depois menos frequente, apenas utilizando-se para manutenção da rede. Durante toda a formação da DODAG, os únicos valores que nunca mudam são a InstanceID e o DODAGID.
Apesar do rank normalmente não ser igual para todos os nós, é importante ter em conta que poderão existir casos de nós com o mesmo rank, uma vez que este é calculado pelo Objective functions. Este problema é resolvido através do mecanismo de prevenção de loops (Loop Avoidance), garantindo que não existem ciclos e que o pacote continua a ser encaminhado pela DODAG até o seu destino. No final do processo, os nós não root, têm apenas um pai e uma vez que cada nó apenas comunica com o seu pai no processo de construção da DODAG, consegue-se assegurar uma DODAG livre de ciclos e que qualquer nó num raio de salto múltiplo para o root, consegue chegar ao seu pai. No entanto, o tráfego poderá ser originado fora da rede 6LoWPAN, ou mesmo dentro da rede para nós com rank superior (por exemplo rank=20) ao root (rank=0), sendo necessário que todos os nós conheçam as rotas até ao destino, permitindo encaminhamento para os vários destinos dentro do DODAG. As mensagens DAO (Destination Advertisement Object) permitem anunciar o prefixo/ informação de destino até ao root (até ao cimo da DODAG) por forma a concluir o processo de criação total do DODAG,

## Referencias

* 1 2 Alliance, Internet Protocol for Smart Objects (IPSO), “RPL: The IP routing protocol designed for low power and lossy networks,” 04 2011.
* ↑ T. Clausen, U. Herberg e M. Philipp, “A Critical Evaluation of the IPv6 Routing Protocol for Low Power and Lossy Networks (RPL)”
* 1 2 3 I. E. T. F. (IETF), “RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks,” 03 2012
* ↑ I. E. T. F. (IETF), “Routing Metrics Used for Path Calculation in Low-Power and Lossy Networks,” 03 2012.
* ↑ I. Submission, “Performance Evaluation of the Routing Protocol for Low-Power and Lossy Networks (RPL),” 10 2012.