Transcrição do áudio
É coleguinha, vamos falar sobre roteamento em redes ad-hoc. Então, nós vimos até agora o que? Nós vimos redes que nós tínhamos a estação base centralizada, ou pelo menos distribuída, mas mesmo assim ela fixa. Agora imagine você o seguinte cenário, uma calamidade total. Roteadores móveis em carros, andando por, por exemplo, vamos imaginar um terremoto em escala do tipo que destrói uma cidade inteira, vamos colocar assim. A Califórnia, quem sabe? Eles estão sobre uma falha meio sinistra lá. Vamos imaginar então uma guerra, Ucrânia, Gaza, complica, Gaza não foi guerra. Então vamos imaginar esse cenário catastrófico. E aí você tem o que? Você tem carros que são roteadores e também eles são pares de comunicação. Então imagine que eu tenho um dispositivo móvel, eu me comunico com o meu carro, e o meu carro ele se comunica com outro. Outros carros como roteadores, então os roteadores ficam em cima desses carros grandes, as caminhonetes, vamos colocar assim, e lá também tem outras pessoas. E nós dentro desse cenário, nós estamos lá tendo uma rede para nos comunicar. Então seria uma rede ad hoc. Pois o router e a máquina são dispositivos que estão sempre andando, sempre se movimentando, saindo de... Posição, saindo de alcance. Então cada nó consiste em um roteador e um host. E que naturalmente você pode ter mais de um host. E em geral no mesmo computador, vamos imaginar assim. E nesse cenário então nós teríamos um problema que seria, e o alcance, eu não posso naturalmente acreditar, acreditar que todos os... Os pares de conexão comigo estão dentro dos alcances de um do outro. Pode ser comum que nesse cenário eu tenha um ou outro que saia do alcance de todos e fique fora da comunicação. Também eu não posso garantir que se eu mandei uma mensagem por um caminho, ele vai naturalmente voltar pelo mesmo caminho, ou até mesmo a segunda mensagem, vai passar pelo mesmo caminho. O que seria ruim em uma guerra, por exemplo. Sabendo qual é o caminho, eu conseguiria destruir alguém no meio do caminho. Olha só que interessante. Os russos, eles partiram, na verdade os soviéticos partiram para a ideia do Sputnik. Lança, lá de cima, e lá de cima então todos se comunicam. Certo? Legal. Os americanos foram para uma outra ideia. Para uma rede descentralizada, chamada ARPA, em que a decisão do caminho não é tomada por quem manda a mensagem, e sim pelos elementos intermediários da rede. Que é bem parecido com o que temos hoje, em redes de computadores. Veja que todos os dois cenários, tanto os americanos como os soviéticos, eles pensam em um modelo em que não é uma pessoa que decide, quem decide o caminho. Então, se for possível saber o caminho, seria possível alcançar um elemento intermediário, para que não acontecesse a troca de mensagens. Então, pense assim. E se você acha que guerra não está tão longe, desculpe, se você acha que não está tão perto, saiba que até uns seis anos atrás, quem imaginar uma pandemia? Há seis anos atrás, quem imaginar uma guerra da Ucrânia ou do Irã? Não é assim. Então, cara, comece a estudar, comece a estudar, para você terminar no fundo de uma vala, morrendo engasgado com bosta e fezes de todo mundo da trincheira. Ou se você for para a trincheira, torce para levar um tiro logo, e morrer logo lá de vez, porque morrer agonizando na merda dos outros é foda. O que torna as redes ad-hoc tão diferentes das redes fisicamente conectadas, é que a topologia é repetidamente abandonada, ela é mutável, o tempo inteiro mutável, porque os elementos saem de cena, e eles entram em cena. Tem vários problemas aí. Cara, eu vejo inúmeros TCCs nisso aí. Eu vejo inúmeras pesquisas nisso aí. Por quê? É o futuro. Muito triste dizer, mas é o futuro. Você entende, né, o que está acontecendo. O mais popular dos algoritmos de roteamento, é o AODV, que é um roteador baseado em distância e vetor, no caso, vetor de distância, traduzido em português. Bem parecido com o HIP, só que dinâmico, em uma rede dinâmica. Ele requer baixa largura de banda e pouca carga de bateria. Só que eu acho que esse algoritmo tem um problema, cara. Eu, no meu ponto de vista, eu vejo que esse algoritmo tem uma merda lá, que vai fazer gastar bateria. O que acontece? Você tem que entender que nesse cenário, nem sempre você tem um reator nuclear. É sério! Se teu carro quebrar na rua, e você precisar de passar seis horas com teu carro lá, você já tem problema com energia? Porque você tem seu mobile, você tem um carro, você vai querer colocar um som, você já tem problema com energia, cara. Então, nem todo mundo tem uma usina nuclear, em cima do carro, ou uma hidrelétrica em cima do carro, né? Agora, você imagine o quê? Um cenário catastrófico, aonde não tem nada. Você fala, ah, e o painel solar? Você vai carregar um painel solar de meio metro? Um meio metro? Cinquenta por cinquenta centímetros? Quanto isso de carga gera? Não gera muito, meu amigo. Então, você tem que imaginar um cenário. E esse algoritmo tem um problema que eu coloquei aí embaixo. Ah, está em vermelho. Mas vamos ver a ideia do algoritmo do cara. Descoberta sobre demanda. Isso é bacana. Em vez de eu ficar monitorando os elementos e criando as tabelas de roteamento, igual nós vimos, por exemplo, no próprio vetor de distância ou no estado de enlace, e se eu montasse só na hora que eu preciso? Você vai falar para mim, vai ficar mais lento, porque, veja, eu tenho que montar um caminho e depois eu tenho que transmitir. Pô, isso vai ficar muito lento? Quem disse que velocidade é o problema? Olha o problema. Baixa largura de banda, requer baixa largura de banda e requer pouca bateria. Então, é isso mesmo. Precisou, cria-se um caminho e depois manda. Entende a jogada? A rede é um grafo. Bom, toda rede de computadores é um grafo. Isso aí não seria muito muito inovador desse algoritmo. Um nó pode se comunicar com todos dentro de seu alcance. Então, veja, o A tem o alcance de B e D. Então, ele pode se comunicar com esses caras aqui. Então, eu teria o caminho de A para D, de A para B. Diretamente. Tanto que B teria o caminho para D e D teria o caminho para B. Certo? Legal. Envia um hold request por meio de folding. Então, digamos, eu preciso de me comunicar. Certo? Eu preciso de me comunicar. Vamos imaginar que é de A para I. Beleza? Então, eu pego, eu jogo para B, para D, B para C, D para F, D para B, E para G. É o request indo. O C joga para E, o G joga para o E, o G joga para H, o G joga para o I, o E joga para o G, o F joga para o H. Veja que ele vai indo tipo num folding. Ele vai levando esse request até o I. Beleza? Então, ele vai levando esse request até o I. Isso vai. Legal? E aí, o que que acontece? É que aqui o cara usou um caminho mais curto, né? Eu fui um trouxa. Eu já joguei do A no I. Muito trouxa. Depois, o que que eu faço? Eu pego e venho voltando a resposta. Nisso que eu venho montando a resposta, veja, é um grafo. Grafo é uma recursividade de envio de pacotes. Olha que louco. É uma recursividade de chamar nada de método, não, meu amigo. É uma recursividade para você jogar os pacotes nessa rede. Essa coisa vai de forma recursiva. E depois ela vem voltando. Concorda comigo que quem voltar primeiro, chegou? Primeiro, então encontrou o caminho e o melhor caminho? Né? Então, depois eu retorno o router que vai retornar o caminho inverso e primeiro que chegar. O único problema é que ele mantém o estado. Ele tenta manter o estado de conexão. Então ele A tenta manter um estado com B e A tenta manter um estado com B B tenta manter um estado com D e D tenta manter um estado com B. E isso aqui, naturalmente, tá, é essas tentativas de manter, isso aqui vai consumir bateria. No meu ponto de vista essa é a merda. Esse algoritmo, no meu ponto de vista, poderia ser melhor se foda-se. Não tem que manter tabela nenhuma. Não tem que manter nada. Tá muito bom até o 5. Tá muito bom até o 5. Depois ele fica tentando manter o estado. E aí ele perde bateria. Bom, nem todo mundo carrega um reator no criado. Pensa assim, tá? Esse algoritmo é muito bom, cara. Eu acho que vale um TCC. Se você quer fazer um TCC comigo, tá? Se você quer fazer um TCC comigo, eu faria roteadores de banda de dados distribuídos. Eu vou repetir. Roteador de banco de dados distribuído. Cara, me procura. Até o próximo vídeo. Até mais. Tchau.