Tópicos
Introdução
Multicast surge da necessidade de colmatar os problemas existentes em comunicações exclusivamente via unicast. Neste tipo de aplicações é criado um fluxo de dados novo por cada nó que requisita informação a um outro. Desta forma, estamos não só a enviar cópias idênticas da mesma informação, como também a aumentar linearmente em relação ao número de nós solicitantes, a sobrecarga imposta num dado nó.
Assim, o objetivo passará por enviar uma e uma só cópia de uma dada informação para um grupo de destinatários, identificados por um endereço multicast.
IGMP
Este protocolo serve para descobrir quais os interessados em receber uma dada informação. Existem diversos tipos deste protocolo, mas o IGMP usa-se ao nível do IP (IPv4).
Processo
- Host interessado em entrar num determinado grupo envia um pacote do tipo
IGMP Report
, não solicitado, para aquele grupo - O router de acesso recebe o pacote e utiliza um qualquer protocolo de routing multicast (opt-in ou opt-out) para efetivamente entrar no grupo
- Periodicamente, um dado router (o querier) difunde um pacote do tipo
IGMP Query
como forma de saber quais os grupos a que os hosts estão subscritos - Neste caso, o host responde com uma mensagem, também do tipo
IGMP Report
, mas solicitada, indicando de que grupos faz parte - Se um router não receber um pacote de report para um grupo particular num dado período de tempo, é assumido que não existem mais membros nesse grupo e remove-se do grupo
No caso do IGMPv2 é introduzido um novo pacote do tipo IGMP Leave
, que indica a saída de um host do grupo.
Ainda, para evitar que a rede seja congestionada pelas respostas enviados pelos hosts ao querier, cada host envia a sua resposta após um dado intervalo de tempo aleatório. Caso o router já tenha recebido outras respostas de um dado grupo, ignora as próximas desse mesmo grupo.
Este protocolo é apenas utilizado na LAN entre os hosts e o router de acesso. As restantes comunicações são efetuadas através do protocolo de multicast routing.
Multicast Routing
O grande desafio em grupos multicast é o estabelecimento, preferencialmente eficiente, de routing entre os diferentes membros do grupo. Para tal, dever-se-á construir uma (ou várias) árvore de distribuição.
Existem diferentes tipos de protocolos para o efeito:
- Opt-in: onde a construção da árvore é dada consoante a entrada de clientes
- Opt-out (flood): onde se assume que todos os nós estão dentro de um determinado grupo. Caso não seja o caso, retiram-se da árvore
A grande vantagem de utilizar protocolos opt-in em relação a opt-out, é que a árvore de distribuição apenas existirá quando existem interessados.
Existem, também, diferentes tipos de árvores.
Source-based
- Uma árvore separada para cada fonte, daquele grupo, interessada em enviar informação
- Estas árvores pecam em termos de escalar para várias fontes
Shared
- Uma única árvore para todas as fontes que enviem informação, com raíz num ponto selecionado (normalmente, um RP)
- Neste caso, existe a necessidade de um mecanismo adicional capaz de transporte a informação entre as fontes e o RP
- No entanto, iremos estar perante uma árvore menos eficiente
- Quando se quer entrar numa árvore deste tipo não é necessário especificar a source, a mensagem será do tipo
(*, G)
PIM-S(parse)M
Este protocolo é do tipo opt-in, ou seja, são os routers que anuncia o interesse em participar no grupo. Pode tanto utilizar árvores source-based como shared. É melhor para o caso de redes grandes e dispersas.
No caso de árvores source-based, a raíz está no router que quer aceder ao grupo. No entanto, inicialmente obtemos uma configuração baseada em árvores shared e, eventualmente, convergimos para árvores mais eficientes e source-based.
No caso das árvores shared, o pacote PIM Join
é enviado para o RP, que trata de acomodar a entrada do nó na árvore. Futuramente, todos os pacotes difundidos passam sempre primeiro pelo RP, que depois trata de difundir na dita árvore.
A troca de mensagens entre as fontes e o PIM é feita através de um pacote multicast encapsulado num unicast. A conversão para multicast é, depois, feita pelo próprio RP.
PIM-D(ense)M
Este protocolo é do tipo opt-out e utiliza árvores source-based. É melhor para o caso de redes pequenas e densas. Isto pois, existe uma percentagem maior de routers interessados e próximos. A vantagem de utilizar árvores source-based (visto que os caminhos serão reduzidos) supera a de utilizar árvores shared.
A informação é enviada, inicialmente, para todos os participantes do grupo. Depois, os não interessados envia uma mensagem de prune PIM Prune
para se retirarem do grupo. Futuramente, o router pode enviar uma mensagem do tipo PIM Graft
para reentrar no grupo.
Uma vez que o tráfego parte, ativamente, dos routers interessados a construção das árvores source-based é trivial.
Upstream Router
O upstream router é responsável por encaminhar o tráfego multicast “para baixo” na árvore. Em cada router existirá, portanto, um vizinho com esta denominação. Este, será utilizado também para o envio de mensagens de controlo (join, prune, etc).
Os routers fazem uso do protocolo RPF (Reverse Path Forwarding), que se baseia no simples princípio de que o tráfego deve chegar pela interface que leva de volta à fonte (ou RP, no caso de shared trees) de forma otimizada. Basicamente, faz-se uma junção entre as tabelas unicast já existentes e este novo protocolo.
Para evitar loops e pacotes duplicados, o protocolo descarta pacotes multicast que não seja originários da interface elegida.
Questões
1. O serviço multicast, seja a nível aplicacional ou a nível de rede, assenta em infraestruturas virtuais de entrega, designadas por árvores de distribuição. Tipicamente estas árvores podem ser: (i) construídas por fonte ativa ou (ii) partilhadas.
a. Explique em que se diferenciam ambos os modelos, salientando o papel das principais entidades envolvidas.
Num modelo em que a construção é feita por fonte ativa (árvores source-based) existe uma árvore por cada fonte que quer enviar informação para o grupo, enraizada na própria fonte.
Por outro lado, num modelo em que existe uma árvore partilhada, todos os interessados se encontram na mesma árvore. Desta vez, a mesma está enraizada no que chamamos de um RP, contactado sempre pelas fontes que querem enviar informação.
b. Explique o processo de construção das árvores do tipo (i) e do tipo (ii).
No caso do tipo (i) a construção é feita mediante uma fonte esteja interessada em enviar informação. Os restantes detalhes dizem respeito ao tipo de princípio utilizado pelo protocolo em questão: opt-in ou opt-out.
Já no caso do tipo (ii) a construção é feita sempre enraizando a árvore num RP. Este RP é contactado pelos routers interessados em enviar informação, através de um pacote multicast encapsulado em unicast. O RP trata de fazer a construção correta da árvore e de encaminhar futuros pacotes, pela mesma, via multicast. Além disso, é possível que a rede possa migrar para árvores source-based depois de uma boa árvore shared estabelecida. Isto acontece, principalmente, no caso de protocolos baseados no princípio de opt-in.
Em ambas as estratégias é usado o protocolo RPF para descobrir qual o upstream router. O upstream router é simplesmente o router mais próximo da fonte da árvore (fonte ativa no caso de árvores source-based e RP no caso de árvores shared), para onde o router atual deverá enviar tanto os pacotes multicast, como os pacotes de controlo.
c. Enuncie vantagens e desvantagens de cada modelo em termos de desempenho.
Em termos de complexidade algorítmica e convergência, a utilização de árvores shared prova-se mais útil, pela sua simplicidade em termos de contactar simplesmente um RP. No entanto, árvores source-based irão oferecer, naturalmente, rotas mais diretas e eficientes entre a fonte e os destinatários.
2. O protocolo PIM (Protocol Independent Multicast) permite criar suporte para encaminhamento multicast ao nível de rede. Por que razão o protocolo PIM contempla (e implementa) dois modos de operação distintos, o PIM-SM (Sparse Mode) e o PIM-DM (Dense Mode)? Dê exemplos práticos em que se justifica a utilização de uma ou outra versão do protocolo.
O primeiro modo de operação (sparse) é, normalmente, utilizado em redes maiores e mais dispersas. Este protocolo utiliza o princípio de opt-in, baseado no facto de serem as fontes ativas a a anunciarem que querem enviar informação. No entanto, o mesmo opera tanto com árvores shared (inicialmente), como source-based (após otimização e convergência). Esta flexibilidade deste modo aliada ao facto de seguir um padrão opt-in, ajuda imenso em redes com muitos routers, onde não se estima bem qual a percentagem de membros do grupo.
De outra forma, o segundo modo de operação (dense) é, normalmente, utilizado em redes mais pequena e densas. Redes onde existe uma maior percentagem de membros do grupo. Este protocolo utiliza o princípio opt-out, baseado no facto de ser cada fonte ativa a responsável por difundir uma mensagem com o objetivo de perceber quais os routers interessados. Como já explicado anteriormente, os não interessados retiram-se da árvore, realizando um prune. Desta forma, este modo permite exclusivamente o uso de árvores source-based.
3. O protocolo PIM-SM (Protocol Independent Multicast Sparse mode) geralmente utiliza uma árvore partilhada (shared tree) para criar suporte para encaminhamento multicast ao nível de rede e para isto utiliza uma rede overlay. Esta afirmação é verdadeira? Responda e justifique a sua resposta.
A afirmação é falsa, precisando de algumas clarificações. De facto, este modo de operação começa, geralmente, com uma árvore do tipo shared, enraizada num RP. Progredindo, posteriormente e mediante necessidade, para várias árvores source-based, enraizadas em cada uma das fontes ativas. Ou seja, este não depende exclusivamente de árvores shared.
Já em relação à menção da rede overlay, nem este nem qualquer protocolo de multicast routing fazem uso de redes overlay. Isto pois, todos operam ao nível dos routers (IP). Redes overlay seriam consideradas redes over-the-top, criadas e geridas ao nível da camada de transporte, por exemplo.