MTCRE Lab 1.6 - ECMP (Equal-Cost Multi-Path)
Introduction
In real-world networks, redundancy isn't just about having backup paths—it's also about utilizing multiple paths simultaneously to maximize bandwidth and improve network efficiency. Equal-Cost Multi-Path (ECMP) routing allows routers to distribute traffic across multiple paths that have the same cost to reach a destination, effectively load-balancing traffic without requiring complex routing protocols or additional hardware.
In this lab, we explore ECMP in MikroTik RouterOS 7.x by creating multiple equal-cost static routes from R1 to R4's loopback interface. You'll configure parallel paths through R2 and R3, observe how RouterOS marks ECMP routes in the routing table, and test the differences between per-connection and per-packet load balancing. Understanding ECMP is crucial for MTCRE candidates, as it demonstrates fundamental concepts of traffic distribution, route selection, and load balancing that apply across various routing scenarios.
By the end of this lab, you'll understand how to configure multiple equal-cost paths, recognize ECMP routes in the routing table, and appreciate the implications of different load-balancing strategies on network performance and packet delivery.
Terminology Definitions
Equal-Cost Multi-Path (ECMP): A routing strategy that allows a router to forward packets toward a single destination over multiple paths with equal routing metrics. Instead of selecting one "best" path, the router can use all equal-cost paths simultaneously.
Load Balancing: The distribution of network traffic across multiple paths or links to optimize resource utilization, maximize throughput, minimize response time, and avoid overload of any single path.
Per-Connection Load Balancing: A method where all packets belonging to the same connection (identified by source/destination IP and port combination) follow the same path. This maintains packet ordering and is the default behavior in RouterOS.
Per-Packet Load Balancing: A method where each individual packet can take a different path, regardless of which connection it belongs to. While this can provide more granular distribution, it may cause packet reordering.
Routing Metric: A value used by routing protocols and static routes to determine the preference of one route over another. Lower metrics are generally preferred. For static routes in RouterOS, this is called "distance."
Active Route (+): In RouterOS routing tables, an active route is marked with a "+" symbol, indicating it's currently being used for forwarding decisions. When ECMP is in effect, multiple routes to the same destination can all be marked as active.
Route Distance: The administrative distance or preference value assigned to a route. Routes with lower distance values are preferred. For static routes in RouterOS, the default distance is 1.
Loopback Interface: A virtual interface that remains active as long as the router is running, regardless of physical interface states. Commonly used for router identification and as stable destination addresses.
Lab Topology

Prerequisites and Starting Configuration
Important: This lab builds upon the configuration from Lab 1.4 (More Specific Routes). If you have completed Lab 1.4, your routers should already have the base configuration needed for this lab. You can skip directly to Step 1 of the ECMP-specific configuration below.
If you have not completed Lab 1.4, or if you need to reset your lab environment, use the following complete configuration to establish the starting state for this lab.
Option A: Coming from Lab 1.4
If you completed Lab 1.4, verify your configuration matches the following:
- R1 has ECMP routes to 10.10.10.0/24 via both R2 and R3 (distance=1)
- R4 has a bridge interface
loop10with IP 10.10.10.1/24 - All routers have proper return routing configured
You can verify this on R1 with:
/ip route print where dst-address=10.10.10.0/24
You should see two active routes with distance=1.
Option B: Starting Fresh (Complete Configuration)
If you are starting this lab without having completed Lab 1.4, apply the following complete configuration to establish the proper starting state.
Configure VPC:
set pcname VPC1
ip 192.168.1.10 255.255.255.0 192.168.1.1
save
Configure R1:
/system identity set name=R1
/ip address
add address=192.168.1.1/24 interface=ether1 comment="to VPC"
add address=192.168.12.1/24 interface=ether2 comment="to R2"
add address=192.168.13.1/24 interface=ether3 comment="to R3"
# ECMP Routes to 10.10.10.0/24 (both with distance=1)
/ip route
add dst-address=10.10.10.0/24 gateway=192.168.12.2 distance=1 comment="Primary via R2"
add dst-address=10.10.10.0/24 gateway=192.168.13.2 distance=1 comment="Backup via R3"
Configure R2:
/system identity set name=R2
/ip address
add address=192.168.12.2/24 interface=ether1 comment="to R1"
add address=192.168.14.2/24 interface=ether2 comment="to R4"
/ip route
add dst-address=10.10.10.0/24 gateway=192.168.14.1 comment="to R4 bridge"
add dst-address=192.168.1.0/24 gateway=192.168.12.1 comment="return to R1/VPC"
Configure R3:
/system identity set name=R3
/ip address
add address=192.168.13.2/24 interface=ether1 comment="to R1"
add address=192.168.15.1/24 interface=ether2 comment="to R4"
/ip route
add dst-address=10.10.10.0/24 gateway=192.168.15.2 comment="to R4 bridge"
add dst-address=192.168.1.0/24 gateway=192.168.13.1 comment="return to R1/VPC"
Configure R4:
/system identity set name=R4
/ip address
add address=192.168.14.1/24 interface=ether1 comment="to R2"
add address=192.168.15.2/24 interface=ether2 comment="to R3"
# Create bridge interface for loopback simulation
/interface bridge add name=loop10 comment="Destination 10.10.10.0/24"
/ip address add address=10.10.10.1/24 interface=loop10 comment="Final destination network"
# ECMP return routes to VPC plus intermediate network routes
/ip route
add dst-address=192.168.1.0/24 gateway=192.168.14.2 comment="to VPC via R2"
add dst-address=192.168.1.0/24 gateway=192.168.15.1 comment="to VPC via R3"
add dst-address=192.168.12.0/24 gateway=192.168.14.2 comment="to R1-e2 via R2"
add dst-address=192.168.13.0/24 gateway=192.168.15.1 comment="to R1-e3 via R3"
Verification:
After applying the configuration, verify connectivity:
- From VPC, ping R1:
ping 192.168.1.1 -c 4
- From VPC, ping R4's loopback:
ping 10.10.10.1 -c 4
- On R1, verify ECMP routes are active:
/ip route print detail where dst-address=10.10.10.0/24
You should see both routes marked with "As" flags (Active, Static) with distance=1.
- Trace the path from VPC to R4:
trace 10.10.10.1
The path should go through either R2 or R3 (both paths are equal-cost).