# PIM Dense Mode

Implementa RPF com _pruning_

Requer que **todos os&#x20;**_**routers**_ tenham o protocolo **ativo**

É mais simples pois:

* Não calcula tabelas de encaminhamento
* Utiliza as tabelas já criadas por qualquer outro protocolo _unicast_
* Assume que todas as rotas _point-to-point_ são simétricas

Em caso de múltiplos caminhos de custo mínimo, apenas aceitar os que correspondam a _**interface**_**&#x20;com o endereço de IP mais alto**

Tabelas de encaminhamento _unicast_ não permitem determinar para que vizinhos os pacotes devem ser encaminhado, portanto:

* Por defeito, os _routers_ encaminham os pacotes para **todos os vizinhos** que **não enviaram mensagems&#x20;**_**prune**_
* Usam mensagens _prune_ para avisar os vizinhos que estes não devem encaminhar pacotes para este _router_

## _Flood_ Inicial

![](https://3569593095-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlzYYx9HGcPr04JhNJmIC%2Fuploads%2FKUOh160toPenGZBHRVTW%2Fa.png?alt=media\&token=2ca52493-410c-466f-abb6-f13bd259abb9)

Quanto um _router_ recebe tráfego _multicast_ **na&#x20;**_**interface**_**&#x20;que fornece o caminho de menor custo** para a origem (RPF _interface_), **encaminha** o tráfego para **todas as outras&#x20;**_**intefaces**_

Quanto um _router_ recebe tráfego _multicast_ na _interface_ que **não fornece o caminho de menor custo** para a origem (RPF _interface_), **descarta os pacotes**

## Mensagem _Prune_

![](https://3569593095-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlzYYx9HGcPr04JhNJmIC%2Fuploads%2FlQPFlXz5BtjGGOyMQOrK%2Fa.png?alt=media\&token=a4455bf8-4cd1-4f7f-8fc2-4fbc988ee805)

_Routers_ encaminham o tráfego _multicast_ recebido numa _interface_ para todas as outras _interfaces_ em que não receberam mensagens _prune_

A mensagem _prune_ é enviada por:

* _Routers_ sem clientes interessados numa sessão especifica de _multicast_
* _Routers_ que receberam o mesmo tráfego _multicast_ em mais que uma _interface_
  * Envia a mensagem _prune_ por todas as _interfaces_ onde o tráfego foi recebido e que **não fornece o caminho de menor custo** para a origem
* _Routers_ que recebem mensagens _prune_ em todas as interfaces para as quais tráfego _multicast_ foi encaminhado

Quando um _router_ não tem mais clientes interessados numa sessão de _multicast_ especifica, envia uma mensagem _prune_ pela interface que recebe o tráfego _multicast_
