Controle de congestionamento em Redes de Computadores
Aula 51 · Redes Teórico
Transcrição do áudio
Então uma rede de computadores, então vamos desenhar, é um grafo, então ela é assim. Eu estou com um problema de mouse, cara, eu estou com dois mouse com problema, eu clico e parece que o mouse não responde. Só que como eu estou com dois mouse com problema, então estou começando a achar que sou eu. O LD é frio, hein? É coleguinha. Então eu tenho aqui quatro roteadores e eu tenho aqui a rota de um para dois, certo? Legal. Então em um dado momento, essa aqui é a melhor rota, certo? Porque foi definido, foi definido devido a dados da própria topologia. Vamos colocar assim. Legal. Tive que decidir essa é a melhor rota. Aí eu te falo uma coisa. É natural que ao eu utilizar essa rota para transmitir meu DVD da Shakira, que essa rota vai ficar ruim para caramba. Lógico. Não que a Shakira seja ruim. Você não pode ter pirataria, porra. Não pode carregar esse negócio aí, não, caramba. Muito menos o PDF do Turnable. Então digamos que eu estou transmitindo ali e essa rede fica naquele caminho uma bosta. Digamos que daqui 45 segundos seja recalculado uma melhor rota e aí de repente a melhor rota é por aqui, certo? A melhor rota é por esse caminho aqui. Então veja que imagine que, imagine que se fosse possível você acender uma lâmpada. Opa! Aqui está engarrafado. E aí a comunicação passa por baixo. Aí a comunicação passa por baixo. Aí lá em cima fica bom e aqui em cima fica ruim. Agora aqui está engarrafado e aí daqui a pouco aqui está engarrafado. Aí daqui a pouco aqui está engarrafado. Aí daqui a pouco aqui está engarrafado. Está entendendo como é que é? A rede não tem estabilidade. Então vamos lá. E isso, naturalmente, é um problema e não temos o que fazer. O que, talasqueira? O problema do gordo é ele comer. Pô, eu jurava que eu salvei esse slide, cara. Eu salvei esse slide lá na outra ponta. Peraí. Aqui falando que eu salvei esse slide. Provendo o gordo é comida, cara. Eu preciso de parar de comer, cara. Então o congestionamento. Quando há pacotes demais, presente em um caminho, uma rede, um router, isso pode causar, então, atraso na entrega dos pacotes. E naturalmente, se aqui eu estou passando pelo melhor caminho, quer dizer que peste atenção, coleguinha. O melhor caminho nem sempre vai ser o melhor caminho para sempre, certo? Relacionamentos terminam. Então vamos lá. Então, é natural que eu tenha uma peda que prejudica o desempenho naturalmente, uma perda de tempo. Porque o caminho passa a ficar congestionado. Pelo fato do caminho ser o melhor caminho, ele vai ser congestionado. Essa é a ideia. E o modo mais eficiente de controlar congestionamento seria, então, reduzir a carga. A carga de transporte, certo? Qual é o problema? Nós estamos na camada 3. A camada 3 não controla a camada 4. Muito pelo contrário. Parâmetros colocados na camada 4 vão informar a camada 3 o comportamento dela. Por exemplo, vamos pensar assim, vamos transportar algo por o DP para utilizar datagrama na camada 3. Então veja que da camada 4 nós impactamos a camada 3. Legal? Bom, beleza. Então isso é um problema. Veja, veja. Há um momento em que eu poderia ser previsto o congestionamento. Esse é o momento. Só que, cara, muito complicado. Aqui eu tenho a capacidade de carga da rede. Se eu continuar crescendo a essa taxa, eu vou naturalmente extrapolar essa capacidade de ir da rede, certo? O ideal que eu fizesse isso aqui. Como assim? Que eu detectasse a possibilidade de um possível... possibilidade de um possível... para você ter o noção como é que inserta esse papo. Pertreta que tá... um possível... possível... possível com o congestionamento futuro. Então eu começar a mudar alguma estratégia. Alguma estratégia muda ali. Então eu vou chegar ao máximo, mas eu não vou passar a capacidade máxima da rede. Como assim? Olha que interessante. Se você falar para o seu chefe que você tá usando 4% do servidor que ele contratou... cara, você tem que ser demitido. Se você chegar lá falando que você tá usando apenas 50% do servidor que seu chefe contratou... eu ainda acho que você tem que ser demitido. Mas se você chegar lá falando, olha, estou utilizando 99% do servidor... tá batendo na tampa da privada, tá lá... o sabonete caiu na tampa da privada e ficou... porra, cenário ideal! Não foi puxão, então você não tem que se agachar nem caiu dentro do vaso. De você ter que enfiar a mão. Beleza? Era seu último sabonete, coleguinha. Espero que você esteja sozinho no banheiro. Então o seguinte, preste atenção. Você tem que chegar nesse ponto, o que é muito difícil. Muito difícil. Por que você tem que ser mandado embora? Se o seu chefe paga milhares de dólares por... falei milhões não, milhares de dólares por uma infraestrutura. E você só usa 4%... pense assim, digamos que ele gastou 10 mil dólares e você tá usando o que? 4% quanto é 4%? 4% de 10. Pense aí. Então olha o que ele tá jogando fora. Por isso que muitas nuvens, muitas clouds, retorna o parte do que você não usou. Porque é muito difícil você definir esse limite aqui. E muito difícil também trabalhar próximo do limite aqui. Bom, a merda é, se você não controla nada e você deixa a merda acontecer, então a queda de desempenho é brutal. E aí novamente você vai acabar tendo um colapso na rede. Beleza? A menos que a rede seja bem projetada, ela pode experimentar um colapso. E o controle de congestionamento pode ser feito. Assim como o controle do fluxo pode ser feito. Controle de congestionamento, controle de fluxo são diferentes. Olha, congestionamento. Na garantia de que a rede é capaz de transportar o que é oferecido. Então quando uma empresa fala que vai trabalhar no controle de congestionamento, ela vai oferecer toda a infraestrutura e parque para controlar caso aconteça o congestionamento. Agora caso contrário, a empresa vira e fale. Controle de fluxo. Então nós vamos tentar, como eu posso, regular o envio. Naturalmente quando eu regulo o envio, eu regulo o feedback de retorno. É automático. Para que, naturalmente, nós vamos, naturalmente, reduzir o congestionamento. Nós vamos segurar. Segurar um pouco. Não sei se vocês pegam o trem, CPTM. Eu acho horrível, escroto pra caramba. Na estação da luz, por exemplo, quando o horário de pico, antes da escada, eles fecham. Deixa só uma passagem desestreita. Sabe para quê? Para regular o fluxo lá embaixo nas catraca. Porque a catraca é mal posicionada. Que coisa escrota, né? Dá para você, naturalmente, fazer um controle do fluxo. Bom, isso é escroto pra caramba. Vamos lá. Bom, provisionamento de rede. É preventivo. Corte de carga. É rápido, mas é reativo. Ou seja, se você chegou no corte de carga, a merda já... ...degringolou, já deu merda. Controle de carga, entraria aqui. Você pode utilizar muitas abordagens. Você pode tentar uma abordagem preventiva e você pode tentar uma do tipo... ...deu merda. Vamos, então, ser reativa. Controle de tráfego. Controle de tráfego para controlar o que passa e o que não passa. Controle de acesso é intermediário entre preventivo e reativo. Roteamento com conhecimento de tráfego e, naturalmente, vai ficando mais caro. Nós podemos usar técnicas. Nós temos técnicas para isso. Provisionamento. Então, digamos que eu possa escalonar a minha infraestrutura simples. Então, seria um provisionamento. Digamos que eu tivesse equipamentos redundantes. Seria um provisionamento. E aí eu tenho problemas. Qual o problema? Lembra que eu falei do chefe demitir você? Se você não usa tudo? Então. Você acha que de dia, no Brasil, tem mais ou menos tráfego? Tráfego é uma coisa. Vamos falar de tráfego, não. Tráfego. Tarde noite. Por exemplo. Você acha que é igual? Você acha que, por exemplo, uma da madrugada comparado com quatro da tarde. A taxa no Brasil de transmissão é a mesma? Não, né? Então, provisionamento se torna caro quando eu tenho esse momento em que eu não tenho uso contínuo. Porque eu não tenho esse excesso de transmissão. Então, ele passa a virar um problema financeiro. Roteamento com conhecimento do tráfego. Imagina que eu pudesse. É tráfego. Não é tráfego, não, tá? Do tráfego. Então, imagina que eu pudesse, então. Por exemplo, sabendo que vai ser feito uma comunicação por essa rede, eu posso, naturalmente, criar novas rotas. Isso é interessante. Controle de acesso e controle de carga. Então, vamos lá. Eu tenho alguns problemas, tá? Se eu fosse fazer... Olha só. Se eu fosse fazer um controle de tudo o tráfego aqui, certo? Uma previsibilidade, por exemplo. Então, eu tenho um grande problema que momentaneamente eu posso dizer que tanto de C e F está para ser congestionado, tanto quanto E para I, também está para ser congestionado. E aí, eu caio num problema que roteamento com conhecimento do tráfego pode ser um problema. Porque não tem nenhuma rota, cara. E aí? E outra coisa, essa decisão ela pode estar sendo tomada de forma distribuída. O que é pior ainda. Eu tenho alguns problemas, tá? Eu vou te falar. Nada disso aqui é perfeito. Eu acho massa o tráfego. O tráfego, ele, desde o começo, ele coloca um problema, aí ele coloca soluções. Coloca o problema, coloca soluções. Ele nem dá tempo de você descansar, certo? Mas ele não fala, poxa, essa é a solução. Ideal. Porque sempre tem os problemas, né? Por exemplo, o melhor de tudo que seria o preventivo, né? Seria que o provisionamento e roteamento de conhecimento de tráfego. Veja, o outro é medico conhecimento de tráfego? Eu posso ter duas rotas? Duas rotas serem ruins. E aí o processo de tomada de decisão por qual caminho se torna prejudicado. Eu tenho um controle de admissão, né? Que é a outra técnica, que é o controle de acesso, tá? Aqui, controle de acesso, olha só. Então, imagine que de A pra B, eu tenho essa rota, certo? E aí, de repente, essa rota tem esse cara que tá congestionado, certo? Então, esse roteador aqui, que eu estou passando o mouse, ele, momentaneamente, pode esquecer a existência desse cara. Esqueceu a existência. É assim, ele esqueceu a existência, aqui o cálculo. Ele esquece que aquele cara existe, porra. Momentaneamente, né? Por isso que eu tenho que usar o aqui, o alfa aqui pra poder, olha, momentaneamente é um cálculo de momento histórico. Então, momentaneamente, eu esqueço que esse cara que existe. E digamos que esse cara aqui também tá congestionado. E eu esqueço que aquele cara que existe, então, só tem uma rota. E essa é uma única rota, é um problema agora, porque ela vai congestionar rapidinho, pense todo esse grupo de máquinas, se comunicando com esse grupo de máquinas. Então, olha só, quando A for inicializar uma nova conexão, o que é que ele faz? Eu expliquei pra vocês, circuito virtual. Então, fecha um circuito virtual, não tá transmitindo nada, tá tudo perfeito. E aí, o meu DVD da Shakira começa a ser transmitido. E aí, o passo DVD do Michael Jackson. Pirataria, crime, hein, galera. E passa o PDF do Thunderbolt. Pirataria, crime, galera. E tome, toma o arquivo. E essa rota vira uma rota ruim. Por isso que no cálculo que nós usamos, nós usamos, então, um tamanho de amostra. Tá, oh, caramba. Um tamanho de amostra daquele momento, tá. S é um período de atualização das tabelas. E nós utilizamos, então, uma constante determinada, que é o A-Roll, o A-Roll, que vai determinar ali um tempo de chamado histórico. E esse histórico, ele impacta, então, no tempo que eu vou esquecer esses caras aqui. Então, eu esqueço momentaneamente. E aí, ele vai envelhecendo essa minha decisão. É como se a minha decisão fosse envelhecendo até um ponto em que recalculo tudo. E ao recalcular tudo, adivinha, coleguinha. Aí, vem esses caras já sem congestionamento. E essa rota aqui provavelmente será esquecida. A grande chance dessa rota daqui pra cá ser esquecida. E essa rota que ser, então, a melhor. Legal? Beleza. Por isso que eu tenho esse carro. Bom, eu também tenho uma outra técnica que está aqui, mais voltada aqui pra controle do tráfego, que é esse cara aqui. Um do mais pro reactivo, que é o seguinte. Quando um pacote ele passa por algo que está congestionado, eu posso usar três técnicas. É uma técnica que usa três técnicas. Primeira, eu mando uma mensagem, tanto para o host, como para o outro host, dizendo, regula o tráfego. Que é isso aqui, ó. Pacotes reguladores. Eu posso daqui mandar um pacote pra cá e um pacote pra cá, dizendo, regula aí, regula. Opção dois, quando o meu pedacinho do DVD da Shakira está passando, o meu DVD da Shakira ganha um flag numa determinada posição do cabeçalho. E aí, ao passar pelos roteadores, então, e voltar o feedback, as duas partes são notificadas. Então, eu não crio novos pacotes. Por quê? Nessa opção de pacotes reguladores, eu vou criar um tráfego a mais. Eu vou criar mais pacotes. Nessa de notificação explícita, eu uso o próprio pacote do DVD da Shakira pra poder informar as partes, certo? E eu tenho também a possibilidade de um rupee a rupee. Então, nesse caso, vamos imaginar que eu tenho um monte de máquinas trabalhando aqui que querem se comunicar com a B. Imagine, eu criar um pacote de regulação pra cada. Então, há a possibilidade de eu criar um pacote, rupee a rupee. Como assim? Quando esse cara está congestionado, ao informar pro ar que ele está congestionado, ele já passa aqui e já notifica todos do caminho, certo? Então, B notifica todos praticamente. Desculpe, esse cara notifica todos no caminho, certo? Todos no caminho. Esse cara está congestionado, ele notifica todos no caminho, certo? Então, todo mundo vai ser notificado. Então, quando essa máquina que está aqui quer se comunicar, ela sabe que esse caminho está congestionado, porque esse cara sabe. Então, ao criar salto a salto, você vai informando toda a rede. Legal, beleza. Então, vamos lá. Não foi possível criar um provisionamento, aumentar a rede. Deu merda. Não foi possível prever o congestionamento conhecendo o tráfego. Não foi possível parar simplesmente não aceitando novas conexões. Não foi possível reduzir o tráfego. Fudeu, então, corte de carga. Vamos lá. Legal. Vamos lá. Simplesmente eu começo a foda-cilândia, aquele pacote, aquele pacote foda-cilândia, eu mando pacotes aleatoriamente pra foda-cilândia. Foda-cilândia pra lá, foda-cilândia pra cá, foda-cilândia, foda-cilândia, foda-cilândia. Entendeu? Cantei meu pacote. Foda-cilândia. Roteei ele pra foda-cilândia. Acabou, cara. Não tem pacote mais. Eu começo a destruir pacotes. Ah, muito louco, cara. Adorei isso aí. Foi mal, galera. Eu me excitei aqui. Basicamente isso, cara. E qual é o algoritmo? Bom, não é bem aleatório. Embora eu falei que é aleatório, vamos imaginar agora que é aleatório. Porque eu tenho um papo pra falar com vocês. Um papo mais sério, que tá mais pra frente nesse capítulo. E aí lá eu volto a falar sobre isso. Mas, por enquanto, vamos imaginar que é aleatório. Todo mundo foi pra foda-cilândia. Ah, por isso que eu não vendo esse curso na UDM, cara. Vou falar sobre qualidade de serviço, porque é muito difícil na camada 3, né? Qualidade na camada 1 é uma bosta, cara. Qualidade na camada 2 é menos bosta, mas é bosta. E camada 3, a qualidade também é uma bosta, cara. Eu vou explicar isso mais pra frente. Tem uma raiz. Tchau. Um chumasso livre, cara. Qualidade.