我一直在研究一些多播协议,我遇到了 MBGP,我想知道为什么需要它。大家使用MBGP的方式是在每个路由器上设置PIM,对于域间协议,他们使用MBGP。我不明白为什么 BGP 不能转发这些数据包。不像多播数据包在转发方面与单播不同。BGP 能够每隔一个数据包转发一次,为什么不能组播?为什么一定要使用MBGP?谢谢
为什么需要 MBGP?
MBGP 或多协议 BGP 扩展
第一个 BGP 规范于 1989 年发布,远早于 IPv6 的创建,并且仅在多播被添加到 IPv4 之后不久。甚至 BGP-4 也不支持 IPv6、组播或 VPN。直到 1998 年,也就是RFC 2283引入了多协议扩展。这些允许 BGP 处理任意“地址族”的路由信息。实际上,地址族与特定的网络层协议相关联,例如 IPv4、IPv6、IPX 或 AppleTalk。还有用于隧道机制(例如 VPN 和 MPLS)的地址族标识符 ( AFI ) 编号。后续地址族标识符 (SAFI) 进一步指定单播与多播或更多隧道选项。
当路由器建立 BGP 连接时,它们会交换准备为其交换路由信息的 AFI 和 SAFI。如果两个路由器就这些达成一致,它们将发送包含常规路径属性和前缀(也称为网络层可达性信息,NLRI)和在 MP_REACH_NLRI 属性中编码的下一跳的 UPDATE 消息。撤回的路由在 MP_UNREACH_NLRI 属性中编码。
组播协议最重要的事情之一是 RPF(反向路径转发)——该功能将检查并确保对于即将到来的组播数据包(由组播源发送)只有一条路由指向源这是路由是最好的,这意味着如果路由器从不同的接口收到来自同一源的组播数据包,那么该路由器必须只使用一个接口来接受来自一个接口的流量,否则从一个接口收到的组播数据包可能会被转发通过另一个,反之亦然,从而创建潜在的循环并增加带宽使用。
考虑到 RPF 特性,标准 BGP 协议由于其局限性没有执行 RPF 检查的能力,而 MBGP 是一个扩展协议,除了前面提到的 AFI 和 SAFI 值之外,还有与 BGP 相同的标准路由表: – 单播RIB (U-RIB) • 此RIB 包含BGP 以前用于IPv4 单播流量转发的单播前缀。
以及一个附加的路由表: – 多播RIB(M-RIB) • 这个新的RIB 包含与URIB 中包含的相同类型的单播前缀,除了存储在M-RIB 中的前缀用于RPF 检查到达的多播流量。
因此,这个新的组播 RIB 可以使组播协议正常工作,而标准 BGP 则不能。
我们希望这确实有意义并且有用。