I work for an ISP and have done wifi for events with over 10,000 attendants. We have done this exclusively with Ubiquiti equipment. I have not used any of the high-end gear that claims to be designed for this (Aerohive/Ruckus/etc...). The bottom line is, ultimately, the wifi standard is not designed for this type of deployment -- the standards do not support the features that would be needed to get the best performance in this environment. That being said, like with most things, it can often be made to work with a reasonable level of service.
There are two bands that are available for use -- 2.4ghz and 5.8ghz. Most newer devices support 5.8ghz -- there is more overall bandwidth available on the 5.8ghz band, but we have had good success deploying only 2.4ghz for public events. Deploying 802.11ac in the 5ghz band with beam steering is something that we may investigate as more clients begin to support this band.
Two of the main issues is contention for air time (bandwidth) and channel usage. Wifi is half duplex, and only one device within a cell can talk at the same time on the same channel. If the access point(AP) is talking, clients(cell phone/laptop/etc...) must listen. If a client is talking, the AP and all other clients must listen. A protocol is implemented for this, CSMA/CA [1]. Think about this for a second -- when someone is transmitting data, nobody else can receive data. This is important (will explain later).
While(in the US) there are 11 available channels in the 2.4ghz band, there are only 3 usable channels. The others overlap and will cause interference if used in the same area. 1/6/11 are the non-overlapping channels. There is a limited amount of bandwidth available in any given area on any given channel. 2.4ghz tops out at about 130mb/s over-the-air (figure about 60% usable bandwidth as a best-case scenario) so about 80mb/s. That's with a single client, clean spectrum, and a single access point. If the signal is weak or if there is interference, this number will be reduced.
Antennas and access points need to be placed and configured (transmit power) in such a manner that you control the number of devices that are within range of them such that their client densities don't get too high (you don't want 1000 people connecting to one access point, wifi's implentation of CSMA/CA breaks down with these densities) but also the targeted clients have a good signal. One thing you must consider that many people don't is, that while you can control the area and transmit power of your access point, you cannot control the client device talking to it. You must take this into consideration also. That client 150ft away on the fringe of this cell is transmitting with full power, likely interfering with another access point 250ft away that can't even hear this AP's signal.
A single low signal client can turn your 80mb/s access point into a 2mb/s access point. An access point talking to a client with a weak signal will 'downshift' and talk at a slower speed -- say 12mb/s instead of 54mb/s -- this makes it easier for the client to receive the data being transmitted without errors. But, this slower speed means more time must be spent transmitting the data, and this is time that the AP can't talk to other clients, and other clients can't talk to the AP. In this manner, a single weak signal device streaming Youtube at 2mb/s can reduce your overall bandwidth on an access point to 10mb/s or even worse. I aim for about 30 devices per access point, with a maximum distance of about 100ft in outdoor environments and 50ft indoors. In practice, this maintains a generally usable speed of about 5mb/s (you'll want to deploy bandwidth management systems to enforce this). Your overall usage will depend heavily on the type of event, but generally we see about 10% of attendants using wifi -- so based on the rule above, about one access point per 300 people.
If the layout of your event is such that this is difficult or impossible (such as a large auditorium/stadium) you can co-locate multiple access points on non-overlapping channels and handle about 1000 clients in a general area. But care must be taken to control the signal propagation if you want to support more clients in other areas as you will be using all 3 available channels thus any other nearby access points(within range) will be cutting into your available bandwidth.
This is complicated by the reluctance of most wifi devices (phones are the worst because you generally can't configure this setting on the client) to let go of a weak signal and grab a stronger one. A wifi device will generally hold on to a signal long after it has become unusable. Many of the bigger manufacturers have ways to mitigate it. With Ubiquiti, you MUST configure the "minrssi" [2] feature and it is buried in a config file on the access point controller. Most consumer grade access points do not support this feature at all.
As I get more into trying to explain this I'm realizing all of the nuances and gotchas that can really make this difficult for someone without experience to engineer and implement. I'm not sure I can effectively convey them in an HN reply but hopefully I've helped steer you in at least the right direction. Sadly, most tech companies that would be contracted to do this type of work are just as ill equipped to design and implement this.
[1]: https://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_avoidance https://en.wikipedia.org/wiki/Carrier_sense_multiple_access_...
[2]: https://help.ubnt.com/hc/en-us/articles/205146050-OD-UniFi-How-does-minimum-RSSI-work- https://help.ubnt.com/hc/en-us/articles/205146050-OD-UniFi-H...
An ironic twist to this is, that those 'low-signal' clients that get 'downshifted' are often victims of noise. And much noise is periodic or intermittent (think sparking from a microwave tube or a faulty car ignition). Packets in the air are essentially getting hit by random darts. When the AP 'downshifts' to a lower rate, it makes the packets bigger targets for the darts. So the AP slows down some more. Often in a matter of a second it shifts all the way down to the bottom rate. And now has a harder time getting through.
It would be helpful if APs could distinguish between 'low signal' and 'high error rate', and respond differently. It should actually speed up when the periodic error rate is high, to make the packets smaller targets in the air. Or make them shorter. Or even try to time transmissions to the fit between the occurrences of noise.
This is absolutely correct. I don't know the inner workings of the modulation scheme selection but suspect that the downshift is solely based on the ratio of received to unreceived acks from the client -- without knowing the reason for the non-receipt. As far as I know, the wifi standard does not contain any provision for the client device to report its received signal level to the AP. The signal levels you typically see in the AP are the levels that the AP is hearing the client at.
Some access points allow you to lock the modulation at a certain rate -- if you know for a fact all of the clients will be able to receive the signal at the required level for that modulation scheme, you can increase your overall effective capacity. Unfortunately this is not usually the case. We almost never get to control the client devices and positions, and without that control, received signal levels can't be effectively predicted.
With this type of stupidity, along with the string of failures when it comes to Wifi security (WEP, WPS, the clusterfuck that is Probe Request frames, etc.), shouldn't we stop listening to the IEEE and get someone who understands hardware AND networks AND cryptography AND software to start writing the next generation of standards?