Bem-vindos alunos ao curso de redes de computadores. Meu nome é Elton. Nesta aula, eu vou falar sobre protocolos que compreendem a colisão. Então nós estamos aqui no capítulo de subcamada MAC, já estamos vendo aqui a raiz disso tudo. Já falamos então lá na Universidade do Avaí, o que ela desenvolveu. Falei sobre dois algoritmos, vejo os vídeos anteriores desta aula. E agora nós vamos compreendendo que a colisão é inevitável, vamos tentar agora colocar protocolos e algoritmos para poder conseguir minimizar os impactos. Lembrando, vamos a uma vinheta? Antes de iniciar, inscreva-se no nosso canal, ative o sininho, curta e compartilhe este vídeo. Legal, né? Exatamente, estamos sempre que valorizar, nunca deixe de marcar no sininho, é importante. Então nós vamos falar sobre protocolos de acesso múltiplo, porque estamos falando de broadcast, então veja lá na primeira parte, eu estou falando de acesso múltiplo, broadcast, uma detecção de portadora, o que é portadora? Portadora é o sinal, a verdade a onda ela tem uma portadora de dados, eu consigo transmitir dados nela, então eu estou analisando broadcast com detecção de portadora. Lembrando que broadcast não quer dizer rádio frequência, você tem que estar atento que broadcast pode ser feito em cabo metálico, então você tem que compreender isso, não é só wi-fi, vai que você trombe então por exemplo uma questão onde você tem um barramento de computadores, né? Se eu transmito sem compreender as outras estações, ou seja, os outros equipamentos que estão comigo nesse meio é natural, então que haja colisões. Parto do pressuposto que se eu não olhar para o lado, se eu não compreender se já tem alguém escrevendo no canal, eu simplesmente sair escrevendo eu tenho então mais colisões, eu tenho mais problemas. E isso nós vamos dizer que será a nossa detecção de portadora, ou detecção de sinal. É possível então escutar o canal, compreender se o canal está em uso. Veja nos dois algoritmos anteriores feitos lá no Avaí, ele mandava um quadro pelo UP, lembra? No Avaí eles tinham um canal de só de UP, onde todas as estações mandavam sinais para a base e o DAO, onde todas as estações ficavam ouvindo o que a base falava. Então uma estação subia um quadro de dados, falava A, e depois ela ficava escutando porque a estação base recebia e devolvia para as outras estações clientes. Então era só eu escrever e ficar ouvindo se deu tudo certo. E se não deu eu escrevo de novo. Então eles tinham dois canais, mas veja, eles escutam, escutam, mas eles escutam após o envio. É possível então se escutar antes, se tentar detectar a portadora antes de escrever. Ok, olha só, isso ainda não resolve todo o problema. Você tem que ver que vamos imaginar um computador trabalhando em 10 ns, eu tenho um cabo com axial de 98 metros, no qual eu tenho 100 ns para o sinal correr de uma ponta outra, se eu tenho dois computadores, um em cada ponta, é natural que se elas estão trabalhando em 10 ns, ele escute o canal, veja que não há ninguém escrevendo, ele está numa ponta. Só que alguns nanosegundos antes, alguns nanosegundos antes, a estação na outra ponta já começou a escrever, é que o sinal não percorreu todo meio ainda, digamos, já percorreu 10% e vamos colocar assim, mas não chegou e aí eu escuto, não ouço nada e eu transmito. Então compreender se o sinal está no canal, também tem que ser levado em consideração o tempo de propagação, CSMA1 persistente. Fomos agora compreender um primeiro algoritmo que tenta compreender a colisão e trabalhar com colisão. Quando uma estação tem dados a transmitir, primeiro ela escuta o canal, legal, detecção de portadora, para ver se mais alguém está transmitindo no momento. Estou levando em consideração que não há o problema de propagação do sinal físico no meio. Vamos lá, se o canal estiver desocupado, então a estação envia. Olha, preste atenção, CSMA1, esse 1 quer dizer 100% persistente no canal e, naturalmente, ele acredita que o canal está livre. Ele não leva em consideração o número de equipamentos que eu tenho no canal. Caso contrário, ou seja, caso ele escute o canal e ouça um sinal, uma portadora, então se o canal estiver ocupado, a estação espera até que ele fique desocupado. Então transmite. Aqui eu tenho um problema, agora você vai entender o porquê que é a palavra persistente. Aqui ele vai ficar em um aço de repetição contínuo, olhando o canal, esperando o término da transmissão de outra máquina. Agora, imagina, se eu tenho um quadro muito grande que está sendo enviado, que demora muito, eu tenho um monte de máquinas, naturalmente, eu tenho um monte de máquinas chegando ao ponto de olhar o canal e ver que já a transmissão e todas estas máquinas acabam se bloqueando ali num laço de repetição infinito ouvindo o canal. Mas quando esse quadro que está sendo transmitido terminar, todas elas vão tentar lutar pelo meio logo em seguida. A verá o que? Muitas colisões. Porque se eu tenho um tempo de propagação do meio, elas vão escutar, não vão ver que a outra já começou a 1 ou 2, 3 nanosegundos atrás, não deu tempo ainda de chegar ao sinal até elas, 3, 4 nanosegundos, adivinha, todas começam a escrever. E agora eu tenho todas entrando em colisão. Só que ela escreve a, manda para o quadro para a estação, lá em Alorra, e depois ele escuta. O que ele faz agora? Ele começa a escrever e começa a ouvir. Se ele escreveu 1, ele ouve 1. Se ele escreveu 0, ele ouve 0. Se ele escreveu 0, ele ouve 1. Colisão. Colisão. Está entendendo? Então agora ele acompanha o canal. Ele não só escreve no canal, mas ele ouve o canal e ele ouve ele mesmo. Então é natural, né? Ele detecta a colisão na hora. Então eu tenho ali vários nanosegundos em que vai haver, todos eles vão começar a escrever. Aí logo logo ele se percebe e todo mundo para. E vem e consegue o canal e manda um quadro. Agora vamos imaginar que o quadro é bem pequenininho. Vamos voltar ao nosso exemplo. Vamos imaginar que esse quadro tão pequenininho está sendo transmitido. Eu entro, eu escuto, já tem uma transmissão. Eu paro, eu me bloqueio. Em poucos laços bloqueados, o canal está liberado. Então eu tenho menos máquinas bloqueadas naquela barreira. Vamos chamar de barreira, que é o momento em que alguma está transmitindo. Vamos chamar de barreira. Eu tenho ali um tempo curto. Por ter um tempo curto, eu tenho menos máquinas chegando na barreira. Então naturalmente eu tenho menor disputa logo em seguida. Ok? Múltiplos equipamentos, então eles esperam o termo da comunicação. É um grande problema que já ocorre. Já as comunicações estão, a comunicação está ocorrendo. Então começam a transmitir logo em seguida. E aí um monte de colisão. Equipamentos possuem um slot de tempo inferior ao da detecção de portador. Isso é um grande problema. Os computadores operando em nanosegundos, nanosegundos e o meio físico lá operando lá em uma centena de nanosegundos ou até em milissegundos, microsegundos. Então eu tenho meios ali que são lentos. Imagine ali um sinal sendo enviado por cabo por 10 km. Segundo o I3E, para percorrer 10 km no cabo coaxial, eu preciso de quatro sações repetidoras que já possuem um tempo de replicação do sinal, como de propagação em vários pedaços até chegar lá na outra ponta. Veja que pode se demorar muito. E naturalmente eu tenho que levar em consideração que os computadores operam em um ciclo muito mais rápido do que os tempos dos meios. Gigabit Ethernet é um nanosegundo, o cabo tem que bater um nanosegundo. Vamos lá. Pensando então na persistência das estações pelo canal, é melhor trabalhar com quadros pequenos ou grandes? Eu já comentei então. Volte, refita, pense bem. Quadros grandes ou quadros pequenos. CCMA não persistente. Menos ávido pelo canal, o CCMA não persistente escuta o canal e tendo uma portadora, em vez de entrar num laço de repetição como persistente, ele gera um tempo aleatório e vai dormir. Volte então no material, se você não sabe o problema do produtor e do consumidor, volte então lá no material de sistemas operacionais modernos, volte lá quando ele fala de processos e multiprocessamento e tenta compreender o problema do produtor e do consumidor. Tem uma playlist completa aí. O fato dele dormir não fica o tempo inteiro no canal, ou seja, então se eu tenho cinco máquinas chegando e já tenho uma transmitindo, a cinco pegam números aleatórios e vão dormir. Naturalmente eu espero que elas acordem um tempo depois em uma sequência aleatória. E aí, naturalmente eu espero que elas encontrem um canal e uma sequência delas. Só que eu tenho um problema aí. Veja, pode ser que eu sempre acorde e já tenho alguém falando. Pode ser que eu nunca consiga transmitir nesse modelo. Peraí, por que vocês estão me dizendo que o algoritmo de Aloha tem problemas? Aí o Carvin K faz o CSMA persistente, tem problemas? Aí o não persistente também tem problemas? Exatamente. Tudo tem que casar com a sequência de dados, com a sequência de envios no canal, com número, com comportamento, tudo, tudo. Então nós estamos trabalhando no campo da probabilística, já começa por aí. Então conforme eu falei, é possível que uma estação nunca obtenha o canal, pois sempre ela está acordando e já tem alguém transmitindo ela se bloqueia. CSMA persistente, olha o que houve uma mudança. Primeiro, está sendo adicionado slot, estou colocando slot na brincadeira. Em vez de colocar um persistente, estou colocando um P persistente. Por que? Eu vou calcular uma probabilidade do canal estar livre. Qual é a probabilidade? Se estou eu e outro equipamento é de 50%. Eu e mais 2, ou seja, 3, 33.336%. Eu e mais 3, então estamos em 4. Então a probabilidade minha agora de obter o canal é de 25%. Então vamos trabalhar agora com esse algoritmo. Bom, quando está pronta para transmitir a estação escuta o canal, lembrando do problema que nós podemos ter de propagação do meio. Se ele estiver desocupado, a estação então transmite com uma probabilidade. Vai criar esse número com algum algoritmo interno dele. E a probabilidade a for alta, então haverá um adiamento do próximo slot. Então ele calcula uma probabilidade de que haja alguém falando no meio, mas ele não está escutando. E aí ele pula. É como se eu utilizasse isso aqui, calculasse uma probabilidade e achar que é alto e aí eu fico não persistente. Simplesmente eu adio meu slot. Vou para um outro slot, vou esperar. E esses slots são, eu já falei, espaços de tempo. Nós vimos inclusive da primeira parte sobre tempo contínuo e tempo segmentado. Isso aqui então ele pula o slot. Pode ser que outro equipamento então assume o slot de tempo. Esse processo se repete até que o quadro seja transmitido ou até que outra estação tenha iniciado a transmissão. Eu fico nesse processo, esse processo calculando. E aí vocês vão entender que o P persistente quando você vê um persistente aqui ele está dizendo 100% persistente. Quando ele colocar aqui por 0.5 ele está com 50% persistente no canal. Você sabia que o padrão I3C 802.11 usa uma melhoria do CSMA persistente? Peraí, nós estamos falando de algo década de 70. É isso aí, início da década de 70. Exatamente. Exatamente, no seu wifi, na sua casa uma variação do CSMA persistente. Ok? Não se esqueça de curtir, marque o sininho, corta a gente, vai lá no seu face, joga lá o nosso link, recomende para os seus colegas da faculdade o que você quer que todo mundo passe com você. Diga aí o que você precisa a mais, coloque o nome da sua faculdade, comente muito obrigado. Na próxima parte eu vou continuar falando desses algoritmos.