Today we will be discussing MSDP with BGP ipv4 multicast address-family.

The topology is simple we have taken four routers R1 in BGP AS 1 , R5 in BGP AS 5 and R2,R3,R4 are in confederation 64511, our goal is to move multicast traffic from R1 to R5 , we are running Multicast Sparse-mode and using PIM BSR , all loopback0 interface of each router has joined a group 234.0.0.R where R is the router number.The sample diagram of gns3 is shown below.


Topology Overview:-

1.We are running OSPF Area 0 between R2 , R4  and R3 as IGP and put default route pointing towards EBGP peer on R1 and R5 towards R2 and R3 for the purpose of Back route,rest of the BGP and OSPF configuration are normal R4 is Route Reflector, rest nothing fancy.

2.We advertised Loopback0 interface of R1,R4and R5 into bgp address-family ipv4 and also in address-family ipv4 multicast.

Steps to configure Multicast over BGP cloud:-

1.Enable Multicast Routing by the command “ip multicast-routing” on each router.

2.Enable pim sparse-mode on every interface on a router by the command “ip pim sparse-mode” under interface config mode.

3.Join multicast group 234.0.0.R where R is router number on every router Lo0pback0 interface by the command “ip igmp join-group 234.0.0.R” under interface config mode.

4.We made PIM RP and BSR both on R1 Loopback0 for BGP AS 1.

5.We made PIM RP on R4 Loopback0 and BSR on R2 Loopback0 for BGP AS 243.

6.We made PIM RP R5 and BSR on R5 Loopback0 for BGP AS 5.

7.We set our PIM border on R2 S0/0 and R3 S0/0 by the command “ip pim bsr-border” under interface config mode that the PIM RP information cannot be used outside our own AS.

8.We then start building MSDP peering from AS 1 and AS 5 to AS 243 with the command “ip msdp peer x.x.x.x connect-source loopback0 remote-as Y”, make sure you make your MSDP peers between both AS’s RP only(R1-R4 and R5-R4), else it will not work.

9.We can check the MSDP output with the command “sh ip msdp summary”.

R4#sh run | i msdp
ip msdp peer 1.1.1.1 connect-source Loopback0 remote-as 1
ip msdp peer 5.5.5.5 connect-source Loopback0 remote-as 5
R4#sh ip msdp summ
MSDP Peer Status Summary
Peer Address     AS    State    Uptime/  Reset SA    Peer Name
Downtime Count Count
1.1.1.1          1     Up       00:19:59 1     0     ?
5.5.5.5          5     Up       00:26:02 0     0     ?

10.Then we will enable BGP address-family ipv4 multicast between R1 and R2,R2 and R4,R4 and R3, and lastly between R3 to R5.The sample config of R2 is below.

R2#sh run | s bgp
router bgp 64511
bgp log-neighbor-changes
bgp confederation identifier 243
neighbor 4.4.4.4 remote-as 64511
neighbor 4.4.4.4 update-source Loopback0
neighbor 12.12.12.1 remote-as 1
!
address-family ipv4
neighbor 4.4.4.4 activate
neighbor 4.4.4.4 next-hop-self
neighbor 12.12.12.1 activate
no auto-summary
no synchronization
exit-address-family
!
address-family ipv4 multicast
neighbor 4.4.4.4 activate
neighbor 12.12.12.1 activate
no auto-summary
no synchronization
exit-address-family

NOTE:-Make sure not to set “next-hop-self” on session between R2 to R4 and R3 to R4 in address-family ipv4 multicast as shown in the above config.

11.Upto this point our MSDP peers are up and our BGP ipv4 multicast address-families are up , now this is the time to run some SHOW commands to prove that we are correct till now.

R1#sh ip msdp summ
MSDP Peer Status Summary
Peer Address     AS    State    Uptime/  Reset SA    Peer Name
Downtime Count Count
4.4.4.4          243   Up       00:02:53 0     1     ?

R1#sh ip bgp ipv4 multicast
BGP table version is 4, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale
Origin codes: i – IGP, e – EGP, ? – incomplete

Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.1/32       0.0.0.0                  0         32768 i
*> 4.4.4.4/32       12.12.12.2                             0 243 i
*> 5.5.5.5/32       12.12.12.2                             0 243 5 i

R1#sh ip pim rp mapp
PIM Group-to-RP Mappings
This system is a candidate RP (v2)
This system is the Bootstrap Router (v2)

Group(s) 224.0.0.0/4
RP 1.1.1.1 (?), v2
Info source: 1.1.1.1 (?), via bootstrap, priority 0, holdtime 150
Uptime: 00:12:19, expires: 00:02:07
R1#sh ip pim int

Address          Interface                Ver/   Nbr    Query  DR     DR
Mode   Count  Intvl  Prior
1.1.1.1          Loopback0                v2/S   0      30     1      1.1.1.1
12.12.12.1       Serial0/0                v2/S   1      30     1      0.0.0.0

R1#sh ip pim neighbor
PIM Neighbor Table
Mode: B – Bidir Capable, DR – Designated Router, N – Default DR Priority,
S – State Refresh Capable
Neighbor          Interface                Uptime/Expires    Ver   DR
Address                                                            Prio/Mode
12.12.12.2        Serial0/0                00:52:30/00:01:39 v2    1 / S

R1#sh ip igmp groups
IGMP Connected Group Membership
Group Address    Interface                Uptime    Expires   Last Reporter   Group Accounted
234.0.0.1        Loopback0                00:55:15  00:02:35  1.1.1.1
224.0.1.40       Loopback0                00:55:15  00:02:33  1.1.1.1

Same verification commands run on R5 and found the configuration healthy and working.

Now this is the time to check our configuration is working in the way that we were supposed to,we can check by pinging the remote end R5 IGMP join group 234.0.0.5 from R1 , if this is working then we are in a good shape.

R1#ping 234.0.0.5

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 234.0.0.5, timeout is 2 seconds:

Reply to request 0 from 35.35.35.5, 52 ms
Reply to request 0 from 35.35.35.5, 88 ms

–>>Boom and it is working like a champ.Lastly we will also check from R5 to R1.

R5#ping 234.0.0.1

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 234.0.0.1, timeout is 2 seconds:

Reply to request 0 from 12.12.12.1, 148 ms
Reply to request 0 from 12.12.12.1, 192 ms

Again the ping results shows that we indeed made it working from both ends