O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve o mecanismo de asserção do Protocol Independent Multicast (PIM), concentra-se nos critérios vencedores da asserção PIM e mergulha mais profundamente em determinados casos de canto.
A Cisco recomenda que você tenha conhecimento do mecanismo de declaração PIM.
As informações neste documento são baseadas no Cisco CSR1000V versão 16.4.1
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Quando há vários roteadores habilitados para PIM em um segmento compartilhado, é possível que esses roteadores encontrem tráfego multicast duplicado. Esse pode ser o caso porque dois ou mais roteadores no mesmo segmento compartilhado podem ter uma entrada válida (S,G) ou (*,G) que preenche a interface de saída para o segmento compartilhado para o mesmo IP de origem/grupo de destino.
O mecanismo PIM assert é usado para detectar e eliminar a duplicação de tráfego multicast em um segmento compartilhado. É importante observar que esse mecanismo não evita a duplicação de ocorrida, em vez disso, ele usa a duplicação do tráfego multicast como um disparador para ativar esse mecanismo que escolhe um único encaminhador para esse fluxo.
Quando você tem a duplicação de tráfego multicast em um segmento compartilhado, pode supor que há vários roteadores que enviam o mesmo (S,G) ou (*,G) em um segmento compartilhado. Se você escolher um roteador para encaminhar esse fluxo de forma eficaz, ele eliminará a duplicação.
O PIM aproveita as mensagens de declaração PIM que são disparadas quando você recebe um pacote multicast na Lista de Interface de Saída (OIL). Essas mensagens assertivas contêm métricas que são usadas para calcular quem será o vencedor assertivo. Os roteadores de downstream na LAN também recebem mensagens de asserção PIM. Essas mensagens são então usadas por dispositivos downstream para enviar mensagens Join/Prune apropriadas ao roteador upstream que ganhou a eleição assert.
Figura 1.
No diagrama de rede, R3 é o LHR (Last Hop Router), R3 se conecta a R2 e R1 por meio de um segmento compartilhado.
Quando você recebe um relatório do Internet Group Management Protocol (IGMP) do receptor, o R3 verifica quem é o vizinho RPF em direção ao RP. Na topologia, R1 é o vizinho RPF em direção ao RP, portanto, R3 envia uma união (*,G) em direção ao R1. Quando R1 puxa o fluxo (suponha que o grupo esteja ativo), R3 envia uma junção (S,G) para a origem e puxa a árvore de origem para baixo. R2 é o vizinho RPF em direção à árvore de origem, o que significa que R3 enviará a junção (S,G) em direção a R2. R3 tem a mesma interface de RPF para RP e origem. Aqui você pode ver a tabela mroute de R3 para o grupo 239.1.1.1.
R3#show ip mroute IP Multicast Routing Table Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:00:55/stopped, RP 192.168.0.100, flags: SJC Incoming interface: GigabitEthernet1, RPF nbr 192.168.3.1 Outgoing interface list: GigabitEthernet4, Forward/Sparse, 00:00:55/00:02:04 (10.0.0.2, 239.1.1.1), 00:00:52/00:02:07, flags: JT Incoming interface: GigabitEthernet1, RPF nbr 192.168.3.2, Mroute Outgoing interface list: GigabitEthernet4, Forward/Sparse, 00:00:52/00:02:07 (*, 224.0.1.40), 00:01:22/00:02:09, RP 192.168.0.100, flags: SJPCL Incoming interface: GigabitEthernet1, RPF nbr 192.168.3.1
Como você pode ver em R3, o vizinho RPF (*,G) é 192.168.3.1 e o vizinho RPF em direção ao (S,G) é 192.168.3.2. Agora, isso deve resultar em R1 e R2 para ter um OIL válido em direção a R3. Vamos ver essas entradas:
R1#show ip mroute Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:15:02/00:02:33, RP 192.168.0.100, flags: S Incoming interface: GigabitEthernet2, RPF nbr 192.168.5.2 Outgoing interface list: GigabitEthernet1, Forward/Sparse, 00:15:02/00:02:33 (10.0.0.2, 239.1.1.1), 00:13:24/00:02:33, flags: PR Incoming interface: GigabitEthernet2, RPF nbr 192.168.5.2 Outgoing interface list: Null (*, 224.0.1.40), 00:29:17/00:02:51, RP 192.168.0.100, flags: SJCL Incoming interface: GigabitEthernet2, RPF nbr 192.168.5.2 Outgoing interface list: GigabitEthernet1, Forward/Sparse, 00:16:06/00:02:51 Outgoing interface list: Null
R2#show ip mroute IP Multicast Routing Table Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:08:00/stopped, RP 192.168.0.100, flags: SP Incoming interface: GigabitEthernet2, RPF nbr 192.168.4.1 Outgoing interface list: Null (10.0.0.2, 239.1.1.1), 00:00:03/00:02:56, flags: T Incoming interface: GigabitEthernet2, RPF nbr 192.168.4.1 Outgoing interface list: GigabitEthernet1, Forward/Sparse, 00:00:03/00:03:26 (*, 224.0.1.40), 01:37:30/00:02:22, RP 192.168.0.100, flags: SJPL Incoming interface: GigabitEthernet2, RPF nbr 192.168.4.1
Como mencionado, a asserção pode ser disparada quando há dois roteadores upstream que têm um OIL válido preenchido em um segmento compartilhado. Como R1 e R2 têm um OIL válido, verifique se há um mecanismo assert na captura de pacotes.
Essa captura de pacote foi capturada na interface Gi1 de R3 em direção a SW1.
Nesta captura de pacote, você não vê nenhum pacote assert, mesmo que haja todos os pré-requisitos para criar duplicação no segmento compartilhado entre R1, R2 e R3. Por que você não vê nenhum pacote PIM assert quando o fluxo (S,G) foi ativado?
Parece que o RFC 7761 pode ter a resposta para essas perguntas.
4.2.2. Setting and Clearing the (S,G) SPTbit Basically, Update_SPTbit(S,G,iif) will set the SPTbit if we have the appropriate (S,G) join state, and if the packet arrived on the correct upstream interface for S, and if one or more of the following conditions apply: 1. The source is directly connected, in which case the switch to the SPT is a no-op. 2. The RPF interface to S is different from the RPF interface to the RP. The packet arrived on RPF_interface(S), and so the SPT must have been completed. 3. No one wants the packet on the RP tree. 4. RPF'(S,G) == RPF'(*,G). In this case, the router will never be able to tell if the SPT has been completed, so it should just switch immediately. The RPF'(S,G) != NULL check ensures that the SPTbit is set only if the RPF neighbor towards S is valid.
In the case where the RPF interface is the same for the RP and for S,
but RPF'(S,G) and RPF'(*,G) differ, we wait for an Assert(S,G), which
indicates that the upstream router with (S,G) state believes the SPT
has been completed.
O (S,G) SPTbit é usado para distinguir se deve encaminhar no estado (*,G) ou no estado (S,G). Quando você muda da árvore RP para a árvore de origem, há um período de transição quando os dados chegam devido ao estado upstream (*,G) enquanto o estado upstream (S,G) está estabelecido, nesse momento, o roteador deve continuar encaminhando somente no estado (*,G). Isso evita buracos negros temporários que seriam causados pelo envio de uma(S,G,rpt) ameça antes que o estado upstream (S,G) tenha terminado de ser estabelecido.
Embora pareça que o cenário pode correlacionar-se com o último ponto mencionado acima. No caso de a interface RPF ser a mesma para o RP e para o S,
mas RPF'(S,G) e RPF'(*,G) diferem, esperamos por um Assert(S,G), que indica que o roteador upstream com estado (S,G) acredita que o SPT foi concluído.
Para que a asserção seja disparada, o roteador deve receber um pacote duplicado em seu OIL já preenchido para o mesmo IP de origem/grupo de destino no segmento. R3 também é um LHR, o que significa que ele é designado para mudar de (*,G) para SPT (S,G) quando um pacote é recebido de (*,G).
Na captura de pacotes, observamos que nenhuma asserção é disparada. Apesar de vermos uma ameixa enviada imediatamente após o primeiro eco ICMP ser recebido.
Como você pode ver, uma vez que o primeiro pacote de solicitação do Internet Control Message Protocol (ICMP) é recebido na interface G1 de R3, um (*,G) SR-bit prune é enviado para o vizinho upstream 192.168.3.1. Esta poda (*,G) para a fonte específica definida.
Você pode ver estes sinalizadores também definidos: (SR):
The S flag: indicates that the multicast group is a sparse mode group. The R flag: The R flag is the RP-bit flag and indicates that the information in the (S, G) entry is applicable to the shared tree.
No segundo pacote PIM nº 14, você pode ver que R3 tenta ingressar na árvore (S,G).
Observe-se que, assim que o primeiro plano de dados é recebido, o pacote R3 elimina o (*,G) e cria o (S,G). Essa é a razão pela qual você não vê pacotes PIM assert. Esse determinado cenário está em vigor quando você tem um LHR que tem a mesma interface RPF para (S,G) e (*,G). Embora esse comportamento possa ser um pouco diferente do RFC 7761, ele não deve causar nenhum problema.
Agora, vamos continuar com o cenário 2. O diagrama desse cenário pode ser visto aqui:
Figura 2.
Nessa topologia, há outro roteador conectado em R3 que é o LHR. O LHR se conecta diretamente ao receptor. A origem e o RP estão acima de R2 e R1. O vizinho RPF em R3 em direção ao RP é R1 e o vizinho RPF em direção à origem é R2.
Vamos verificar o vizinho RPF tanto para a origem quanto para o RP.
Aqui você vê o vizinho RPF em direção ao RP: 192.168.0.100 é 192.168.3.1.
R3#show ip rpf 192.168.0.100 RPF information for ? (192.168.0.100) RPF interface: GigabitEthernet1 RPF neighbor: ? (192.168.3.1) RPF route/mask: 192.168.0.100/32 RPF type: unicast (ospf 1) Doing distance-preferred lookups across tables RPF topology: ipv4 multicast base, originated from ipv4 unicast base
Aqui você vê o vizinho RPF em direção à Origem: 10.0.0.2 é 192.168.3.2.
R3#show ip rpf 10.0.0.2 RPF information for ? (10.0.0.2) RPF interface: GigabitEthernet1 RPF neighbor: ? (192.168.3.2) RPF route/mask: 10.0.0.0/24 RPF type: unicast (ospf 1) Doing distance-preferred lookups across tables RPF topology: ipv4 multicast base, originated from ipv4 unicast base
Antes de ativarmos a origem, vamos observar a tabela mroute em R3, como você pode ver que já existe (*,G) para o grupo 239.1.1.1. Isso ocorre porque o receptor conectado ao LHR já solicitou para o grupo especificado.
R3#show ip mroute IP Multicast Routing Table Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:00:57/00:02:32, RP 192.168.0.100, flags: S Incoming interface: GigabitEthernet1, RPF nbr 192.168.3.1 Outgoing interface list: GigabitEthernet2, Forward/Sparse, 00:00:57/00:02:32 (*, 224.0.1.40), 00:11:24/00:02:41, RP 192.168.0.100, flags: SJCL Incoming interface: GigabitEthernet1, RPF nbr 192.168.3.1 Outgoing interface list: GigabitEthernet2, Forward/Sparse, 00:02:02/00:02:41
Agora, ative a origem e capture os pacotes na interface Gi1 de R3.
Como você pode ver nesta captura de pacote, o PIM afirma que os pacotes já estão presentes.
Quadro 11:
Quadro 12:
Ao examinar esses pacotes, você deve ser capaz de determinar quem é o vencedor da asserção. Agora, vamos dar uma olhada na seleção do PIM assert forwarding.
A preferência da métrica é a Distância Administrativa (AD). Isso se refere à distância administrativa do protocolo de roteamento que instala a rota na tabela de roteamento, que é usada para pesquisar o endereço IP origem e a métrica é o custo da rota.
Há também outros atributos que são usados para determinar quem é o vencedor da asserção. Você pode ver esses detalhes no RFC 7761.
4.6.3. Assert Metrics Assert metrics are defined as: struct assert_metric { rpt_bit_flag; metric_preference; route_metric; ip_address; }; When comparing assert_metrics, the rpt_bit_flag, metric_preference, and route_metric fields are compared in order, where the first lower value wins. If all fields are equal, the primary IP address of the router that sourced the Assert message is used as a tie-breaker, with the highest IP address winning.
Com o uso desses campos definidos e a seleção do caminho, você pode determinar quem será o vencedor da asserção neste cenário. Se você observar os pacotes assert novamente, poderá ver que a preferência métrica não é comparada, já que a decisão é tomada no primeiro critério de seleção, que é rpt_bit_flag.
Neste cenário, comparar R1 e R2 é comparado. Ambos os roteadores enviam mensagens assertivas que foram vistas anteriormente e quando ambos os dispositivos veem as mensagens assertivas um do outro, eles podem comparar métricas entre si para determinar quem é o vencedor.
Como R2 envia uma mensagem assert com a árvore RP: Falso que tem um valor 0, é realmente inferior ao que R1 enviou com uma árvore RP: Verdadeiro que tem um valor de 1. O bit de árvore RP é definido como 0 ou 1.
bit de árvore RP quando definido como 1 significa que você está atualmente na árvore compartilhada; o bit RPT limpo indica que o remetente da asserção tinha o estado de encaminhamento (S,G) em uma interface.
Como (S,G) afirmações têm prioridade sobre (*,G) afirmações, R2 deve ser o vencedor da asserção. Transição para o estado "Sou Vencedor de Asserto". Como mencionado na instrução anterior no RFC 7761, o valor mais baixo é preferido.
Vamos ver o R1 e o R2 para ver quem é o vencedor da asserção.
R2#show ip mroute IP Multicast Routing Table Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:42:52/stopped, RP 192.168.0.100, flags: SP Incoming interface: GigabitEthernet2, RPF nbr 192.168.4.1 Outgoing interface list: Null (10.0.0.2, 239.1.1.1), 00:42:52/00:01:40, flags: T Incoming interface: GigabitEthernet2, RPF nbr 192.168.4.1 Outgoing interface list: GigabitEthernet1, Forward/Sparse, 00:42:52/00:03:07, A (*, 224.0.1.40), 00:43:23/00:02:25, RP 192.168.0.100, flags: SJPL Incoming interface: GigabitEthernet2, RPF nbr 192.168.4.1 Outgoing interface list: Null
Nessa saída, você pode ver que o (S,G) em R2 tem o sinalizador A definido no OIL, o que indica que ele é o vencedor do assert. Aqui em R1, você não tem um OIL no (S,G) e o flag P está definido, o que significa que o particular (S,G) foi removido neste caso: não é o vencedor do acerto.
Note: Quando a asserção está presente em um segmento compartilhado, os vizinhos downstream enviam mensagens periódicas Join(*,G) e Join(S,G) para o vizinho RPF apropriado, isto é, o vizinho RPF conforme modificado pelo processo de asserção. Nem sempre são enviados para o vizinho RPF conforme indicado pelo MRIB.
R1#show ip mroute IP Multicast Routing Table Outgoing interface flags: H - Hardware switched, A - Assert winner, p - PIM Join Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.1), 00:44:32/00:03:09, RP 192.168.0.100, flags: S Incoming interface: GigabitEthernet2, RPF nbr 192.168.5.2 Outgoing interface list: GigabitEthernet1, Forward/Sparse, 00:44:32/00:03:09, A (10.0.0.2, 239.1.1.1), 00:44:19/00:03:09, flags: PR Incoming interface: GigabitEthernet2, RPF nbr 192.168.5.2 Outgoing interface list: Null (*, 224.0.1.40), 00:44:50/00:02:53, RP 192.168.0.100, flags: SJCL Incoming interface: GigabitEthernet2, RPF nbr 192.168.5.2 Outgoing interface list: GigabitEthernet1, Forward/Sparse, 00:43:56/00:02:53
Se for o caso de que R1 e R2 têm o bit de árvore RP definido como 1. você pode considerar o roteador com o AD mais baixo; se igual, observe a métrica. Se o bit de árvore RP for verdadeiro em ambos os roteadores, a métrica será comparada ao endereço IP RP. Se o bit de árvore RP for 0, a métrica será comparada à origem do fluxo multicast.
Se todos esses valores forem os mesmos, a mensagem assert de origem de endereço IP mais alta será a vencedora.
No cenário um, você não observou pacotes assert, no entanto, por RFC eles devem ter sido disparados. Como mencionado, foi porque R3 estava podando (*,G) antes de o plano de controle para (S,G) ser construído.
Enquanto no cenário dois, você vê pacotes assert. Quando o primeiro pacote foi recebido no LHR, ele envia uma junção/remoção (S,G) em direção a R3 para puxar a origem/o grupo. Em seguida, R3 enviará um pacote de junção/remoção para R2 para a mesma origem/grupo. Isso faria com que R1 e R2 tivessem OILs válidos preenchidos. Agora, R3 apenas puxa (S,G) com bit RP definido quando o flag T é preenchido no estado R3s (S,G). Para que isso ocorra, você precisa receber outro pacote de plano de dados do segmento compartilhado. Como o plano de controle já foi criado para (S,G), isso leva à duplicação no segmento compartilhado, disparando mensagens assert.
Revisão | Data de publicação | Comentários |
---|---|---|
2.0 |
24-Jan-2022 |
Tipo fixo de: ter um OIL válido para R1Para: ter um OIL válido para R3 |
1.0 |
05-Jan-2018 |
Versão inicial |