bgp的metric计算 bgp multipath_R3

1.实验目的

默认情况下,在至同一个NLRI有多条路径的情况下,BGP会按照N WLLAOMNI的顺序,选择最优的一条路径。N:next-hop reachable,下一跳是否可达;W:weight权重,思科私有;L:local-pref本地优先级;L:locally injected routes,基本消失的参数;A:AS-PATHlength,忽略AS-CONFED-SET和AS-CONFED-SEQ,将AS-SET作为1个ASN;O:origin,i>?;M:multi-exit-discrimator,MED值;N:neighbor type,邻居类型,eBGP>iBGP;I:IGP metric,

教科书解释是指到达BGP路由下一跳的IGP路由开销(有所怀疑,将在实验中确认)。

在上述判断仍未选出最优路由时,再按照eBGP路由先到优先、最小RID、最小neighbor ID的顺序进行比较。在此3项判断中,虽然BGP仍会选出1条最优的路由,并仅将此路由向邻居通告,但设备会根据BGP进程中maximum-paths的设置,决定将至同一个NLRI的N条BGP路径中的几条写入路由RIB。

2.实验结果

搭建如图所示的模拟网络,AS内运行OSPF协议,R4将环回地址4.4.4.4在BGP中发布(network),R2和R3将R5的环回地址2.5.5.5在BGP中发布(network)。R1将两个局域网以及与R6的互联地址在BGP中发布。

(1)R1至R4有两条等价的BGP路由。

按照优选顺序,R1会选取具有最小RID的R3作为BGP优选。此时在R1上,将maximum-paths设置为2,优选情况不发生变化,但在R1的路由表中,两条路由全被写入,如表7所示。

默认情况下,思科路由器采用的负载均衡模式为per-destination(也称作逐流),算法为universal全局算法,思科教材说明,此算法使用hash算法,对数据包的源地址、目的地址、随机生成的4字节数字(universal id)进行计算,获取哈希值进而进行选路。

分别从PC1、PC2、PC3和R6上trace R4的环回地址,并观察经过R1后下一跳的情况,如表8所示。从测试情况看,不同来源的测试包到达R1后,有经过不同路径的情况,证明R1路由表中的两条路由均起作用。但在负载均衡随机选路上,与教科书的说明略有不同。教科书上说明,在路由器内有不可见的load-sharing表,内有16个指针,在有n条ECMP的情况下,每条路径分配(16 MOD (N))个指针。举例,如有2条ECMP,则每条8个指针;有3条ECMP,则每条5个指针。个人认为,应是哈希值相同,指针相同,路径相同;哈希值不同,指针不同,但路径有可能相同。

表7 R1路由器BGP及路由表情况

R1#sh ip bgp 4.4.4.4
BGP routing table entry for 4.4.4.4/32, version 4
Paths: (2 available, best #2, table default)
Multipath: eBGP
  Advertised to update-groups:
     3         
  Refresh Epoch 2
  2 3
    10.0.0.14 from 10.0.0.14 (3.3.3.3)
      Origin IGP, localpref 100, valid, external, multipath(oldest)
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 2
  2 3
    10.0.0.2 from 10.0.0.2 (2.2.2.2)
      Origin IGP, localpref 100, valid, external, multipath, best
      rx pathid: 0, tx pathid: 0x0
!!!!在R1上查看路由表
R1#sh ip route
B        4.4.4.4 [20/0] via 10.0.0.14, 01:11:47
                 [20/0] via 10.0.0.2, 01:11:47


 



 

表8 下一跳情况统计

PC1> trace 4.4.4.4
trace to 4.4.4.4, 8 hops max, press Ctrl+C to stop
 1   1.0.2.254   15.601 ms  15.600 ms  15.600 ms
10.0.0.2
 3   *10.0.0.6   78.000 ms (ICMP type:3, code:3, Destination port unreachable)
PC2> trace 4.4.4.4
trace to 4.4.4.4, 8 hops max, press Ctrl+C to stop
 1   1.0.1.254   15.600 ms  15.600 ms  15.600 ms
10.0.0.14
 3   *10.0.0.9   78.000 ms (ICMP type:3, code:3, Destination port unreachable)
PC3> trace 4.4.4.4
trace to 4.4.4.4, 8 hops max, press Ctrl+C to stop
 1   1.0.1.254   15.600 ms  15.600 ms  15.600 ms
10.0.0.14
 3   *10.0.0.9   78.000 ms (ICMP type:3, code:3, Destination port unreachable)
R6#traceroute 4.4.4.4
Type escape sequence to abort.
Tracing the route to 4.4.4.4
VRF info: (vrf in name/id, vrf out name/id)
  1 10.0.0.25 32 msec 20 msec 40 msec
10.0.0.14
  3 10.0.0.9 80 msec 100 msec 96 msec
!!!此时R1的负载均衡设置
R1#sh cef state 
CEF Status:
 RP instance
 common CEF enabled
IPv4 CEF Status:
 CEF enabled/running
 dCEF disabled/not running
 CEF switching enabled/running
universal per-destination load sharing algorithm, id 9923FA95




 

(2)在R1上观察R5的环回地址路由信息。

通过debug信息,R1分别从R2和R3接收到了关于2.5.5.5的update信息,但metric值不同,根据选取顺序“I”,优选了metric值小的R3作为下一跳。同时,由于并未进行到最后3个判断步骤已优选了BGP路由,并不会受maximum-path设置的影响,只是将1条BGP路由写入的RIB。这和4.4.4.4的updates形成了对比,如图9所示。

表9 R1上BGP updates情况

!!!R1接收到的4.4.4.4的updates以及路由表写入情况
*Dec 30 17:08:07.175: BGP(0): 10.0.0.14 rcvd UPDATE w/ attr: nexthop 10.0.0.14, origin i, merged path 2 3, AS_PATH 
*Dec 30 17:08:07.179: BGP(0): 10.0.0.14 rcvd 4.4.4.4/32
*Dec 30 17:08:07.195: BGP(0): 10.0.0.2 rcvd UPDATE w/ attr: nexthop 10.0.0.2, origin i, merged path 2 3, AS_PATH 
*Dec 30 17:08:07.195: BGP(0): 10.0.0.2 rcvd 4.4.4.4/32
*Dec 30 17:08:36.803: BGP(0): Revise route installing  1 of 2
*Dec 30 17:08:36.803: BGP(0): Revise route installing  2 of 2
!!!R1接收到的2.5.5.5的updates以及路由表写入情况
*Dec 30 17:08:07.183: BGP(0): 10.0.0.14 rcvd UPDATE w/ attr: nexthop 10.0.0.14, origin i, metric 2, merged path 2, AS_PATH 
*Dec 30 17:08:07.191: BGP(0): 10.0.0.14 rcvd 2.5.5.5/32
*Dec 30 17:08:07.195: BGP(0): 10.0.0.2 rcvd UPDATE w/ attr: nexthop 10.0.0.2, origin i, metric 3, merged path 2, AS_PATH 
*Dec 30 17:08:07.195: BGP(0): 10.0.0.2 rcvd 2.5.5.5/32
*Dec 30 17:08:36.799: BGP(0): Revise route installing  1 of 1