lunes, 29 de junio de 2009

Ruteo Multicast básico en detalle II

Posted by Nicolas | lunes, 29 de junio de 2009 | Category: |

Continuando el post anterior, corresponde ahora ver el proceso de cómo los host se unen a los distintos grupos Multicast y cómo se arman los árboles de ruteo. Luego se verá cómo se registra la fuente del tráfico.

La interface FastEthernet0/0 de R5 se unirá al grupo 239.2.3.9. Del post anterior se tiene que R1 es el RP y R3 es el BSR activo. Posteriormenete se utilizará a R4 como fuente del tráfico.

Se comenzará por agregar un destinatario al grupo con el comando ip igmp join-group. En otro post se hablará de las diferencia de este comando con: ip igmp static-group.

R5#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)#int f0
R5(config-if)#ip igmp join-group 239.2.3.9
R5(config-if)#

Lo anterior implicará que R5 genere un unsolicited Membership Report (IGMPv2) destinado a la dirección del grupo (239.2.3.9). Cabe la pena señalar, además, que un router Multicast puede toma uno de dos roles; Querier o Non-Querier, de acuerdo a la descripción de IGMPv2. En toda red existe un Querier que es elegido como aquel router con la menor dirección IP dentro de la subnet asociada. Éste es responsable de generar los Queries (IGMPv2) en la subnet cada 60 segundos por defecto (configurable con ip igmp query-interval) a lo que el resto de routers Multicast dentro de la subnet responden con un Membership Report (IGMPv2) indicando los grupos a los que pertenecen por la interface asociada a la subnet. Para revisar los grupos a los que pertenece un router: show ip igmp groups.

R5(config-if)#
Jun 26 13:05:27.705: IGMP(0): WAVL Insert group: 239.2.3.9 interface: FastEthernet0/0Successful
Jun 26 13:05:27.717: IGMP(0): Send v2 Report for 239.2.3.9 on FastEthernet0/0
Jun 26 13:05:27.733: PIM(0): Check RP 10.1.1.1 into the (*, 239.2.3.9) entry
Jun 26 13:05:27.737: IP: s=10.0.0.6 (local), d=239.2.3.9 (FastEthernet0/0), len 28, sending broad/multicast, proto=2
Jun 26 13:05:27.741: IGMP(0): MRT Add/Update FastEthernet0/0 for (*,239.2.3.9) by 4
Jun 26 13:05:27.745: PIM(0): Building Triggered Join/Prune message for 239.2.3.9
Jun 26 13:05:27.745: PIM(0): Insert (*,239.2.3.9) join in nbr 10.0.0.5's queue
Jun 26 13:05:27.753: PIM(0): Building Join/Prune packet for nbr 10.0.0.5
Jun 26 13:05:27.753: PIM(0): Adding v2 (10.1.1.1/32, 239.2.3.9), WC-bit, RPT-bit, S-bit Join
Jun 26 13:05:27.757: PIM(0): Send v2 join/prune to 10.0.0.5 (FastEthernet0/0)
Jun 26 13:05:27.757: IP: s=10.0.0.6 (local), d=2
24.0.0.13 (FastEthernet0/0), len 54, sending broad/multicast, proto=103

Lo que sucede a nivel de ruteo (PIM-SM) se podrá ver claramente en R3. Éste recibe tanto un Membership Report (IGMPv2) como un mensaje Join (PIM-SM) desde R5. Se genera la tupla (*, 239.2.3.9), se añade la interface por donde se recibió el mensaje a las interfaces de salida de la tupla, el router revisa el mapeo de RPs (show ip pim rp mapping), se revisa la tabla de ruteo unicast y la interface hacia el RP es añadida a las interfaces de entrada de la tupla. WC = 1 indica que se quiere unir al RP en vez de la fuente, RPT = 1 indica a través de un árbol compartido.

R3#
Jun 26 13:05:29.861: IP: s=10.0.0.6 (FastEthernet2/0), d=239.2.3.9, len 28, rcvd 0, proto=2
Jun 26 13:05:29.869: IP: s=10.0.0.6 (FastEthernet2/0), d=224.0.0.13, len 54, rcvd 0, proto=103
Jun 26 13:05:29.877: IGMP(0): Received v2 Report on FastEthernet2/0 from 10.0.0.6 for 239.2.3.9
Jun 26 13:05:29.913: PIM(0): Received v2 Join/Prune on FastEthernet2/0 from 10.0.0.6, to us
Jun 26 13:05:29.917: PIM(0): Join-list: (*, 239.2.3.9), RPT-bit set, WC-bit set, S-bit set
Jun 26 13:05:29.925: PIM(0): Add FastEthernet2/0/10.0.0.6 to (*, 239.2.3.9), Forward state, by PIM *G Join
Jun 26 13:05:29.929: PIM(0): Building Triggered (*,G) Join / (S,G,RP-bit) Prune message for 239.2.3.9
Jun 26 13:05:29.933: PIM(0): Insert (*,239.2.3.9) join in nbr 172.16.0.5's queue
Jun 26 13:05:29.937: PIM(0): Building Join/Prune packet for nbr 172.16.0.5
Jun 26 13:05:29.937: PIM(0): Adding v2 (10.1.1.1/32, 239.2.3.9), WC-bit, RPT-bit, S-bit Join
Jun 26 13:05:29.941: PIM(0): Send v2 join/prune to 172.16.0.5 (Serial1/0)
Jun 26 13:05:29.941: IP: s=172.16.0.6 (local), d=224.0.0.13 (Serial1/0), len 54, sending broad/multicast, proto=103
Jun 26 13:05:29.949: IP: s=172.16.0.6 (local), d=224.0.0.13 (Serial1/0), len 54, sending full packet, proto=103

R1 culmina esta primera etapa agregando la interface hacia R3 en las interfaces de salida de su tupla (*, 239.2.3.9).

R1#
Jun 26 13:05:30.331: IP: s=172.16.0.6 (Serial1/1), d=224.0.0.13, len 54, rcvd 0, proto=103
Jun 26 13:05:30.339: PIM(0): Received v2 Join/Prune on Serial1/1 from 172.16.0.6, to us
Jun 26 13:05:30.343: PIM(0): Join-list: (*, 239.2.3.9), RPT-bit set, WC-bit set, S-bit set
Jun 26 13:05:30.351: PIM(0): Check RP 10.1.1.1 into the (*, 239.2.3.9) entry
Jun 26 13:05:30.355: PIM(0): Add Serial1/1/172.16.0.6 to (*, 239.2.3.9), Forward state, by PIM *G JoinPIM(0): rp adv timer expired

Las tablas de ruteo Multicast (resumidas) luego de este proceso que duró menos de tres segundos pueden ser vistas a continuación (show ip mroute).

R1

(*, 239.2.3.9), 00:00:14/00:03:15, RP 10.1.1.1, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1/1, Forward/Sparse, 00:00:14/00:03:15

R3

(*, 239.2.3.9), 00:00:14/00:03:15, RP 10.1.1.1, flags: SJC
Incoming interface: Serial1/0, RPF nbr 172.16.0.5
Outgoing interface list:
FastEthernet2/0, Forward/Sparse, 00:00:14/00:03:15

R5

(*, 239.2.3.9), 00:08:47/00:02:59, RP 10.1.1.1, flags: SJPCL
Incoming interface: FastEthernet0/0, RPF nbr 10.0.0.5
Outgoing interface list: Null


Se ha excluido del output de las tablas de ruteo lo siguiente:

IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode

Donde se describe el significado de cada uno de los Flags que incluyen las entradas de la tabla, en este ejemplo se ven:
  • S: La entrada está operando en modo Sparse
  • J: En una entrada (*, G) indica que el flujo a través del árbol compartido ha sobrepasado el SPT-Threshold. Esto implica migrar de un RPT (Rendezvous Point Tree) a un SPT (Shortest Path Tree), lo que puede ser controlado con el comando ip pim spt-threshold. Para evitar el cambio se puede configurar: ip pim spt-threshold infinity
  • C: Un mienbro del grupo Multicast está presente en una interface directamente conectada.
  • P: El árbol termina en el router (pruned). Se mantienen la información a modo que los miembros del grupo puedan unirse a la fuente
  • L: El router mismo es miembro de este grupo
Para mantener el árbol, el Designated Router (DR) de la fuente debe generar mensajes Join (PIM-SM) periódicamente de modo de evitar que las entradas en cada salto expiren (3 minutos). El RP responde con un RP-Reachable por lo que el DR sabe que el RP todavía existe. Los Periodic Joins son enviados por defecto cada 60 segundos. Hasta la versión de Cisco IOS 12.1 se documentaba que con ip pim message-interval esto podría ser modificado, sin embargo el BUG CSCej32303 aclara que esta sintaxis no hace lo que suponía y que en vez de corregirlo simplemente se elimina el comando (Thanks Tassos!!!).

R5#
Jun 19 17:19:18.713: PIM(0): Building Periodic Join/Prune message for 239.2.3.9
Jun 19 17:19:18.713: PIM(0): Insert (*,239.2.3.9) join in nbr 10.0.0.5's queue
Jun 19 17:19:18.717: PIM(0): Insert (10.0.0.2,239.2.3.9) join in nbr 10.0.0.5's queue
Jun 19 17:19:18.721: PIM(0): Building Join/Prune packet for nbr 10.0.0.5
Jun 19 17:19:18.721: PIM(0): Adding v2 (10.1.1.1/32, 239.2.3.9), WC-bit, RPT-bit, S-bit Join
Jun 19 17:19:18.725: PIM(0): Adding v2 (10.0.0.2/32, 239.2.3.9), S-bit Join
Jun 19 17:19:18.729: PIM(0): Send v2 join/prune to 10.0.0.5 (FastEthernet0/0)
...
Jun 19 17:19:29.865: IP: s=10.1.1.1 (FastEthernet0/0), d=224.0.0.2, len 44, rcvd 0, proto=2
Jun 19 17:19:29.869: PIM(0): Received RP-Reachable on FastEthernet0/0 from 10.1.1.1
Jun 19 17:19:29.869: PIM(0): Received RP-Reachable on FastEthernet0/0 from 10.1.1.1
Jun 19 17:19:29.873: for group 239.2.3.9

En total 0 comentarios:


Leave a Reply