原理概述:

      当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定出去往该目标网络的最优BGP路由,

然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较,从而决定是否将该最优BGP路由放进IP路由表中。BGP路由属性的比较顺序为:Preferred Value属性、

Local Preference属性、路由生成方式、AS_Path属性、Origin属性、MED属性、BGP对等体类型等,如果前面这些路由属性都完全相同或在比较选择的过程中可被忽略,则将比较

路由的Next Hop属性。

        Next Hop属性记录了去往目标网络所对应的下一跳IP地址。BGP在比较Next Hop属性时,会优选去往Next Hop属性中IP地址的IGP开销最小的路由。需要注意的是,如果一条

BGP路由的Next Hop属性中的IP地址不可达,则该条路由在BGP路由表中不会被标记为可用路由,从而也就根本无法参与BGP路由协议的选路过程。

        BGP路由器在发布路由给EBGP对等体时,该路由的Next Hop的IP地址会被自动修改,但发布路由给IBGP对等体时,Next Hop的IP地址不会被自动修改。为了满足不同网络

环境的需求,当路由器发布路由给IBGP对等体时,也可以手动修改Next Hop的IP地址。

 

实验内容:

     实验拓扑如下图所示,实验编址如图,R1属于AS 100, R2、R3和R4属于AS 200。R1的Loopback 1接口模拟客户所在的网络,R4的Loopback 1接口模拟目标服务器所在的网络。所

有的路由器都运行BGP,同时R2、R3和R4还运行OSPF。R1与R2和R3之间的EBGP邻居关系采用直连物理接口来建立,R2、R3和R4之间的IBGP邻居关系采用Loopback 0接口来建立。

最终的目标是实现AS 100的客户与AS 200的服务器能够进行正常通信,并且不能出现非对称路由的现象。

网络图:

华为 BGP Next-Hop实验_路由表

配置4个路由器接口

 华为 BGP Next-Hop实验_路由协议_02

 

华为 BGP Next-Hop实验_路由表_03

 

 华为 BGP Next-Hop实验_路由协议_04

 

 华为 BGP Next-Hop实验_ip地址_05

 

 2、IGP和BGP路由协议配置

华为 BGP Next-Hop实验_路由协议_06

 

 华为 BGP Next-Hop实验_路由协议_07

 

 华为 BGP Next-Hop实验_路由协议_08

 

 华为 BGP Next-Hop实验_ip地址_09

 

 华为 BGP Next-Hop实验_路由表_10

 

 上述配置完成后,在R4上查看OSPF邻居关系:

华为 BGP Next-Hop实验_路由协议_11

 

 可以看到,邻居状态均为FULL。

下面进行BGP路由协议的配置:

华为 BGP Next-Hop实验_ip地址_12

 

 华为 BGP Next-Hop实验_路由表_13

 

 华为 BGP Next-Hop实验_路由表_14

 

 华为 BGP Next-Hop实验_路由协议_15

 

 配置完成后,在R2上查看BGP邻居关系。

华为 BGP Next-Hop实验_ip地址_16

 

 可以看到,邻居关系均为Established。

 

3、Next Hop属性在路由传递过程中的变化情况:

      通过前面的步骤,网络的基本配置已经完成 。接下来,在R1上测试R1的Loopback 1接口与R4的Loopback 1接口之间的连通性:

华为 BGP Next-Hop实验_路由协议_17

 

 可以看到,客户网络并不能与服务器进行正常通信。

在R1上查看BGP路由表:

华为 BGP Next-Hop实验_路由表_18

 

 可以看到,R1的BGP路由表中有两条去往10.0.100.4/32的路由信息,下一跳分别为R2和R3。R1通告的10.0.100.1/32网络的Next Hop为0.0.0.0,

即自己通告的BGP路由信息的Next Hop为0.0.0.0。

在R4上查看BGP路由表:

华为 BGP Next-Hop实验_路由协议_19

 

 可以发现,R4的IP路由表中并没有去往10.0.100.1/32的路由信息,也没有去往10.0.12.1与10.0.13.1的路由信息。而在R4的BGP路由表中,虽有两条去往

10.0.100.1/32的路由信息,但没有标记为可用,说明R4认为这两条路由信息的下一跳都是不可达的。

在R2、R3上查看BGP路由表:

华为 BGP Next-Hop实验_ip地址_20

 

 

 华为 BGP Next-Hop实验_路由表_21

 

 可以看到,R2的BGP路由表中有两条去往10.0.100.1/32的路由信息,其中Next Hop为10.0.12.1的路由信息标记为可用。根据前面的实验步骤可知,

10.0.100.1/32路由在R1上的Next Hop为0.0.0.0,说明当10.0.100.1/32的路由信息在由R1传递至EBGP对等体R2的过程中,Next Hop属性会被自动

修改为发送BGP报文的源地址,即10.0.12.1。

 

在R2上使用peer 10.0.4.4 next-hop-local和peer 10.0.3.3 next-hop-local命令,使BGP路由信息传递给IBGP对等体R4和R3时,使用R2发送BGP报文

的源地址作为BGP路由的下一跳来代替原有的Next Hop。在R3上也进行类似操作:

华为 BGP Next-Hop实验_路由表_22

 

 华为 BGP Next-Hop实验_ip地址_23

 

 配置完后,在R4上查看 BGP路由表:

华为 BGP Next-Hop实验_路由协议_24

 

 可以看到,10.0.100.1/32的两条路由信息现在都标记为可用。

在R1上测试R1的Loopback 1接口与R4的Loopback 1接口之间的连通性:

华为 BGP Next-Hop实验_路由协议_25

 

 可以看到,现在是通的状态。

 

4、Next Hop属性对BGP路由协议选路的影响 

在R1上使用tracert命令验证从10.0.100.1/32去往10.0.100.4/32的报文所经过的路径 :

华为 BGP Next-Hop实验_路由协议_26

 

 在R4上使用tracert命令:

华为 BGP Next-Hop实验_路由表_27

 

 可以看到,从R1到R4和从R4到R1的路径不同。

在R4上查看BGP路由表:

华为 BGP Next-Hop实验_路由表_28

 

 可以看到,去往10.0.100.1/32的两条路由信息均标记为可用,但BGP路由协议最终选择了Next Hop属性为10.0.3.3的路由信息。

在R4上查看路由表:

华为 BGP Next-Hop实验_ip地址_29

 

 可以看到,去往10.0.3.3/32的开销值为1,而去往10.0.2.2/32的开销值为48,所以BGP选择了Next Hop为10.0.3.3的BGP路由作为去往10.0.100.1/32的最佳路由。

在R4上修改开销值 :

华为 BGP Next-Hop实验_路由表_30

 

 修改完后,在R4上查看IP路由表:

华为 BGP Next-Hop实验_ip地址_31

 

 可以看到,去往10.0.3.3/32的开销值已经变为100,而去往10.0.2.2/32网络开销值没有改变。

查看R4的BGP路由表:

华为 BGP Next-Hop实验_路由表_32

 

 可以看到,在R4的BGP路由表中,BGP路由协议选择了Next Hop为10.0.2.2的路由作为去往10.0.100.1/32的最佳路由。

在R4上使用tracert命令验证从10.0.100.4/32去往10.0.100.1/32的报文所经过的路径 :

华为 BGP Next-Hop实验_路由协议_33

 

 可以看到,从R4去往10.0.100.1/32时使用的是经过R2的路径。

在R1上测试R1的Loopback 1接口与R4的Loopback 1接口之间的连通性:

华为 BGP Next-Hop实验_路由协议_34

 

 可以看到,客户与服务器之间可以正常通信 ,并且消除了非对称路由的现象。