10.MP-BGP
1)MP-BGP支持的协议
BGP-4只能传递IPv4单播的路由信息,不能传递其它网络层协议(如IPv6等)的路由信息。
为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP(Multiprotocol Border Gateway Protocol,多协议边界网关协议)。MP-BGP可以为多种网络层协议传递路由信息。
· IPv6单播:通过MP-BGP发布和维护IPv6单播路由前缀信息。
· IPv4组播/IPv6组播:组播路由协议PIM(Protocol Independent Multicast,协议无关组播)根据单播静态路由或者任意单播路由协议(包括RIP、OSPF、IS-IS、BGP等)所生成的单播路由表进行
RPF(Reverse Path Forwarding,逆向路径转发)检查,以创建组播路由表项,从而进行组播报文的转发。组播转发路径与单播转发路径是一致的。但是,在某些情况下,组播网络拓扑和单播网络拓扑有可能不同;
有些用户希望组播转发路径不同于单播转发路径,以便分别对组播流量和单播流量进行管理和控制。
MP-BGP对IPv4组播/IPv6组播的扩展,称为MBGP(Multicast BGP,组播BGP),它通过MP-BGP传递用于RPF检查的路由信息,并将该信息保存在独立的组播BGP路由表中,以实现单播转发和组播转发的隔离,
使得组播转发路径可以不同于单播转发路径。
· EVPN:通过MP-BGP发布和维护EVPN路由信息,以实现自动发现VTEP、自动建立和关联VXLAN隧道、通告MAC地址和ARP信息。
2)MP-BGP的扩展属性
路由信息中与网络层协议相关的关键信息包括路由前缀和下一跳地址。BGP-4通过Update消息中的NLRI(Network Layer Reachability Information,网络层可达性信息)字段携带可达路由的前缀信息,
Withdrawn Routes字段携带不可达路由的前缀信息,NEXT_HOP属性携带下一跳地址信息。NLRI字段、Withdrawn Routes字段和NEXT_HOP属性不易于扩展,无法携带多种网络层协议的信息。
为实现对多种网络层协议的支持,MP-BGP定义了两个新的路径属性:
· MP_REACH_NLRI(Multiprotocol Reachable NLRI,多协议可达NLRI):用于携带多种网络层协议的可达路由前缀及下一跳地址信息,以便向邻居发布该路由。
· MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI,多协议不可达NLRI):用于携带多种网络层协议的不可达路由前缀信息,以便撤销该路由。
MP-BGP通过上述两个路径属性传递不同网络层协议的可达路由和不可达路由信息。不支持MP-BGP的BGP发言者接收到带有这两个属性的Update消息后,忽略这两个属性,不把它们传递给其它邻居。
3)地址族
MP-BGP采用地址族(Address Family)和子地址族(Subsequent Address Family)来区分MP_REACH_NLRI属性、MP_UNREACH_NLRI属性中携带路由信息所属的网络层协议。例如,如果MP_REACH_NLRI属性中
AFI(Address Family Identifier,地址族标识符)为2、SAFI(Subsequent Address Family Identifier,子地址族标识符)为1,则表示该属性中携带的是IPv6单播路由信息。关于地址族的一些取值可以参考RFC 1700。
4)MP-BGP支持BGP IPvX会话承载IPv4和IPv6路由
MP-BGP支持IPvX(X可以为4或6)对等体之间交互IPv4和IPv6路由,即IPv4对等体之间除了交互IPv4路由以外还可以交互IPv6路由,IPv6对等体之间除了交互IPv6路由以外还可以交互IPv4路由:
· IPv6路由的下一跳为IPv4地址时,MP-BGP将此IPv4地址映射为IPv6地址封装在Update报文的Next-Hop属性中。此时,需要配置路由策略,将IPv6路由的下一跳地址修改为对端设备的IPv6地址,否则无法正常进行路由迭代。
· IPv4路由的下一跳为IPv6地址时,需要BGP会话协商支持扩展IPv6下一跳能力,将IPv4 NLRI封装在MP_REACH_NLRI属性中。此时,需要配置路由策略,将IPv4路由的下一跳地址修改为对端设备的IPv4地址,否则无法正常进行路由迭代。
如上图,Device B和Device C之间仅建立BGP IPv6会话,Device A和DeviceB、Device C和Device D之间同时建立BGP IPv4和BGP IPv6会话,Device A和Device D可以学习到对方的IPv4和IPv6路由并且两个地址族下的流量都能正常互通。
当Device C收到Device B发布的IPv4路由时,下一跳为Device B的IPv6地址,需要在Device C上配置路由策略将这类路由的下一跳属性修改为Device B上出接口Port A的IPv4地址10.1.1.1/24,反之同理。
11.BGP多进程
一台BGP路由器上可以同时启动多个BGP进程,每个BGP进程对应一个BGP实例。BGP为不同的BGP实例维护独立的路由表。