MBGP MSDP Multicast Load Balancing Case

Guys,

Can someone please look at my setup and tell me why I cannot get the following working:

1. How can i load balance multicast traffic originating from R1 to R4 load balance over R2 and R3?

2. Why "show ip rpf 1.0.0.1" shows "failed, no route exists" on R4. I understand that in case of internal MBGP, I need next-hop-self, but in my case, i am only running external MBGP. Also, I don't want to use static "ip mroute"

 

 

  • Network:

 

              -------R2-------

             |                     |

   (lo0)-R1                     R4-(lo1)

             |                     |

              -------R3-------

 

 


* R1 is the Source

* R4's lo1 is the Receiver

* Source can reach Receiver via two equal paths R1 - R2 - R4 and R1 - R3 - R4

* Each router has its own AS (R1 in AS1, R2 in AS2, R3 in AS3, R4 in AS4)

* Each router has lo0 as RP and MBGP RouterID: R1 has 1.0.0.1/32, R2 has 2.0.0.1/32, R3 has 3.0.0.1/32, R4 has 4.0.0.1/32

* Entire network is in one OSPF area 0 (as IGP)

* Each router has been configured with MBGP (address-family ipv4 multicast) with ebgp-multihop 255

* Each router has MSDP configured as well

* IP addressing scheme:


** All the interfaces have subnet of format: 10.0.$LocalRouterNo$RemoteRouterNo.$LocalRouterNo/24

** All routers have loopback lo0: $LocalRouterNo.0.0.1/32

  •  

  •  
     
  • Configs:




R1#

ip multicast-routing

int fa1/0

 no sh

 ip add 10.0.12.1 255.255.255.0

 ip pim sparse-mode

int fa1/1

 no sh

 ip add 10.0.13.1 255.255.255.0

 ip pim sparse-mode

int lo0

 ip add 1.0.0.1 255.255.255.255

 ip pim sparse-mode

int lo1

 ip add 1.1.0.1 255.255.255.255

 ip pim sparse-mode

ip pim rp-address 1.0.0.1

router ospf 1

 network 0.0.0.0 255.255.255.255 area 0

router bgp 1

 no bgp default ipv4-unicast

 neighbor 2.0.0.1 remote-as 2

 neighbor 2.0.0.1 update-source lo0

 neighbor 2.0.0.1 ebgp-multihop

 neighbor 3.0.0.1 remote-as 3

 neighbor 3.0.0.1 update-source lo0

 neighbor 3.0.0.1 ebgp-multihop

 address-family ipv4 multicast

  network 1.0.0.1 mask 255.255.255.255

  neighbor 2.0.0.1 activate

  neighbor 3.0.0.1 activate

ip msdp peer 2.0.0.1 connect-source lo0

ip msdp peer 3.0.0.1 connect-source lo0

 

 


R2#

ip multicast-routing

int fa1/0

 no sh

 ip add 10.0.12.2 255.255.255.0

 ip pim sparse-mode

int fa1/1

 no sh

 ip add 10.0.24.2 255.255.255.0

 ip pim sparse-mode

int lo0

 ip add 2.0.0.1 255.255.255.255

 ip pim sparse-mode

ip pim rp-address 2.0.0.1

router ospf 1

 network 0.0.0.0 255.255.255.255 area 0

router bgp 2

 no bgp default ipv4-unicast

 neighbor 1.0.0.1 remote-as 1

 neighbor 1.0.0.1 update-source lo0

 neighbor 1.0.0.1 ebgp-multihop

 neighbor 4.0.0.1 remote-as 4

 neighbor 4.0.0.1 update-source lo0

 neighbor 4.0.0.1 ebgp-multihop

 address-family ipv4 multicast

  network 2.0.0.1 mask 255.255.255.255

  neighbor 1.0.0.1 activate

  neighbor 4.0.0.1 activate

ip msdp peer 1.0.0.1 connect-source lo0

ip msdp peer 4.0.0.1 connect-source lo0

 

 


R3#

ip multicast-routing

int fa1/0

 no sh

 ip add 10.0.13.3 255.255.255.0

 ip pim sparse-mode

int fa1/1

 no sh

 ip add 10.0.34.3 255.255.255.0

 ip pim sparse-mode

int lo0

 ip add 3.0.0.1 255.255.255.255

 ip pim sparse-mode

ip pim rp-address 3.0.0.1

router ospf 1

 network 0.0.0.0 255.255.255.255 area 0

router bgp 3

 no bgp default ipv4-unicast

 neighbor 1.0.0.1 remote-as 1

 neighbor 1.0.0.1 update-source lo0

 neighbor 1.0.0.1 ebgp-multihop

 neighbor 4.0.0.1 remote-as 4

 neighbor 4.0.0.1 update-source lo0

 neighbor 4.0.0.1 ebgp-multihop

 address-family ipv4 multicast

  network 3.0.0.1 mask 255.255.255.255

  neighbor 1.0.0.1 activate

  neighbor 4.0.0.1 activate

ip msdp peer 1.0.0.1 connect-source lo0

ip msdp peer 4.0.0.1 connect-source lo0

 

 


R4#

ip multicast-routing

int fa1/0

 no sh

 ip add 10.0.34.4 255.255.255.0

 ip pim sparse-mode

int fa1/1

 no sh

 ip add 10.0.24.4 255.255.255.0

 ip pim sparse-mode

int lo0

 ip add 4.0.0.1 255.255.255.255

 ip pim sparse-mode

int lo1

 ip add 4.1.0.1 255.255.255.255

 ip pim sparse-mode

 ip igmp join-group 225.0.0.1

ip pim rp-address 4.0.0.1

router ospf 1

 network 0.0.0.0 255.255.255.255 area 0

router bgp 4

 no bgp default ipv4-unicast

 neighbor 2.0.0.1 remote-as 2

 neighbor 2.0.0.1 update-source lo0

 neighbor 2.0.0.1 ebgp-multihop

 neighbor 3.0.0.1 remote-as 3

 neighbor 3.0.0.1 update-source lo0

 neighbor 3.0.0.1 ebgp-multihop

 address-family ipv4 multicast

  network 4.0.0.1 mask 255.255.255.255

  neighbor 2.0.0.1 activate

  neighbor 3.0.0.1 activate

ip msdp peer 2.0.0.1 connect-source lo0

ip msdp peer 3.0.0.1 connect-source lo0



  •  

  •  
     
  • Verifications:


R1#ping 225.0.0.1


Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 225.0.0.1, timeout is 2 seconds:


Reply to request 0 from 10.0.34.4, 188 ms

Reply to request 0 from 10.0.24.4, 192 ms

R1#


R1#mtrace 1.0.0.1 4.1.0.1 225.0.0.1

Type escape sequence to abort.

Mtrace from 1.0.0.1 to 4.1.0.1 via group 225.0.0.1

From source (?) to destination (?)

Querying full reverse path... * switching to hop-by-hop:

 0  4.1.0.1

-1  * 10.0.24.4 None No route

R1#


R4#show ip route 1.0.0.1

Routing entry for 1.0.0.1/32

  Known via "ospf 1", distance 110, metric 3, type intra area

  Last update from 10.0.34.3 on FastEthernet1/0, 01:41:33 ago

  Routing Descriptor Blocks:

    10.0.34.3, from 1.1.0.1, 01:41:33 ago, via FastEthernet1/0

      Route metric is 3, traffic share count is 1

  * 10.0.24.2, from 1.1.0.1, 01:41:33 ago, via FastEthernet1/1

      Route metric is 3, traffic share count is 1

R4#


R4#show ip bgp ipv4 multicast 1.0.0.1

BGP routing table entry for 1.0.0.1/32, version 83

Paths: (2 available, best #2, table 8000)

Flag: 0x820

  Advertised to update-groups:

     1

  3 1

    3.0.0.1 (metric 2) from 3.0.0.1 (3.0.0.1)

      Origin IGP, localpref 100, valid, external

  2 1

    2.0.0.1 (metric 2) from 2.0.0.1 (2.0.0.1)

      Origin IGP, localpref 100, valid, external, best

R4#


R4#show ip rpf 1.0.0.1

 failed, no route exists

R4#


R4#show ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

2.0.0.1          2     Up       01:10:13 0     3     ?

3.0.0.1          3     Up       01:43:13 0     1     ?

R4#

 

 









Thanks

 

Comments

  • 1. Yes, you can do Multicast ECMP - enable it using "ip multicast multipath" global configuration command.

    2. Can you try to elect RP using BSR rather than static configuration?

    Regards,

    AB.

  • I overlooked but you also missed activating IPv4 mulicast address-family (SAFI 2) between EBGP peers.

    EDIT: sorry, it just checked again, you have enabled SAFI 2. Please disregard this comment.

    Regards,

    AB.

  • Do you not need ip msdp peer x.x.x.x remote $asn?

  • Just out of curiosity, I tried this with eBGP using directly connected interface addresses and it works fine.

    router bgp 5

     bgp log-neighbor-changes

     neighbor 10.3.5.3 remote-as 3

     neighbor 10.4.5.4 remote-as 4

     !

     address-family ipv4

      no synchronization

      network 5.5.5.5 mask 255.255.255.255

      neighbor 10.3.5.3 activate

      neighbor 10.4.5.4 activate

      no auto-summary

     exit-address-family

     !

     address-family ipv4 multicast

      network 5.5.5.5 mask 255.255.255.255

      neighbor 10.3.5.3 activate

      neighbor 10.4.5.4 activate

      no auto-summary

     exit-address-family



    ip msdp peer 3.3.3.3 connect-source Loopback0

    ip msdp peer 4.4.4.4 connect-source Loopback0





    R5#show ip msdp sa-cache

    MSDP Source-Active Cache - 1 entries

    (10.1.2.1, 224.1.1.1), RP 2.2.2.2, MBGP/AS 2, 00:00:39/00:05:34, Peer 3.3.3.3

    R5#



  • Guys,

    * 2nd part is solved by changing the next-hop to directly connected interfaces on R4. The reason RPF was failing before was because of the fact that RPF check will always fail if the prefix is being learnt by doing a recursive lookup of the routing table (which was happening before, as 1.0.0.1 had next-hop pointing to 2.0.0.1/3.0.0.1 for which recursive lookup had to be done)

    * However, multipath (Load balancing) doesn't work even after configuring multipath and maximum-path? Why can't I configure maximum-paths under address-family ipv4 multicast?

     

    !!!!!!!!!!!!!!!!!!! Before !!!!!!!!!!!!!!!!!!!

    R4#show ip mroute 225.0.0.1 1.0.0.1

    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, E - Extranet,

           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,

           V - RD & Vector, v - Vector

    Outgoing interface flags: H - Hardware switched, A - Assert winner

     Timers: Uptime/Expires

     Interface state: Interface, Next-Hop or VCD, State/Mode

     

    (1.0.0.1, 225.0.0.1), 00:01:20/00:01:39, flags: LM

      Incoming interface: Null, RPF nbr 0.0.0.0

      Outgoing interface list:

        Loopback1, Forward/Sparse, 00:01:20/00:02:30

     

    R4#

     

    R4(config)#do show ip bgp ipv4 multicast

    BGP table version is 6, local router ID is 4.1.0.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.0.0.1/32       3.0.0.1                                0 3 1 i

    *>                  2.0.0.1                                0 2 1 i

    *  1.1.0.1/32       3.0.0.1                                0 3 1 i

    *>                  2.0.0.1                                0 2 1 i

    *> 2.0.0.1/32       2.0.0.1                  0             0 2 i

    *  3.0.0.1/32       2.0.0.1                                0 2 1 3 i

    *>                  3.0.0.1                  0             0 3 i

    *> 4.0.0.1/32       0.0.0.0                  0         32768 i

    R4#show ip rpf 1.0.0.1

     failed, no route exists

    R4#

     

    !!!!!!!!!!!!!!!!!!! Fix !!!!!!!!!!!!!!!!!!!

    R4#

    router bgp 4

     address-family ipv4 multicast

      neighbor 2.0.0.1 route-map change-nh-from-R2 in

      neighbor 3.0.0.1 route-map change-nh-from-R3 in

    route-map change-nh-from-R3 permit 10

     set ip next-hop 10.0.34.3

    route-map change-nh-from-R2 permit 10

     set ip next-hop 10.0.24.2

     

    !!!!!!!!!!!!!!!!!!! Verify !!!!!!!!!!!!!!!!!!!

    R4#show ip bgp ipv4 multicast

    BGP table version is 6, local router ID is 4.1.0.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.0.0.1/32       10.0.24.2                              0 2 1 i

    *>                  10.0.34.3                              0 3 1 i

    *  1.1.0.1/32       10.0.24.2                              0 2 1 i

    *>                  10.0.34.3                              0 3 1 i

    *> 2.0.0.1/32       10.0.24.2                0             0 2 i

    *                   10.0.34.3                              0 3 1 2 i

    *> 3.0.0.1/32       10.0.34.3                0             0 3 i

    *> 4.0.0.1/32       0.0.0.0                  0         32768 i

    R4#

    R4#show ip rpf 1.0.0.1

    RPF information for ? (1.0.0.1)

      RPF interface: FastEthernet1/0

      RPF neighbor: ? (10.0.34.3)

      RPF route/mask: 1.0.0.1/32

      RPF type: multicast (bgp 4)

      Doing distance-preferred lookups across tables

    R4#

    R4#show ip mroute 225.0.0.1 1.0.0.1

    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, E - Extranet,

           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,

           V - RD & Vector, v - Vector

    Outgoing interface flags: H - Hardware switched, A - Assert winner

     Timers: Uptime/Expires

     Interface state: Interface, Next-Hop or VCD, State/Mode

     

    (1.0.0.1, 225.0.0.1), 00:00:18/00:02:41, flags: LM

      Incoming interface: FastEthernet1/0, RPF nbr 10.0.34.3, Mbgp

      Outgoing interface list:

        Loopback1, Forward/Sparse, 00:00:18/00:02:41

     

    R4#

     

    !!!!!!!!!!!!!!!!!!! Load Balancing !!!!!!!!!!!!!!!!!!! 

    R4#show run | i multipath|maximum

    ip multicast multipath

    router bgp 4

     address-family ipv4

      no synchronization

      maximum-paths 32

      no auto-summary

     exit-address-family

    R4#

     

    R4#show ip rpf 1.0.0.1

    RPF information for ? (1.0.0.1)

      RPF interface: FastEthernet1/0

      RPF neighbor: ? (10.0.34.3)

      RPF route/mask: 1.0.0.1/32

      RPF type: multicast (bgp 4)

      Doing distance-preferred lookups across tables

      Multicast Multipath enabled.

    R4#

     

    R4#show ip bgp ipv4 multicast 1.0.0.1

    BGP routing table entry for 1.0.0.1/32, version 2

    Paths: (2 available, best #2, table 8000)

    Flag: 0x820

      Advertised to update-groups:

         1

      2 1

        10.0.24.2 from 2.0.0.1 (2.0.0.1)

          Origin IGP, localpref 100, valid, external

      3 1

        10.0.34.3 from 3.0.0.1 (3.0.0.1)

          Origin IGP, localpref 100, valid, external, best

    R4#

  • Thanks Amit. Please look at my reply at the end.

    > Guys,

    > * 1st part is solved

     

  • No, you don't need remote-as. It works fine without it.

  • I can't do multicast ECMP. Please read my reply at the bottom:

    > Guys,

    > * 2nd part is solved

     

  • Any updates on this would be greatly appreciated.

Sign In or Register to comment.