cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1038
Views
0
Helpful
5
Replies

PIM-SM Joins towards the RP - The Process

kfarrington
Level 3
Level 3

Hello all,

Please could someone help me with this slight issue. The RFC2362 is quite complexed.

Operation Scenario of a receiver to RP

1. Receiver to the RP

Host sends IGMP report, local DR sends PIM join to RP - Shared tree is build

How does the PIM leaf router (receiver router), address the packet to the RP? Would the below be a correct summary and I would like the last point (d) confirmed and at which time the unicast routing table lookup is done if I may ask this?

a - (*,G) state is created on receipt of IGMP packet, which checks the g-to-rp mapping, WHICH THEN CHECKS THE UNICAST ROUTING TABLE - and builds state with an IIF (towards RP) and OOF (to Receivers)

b - the router builds the pim join packet with RP in the join part of the packet

c - the packet also has the upstream PIM neighbor address to which the packet is destined - BASED ON THE EARLIER UNICAST ROUTING TABLE LOOKUP

d - pim multicasts this packet to 224.0.0.13 on the IIF "towards the RP" (all routers receive it, but look at the upstrem nei address to ensure the packet is for them)

The important statement to clarify here, is that the routers PIM JOIN packet is sent on the interface "based on the IIF" entry in the (*,G) state table entry and nothing else is taken into account to place this packet on the correct wire.

Also, is the unicast routing table lookup to the RP done before state is created to find the incoming interface for the RP or after state is created and before the PIM process triggers a PIM join towards the RP.

Or have I got this compltely wrong, and the PIM join packet just has the GDA in the join portion of the PIM JOIN packet, and every router does a lookup to the RP based on the GDA contained within the PIM join.

NOW I AM REALLY CONFUSED :)

Please could someone confirm these small points.

Many thx indeed,

Ken

5 Replies 5

matthew.mcbride
Level 4
Level 4

Hi Ken,

To summarize the PIM-SM process, allow me to define these basic procedures:

1. A receiver sends an IGMP Report as you indicated to its router. The receiving router sends a Join message to the RP, which is either statically configured or dynamically obtained thru AutoRP or BSR, creating (*,G) state along a shared tree between the RP and the last hop router.

2. A multicast source creates a source tree between the its router and the RP (S,G). The source sends its multicast packets to the RP encapsulated inside of Register messages.

3. Once the RP receives the Register message from the multicast source and the source tree is built, the RP sends a Register Stop message to the source. At this point two trees exist: (1) a source tree between the first hop router and the RP and (2) a shared tree from the RP to the last hop router on the receiving end.

4. The last hop router consults its routing table to see if the current path to the multicast source is the optimal path (i.e. it performs a RPF check). If it is not, the last hop router sends a Join for the multicast group to the first hop router to create the optimal path.

5. At this point, multicast traffic from the RP is no longer necessary. The last hop router sends a (S,G) RP-bin Prune message to the RP, requesting the RP terminate multicast traffic to the last hop router.

6. Likewise, the RP sends a (S,G) Prune message to the first hop router since this path of multicast traffic is no longer necessary. The RP is completely out of the picture now and the optimal path between the multicast source router and the last hop router is the best path based on information from the routing table, or the RPF. The whole process from cutting over from the RP path to the optimal path is called Shortest Path Tree switchover.

I hope this doesn't muddle the situation more than it already is.

-m2

Hi Matt,

Thx for that. I think I undertsand this part of it.

What I would like to know is the actual process that the router performs,

Take these two examples below in this topology

rtra-------rtrb------rtrc--------rtrd-----------rtre

rtra has the receiver

rtrc is the RP

rtre has the src

Shared tree example:

So say a host on rtra sends an IGMP, rtra sends a PIM join to rtrb - what does router B do?

it receives the pim-join,

then does it look inside the pim packet for the GDA and look at the g-2-rp mappings, and check the unicast routing table for the RP selected in the g-2-rp mapping cache, and then build state and then rebuild a new PIM join packet?

on the SPT build to the src.

SCR starts sending UDP, local DR (rtre) encaps in unicast and sends register.

Now the RP (rtrc) starts sending pim joins to the source. so rtr c looks at its unicast routing table for the src and sends a pim-join to rtr d - What does router d do, does it look in the pim join packet at the src, extract that src IP address and perform unicast routing lookup on this address - creat state and then re-create a PIM join and send it to rtre?

I need to clasify the exact workings of the multicast routing process the cisco router performs if I can, just like with unicast routing, you receive a packet, the routing process checks part of the l3 packet header for the destination address, and then looks up the routing table, for the next hop and then re-packages the unicast packet in a new header.

The reason I ask is I have two packets attached that I beleive one is a shared tree join and one is a SPT join.

In the SPT join packet (the first one), I am assuming that the multicast routing protocol is extracting the "Join IP address" 155.195.1.118/32 (which is the src) and performing unicast routing, as it needs to go back to the source so cannot use the GDA address in the pim join packet.

In the shared pim join packet, a router would receive this pim join, would it look at the GDA in the packet, consult the g-2-rp mappings and then perform unicast routing to the RP, OR as this packet contains the actual IP address of the RP in the Join part of the packet (155.195.25.17/32), does the router just look at this RP address contained in the packet and perform unicast routing on this part of the PIM header?

Please see attached.

Many many thx for the help,

Ken

Ken,

I'll continue with your example:

rta---rtb---rtc---rtd---rte

with rta as the receiver, rtc as the RP, and rte as the source.

Once rta receives the IGMP Membership Report it will first check to see if it already has a multicast entry in its mroutes. If no entry exists, a (*,G) entry is created and the OIF is added. The router then checks its group-to-RP mapping, the unicast table is consulted for the RP IP address, and the upstream interface is added to the IIF (RPF). Router rte sends a Join/Prune message to 224.0.0.13. The packet contains the address of the group and the RP address.

When rtb receives this Join/Prune message, it will do one of two things:

1. Since the router is not the RP, checks to see if it is already a member of the shared tree. If it is it will add the interface on which it received the Join/Prune message to its list of OIF.

2. If it is not part of the shared tree, it will create a (*,G) entry and sends its own Join/Prune to the RP adding the upstream interface to its OIF (RPF).

Now rtc receives the Join/Prune from rtd. Since rtc is the RP it will check to see if it already has an entry for the multicast group. If it does it will add the interface to which it received the Join/Prune to its OIF. If it is not a member of the group, it too will create a (*,G) entry and await for the source to register with the RP.

In answer to your question:

So say a host on rtra sends an IGMP, rtra sends a PIM join to rtrb - what does router B do?

it receives the pim-join,

then does it look inside the pim packet for the GDA and look at the g-2-rp mappings, and check the unicast routing table for the RP selected in the g-2-rp mapping cache, and then build state and then rebuild a new PIM join packet?

Yes, from what I understand this sounds correct.

SCR starts sending UDP, local DR (rtre) encaps in unicast and sends register.

Now the RP (rtrc) starts sending pim joins to the source. so rtr c looks at its unicast routing table for the src and sends a pim-join to rtr d - What does router d do, does it look in the pim join packet at the src, extract that src IP address and perform unicast routing lookup on this address - creat state and then re-create a PIM join and send it to rtre?

I don't believe the source-tree state is completely established until the RP receives the register message from the source. Once the RP sends a Register Stop to the source then the source-tree is established between the rtc and rte.

Routing TCP/IP Volume II by Doyle and Carroll is an excellent resource for multicast information.

-m2

Hi Matt,

This is most helpful, and this is a very interesting topic.

So can we summarise the following :-

rta---rtb---rtc---rtd---rte

with rta as the receiver, rtc as the RP, and rte as the source.

Your opinon is valuable.

Receiver comes online

----------------------

1. rtra received IGMP report

2. rtra checks g-2-rp mapping cache

3. rtra checks unicast routing table for RP

4. rtra creates state (*,G)

5. rtra triggers pim join to 224.0.0.13 on IIF

6. rtrb receives pim join

7. rtrb sees GDA in pim join packet (not the RP address)

8. rtrb checks g-2-rp mapping cache

9. rtrb checks unicast routing table for RP

10. rtrb creates state (*,G)

11. rtrb triggers pim join to 224.0.0.13 on IIF

12. rtrc receives pim join and creates state - tree complete

Source comes online (lets say recivers are on RPT)

--------------------------------------------------

1. rtre receives UDP traffic

2. rtre sends register to RP (rtrc)

3. rtrc checks unicast routing table for src (must be in register packet)

4. rtrc create state (s,g) with IIF towards src

5. rtrc immediatley triggers a pim-join on the IIF

6. rtrd receives pim join

7. rtrd sees SRC-IP in pim join packet (does not look at GDA as this is pointless)

8. rtrd checks unicast routing table for src

9. rtrd creates state (S,G)

10. rtrd triggers pim join to 224.0.0.13 on IIF

11. rtre receives pim join and creates state - tree complete

The important summary statments are :-

For the RPT,

-------------

Unicast routing is done in a two-step approach:

1. based on the GDA in the pim join packet which then consults the g-2-rp cache for the RP IP address

2. Unicast routing is performed on this IP address.

It is not done as a one-step approach

1. just based on the RP IP address contained within the pim join packet

For the SPT,

-------------

Unicast routing is done on a one step approach:-

1. Unicast routing is performed on the src IP address contained in the pim join packet.

If I could just get my head round this concept, I may be on the way to getting lots of beer tonight :))

Cheers all, and if anyone knows of any reading that can state how the unicast routing is performed in PIM, I would love to see it if you would be so kind.

Matt, I will check out the recommended reading from you - cheers fella.

Kind regards all,

Ken

Good Morning all, I hope everyone on the forum is well :)

I was just wondering if anyone could infact confirm the order of operation in my last posting.

If the RPT and SPT tree build analysis is correct in my last post, it would be great to know, but maybe there is sommat incorrect in the steps I have outlined.

It would be great to have some process flow of how a router actually processes a PIM multicast packet.

Now there's one for the Cisco boffins :)

Kindest regards,

Ken