Wi-Fi 7 Multi-Link Operation (MLO) Simulator

A Wi-Fi 7 access point and client can use 2.4, 5 and 6 GHz as one connection. How much that helps depends on what the client's radios can do. Compare MLSR, eMLSR, MLMR-STR and MLMR-NSTR on the same busy channels.

One connection, several links

With Multi-Link Operation, a Wi-Fi 7 access point (an AP MLD, multi-link device) runs one AP on each band, and a Wi-Fi 7 client (a non-AP MLD) associates once to all of them. Data can then go over whichever link is free. What the client can actually do depends on its hardware:

MLSR: one radio, one link at a time. eMLSR: listens on several links, then moves all its antennas to whichever link the AP grabs first. MLMR-STR: one radio per link, sending and receiving on all of them at once. MLMR-NSTR: several radios, but links too close in frequency can't send on one while receiving on the other.

Client mode
Traffic for our client
Other traffic on each channel

Timeline

Other traffic: channel busy, our AP must wait Downlink: AP → our client Uplink: our client → AP Block Ack MU-RTS from the AP (+ padding), or RTS from the client CTS
Client strip under each link: listening receiving transmitting blind: transmitting on the partner link switching antennas not on this link

What triggers the switch

All four modes on the same channels

The same congestion settings, run for 1 second in each mode. Throughput is this one client's data, downlink plus uplink. A gap is a time when nothing moved in a direction, which is what a video call or game feels; 99% of gaps are shorter than the value shown. Small differences between modes change from run to run; try “New random run”.

Side by side

MLSReMLSRMLMR-STRMLMR-NSTR
Client radios11 main radio; its antenna chains can listen on different links1 per link1 per link
Links listening at once1All links in its eMLSR set (1 chain each)AllAll
Links carrying data at once11 (with all chains)All, fully independentAll, but frames on close links must end together
When the client transmitsContends on its one linkWins any link it's listening on, then moves its chains there; the AP can't reach it on the others meanwhileOn any link, any time, even while receiving on anotherBlind on the partner link while transmitting; starts on both together when it can
Latency benefitLittle: stuck when its link is busyLarge: uses whichever link frees up firstLargestAbout the same as STR
Throughput benefitNone over a single linkSmall: one link at a time, plus switching overheadAdds up the linksAdds up the links, minus alignment losses
Typical devicesLow-cost and IoT devicesMost Wi-Fi 7 phonesAPs, some laptops and routersClients whose links sit close together, such as upper 5 GHz and 6 GHz

Inside an MLD: upper and lower MAC

MLO needs each multi-link device to be one device and several links at the same time. 802.11be does this by splitting the MAC in two: one upper MAC for the whole MLD, and one lower MAC per link. The standard (IEEE 802.11be-2024, 5.1.5.1a) says the split models the functions; it doesn't say where a product must implement each one. Here one video flow's frames 1–4 go down over three links, arrive out of order, and are put back in order.

Upper MAC: one per MLD

  • One identity: a single MLD MAC address towards the network and apps. To the switch and DHCP it's one device.
  • One authentication, association and security setup for all links. Individually addressed frames are encrypted and decrypted here, with one pairwise key (PTK) for all links, and get their sequence and packet numbers here too, so a frame can go out on any link. Group keys (GTK, IGTK, BIGTK) are distributed here but kept per link.
  • One Block Ack session per traffic ID across all links, with one sequence-number space, so frames of one flow can use different links.
  • Reordering: frames that arrive out of order over different links are put back in sequence before being passed up.
  • Link selection: decides which link each frame uses, within the TID-to-link mapping (which traffic may use which links).
  • Power save buffering on the AP MLD: frames for a client that is dozing wait here, whichever link will deliver them.

On the AP, each link's affiliated AP also keeps its own small upper MAC for that link only: its Beacon frames, group-addressed frames and group keys, and any legacy (non-MLD) clients.

Lower MAC: one per link

  • Channel access on its own channel: carrier sense, NAV and EDCA backoff, with that link's own EDCA parameters. Each link contends independently.
  • Link addressing: its own link MAC address (on the AP, the link's BSSID), used to filter which frames it accepts.
  • Link-level control exchanges: RTS/CTS, ACKs and Block Acks, NDPs. The Block Ack scoreboard is kept together with the upper MAC.
  • Power save state and mode of that link: each link can be awake or dozing separately.
  • Hands frames up to the upper MAC, which does the reordering.
Without the shared upper MAC, a tri-band client would be three separate stations with three associations, three sets of keys and three sequence spaces, unable to spread one flow over links or move it seamlessly: roughly what multi-band devices did before Wi-Fi 7. Without separate lower MACs, links couldn't contend independently. The modes above don't change this split; they only change how many lower MACs can be active at once (all of them for STR, in step for NSTR, one at a time for eMLSR and MLSR). A legacy client just associates with one of the AP's per-link APs as a normal BSS and never sees the upper MAC.

Notes and simplifications