I've been working on some multicast protocols and I came across MBGP and I want to know why is it needed. The way everyone uses MBGP is that they set up PIM in every routers, and for the inter domain protocol, they use MBGP. I don't understand why can'g BGP forward these packets. It's not like multicast packets are different in forwarding than unicast. BGP is capable of forwarding every other packet, why not multicast? Why must we use MBGP? Thanks
MBGP or Multiprotocol BGP extensions
The first BGP specification was published in 1989, well before IPv6 was created and only shortly after multicast was added to IPv4. Even BGP-4 doesn’t support IPv6, multicast or VPNs. Until 1998, that is, when RFC 2283 introduced the multiprotocol extensions. These allow BGP to handle routing information for arbitrary "address families". In practice, an address family is associated with a specific network layer protocol, such as IPv4, IPv6, IPX or AppleTalk. There are also Address Family Identifier (AFI) numbers for tunneling mechanisms such as VPNs and MPLS. A Subsequent Address Family Identifier (SAFI) further specifies unicast versus multicast or more tunneling options.
When routers make a BGP connection, they exchange the AFIs and SAFIs they’re prepared to exchange routing information for. If the two routers agree on those, they’ll send UPDATE messages containing the regular path attributes with the prefixes (also known as Network Layer Reachability Information, NLRI) and next hops encoded in an MP_REACH_NLRI attribute. Withdrawn routes are encoded in an MP_UNREACH_NLRI attribute.
One of the most important thing for Multicast protocol is RPF (Reverse Path Forwarding) - this is the feature which would check and make sure that for a coming multicast packet (sent by a multicast source) there is only one route pointing back to the source and this is route is the best, which means that if a router receives a multicast packet from the same source via different interfaces then this router must use only one interface to accept the traffic from, otherwise the multicast packet received from one interface could be forwarded through another and vice versa, thus creating potential loops and increase of bandwidth usage.
Taking into consideration RPF feature, the standard BGP protocol doesn’t have the ability to perform RPF checking due to its limitations, while MBGP is an extended protocol which besides previously mentioned AFI and SAFI values has the same standard routing table as BGP: – Unicast RIB (U-RIB) • This RIB contains the unicast prefixes that was previously used by BGP for IPv4 unicast traffic forwarding.
And an additional routing table: – Multicast RIB (M-RIB) • This new RIB contains the same type of unicast prefixes contained in the URIB except that the prefixes stored in the M-RIB are used to RPF check arriving multicast traffic.
Therefore this new Multicast RIB can make the multicast protocol working, while standard BGP can’t.
We hope this does make sense and has been useful.