Introducao ao IP Multicast
Sobre o artigo
Este artigo foi produzido com interesse a disseminar conhecimentos sobre uma das tecnologias mais interessantes do universo IP: o Multicast!
O IP Multicast é tratado por muitos como um tema bastante complexo no ponto de vista de compreensão de seus componentes e de seu funcionamento em geral. O IP Multicast tem sofrido evoluções por muitos anos e, para que possamos discuti-las ou abordá-las em futuros artigos e vídeos aqui no BPF, compreendo ser melhor em primeiro momento explicar o IP Multicast "clássico", até mesmo porque a grande maioria das implementações desta tecnologia considera os componentes e abordagens clássicas para o multicast das redes IP.
Espero que você curta este artigo e, reforçando mais uma vez, convido-o a participar do Brasil Peering Forum! Inscreva-se em nossas listas de discussão e entre em contato conosco caso tenha interesse em contribuir com a publicação de um artigo!
Revisão dos tipos de transmissão em uma rede
Redes tradicionais de comunicação sobre o protocolo IP tem como principal interesse a relação entre duas partes interessadas em trocar dados, ou seja, um computador enviando dados para outro computador, e normalmente isto ocorre através de um mecanismo de solicitação e resposta. Nesta relação, há sempre um computador que recebe uma requisição e faz o envio da informação requisitada, ou seja, o remetente ou "sender" e outro computador, o que fez a requisição, recebendo os dados requisitados, ou seja, o destinatário ou "receiver". Mesmo nesta relação sender x receiver, os fluxos de dados são unidirecionais e os caminhos da rede sobre os quais estes pacotes percorrem podem ser simétricos ou assimétricos - isto é, os enlaces da rede na comunicação do remetente para o destinatário podem ser diferentes dos caminhos utilizados na requisição partindo do destinatário para o remetente, e isto tem a ver com o funcionamento do roteamento IP. A comunicação envolvendo dois hosts ou dois computadores é o que chamamos de transmissão unicast.
Outro tipo de transmissão envolve o envio de uma mesma informação para todos os computadores, algo que denominamos como transmissão broadcast. Em temos de aplicações e dados "úteis" numa rede nos dias atuais, praticamente não temos transmissões deste tipo (broadcast), mas, no entanto, diversos protocolos e serviços essenciais da infraestrutura IP dependem de transmissões por broadcast para operar; exemplos tais como os protocolos ARP, DHCP, e até mesmo, já que estamos num NOG que trata de assuntos de telecomunicações e provedores de acesso de Internet, de soluções de Internet banda larga com o PPPoE.
Ou seja, até então revisamos aqui as transmissões unicast e broadcast. Há um terceiro cenário aqui onde uma mesma informação deve ser recebida por apenas um grupo de partes interessadas, ou seja, computadores que explicitamente manifestaram o interesse em receber aquela informação, e não simplesmente todos os computadores. É aí que entra o IP Multicast.
O IP Multicast clássico, assim como suas extensões e evoluções, inclusive com o adventos de novas tecnologias, serviços e ferramentas, requer por parte do profissional de TI/TIC/Telecom amplos conhecimentos do funcionamento das infraestruturas de redes Ethernet e IP. Assumo aqui neste artigo que você conheça razoavelmente bem as funções executadas por roteadores e switches em uma rede, além de como funciona de fato o roteamento IP, conceitos de planos de controle e de dados, além dos protocolos específicos tradicionalmente encontrados nas infraestruturas de redes do provedor. Caso você esteja relativamente "cru" nestes temas, sugiro uma pausa na leitura deste artigo e, ao invés deste, consulte outro bom artigo do BPF para "leigos": Fundamentos de Roteamento para Provedores.
O que é o IP Multicast?
Várias definições aproximadas são possíveis para descrever o IP Multicast. No entanto, estou mais alinhado com a seguinte definição:
"O IP Multicast é uma tecnologia projetada para economizar recursos em uma rede. Dentre estes, a banda e a consequente redução dos requerimentos de capacidade e a ocupação dos enlaces (links) da rede, justamente por conta da menor exigência por banda para a viabilidade do transporte de determinadas aplicações, assim como a economia dos recursos de processamento dos elementos de rede. Em adição, o IP Multicast possibilita transmissões de aplicações importantes e que precisam de uma expedição mais rápida (menor latência fim a fim) através de uma rede." - Leonardo Furtado
O IP multicast proporciona isto pela sua capacidade de encaminhar uma mesma informação simultaneamente para diversos destinatários interessados. Ou seja, ao invés de dispararmos fluxos de tráfego independentes da mesma informação, o que seria o caso de transmissões por unicast, o IP multicast, ao invés disto, permite replicar e encaminhar um mesmo fluxo de informações para os computadores interessados. Muitas aplicações são projetadas para operar sob esta forma de transmissão, incluindo sofisticados sistemas de vídeo conferência, comunicações e colaboração corporativa, stock quote, distribuição de software, e muitos outros casos.
Conforme citado, o grande benefício do IP Multicast está na economia de recursos da infraestrutura (banda, enlaces, processamento, latência, são alguns casos). Para ilustrar isto melhor, compararemos novamente os impactos de uma transmissão de mídia por unicast e o mesmo cenário só que por multicast.
Agora imagine o seguinte cenário: um servidor de conteúdo, mídia principalmente, estrategicamente posicionado na rede para fornecer o streaming sob demanda. Se um determinado conteúdo (um canal de IPTV, com codec H.264 ou MPEG2 (H.222/H.262)) for requisitado por um assinante, um fluxo inteiro deste canal será encaminhado somente para este assinante. Cada assinante que requisitar este mesmo conteúdo receberá um fluxo completamente independente, o que claramente demonstra ineficiência do procedimento: a rede poderá ficar saturada muito facilmente em uma variedade de circunstâncias!
Quando tratando-se de eficiência para estes tipos de transmissões, o meio termo entre o unicast e o broadcast é justamente a solução por multicast. Com o multicast, o servidor envia apenas uma única cópia do pacote do fluxo para um endereço IP que representa todos os dispositivos-clientes (ex: computadores) interessados em receber aqueles pacotes deste fluxo. Ou seja, o servidor encaminha um único fluxo, o qual é mantido em toda a rede e replicado onde necessário para chegar até os dispositivos clientes. O IP Multicast é interessante também pelo fato do cliente sinalizar ou não o interesse em receber um determinado fluxo, ou seja, se o computador escutará o tráfego destinado àquele grupo multicast, e isto é uma das vantagens que a tecnologia oferece sobre a questão da economia de recursos, principalmente a banda. Portanto, as vantagens aqui incluem:
- Eficiência aprimorada: com o controle sobre o tráfego da rede, consumo dos links, e a consequente redução de recursos computacionais gerais (processamento, etc.).
- Otimização do desempenho: com a eliminação da redundância do tráfego.
- Aplicações distribuídas: viabilizando cenários e soluções de aplicações multiponto.
Desvantagens do IP Multicast
Nem tudo é perfeito nesta vida! O IP Multicast possui também algumas desvantagens as quais devem ser pensadas antes de você tomar a decisão por adotar a tecnologia:
- Mecanismo de entrega por melhor esforço ("best effort"): o IP Multicast como conhecemos é baseado no protocolo de transporte UDP. Ou seja, sem mecanismos de confiabilidade no que tange a perda de pacotes e retransmissões (que, obviamente, não são suportadas). Caso haja congestionamentos na rede, os descartes de pacotes são esperados. Deverá ser função da aplicação, e não do multicast em si, saber lidar com estas situações.
- Sem mecanismos de prevenção de congestionamentos: a ausência de mecanismos tais como o janelamento e "slow-start" do TCP pode resultar em congestionamentos de enlaces da rede. Se possível ou suportado, as próprias aplicações, e não o multicast diretamente, deverão ser capazes de identificar e prevenir estas situações de congestionamentos.
- Pacotes duplicados: alguns mecanismos do multicast podem resultar na geração de pacotes duplicados. As aplicações, no entanto, normalmente são projetadas para saberem lidar com estas situações. Há mecanismos e recursos adicionais do IP Multicast que visam suprimir ao máximo a ocorrência deste tipos de incidentes. Tecnologias mais recentes de IP Multicast são virtualmente imunes ao problema de pacotes duplicados, como é o caso do Bit Index Explicit Replication (BIER), que será tema de um artigo futuro aqui no BPF.
- Entrega de pacotes fora de ordem/sequência: principalmente em função de mudanças na topologia da rede decorrentes de alguma falha de enlace ou equipamento, ou ainda em função de um mau projeto com o roteamento unicast e multicast. As aplicações diretamente devem suportar mecanismos para lidar com este cenário.
Dissertando sobre os Componentes do IP Multicast
Antes de citar aqui os diversos componentes empregados pelas tecnologias IP Multicast, torna-se necessário citar os cenários onde os principais componentes estão associados:
Há duas situações onde o IP Multicast é empregado:
- Intradomain (Campus) Multicast
- Interdomain Multicast
A diferença primária entre os dois tipos é que o no intradomain há o envolvimento de um único sistema autônomo ou uma única entidade administrativa pelos recursos computacionais, tanto no que diz respeito aos elementos de infraestrutura propriamente ditos ("rede") quanto a distribuição do conteúdo. Já nos cenários Interdomain, há o envolvimento de outros sistemas autônomos e a origem e o destino do tráfego Multicast estão geralmente posicionados em sistemas autônomos distintos.
Protocolos de Roteamento IP Multicast
Ao longo dos anos alguns protocolos de roteamento foram produzidos para viabilizar o transporte de aplicações por Multicast. Dentre eles temos:
Distance Vector Multicast Routing Protocol (DVMRP)
O DVMRP foi especificado originalmente pelo RFC 1075 e é um protocolo bastante antigo e que apresenta muitas limitações de escalabilidade. A versão 1 do DVMRP era baseada no Truncated Reverse Path Broadcasting (TRPB) enquanto a versão 3 era baseada no Reverse Path Broadcasting (RPB). Sem entrar em miúdos acerca do DVMRP, o fato é que obviamente não é um protocolo recomendado para projetos IP Multicast para os dias atuais, especialmente por ser um protocolo do tipo Distance Vector e, dentre outras razões, por exigir um reflooding do tráfego multicast no intuito de descobrir novos hosts interessados em receber aquele conteúdo, dentre outras limitações.
Multicast OSPF (MOSPF)
O MOSPF é essencialmente uma extensão do protocolo de roteamento OSPF para acomodar o IP Multicast, e possuindo uma compatibilidade em termos de coexistência com roteadores OSPF padrão - embora o fluxo de tráfego multicast funcione apenas nos roteadores com o MOSPF habilitado. O MOSPF introduz um LSA (Type 6) para fornecer as informações necessárias para a construção topológica do multicast.