JUNIPER文档里面对add-path的解释:app
“BGP peers advertise routes to each other in update messages. BGP stores its routes in the Junos OS routing table (inet.0). For each prefix in the routing table, the routing protocol process selects a single best path, called the active path. Unless you configure BGP to advertise multiple paths to the same destination, BGP advertises only the active path.Related Documentation负载均衡
对于路由表中的每一个前缀,路由协议进程选择一条称为活动路径的最佳路径。除非配置BGP将多条路径发布到同一目的地,不然BGP只发布活动路径。”less
在Junos里面,BGP在本地内存里存放路由信息,称之为ROUTING INFORMATION BASE.一个BGP对等体维护三种类型的RIB:adjacency-RIB-in/adjacency-RIB-out/Local-RIB。ide
文档里面对Local-RIB的定义是:到达每一个前缀的目的的最佳路由。基于每一个目的地,只有单一的路径通告(最优)。学习
那咱们就先按照文档,搭建好实验环境,来观察现象。spa
拓扑:3d
简单解释下这个拓扑:orm
在AS2里面,咱们把R5/R6在本地的静态路由199.1.1.1/32和198.1.1.1/32 宣告到AS1,R7将本地的静态路由199.1.1.1/32宣告到AS1。
blog
因而在AS1,咱们从R1上能够收到的199.1.1.1/32路由有三条路径,分别来自R5/R6/R7,而198.1.1.1/32 路由有两条路径,分别来自R5/R6。接口
默认状况下,基于上述原则“到达每一个前缀的目的的最佳路由,基于每一个目的地,只有单一的路径通告(最优)”,在R8上看199.1.1.1/32和198.1.1.1/32 的路由都只有一条路径。
因此,R1/R4/R8是这个实验的三个关键路由器。R1负责将同一个前缀的路由的多条发布(SEND)出去,R8负责这个多路径路由的接受(RECEIVE)。R4从R1接受而且发布到R8。
1.首先查看配置命令:
1.1. send层次下:
path-count 配置的是多路径的数目。
prefix-policy 配置的是策略,用于筛选路由前缀。
1.2. receive 就是接受多路径。
2.AS2的BGP配置就用R5做为例子:
2.1首先配置EBGP对等体:
咱们能够看到的是基本的BGP配置:type 指定是ebgp;邻居 R1的直链接口地址和AS号;export策略。
2.2配置export策略:
将本地和直连路由发布出去。
2.3配置本地路由:
2.4配置完毕之后咱们检查下 R5上的路由:
2.4.1 本地和直连:
2.4.2查看R5 EBGP 宣告的和R1 EBGP 接受的:
R5 BGP宣告给R1的:
R1 BGP从R5 接受的:
3.AS1中的路由器的配置:
文档里将R2/R3配置为R1的客户端,R8做为R4的客户端。BGP反射器的配置昨天在BGP-17里面已经练习了。
3.1因此咱们在R1的配置里面,IBGP分为两组(看来昨天的疑问能够获得肯定了):
3.2 同理R4的配置也同样:
能够很清晰地看到:
group rr里,对等体是R1,因此相应的动做就是接受
group rr_rr里面,就是发送。
这里会有一个策略:allow_199:
由于AS2里面一共有199和198两条路由,后续会在R4多路径的配置上过滤掉了198。观察他们在R8上的区别。
3.3R8的BGP配置:
很简单,设置多路径接受便可。
4.咱们已经搭建完了实验环境,开始检查实验现象。
4.1 验证BGP对等体的接受和发送多路径的能力。
当你在查看bgp邻居的时候,会发现如下字段:
NLRI'S for which peer can receive multiple paths : inet-unicast
NLRI'S for which peer can send multiple paths : inet-unicast
咱们逐个检查:
4.1.1 R1,显示对端能够receive。
4.1.2 R4,两个对等体。
4.1.3 R8 略。
4.2 检查路由的多路径。
4.2.1 R1上是否是发布了多个路径。
结果咱们发现一个前缀多个下一跳。
以199为例子,10.0.15.2-R5,10.0.0.20-R2-R6,10.0.0.30-R3-R7。
4.2.2 R4上是否是接受到了多个路径。
4.2.3 R4发送到R8的多路径。
能够看到198只有一条那就是10.0.0.20的下一跳。这正是咱们想看到的。
R4上的策略只容许199多路径发布。
4.3 R8的BGP路由。
4.4 查看一下199路由的detail。
能够看到不一样路径的Addpath Path ID是不一样的。
那为何*的是10.0.0.20呢?
我最近在根据JUNIPER的官方文档学习BGP,下一节的内容将会是根据多路径进行负载均衡。这是我根据文档作的实验记录和学习笔记,逻辑和思路彻底顺着它来,不懂的地方我会查文档标记出来。欢迎你们一块儿探讨学习。