User Tools

Site Tools


documentation:examples:ecmp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
documentation:examples:ecmp [2019/11/01 08:49]
olivier [VM 2 (ECMP router)]
documentation:examples:ecmp [2020/02/19 10:45] (current)
olivier [Testing Load balancing]
Line 1: Line 1:
 ====== Equal-cost multi-path routing (ECMP) ====== ====== Equal-cost multi-path routing (ECMP) ======
  
-This lab show an ECMP (feature called RADIX_MPATH on FreeBSD) ​routing ​example.+This lab is testing new ECMP routing ​code.
  
 ===== Presentation ===== ===== Presentation =====
Line 84: Line 84:
  
 <​code>​ <​code>​
-sysrc hostname=VM1 +sysrc hostname=VM1 ​\ 
-sysrc gateway_enable=NO + gateway_enable=NO ​\ 
-sysrc ipv6_gateway_enable=NO + ipv6_gateway_enable=NO ​\ 
-sysrc ifconfig_vtnet0="​inet 10.0.12.1/​24"​ + ifconfig_vtnet0="​inet 10.0.12.1/​24" ​\ 
-sysrc ifconfig_vtnet0_alias1="​inet 10.0.12.11/​32"​ + ifconfig_vtnet0_alias1="​inet 10.0.12.11/​32" ​\ 
-sysrc ifconfig_vtnet0_alias2="​inet 10.0.12.21/​32"​ + ifconfig_vtnet0_alias2="​inet 10.0.12.21/​32" ​\ 
-sysrc ifconfig_vtnet0_alias3="​inet 10.0.12.31/​32"​ + ifconfig_vtnet0_alias3="​inet 10.0.12.31/​32" ​\ 
-sysrc ifconfig_vtnet0_alias4="​inet 10.0.12.41/​32"​ + ifconfig_vtnet0_alias4="​inet 10.0.12.41/​32" ​\ 
-sysrc ifconfig_vtnet0_alias5="​inet 10.0.12.51/​32"​ + ifconfig_vtnet0_alias5="​inet 10.0.12.51/​32" ​\ 
-sysrc ifconfig_vtnet0_ipv6="​inet6 2001:​db8:​12::​1 prefixlen 64" + ifconfig_vtnet0_ipv6="​inet6 2001:​db8:​12::​1 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet0_alias61="​inet6 2001:​db8:​12::​11 prefixlen 64" + ifconfig_vtnet0_alias61="​inet6 2001:​db8:​12::​11 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet0_alias62="​inet6 2001:​db8:​12::​21 prefixlen 64" + ifconfig_vtnet0_alias62="​inet6 2001:​db8:​12::​21 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet0_alias63="​inet6 2001:​db8:​12::​31 prefixlen 64" + ifconfig_vtnet0_alias63="​inet6 2001:​db8:​12::​31 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet0_alias64="​inet6 2001:​db8:​12::​41 prefixlen 64" + ifconfig_vtnet0_alias64="​inet6 2001:​db8:​12::​41 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet0_alias65="​inet6 2001:​db8:​12::​51 prefixlen 64" + ifconfig_vtnet0_alias65="​inet6 2001:​db8:​12::​51 prefixlen 64" ​\ 
-sysrc defaultrouter="​10.0.12.2"​ + defaultrouter="​10.0.12.2" ​\ 
-sysrc ipv6_defaultrouter="​2001:​db8:​12::​2"​+ ipv6_defaultrouter="​2001:​db8:​12::​2"​
 service hostname restart service hostname restart
 service netif restart service netif restart
Line 110: Line 110:
  
 VM 2 is a router with ECMP: 2 static routes toward the same destination but using 2 different next-hop. VM 2 is a router with ECMP: 2 static routes toward the same destination but using 2 different next-hop.
-Need to disable fastforward by re-enabling ICMP redirect (disabled on BSDRP by default). 
  
 <​code>​ <​code>​
-sysrc hostname=VM2 +sysrc hostname=VM2 ​\ 
-sysrc ifconfig_vtnet0="​inet 10.0.12.2/​24"​ + ifconfig_vtnet0="​inet 10.0.12.2/​24" ​\ 
-sysrc ifconfig_vtnet1="​inet 10.0.23.2/​24"​ + ifconfig_vtnet1="​inet 10.0.23.2/​24" ​\ 
-sysrc ifconfig_vtnet2="​inet 10.0.24.2/​24"​ + ifconfig_vtnet2="​inet 10.0.24.2/​24" ​\ 
-sysrc ifconfig_vtnet0_ipv6="​inet6 2001:​db8:​12::​2 prefixlen 64" + ifconfig_vtnet0_ipv6="​inet6 2001:​db8:​12::​2 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet1_ipv6="​inet6 2001:​db8:​23::​2 prefixlen 64" + ifconfig_vtnet1_ipv6="​inet6 2001:​db8:​23::​2 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet2_ipv6="​inet6 2001:​db8:​24::​2 prefixlen 64" + ifconfig_vtnet2_ipv6="​inet6 2001:​db8:​24::​2 prefixlen 64" ​\ 
-sysrc static_routes="​VM3VM6 VM3VM5 VM4VM6 VM4VM5"​ + static_routes="​VM3VM6 VM3VM5 VM4VM6 VM4VM5" ​\ 
-sysrc route_VM3VM6="​-net 10.0.56.0/​24 10.0.23.3"​ + route_VM3VM6="​-net 10.0.56.0/​24 10.0.23.3" ​\ 
-sysrc route_VM3VM5="​-net 10.0.35.0/​24 10.0.23.3"​ + route_VM3VM5="​-net 10.0.35.0/​24 10.0.23.3" ​\ 
-sysrc route_VM4VM6="​-net 10.0.56.0/​24 10.0.24.4"​ + route_VM4VM6="​-net 10.0.56.0/​24 10.0.24.4" ​\ 
-sysrc route_VM4VM5="​-net 10.0.45.0/​24 10.0.24.4"​ + route_VM4VM5="​-net 10.0.45.0/​24 10.0.24.4" ​\ 
-sysrc ipv6_static_routes="​VM3VM6 VM3VM5 VM4VM6 VM4VM5"​ + ipv6_static_routes="​VM3VM6 VM3VM5 VM4VM6 VM4VM5" ​\ 
-sysrc ipv6_route_VM3VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​23::​3"​ + ipv6_route_VM3VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​23::​3" ​\ 
-sysrc ipv6_route_VM3VM5="​2001:​db8:​35::​ -prefixlen 64 2001:​db8:​23::​3"​ + ipv6_route_VM3VM5="​2001:​db8:​35::​ -prefixlen 64 2001:​db8:​23::​3" ​\ 
-sysrc ipv6_route_VM4VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​24::​4"​ + ipv6_route_VM4VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​24::​4" ​\ 
-sysrc ipv6_route_VM4VM5="​2001:​db8:​45::​ -prefixlen 64 2001:​db8:​24::​4"​ + ipv6_route_VM4VM5="​2001:​db8:​45::​ -prefixlen 64 2001:​db8:​24::​4"​
-sed -i ''​ -e '/​net.inet.ip.redirect=0/​d'​ /​etc/​sysctl.conf +
-sed -i ''​ -e '/​net.inet6.ip6.redirect=0/​d'​ /​etc/​sysctl.conf +
-sysctl net.inet.ip.redirect=1 +
-sysctl net.inet6.ip6.redirect=1+
 service hostname restart service hostname restart
 service netif restart service netif restart
Line 140: Line 135:
 </​code>​ </​code>​
  
-And first problem using static route:+Checking ​static route with multiple next-hop:
  
 <​code>​ <​code>​
-add net 10.0.56.0: gateway 10.0.23.3 fib +[root@VM2]~#​ netstat -rn4 | grep 10.0.56.0 
-add net 10.0.35.0: gateway 10.0.23.3 fib 0 +10.0.56.0/24       10.0.24.4 ​         ​UGS ​     vtnet2 
-add net 10.0.56.0: gateway ​10.0.24.4 ​fib 0: route already in table +10.0.56.0/24       10.0.23.3          ​UGS ​     vtnet1 
-add net 10.0.45.0: gateway ​10.0.24.4 fib 0 +[root@VM2]~#​ route -n get 10.0.56.0/​24
-add net 2001:​db8:​56:::​ gateway 2001:​db8:​23::​fib 0 +
-add net 2001:​db8:​35:::​ gateway 2001:​db8:​23::​3 fib 0 +
-add net 2001:​db8:​56:::​ gateway 2001:​db8:​24::​4 fib 0: route already in table +
-add net 2001:​db8:​45:::​ gateway 2001:​db8:​24::​4 fib 0 +
-[root@VM2]~#​ route get 10.0.56.0/​24+
    route to: 10.0.56.0    route to: 10.0.56.0
 destination:​ 10.0.56.0 destination:​ 10.0.56.0
        mask: 255.255.255.0        mask: 255.255.255.0
-    gateway: 10.0.23.3+    gateway: 10.0.24.4
         fib: 0         fib: 0
-  interface: ​vtnet1+  interface: ​vtnet2
       flags: <​UP,​GATEWAY,​DONE,​STATIC>​       flags: <​UP,​GATEWAY,​DONE,​STATIC>​
  ​recvpipe ​ sendpipe ​ ssthresh ​ rtt,​msec ​   mtu        weight ​   expire  ​recvpipe ​ sendpipe ​ ssthresh ​ rtt,​msec ​   mtu        weight ​   expire
-       ​0 ​        ​0 ​        ​0 ​        ​0 ​     1500                 0+       ​0 ​        ​0 ​        ​0 ​        ​0 ​     1500       100         ​
 +[root@VM2]~#​ netstat -4onW 
 +Nexthop data 
 + 
 +Internet: 
 +Idx   ​Type ​        ​IFA                Gateway ​            ​Flags ​     Use Mtu         ​Netif ​    ​Addrif Refcnt Prepend 
 +4       ​v4/​resolve 10.0.23.2 ​         vtnet1/​resolve ​                  ​0 ​  ​1500 ​    ​vtnet1 ​              1 
 +6       ​v4/​resolve 10.0.24.2 ​         vtnet2/​resolve ​                  ​0 ​  ​1500 ​    ​vtnet2 ​              1 
 +2       ​v4/​resolve 10.0.12.2 ​         vtnet0/​resolve ​                  ​3 ​  ​1500 ​    ​vtnet0 ​              1 
 +1       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            6  16384        lo0               1 
 +7       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            0  16384        lo0    vtnet2 ​    1 
 +5       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            0  16384        lo0    vtnet1 ​    1 
 +3       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            0  16384        lo0    vtnet0 ​    1 
 +9            v4/gw 10.0.24.2 ​         10.0.24.4 ​         GS            3   ​1500 ​    ​vtnet2 ​              2 
 +8            v4/gw 10.0.23.2 ​         10.0.23.3 ​         GS            0   ​1500 ​    ​vtnet1 ​              2 
 +Nexthop groups data 
 +BUF: 192 
 + 
 +Internet: 
 +MpIdx NHIdx Weigh Slots            Gateway Netif      Refcnt 
 +1      ---- ---- ----              ----      ----    1 
 +          9   ​100 ​    ​1 ​         10.0.24.4 ​   vtnet2 
 +          8   ​100 ​    ​1 ​         10.0.23.3    vtnet1
 </​code>​ </​code>​
 ==== VM 3 (router) ==== ==== VM 3 (router) ====
Line 167: Line 179:
  
 <​code>​ <​code>​
-sysrc hostname=VM3 +sysrc hostname=VM3 ​\ 
-sysrc ifconfig_vtnet1="​inet 10.0.23.3/​24"​ + ifconfig_vtnet1="​inet 10.0.23.3/​24" ​\ 
-sysrc ifconfig_vtnet3="​inet 10.0.35.3/​24"​ + ifconfig_vtnet3="​inet 10.0.35.3/​24" ​\ 
-sysrc ifconfig_vtnet1_ipv6="​inet6 2001:​db8:​23::​3 prefixlen 64" + ifconfig_vtnet1_ipv6="​inet6 2001:​db8:​23::​3 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet3_ipv6="​inet6 2001:​db8:​35::​3 prefixlen 64" + ifconfig_vtnet3_ipv6="​inet6 2001:​db8:​35::​3 prefixlen 64" ​\ 
-sysrc static_routes="​VM6 VM1" + static_routes="​VM6 VM1" ​\ 
-sysrc route_VM1="​-net 10.0.12.0/​24 10.0.23.2"​ + route_VM1="​-net 10.0.12.0/​24 10.0.23.2" ​\ 
-sysrc route_VM6="​-net 10.0.56.0/​24 10.0.35.5"​ + route_VM6="​-net 10.0.56.0/​24 10.0.35.5" ​\ 
-sysrc ipv6_static_routes="​VM6 VM1" + ipv6_static_routes="​VM6 VM1" ​\ 
-sysrc ipv6_route_VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​23::​2"​ + ipv6_route_VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​23::​2" ​\ 
-sysrc ipv6_route_VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​35::​5"​+ ipv6_route_VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​35::​5"​
 service hostname restart service hostname restart
 service netif restart service netif restart
Line 189: Line 201:
  
 <​code>​ <​code>​
-sysrc hostname=VM4 +sysrc hostname=VM4 ​\ 
-sysrc ifconfig_vtnet1="​inet 10.0.24.4/​24"​ + ifconfig_vtnet1="​inet 10.0.24.4/​24" ​\ 
-sysrc ifconfig_vtnet3="​inet 10.0.45.4/​24"​ + ifconfig_vtnet3="​inet 10.0.45.4/​24" ​\ 
-sysrc ifconfig_vtnet1_ipv6="​inet6 2001:​db8:​24::​4 prefixlen 64" + ifconfig_vtnet1_ipv6="​inet6 2001:​db8:​24::​4 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet3_ipv6="​inet6 2001:​db8:​45::​4 prefixlen 64" + ifconfig_vtnet3_ipv6="​inet6 2001:​db8:​45::​4 prefixlen 64" ​\ 
-sysrc static_routes="​VM6 VM1" + static_routes="​VM6 VM1" ​\ 
-sysrc route_VM1="​-net 10.0.12.0/​24 10.0.24.2"​ + route_VM1="​-net 10.0.12.0/​24 10.0.24.2" ​\ 
-sysrc route_VM6="​-net 10.0.56.0/​24 10.0.45.5"​ + route_VM6="​-net 10.0.56.0/​24 10.0.45.5" ​\ 
-sysrc ipv6_static_routes="​VM6 VM1" + ipv6_static_routes="​VM6 VM1" ​\ 
-sysrc ipv6_route_VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​24::​2"​ + ipv6_route_VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​24::​2" ​\ 
-sysrc ipv6_route_VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​45::​5"​+ ipv6_route_VM6="​2001:​db8:​56::​ -prefixlen 64 2001:​db8:​45::​5"​
 service hostname restart service hostname restart
 service netif restart service netif restart
Line 211: Line 223:
  
 <​code>​ <​code>​
-sysrc hostname=VM5 +sysrc hostname=VM5 ​\ 
-sysrc ifconfig_vtnet2="​inet 10.0.35.5/​24"​ + ifconfig_vtnet2="​inet 10.0.35.5/​24" ​\ 
-sysrc ifconfig_vtnet3="​inet 10.0.45.5/​24"​ + ifconfig_vtnet3="​inet 10.0.45.5/​24" ​\ 
-sysrc ifconfig_vtnet4="​inet 10.0.56.5/​24"​ + ifconfig_vtnet4="​inet 10.0.56.5/​24" ​\ 
-sysrc ifconfig_vtnet2_ipv6="​inet6 2001:​db8:​35::​5 prefixlen 64" + ifconfig_vtnet2_ipv6="​inet6 2001:​db8:​35::​5 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet3_ipv6="​inet6 2001:​db8:​45::​5 prefixlen 64" + ifconfig_vtnet3_ipv6="​inet6 2001:​db8:​45::​5 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet4_ipv6="​inet6 2001:​db8:​56::​5 prefixlen 64" + ifconfig_vtnet4_ipv6="​inet6 2001:​db8:​56::​5 prefixlen 64" ​\ 
-sysrc static_routes="​VM3VM1 VM3VM2 VM4VM1 VM4VM2"​ + static_routes="​VM3VM1 VM3VM2 VM4VM1 VM4VM2" ​\ 
-sysrc route_VM3VM1="​-net 10.0.12.0/​24 10.0.35.3"​ + route_VM3VM1="​-net 10.0.12.0/​24 10.0.35.3" ​\ 
-sysrc route_VM3VM2="​-net 10.0.23.0/​24 10.0.35.3"​ + route_VM3VM2="​-net 10.0.23.0/​24 10.0.35.3" ​\ 
-sysrc route_VM4VM1="​-net 10.0.12.0/​24 10.0.45.4"​ + route_VM4VM1="​-net 10.0.12.0/​24 10.0.45.4" ​\ 
-sysrc route_VM4VM2="​-net 10.0.24.0/​24 10.0.45.4"​ + route_VM4VM2="​-net 10.0.24.0/​24 10.0.45.4" ​\ 
-sysrc ipv6_static_routes="​VM3VM1 VM3VM2 VM4VM1 VM4VM2"​ + ipv6_static_routes="​VM3VM1 VM3VM2 VM4VM1 VM4VM2" ​\ 
-sysrc ipv6_route_VM3VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​35::​3"​ + ipv6_route_VM3VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​35::​3" ​\ 
-sysrc ipv6_route_VM3VM2="​2001:​db8:​23::​ -prefixlen 64 2001:​db8:​35::​3"​ + ipv6_route_VM3VM2="​2001:​db8:​23::​ -prefixlen 64 2001:​db8:​35::​3" ​\ 
-sysrc ipv6_route_VM4VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​45::​4"​ + ipv6_route_VM4VM1="​2001:​db8:​12::​ -prefixlen 64 2001:​db8:​45::​4" ​\ 
-sysrc ipv6_route_VM4VM2="​2001:​db8:​24::​ -prefixlen 64 2001:​db8:​45::​4"​ + ipv6_route_VM4VM2="​2001:​db8:​24::​ -prefixlen 64 2001:​db8:​45::​4"​
-sed -i ''​ -e '/​net.inet.ip.redirect=0/​d'​ /​etc/​sysctl.conf +
-sed -i ''​ -e '/​net.inet6.ip6.redirect=0/​d'​ /​etc/​sysctl.conf +
-sysctl net.inet.ip.redirect=1 +
-sysctl net.inet6.ip6.redirect=1+
 service hostname restart service hostname restart
 service netif restart service netif restart
Line 243: Line 251:
  
 <​code>​ <​code>​
-sysrc hostname=VM6 +sysrc hostname=VM6 ​\ 
-sysrc gateway_enable=NO + gateway_enable=NO ​\ 
-sysrc ipv6_gateway_enable=NO + ipv6_gateway_enable=NO ​\ 
-sysrc ifconfig_vtnet4="​inet 10.0.56.6/​24"​ + ifconfig_vtnet4="​inet 10.0.56.6/​24" ​\ 
-sysrc ifconfig_vtnet4_alias1="​inet 10.0.56.16/​32"​ + ifconfig_vtnet4_alias1="​inet 10.0.56.16/​32" ​\ 
-sysrc ifconfig_vtnet4_alias2="​inet 10.0.56.26/​32"​ + ifconfig_vtnet4_alias2="​inet 10.0.56.26/​32" ​\ 
-sysrc ifconfig_vtnet4_alias3="​inet 10.0.56.36/​32"​ + ifconfig_vtnet4_alias3="​inet 10.0.56.36/​32" ​\ 
-sysrc ifconfig_vtnet4_alias4="​inet 10.0.56.46/​32"​ + ifconfig_vtnet4_alias4="​inet 10.0.56.46/​32" ​\ 
-sysrc ifconfig_vtnet4_alias5="​inet 10.0.56.56/​32"​ + ifconfig_vtnet4_alias5="​inet 10.0.56.56/​32" ​\ 
-sysrc ifconfig_vtnet4_ipv6="​inet6 2001:​db8:​56::​6 prefixlen 64" + ifconfig_vtnet4_ipv6="​inet6 2001:​db8:​56::​6 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet4_alias61="​inet6 2001:​db8:​56::​16 prefixlen 64" + ifconfig_vtnet4_alias61="​inet6 2001:​db8:​56::​16 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet4_alias62="​inet6 2001:​db8:​56::​26 prefixlen 64" + ifconfig_vtnet4_alias62="​inet6 2001:​db8:​56::​26 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet4_alias63="​inet6 2001:​db8:​56::​36 prefixlen 64" + ifconfig_vtnet4_alias63="​inet6 2001:​db8:​56::​36 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet4_alias64="​inet6 2001:​db8:​56::​46 prefixlen 64" + ifconfig_vtnet4_alias64="​inet6 2001:​db8:​56::​46 prefixlen 64" ​\ 
-sysrc ifconfig_vtnet4_alias65="​inet6 2001:​db8:​56::​56 prefixlen 64" + ifconfig_vtnet4_alias65="​inet6 2001:​db8:​56::​56 prefixlen 64" ​\ 
-sysrc defaultrouter="​10.0.56.5"​ + defaultrouter="​10.0.56.5" ​\ 
-sysrc ipv6_defaultrouter="​2001:​db8:​56::​5"​+ ipv6_defaultrouter="​2001:​db8:​56::​5"​
 service hostname restart service hostname restart
 service netif restart service netif restart
Line 268: Line 276:
 ==== Testing Load balancing ==== ==== Testing Load balancing ====
  
-Flows from VM1 to VM6 should be load-balanced ​by VM2 toward VM3 and VM4. Let's check using multiple sources and destination IP addresses.+Flows from VM1 to VM6 should be "flow-id shared" ​by VM2 toward VM3 and VM4. Let's check using multiple sources and destination IP addresses.
 Using ping record feature like with this example: Using ping record feature like with this example:
 <​code>​ <​code>​
 [root@VM1]~#​ ping -c1 -R -S 10.0.12.21 10.0.56.26 [root@VM1]~#​ ping -c1 -R -S 10.0.12.21 10.0.56.26
 PING 10.0.56.26 (10.0.56.26) from 10.0.12.21: 56 data bytes PING 10.0.56.26 (10.0.56.26) from 10.0.12.21: 56 data bytes
-64 bytes from 10.0.56.26: icmp_seq=0 ttl=61 time=0.358 ms +64 bytes from 10.0.56.26: icmp_seq=0 ttl=61 time=0.455 ms 
-RR:     10.0.23.2 +RR:     10.0.24.2 
-        10.0.35.3+        10.0.45.4
         10.0.56.5         10.0.56.5
         10.0.56.26         10.0.56.26
-        10.0.35.5 +        10.0.45.5 
-        10.0.23.3+        10.0.24.4
         10.0.12.2         10.0.12.2
         10.0.12.21         10.0.12.21
Line 285: Line 293:
 --- 10.0.56.26 ping statistics --- --- 10.0.56.26 ping statistics ---
 1 packets transmitted,​ 1 packets received, 0.0% packet loss 1 packets transmitted,​ 1 packets received, 0.0% packet loss
-round-trip min/​avg/​max/​stddev = 0.358/0.358/0.358/0.000 ms+round-trip min/​avg/​max/​stddev = 0.455/0.455/0.455/0.000 ms
 </​code>​ </​code>​
  
 ^ Source ^ Destination ^ Ongoing path selected by VM2 ^ Returning path selected by VM5^ ^ Source ^ Destination ^ Ongoing path selected by VM2 ^ Returning path selected by VM5^
-| 10.0.12.1 | 10.0.56.6 | VM3 VM3 +| 10.0.12.1 | 10.0.35.5 | VM3 | VM4 | 
-| 10.0.12.11 | 10.0.56.16 | VM3 VM3 +| 10.0.12.1 | 10.0.45.5 | VM4 | VM4 | 
-| 10.0.12.21 | 10.0.56.26 | VM3 VM3 +| 10.0.12.1 | 10.0.56.6 | VM4 VM4 
-| 10.0.12.31 | 10.0.56.36 | VM3 VM3 +| 10.0.12.11 | 10.0.56.16 | VM4 VM4 
-| 10.0.12.41 | 10.0.56.46 | VM3 VM3 +| 10.0.12.21 | 10.0.56.26 | VM4 VM4 
-| 10.0.12.51 | 10.0.56.56 | VM3 VM3 +| 10.0.12.31 | 10.0.56.36 | VM4 VM4 
-| 2001:​db8:​12::​1 | 2001:​db8:​56::​6 | VM3 VM3 +| 10.0.12.41 | 10.0.56.46 | VM4 VM4 
-| 2001:​db8:​12::​11 | 2001:​db8:​56::​16 | VM3 VM3 +| 10.0.12.51 | 10.0.56.56 | VM4 VM4 
-| 2001:​db8:​12::​21 | 2001:​db8:​56::​26 | VM3 VM3 +| 2001:​db8:​12::​1 | 2001:​db8:​56::​6 | error error 
-| 2001:​db8:​12::​31 | 2001:​db8:​56::​36 | VM3 VM3 +| 2001:​db8:​12::​11 | 2001:​db8:​56::​16 | error error 
-| 2001:​db8:​12::​41 | 2001:​db8:​56::​46 | VM3 VM3 +| 2001:​db8:​12::​21 | 2001:​db8:​56::​26 | error error 
-| 2001:​db8:​12::​51 | 2001:​db8:​56::​56 | VM3 VM3 | +| 2001:​db8:​12::​31 | 2001:​db8:​56::​36 | error error 
-| 10.0.12.1 | 10.0.45.5 | VM4 | VM3 |+| 2001:​db8:​12::​41 | 2001:​db8:​56::​46 | error error 
 +| 2001:​db8:​12::​51 | 2001:​db8:​56::​56 | error error |
  
-<​note>​There is no flow load-balancing with RADIX MPATH since FreeBSD 11, [[https://​bugs.freebsd.org/​bugzilla/​show_bug.cgi?​id=225792|seems broken with tryforward]],​ put proposed patch disable tryforward(fastforward) if RADIX_MPATH is enabled.</​note>​ 
  
 +Notice inet6 bug: Cannot ping itself neither neighbor
 +<​code>​
 +[root@VM1]~#​ ifconfig vtnet0 inet6
 +vtnet0: flags=8943<​UP,​BROADCAST,​RUNNING,​PROMISC,​SIMPLEX,​MULTICAST>​ metric 0 mtu 1500
 +        options=80028<​VLAN_MTU,​JUMBO_MTU,​LINKSTATE>​
 +        inet6 fe80::​5a9c:​fcff:​fe01:​201%vtnet0 prefixlen 64 scopeid 0x1
 +        inet6 2001:​db8:​12::​1 prefixlen 64
 +        inet6 2001:​db8:​12::​11 prefixlen 64
 +        inet6 2001:​db8:​12::​21 prefixlen 64
 +        inet6 2001:​db8:​12::​31 prefixlen 64
 +        inet6 2001:​db8:​12::​41 prefixlen 64
 +        inet6 2001:​db8:​12::​51 prefixlen 64
 +        nd6 options=21<​PERFORMNUD,​AUTO_LINKLOCAL>​
 +[root@VM1]~#​ ping6 -c 1 fe80::​5a9c:​fcff:​fe01:​201%vtnet0
 +PING6(56=40+8+8 bytes) fe80::​5a9c:​fcff:​fe01:​201%vtnet0 --> fe80::​5a9c:​fcff:​fe01:​201%vtnet0
 +
 +--- fe80::​5a9c:​fcff:​fe01:​201%vtnet0 ping6 statistics ---
 +1 packets transmitted,​ 0 packets received, 100.0% packet loss
 +[root@VM1]~#​ ping6 -c 12001:​db8:​12::​2
 +ping6: illegal number of packets -- 12001:​db8:​12::​2
 +[root@VM1]~#​ ping6 -c 1 2001:​db8:​12::​2
 +PING6(56=40+8+8 bytes) 2001:​db8:​12::​1 --> 2001:​db8:​12::​2
 +
 +--- 2001:​db8:​12::​2 ping6 statistics ---
 +1 packets transmitted,​ 0 packets received, 100.0% packet loss
 +</​code>​
 +
 +==== Testing Fail Over ====
 +
 +VM4 is the preferred hop, so shutdown this VM to check behavior:
 +
 +<​code>​
 +[root@VM4]~#​ shutdown -p now
 +Shutdown NOW!
 +</​code>​
 +
 +<​code>​
 +[root@VM2]~#​ netstat -4onW
 +Nexthop data
 +
 +Internet:
 +Idx   ​Type ​        ​IFA ​               Gateway ​            ​Flags ​     Use Mtu         ​Netif ​    ​Addrif Refcnt Prepend
 +4       ​v4/​resolve 10.0.23.2 ​         vtnet1/​resolve ​                  ​0 ​  ​1500 ​    ​vtnet1 ​              1
 +6       ​v4/​resolve 10.0.24.2 ​         vtnet2/​resolve ​                  ​0 ​  ​1500 ​    ​vtnet2 ​              1
 +2       ​v4/​resolve 10.0.12.2 ​         vtnet0/​resolve ​                 11   ​1500 ​    ​vtnet0 ​              1
 +1       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            6  16384        lo0               1
 +7       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            0  16384        lo0    vtnet2 ​    1
 +5       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            0  16384        lo0    vtnet1 ​    1
 +3       ​v4/​resolve 127.0.0.1 ​         lo0/​resolve ​       HS            0  16384        lo0    vtnet0 ​    1
 +9            v4/gw 10.0.24.2 ​         10.0.24.4 ​         GS           ​10 ​  ​1500 ​    ​vtnet2 ​              2
 +8            v4/gw 10.0.23.2 ​         10.0.23.3 ​         GS            2   ​1500 ​    ​vtnet1 ​              2
 +Nexthop groups data
 +BUF: 192
 +
 +Internet:
 +MpIdx NHIdx Weigh Slots            Gateway Netif      Refcnt
 +1      ---- ---- ----              ----      ----    1
 +          9   ​100 ​    ​1 ​         10.0.24.4 ​   vtnet2
 +          8   ​100 ​    ​1 ​         10.0.23.3 ​   vtnet1
 +</​code>​
 +
 +<​code>​
 +[root@VM1]~#​ ping -c1 -R -S 10.0.12.21 10.0.56.26
 +PING 10.0.56.26 (10.0.56.26) from 10.0.12.21: 56 data bytes
 +
 +--- 10.0.56.26 ping statistics ---
 +1 packets transmitted,​ 0 packets received, 100.0% packet loss
 +</​code>​
documentation/examples/ecmp.1572594552.txt.gz · Last modified: 2019/11/01 08:49 by olivier