【 BGP路径选择】Next Hop,AS_Path

目录

一:BGP路径选择-Next Hop

原理概述

实验目的

实验内容

实验拓扑

1.基本配置

2.IGP和BGP路由协议配置

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

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

 二:BGP路径选择-AS_Path

原理概述

实验目的

实验内容

实验拓扑

1.基本配置

2.配置BGP路由协议

3.观察AS_Path属性对BGP选路的影响

4.修改AS_Path属性控制BGP选路


一:BGP路径选择-Next Hop

原理概述

       当一台 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 地址。

实验目的

理解 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.基本配置

根据拓扑图进行相应的基本配置,并使用ping命令检测R1与R2之间的连通性。

其余直连网段的连通性测试过程在此省略。 

2.IGP和BGP路由协议配置

在AS 200中的路由器上配置OSPF协议,所有路由器都属于区域0,每台路由器都使用LoopBack 0接口的IP地址作为Router-ID。 

[r2]ospf 1 router-id 10.0.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]network 10.0.2.2 0.0.0.0

[r3]ospf 1 router-id 10.0.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 10.0.3.3 0.0.0.0

[r4]ospf 1 router-id 10.0.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255

[r4-ospf-1-area-0.0.0.0]network 10.0.34.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 10.0.4.4 0.0.0.0
[r4-ospf-1-area-0.0.0.0]network 10.0.100.4 0.0.0.0

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

可以看到,邻居状态都为Full,表明R4与R2和R3均已成功建立了OSPF邻居关系。

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

[r1]bgp 100
[r1-bgp]router-id 10.0.1.1
[r1-bgp]peer 10.0.12.2 as-number 200
[r1-bgp]peer 10.0.13.3 as-number 200
[r1-bgp]network 10.0.100.1 255.255.255.255

[r2]bgp 200
[r2-bgp]router-id 10.0.2.2
[r2-bgp]peer 10.0.12.1 as-number 100
[r2-bgp]peer 10.0.3.3 as-number 200
[r2-bgp]peer 10.0.3.3 connect-interface loopback 0
[r2-bgp]peer 10.0.4.4 as-number 200
[r2-bgp]peer 10.0.4.4 connect-interface loopback 0

[r3]bgp 200
[r3-bgp]router-id 10.0.3.3
[r3-bgp]peer 10.0.13.1 as-number 100
[r3-bgp]peer 10.0.2.2 as-number 200
[r3-bgp]peer 10.0.2.2 connect-interface loopback 0
[r3-bgp]peer 10.0.4.4 as-number 200
[r3-bgp]peer 10.0.4.4 connect-interface loopback 0

[r4]bgp 200
[r4-bgp]router-id 10.0.4.4
[r4-bgp]peer 10.0.2.2 as-number 200
[r4-bgp]peer 10.0.2.2 connect-interface loopback 0
[r4-bgp]peer 10.0.3.3 as-number 200
[r4-bgp]peer 10.0.3.3 connect-interface loopback 0
[r4-bgp]network 10.0.100.4 255.255.255.255 

配置完成后,在R2上查看BGP邻居关系。其他路由器的BGP邻居关系的查看在此省略。 

 可以看到,邻居状态均为Established,说明R2已经成功与R1,R3,R4建立起了BGP邻居关系。

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的 BGP 路由表中也有两条去往10.0.100.1/32网络的路由信息, Next Hop 分别为10.0.12.1与10.0.13.1,但没有标记为可用( valid )。 

在R4上查看IP路由表

 可以发现,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。而去往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的路由信息标记为可用,并放进 IP 路由表中,必须使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上也进行类似操作。

[r2-bgp]peer 10.0.3.3 next-hop-local
[r2-bgp]peer 10.0.4.4 next-hop-local

[r3-bgp]peer 10.0.2.2 next-hop-local
[r3-bgp]peer 10.0.4.4 next-hop-local 

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

可以看到,去往10.0.100.1/32的两条路由信息现在都标记为可用了。
在R1上测试R1的 Loopback 1接口与R4的Loopback1接口之间的连通性。  

 可以看到,客户网络现在能够与服务器进行通信了。

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

虽然客户网络与服务器之间能够进行通信了,但实际上还存在一些问题。

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

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

可以看到,从R4去往10.0.100.1/32时使用的是经过R3的路径。
通信双方的往返报文选用不同路径的现象称为不对称路由。对于某些特定应用,以及在部署了某些特别的安全设备和安全策略的情况下,不对称路由的存在可能会导致通信中断的现象。


在R4上查看 BGP 路由表。

 

      可以看到,去往10.0.100.1/32的两条路由信息均标记为可用,但 BGP 路由协议最终选择了 Next Hop 属性为10.0.3.3的路由信息。
     根据 BGP 协议路由选择的策略,此时去往10.0.100.1/32的两条路由信息的 PrefVal 属性、 LocPrf 属性、路由生成方式、 AS _ Path 属性、 Origin 属性、 MED 属性都相同,且两条路由信息都来自 IBGP 对等体,所以需要比较两条路由信息中去往 Next Hop 地址的 IGP 开销,并选择开销更小的路由
       在R4上查看 IP 路由表。 

可以看到,去往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选择 Next Hop 为10.0.2.2的 BGP 路由作为去往10.0.100.1/32网络的最佳路由。为此,可以在R4的 GE 0/0/0接口下,使用 ospf cost 100命令修改开销值。 

[r4-GigabitEthernet0/0/0]ospf cost 100

配合完成后,在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 接口之间的连通性。 

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

为了避免非对称路由的情况,我们选择修改了R4上的G0/0/0接口的OSPF协议的开销值。其实修改R4上的Serial 4/0/0接口的开销值为1(1为最小开销)也可以实现同样的目的。总之,只有熟练的掌握了BGP协议选择最佳路由的机制,才能在实际场景中灵活地使用BGP路由策略来控制流量的转发路径。 

 二:BGP路径选择-AS_Path

原理概述

       当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些 BGP 路由的属性进行比较,以确定去往该目标网络的最优 BGP 路由。首先要比较的属性是 Preferred Value ,然后是 Local Preference ,再次是路由生成方式,如果在比较了这几个属性之后还是无法确定出最优路由,则将进行 AS _ Path 属性的比较。
       AS _ Path 属性顺序地记录了某条 BGP 路由所经过的 AS 信息。 BGP 路由器在向 EBGP 对等体通告路由时,会在该路由的 AS _ Path 属性的最左端添加本地自治系统的 AS 编号。 BGP 在比较了 AS _ Path 属性后,会优选 AS _ Path 长度最短的那条路由。如果 AS _ Path 的长度相等,则 BGP 会对下一个属性 Origin 进行比较。另外, AS _ Path 还可以用来防止 AS 之间的路由环路。当路由器从 EBGP 邻居收到 BGP 路由时,如果该路由的 AS _ Path 中包含了自己的 AS 编号,则该路由将会被直接丢弃。
        类似于其他 BGP 路由属性, AS _ Path 属性也是可以被手动修改的。

实验目的

理解 AS _ Path 属性的概念
理解通过 AS _ Path 属性进行选路的机制
掌握修改 AS _ Path 属性的方法

实验内容

实验拓扑如图所示。本实验模拟了一个运营商网络场景,所有路由器都运行 BGP 协议,R1的 Loopback 0接口用来模拟某一个用户网络10.0.1.1/32,R2的 Loopback 0接口用来模拟另一个用户网络10.0.2.2/32。两个用户网络需要进行互相通信,但由于 AS 500转发的流量太多,所以运营商要求10.0.1.1/32与10.0.2.2/32之间的通信只能使用经由R3、R4的路径;如果这条路径发生了故障,才能使用经由AS 500的路径。

实验拓扑

1.基本配置

根据拓扑图进行相应的基本配置,并使用ping命令检测R1与R3之间的连通性。

 其余直连网段的连通性测试过程在此省略。

2.配置BGP路由协议

基本配置完成后,进行BGP协议的配置。

[r1]bgp 100
[r1-bgp]peer 10.0.13.3 as-number 300
[r1-bgp]peer 10.0.15.5 as-number 500
[r1-bgp]network 10.0.1.1 32

 

[r2]bgp 200
[r2-bgp]peer 10.0.24.4 as-number 400
[r2-bgp]peer 10.0.26.6 as-number 500
[r2-bgp]network 10.0.2.2 255.255.255.255

 

[r3]bgp 300
[r3-bgp]peer 10.0.13.1 as-number 100
[r3-bgp]peer 10.0.34.4 as-number 400

 

[r4]bgp 400
[r4-bgp]peer 10.0.34.3 as-number 300
[r4-bgp]peer 10.0.24.2 as-number 200

 

[R5]bgp 500
[R5-bgp]peer 10.0.15.1 as-number 100
[R5-bgp]peer 10.0.56.6 as-number 500
[R5-bgp]peer 10.0.56.6 next-hop-local

 

[r6]bgp 500
[r6-bgp]peer 10.0.56.5 as-number 500
[r6-bgp]peer 10.0.56.5 next-hop-local
[r6-bgp]peer 10.0.26.2 as-number 200

上述配置完成后,在R1上查看BGP邻居关系。在其余设备上查看BGP邻居关系的过程在此省略。

 可以看到,R1已经与R3和R5建立了EBGP邻居关系。

3.观察AS_Path属性对BGP选路的影响

在R1上查看BGP路由表,观察10.0.1.1/32访问10.0.2.2/32的选路情况。

可以看到, RI 的 BGP 路由表中存在两条去往10.0.2.2/32的路由,下一跳分别为R5(10.0.15.5)和R3(10.0.13.3),但是优选的是下一跳为R5的路由。这两条路由的 PrefVal 值均为0, LocPrf 属性均为空,均不是本地生成的路由,但它们的 AS Path 属性不同。观察发现,下一跳为R5的路由的 AS _ Path 属性为500 200,所以长度为2,而下一跳为R3的路由的 AS _ Path 属性为300 400 200,所以长度为3,于是,R1最终选择了下一跳为R5的路由,因为它的 AS _ Path 长度较小


在 RI 上使用 tracert 命令验证从10.0.1.1/32去往10.0.2.2/32的报文所经过的路径

 

 可以看到,10.0.1.1/32访问10.0.2.2/32时的确选用了经过R5、R6的路径。

在R2上查看BGP路由表

可以看到,R2去往10.0.1.1/32的路由也有两条,优选的是下一跳为R6(10.0.26.6)的路由,其原因也是因为这条路由的AS_Path的长度较短。
在R2上使用 tracert 命令验证从10.0.2.2/32去往10.0.1.1/32的报文所经过的路径。

可以看到,10.0.2.2/32访问10.0.1.1/32时选用了经过R6、R5的路径。

4.修改AS_Path属性控制BGP选路


       现在,假定R5和R6的流量负担太重,希望用户网络10.0.1.1/32与10.0.2.2/32之间的通信优先选用经由R3和R4的路径。
       为了实现这个需求,最直接的做法是在R1上拒绝接收来自AS 500的关于10.0.2.2/32的路由信息,以及在R2上拒绝接收来自 AS 500的关于10.0.1.1/32的路由信息。但是,如此一来, RI 和R2的 BGP 路由表中将不再有经由 AS 500去往对方的路由信息,当经由R3和R4之间的链路发生故障时,两个用户网络的通信就会中断。为此,可以采用修改 AS _ Path 的方法来更好地实现上述需求。
       使用 Route - Policy 对R1接收的来自 AS 500的关于10.0.2.2/32的路由信息中的 AS Path 属性进行修改。 

[r1]ip ip-prefix as_path permit 10.0.2.2 32
[r1]route-policy as_path permit node 10
[r1-route-policy]if-match ip-prefix as_path
[r1-route-policy]apply as-path 500 500 additive
[r1-route-policy]bgp 100
[r1-bgp]peer 10.0.15.5 route-policy as_path import

配置完成后,在R1上查看BGP路由表。

可以看到,现在R1优选了下一跳为10.0.13.3,即通过R3的路径,原因是现在经由R5的路由的AS_Path属性变为了500 500 500 200,长度为4。

在 RI 上使用 tracert 命令验证从10.0.1.1/32去往10.0.2.2/32的报文所经过的路径。

可以看到,从10.0.1.1/32去往10.0.2.2/32的报文选用了经由R3、R4的路径。
在R2上使用 tracert 命令验证从10.0.2.2/32去往10.0.1.1/32的报文所经过的路径。 

可以看到,从10.0.2.2/32去往10.0.1.1/32的报文依旧选用的是经由 AS 500的路径。

为了实现从10.0.2.2/32去往10.0.1.1/32的报文同样选用经由R4、R3的路径,可以在R2上修改来自 AS 500的关于10.0.1.1/32的路由信息的 AS_Path 属性。 

[r2]route-policy as_path permit node 10
Info: New Sequence of this List.
[r2-route-policy]
[r2-route-policy]if-match ip-prefix as_path
[r2-route-policy]
[r2-route-policy]apply as-path 300 500 500 100 overwrite
Warning: The AS-Path lists of routes to which this route-policy is applied will 
be overwritten. Continue? [Y/N]y

     注意,使用关键字 overwrite ,意味着将用300 500 500 100覆盖路由信息原有的 AS_Path 属性,所以系统弹出了警告。输入 Y 选择继续。
      创建路由策略的后续索引节点允许未被匹配的路由能够正常被接收。

[r2]route-policy as_path permit node 20 


在R2的 BGP 视图下调用路由策略。 

[r2-bgp]peer 10.0.26.6 route-policy as_path import 

配置完成后,在R2上观察BGP路由表。

可以看到,现在R2去往10.0.1.1/32网络时,选用的是下一跳为10.0.24.4,即经由R4和R3的路径。经由R6的路由的 AS _ Path 属性已被修改为300 500 500 100,长度为4。注意,选用 overwrite 关键字,路由策略会使用配置的 AS 编号序列替换原有的 AS _ Path 属性。


在R1上使用 tracert 命令验证从10.0.1.1/32去往10.0.2.2/32的报文所经过的路径。

可以看到,从10.0.1.1/32去往10.0.2.2/32的报文选用了经由R3和R4的路径。

在R2上使用tracert命令验证从10.0.2.2/32去往10.0.1.1/32的报文所经过的路径。

可以看到,从10.0.2.2/32去往10.0.1.1/32的报文也选用的是经由R4和R3的路径。

至此,从10.0.1.1/32与10.0.2.2/32之间进行通信时,往返路径均经过了R3和R4,实现了所需的路径控制,同时也实现了路径的冗余备份。

 

 

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值