Five progressive lab tasks with production-grade topology, step-by-step CLI solutions, and verification checkpoints. Import the included .unl files into EVE-NG and complete the tasks to master variance, share-count, offset-lists, maximum-paths, and asymmetric routing.
Figure 1 — EIGRP Module C Lab Topology (AS 1234) with dual-path design for load balancing and metric tuning labs.
| Device | Role | Interfaces | IP Addresses | EIGRP AS | Router ID |
|---|---|---|---|---|---|
| Core-R1 | Hub / Border | Gi0/0 (to ISP) Gi0/1 (to R2) Gi0/2 (to R3) Lo0 |
10.0.0.1/30 10.1.12.1/24 10.1.13.1/24 1.1.1.1/32 |
1234 | 1.1.1.1 |
| Dist-R2 | Distribution | Gi0/0 (to R1) Gi0/1 (to Host-A) Lo0 |
10.1.12.2/24 10.1.10.1/24 2.2.2.2/32 |
1234 | 2.2.2.2 |
| Dist-R3 | Distribution | Gi0/0 (to R1) Gi0/1 (to Host-B) Lo0 |
10.1.13.2/24 10.1.20.1/24 3.3.3.3/32 |
1234 | 3.3.3.3 |
| Host-A | End device | Eth0 | 10.1.10.10/24 (GW .1) | N/A | N/A |
| Host-B | End device | Eth0 | 10.1.20.10/24 (GW .1) | N/A | N/A |
| ISP_Router | Simulated WAN | Gi0/0 | 10.0.0.2/30 | 65001 | 9.9.9.9 |
| Symbol | Meaning |
|---|---|
| Green Arrows | EIGRP Hello packets (multicast 224.0.0.10) |
| Blue Arrows | EIGRP Update / Query / Reply messages |
| Orange Dashed | Summarization route boundaries |
| Black Lines | Physical Ethernet links |
| Purple Dashed | Static unicast neighborship (when applicable) |
| Red Dashed | Load-share path (equal or unequal cost) |
Core-R1# show ip route 10.1.10.0 ! Currently only one path installed (single successor) Core-R1# show ip protocols | include Maximum path ! Verify default value (typically 4)
! Match the delay on both uplinks so metrics become identical Core-R1# configure terminal Core-R1(config)# interface GigabitEthernet0/2 Core-R1(config-if)# delay 10 ! Now both Gi0/1 and Gi0/2 have identical delay = same metric
Core-R1# show ip route 10.1.10.0 ! Should now show both paths with identical metrics Core-R1# show ip eigrp topology 10.1.10.0/24 ! Should show "2 successors"
Core-R1# show ip route 10.1.10.0
Routing entry for 10.1.10.0/24
Known via "eigrp 1234", distance 90, metric 158720, type internal
Routing Descriptor Blocks:
* 10.1.12.2, from 10.1.12.2, 00:15:23 ago, via GigabitEthernet0/1
Route metric is 158720, traffic share count is 1
10.1.13.2, from 10.1.13.2, 00:15:23 ago, via GigabitEthernet0/2
Route metric is 158720, traffic share count is 1
! Both paths have equal metrics and share count 1:1
! Change delay to make paths have different metrics Core-R1# configure terminal Core-R1(config)# interface GigabitEthernet0/2 Core-R1(config-if)# delay 100 ! Now Gi0/2 has a higher metric than Gi0/1
Core-R1# show ip eigrp topology 10.1.10.0/24 ! Confirm the backup path passes Feasibility (RD < FD) ! If it fails Feasibility, variance will NOT help
Core-R1(config)# router eigrp 1234 Core-R1(config-router)# variance 2 Core-R1(config-router)# exit ! Verify both paths install Core-R1# show ip route 10.1.10.0
Core-R1# show ip route 10.1.10.0
Routing entry for 10.1.10.0/24
Known via "eigrp 1234", distance 90, metric 158720, type internal
Routing Descriptor Blocks:
* 10.1.12.2, from 10.1.12.2, 00:15:23 ago, via GigabitEthernet0/1
Route metric is 158720, traffic share count is 2
10.1.13.2, from 10.1.13.2, 00:15:23 ago, via GigabitEthernet0/2
Route metric is 307200, traffic share count is 1
! Both paths installed. Lower-metric path gets share count 2
! Traffic distribution: 2/3 via Gi0/1, 1/3 via Gi0/2
Core-R1# show ip eigrp topology 10.1.10.0/24 ! Record: 1 successor, 1 feasible successor ! Note the FD (Feasible Distance)
Core-R1# configure terminal Core-R1(config)# ip access-list standard MATCH_HOSTA_SUBNET Core-R1(config-std-nacl)# permit 10.1.10.0 0.0.0.255 Core-R1(config-std-nacl)# exit
Core-R1(config)# router eigrp 1234 Core-R1(config-router)# offset-list MATCH_HOSTA_SUBNET in 5000 GigabitEthernet0/1 ! Increases the local metric on Gi0/1 for 10.1.10.0/24 by 5000 ! Verify the change Core-R1# show ip eigrp topology 10.1.10.0/24
Core-R1# show ip eigrp topology all-links | include 10.1.10.0 ! Confirm backup path still satisfies Feasibility ! If the metric change made RD > FD, FS is broken
Core-R1# show ip eigrp topology 10.1.10.0/24 P 10.1.10.0/24, 1 successors, FD is 163720 via 10.1.12.2 (163720/156160), GigabitEthernet0/1 via 10.1.13.2 (307200/156160), GigabitEthernet0/2 ! Note: FD changed from 158720 to 163720 (+5000 offset) ! Backup path RD (156160) still less than new FD (163720) ! Feasibility Condition still passes
! Remove the offset-list to restore original state Core-R1(config)# router eigrp 1234 Core-R1(config-router)# no offset-list MATCH_HOSTA_SUBNET in 5000 GigabitEthernet0/1
Core-R1# show ip route 10.1.10.0 ! Look at each path's "traffic share count is N" Core-R1# show ip eigrp topology 10.1.10.0/24 ! Check FD and the metric of each successor
! Goal: Force a 3:1 share ratio between Gi0/1 and Gi0/2 ! Achieve by tuning delay on the backup path Core-R1# configure terminal Core-R1(config)# interface GigabitEthernet0/2 Core-R1(config-if)# delay 200 ! Now the metrics should differ enough to produce 3:1
Core-R1# show ip route 10.1.10.0 ! Expected: Gi0/1 share count = 3, Gi0/2 share count = 1 Core-R1# show ip eigrp topology 10.1.10.0/24 ! Confirm both paths still show as successors
Core-R1# show ip route 10.1.10.0
Routing entry for 10.1.10.0/24
Known via "eigrp 1234", distance 90, metric 158720, type internal
Routing Descriptor Blocks:
* 10.1.12.2, from 10.1.12.2, 00:15:23 ago, via GigabitEthernet0/1
Route metric is 158720, traffic share count is 3
10.1.13.2, from 10.1.13.2, 00:15:23 ago, via GigabitEthernet0/2
Route metric is 383360, traffic share count is 1
! Ratio 3:1 achieved
! 75% of packets via Gi0/1, 25% via Gi0/2
! From Host-A, generate continuous ping traffic to Host-B: Host-A# ping 10.1.20.10 repeat 1000 size 1500 ! On Core-R1, check interface counters: Core-R1# show interfaces GigabitEthernet0/1 | include output packets Core-R1# show interfaces GigabitEthernet0/2 | include output packets ! The packet counts should reflect the 3:1 ratio
Variance has been enabled to utilize both links. But now TCP sessions are failing intermittently. Your task is to:
Core-R1# show ip route 10.1.10.0 Core-R1# show ip route 10.1.20.0 ! Look at how traffic is distributed for both directions Core-R1# show ip protocols | include variance ! Confirm variance is enabled
! Trace path from Core-R1 to Host-A and Host-B Core-R1# traceroute 10.1.10.10 Core-R1# traceroute 10.1.20.10 ! On Dist-R2 and Dist-R3, check return paths Dist-R2# show ip route 10.1.20.10 Dist-R3# show ip route 10.1.10.10 ! If forward path uses Gi0/1 but return uses Gi0/2, you have asymmetry
! Option A: Remove variance entirely Core-R1# configure terminal Core-R1(config)# router eigrp 1234 Core-R1(config-router)# no variance ! Traffic returns to single primary path; backup becomes standby only ! Option B: Tune metrics to make paths equal-cost Core-R1(config)# interface GigabitEthernet0/2 Core-R1(config-if)# delay 10 ! Now both paths have equal metrics — load balancing is symmetric ! Option C: Restrict variance to specific routes via offset-lists ! (Most complex — advanced design consideration) ! Step 4: Verify symmetric behavior after the fix Core-R1# show ip route 10.1.10.0 Core-R1# show ip route 10.1.20.0 ! Forward and return should now use matching paths
! After Option B (equal-cost fix):
Core-R1# show ip route 10.1.10.0
Routing entry for 10.1.10.0/24
Known via "eigrp 1234", distance 90, metric 158720, type internal
Routing Descriptor Blocks:
* 10.1.12.2, from 10.1.12.2, 00:15:23 ago, via GigabitEthernet0/1
Route metric is 158720, traffic share count is 1
10.1.13.2, from 10.1.13.2, 00:15:23 ago, via GigabitEthernet0/2
Route metric is 158720, traffic share count is 1
! Equal-cost. Return path also equal-cost.
! No more asymmetric behavior.
! TCP sessions now stable.
[YOUR-IOL-L3-IMAGE].bin. After importing, replace the placeholder with the exact filename of your IOL L3 image (installed legally in your EVE-NG). See the Lab Setup Master Guide for details on legal image sourcing.