原理概述
当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定出去往该目标网络的最优BGP路由,然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较,从而决定是否将该最优BGP路由放进P路由表中。BGP路由属性的比较顺序为Preferred Value属性、Local Preference属性、路由生成方式、AS_Path属性、Origin属性、MED属性、BGP对等体类型等,如果前面这些路由属性都完全相同或在比较选择的过程中可被忽略,则将比较路由的.NextHop属性。
Next Hop属性记录了去往目标网络所对应的下一跳IP地址。BGP在比较Next Hop属性时,会优选去往Next Hop属性中IP地址的IGP开销最小的路由。需要注意的是,如果一条BGP路由的Next Hop属性中的P地址不可达,则该条路由在BGP路由表中不会被标记为可用路由,从而也就根本无法参与BGP路由协议的选路过程。
BGP路由器在发布路由给EBGP对等体时,该路由的Next Hop 的IP地址会被自动修改,但发布路由给IBGP对等体时,Next Hop的IP地址不会被自动修改。为了满足不同网络环境的需求,当路由器发布路由给IBGP对等体时,也可以手动修改Next Hop的IP地址。
实验目的
理解Next Hop属性的概念与作用·掌握修改Next Hop属性的方法
理解Next Hop属性对BGP路由协议选路的影响实验内容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的服务器能够进行正常通信,并且不能出现非对称路由的现象。
1、基本配置
R1:
sys
sysname R1
int g0/0/0
ip add 10.0.12.1 24
int g0/0/1
ip add 10.0.13.1 24
qinterface LoopBack0
ip address 10.0.1.1 255.255.255.255
#
interface LoopBack1
ip address 10.0.100.1 255.255.255.255
#
bgp 100
router-id 10.0.1.1
peer 10.0.12.2 as-number 200
peer 10.0.13.3 as-number 200
#
ipv4-family unicast
undo synchronization
network 10.0.100.1 255.255.255.255
peer 10.0.12.2 enable
peer 10.0.13.3 enable
R2:
sys
sysname R2
int loop 0
ip add 10.0.2.2 32
int g0/0/0
ip add 10.0.12.2 24
int g0/0/1
ip add 10.0.24.2 24
q
bgp 200
router-id 10.0.2.2
peer 10.0.3.3 as-number 200
peer 10.0.3.3 connect-interface LoopBack0
peer 10.0.4.4 as-number 200
peer 10.0.4.4 connect-interface LoopBack0
peer 10.0.12.1 as-number 100
#
ipv4-family unicast
undo synchronization
peer 10.0.3.3 enable
peer 10.0.4.4 enable
peer 10.0.12.1 enable
#
ospf 1 router-id 10.0.2.2
area 0.0.0.0
network 10.0.24.0 0.0.0.255
network 10.0.2.2 0.0.0.0
R3:
sys
sysname R3
int loop 0
ip add 10.0.3.3 32
int g0/0/1
ip add 10.0.13.3 24
int g0/0/0
ip add 10.0.34.3 24
q
bgp 200
peer 10.0.2.2 as-number 200
peer 10.0.2.2 connect-interface LoopBack0
peer 10.0.4.4 as-number 200
peer 10.0.4.4 connect-interface LoopBack0
peer 10.0.13.1 as-number 100
#
ipv4-family unicast
undo synchronization
peer 10.0.2.2 enable
peer 10.0.4.4 enable
peer 10.0.13.1 enable
#
ospf 1 router-id 10.0.3.3
area 0.0.0.0
network 10.0.34.0 0.0.0.255
network 10.0.3.3 0.0.0.0
R4:
sys
sysname R4
int loop 0
ip add 10.0.4.4 32
int loop 1
ip add 10.0.100.4 32
int g0/0/1
ip add 10.0.24.4 24
int g0/0/0
ip add 10.0.34.4 24
q
bgp 200
peer 10.0.2.2 as-number 200
peer 10.0.2.2 connect-interface LoopBack0
peer 10.0.3.3 as-number 200
peer 10.0.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
network 10.0.100.4 255.255.255.255
peer 10.0.2.2 enable
peer 10.0.3.3 enable
#
ospf 1 router-id 10.0.4.4
area 0.0.0.0
network 10.0.24.0 0.0.0.255
network 10.0.34.0 0.0.0.255
network 10.0.4.4 0.0.0.0
network 10.0.100.4 0.0.0.0
可以看到,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路由表中也有两条去往10.0.100.1/32网络的路由信息,NextHop分别为10.0.12.1与10.0.13.1,但没有标记为可用( valid)。
可以发现,R4的IP路由表中并没有去往10.0.100.1/32的路由信息,也没有去往10.0.12.1与10.0.13.1的路由信息。而在R4的BGP路由表中,虽有两条去往10.0.100.1/32的路由信息,但没有标记为可用,说明R4认为这两条路由信息的下一跳都是不可达的。
可以看到,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。而去往10.0.100.1/32的路由信息的Next Hop在R2与R4上均为10.0.12.1,说明10.0.100.1/32这条路由信息在由R2传递至IBGP对等体R4时,Next Hop属性不会自动被修改。R3上的现象与R2上的现象类似,这里不再赘述。
为了使R4的BGP路由表中去往10.0.100.1/32的路由信息标记为可用,并放进P路由表中,必须使R4去往10.0.100.1/32的 BGP路由信息中的Next Hop是可达的。实现这一要求的方法有两种:第一种方法是将EBGP对等体之间的链路通告进IGP网络;第二种方法是在R2和R3将路由信息传递给IBGP对等体R4时,使用发送 BGP报文的源地址作为BGP路由的下一跳。
在实际应用中,通常会使用第二种方法,本实验也将采用这种方法。
在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上也进行类似操作
peer 10.0.2.2 next-hop-local
peer 10.0.4.4 next-hop-local
在R2上也进行类似操作
peer 10.0.4.4 next-hop-local
peer 10.0.3.3 next-hop-local
效果图如下
虽然客户网络与服务器之间能够进行通信了,但实际上还存在一些问题。
在R1上使用tracert命令验证从10.0.100.1/32去往10.0.100.4/32的报文所经过的路径。可以看到,从R4去往10.0.100.1/32时使用的是经过R3的路径。
通信双方的往返报文选用不同路径的现象称为不对称路由。对于某些特定应用,以及在部署了某些特别的安全设备和安全策略的情况下,不对称路由的存在可能会导致通信中断的现象。