Multicast routing issue

cool, you have been a help so far.

I will do some testing and packet dumping :slight_smile:

http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/115804-asa-multi-probs-00.html

(what can I say? I got curious)

This also gives you a few clues about the typical behavior of multicast traffic.

Basically, the allow rules should allow inbound IP packets from Internet with src=any, or specific multicast sources as needed and dst=group (e.g. 231.1.0.12) I suppose that outbound multicast traffic would just get the SRC natted to the ASA.

the path from the inside via the asa to first hop is not natted. so no issue there I believe !

Thinking ahead to possible future issues in the full solution - all of your “paired” routers, such as Y1 and Y2 - are they using HSRP/VRRP on the networks, or are you using dynamic routing? Apparently that can cause issues since the unicast route to the RP will point through a gateway that does not exist in multicast (because the individual routers use their actual address when speaking PIM)

If you’re using OSPF to balance / redundancy the various links, then PIM shouldn’t get confused.

Oh, vrrp on non-wan link and no-vrrp on wan link.

Okay next step of testing.

I have 233.71.185.130 available via the first hop router
I have a client on ybostaffsup registering 233.71.185.130 on the interface with the DR router

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

and

[admin@ybortr2] /routing pim> join print detail where group =233.71.185.130
Flags: RP - (*,*,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt) 
     SG group=233.71.185.130 source=0.0.0.0 join-state=joined timeout=52s local-receivers=yboStaffSup 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=yboStaffSup could-assert-wc=yboStaffSup immediate-rp="" immediate-wc=yboStaffSup immediate-sg-rpt=yboStaffSup

So now ybortr2 (y2) doesn’t know how to get to 233.71.185.130. Do I need to add in a rp entry on each rtr ?

add group=233.71.185.0/24 comment="ASX Itch" address=10.43.200.6



[admin@ybortr2] /routing pim> join print detail where group =233.71.185.130                   
Flags: RP - (*,*,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt) 
     SG group=233.71.185.130 source=0.0.0.0 rp=10.43.200.6 upsteam-interface-rp=GSYBO upsteam-pim-nexthop=10.31.17.3 join-state=joined timeout=37s 
         local-receivers=yboStaffSup 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,yboStaffSup could-assert-wc=yboStaffSup 
         immediate-rp="" immediate-wc=yboStaffSup immediate-sg-rpt=yboStaffSup include-wc=yboStaffSup

Bit better

But when i jump onto g2 (10.31.17.3) i see nothing
So add the same static rp

[admin@gsrtr2] /routing pim> join print detail where group =233.71.185.130
Flags: RP - (*,*,RP), WC - (*,G), SG - (S,G), SG_rpt - (S,G,rpt) 
     SG group=233.71.185.130 source=0.0.0.0 rp=10.43.200.6 upsteam-interface-rp=MAN upsteam-pim-nexthop=10.31.19.1 join-state=joined timeout=18s 
         local-receivers="" i-am-designated-router=GSYBO,Management joined-rp="" joined-wc="" joined=GSYBO pruned="" prune-pending="" assert-winner="" 
         assert-loser="" assert-winner-wc="" assert-loser-wc="" assert-tracking-wc=MAN,GSYBO could-assert-wc=GSYBO immediate-rp="" immediate-wc=GSYBO 
         immediate-sg-rpt=GSYBO include-wc=""

now connected - so I have to add the static rp info to all my routers

I can even see the join request on the ASA5520 … but its not forwarding it on :frowning:

But good so far

The ASA needs to know the RP address also.
According to the Cisco document I linked earlier:

Complete these steps:

! Enable multicast routing (global configuration mode).
ASA(config)#multicast-routing

! Configure static RP address
ASA(config)#pim rp-address 10.43.200.6

! Allow multicast group 224.1.2.3 from outside:
ASA(config)#access-list 105 extended permit ip any host 224.1.2.3
ASA(config)#access-group 105 in interface outside

(i would not paste the access-list commands into ASA - just use them as a reference for how the ASA sees the multicast streams themselves.)

You may need to enable pim sparse mode on the individual interfaces, but that wasn’t in this particular “look how easy it is” list of commands.

EDIT: I saw you wondering aloud “should I add the RP on every router?” - I thought I had said that, but yes, it is needed unless you’re using auto-RP.

Now I want to see you post “SUCCESS!!!”

Go the access list
added the rp-address already

But on the first hop router I dont see the join .. going to try and add a static igmp command

Cisco recommends pim-sparse mode on each interface. I somehow sense from reading the document I found that this is the default - look at the configs of the ethernet interfaces and make sure they don’t have “no pim” in their settings.

Okay getting into cisco territory.

! this is the outside
interface GigabitEthernet0/2.11
 pim dr-priority 100
 igmp join-group 233.71.185.130 !! Added this to force the IGMP 
 
interface GigabitEthernet0/3.19
 pim dr-priority 100



IP PIM Multicast Topology Table
Entry state: (*/S,G)[RPT/SPT] Protocol Uptime Info
Entry flags: KAT - Keep Alive Timer, AA - Assume Alive, PA - Probe Alive,
    RA - Really Alive, LH - Last Hop, DSS - Don't Signal Sources,
    RR - Register Received, SR - Sending Registers, E - MSDP External,
    DCC - Don't Check Connected
Interface state: Name, Uptime, Fwd, Info
Interface flags: LI - Local Interest, LD - Local Disinterest,
    II - Internal Interest, ID - Internal Disinterest,
    LH - Last Hop, AS - Assert, AB - Admin Boundary

(*,233.71.185.130) SM Up: 00:49:51 RP: 10.43.200.6
JP: Join(now) RPF: premium,10.43.200.6* Flags: 
  premium            00:16:25  off LI II 
  ybman19            00:49:51  fwd Join(00:02:39)

I can see input on show pim join stat

dcfw1/sec/act# show pim traffic 

PIM Traffic Counters
Elapsed time since counters cleared: 6d15h

                              Received     Sent
Valid PIM Packets             101866       42241     
Hello                         57581        38708     
Join-Prune                    15032        59        
Register                      3474         0         
Register Stop                 0            3474      
Assert                        0            0         
Bidir DF Election             0            0

Register stop … not sure what that mean.

access-list premium_in line 13 extended permit udp host 203.6.253.212 host 233.71.185.130 eq 31003 (hitcnt=1415) 0xaf8474d0

I can see thats the packets are making in..

but not out !

The priority 100 part on the outside interface might be the problem. next-hop router should probably be highest priority on that segment.
Also - forcing join on outside interface is not a real solution. (pretty sure you know that, though)
Is there an output rule on the inside interface that could be blocking the traffic?

I had the ROS VM at dr-priority 200, but remove the 100 from the ASA
no outbound filter.

The force join to is just to show it working.

But interestingly even though the asa is getting the MC stream on the outside interface and getting a request for it on the inside it doesn’t match the 2 together ! very annoying.

I have a acl to allow the MC in on the outside.

So progressed a bit further.

I now have a join coming from source through 2 ros servers to a cisco ASA and now onto the first hop router.

This is where the issue is

15:15:20 pim,debug RX PIM_JOIN_PRUNE from 10.43.200.1 to 224.0.0.13: (*,G) Join/Prune entry for group 233.71.185.130 RP address does not match: router RP = 203.0.119.247, message RP = 10.43.200.6

I have been given an RP to use which I have setup for my first hop rtr, but I was using the first hop rtr as the RP for my network .

and it seems like it doesn’t like it :frowning:

do I have to setup all of my internet routers to point to the providers RP ?

So I have made the changes to all the test rtrs so they point to the providers RP for the MC group I am after.

Now I have registered and I can see MC udp packets come to me on my vendors interface, but they are not being sent to the cisco firewall

 /ip route> /ip route print where 233.71.185.130 in dst-address                  
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit 
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 ADo  0.0.0.0/0                          10.43.200.1             110
 1   S  0.0.0.0/0                          10.43.200.1             250
 2 ADo  224.0.0.0/4                        10.43.200.1             110

I think line 2 is the issue, it wants to send it via 10.43.200.1, when I was testing last time I had to add a 224/4 via interface..

This could be because I have OSPF picking up 224/4 I will have to track that down

The multicast RIB/FIB tables will override the unicast ones, plus a join to a group adds a “/32” destination, so I wouldn’t think the routing table is to blame. (but it could be, I am by no means anywhere near being a mcast expert - I’m just trying to be a “second pair of eyes” with you). The “next hop” of the 224.0.0.0/4 ospf route is definitely not true for your network, though. If you simply want to override that one route for test purposes, create the same route with a static route, but set next hop to be the ASA.

I will say that it sounds like you’re on the right track with the RP address - all members of a particular group must use the same RP. If your external source is being sent to external RP, then your network must go there too. (at least for this one group).

So for 233.71.185.130, RP should be 203.0.119.247 in all of your routers.