3.2.2 VITP
O VITP (Vehicular Information Transfer Protocol) é um protocolo de comunicação da camada de aplicação, projetado para dar suporte ao estabelecimento de serviços sobre a infra-estrutura de uma VANET.
A estrutura do VITP pode ser usada para prover informações baseadas em posição geográfica, ou serviços sobre o trânsito, entre outros, retiradas de sensores veiculares existentes em cada nóda rede. O VITP também se utiliza do sistema de navegação GPS, fundamental no seu roteamento.
O VITP se destaca pois suas funções tem capacidade de trabalhar on-demand, isto é, sob demanda de um nó qualquer da rede, a qualquer tempo. Isto inclui consultas do tipo:
1) Condições do trânsito em certas regiões: congestionamento e fluxo de veículos
2) Alertas para um acidente ou aproximação de ambulâncias
3) Serviços de estrada: Localização e preços de postos de gasolina,  localização e menus de restaurantes próximos da estrada.
          Todos estes serviços são acoplados a serviços de GPS para mostrar ao motorista a rota que deverá ser tomada para alcançar um destino encontrado pelo protocolo VITP.
O VITP, pertencendo à camada de aplicação, foi projetado de forma independente à camada física utilizada na VANET. A rigor, caso um automóvel encontre-se isolado, sem conexão pela rede VANET, é possível utilizar o protocolo VITP pela conexão GPRS de um aparelho celular, por exemplo.
O VITP, da forma como foi proposto, estabelece a sintaxe e a semântica de mensagens trocadas entre os chamados VITP Peers, que são definidos como componentes de software, existentes em cada veículo, que rodam o protocolo. Cada VITP Peer tem acesso aos sensores do automóvel em que se localiza e pode se conectar a outros VITP Peers próximos através da rede VANET. A idéia é que os VITP Peers são capazes de criar dinamicamente grupos ad-hoc que coletam as informações necessárias para resolver uma consulta externa e respondê-la.
O protocolo VITP foi proposto em [13], e neste artigo os autores tomam como pré- requisito para o funcionamento do protocolo a existência de um computador de bordo, um sistema de GPS, sensores que recolham dados interessantes para resolver as consultas e alguma forma de comunicação inter-veicular - inclusive o DSRC é citado como uma possibilidade perfeitamente aceitável.
Além disso, o VITP também prevê a existência de diversos serviços de estrada, como postos de gasolina e restaurantes, que podem se conectar as VANETs e trocar mensagens, cujo roteamento é feito através de protocolos geográficos, que já foram brevemente discutidos neste trabalho
 No VITP, as requisições do usuário final devem ser transformadas em queries baseadas em localização. Cada uma destas queries deve ser roteada até a localização de destino pela VANET. Ao alcançar a região de destino, estas queries são recebidas por nós ali presentes, tanto veículos quanto estabelecimentos fixos de serviços perto da estrada (postos de gasolina, restaurantes, lojas de conveniência, etc).
Estes nós que se encontram na região de destino devem colaborar em tempo real para gerar uma resposta, que será enviada de volta à localização de origem.
Além do próprio VITP, definindo a sintaxe e semântica das mensagens, e dos VITP peers, também é fundamental para o funcionamento do protocolo a existência de um esquema de codificação geográfica, responsável por organizar e representar simbolicamente segmentos de estrada e seus sentidos. Este esquema é utilizado em todas as queries geográficas do VITP, bem como no protocolo de roteamento, que faz uso do sistema de navegação presente no veículo para transformar os símbolos do esquema em coordenadas GPS.
O grande diferencial do VITP é que os outros métodos de monitoramento de tráfego são baseados na disseminação contínua de informações dos sensores, enquanto que o VITP propõe uma recuperação das informações do trânsito baseada em pulls.É necessário enfatizar que o VITP também mantém suporta a serviços baseados em push, como um mecanismo para propagar alertas de emergência ou outros sérios distúrbios do trânsito, como o fechamento de rodovias, etc.
Os conceitos-chave descritos pelos autores que propuseram o VITP são os seguintes: Pedidos baseados em localização, Servidores Virtuais Ad-hoc, transações VITP e condições de retorno.
Os pedidos baseados em localização já foram discutidos: todas as pesquisas do VITP são traduzidas em queries que serão roteadas a uma certa região. Como VANETs tratam de veículos, assume-se sem perdas que a região é definida por uma rua ou rodovia e seu sentido – as adjacências eventualmente poderão responder, caso possuam nós na rede.
Os servidores virtuais ad-hoc surgem da inviabilidade de centralizar os servidores de informação para a rede, dada a extensão das redes de estradas e a natureza dinâmica das informações relacionadas ao tráfego. A coleta, indexação, atualização contínua e envio periódico de informações sobre o trânsito requeriria uma infra-estrutura de sensores inviável, o gerenciamento de uma altíssima quantidade de mensagens pela rede e uma rede capaz gerenciar de forma centralizada uma enorme quantidade de queries.
A solução proposta no VITP, servidores virtuais ad- hoc (Virtual Ad-hoc Servers – VAHS), não requer qualquer infra-estrutura além daquela contida nos nós da rede: os VITP Peers. Em outras palavras, o servidor que processa e gera respostas à. queries VITP é composto de um conjunto de VITP Peers, podendo estar tanto em veículos quanto em serviços de estrada (restaurantes, postos de gasolina, etc). O estabelecimento dos nós que pertenceram a este servidor virtual baseia-se na presença deles na área de interesse e a sua disponibilidade para participar da resolução da query.
É importante ressaltar que a filosofia dos VITP Peers baseia-se no “melhor esforço possível”. Não existem garantias ou exceções para tratar mensagens perdidas. Além disso, também pode ocorrer de um VITP Peer entrar em um VAHS, iniciar o processamento de uma query e sair da área de interesse antes da conclusão deste processamento. O protocolo foi projetado para ser o mais simples e leve possível, podendo rodar em computadores e sistemas embarcados com facilidade e baixo custo.
As transações VITP são uma mera formalização dos estados possíveis em uma query VITP. Uma transação é dividida em quatro fases: envio da query, computação VAHS, envio da resposta e entrega da resposta.
Durante a fase de envio da query, uma query Q é enviada, através da VANET e do protocolo de roteamento geográfico, para o local L de destino. É interessante ressaltar que os nós intermediários não necessariamente precisam rodar VITP, eles apenas precisam rotear as mensagens.
Quando a query Q é recebida por um nó qualquer que esteja dentro da região L de interesse e que esteja disponível para processá-la, entrando na VAHS, a fase de computação VAHS é iniciada. Durante esta fase, a mensagem é roteada entre os nós pertencentes ao VAHS. Estes VITP Peers alteram a mensagem para inserir sua resolução parcial e em seguida à transmitem para os seus vizinhos. A semântica VITP indica como a VANET deverá transmitir essa mensagem editada (unicast ou broadcast para os vizinhos)
   Um pedido VITP é transportado entre os peers do VAHS até que uma condição de retorno (que serão explicadas mais adiante) seja obedecida. As condições de retorno determinam o ponto de parada do processamento da query. Quando um peer do VAHS detecta que a condição de retorno é atendida, uma resposta VITP é gerada e enviada de volta a região de origem. O transporte desta resposta até a origem corresponde à terceira fase da transação VITP.
Quando esta resposta chega a área de origem, a quarta fase é iniciada, e a rede VANET por baixo do VITP faz o broadcast da mensagem até que ela atinga o nó que fez a query, no início do processo. Existe uma precaução para o caso de o nó que gerou a query não se encontre mais naquela área quando a resposta é retornada: o VAHS pode especificar uma região estendida sobre a qual ocorrerá o broadcast da resposta.
As condições de retorno podem ser variadas e são extremamente dependentes do tipo de query enviada. Por exemplo: Suponha o caso de um motorista querer saber como está o trânsito em uma determinada rua. Uma das formas de se medir o trânsito é obtendo a velocidade média dos veículos localizados naquela rua nos últimos minutos. Uma condição de retorno aplicável neste caso seria o número de veículos dos quais esta informação será obtida. Por exemplo: “Obter a velocidade média de 25 veículos localizados sobre a ponte Rio- Niterói”. Esta query rodaria dentro do VAHS até que 25 carros editassem seu conteúdo, ponto a partir do qual a condição de retorno estaria satisfeito. Na prática, os valores escolhidos na condição de contorno tem grandes impactos sobre o desempenho do VITP, como os testes mostrarão. Um mecanismo de time out é utilizado caso a query demore muito a ser resolvida.
Na referência [13], artigo no qual o VITP é proposto, os autores mostram resultados de simulações com o VITP. No estudo, foi também usado o simulador NS2, bem como uma ferramenta própria de geração de tráfego. Entre vários outros parâmetros, os autores optaram por utilizar conexões sem fio de 11Mbps de banda e alcance de 250m. O roteamento foi feito através de um método geográfico simples: o pacote é redirecionado ao vizinho mais próximo do destino. Um nó tenta encaminhar uma mensagem para o seu próximo salto três vezes. Caso falhe, ele escolhe outro vizinho. Se após três vizinhos o pacote não conseguir ser encaminhado, este é abandonado e um erro é gerado.
     As simulações rodaram queries de inspeção de tráfego: “Como está a média da velocidade dos carros em uma rua X que está localizada em uma distância D da minha posição atual?” A variável condição de retorno é chamada de cnt. Seguem os resultados obtidos pelos autores:
Tempo de resposta vs. Distância de Query (D):
graphic
Perda de mensagens vs. Distância de Query (D):
graphic
 
Eficiência da Query vs.  Cnt para diferentes Distâncias de Query (D):
graphic