Say I have a gigabit network interface eth0, that is receiving 1000 megabit transmissions from two other machines on the same switch. What is the expected behavior as far as how throughput is allocated?

When we've tested this scenario it seems that one of the transmitting machines will "win out" and go through (at say ~900 megabits), while the other will decrease to nearly nothing (~20 megabits). And it seems that if we have disparate operating systems on the switch, the Linux->Linux transfer wins out.

Are there known factors that determine how the bandwidth gets allocated on a saturated interface? Or is it just a random collection of OS/drivers/hardware/etc.?

The switch in question is a regular, non-smart switch.

  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can provide and accept your own answer.
    – Ron Maupin
    Feb 19 '18 at 20:22

If you try to run multiple flows out of a switch's port that in combination exceed the capacity of a port, frames get dropped. For a very short while - depending on the switches buffering capacity - frames are queued into the buffer but it will overflow quickly (a few or some more milliseconds).

If no QoS is in effect on the switch it doesn't do much of a selection - it queues frames into the egress queue if there's space or drops them if there isn't, effectively pretty much at random.

How the whole flow is actually performing depends largely on the protocol being used and how exactly the protocol is implemented. UDP will likely be all the same, no matter what's on each end. TCP can vary substantially due to the exact parameters of its congestion control. More aggressive parameters will let one flow win over another flow with less aggressive parameters on the endpoints.

When Ethernet flow control is active, head-of-line blocking will appear, causing a somewhat better distribution between flows and next to no frame drops but most probably also a less than 100% saturation of the destination port.

  • Of course, ethernet flow control is poorly supported, which is why the IEEE is trying to replace it.
    – Ron Maupin
    Nov 29 '17 at 21:07
  • Flow control is far from perfect and often causes undesired effects in more complex situations. Actually, a replacement already exists (802.1Qbb) but adoption is slow.
    – Zac67
    Nov 29 '17 at 21:11
  • Right. By the IEEE is trying to replace it, I mean that the IEEE is trying to get vendors to use the new standard to replace the original ethernet flow control. I wish them luck with that, but I really don't see it becoming ubiquitous.
    – Ron Maupin
    Nov 29 '17 at 21:25

This really has nothing to do with the host interface, which is only going to receive at the rate send by the interface on the other end of the link. You can't have two other hosts connected to a single interface in another host; there must be some network device (router, switch, WAP, etc.) in between.

For example, if the host is connected to a switch to which the other two hosts are connected. The switch, absent any special configurations, will send traffic to the destination host on a first-come, first served basis at the rate its interface is configured. Any traffic above the interface rate will be dropped.

By the way, the term flood has a special significance in networking. Switches flood (send to all other interfaces, except the one on which the frame is received) unknown unicast frames.

  • I reworked my word choice based on your comment, and also clarified that the scenario I'm looking at is with all three machines on the same switch.
    – mpr
    Nov 29 '17 at 20:54
  • I explained in my answer what the switch does. The switch can only send traffic at the rate which is configured on its interface, and it will drop the excess traffic. Absent special configurations (available on some advanced switch models), this is done first-come, first served.
    – Ron Maupin
    Nov 29 '17 at 20:56
  • If it's first come first served, and the transmitters are both transmitting at 1000mbps, shouldn't I see roughly 450mbps coming in on each socket? How would a first come first served algorithm yield such a lopsided result?
    – mpr
    Nov 29 '17 at 21:09
  • Now, you are getting into what the hosts do, and that is off-topic here. I am answering from the on-topic perspective of the network equipment. The hosts can have different configurations that determine what happens when traffic is lost, but those things are off-topic here.
    – Ron Maupin
    Nov 29 '17 at 21:22
  • Ah so are you saying that one of the transmitting hosts would detect that the switch was dropping its packets and throttle back (in my case the Windows machine), while the more aggressively configured machine continued to push packets at nearly 1000mbit? The switch informs the host interfaces somehow that their packets are dropping and the hosts react in unique ways?
    – mpr
    Nov 29 '17 at 21:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.