Multicast routing issue

Hi

I am trying to setup multi cast routing on my network.

What i have is

bdr01 - ros 6.26

eth0 - dmz
eth1 - wan port to provider

I have RP setup with info from my providor


I have a ASA5520
eth0 - dmz
eth1 - intMAN..

on the intMAN vlan I have 4 ccr1036

say intRtr1 I have
eth0 intMAN
eth1 test

I have igmp, pim, igmpv2 setup on all interfaces.

on vlan test I have a linux box. it used to be on DMZ vlan and directly connected to bdr01, I could join a MC group, via bdr01

now that its on vlan test, I run the same test and I can see the join request on intRtr1 but I don’t see it making any requests up stream to the ASA.

I’m a bit stumped on this, not sure how to debug any further.

Off interest, my 224/8 is routed via dgw, should I be setting this on all the interface that might have MC traffic ?

A

I’m new to multicasting, but isn’t 224.0.0.0/8 intended to be link-local multicast groups? If so, then joins to any groups in that range shouldn’t attempt to go through a router at all.

Beyond that -

Make sure PIM is active (and multicast groups are allowed through) on your ASA.
Make sure the INT router sees ASA as a neighbor in PIM.
You do not need to (and in fact should not) add routes for multicast addresses in unicast routing table.
(PIM is a dynamic routing protocol for multicasting)

If ASA and INT router don’t play nice, try connecting Linux box directly to ASA on the MAN network as a test… Maybe the ASA only supports IGMP proxy… If that’s so, perhaps changing INT router to IGMP proxy will be enough.

Yes I think your right about 224/8 - its meant to be 224/4 !

So it was seeing it as the DR router, but the ASA wasn’t picking up the join request.

Going to remove the asa and put some more CCR’s see if I can get it to work.

as for the MC routing. I actually had a linux box on the dmz vlan . so that it was


providor

VV

ROS

VV

Linux box

I had to add in the static route for that lan otherwise it didn’t sent the mc packet there..

more testing :slight_smile:

In the simple-case that worked previously, I would have expected the configuration to be (at least) to enable IGMP proxy on the MT, and set the ISP-facing interface as the “upstream” and all others as the downstream. Static routes to 224.0.0.0/4 shouldn’t have worked.

Anyway - you’ll want to enable PIM on the bdr01 on both interfaces (Don’t forget to specify the RP).
Then check for neighbor on ISP side.
If you see all of that, then remove the static route to 224.0.0.0/4 and see if things still work.


Basically, the chain from sender to listener (recipient) looks like this:

[Source] <—{IGMP} ---- [Router] —{PIM}— [Router] —{PIM}— [Router] <—{IGMP}— [Recipient]

The IGMP = the request “hey, I want to subscribe to group 231.101.25.10 please!” and PIM is like “hey, I have a guy who wants 231.101.25.10” This bounces its way to the Source, who is either already sending on that group or begins sending. Every router that has heard the IGMP or the PIM version of the request, sends the ensuing traffic down the link the request came from. (no unicast address required)

So basically - all routers in the middle need PIM, the edge routers need IGMP.

So I think I have that (the last bit).

But what I am seeing is my client → mtr works okay I can check join request but I don’t see the request being sent to the next mtr. I have tried setting RP for all the mtr to point to the ASA but I don’t see anything their either.

I do have both igmp and pim setup on all the interfaces .. should I remove igmp from vlans/interfaces that don’t have clients or sources, but only routers ?

A

Hi

Decided to start from scratch I have 1 router ybortr1
vlan ybotv
vlan ybostaffsup

I have a multicast sender on ybotv . 10.172.201.100
I have a mulitcast recieved on ybostaffsup 10.172.208.101

Not sure why its coming up as excluded here ?
[admin@ybortr1] /routing pim> igmp-group print detail where group =239.192.0.1
Flags: v1 - IGMPv1, v2 - IGMPv2, v3 - IGMPv3, I - include, E - exclude, F - forward, D - don’t forward
v2E interface=yboStaffSup group=239.192.0.1 source=0.0.0.0 last-reported=10.172.208.101 timeout=2m57s


[admin@ybortr1] /routing pim> join print detail where group =239.192.0.1
Flags: RP - (,,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt)
SG group=239.192.0.1 source=0.0.0.0 join-state=not-joined local-receivers=yboStaffSup i-am-designated-router=ybotv joined-rp=“” joined-wc=“” joined=“” pruned=“” prune-pending=“” assert-winner=“” assert-loser=“”
assert-winner-wc=“” assert-loser-wc=“” assert-tracking-wc=“” could-assert-wc=“” immediate-rp=“” immediate-wc=“” immediate-sg-rpt=“” include-wc=“”

SG_rpt group=239.192.0.1 source=10.172.201.100 upsteam-interface-src=ybotv join-state=joined join-register-state=joined timeout=44s keepalive-timer=yes local-receivers=yboStaffSup i-am-designated-router=ybotv joined-rp=“”
joined-wc=“” joined=“” pruned=“” prune-pending=“” assert-winner=“” assert-loser=“” assert-winner-wc=“” assert-loser-wc=“” could-assert-wc=“” immediate-rp=“” immediate-wc=“” immediate-sg=“” immediate-sg-rpt=“”
include-wc=“”


So why are the 2 not joining together ?

in regards to firewalling I presume I need just an entry on my input chain to allow 239.192.0.1 on the ybotv interface

A

EDIT

I noticed in the logs
15:36:08 pim,warning RX WHOLEPKT signal: vif_index = 31 src = 10.172.201.100 dst = 239.192.0.1 len = 1356: no RP address for this group

so i add in a RP
/routing pim rp
add address=10.172.201.1 group=239.192.0.1/32

[admin@ybortr1] /routing pim> join print detail where group =239.192.0.1
Flags: RP - (,,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt)
SG group=239.192.0.1 source=0.0.0.0 rp=10.172.201.1 upsteam-interface-rp=register join-state=not-joined local-receivers=yboStaffSup i-am-designated-router=ybotv joined-rp=“” joined-wc=“” joined=“” pruned=“”
prune-pending=“” assert-winner=“” assert-loser=“” assert-winner-wc=“” assert-loser-wc=“” assert-tracking-wc=“” could-assert-wc=“” immediate-rp=“” immediate-wc=“” immediate-sg-rpt=“” include-wc=“”

SG_rpt group=239.192.0.1 source=10.172.201.100 rp=10.172.201.1 upsteam-interface-src=ybotv upsteam-interface-rp=register join-state=not-joined join-register-state=unknown keepalive-timer=yes local-receivers=yboStaffSup
i-am-designated-router=ybotv joined-rp=“” joined-wc=“” joined=“” pruned=“” prune-pending=“” assert-winner=“” assert-loser=“” assert-winner-wc=“” assert-loser-wc=“” could-assert-wc=“” immediate-rp=“” immediate-wc=“”
immediate-sg=“” immediate-sg-rpt=“” include-wc=“”

Added to the input chain from in-interface=ybotv dst-address=239.192.0.1 but I am not seeing any traffic on that I will try added something similiar to the forward table


EDIT2
I double checked
http://wiki.mikrotik.com/wiki/Manual:Multicast_detailed_example

and i notice the last step in the example is to add the route info, I can’t do that on the test setup I have the sender is a IPTV box and it is just pushing out MC packets to the network, but not via ybortr1

I think Exclude is actually good - in Multicasting, “Exclude” means “exclude this from filtering” (or at least that’s how I’ve interpreted things I’ve read about IGMP snooping)

I read this:

[admin@ybortr1] /routing pim> igmp-group print detail where group =239.192.0.1 
Flags: v1 - IGMPv1, v2 - IGMPv2, v3 - IGMPv3, I - include, E - exclude, F - forward, D - don't forward 
v2E interface=yboStaffSup group=239.192.0.1 source=0.0.0.0 last-reported=10.172.208.101 timeout=2m57s

As this: “interface yboStaffSup has a listener 10.172.208.101 who is listening to 239.192.0.1 from any sender.”
This sounds good to me…

It was never really all this hard in Cisco to me - enabling PIM-Sparse on all interfaces that need to be able to multicast, or link to other mcast-routers is pretty much all it takes (and defining the RP).

I’m going to try simulating this and see if I can offer any further insights.

Seems like time is my friend.

I actually have 2 routers on the ybostaffsupp vlan and the other one was the DR and it didn’t have a RP pointing to ybortr1.

once I set dr-priority on ybortr1 it started to work.

I was planning on setting 1 RP with all the info, because I have an ASA 5520 and it doesn’t seem to understand BSR. I would like to just setup BSR on all my routeros routers and let them work out..

EDIT: Your reply came while I was generating this post - glad to see you’ve got it working! I’ve kept this reply up just in case anyone else reads this thread, they can see an example of “it’s working” looks like in the pim join prints.

One comment - you keep mentioning “input filter” - remember that this chain only applies to packets talking to the Mikrotik router itself - which in your case would be the IGMP messages, but not the multicast traffic itself. (as far as I know)

I created a test network with 2 cisco routers for multicast sender/listener test points, and a Miktotik in the middle running v6.27

[R2] ------ [Mikrotik] ----- [R1]

R1:
Loop0 = 1.1.1.1/32
Fa0/0 = 10.3.1.1/24
Default GW = 10.3.1.3 (Mikrotik)

R2:
Loop0=2.2.2.2/32
Fa0/0 = 10.3.2.2/24
Default GW = 10.3.2.3 (Mikrotik)

The Mikrotik was empty config, and then set up as follows:

/interface bridge
add name=bridge1
/ip address
add address=10.3.1.3/24 interface=ether1 network=10.3.1.0
add address=10.3.2.3/24 interface=ether2 network=10.3.2.0
add address=3.3.3.3/32 interface=bridge1 network=3.3.3.3
/ip route
add distance=1 dst-address=1.1.1.1/32 gateway=10.3.1.1
add distance=1 dst-address=2.2.2.2/32 gateway=10.3.2.2
/routing pim interface
add
/routing pim rp
add address=3.3.3.3

On both Ciscos, I enabled multicast routing globally - e.g.: R1(config)#ip multicast-routing

Then on R2, I enabled listener for group 230.1.1.1 and on R1, I can now ping 230.1.1.1 and receive reply from 10.3.2.2

Here is the output of your same commands from my lab:

[admin@Mikrotik] /routing pim igmp-group> print detail where group=230.1.1.1
Flags: v1 - IGMPv1, v2 - IGMPv2, v3 - IGMPv3,
I - include, E - exclude, F - forward, D - don't forward
 v2E interface=ether2 group=230.1.1.1 source=0.0.0.0 last-reported=10.3.2.2
      timeout=2m23s

[admin@Mikrotik] /routing pim> join print detail where group=230.1.1.1
Flags: RP - (*,*,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt)
     SG group=230.1.1.1 source=0.0.0.0 rp=3.3.3.3
         upsteam-interface-rp=register join-state=joined timeout=50s
         local-receivers=ether2 i-am-designated-router=ether1,ether2,bridge1
         joined-rp="" joined-wc="" joined="" pruned="" prune-pending=""
         assert-winner="" assert-loser="" assert-winner-wc=""
         assert-loser-wc="" assert-tracking-wc=ether2 could-assert-wc=ether2
         immediate-rp="" immediate-wc=ether2 immediate-sg-rpt=ether2
         include-wc=ether2

 SG_rpt group=230.1.1.1 source=10.3.1.1 rp=3.3.3.3
         upsteam-interface-src=ether1 upsteam-interface-rp=register
         join-state=joined join-register-state=unknown timeout=50s
         keepalive-timer=yes local-receivers=ether2
         i-am-designated-router=ether1,ether2,bridge1 joined-rp=""
         joined-wc="" joined="" pruned="" prune-pending="" assert-winner=""
         assert-loser="" assert-winner-wc="" assert-loser-wc=""
         could-assert-wc=ether2 immediate-rp="" immediate-wc=ether2
         immediate-sg="" immediate-sg-rpt=ether2 include-wc=ether2

NOTE: The SG_rpt entry only shows up for a short while after the ping,

The only thing that’s immediately obvious to me that I did differently than you is that I specified a “loopback interface” on the Mikrotik as bridge1, and put a /32 address on it, and defined it as the RP for all groups… I only had to do this in the Mikrotik, and did not have to specify any multicast routes or unicast routes for 224.0.0.0/4 in the source/listener routers.

In routers, it’s just good practice to create a /32 “loopback” interface and in all cases, use that /32 address as the official IP address of the router itself. Any interface addresses are just there to make IP forwarding work. I don’t know if that’s the magic here, or if the Cisco routers are just easy-to-please, but at least now you have some example output from a working setup.

Can you post the cisco relevant configs as well. I would be interested.

You right about the filtering. its in the forward table.

So how can I stop certain interfaces from getting it if I want to ? There is some mention of a multicast chain, but no real examples.

and why did you pick on the routeros to be the RP ?

Cisco configs were very minimal - I’ll post config of R2 when I get to my office.

To stop certain interfaces without using filters, you could remove PIM interfaces. Actually, you would remove the “any” interface (or disable PIM and IGMP checkboxes on it), and then explicitly add each interface where you want multicast to be active. So ether1, ether2, etc would not be dynamic interfaces but static / manually created as PIM interfaces.
(This is how I like to do OSPF interfaces also - having something set up to always automatically use every interface can be convenient because you don’t have to remember to activate it every time you provision a new interface, but it’s very hard to exclude one interface from such a policy if you need a new interface to NOT appear in OSPF/IGMP/whatever, so I don’t usually use the “Any” interface)

I chose Routeros to be the RP because of the topology. I was testing Routeros as the multicast forwarder, and using Cisco as the “clients,” which is Why MT was in the middle. If I had put one Cisco router in the middle between two Mikrotik routers, then the Cisco would be the RP.

Speaking of RP… I seem to remember an earlier post where you mentioned that your ISP gave you an address to use for RP. This would be your RP for any multicast groups you want to receive from the Internet - If you want to use some groups in your own network, then use your border Mikrotik as your “inside” RP, and the ISP for the “public” RP.

Tried an ascii diagram. Expand my testing.


So
source is on vlan ybotv
Client is on vlan ybostaff
ybortr1 has leg in ybotv and ybostaff
ybortr2 has leg in ybostaff only


      +--------+                        
      |SRC     |                        
      +---+----+                        
          |                             
   +-----++------------+------------+   
         |                             
      +--+--+       +--+---+            
      |RTR1 |       |RTR2  |            
      +--+--+       +--+---+            
         |             |                
   +-----+-------------+------------+   
                                        
      +----+                            
      |CLT |                            
      +----+                            

ybortr2 is the DR router for ybostaff
I added in a rp on ybortr1 and ybortr2 (pointing to ybortr1) for the MC group 239.192.0.1
But its not flowing whilst ybortr2 is dr


so ybortr1.. 10.172.255.11 is on a loopback (bridge) interface, available via OSPF..

/routing pim interface
add interface=GSYBO
add interface=yboStaffSup
add interface=ybotv
add interface=yboStaff
/routing pim rp
add address=10.31.19.1 comment="YB RP dcfw1"
add address=10.172.255.11 group=239.192.0.1/32 hash-mask-length=32



Flags: X - disabled, I - inactive, D - dynamic, R - designated-router, v1 - IGMPv1, v2 - IGMPv2, v3 - IGMPv3 
 0   v2 interface=GSYBO protocols=pim,igmp preferred-source-address=0.0.0.0 dr-priority=1 hello-period=30s hello-trigerred-delay=5s 
        hello-holdtime=1m45s propagation-delay=50 override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m 
        join-prune-holdtime=3m30s assert-time=3m assert-override-interval=3s alternative-subnets="" igmp-version=IGMPv2 

 1   v2 interface=yboStaffSup protocols=pim,igmp preferred-source-address=0.0.0.0 dr-priority=1 hello-period=30s hello-trigerred-delay=5s 
        hello-holdtime=1m45s propagation-delay=50 override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m 
        join-prune-holdtime=3m30s assert-time=3m assert-override-interval=3s alternative-subnets="" igmp-version=IGMPv2 

 2  Rv2 interface=ybotv protocols=pim,igmp preferred-source-address=0.0.0.0 dr-priority=1 hello-period=30s hello-trigerred-delay=5s 
        hello-holdtime=1m45s propagation-delay=50 override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m 
        join-prune-holdtime=3m30s assert-time=3m assert-override-interval=3s alternative-subnets="" igmp-version=IGMPv2 

 3   v2 interface=yboStaff protocols=pim,igmp preferred-source-address=0.0.0.0 dr-priority=1 hello-period=30s hello-trigerred-delay=5s 
        hello-holdtime=1m45s propagation-delay=50 override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m 
        join-prune-holdtime=3m30s assert-time=3m assert-override-interval=3s alternative-subnets="" igmp-version=IGMPv2 

 4 DR   interface=register protocols=pim dr-priority=1 hello-period=30s hello-trigerred-delay=5s hello-holdtime=1m45s propagation-delay=50 
        override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m join-prune-holdtime=3m30s assert-time=3m 
        assert-override-interval=3s alternative-subnets=""



[admin@ybortr1] /routing pim> join print detail
Flags: RP - (*,*,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt)
     WC group=224.0.0.0 source=10.31.19.1 rp=10.31.19.1 upsteam-interface-rp=GSYBO join-state=not-joined i-am-designated-router=ybotv joined-rp=""
         joined="" pruned="" prune-pending="" could-assert-wc="" immediate-rp="" immediate-sg-rpt=""

     WC group=224.0.0.0 source=10.172.255.11 rp=10.172.255.11 upsteam-interface-rp=register join-state=not-joined i-am-designated-router=ybotv
         joined-rp="" joined="" pruned="" prune-pending="" could-assert-wc="" immediate-rp="" immediate-sg-rpt=""

     SG group=230.0.0.3 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=not-joined
         local-receivers=yboStaffSup i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" assert-winner=""
         assert-loser="" assert-winner-wc="" assert-loser-wc="" assert-tracking-wc="" could-assert-wc="" immediate-rp="" immediate-wc=""
         immediate-sg-rpt="" include-wc=""

     SG group=239.192.0.1 source=0.0.0.0 rp=10.172.255.11 upsteam-interface-rp=register join-state=not-joined
         local-receivers=yboStaff,yboStaff,yboStaff i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned="" prune-pending=""
         assert-winner="" assert-loser="" assert-winner-wc="" assert-loser-wc="" assert-tracking-wc="" could-assert-wc="" immediate-rp=""
         immediate-wc="" immediate-sg-rpt="" include-wc=""

     SG group=239.203.13.64 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=not-joined
         local-receivers=yboStaffSup i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" assert-winner=""
         assert-loser="" assert-winner-wc="" assert-loser-wc="" assert-tracking-wc="" could-assert-wc="" immediate-rp="" immediate-wc=""
         immediate-sg-rpt="" include-wc=""

     SG group=239.225.100.100 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=not-joined
         local-receivers=yboStaff,yboStaff,yboStaff i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned="" prune-pending=""
         assert-winner="" assert-loser="" assert-winner-wc="" assert-loser-wc="" assert-tracking-wc="" could-assert-wc="" immediate-rp=""
         immediate-wc="" immediate-sg-rpt="" include-wc=""

     SG group=239.255.255.246 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=joined timeout=40s
         local-receivers=ybotv i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" assert-winner=""
         assert-loser="" assert-winner-wc="" assert-loser-wc="" assert-tracking-wc=GSYBO,ybotv could-assert-wc=ybotv immediate-rp=""
         immediate-wc=ybotv immediate-sg-rpt=ybotv include-wc=ybotv

     SG group=239.255.255.250 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=joined timeout=40s
         local-receivers=yboStaff,ybotv,yboStaff,yboStaffSup,yboStaff i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned=""
         prune-pending="" assert-winner=ybotv assert-loser="" assert-winner-wc=ybotv assert-loser-wc="" assert-tracking-wc=GSYBO,ybotv
         could-assert-wc=ybotv immediate-rp="" immediate-wc=ybotv immediate-sg-rpt=ybotv include-wc=ybotv

        group=239.255.255.250 source=10.172.208.100 rp=10.31.19.1 upsteam-interface-src=yboStaffSup upsteam-interface-rp=GSYBO
         upsteam-pim-nexthop=10.31.17.3 join-state=rpt-pruned local-receivers=yboStaff,ybotv,yboStaff,yboStaffSup,yboStaff
         i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" assert-winner-wc=ybotv assert-loser-wc=""
         could-assert-wc=ybotv immediate-rp="" immediate-wc=ybotv immediate-sg-rpt=ybotv include-wc=ybotv
 
 SG_rpt group=239.192.0.1 source=10.172.201.100 rp=10.172.255.11 upsteam-interface-src=ybotv upsteam-interface-rp=register join-state=not-joined
         join-register-state=unknown keepalive-timer=yes local-receivers=yboStaff,yboStaff,yboStaff i-am-designated-router=ybotv joined-rp=""
         joined-wc="" joined="" pruned="" prune-pending="" assert-winner="" assert-loser="" assert-winner-wc="" assert-loser-wc="" could-assert-wc=""
         immediate-rp="" immediate-wc="" immediate-sg="" immediate-sg-rpt="" include-wc=""
 
 SG_rpt group=239.255.255.250 source=10.172.208.100 rp=10.31.19.1 upsteam-interface-src=yboStaffSup upsteam-interface-rp=GSYBO join-state=joined
         join-register-state=unknown timeout=21s keepalive-timer=yes local-receivers=yboStaff,ybotv,yboStaff,yboStaffSup,yboStaff
         i-am-designated-router=ybotv joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" assert-winner="" assert-loser=""
         assert-winner-wc=ybotv assert-loser-wc="" could-assert-wc=ybotv immediate-rp="" immediate-wc=ybotv immediate-sg="" immediate-sg-rpt=ybotv
         include-wc=ybotv

for ybortr2

/routing pim interface
add interface=GSYBO
add interface=yboStaffSup
add interface=yboStaff
/routing pim rp
add address=10.31.19.1 comment="YB RP dcfw1"
add address=10.172.255.11 group=239.192.0.1/32 hash-mask-length=32



[admin@ybortr2] /routing pim> interface print detail 
Flags: X - disabled, I - inactive, D - dynamic, R - designated-router, v1 - IGMPv1, v2 - IGMPv2, v3 - IGMPv3 
 0   v2 interface=GSYBO protocols=pim,igmp preferred-source-address=0.0.0.0 dr-priority=1 hello-period=30s hello-trigerred-delay=5s 
        hello-holdtime=1m45s propagation-delay=50 override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m 
        join-prune-holdtime=3m30s assert-time=3m assert-override-interval=3s alternative-subnets="" igmp-version=IGMPv2 

 1  Rv2 interface=yboStaffSup protocols=pim,igmp preferred-source-address=0.0.0.0 dr-priority=1 hello-period=30s hello-trigerred-delay=5s 
        hello-holdtime=1m45s propagation-delay=50 override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m 
        join-prune-holdtime=3m30s assert-time=3m assert-override-interval=3s alternative-subnets="" igmp-version=IGMPv2 

 2  Rv2 interface=yboStaff protocols=pim,igmp preferred-source-address=0.0.0.0 dr-priority=1 hello-period=30s hello-trigerred-delay=5s 
        hello-holdtime=1m45s propagation-delay=50 override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m 
        join-prune-holdtime=3m30s assert-time=3m assert-override-interval=3s alternative-subnets="" igmp-version=IGMPv2 

 3 DR   interface=register protocols=pim dr-priority=1 hello-period=30s hello-trigerred-delay=5s hello-holdtime=1m45s propagation-delay=50 
        override-interval=250 tracking-support=yes require-hello=yes join-prune-period=1m join-prune-holdtime=3m30s assert-time=3m 
        assert-override-interval=3s alternative-subnets=""



Flags: RP - (*,*,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt) 
     WC group=224.0.0.0 source=10.31.19.1 rp=10.31.19.1 upsteam-interface-rp=GSYBO join-state=not-joined i-am-designated-router=yboStaff,yboStaffSup 
         joined-rp="" joined="" pruned="" prune-pending="" could-assert-wc="" immediate-rp="" immediate-sg-rpt="" 

     WC group=224.0.0.0 source=10.172.255.11 rp=10.172.255.11 join-state=not-joined i-am-designated-router=yboStaff,yboStaffSup joined-rp="" 
         joined="" pruned="" prune-pending="" could-assert-wc="" immediate-rp="" immediate-sg-rpt="" 

     SG group=230.0.0.3 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=joined timeout=7s 
         local-receivers=yboStaffSup i-am-designated-router=yboStaff,yboStaffSup joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" 
         assert-winner=yboStaffSup assert-loser="" assert-winner-wc=yboStaffSup assert-loser-wc="" assert-tracking-wc=GSYBO,yboStaffSup 
         could-assert-wc=yboStaffSup immediate-rp="" immediate-wc=yboStaffSup immediate-sg-rpt=yboStaffSup include-wc=yboStaffSup 

     SG group=239.192.0.1 source=0.0.0.0 rp=10.172.255.11 join-state=joined timeout=49s local-receivers=yboStaff 
         i-am-designated-router=yboStaff,yboStaffSup joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" assert-winner="" assert-loser="" 
         assert-winner-wc="" assert-loser-wc="" assert-tracking-wc=yboStaff could-assert-wc=yboStaff immediate-rp="" immediate-wc=yboStaff 
         immediate-sg-rpt=yboStaff include-wc=yboStaff 

     SG group=239.203.13.64 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=joined timeout=7s 
         local-receivers=yboStaffSup i-am-designated-router=yboStaff,yboStaffSup joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" 
         assert-winner=yboStaffSup assert-loser="" assert-winner-wc=yboStaffSup assert-loser-wc="" assert-tracking-wc=GSYBO,yboStaffSup 
         could-assert-wc=yboStaffSup immediate-rp="" immediate-wc=yboStaffSup immediate-sg-rpt=yboStaffSup include-wc=yboStaffSup 

     SG group=239.225.100.100 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=joined timeout=49s 
         local-receivers=yboStaff i-am-designated-router=yboStaff,yboStaffSup joined-rp="" joined-wc="" joined="" pruned="" prune-pending="" 
         assert-winner="" assert-loser="" assert-winner-wc="" assert-loser-wc="" assert-tracking-wc=GSYBO,yboStaff could-assert-wc=yboStaff 
         immediate-rp="" immediate-wc=yboStaff immediate-sg-rpt=yboStaff include-wc=yboStaff 

     SG group=239.255.255.250 source=0.0.0.0 rp=10.31.19.1 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=joined timeout=2m52s 
         local-receivers=yboStaff,yboStaffSup i-am-designated-router=yboStaff,yboStaffSup joined-rp="" joined-wc="" joined="" pruned="" 
         prune-pending="" assert-winner=yboStaff,yboStaffSup assert-loser="" assert-winner-wc=yboStaff,yboStaffSup assert-loser-wc="" 
         assert-tracking-wc=GSYBO,yboStaff,yboStaffSup could-assert-wc=yboStaff,yboStaffSup immediate-rp="" immediate-wc=yboStaff,yboStaffSup 
         immediate-sg-rpt=yboStaff,yboStaffSup include-wc=yboStaff,yboStaffSup

Not sure why they are not joining up

When i set DR on ybortr1 on ybostaff interface it works, when i set it back to default so that ybortr2 takes over it doesn’t work

Just for any one else that gets to this.

I have solved my problem

I remove the static RP entries and added in a rp-candidate on the ybostaff interface on ybortr1. then ybortr2 picked it up

Glad you got it working.

ybortr2 should definitely not be DR. It’s a dead-end street. DR is for multicasting like “default gateway” is for unicast routing. You wouldn’t make ybotr2 be the default gw, right? I’m not sure why you would have wanted it to be DR, but that’s what experimentation is for, right?

In general, the RP should be at the “center” of your network - or near the sources.
You can have different RP for different multicast groups
Multicast works to create a tree with the source is the root, and only one possible path leading to any given listener.

So it wasn’t me that was picking it as DR. both ybortr1 and ybortr2 had dr priority 1. ybortr2 got elected.

Well that makes sense.
Good catch! :smiley:

I have drawn a diagram of my larger problem

My external MC source is connected to my frist hop ros box (VM) and when I attache a test client on the back vlan “test MC” it recieves info.

on the cisco i have pim, igmp on for outside and inside and I setup a rp-address to point to the frist hop.

on the ros boxes inside, I had setup rp to point to the cisco, but when I try my second mc test I get nothing no registration on the cisco nothing on the first hop

Don’t actually see anything on anything but the first ccr1039 router ..

100% of your network needs to use the same RP. Otherwise, your network is split into two multicast areas that are isolated from each other. All of your inside CCR should use first-hop as RP, and so should the Cisco.

Does Test MC receiver 1 work if you move it behind the ASA?

The way that I would “divide and conquer” this network (after making sure test works from behind ASA) would be to disable multicast on all routers except for one primary path. (it appears that there are two general paths from Cisco to the Listener, each one having redundant pairs of routers).
If you get it working when there is only one path, then start enabling the other halves of the redundant pairs in that same path, then start enabling the other path.

I think that in all routers, they should see the DR on any given segment be the same as the router they would use to reach the RP address.

But

I don’t want first hop to be the global DR.

I don’t mind it being the DR for all the MC groups it deals with

because if I bring on any more MC sources, they might not be attached to first hop.

Now how to do that, do I set frist hop dr as a static or do I setup rp-candidates ? (and what about BSR).

so say I’m setting up g1 ccr1036. I setup a static rp entry to frist hop. what do i need to allow on the asa to forward packets, is it even forwarded or is it PIM from g1 → asa and then asa-> first hop as pim ?

Honestly, the ASA is a giant ? for me - Firewalls can make life difficult to be sure.
I am sure the Cisco community has lots of such information.

If your MC source is going to be outside and stay outside, then you may have no choice about RP (other than using the ASA, perhaps) I think the IP address of the RP has to be in the routing table for your network, so an RP behind ASA (Assuming that you’re doing NAT) could be strange behavior as well.

From my understanding, joins are sent unicast to the RP by the PIM router with the IGMP interface directly attached to the source/listener, so the ASA is going to need to allow something, I’m sure.

You can have different RP for different groups.

As for auto-RP, I’ve never done this, so I cannot be much help for that part.