Also, ESP8266's official SDK doesn't support IPv6.
Strict uplink-downlink hierarchy still stays regardless of whether "manual uplink" or "mesh" mode is in use. Each repeater doing Source NAT still stays. Lack of "sideways" connectivity still stays (unless you configure manual DNAT which is incompatible with "mesh" mode to begin with).
I.e., if you have 3 of those ESP8266 repeaters with two clients connected to different repeaters, there is no (easy) way to have those two clients talk to each other. Let's say this is our network diagram:
{The Internet}----[Cloud Server]
|
[Wired AP]----[Local Server]
|
[ESP8266-R1]
| |
[ESP8266-R2] [ESP8266-R3]
| |
[Clinet 1] [Client 2]
...then, we have two options how to make Client 1 and Client 2 talk to each other:- each client talks to the same server (local or cloud) and server takes care of passing the message;
or
- we configure static destination NAT (option portmap add) on both ESP8266-R2 and ESP8266-R3, and disable "mesh" mode (i.e. manually configure uplinks for all 3 repeaters);
...and arranging 1000 of those in a single string and routing a single packet through that is better avoided. "Mesh" mode helps a lot with this, by selecting shorter path to the internet and bringing topology closer to a tree, where possible.
On the other hand, L2 bridge of WiFi station to anything else (including STA<->AP bridge for a repeater operation) is quite messy: it needs special "4addr mode" packets which are only sent in "WDS" mode, which should be enabled on corresponding uplink AP. And WDS is universally disabled out-of-the box. Many cheaper routers don't have WDS at all. Plus, there are different incompatible flavours of WDS. Finally, there is question of WDS/4addr mode support on ESP8266 itself - in theory, there is some support in SDK, but I haven't seen any working application code doing it.
Some in-depth discussion of WDS with diagrams:
https://wiki.openwrt.org/doc/howto/clientmode
https://www.dd-wrt.com/wiki/index.php/WDS#Note_about_WDS_and...