原理概述:
当一台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的服务器能够进行正常通信,并且不能出现非对称路由的现象。
网络图:
配置4个路由器接口
2、IGP和BGP路由协议配置
上述配置完成后,在R4上查看OSPF邻居关系:
可以看到,邻居状态均为FULL。
下面进行BGP路由协议的配置:
配置完成后,在R2上查看BGP邻居关系。
可以看到,邻居关系均为Established。
3、Next Hop属性在路由传递过程中的变化情况:
通过前面的步骤,网络的基本配置已经完成 。接下来,在R1上测试R1的Loopback 1接口与R4的Loopback 1接口之间的连通性:
可以看到,客户网络并不能与服务器进行正常通信。
在R1上查看BGP路由表:
可以看到,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路由表:
可以发现,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路由表:
可以看到,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上也进行类似操作:
配置完后,在R4上查看 BGP路由表:
可以看到,10.0.100.1/32的两条路由信息现在都标记为可用。
在R1上测试R1的Loopback 1接口与R4的Loopback 1接口之间的连通性:
可以看到,现在是通的状态。
4、Next Hop属性对BGP路由协议选路的影响
在R1上使用tracert命令验证从10.0.100.1/32去往10.0.100.4/32的报文所经过的路径 :
在R4上使用tracert命令:
可以看到,从R1到R4和从R4到R1的路径不同。
在R4上查看BGP路由表:
可以看到,去往10.0.100.1/32的两条路由信息均标记为可用,但BGP路由协议最终选择了Next Hop属性为10.0.3.3的路由信息。
在R4上查看路由表:
可以看到,去往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上修改开销值 :
修改完后,在R4上查看IP路由表:
可以看到,去往10.0.3.3/32的开销值已经变为100,而去往10.0.2.2/32网络开销值没有改变。
查看R4的BGP路由表:
可以看到,在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的报文所经过的路径 :
可以看到,从R4去往10.0.100.1/32时使用的是经过R2的路径。
在R1上测试R1的Loopback 1接口与R4的Loopback 1接口之间的连通性:
可以看到,客户与服务器之间可以正常通信 ,并且消除了非对称路由的现象。