众所周知,BGP协议是用于自治系统AS之间的动态路由协议,早期已经发布了三个版本,分别是BGP-1、BGP-2和BGP-3;目前在ipv4时代中使用的是BGP-4版本,该版本仅仅只能用在IPV4的网络环境中,用于交换AS之间的可达路由信息并构建AS域间的传播路径防止路由环路的产生。
  此时BGP4已经作为了事实上的internet外部路由协议标准,被广泛应用于ISP之间。
  而到了IPV6时代中,BGP4协议已无法适用于ipv6网络,但是BGP4协议的优越性已经在ipv4时代中得到了验证,为了让BGP协议也能在ipv6网络中也发挥其优势,所以在原来BGP4的基础上添加了支持ipv6网络的TLV,此时支持ipv6网络的新的BGP协议诞生——BGP4+。
  该协议很好在ipv6网络中为不同的AS之间提供可达路由信息的交换和构建AS域间的传播路径防止路由环路的产生。
  在BGP4+协议中也有13条选路原则,该原则和BGP4是一样,今天我们选择其中一条选路原则来展示一个很有趣的现象。
  在13条选路选择中的第9条选路原则:前8条选路原则全部相同,则为等价路由,可以负载分担。
  接下来我们就根据这条选路原则给大家模拟个实验来验证下:
详解BGP4+的负载分担
实验说明:
1,R4和R2之间是IBGP邻居关系,R4和R3之间是IBGP邻居关系,R1分别和R2和R3之间是EBGP邻居关系。
2,R2和R3和R4之间建立ospfv3邻居关系,并且它们之间的环回口loopback0互通,并通过环回口建立ibgp邻居关系
3,默认情况下:R4将自己loopback1地址3004::4变为BGP路由并宣告给R1,由于router id越小越优,所以R1会选择R2访问R4的loopback1地址,现在我们要实现负载分担,也就是说R1学习分别通过R2和R3学习到R4的loopback1地址的路由都要加入到R1的ipv6路由表中实现负载分担。
实验步骤一:R4和R2之间是IBGP邻居关系,R4和R3之间是IBGP邻居关系,R1分别和R2和R3之间是EBGP邻居关系
详解BGP4+的负载分担
详解BGP4+的负载分担

实验步骤二:R2和R3和R4之间建立ospfv3邻居关系,并且它们之间的环回口loopback0互通,并通过环回口建立ibgp邻居关系
详解BGP4+的负载分担

实验步骤三:默认情况下:R4将自己loopback1地址3004::4变为BGP路由并宣告给R1,由于router id越小越优,所以R1会选择R2访问R4的loopback1地址。
详解BGP4+的负载分担
详解BGP4+的负载分担
并且此时我们查看R1学习R4的3004::4的ip路由表,我们发现此时R1学习3004::4的路由只有一个最优的下一跳就是R2
详解BGP4+的负载分担
实验第四步:在R1的BGP的ipv6单播地址族的视图下配置负载分担,让R1学习R4的3004::4地址的下一跳为R2和R3都是最优的,并放入ipv6路由表中
详解BGP4+的负载分担
此时出现了一个很有趣的现象:就是BGP4+路由表中仍然依旧会选出一条最优路由即走R2
详解BGP4+的负载分担
那么我们如何判断R1上有没有发生负载分担呢?答案是肯定的,肯定实现的负载分担,只不过我们要通过ipv6路由表才能看到,在BGP4+表是看不出来的。此时根据R1的ipv6路由表就可以清晰看到了两个最优的下一跳R2和R3,这时形成了负载分担了。
详解BGP4+的负载分担