documentation:examples:ecmp
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
documentation:examples:ecmp [2020/09/23 14:56] – [FRR Multipath setup] olivier | documentation:examples:ecmp [2022/12/11 17:52] – [R2 (ECMP router)] olivier | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Equal-cost multi-path routing (ECMP) ====== | ====== Equal-cost multi-path routing (ECMP) ====== | ||
- | This lab is testing new ECMP routing code from [[https:// | + | This lab need a FreeBSD 13-head r366390 minimum ([[https:// |
===== Presentation ===== | ===== Presentation ===== | ||
Line 28: | Line 28: | ||
gateway_enable=NO \ | gateway_enable=NO \ | ||
ipv6_gateway_enable=NO \ | ipv6_gateway_enable=NO \ | ||
- | ifconfig_igb1=" | + | ifconfig_igb1=" |
- | ifconfig_igb1_alias1=" | + | ifconfig_igb1_alias1=" |
- | ifconfig_igb1_alias2=" | + | ifconfig_igb1_alias2=" |
- | ifconfig_igb1_alias3=" | + | ifconfig_igb1_alias3=" |
- | ifconfig_igb1_alias4=" | + | ifconfig_igb1_alias4=" |
- | ifconfig_igb1_alias5=" | + | ifconfig_igb1_alias5=" |
- | ifconfig_igb1_ipv6=" | + | ifconfig_igb1_ipv6=" |
- | ifconfig_igb1_alias61=" | + | ifconfig_igb1_alias61=" |
- | ifconfig_igb1_alias62=" | + | ifconfig_igb1_alias62=" |
- | ifconfig_igb1_alias63=" | + | ifconfig_igb1_alias63=" |
- | ifconfig_igb1_alias64=" | + | ifconfig_igb1_alias64=" |
- | ifconfig_igb1_alias65=" | + | ifconfig_igb1_alias65=" |
- | static_routes=" | + | static_routes=" |
- | route_LAB=" | + | route_LAB=" |
- | ipv6_static_routes=" | + | ipv6_static_routes=" |
- | ipv6_route_LAB=" | + | ipv6_route_LAB=" |
service hostname restart | service hostname restart | ||
service netif restart | service netif restart | ||
Line 55: | Line 55: | ||
< | < | ||
+ | |||
sysrc hostname=R1 \ | sysrc hostname=R1 \ | ||
gateway_enable=YES \ | gateway_enable=YES \ | ||
ipv6_gateway_enable=YES \ | ipv6_gateway_enable=YES \ | ||
- | ifconfig_igb0=" | + | ifconfig_igb0=" |
- | ifconfig_igb0_ipv6=" | + | ifconfig_igb0_ipv6=" |
- | ifconfig_igb1=" | + | ifconfig_igb1=" |
- | ifconfig_igb1_ipv6=" | + | ifconfig_igb1_ipv6=" |
- | ifconfig_igb2=" | + | ifconfig_igb2=" |
- | ifconfig_igb2_ipv6=" | + | ifconfig_igb2_ipv6=" |
static_routes=" | static_routes=" | ||
- | route_MPATH1=" | + | route_MPATH1=" |
- | route_MPATH2=" | + | route_MPATH2=" |
ipv6_static_routes=" | ipv6_static_routes=" | ||
- | ipv6_route_MPATH1=" | + | ipv6_route_MPATH1=" |
- | ipv6_route_MPATH2=" | + | ipv6_route_MPATH2=" |
service hostname restart | service hostname restart | ||
service netif restart | service netif restart | ||
Line 79: | Line 80: | ||
< | < | ||
- | [root@R1]~# # netstat -rn4 | grep 10.0.0.0/ | + | root@R1:~ # netstat -rn4 | grep 10.0.0.0/ |
- | 10.0.0.0/ | + | 10.0.0.0/ |
- | 10.0.0.0/ | + | 10.0.0.0/ |
- | [root@R1]~# route -n get 10.0.0.0/ | + | root@R1:~ # netstat -4onW |
- | route to: 10.0.0.0 | + | |
- | destination: | + | |
- | mask: 255.255.0.0 | + | |
- | gateway: 10.0.112.2 | + | |
- | fib: 0 | + | |
- | interface: igb1 | + | |
- | flags: < | + | |
- | | + | |
- | | + | |
- | + | ||
- | [root@R1]~# netstat -4onW | + | |
Nexthop data | Nexthop data | ||
Internet: | Internet: | ||
Idx | Idx | ||
- | 1 | + | 1 |
- | 2 | + | 2 |
- | 3 | + | 3 |
- | 4 | + | 4 |
- | 5 | + | 5 |
- | 6 | + | 6 |
- | 7 | + | 7 |
- | 8 v4/gw 10.0.112.1 10.0.112.2 GS 0 | + | 8 v4/gw 10.0.231.2 10.0.231.3 GS 0 |
- | 9 v4/gw 10.0.212.1 10.0.212.2 GS 0 | + | 9 v4/gw 10.0.232.2 10.0.232.3 GS 0 |
- | + | ||
- | [root@R1]~# netstat -rn6 | grep 2001: | + | |
- | 2001: | + | |
- | 2001: | + | |
- | + | ||
- | [root@R1]~# route -n6 get 2001: | + | |
- | route to: 2001: | + | |
- | destination: | + | |
- | mask: ffff: | + | |
- | gateway: 2001: | + | |
- | fib: 0 | + | |
- | interface: igb2 | + | |
- | flags: < | + | |
- | | + | |
- | | + | |
- | [root@R1]~# netstat -6onW | + | root@R1:~ # netstat -6onW |
Nexthop data | Nexthop data | ||
Internet6: | Internet6: | ||
Idx | Idx | ||
- | 1 | + | 1 |
- | 2 | + | 2 |
- | 3 | + | 3 |
- | 4 | + | 4 |
- | 5 | + | 5 |
- | 6 | + | 6 |
- | 7 | + | 7 |
- | 8 | + | 8 |
- | 9 v6/resolve 2001: | + | 9 |
- | 10 | + | 10 v6/gw ::1 :: |
- | 11 v6/resolve ::1 | + | 11 v6/gw 2001:db8:231::2 2001:db8:231::3 GS 0 |
- | 12 v6/gw ::1 :: | + | 12 v6/gw 2001:db8:232::2 2001:db8:232::3 GS 0 |
- | 13 v6/gw 2001:db8:112::1 2001:db8:112::2 GS 0 | + | |
- | 14 v6/gw 2001:db8:212::1 2001:db8:212::2 GS | + | |
- | 15 v6/resolve 2001: | + | |
</ | </ | ||
+ | ==== R2 (ECMP router) ==== | ||
- | + | R2 is like R1, a router with ECMP: 2 static routing toward the same destination but using 2 different next-hop.. | |
- | Look like this router will prefer igb1 for inet4 and igb2 for inet6. | + | |
- | + | ||
- | ==== R5 (ECMP router) ==== | + | |
- | + | ||
- | R5 is like R2, a router with ECMP: 2 static routing toward the same destination but using 2 different next-hop.. | + | |
< | < | ||
Line 157: | Line 125: | ||
gateway_enable=YES \ | gateway_enable=YES \ | ||
ipv6_gateway_enable=YES \ | ipv6_gateway_enable=YES \ | ||
- | ifconfig_igb0=" | + | ifconfig_igb0=" |
- | ifconfig_igb0_ipv6=" | + | ifconfig_igb0_ipv6=" |
- | ifconfig_igb1=" | + | ifconfig_igb1=" |
- | ifconfig_igb1_ipv6=" | + | ifconfig_igb1_ipv6=" |
- | ifconfig_igb2=" | + | ifconfig_igb2=" |
- | ifconfig_igb2_ipv6=" | + | ifconfig_igb2_ipv6=" |
- | static_routes=" | + | static_routes=" |
- | | + | |
- | | + | |
- | ipv6_static_routes=" | + | route_SRC1=" |
- | ipv6_route_MPATH1=" | + | route_SRC2=" |
- | ipv6_route_MPATH2=" | + | ipv6_static_routes=" |
+ | ipv6_route_MPATH1=" | ||
+ | ipv6_route_MPATH2=" | ||
+ | ipv6_route_SRC1=" | ||
+ | ipv6_route_SRC2=" | ||
service hostname restart | service hostname restart | ||
service netif restart | service netif restart | ||
Line 174: | Line 146: | ||
config save | config save | ||
</ | </ | ||
- | |||
- | And checking: | ||
- | < | ||
- | # route get 10.0.0.0/16 | ||
- | route to: 10.0.0.0 | ||
- | destination: | ||
- | mask: 255.255.0.0 | ||
- | gateway: 10.0.212.1 | ||
- | fib: 0 | ||
- | interface: igb2 | ||
- | flags: < | ||
- | | ||
- | | ||
- | |||
- | |||
- | # route -6 get 2001: | ||
- | route to: 2001:db8:: | ||
- | destination: | ||
- | mask: ffff:ffff:: | ||
- | gateway: 2001: | ||
- | fib: 0 | ||
- | interface: igb1 | ||
- | flags: < | ||
- | | ||
- | | ||
- | |||
- | </ | ||
- | |||
- | Look like this router will prefer to use igb2 for inet4 and igb1 for inet6. | ||
- | |||
==== Server ==== | ==== Server ==== | ||
Line 252: | Line 194: | ||
frr version 7.4 | frr version 7.4 | ||
frr defaults traditional | frr defaults traditional | ||
- | hostname | + | hostname |
+ | ! | ||
+ | interface igb0 | ||
+ | ipv6 ospf6 passive | ||
! | ! | ||
router ospf | router ospf | ||
Line 260: | Line 205: | ||
| | ||
| | ||
+ | ! | ||
+ | router ospf6 | ||
+ | | ||
+ | | ||
+ | | ||
! | ! | ||
line vty | line vty | ||
Line 281: | Line 231: | ||
frr version 7.4 | frr version 7.4 | ||
frr defaults traditional | frr defaults traditional | ||
- | hostname | + | hostname |
+ | ! | ||
+ | interface igb0 | ||
+ | ipv6 ospf6 passive | ||
! | ! | ||
router ospf | router ospf | ||
Line 289: | Line 242: | ||
| | ||
| | ||
+ | ! | ||
+ | router ospf6 | ||
+ | | ||
+ | | ||
+ | | ||
! | ! | ||
line vty | line vty | ||
Line 306: | Line 264: | ||
Copyright 1996-2005 Kunihiro Ishiguro, et al. | Copyright 1996-2005 Kunihiro Ishiguro, et al. | ||
- | homelab1# sh ip route 10.0.24.0/ | + | router1# sh ip route 10.0.24.0/ |
Routing entry for 10.0.24.0/ | Routing entry for 10.0.24.0/ | ||
Known via " | Known via " | ||
Line 312: | Line 270: | ||
* 10.0.112.2, via igb1, weight 1 | * 10.0.112.2, via igb1, weight 1 | ||
* 10.0.212.2, via igb2, weight 1 | * 10.0.212.2, via igb2, weight 1 | ||
+ | |||
+ | route1# sh ipv6 route 2001: | ||
+ | Routing entry for 2001: | ||
+ | Known via " | ||
+ | Last update 00:02:42 ago | ||
+ | * fe80:: | ||
+ | * fe80:: | ||
+ | |||
router1# exit | router1# exit | ||
+ | |||
[root@router1]~# | [root@router1]~# | ||
10.0.24.0/ | 10.0.24.0/ | ||
10.0.24.0/ | 10.0.24.0/ | ||
+ | |||
+ | [root@router1]~# | ||
+ | 2001: | ||
+ | 2001: | ||
+ | |||
</ | </ | ||
- | === Testing | + | ===== Test Load balancing |
Flows from the client to the server should be " | Flows from the client to the server should be " |
documentation/examples/ecmp.txt · Last modified: 2024/03/28 23:19 by olivier