Le Mar 17 Déc 2002 15:56, Felix Rauch a écrit :
Dear list members,
I'm interested in the best case performance of UDPcast on fast networks like Fast Ethernet or Gigabit Ethernet. So far my results are not so good, but maybe I'm doing something wrong and maybe somebody can give me any hints.
For Fast Ethernet, I get the following performance (without disk access):
Clients Performance [MB/s] re-xmits 1 11.8 12 2 0.89 142290 4 0.93 103320 8 1.0 ?
So, while I get wire speed with only one client and server, I only get about 10% of the best performance for more than 1 client.
10% ? That suspiciously looks as if your switch is dropping down from 100Mb/s to 10Mb/s. This happens often on 10/100 switches, if one device is connected to it that cannot handle 100. Many switches don't understand IGMP, and thus do not know the composition of the multicast group. Multicast transmission goes out of _all_ ports (rather than only those where receivers are), and if one of the ports has a 10Mbps device attached, the switch slows down the communication.
The problem does not happen if there is only one receiver connected, because in that case udpcast uses unicast, rather than multicast. With unicast, switches usually know which ports should get the traffic, and which ones shouldn't (or else, it would be a hub, not a switch).
There are several ways around this: 1. Maybe your switch does understand IGMP, but this is just switched off? Can you check what happens if you enable it (IGMP snooping)? N.B. Some 3com switches, and maybe others as well, do have a config option for IGMP snooping, but it is not actually implemented... (i.e. even if enabled, it doesn't work).
2. Or if the above doesn't work, try disabling flow control in the switch. With that config, the switch will just drop the packets that it cannot transmit on the 10Mb/s ports (but the 100 Mb/s ports still enjoy the complete transmission).
3. If that doesn't help either (or is unavailable), try unplugging all devices that do not participate in the communication. It might be necessary to unplug the "uplink" to the root switch as well, if you have a multi-level switched network. In that case, DHCP may be unavailable, if your DHCP server is sitting on a different switch. Just configure the IP addresses by hand. What also works is to leave the uplink in during IP discovery, and to unplug it only when all stations have gotten their IP address.
With switches appropriately configured (i.e. "no flow control", our switches unfortunately don't understand IGMP), we get up to 90 Mb/s on our machines (if hard disks are fast enough).
Am I missing something? Are the high re-xmit-numbers normal or do they point to a problem? The commands I use are as follows:
node01:~/src/udpcast> ./udp-sender --file /dev/zero --full-duplex node02:~/src/udpcast> ./udp-receiver --file /dev/null
On Gigabit Ethernet the performance seems even worse, I can barely transmit any data. Here's what happens on the sender during 1 minute:
Not sure that this is the same problem as on 100Mbit/s. Indeed, as this technology is much more recent, most Gigabit switches (hopefully) should know how to correctly switch multicast traffic.
But maybe a different problem is occuring (but it might still be worth trying to disconnect from the Gigabit switch all devices that are unrelated to the transfer).
node01:~/src/udpcast> time ./udp-sender --file /dev/zero --full-duplex --interface eth1 --log /tmp/udpcast.log Udp-sender 2001-12-31
Can you also retry this with the half-duplex flag, just in case?
Alain