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 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)” I. E. T. F. (IETF), “RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks,” 03 2012: •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. 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.
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
Categoria:Protocolos da Internet