In my opinion, it is a technical (i.e. not a theoretical) and practical limit. Probably, it does not make much sense to allow more than 8 active links in an EtherChannel bundle. Consider the fact that the Ethernet variants themselves are staged in ten-fold speed increases - 10Mbps, 100Mbps, 1Gbps, 10Gbps, 100Gbps (still not fully ratified I believe but I'm not sure about this one). If you need more than 8 active links in an EtherChannel then you really need a faster Ethernet variant. Why make 800Mbps or 8Gbps EtherChannel (that, for a single data flow, still performs on a speed of a single link only!) when you can have native 1Gbps or 10Gbps? That would be my personal reasoning.
Etherchannel load-balancing is done based on hash-result (based on mac-addr, ip -addr, L4 port etc). This hashing algorithm is designed to have results from 0 through 7.
If you have only one port in an EC, then all hash resutls are mapped to the same port - so, bit mapping 1111 1111 ==> FF
If you have two ports, then all hash results are mapped to both ports to load-balance traffic - port 1 has 1010 1010 (AA) and second port 0101 0101 (55)
Similarly, we can load balance the hash bits on a round-robin fashion to all the channel members.
If you have more than 8 ports (no allowed via CLI - assume for this discussion), then we have to assign a given bit to two different members - means both ports forward the same traffic - as a result, the destination will see duplicate frames !!
Long story short - Etherchannel hashing allows results from 0 through 7 - hence max ports allowed is 8 !
Your explanation is very nice and explains how is the EtherChannel load-balancing actually implemented on Cisco switches, and indeed, it says that it hashes the addressing information into 3-bit value, resulting in maximum of 8 distinct active links in an EtherChannel.
But if we want to go deeper into the issues we should ask - why is the hashing performed only into 3 bits? Why cannot it be more - 4, 8, perhaps even more? The answer is - there is no technical reason why a hashing cannot be done into more bits. In other words, this is an implementation issue - not a principal matter. It was simply decided that the hash will be 3 bits long, so it is. But there is no problem in hashing into an arbitrary count of bits. The other question is - would that be reasonable? Would somebody want to have an EtherChannel bundle with more than 8 links? I tried to answer this particular question in my previous post in this thread.
By the way, an EtherChannel controlled by the LACP can have up to 16 links. However, at most 8 of them will be active, the remaining links will be put into the hot-standby state, waiting to replace a failed active link.
We are pleased to announce availability of Beta software for 16.6.3. 16.6.3 will be the second rebuild on the 16.6 release train targeted towards Catalyst 9500/9400/9300/3850/3650 switching platforms. We are looking for early feedback from custome...