• Nenhum resultado encontrado

Encaminhamento de mensagens hello

No documento Dados nomeados em redes móveis Ad Hoc (páginas 64-78)

5.3 Estrat´ egia MPRstrategy

5.3.1 Encaminhamento de mensagens hello

Para conhecer todos os n´os a dois saltos de distˆancia, a estrat´egia utiliza um pro- tocolo de hello. Todos os n´os ter˜ao de enviar, periodicamente, mensagens hello para os seus vizinhos, que conter˜ao o seu ID e os IDs dos seus pr´oprios vizinhos. Naturalmente, na primeira vez que os n´os enviam a mensagem hello, enviar˜ao apenas o seu ID, por- que ainda n˜ao tˆem conhecimento dos vizinhos. Assim, este algoritmo necessita de duas itera¸c˜oes para convergir.

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 44

Todos os n´os ter˜ao uma Tabela Vizinhos, que conter´a todos os seus vizinhos, os res- petivos vizinhos destes e o n´umero de vizinhos. A estrutura da tabela est´a representada na Figura 5.6.

Figura 5.6: Estrutura da Tabela Vizinhos dos n´os na estrat´egia MPRstrateggy

Como o contexto em que se enquadra ´e o das redes de dados nomeados, foi decidido que as mensagens de hello ser˜ao retransmitidas atrav´es de interesses e dados. Para isso, todos os n´os ser˜ao consumidores e, simultaneamente, produtores do prefixo “/hello”. Todos os consumidores enviar˜ao interesses hello de 5 em 5 segundos. O protocolo OLSR recomenda o envio de pacotes de hello de 2 em 2 segundos [34], mas como as simula¸c˜oes feitas s˜ao para cen´arios em que os dispositivos m´oveis s˜ao transportados por pedestres, foi decidido que o intervalo de tempo de 5 segundos era suficiente.

Assim, quando um n´o N envia um interesse com o prefixo “/hello”, todos os n´os que receberem esse interesse ser˜ao, obviamente, os vizinhos de N. Como todos os n´os s˜ao produtores do prefixo “/hello”, os vizinhos de N n˜ao reencaminhar˜ao o interesse e, em vez disso, devolver˜ao os dados correspondentes. Para isso, ir˜ao `a sua Tabela Vizinhos, verificar quais s˜ao os seus vizinhos e, de seguida, registar˜ao, no conte´udo do pacote de dados, o seu pr´oprio ID e o ID dos seus vizinhos. O n´o N, ao receber o pacote de dados, ir´a registar na sua Tabela Vizinhos o seu vizinho e os respetivos vizinhos do vizinho.

A Figura 5.7 ilustra um exemplo deste procedimento.

´

E de notar que os n´os adiam a transmiss˜ao dos pacotes de dados hello por um tempo

THello, calculado aleatoriamente, a fim de evitar colis˜oes. Quando o n´o N enviava o in-

teresse hello, todos os seus vizinhos recebiam-no ao mesmo tempo e, consequentemente, iriam enviar o respetivo pacote de dados hello, tamb´em, ao mesmo tempo, o que provo- cava v´arias colis˜oes entre pacotes. Como resultado, N n˜ao recebia a informa¸c˜ao de todos os vizinhos e ficava com um conhecimento incompleto da topologia, o que resultava num mau desempenho do protocolo de encaminhamento. Ao contr´ario dos outros tempos de atraso criados (TInterest, TData e, como ser´a visto mais `a frente, TInterestM P R), que

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 45

Figura 5.7: Exemplo da troca de mensagens “/hello” na MPRstrategy

os pacotes n˜ao serem enviados todos ao mesmo tempo. Na troca de pacotes hello n˜ao existem loops de encaminhamento, pois os n´os nunca os reencaminham.

Visto que o RTT ´e cerca de 5ms, foi decidido que o valor m´aximo para este tempo- rizador seria 5ms. Assim, THello estar´a entre os 0 e 5ms.

Quando um n´o N recebe um pacote de dados “/hello”, com a informa¸c˜ao de um vizinho, ´e verificado se j´a possui informa¸c˜ao sobre aquele vizinho na Tabela Vizinhos. Se sim, elimina a informa¸c˜ao obsoleta e insere a nova. Se n˜ao, simplesmente acrescenta a nova informa¸c˜ao na tabela.

Al´em disso, ´e estabelecido um tempo de vida para a informa¸c˜ao de um vizinho na tabela, atrav´es da utiliza¸c˜ao de um temporizador TN eighbor, que ´e calculado atrav´es da

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 46

TN eighbor = Hellointerval+ THello+ RT T (5.3)

O valor Hellointerval ´e o intervalo de envio de interesses hello, que ´e 5 segundos.

THello ´e o tempo esperado para a retransmiss˜ao dos pacotes de dados hello e, nesta

equa¸c˜ao, tem o valor de 5 ms, que ´e o seu valor m´aximo. ´E escolhido o valor m´aximo, para n˜ao ocorrer a situa¸c˜ao de um n´o apagar a informa¸c˜ao do vizinho, simplesmente por este estar no tempo de espera antes da retransmiss˜ao dos dados. Por fim, RTT ´

e o tempo necess´ario, aproximadamente, desde que o n´o N envia o interesse hello, at´e receber o pacote de dados correspondente, que tem o valor de 5ms.

Este temporizador ´e iniciado quando ´e criada a informa¸c˜ao desse vizinho na Tabela Vizinhos. Sempre que essa informa¸c˜ao ´e atualizada, o temporizador ´e reiniciado. Caso o temporizador chegue ao fim, significa que aquele n´o deixou de ser vizinho (pois o n´o N n˜ao recebeu mais atualiza¸c˜oes deste) e, por isso, a informa¸c˜ao ´e apagada da Tabela Vizinhos.

5.3.2 Encaminhamento de interesses

Quando um n´o tiver um interesse para enviar (com a exce¸c˜ao do interesse com prefixo /hello), quer seja o consumidor ou um n´o interm´edio, ter´a de descobrir quais os seus vizinhos ter˜ao de reencaminhar o pacote, ou seja, quais s˜ao os MPRs, para que todos os vizinhos desses vizinhos recebam o interesse, mas com a menor redundˆancia poss´ıvel. O conjunto de n´os MPRs ser˜ao colocados num novo campo do cabe¸calho do interesse, designado por campo “MPR”.

5.3.2.1 Algoritmo MPR

O algoritmo MPR, utilizado para calcular o conjunto de vizinhos MPRs de cada n´o, utiliza uma tabela adicional, designada por Tabela provisorio, que est´a representada na Figura 5.8.

O primeiro campo da Tabela provisorio, de um n´o N, cont´em o ID do vizinho de N. O segundo campo cont´em a quantidade de vizinhos, do vizinho de N, que ainda n˜ao est˜ao na ´area de cobertura dos n´os j´a considerados MPRs. O terceiro campo cont´em os IDs desses vizinhos e, por fim, o ´ultimo campo cont´em uma vari´avel inteira, que indica se o vizinho de N ´e MPR (1), se j´a foi considerado n˜ao-MPR (0) ou se essa decis˜ao

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 47

Figura 5.8: Estrutura da Tabela provisorio dos n´os na estrat´egia MPRstrateggy

ainda n˜ao foi feita (-1). Esta tabela serve como tabela auxiliar, para averiguar quais dos vizinhos de N (com a mesma quantidade de vizinhos) ir˜ao pertencer ao conjunto MPR. Supondo que N tem 5 vizinhos, que contˆem todos eles 4 vizinhos cada um, o n´o N ir´a registar na Tabela provisorio todas as informa¸c˜oes desses n´os, de forma a perceber quais ter´a de escolher como MPR, para uma menor redundˆancia poss´ıvel de pacotes na rede. Na Figura 5.9 est´a representado o fluxograma da t´ecnica dos MultiPoint Relays. ´E de notar que o vetor com cobertura cont´em os IDs dos vizinhos dos vizinhos, que j´a est˜ao na ´area de cobertura dos n´os j´a considerados MPRs. J´a o vetor sem cobertura cont´em os IDs dos vizinhos do vizinho, que ainda n˜ao est˜ao na ´area de cobertura dos n´os j´a considerados MPRs e servir´a para colocar no terceiro campo da Tabela provisorio de cada vizinho de N.

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 49

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 50

De seguida, ´e mostrado um exemplo, para ilustrar a ideia do algoritmo MPR. A Figura 5.10 representa um exemplo da tabela Vizinhos de um n´o N.

Figura 5.10: Exemplo da Tabela Vizinhos do n´o N na MPRstrategy

Em primeiro lugar, o n´o N ter´a de ir `a tabela Vizinhos e construir uma lista ordenada, por ordem decrescente, com os seus os vizinhos, que contˆem mais vizinhos. Neste caso, a lista ficaria: B-A-C-E-F-G-H-D. De seguida, ter´a de descobrir quais os vizinhos ser˜ao MPRs.

O primeiro n´o da lista ordenada ´e o B. Como a lista com cobertura ainda est´a vazia e n˜ao existe nenhum outro vizinho de N com a mesma quantidade de vizinhos do que B, significa que B ´e o primeiro da lista ordenada e ´e, tamb´em, o vizinho com mais vizinhos. Por isto, o n´o B ´e considerado MPR. De seguida, os vizinhos de B s˜ao registados na lista com cobertura, para que N consiga perceber quais os vizinhos dos seus vizinhos j´a tˆem cobertura, pelos j´a considerados MPRs.

O pr´oximo n´o da lista ordenada ´e o n´o A, que tem como primeiro vizinho o n´o 5. Como este j´a pertence `a lista com cobertura, j´a receber´a o pacote atrav´es de outro MPR. A pesquisa dos vizinhos de A continua, at´e haver algum vizinho que n˜ao conste na lista com cobertura ou que acabem os vizinhos de A. O pr´oximo ´e o n´o 2. Este ainda n˜ao consta na lista com cobertura. Contudo, como o n´o A tem o mesmo n´umero de vizinhos em rela¸c˜ao ao pr´oximo n´o da lista ordenada, o n´o C, a decis˜ao de se o A ´e ou n˜ao um MPR n˜ao ´e feita neste momento, pois antes ´e necess´ario averiguar os vizinhos de todos

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 51

os n´os, que contˆem a mesma quantidade de vizinhos do que A, a fim de n˜ao considerar n´os MPRs desnecessariamente e contribuir para a redundˆancia de pacotes na rede.

De seguida, o n´o 2 ´e registado no vetor sem cobertura do n´o A e a pesquisa dos vizinhos do n´o A continuaria, mas, neste caso acabou, porque acabaram os vizinhos de A. No entanto, se A tivesse mais algum vizinho, o procedimento seria o mesmo, ou seja, se A tivesse um n´o que ainda n˜ao pertencesse `a lista com cobertura, registaria esse n´o no vetor sem cobertura. Caso j´a pertencesse, descartava esse n´o e continuava a pesquisa de vizinhos de A. Quando a pesquisa termina, ´e feito um registo na Tabela provisorio. Neste caso, o registo teria os valores (A; 1; 2; -1). A sua explica¸c˜ao est´a representada na Figura 5.11.

Figura 5.11: Exemplo de registo na Tabela provisorio do n´o A na MPRstrategy

O pr´oximo ´e o n´o C. Os seus vizinhos s˜ao os n´os 5 e 1. O n´o 5 j´a consta na lista com cobertura, mas o n´o 1 ainda n˜ao. O procedimento ´e o mesmo que foi utilizado no n´o A. Neste caso, o registo na Tabela provisorio teria os valores (C; 1; 1; -1).

O pr´oximo ´e n´o E. Os seus vizinhos s˜ao os n´os 1 e 2, que n˜ao constam na lista com cobertura. Neste caso, o registo na Tabela provisorio teria os valores (E; 2; 1,2; -1). O n´o F tem os mesmos vizinhos de E. O registo na Tabela provisorio teria os valores (F; 2; 1,2; -1).

O n´o G cont´em os vizinhos 4 e 8, que n˜ao constam na lista com cobertura. Neste caso, o registo na Tabela provisorio teria os valores (G; 2; 4,8; -1).

O ´ultimo n´o, que cont´em dois vizinhos, ´e n´o H. Os seus vizinhos s˜ao os n´os 1 e 6, que n˜ao constam na lista com cobertura. O registo na Tabela provisorio teria os valores (H; 2; 1,6; -1).

Posto isto, chegou o momento de decidir quais os n´os com 2 vizinhos ser˜ao MPRs. Para isso, ´e percorrida a Tabela provisorio, que est´a representada na Figura 5.12.

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 52

Figura 5.12: Exemplo da Tabela Provisorio do n´o N na MPRstrategy

Em primeiro lugar, ´e analisado o n´o A. ´E percorrida a Tabela Provisorio, de forma a procurar se o n´o 2 aparece mais vezes. ´E encontrado no n´o E. Como ainda n˜ao est´a decidido se E ser´a ou n˜ao um MPR, ´e verificado se este tem na sua ´area de cobertura todos os vizinhos de A e ainda um outro n´o que A n˜ao tenha. Como tem todos e ainda mais o n´o 1, o n´o A ´e considerado n˜ao-MPR. A mesma situa¸c˜ao acontece para o n´o C.

De seguida, ´e analisado o n´o E. O seu primeiro vizinho ´e encontrado no grupo de vizinhos do n´o C, mas como este j´a foi considerado n˜ao-MPR, o procedimento continua. O pr´oximo n´o que faz match com o n´o 1 ´e o n´o F. Como ainda n˜ao est´a decidido se F ser´a ou n˜ao um MPR, ´e verificado se este tem na sua cobertura todos os vizinhos de E e, ainda, um outro n´o que E n˜ao tenha. O n´o F tem todos os vizinhos de E, mas n˜ao tem um outro diferente e, por isso, o procedimento continua. De seguida, ´e encontrado no n´o H, e este n˜ao possui todos os vizinhos de E, por isso o procedimento continua. Como n˜ao existe outro n´o que fa¸ca match com o vizinho 1, ´e feita a verifica¸c˜ao final: como ainda n˜ao est´a decidido se E ´e ou n˜ao MPR, E ´e considerado oficialmente MPR e s˜ao registados os vizinhos de E, que estavam na lista sem cobertura, na lista com cobertura. O pr´oximo ´e o n´o F. O seu vizinho 1 ´e encontrado no n´o C, que j´a foi considerado n˜ao-MPR e, por isso, continua a pesquisa. ´E encontrado, tamb´em, no n´o E, que j´a foi considerado MPR. De seguida, ´e verificado se o n´o F possui algum outro n´o que E n˜ao possua. Como n˜ao possui, o n´o F ´e considerado n˜ao-MPR. Por fim, ´e tamb´em encontrado no n´o H, mas aqui nada acontece (porque H n˜ao possui todos os vizinhos de F) e, assim, o n´o F fica considerado n˜ao-MPR.

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 53

´

E analisado, agora, o n´o G. O seu primeiro vizinho ´e o n´o 4, que n˜ao faz match com nenhum n´o da Tabela Provisorio. Ent˜ao, o n´o G ´e logo considerado MPR, sem haver necessidade de analisar os seus restantes vizinhos. Por fim, s˜ao registados os vizinhos de G, que estavam na lista sem cobertura, na lista com cobertura.

Finalmente, ´e analisado o n´o H. O seu vizinho 1 ´e encontrado no n´o C, que j´a foi considerado n˜ao-MPR e, por isso, continua a pesquisa. ´E encontrado, tamb´em, no n´o E, que j´a foi considerado MPR. Como H possui outro n´o que F n˜ao possui, H ´e considerado temporariamente MPR. Como o seu pr´oximo vizinho, o n´o 6, ´e ´unico na Tabela Provisorio, H ´e considerado MPR.

Esta estrat´egia, de marcar os n´os como temporariamente MPRs, serve para n˜ao serem tomadas decis˜oes precipitadas, testando todas as rela¸c˜oes entre os n´os, para uma melhor decis˜ao final da escolha dos MPRs.

No final deste processo, a Tabela Provisorio ´e apagada.

O ´ultimo n´o da lista ordenada ´e o n´o D, que possui apenas um vizinho. Como este j´a pertence `a lista com cobertura, o n´o D ´e considerado n˜ao-MPR.

Neste momento, o n´o N j´a decidiu quais os seus vizinhos ser˜ao MPRs: B, E, G e H. Conclus˜ao: neste caso, o n´o N possui 8 vizinhos, mas apenas 4 deles s˜ao considerados MPRs. Ser˜ao feitos metade dos reencaminhamentos, o que levar´a a que o tr´afego seja diminu´ıdo em grande medida e a estrat´egia de encaminhamento tenha um desempenho muito melhor, com o reencaminhamento de interesses controlado.

O pr´oximo passo ´e colocar esta lista de n´os no campo “MPR” do interesse. Quando os vizinhos de N receberem o pacote, atrav´es de N, ter˜ao de verificar se pertencem `a lista de MPRs. Caso n˜ao perten¸cam, n˜ao reencaminham. Caso perten¸cam e n˜ao possuam os dados correspondentes, utilizam o algoritmo MPR para os seus pr´oprios vizinhos, a fim de descobrirem quais deles ser˜ao considerados MPRs, alteram o campo “MPR” do interesse com o resultado obtido e, por fim, reencaminham o interesse. O processo repete-se at´e que o interesse chegue a um produtor ou a um n´o que possua os dados correspondentes na sua Content Store.

´

E de notar que, sempre que um n´o interm´edio tenha um interesse para encaminhar, este adia a sua transmiss˜ao por um tempo TInterestM P R, calculado aleatoriamente, a

fim de evitar colis˜oes. O valor deste temporizador estar´a entre os 0 e 5ms, tal como o

THello. Se durante o per´ıodo de TInterestM P R, o n´o receber os dados correspondentes, o

Cap´ıtulo 5. Estrat´egias de encaminhamento propostas 54

Outro aspeto importante ´e o facto de que o algoritmo MPR tem em conta a rota do interesse, ou seja, se o interesse recebido por N tem a rota “X-A-N”, quando ´e executado o algoritmo MPR no n´o N, este ir´a descartar, caso possua, os vizinhos A e X e os vizinhos dos vizinhos A e X nos seus c´alculos. Assim, diminuir´a a probabilidade de loops.

5.3.3 Encaminhamento de dados

Quanto ao encaminhamento de pacotes de dados, este n˜ao foi alterado, ou seja, continua a seguir o percurso inverso do interesse e, caso n˜ao perten¸ca `a rota do interesse, espera um per´ıodo de TData. Se durante esse per´ıodo n˜ao receber outro pacote de dados

igual, reencaminha o pacote ao fim de per´ıodo de TData. Caso contr´ario, descarta o

pacote. ´

E de notar que no reencaminhamento de interesses, os n´os continuam a colocar os seus IDs no campo “Path” do cabe¸calho do pacote.

Poderia ter sido proposta uma outra variante desta estrat´egia de encaminhamento, que alterasse o encaminhamento dos dados, `a semelhan¸ca do que foi feito para os in- teresses. Em vez de os dados seguirem a rota do interesse, seria utilizado o algoritmo MPR. No entanto, existe uma limita¸c˜ao, que ´e uma regra das NDNs, que p˜oe em causa este protocolo. Quando um n´o recebe um pacote de dados, verifica se tem uma entrada PIT correspondente. Caso n˜ao tenha, descarta o pacote n˜ao solicitado. Desta forma, como o algoritmo MPR define um conjunto reduzido de n´os para reencaminharem o pacote, se esses n´os n˜ao tiverem recebido o interesse correspondente, ir˜ao descartar o pacote e o encaminhamento termina, n˜ao conseguindo fazer com que os dados cheguem ao consumidor. Por esta raz˜ao, foi decidido que esta estrat´egia n˜ao seria proposta.

Cap´ıtulo 6

Implementa¸c˜ao

Neste cap´ıtulo ser´a descrita a implementa¸c˜ao da rede de dados nomeados no contexto de uma rede Ad Hoc, bem como as trˆes estrat´egias de encaminhamento implementadas. Al´em disso, ser´a explicado o funcionamento do simulador utilizado.

Para a implementa¸c˜ao da rede, foi usado o simulador ndnSIM 2.0 [8], que ´e uma vers˜ao estendida do NS-3, que incorpora o paradigma dos dados nomeados.

6.1

Simulador ndnSIM

A ferramenta ndnSIM implementa todas as caracter´ısticas b´asicas da arquitetura NDN, incluindo:

• A utiliza¸c˜ao de um esquema de nomes hier´arquico e o formato de pacotes de interesses/dados;

• O uso de tabelas para o processamento de pacotes, tais como CS, PIT e FIB;

• A abstra¸c˜ao de estrat´egias de encaminhamento;

• A abstra¸c˜ao de interfaces, a fim de suportar a interface entre a arquitetura NDN e as camadas superiores (aplica¸c˜oes) e inferiores (rede, liga¸c˜ao).

No ndnSIM 2.0, todo o encaminhamento e gest˜ao NDN ´e implementado direta- mente, usando o c´odigo fonte do NDN Forwarding Daemon (NFD) [8]. O NDN Forwar- ding Daemon (NFD) ´e um encaminhador de rede e foi projetado para permitir simular experiˆencias diversificadas, tendo em conta as caracter´ısticas, algoritmos e aplica¸c˜oes das redes NDN. Assim, o NFD implementa e evolui com o protocolo NDN.

Cap´ıtulo 6. Implementa¸c˜ao 56

Nesta sec¸c˜ao ser´a explicada a estrutura do NFD: em primeiro lugar ser˜ao apresenta- das as tabelas usadas pelo NFD, depois a estrutura dos pacotes e, por fim, ser´a explicado o processo de encaminhamento de interesses e dados.

6.2

Tabelas

O NFD implementa a PIT, FIB e CS, al´em de outras tabelas de suporte, como a tabela Strategy Choice e a tabela Measurements.

A tabela Forwarding Information Base (FIB) ´e usada para encaminhar pacotes de interesse em dire¸c˜ao a potenciais fontes dos dados. ´E quase idˆentica a uma tabela de encaminhamento IP, com a diferen¸ca de que a FIB permite ter uma lista de interfaces de sa´ıda, em vez de uma ´unica. Uma entrada FIB cont´em o nome do prefixo e um conjunto de NextHops. Quando existe uma entrada FIB para um determinado prefixo significa que pode ser alcan¸cada uma potencial fonte de dados correspondente, atrav´es das interfaces contidas no registo de NextHops, nessa entrada FIB. Cada registo de NextHop cont´em uma interface de sa´ıda, para uma potencial fonte de dados, e o seu custo de encaminhamento.

A tabela Content Store (CS) ´e uma cache de pacotes de dados. Os pacotes de dados, recebidos por um n´o, s˜ao colocados nesta cache por um per´ıodo de tempo, a fim de satisfazer os interesses futuros que solicitem os mesmos dados. Cada entrada da Tabela CS cont´em o pacote de dados, a indica¸c˜ao se o pacote de dados n˜ao ´e solicitado e a hora em que os dados em cache se ir˜ao tornar obsoletos.

A tabela Pending Interest Table (PIT) tem como objetivo controlar os interesses en- caminhados em dire¸c˜ao a produtores de dados, para que os dados possam ser enviados para o respetivo consumidor [35]. Al´em disso, cont´em interesses satisfeitos recentemente, para que possam ser detetados ciclos. Uma entrada PIT representa um interesse pen- dente ou um interesse que foi recentemente satisfeito e ´e constitu´ıda por um conjunto de registos de entrada, um conjunto de registos de sa´ıda, dois temporizadores (o tem- porizador insatisfeito, que expira quando todos os registos da entrada PIT expirarem; e o temporizador straggler, que expira quando a entrada PIT pode ser removida por ter sido satisfeita ou rejeitada, e j´a n˜ao ser necess´aria para detetar ciclos) e, por fim, uma lista Nonce.

Cada interesse possui um valor Nonce, que pode ser considerado como o seu identi- ficador e serve, principalmente, para verificar se o interesse recebido por um dado n´o ´e

Cap´ıtulo 6. Implementa¸c˜ao 57

duplicado. Supondo que um consumidor envia um interesse com um valor Nonce = x. Caso o mesmo consumidor deseje enviar outro pacote, mesmo sendo igual ao primeiro

No documento Dados nomeados em redes móveis Ad Hoc (páginas 64-78)