MBGP – Why Is It Needed?

bgpmulticastpim

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

Best Answer

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.