chegamos então ao nosso algoritmo de roteamento por multicast. Vamos aprender a criar rotas para algumas máquinas na rede apenas, mas o interessante é que nós mandamos uma única transmissão para essas máquinas. Vamos lá! Primeiro, eu vou relembrar vocês o que é o unicast. Então, em um unicast preste atenção uma máquina transmitidados para uma outra máquina, certo? Tem entre várias possibilidades. Bom, a menos que um grupo seja muito pequeno, o envio de um pacote distinto por um unicast a um receptor é dispendioso. Ou seja, imagina que eu tenho um número muito pequeno de máquinas e eu tenho que enviar. Só que um unicast para cada máquina, imagine que daqui eu tenho que mandar mensagem para três máquinas. Um unicast, dois unicast, três unicast. Quer dizer que se a mensagem é um kb, eu mando ela três vezes. Eu gasto três kb de upload. Ruim, ruim, ruim. Já o broadcast, digamos que eu tenho que alcançar as três máquinas. Mas só que se eu mando para todas e a mensagem é um kb, eu mando a mensagem de um kb de upload e chegou em todas as máquinas. Ok? Legal. Também é um um vai dispensar recursos da rede. Peraí, deixou. Move um negócio aqui. Tá atrapalhando a gravação. Tudo aqui, tudo aqui é muito simples, tudo é muito casasero. Mas tem muito conhecimento, hein? Olha só. Já um roteamento por multicast é importante. Olha que legal. O envio de uma mensagem a um desses grupos denomina-se multidifusão multicast. E seu algoritmo de roteamento é chamado roteamento por multicasting. No multicasting existe o gerenciamento de grupos e isso é o problema. A rede tem que ter a capacidade de fazer grupos em rede. Não é qualquer equipamento que faz isso. Então, primeira coisa que você tem que testar, na verdade, se você executar um IP, o adress no teu Linux vai dizer ali se é multicast sua rede. E bom, olha só, uma vez eu tinha que mandar dados para um grupo de máquinas, era multicast. A instituição tinha 500 e tantas máquinas, legal, mas eu precisava de, acho que eram 20 ou 30 alunos. E aí eu fiz um programa. Eu poderia ter colocado uma VNC, visto que era uma rede local. Mas eu pensei que era uma coisa muito simples, algo que o cara nem digita o IP. Ele simplesmente dá um duplo clique e começa a ver minha tela. E aí, eu fui, deu um pau no meu multicast, no meu código de multicast, tinha 20 ou 20 tantas linhas. Porra, deu pau. Aí ela vai eu resolver esse pau do multicast. Fui na internet pesquisar e vi um cara falando assim, olha o texto do cara, meu multicast não está funcionando, colocou o erro dele lá. Estou tentando enviar para todas as máquinas na rede. Pera aí. No multicast você não envia para todas as máquinas na rede. Você vai entender por que eu estava tentando fazer, então, aquele meu programinha, né? É deu certo, mas depois veio a pandemia, cara. A pandemia veio seis meses depois. Poxa, quando eu voltei, aí a minha instituição colocou televisão. Como assim? Eu estava à aula, sem data show, sem televisão, de programação para os alunos em 30 a 40 máquinas. Eles não viam minha tela. Olha que merda, cara. Olha que merda, cara. Eu tinha que dar aula assim. E eu dei aula assim de, porra, 2012. 2012 a 2021, praticamente. Foi 2020 quando vi aquela merda da pandemia por aí. Quando eu voltei da pandemia, já tinha televisão. Então, eu já não precisei mais do programinha. Então, eu soube para uns seis meses. Então, olha só, eu envio um k-byte da minha tela e vai só para algumas máquinas daqueles alunos que estão rodando aquele meu programa na rede. Já, outras, não. Então, no client, no client, o programa tinha que ingressar no grupo na rede de um broadcast. Cento e tantas linhas. Cento e tantas linhas. Se eu mandasse um broadcast, que é o que o cara quer, eu chegaria em 500 e tantas máquinas, desnecessariamente, sobre carregaria toda a rede, com minhas telas. Veja que o cara errou completamente a ideia do que que é multicast, broadcast. E, naturalmente, você acha que eu corrigi ele? Eu falei, meu amigo, que eu acho que o erro é fácil de corrigir, só não sei te falar. É, cara, deixa o cara continuar na errata dele, deixa o cara continuar. Ele errou no conceito, porra. Multicast é um grupo seleto de máquinas. Broadcast são todas, e ele queria todas. O código para fazer um broadcast não dá 20 linhas. Um código para fazer multicast, além da rede, permitir, tem que ler isso, passa de 120 e tantas linhas. Isso porque eu tinha customizado já. Deixa o cara se fuder. Ó, você tem que aprender. Você tem que aprender. O cara quer se fuder, deixa ele se fuder. Não quer ler um livro, não leia o livro, mas também não vem me perguntar. Há muito tempo atrás, eu era tido até como um professor onde eu trabalhava, como programador, que eu ensinava as coisas. Mas eu reparei que o pessoal era preguiçoso até para pesquisar, meu. Quanto mais ler um livro, complicado. Ah, cara, eu acho que hoje seria um profissional diferente. Eu mandaria todo mundo se fuder, cara. Foi mal, não faço isso que eu estou falando, hoje eu estou meio nervoso. E existem vários métodos que podem ser usados para você fazer uma Spanish Tripodada. Como assim uma Spanish Tripodada? Olha só, eu vou voltar, tá? Imagina que eu tenho em A o gráfico da rede. Um, eu tenho todos os nós que pertencem ao grupo número dois. E eu tenho dois aqui em todos os nós que estão no grupo de trabalho dois. E um eu tenho todos os nós aqui que estão no grupo de trabalho um. Entenderam? E isso é a montagem da rede. A rede tem que ser capaz de registrar quais máquinas estão em tal número do grupo de trabalho que vão receber o multicasting. Entenderam? A Spanish Trip é isso aqui, ó. Isso é uma Spanish Trip. Tá? Você pode aos caminhos redundantes. Para daqui, para cá, para cá é redundante, olha só. Tem esse caminho aqui. Então corta-se, poda-se esse caminho, apodou o caminho. Legal? Já falei, né, sobre o algoritmos, principalmente grafos, matrís, para resolver esse problema. Depois você faz uma segunda podagem, que essa podagem aqui é para você eliminar routers desnecessários. Então fica só os routers necessários para os grupos que ele ou seja para o multicasting. O mais simples pode ser usado se um roteamento de estado de enlace for empregado. Lembra que o roteamento de estado de enlace, ele conhece a topologia da rede? Então ele poderia, naturalmente, conhecendo esse, essa topologia do gráfico, ele poderia naturalmente fazer essa poda que eu acabei de mostrar para vocês. Quais routers pertencem a quais grupos? E por quais routers eu tenho que mandar uma mensagem para tal grupo? E aí, o OSPF vai ser modificado. O OSPF é um algoritmo do estado de enlace, mas ele pode ser alterado com um M de multicasting. Então o multicasting OSPF foi proposto em 1994, porra, só para vocês terem a noção, eu entrei na universidade em 1997. Olha só, como que as teorias de rede de computadores são modernas, né? E só para vocês terem a noção, quando eu fiz o meu curso de química na universidade, em 1998, 1997, foi no segundo ano, foi no segundo ano, 1998, eu usei uma teoria muito recente na química da década de 70. E nossa, eu estou feliz. Agora rede de computadores, você pode ver todas essas teorias, esses algoritmos, é 80, 90. Você vive em uma área muito viva, meu coleguinha, eu não vou deixar de dar um errado. Você vive em uma área do conhecimento muito viva ainda, não tá tão consolidada assim. Um campo enorme para um mestrado, doutorado, principalmente em rede de computadores. Então primeiro, você monta uma espena estitura clássica, você acha as melhores rotas para todos os roteadores. Legal, tá aqui. Depois você passa por um algoritmo e poda pela segunda vez. Só que dessa vez você poda por os routers desnecessários. Olha só, se eu quisesse mandar uma mensagem daqui para um, viria para cá, para cá, legal. Para cá, legal. Para cá, não precisa. Veja que ele podou. Ah, ó, podou. Legal, eu não coloquei a prática. Agora eu vi que eu não coloquei a prática. Que prática, eu vou querer que os caras fazem isso para mim e ser mais mais porra. Então faz uma segunda podagem. Então, aluno, já estou te explicando algoritmo que você vai fazer. Eu vou fazer isso feito para mim. Tô cagando. Eu quero ser mais mais. Ó, filho, seguinte, vou ter por exercício, depois não coloquei, ó. Vou colocar. Agora eu estou vendo aqui. Você vai fazer a poda clássica, você vai fazer um grafo por matriz. Bidirecional, de arestas não ponderadas. E aí, você vai matar as redundâncias. Matou as redundâncias, coloque um label em cada roteador. O label é o nome. O nome que você quiser. A, B, C, D, por exemplo. E aí, eu quero que você pegue esse grafo e você pode ele, faça a primeira podagem, de caminhos desnecessários. Transforma o grafo numa árvore. Depois, eu quero que você faça um segundo grafo. Ah, agora olha que interessante, hein. O teu nó, o teu nó vai ter que ter um valor. Na verdade, um arrei de valor, né? O teu arrei de valores, meu coleguinha. Então, você faz uma poda pros, pros routers, mantendo a melhor rota. Depois, pelo valor do router, você vai montar uma segunda poda. Caraca, esse algoritmo é gostoso, hein. Com certeza, vou cobrar isso numa prova. Com certeza. Se você quiser saber mais, tem lá o local de estrutura de dados. Tá em Java, mas, em C++ é muito parecido. Então, você faria a segunda poda, mas não pela aresta, mas pelo que tem no arrei de valores dentro do router. Então, eu mandaria fazer, montar a árvore de multicast e eu passaria esse valor 1. E aí ele me retornaria uma árvore que seria uma cópia da matriz, podada agora, com todas as rotas que chegam a uma partir daquele ponto inicial. Porra, eu quero isso, eu quero isso, eu quero isso. Eu tô começando a colocar código pros caras pra ver se os caras acordam na minha aula, mano. Porra, os caras passam quatro horas dormindo lá na minha aula, lá na... Ah, eu quero fazer aula com você, eu faço faculdade de você da aula. Aí, chega lá, fica dormindo na porra da minha aula. É, o código precisa se fedar, eu quero ver. Um projeto alternativo utiliza árvores baseadas em núcleo. Olha, isso aqui é interessante. É calculada uma Spanish Trip por grupo também, tá? Mas olha só, vamos eleger uma raiz. Galera, eu tô tossindo bastante, tá? Então, todo o roteador, todos os roteadores elegem um grupo de routers, elegem um router, um principal. E a mensagem é enviada pra raiz. Então, a raiz dispara para o grupo multicast. Então, olha só, imagine que eu estava de um grupo multicast, igual foi aqui, tá? Mas só que em vez de eu ter uma árvore dessa, pra cada router, pra cada router ter uma árvore dessa, ó, tem essa aqui, é pra esse router. Então, eu teria que montar em todos os routers. Aqui eu teria um router núcleo. E aí as mensagens são enviadas pra ele e ele mandaria as mensagens para os transmissores. Pra onde vai? Entendeu? Então, tem que chegar até o núcleo e do núcleo, então ele transmite pro resto. É o segundo algoritmo. Não sei se eu peço os caras pra fazer isso não. Não sei não. Pô, cara, eu acho que eu vou pedir. Eu quero um desse, hein? Eu quero um desse e ser mais mais. Vou pôr na prova. Eu quero ver se eles vão se lascar, tudinho. Por esse motivo, essa abordagem compartilhada com as árvores baseadas em núcleos são usadas em multicast para grandes espaços na internet. Porque, imagine, eu imagino toda uma grande rede de routadores pelo mundo numa grande multicast. Acontece que a distância geográfica deles é, pô, vai deixar a latência muito alta. Então, é muito difícil você montar esses grupos de multicast com essas latências altas. Você tendo um núcleo e desse núcleo no próximo, você tendo a Spanish Tree do grupo é muito mais eficiente. Muito mais eficiente do que isso que, inclusive, quando nós falamos de grandes redes mundiais interconectadas de longa distância de alta latência, que pode ter até satélite envolvido nessa história. Legal, então eu quero isso. Eu quero esse código aqui e eu quero esse código aqui. Legal. Próximo vídeo, vou falar sobre o roteamento ncast. Esse roteamento aqui, a galera costuma errar pra caramba na prova. Gostouzinho, gostouzinho. Até mais, tchau!