Um modelo em Redes Petri foi desenvolvido com o objetivo de observar os eventos ocor- ridos durante a transmiss˜ao das mensagens de seguran¸ca. Trata-se de um modelo sim- plificado que representa um dos n´os da rede veicular, de forma que se possa acompanhar as etapas do funcionamento do framework. A modelagem simplificada n˜ao representa to- das as fun¸c˜oes previstas nem os modelos necess´arios para a dissemina¸c˜ao das mensagens no meio sem fio. No entanto, permite observar a gera¸c˜ao dos beacons e das mensagens
de alerta, a conten¸c˜ao pelo acesso ao meio, o tratamento das mensagens recebidas e a atualiza¸c˜ao dos valores dos flags.
O modelo, apresentado na Figura 17, foi desenvolvido com a ferramenta CPN To- ols (CPNTOOLS, 2013). Essa ferramenta possibilita a edi¸c˜ao, simula¸c˜ao e an´alise de Redes de Petri Coloridas. Com a utiliza¸c˜ao de Redes de Petri, fichas representam os recursos existentes em determinados lugares como, por exemplo, as mensagens enviadas e recebi- das, os valores de potˆencia e do tamanho da janela de conten¸c˜ao e o tempo necess´ario para o envio das mensagens. Transi¸c˜oes fazem com que fichas sejam levadas de um lugar a outro de acordo com o que ´e representado pelos arcos de entrada, que ligam lugares a transi¸c˜oes, e pelos arcos de sa´ıda, que ligam transi¸c˜oes a lugares. O disparo de uma transi¸c˜ao depende da existˆencia de fichas nos lugares de entrada e das condi¸c˜oes impostas pela fun¸c˜ao de guarda da transi¸c˜ao.
Veiculo Veic (1,0.0,0.0,10.0,400.0,15) Broadcast Fusion1 MSG Fusion1 Mensagens MSG FLAGS_V FLAGS (1,1,1) Mensagens Recebidas LM [] Tempo ltempo [] A STT 1`0 B STT 1`0 CWi CW 1`15 Pt PWR 400 CW CW 1`1 Meio Fusion 2 BUSY 1`0 Fusion 2 FLAGS_L FLAGS (1,1,1) Nova_CW INT 1 Tempo1 INT 0 Tempo2 INT 0 Tempo3 INTt 0 Tempo0 INT 0 Tempo4 INTt 0 Tempo5 INT 0 Transmitir @+1 [cw=0 andalso ncw=0] Receber [rrec(m,v) andalso intTime()-tempo>1]
Beacon @+100 Alerta
@+500 [status=1]
Atualiza flags vizinhos [lmsg<>[] andalso intTime()-tempo > 1000] Backoff @+1 [cw>0] [cw=0 andalso ncw=1] Adapta @+10 Descarta [intTime()-tempo>2]
Atualiza flags locais [tt<>[] andalso intTime()-tempo > 1000] Atualiza @+10 m at(m,lmsg) gera_alerta(v,f) f atf(lmsg) status v m lista_tempo(m,tt) gera_beacon(v,f) tt m lmsg v rrepas(m,v) status lmsg [] cwi discrete(1,cwi) cw conta(n,cw) n cw m fv cw adp_cw(fl,fv) pt adp_pt(fl,fv) v m 1 0 cw atfl(tt,v) f tt v f f m 1 ncw [] tempo intTime() tempo intTime() ncw 0 cwi pt v atveic(v,pt,cwi) tempo 1 n intTime() tempo tempo fl tempo intTime()
Figura 17: Modelo utilizando Redes de Petri
Na figura podemos observar, ao centro, um lugar denominado “Veiculo”, que mant´em as informa¸c˜oes do n´o simulado: identificador, coordenadas X e Y, velocidade, alcance de transmiss˜ao e tamanho da janela de conten¸c˜ao. Periodicamente, a posi¸c˜ao do ve´ıculo ´e atualizada de acordo com sua velocidade. Isso ´e realizado pela transi¸c˜ao “Atualiza” e pela fun¸c˜ao “atveic(v,pt,cwi)”, que utiliza tamb´em os valores de potˆencia e do tamanho da janela de conten¸c˜ao.
A transi¸c˜ao “Beacon” ´e utilizada para gerar, de forma peri´odica, as mensagens de seguran¸ca a partir das informa¸c˜oes dos ve´ıculos. Com uma frequˆencia menor, a transi¸c˜ao “Alerta” gera as mensagens relacionadas a eventos, como acidentes. Devido a isso, a fun¸c˜ao de guarda dessa transi¸c˜ao s´o permite o seu disparo quando “status” tem o valor “1”, indicando a ocorrˆencia de um evento relacionado `aquele n´o. Ambas as transi¸c˜oes
geram informa¸c˜oes prontas para serem enviadas, que ficar˜ao no lugar “Mensagens”. A partir do valor da janela de conten¸c˜ao gerado, um temporizador de backoff ´e decre- mentado sempre que o meio estiver livre. Quando esse tempo chegar a zero, a mensagem ´e transmitida. Nesse momento, o lugar “Tempo” armazena o valor decorrido entre o mo- mento em que a mensagem estava pronta para o envio e o momento em que foi enviada. Observe-se que, por ocasi˜ao do envio da mensagem, o lugar “Broadcast” ´e ocupado pela mensagem e o lugar “Meio” passa a indicar que o meio n˜ao est´a livre. Como se tratam de lugares de fus˜ao, esses valores s˜ao observados por todos os n´os. Dessa forma, todos devem ser capazes de detectar a mensagem, assim como perceber que o meio est´a ocupado.
Na simula¸c˜ao, cada n´o pode receber a mensagem desde que as condi¸c˜oes da guarda da transi¸c˜ao “Receber” sejam satisfeitas. Essas condi¸c˜oes verificam se a mensagem n˜ao foi enviada pelo pr´oprio n´o e se o alcance do sinal est´a al´em da distˆancia at´e o n´o que a enviou. Ap´os essa etapa, a mensagem ´e removida do meio, que estar´a livre para que outro envio possa ser realizado. A mensagem recebida ´e armazenada e pode ser reenviada ap´os verifica¸c˜ao pela fun¸c˜ao “rrepas(m,v)”, que submete a mensagem `as condi¸c˜oes para seu reenvio.
A partir das mensagens recebidas, periodicamente os valores dos flags dos vizinhos s˜ao atualizados, atrav´es da transi¸c˜ao “Atualiza flags vizinhos” e da fun¸c˜ao “atf(lmsg)”. Essa fun¸c˜ao observa os valores indicados pela maioria dos vizinhos nas fichas depositadas no lugar “Mensagens recebidas”. Uma transi¸c˜ao semelhante utiliza a fun¸c˜ao chamada “atfl(tt,v)” para atualizar os flags locais periodicamente de acordo com o tempo que as ´ultimas mensagens levaram para ser transmitidas e com as informa¸c˜oes do ve´ıculo, para estimar a densidade. A partir da determina¸c˜ao dos flags, a transi¸c˜ao “Adapta” ´e respons´avel por realizar a adapta¸c˜ao atrav´es da varia¸c˜ao dos valores de potˆencia e do tamanho da janela de conten¸c˜ao (respectivamente, nos lugares “Pt” e “CWi”).
Como apenas um n´o ´e representado, ´e necess´ario replicar o modelo para que se ob- tenham os outros n´os para a simula¸c˜ao. Apesar da simplifica¸c˜ao, ´e poss´ıvel observar a sequˆencia de eventos que levam `a atua¸c˜ao do framework. Dessa forma, o modelo desen- volvido constitui-se numa ferramenta que permite verificar os estados e eventos ocorridos durante a dissemina¸c˜ao das mensagens de seguran¸ca.
4.5
Resumo
Neste cap´ıtulo apresentamos o framework para a gerˆencia da dissemina¸c˜ao adaptativa de mensagens de seguran¸ca. Composto de trˆes m´odulos (detec¸c˜ao, preven¸c˜ao e adapta¸c˜ao), o framework tem como objetivo atuar nas etapas da dissemina¸c˜ao de mensagens, contro- lando a forma como a adapta¸c˜ao ´e realizada. Isso ´e poss´ıvel atrav´es da utiliza¸c˜ao de trˆes flags, relacionados a conectividade, congestionamento e densidade.
O m´odulo de detec¸c˜ao tem a fun¸c˜ao de verificar as condi¸c˜oes de rede e de tr´afego e determinar o valor dos flags. O m´odulo de preven¸c˜ao evita que situa¸c˜oes adversas
comprometam o desempenho da entrega. Enquanto que o m´odulo de adapta¸c˜ao realiza os ajustes determinados de acordo com os valores dos flags.
Al´em disso, um dos componentes do m´odulo de adapta¸c˜ao tem como objetivo verificar as informa¸c˜oes repassadas pelos vizinhos, para coordenar a forma como a adapta¸c˜ao ´e realizada. Assim, a decis˜ao sobre a adapta¸c˜ao ´e tomada a partir dos valores determinados localmente e das informa¸c˜oes recebidas dos ve´ıculos vizinhos. Dessa forma, evita-se que um ajuste local venha a comprometer os outros n´os da rede.
Cap´ıtulo 5
ESTUDO DE CASO I
Neste cap´ıtulo instanciamos o framework proposto para verifica¸c˜ao de sua aplica¸c˜ao em um cen´ario de uma zona urbana, com varia¸c˜ao da densidade de ve´ıculos. Para fins de com- para¸c˜ao, utilizamos outros mecanismos de dissemina¸c˜ao das mensagens de seguran¸ca. Em seguida, analisamos os resultados, levando em conta m´etricas importantes para aplica¸c˜oes de seguran¸ca em redes veiculares.
5.1
Ambiente de simula¸c˜ao
Para a realiza¸c˜ao dos experimentos dos estudos de caso, utilizamos dois simuladores, um para a simula¸c˜ao do ambiente de rede e outro para a gera¸c˜ao da mobilidade dos ve´ıculos. Al´em disso, para gerar os mapas das regi˜oes simuladas, utilizamos a fun¸c˜ao de exporta¸c˜ao de mapas reais da plataforma Openstreetmap (OPENSTREETMAP, 2013). A seguir, descrevemos como os cen´arios utilizados nas simula¸c˜oes foram gerados.
Gera¸c˜ao da mobilidade dos ve´ıculos
Ap´os a exporta¸c˜ao do mapa da regi˜ao desejada, o arquivo foi levado `a ferramenta SUMO (Simulation of Urban MObility), vers˜ao 2.22 (SUMO, 2013). A ferramenta permite que sejam gerados v´arios deslocamentos de ve´ıculos de forma aleat´oria ou organizando-os em fluxos que percorrem determinadas vias, no sentido indicado pelos mapas. Isso possibilitou a gera¸c˜ao da movimenta¸c˜ao dos ve´ıculos nas densidades planejadas para as simula¸c˜oes. Foi poss´ıvel tamb´em simular a ocorrˆencia de um acidente em cada simula¸c˜ao, o que, na ferramenta SUMO, ´e feito com a parada dos ve´ıculos acidentados na posi¸c˜ao da via escolhida e durante o tempo desejado.
A sa´ıda da ferramenta ´e um arquivo com registros (traces) da movimenta¸c˜ao dos ve´ıculos. Atrav´es de comandos dispon´ıveis na pr´opria ferramenta, ´e poss´ıvel converter o arquivo de movimenta¸c˜ao para o formato utilizado na ferramenta respons´avel pelo tr´afego de rede. Neste caso, o arquivo foi convertido para o formato apresentado na Figura 18, que mostra, a cada instante, as posi¸c˜oes de destino no deslocamento de cada ve´ıculo e a sua velocidade. Por exemplo, a primeira linha indica que, aos 32.2 s, o n´o 4 se desloca para a posi¸c˜ao com coordenadas 1675.29, 1805.15 com velocidade de 21.77 m/s.
Figura 18: Trecho do arquivo com a movimenta¸c˜ao dos ve´ıculos
Simula¸c˜ao do ambiente de rede
Para essa etapa foi utilizado o Network Simulator (ns-2), em sua vers˜ao 2.35 (NS-2, 2012). A partir do arquivo gerado na etapa anterior, os ve´ıculos passam a constituir os n´os da rede. Para cada um deles, ´e necess´ario criar um agente associado `a aplica¸c˜ao que ser´a utilizada. Nos estudos de caso, as aplica¸c˜oes foram: envio de beacons e envio de mensagens de alerta. A seguir, ´e preciso programar cada um desses agentes para enviar dados de acordo com a aplica¸c˜ao. Para isso, foram utilizados scripts que geravam o envio de beacons por cada um dos ve´ıculos dez vezes por segundo e o envio de mensagens de alerta pelos ve´ıculos envolvidos no acidente simulado com a frequˆencia de duas vezes por segundo.
Apesar de a ferramenta possibilitar a utiliza¸c˜ao de anima¸c˜oes para visualizar o com- portamento dos n´os, exibindo sua movimenta¸c˜ao e o tr´afego de dados, essa funcionalidade n˜ao foi utilizada. Para a an´alise, utilizamos os arquivos de sa´ıda com registros (traces) do simulador, que permitem verificar cada evento ocorrido e extrair informa¸c˜oes, como a perda de alguma mensagem, o tempo da ocorrˆencia e em qual camada o evento ocorreu. Essas informa¸c˜oes s˜ao analisadas em seguida para a obten¸c˜ao dos resultados. Um exemplo desse arquivo de sa´ıda ´e apresentado na Figura 19. Para exemplificar, o registro marcado na figura indica:
• r: Tipo de evento (recep¸c˜ao)
• 21.230314304: tempo de ocorrˆencia do evento • 99: identificador do n´o
• 21225: identificador da mensagem • safety: tipo da mensagem
• 200: tamanho da mensagem em bytes • 0 ffffffff 3 0: informa¸c˜oes da camada MAC • 3:21 -1:21 32 0: informa¸c˜oes da camada de rede
• safety 1 21225 21.228838: informa¸c˜oes da camada de aplica¸c˜ao
Figura 19: Arquivo de sa´ıda do simulador de rede
Na configura¸c˜ao dos parˆametros do simulador, o modelo de camada MAC escolhido foi o 802.11Ext, indicado para a simula¸c˜ao do padr˜ao IEEE 802.11p, utilizado em redes vei- culares (CHEN et al., 2007). O modelo de propaga¸c˜ao utilizado ´e o Nakagami, considerado mais adequado para representar os efeitos de propaga¸c˜ao no ambiente de redes veicula- res (SINGH, 2012). `A exce¸c˜ao do que for citado na descri¸c˜ao dos cen´arios de simula¸c˜ao, os parˆametros utilizados foram os valores padr˜ao do simulador.
Para implementar a proposta apresentada, foi necess´ario programar uma nova classe, respons´avel pelo envio das mensagens de alerta. Essa nova classe foi programada para identificar se a mensagem era um beacon ou um alerta, montar o cabe¸calho da mensa- gem de acordo com o formato proposto apresentado na Se¸c˜ao 4.1 e tratar as mensagens recebidas. Al´em disso, foram criadas tabelas para a manipula¸c˜ao dos flags e de outras informa¸c˜oes, como o tempo de acesso. Altera¸c˜oes nas classes existentes foram necess´arias para realizar a adapta¸c˜ao da potˆencia e do tamanho da janela de conten¸c˜ao, de forma que os valores dos flags pudessem ser consultados antes do envio das mensagens.