O protocolo PIM é um conjunto de protocolos para transmitir multicast em uma rede entre roteadores. Os relacionamentos de vizinhança são criados da mesma maneira que no caso de protocolos de roteamento dinâmico. O PIMv2 envia mensagens Hello a cada 30 segundos para o endereço multicast reservado 224.0.0.13 (Todos os roteadores PIM). A mensagem contém temporizadores de espera - geralmente 3,5 * Hello Timer, ou seja, 105 segundos por padrão.

O PIM usa dois modos principais de operação - modo Denso e Esparso. Vamos começar com o modo denso.
Árvores de distribuição baseadas na fonte.É aconselhável usar o modo denso no caso de um grande número de clientes de vários grupos multicast. Quando um roteador recebe tráfego multicast, a primeira coisa que faz é verificar a regra RPF. RPF - esta regra é usada para verificar a origem de um multicast com uma tabela de roteamento unicast. É necessário que o tráfego chegue à interface atrás da qual esse host está oculto, de acordo com a versão da tabela de roteamento unicast. Esse mecanismo resolve o problema de ocorrência de loop durante a transmissão multicast.

O R3 da mensagem multicast reconhecerá a origem do multicast (IP de origem) e verificará os dois fluxos R1 e R2 de sua tabela unicast. O fluxo da interface indicada pela tabela (R1 a R3) será transferido ainda mais e o fluxo do R2 será descartado, porque, para chegar à fonte do multicast, é necessário enviar pacotes via S0 / 1.
A questão é: o que acontece se você tiver duas rotas equivalentes com a mesma métrica? Nesse caso, o roteador escolherá o próximo salto para essas rotas. Quem tem um endereço IP mais alto, ele ganhou. Se você precisar alterar esse comportamento, poderá usar o ECMP. Mais detalhes
aqui .
Após verificar a regra RPF, o roteador envia um pacote multicast a todos os seus vizinhos do PIM, exceto aquele de quem o pacote foi recebido. Outros roteadores PIM repetem esse processo. O caminho que um pacote multicast passou da origem para os destinatários finais forma uma árvore chamada - árvore de distribuição baseada na fonte, árvore de caminho mais curto (SPT), árvore de origem. Três nomes diferentes, escolha qualquer.
Como resolver o problema com o fato de alguns roteadores não desistirem de um fluxo multicast e não haver ninguém para quem enviá-lo, e o roteador de nível superior o envia. Para isso, o mecanismo de Prune foi inventado.
Remover mensagem.Por exemplo, o R2 continuará enviando R3 multicast, embora o R3 pela regra do RPF o elimine. Por que carregar o canal? O R3 envia uma mensagem de remoção do PIM e o R2, ao receber essa mensagem, remove a interface S0 / 1 da lista de interfaces de saída desse fluxo, a lista de interfaces das quais esse tráfego deve ser enviado.
A seguir, uma definição mais formal de uma mensagem de remoção do PIM:
A mensagem PIM Prune é enviada por um roteador para um segundo roteador para fazer com que o segundo roteador remova o link no qual a Prune é recebida de um SPT (S, G) específico.
Após receber a mensagem de remoção, o R2 define o timer de remoção para 3 minutos. Após três minutos, ele começará a enviar o tráfego novamente até receber a próxima mensagem de remoção. Isso está no PIMv1.
E no PIMv2, o timer de atualização de estado é adicionado (por padrão, 60 segundos). Assim que uma mensagem de remoção for enviada do R3, esse timer inicia no R3. Depois que esse timer expirar, o R3 enviará uma mensagem de atualização de estado que redefinirá o temporizador de remoção de 3 minutos para R2 para este grupo.
Razões para enviar uma mensagem de remoção:
- Quando um pacote multicast falhou em uma verificação RPF.
- Quando não há clientes conectados localmente que solicitaram um grupo multicast (junção IGMP) e nenhum vizinho PIM para quem o tráfego multicast pode ser enviado (interface sem remoção).
Mensagem de enxerto.Imagine que o R3 não quisesse tráfego do R2, enviou o Prune e recebeu multicast do R1. Mas de repente, o canal caiu entre R1-R3 e R3 ficou sem multicast. Você pode esperar 3 minutos até que o Prune Timer expire no R2. 3 minutos para esperar muito tempo, para não esperar, você precisa enviar uma mensagem que exiba instantaneamente essa interface S0 / 1 no R2 a partir do estado podado. Esta mensagem será uma mensagem de enxerto. Após receber a mensagem Graft, o R2 enviará um Graft-ACK em resposta.
Substituição de remoção de poda.
Vamos olhar para este esquema. O R1 transmite multicast em um segmento com dois roteadores. R3 recebe e transmite tráfego, R2 recebe, mas não tem ninguém para transmitir tráfego. Ele envia uma mensagem de remoção para R1 neste segmento. O R1 deve remover Fa0 / 0 da lista e parar de transmitir neste segmento, mas o que acontecerá com o R3? E R3 está no mesmo segmento, ele também recebeu essa mensagem da Prune e percebeu a tragédia da situação. Antes de R1 parar de transmitir, ele define o temporizador para 3 segundos e para de transmitir após 3 segundos. 3 segundos - tanto tempo para o R3, para não perder o multicast. Portanto, o R3, assim que possível, envia uma mensagem Pim Join para esse grupo e o R1 não pensa mais em interromper a transmissão. Sobre Participe das postagens abaixo.
Afirmar mensagem.
Imagine esta situação: dois roteadores transmitem para a mesma rede ao mesmo tempo. Eles recebem o mesmo fluxo da fonte e os transmitem para a mesma rede atrás da interface e0. Portanto, eles precisam determinar quem será o único transmissor único para esta rede. As mensagens de afirmação são usadas para isso. Quando o R2 e o R3 detectam a duplicação do tráfego multicast, ou seja, o multicast que eles transmitem no R2 e R3, que eles mesmos transmitem, os roteadores entendem que algo está errado aqui. Nesse caso, os roteadores enviam mensagens Assert, que incluem a Distância administrativa e a métrica da rota pela qual a fonte multicast é alcançada - 10.1.1.10. O vencedor é determinado da seguinte forma:
- Aquele com AD mais baixo.
- Se o AD for igual, quem tem a métrica mais baixa.
- Se houver igualdade, aquele com um IP mais alto na rede para a qual eles transmitem esse multicast.
Ganhando este voto, o roteador se torna o roteador designado. O Pim Hello também é usado para selecionar DR. No início do artigo, uma mensagem Hello do PIM era exibida; é possível observar o campo DR. O vencedor é aquele com um endereço IP mais alto neste link.
Prato útil:
Tabela MROUTE.Após a revisão inicial da operação do protocolo PIM, precisamos descobrir como trabalhar com a tabela de roteamento multicast. A tabela mroute armazena informações sobre quais fluxos foram solicitados pelos clientes e quais fluxos fluem de servidores multicast.
Por exemplo, ao receber um Relatório de Associação IGMP ou Junção PIM em alguma interface, uma entrada do tipo (*, G) é adicionada à tabela de roteamento:

Esta entrada significa que uma solicitação de tráfego foi recebida com o endereço 238.38.38.38. O sinalizador DC significa que o multicast funcionará no modo Denso e C significa que o destinatário está diretamente conectado ao roteador, ou seja, o roteador recebeu o Relatório de Associação IGMP e a Ingresso no PIM.
Se houver um registro como (S, G) significa que temos um fluxo multicast:

No campo S - 192.168.1.11, registramos o endereço IP da fonte multicast, que será verificado pela regra RPF. Em caso de problemas, a primeira coisa a fazer é verificar a tabela Unicast para a rota para a origem. No campo Interface de entrada indica a interface à qual o multicast chega. Na tabela de roteamento unicast, a rota para a fonte deve se referir à interface especificada aqui. A interface de saída indica para onde o multicast será redirecionado. Se estiver vazio, não houve solicitações para esse tráfego para o roteador. Mais informações sobre todas as bandeiras podem ser encontradas
aqui .
Modo PIM Esparso.A estratégia do modo esparso é o oposto do modo denso. Quando o modo Sparse recebe tráfego multicast, ele envia tráfego somente através das interfaces em que houve solicitações para esse fluxo, por exemplo, mensagens Pim Join ou IGMP Report solicitando esse tráfego.
Elementos semelhantes para SM e DM:
- Os relacionamentos de vizinhança são construídos da mesma maneira que no PIM DM.
- A regra RPF funciona.
- A escolha do DR é semelhante.
- O mecanismo Substituições de exclusão e mensagens Assert são semelhantes.
Para controlar quem precisa de onde, onde e qual tráfego multicast é necessário na rede, é necessário um centro de informações comum. Nesse centro, teremos o Ponto de Encontro (RP). Quem quiser algum tipo de tráfego multicast ou alguém começar a receber tráfego multicast da origem, ele o envia ao RP.
Quando o RP recebe tráfego multicast, ele será enviado aos roteadores que solicitaram esse tráfego anteriormente.

Imagine uma topologia em que RP é R3. Assim que o R1 recebe o tráfego do S1, ele encapsula esse pacote multicast em uma mensagem de registro PIM unicast e o envia ao RP. Como ele sabe quem é RP? Nesse caso, ele é configurado estaticamente, e falaremos sobre o ajuste dinâmico de RP posteriormente.
ip pim rp-address 3.3.3.3
O RP procurará - houve alguma informação de alguém que gostaria de receber esse tráfego? Suponha que não fosse. Em seguida, o RP enviará ao R1 uma mensagem PIM Register-Stop, o que significa que ninguém precisa desse multicast, o registro é negado. R1 não enviará multicasts. Mas a fonte multicast o enviará, então R1, depois de receber o registro-parada, iniciará o timer de registro-supressão, que é de 60 segundos. 5 segundos antes do tempo expirar, o R1 enviará uma mensagem de registro vazia com um bit de registro nulo (ou seja, sem um pacote multicast encapsulado) para o lado do RP. O RP, por sua vez, agirá assim:
- Se não houver e nenhum destinatário, ele responderá com uma mensagem de parada de registro.
- Se os destinatários aparecerem, ele não responderá de forma alguma. O R1, não tendo recebido uma recusa em seu registro dentro de 5 segundos, ficará encantado e enviará ao RP uma mensagem com o multicast encapsulado para registrar.
À medida que o multicast atinge o RP, parece ser resolvido, agora vamos tentar responder à pergunta de como o RP traz tráfego para os destinatários. Aqui você precisa introduzir um novo conceito - árvore do caminho raiz (RPT). Um RPT é uma árvore com uma raiz no RP crescendo para os destinatários que se ramificam em cada roteador PIM-SM. O RP o cria recebendo mensagens de ingresso no PIM e adiciona um novo ramo à árvore. E o mesmo acontece com todos os roteadores a jusante. A regra geral é assim:
- Quando um roteador PIM-SM recebe uma mensagem de PIM Join em qualquer interface, exceto na interface na qual o RP está oculto, ele adiciona uma nova ramificação à árvore.
- Uma filial também é adicionada quando o roteador PIM-SM recebe um Relatório de Associação IGMP de um host conectado diretamente.
Imagine que temos um cliente multicast no roteador R5 para o grupo 228.8.8.8. Assim que o R5 recebe um relatório de associação IGMP do host, o R5 envia uma junção PIM na direção do RP e ele próprio adiciona uma interface que olha o host na árvore. Em seguida, o R4 recebe uma junção PIM do R5, adiciona a interface Gi0 / 1 à árvore e envia a junção PIM na direção do RP. Finalmente, o RP (R3) recebe uma junção PIM e adiciona Gi0 / 0 à árvore. Assim, é obtido o registro do destinatário multicast. Estamos construindo uma árvore com a raiz R3-Gi0 / 0 → R4-Gi0 / 1 → R5-Gi0 / 0.
Depois disso, a junção do PIM será enviada para o R1 e o R1 começará a enviar o tráfego multicast. É importante observar que, se o host solicitou tráfego antes do início da transmissão multicast, o RP não enviará a junção ao PIM e não enviará nada para o lado R1.
Se de repente, enquanto um multicast estiver sendo enviado, o host parar de desejar recebê-lo, assim que o RP receber o PIM Prune na interface Gi0 / 0, ele envia imediatamente o PIM Register-Stop diretamente para R1 e, em seguida, a mensagem PIM Prune através da interface Gi0 / 1. A parada e registro do PIM é enviada pelo Unicast para o endereço de onde o registro PIM chegou.
Como dissemos antes, assim que o roteador envia um PIM Join para outro, por exemplo, R5 no R4, uma entrada é adicionada ao R4:

E o cronômetro inicia que, para redefinir esse cronômetro, o R5 deve constantemente entrar no PIM constantemente com as mensagens, caso contrário o R4 será excluído da lista de saída. O R5 enviará a cada 60 mensagens de ingresso no PIM.
Troca de árvore de caminho mais curto.Adicionaremos uma interface entre R1 e R5, ver como o tráfego fluirá com essa topologia.

Digamos que o tráfego foi enviado e recebido de acordo com o antigo esquema R1-R2-R3-R4-R5 e aqui conectamos e configuramos a interface entre R1 e R5.
Primeiro, precisamos reconstruir a tabela de roteamento unicast no R5 e agora a rede 192.168.1.0/24 é alcançada através da interface R5 Gi0 / 2. Agora, quando o R5 recebe um multicast na interface Gi0 / 1, ele entende que a regra RPF não é satisfeita e seria mais lógico receber um multicast no Gi0 / 2. Ele deve se desconectar do RPT e criar uma árvore mais curta chamada SPT (Shortest-Path Tree). Para fazer isso, através do Gi0 / 2, ele envia uma junção PIM para o R1 e o R1 começa a enviar multicasts também pelo Gi0 / 2. Agora o R5 deve cancelar a inscrição no RPT, para não obter duas cópias. Para isso, ele envia uma mensagem de remoção indicando o endereço IP da fonte e inserindo um bit especial - RPT-bit. Isso significa que não preciso enviar tráfego, tenho uma árvore melhor aqui. O RP também envia mensagens para o lado R1 PIM Prune, mas não envia uma mensagem Register-Stop. Outro recurso: o R5 agora envia constantemente o PIM Prune para o RP, pois o R1 continua a enviar o PIM Register para o RP a cada minuto. RP até que novas pessoas desejem que esse tráfego o recuse. O R5 notifica o RP de que continua recebendo multicast via SPT.
Pesquisa dinâmica de RP.
Auto-RPEssa tecnologia é proprietária da Cisco e não é particularmente popular, mas ainda está viva. O Auto-RP consiste em duas etapas principais:
1) O RP envia mensagens RP-Announce para o endereço reservado - 224.0.1.39, declarando-se RP para todos ou para determinados grupos. Esta mensagem é enviada a cada minuto.
2) É necessário um agente de mapeamento de RP que envie mensagens de descoberta de RP indicando para quais grupos RP ouvir. É a partir dessa mensagem que os roteadores PIM comuns determinam o RP para eles mesmos. O Mapping Agent pode ser o próprio roteador RP ou qualquer roteador PIM separado. O RP-Discovery é enviado para o endereço 224.0.1.40 com um timer de um minuto.
Vejamos o processo com mais detalhes:
Defina R3 como RP:
IP pim enviar-rp-anunciar loopback 0 escopo 10
R2 como um agente de mapeamento:
escopo de loopback 0 do ip pim send-rp-discovery 0
E em todos os outros, esperaremos o RP através do Auto-RP:
ouvinte do autorp do ip pim
Depois de configurar o R3, ele começará a enviar o RP-Announce:

E o R2, depois de configurar o agente de mapeamento, aguardará a mensagem RP-Announce. Somente quando ele encontrar pelo menos um RP, ele começará a enviar o RP-Discovery:

Portanto, assim que os roteadores comuns (PIM RP Listener) receberem essa mensagem, eles saberão onde procurar o RP.
Um dos principais problemas do Auto-RP é que, para receber as mensagens RP-Announce e RP-Discovery, você precisa enviar a PIM Join para os endereços 224.0.1.39-40 e, para enviá-lo, é necessário saber onde está o RP. O problema clássico de frango e ovos. Para resolver esse problema, o PIM Sparse-Dense-Mode foi inventado. Se o roteador não conhece o RP, ele funciona no modo denso, se souber, no modo esparso. Quando o modo PIM Sparse e o comando ip pim autorp listener estão configurados nas interfaces de roteadores comuns, o roteador funcionará no modo Denso apenas para o protocolo Auto-RP multicast diretamente (224.0.1.39-40).
Roteador BootStrap (BSR).Esta função funciona de maneira semelhante ao Auto-RP. Cada RP envia uma mensagem do agente de mapeamento, que coleta informações de mapeamento e informa a todos os outros roteadores. Descrevemos o processo de maneira semelhante ao Auto-RP:
1) Depois de configurar o R3 como candidato a ser um RP, o comando:
loopback 0 do candidato do rp do ip pim
Como o R3 não fará nada, para começar a enviar mensagens especiais, ele, para começar, precisa encontrar um agente de mapeamento. Assim, passamos para o segundo passo.
2) Configure o R2 como um agente de mapeamento:
loopback 0 do pim bsr-candidato do ip
O R2 começa a enviar mensagens do PIM Bootstrap, onde se indica como um agente de mapeamento:

Esta mensagem é enviada para o endereço 224.0.013, que o protocolo PIM usa para suas outras mensagens. Ele os envia em todas as direções e, portanto, não há problema de frango e ovos, como foi o caso do Auto-RP.
3) Assim que o RP receber uma mensagem do BSR do roteador, ele enviará imediatamente uma mensagem unicast para o endereço do BSR do roteador:

Depois disso, quando o BSR receber informações sobre o RP, ele será enviado com multicast para o endereço 224.0.0.13, que todos os roteadores PIM escutam. Portanto, não há um análogo do
comando ip pim autorp listener para roteadores regulares no BSR.
Anycast RP com MSDP (Multicast Source Discovery Protocol).O Auto-RP e o BSR nos permitem distribuir a carga no RP da seguinte maneira: Cada grupo multicast possui apenas um RP ativo. Não funcionará para tornar a distribuição de carga para um grupo multicast RP múltiplo. O MSDP faz isso emitindo aos roteadores RP o mesmo endereço IP com uma máscara 255.255.255.255. O MSDP reconhece as informações usando um dos métodos: estático, Auto-RP ou BSR.

Na figura, temos uma configuração Auto-RP com MSDP. Ambos os RPs são configurados com o endereço IP 172.16.1.1/32 na interface Loopback 1 e são usados para todos os grupos. Quando o RP-Announce, os dois roteadores falam sobre si mesmos, referindo-se a este endereço. Após receber as informações, o agente de mapeamento do Auto-RP envia o RP-Discovery sobre o RP com o endereço 172.16.1.1/32. Sobre a rede 172.16.1.1/32, informamos aos roteadores usando IGP e, respectivamente. Assim, os roteadores PIM solicitam ou registram fluxos do RP indicado como próximo salto na rota para a rede 172.16.1.1/32. O próprio protocolo MSDP foi projetado para os próprios RPs trocarem mensagens de informações multicast.
Considere a seguinte topologia:

O Switch6 transmite o tráfego para o endereço 238.38.38.38 e até agora apenas o RP-R1 sabe disso. Aqui, Switch7 e Switch8 solicitaram esse grupo. Os roteadores R5 e R4 enviarão o PIM Join para R1 e R3, respectivamente. Porque A rota até 13.13.13.13 no R5 fará referência ao R1 de acordo com a métrica IGP, como no R4.
O RP-R1 conhece o fluxo e começa a transmiti-lo para o R5, mas o R4 não sabe nada sobre isso, pois o R1 simplesmente não o envia. Portanto, o MSDP é necessário. Nós o configuramos em R1 e R5:
ponto de conexão 3.3d do ip msdp loopback1 de origem na R1
ponto de conexão 1.1.1.1 do msdp do ip loopback3 na fonte R3
Eles criarão uma sessão entre si e, ao receberem qualquer fluxo, a reportarão ao seu vizinho RP.
RP-R1, assim que receber o fluxo do Switch6, ele enviará imediatamente uma mensagem ativa de origem Unicast MSDP que conterá informações como (S, G) - informações sobre a origem e o destino do multicast. Agora, quando o RP-R3 souber que uma fonte como o Switch6, ele enviará uma junção do PIM ao Switch6 ao receber uma solicitação do R4 para esse fluxo, sendo guiado pela tabela de roteamento. Portanto, o R1 que recebeu uma junção PIM, começará a enviar tráfego para o RP-R3.
O MSDP é executado sobre o TCP, os RPs enviam mensagens de manutenção permanente para verificar a viabilidade. O temporizador é de 60 segundos.
MSDP , Keepalive SA - . — .
- , .
. , :
- CCIE Routing and Switching v5.0 Official Cert Guide, Volume 2, Fifth Edition, Narbik Kocharians, Terry Vinson.
- . .