Problem: any sleeping computer on a gigabit network causes all multicast traffic to drop to 10Mbps.
Solution: provide customers with managed gigabit switches and train them to configure the switches manually. Not an ideal solution.
I discovered today another workaround… the cause is 802.3x flow-control. Disabling flow-control fixes the problem:
sudo ifconfig en0 -mediaopt flow-control
However this means that every device on every customers network would need to turn off auto negotiation, then manually turn flow-control off. Turning off auto-negotiation is a very bad idea. Not a workable solution.
One example: I notice that on my dumb, old gigabit switch,
- sleeping machine has flow control ON , link light ON, 1000Mbps light is off
- sleeping machine has flow control OFF, link light ON, 1000Mbps light is lit.
My question is: Is there any RFC/protocol which would allow traffic to ignore flow-control. (Probably not)
Is there any RFC/protocol/hack to discover whether a sleeping device on a network uses flow-control… (Maybe?)
Is there any RFC/protocol/hack to discover what is the auto-negotiated speed of each device on its immediate switch (albeit dumb switch)?
This would at least allow my software to warn a user why their multicast performance is 10Mbps.