Cisco manages traffic through what they call a "flow". When traffic arrives, it is evaluated for the 5 tuple:
- Protocol (TCP, UDP, ICMP, OSPF, EIGRP)
- Source IP address
- Source Port
- Destination IP address
- Destination Port
All subsequent traffic that is identified as part of an existing flow is sent across the same link to avoid out-of-order packet (like a voice conversation that is UDP without sequence numbers). In the case of load balancing, it's effectively assigning each flow round robin.
If you ping, while watching a youtube video, the ICMP response may alternate between links due to the fact that ICMP is stateless, while watching a youtube video is essentially pinned to a link.
Both EIGRP and OSPF support Equal Cost Load Balancing.
EIGRP supports unequal cost load balancing, but it must pass the feasibility condition which in small environments usually fails; and the alternate route ends up unused.
Here in OSPF, the Cost is 2 for both routes. Therefore traffic will flow equally through both
[110/2] via 10.1.3.2, 00:00:02, FastEthernet1/0
[110/2] via 10.1.2.2, 00:00:02, FastEthernet0/0
Here in EIGRP, the cost is 30720 for both routes. Therefore traffic will flow equally through both [90/30720] via 10.1.3.2, 00:00:17, FastEthernet1/0
[90/30720] via 10.1.2.2, 00:00:17, FastEthernet0/0