メインコンテンツ

establishMAPCAgreement

R2026b

Establish multi-AP coordination agreement between APs

Since R2026b

    Description

    establishMAPCAgreement(apList) establishes coordinated time division multiple access (Co-TDMA) multi-access point coordination (MAPC) agreements between every pair of access points (APs) in the AP list. Once established, all APs in the list can function as both coordinating and coordinated APs. For more information about Co-TDMA, see How Does Co-TDMA Work?

    establishMAPCAgreement(apList,MAPCScheme=mapcScheme) specifies the MAPC scheme mapScheme. Currently, the function supports only the Co-TDMA scheme.

    example

    Examples

    collapse all

    Coordinated time-division multiple access (Co-TDMA) is a technique that enables multiple Access Points (APs) to coordinate their transmissions, reducing interference and potentially improving overall throughput and latency. Simulate a wireless local area network (WLAN) with three APs capable of Co-TDMA and their associated stations (STAs). Both the APs and STAs are multi-link devices (MLDs). Configure the network, enable multi-AP coordination, run the simulation, and collect throughput and latency statistics at each node.

    Create and Simulate Network

    Set the seed for the random number generator to 1. The seed value controls the pattern of random number generation. The random number generated by the seed value impacts several processes within the simulation including backoff counter selection at the MAC layer and predicting packet reception success at the physical layer. To improve the accuracy of your simulation results, after running the simulation, you can change the seed value, run the simulation again, and average the results over multiple simulations.

    rng(1,"combRecursive")

    Specify the simulation time in seconds.

    simTime = 1; % Units are in seconds

    Initialize the network simulator.

    networkSimulator = wirelessNetworkSimulator.init;

    Create three AP MLDs and three STA MLDs. Configure each to operate on both the 5 GHz and 6 GHz bands.

    % AP1 and STA1
    apLinkCfg = wlanLinkConfig(BandAndChannel=[5 36; 6 1], ....
        BeaconInterval=50,TXOPLimit=[1 2 94 47],TransmissionFormat="EHT-SU", ...
        MCS=7,MPDUAggregationLimit=256);
    apMLDCfg = wlanMultilinkDeviceConfig(Mode="AP",LinkConfig=apLinkCfg,StandardCapability="UHR");
    ap1 = wlanNode(DeviceConfig=apMLDCfg,Position=[0 0 0]);
    
    staLinkCfg = wlanLinkConfig(BandAndChannel=[5 36; 6 1],....
        BeaconInterval=50,TXOPLimit=[1 2 94 47],TransmissionFormat="EHT-SU", ...
        MCS=7,MPDUAggregationLimit=256);
    staMLDCfg = wlanMultilinkDeviceConfig(Mode="STA",LinkConfig=staLinkCfg);
    sta1 = wlanNode(DeviceConfig=staMLDCfg,Position=[-2 -2 0]);
    
    % AP2 and STA2
    apLinkCfg = wlanLinkConfig(BandAndChannel=[5 36; 6 1], ...
        BeaconInterval=50,TXOPLimit=[1 2 94 47],TransmissionFormat="EHT-SU", ...
        MCS=7,MPDUAggregationLimit=256);
    apMLDCfg = wlanMultilinkDeviceConfig(Mode='AP',LinkConfig=apLinkCfg,StandardCapability="UHR");
    ap2 = wlanNode(DeviceConfig=apMLDCfg,Position=[5 0 0]);
    
    staLinkCfg = wlanLinkConfig(BandAndChannel=[5 36; 6 1], ...
        BeaconInterval=50,TXOPLimit=[1 2 94 47],TransmissionFormat="EHT-SU", ...
        MCS=7,MPDUAggregationLimit=256);
    staMLDCfg = wlanMultilinkDeviceConfig(Mode="STA",LinkConfig=staLinkCfg);
    sta2 = wlanNode(DeviceConfig=staMLDCfg,Position=[7 -2 0]);
    
    % AP3 and STA3
    apLinkCfg = wlanLinkConfig(BandAndChannel=[5 36; 6 1], ...
        BeaconInterval=50,TXOPLimit=[1 2 3 4],TransmissionFormat="EHT-SU", ...
        MCS=7,MPDUAggregationLimit=256);
    apMLDCfg = wlanMultilinkDeviceConfig(Mode="AP",LinkConfig=apLinkCfg,StandardCapability="UHR");
    ap3 = wlanNode(DeviceConfig=apMLDCfg,Position=[0 5 0]);
    
    staLinkCfg = wlanLinkConfig(BandAndChannel=[5 36; 6 1], ...
        BeaconInterval=50,TXOPLimit=[1 2 94 47],TransmissionFormat="EHT-SU", ...
        MCS=7,MPDUAggregationLimit=256);
    staMLDCfg = wlanMultilinkDeviceConfig(Mode="STA",LinkConfig=staLinkCfg);
    sta3 = wlanNode(DeviceConfig=staMLDCfg,Position=[-2 7 0]);
    

    Associate each STA with its AP. Use associateStations for each AP-STA pair.

    associateStations(ap1,sta1)
    associateStations(ap2,sta2)
    associateStations(ap3,sta3)

    Create three On-Off application traffic pattern objects.

    trafficSource1 = networkTrafficOnOff(DataRate=10000,PacketSize=100);
    trafficSource2 = networkTrafficOnOff(DataRate=10000,PacketSize=100);
    trafficSource3 = networkTrafficOnOff(DataRate=10000,PacketSize=100);

    Configure traffic between the APs and STAs using the addTrafficSource function.

    addTrafficSource(ap1,trafficSource1,DestinationNode=sta1,AccessCategory=2)
    addTrafficSource(ap2,trafficSource2,DestinationNode=sta2,AccessCategory=2)
    addTrafficSource(ap3,trafficSource3,DestinationNode=sta3,AccessCategory=2)

    Establish an MAPC agreement for the Co-TDMA scheme between each pair of APs: ap1, ap2, and ap3. This enables any of these APs to initiate Co-TDMA operation.

    establishMAPCAgreement([ap1 ap2 ap3],MAPCSchemes="Co-TDMA");

    Add the nodes to the simulator, and set up performance monitoring by using thehelperPerformanceViewer helper function.

    nodes=[ap1 sta1 ap2 sta2 ap3 sta3];
    addNodes(networkSimulator,nodes)
    perfViewer = helperPerformanceViewer(nodes,simTime);

    Run the Simulation.

    run(networkSimulator,simTime)

    Check the throughput for each AP and latency for each STA.

    % Throughput for each AP
    throughput_ap1 = throughput(perfViewer,ap1.ID)
    throughput_ap1 = 
    9.9880
    
    throughput_ap2 = throughput(perfViewer,ap2.ID)
    throughput_ap2 = 
    3.4760
    
    throughput_ap3 = throughput(perfViewer,ap3.ID)
    throughput_ap3 = 
    9.0424
    
    % Average receive latency for each STA
    latency_sta1 = averageReceiveLatency(perfViewer,sta1.ID)
    latency_sta1 = 
    4.7124e-04
    
    latency_sta2 = averageReceiveLatency(perfViewer,sta2.ID)
    latency_sta2 = 
    0.0013
    
    latency_sta3 = averageReceiveLatency(perfViewer,sta3.ID)
    latency_sta3 = 
    0.0248
    

    Input Arguments

    collapse all

    List of APs, specified as a vector of wlanNode objects. The DeviceConfig property of each node must be a wlanMultilinkDeviceConfig object with the Mode property set to "AP" and the StandardCapability property set to "UHR".

    Note

    When you set the value of the StandardCapability property of the wlanMultilinkDeviceConfig to "UHR", specify the value of theTransmissionFormat property of the wlanLinkConfig object as any value other than "auto" for all transmissions from the link.

    MAPC scheme, specified as "Co-TDMA".

    Note

    To enable Co-TDMA operation between APs, the wlanLinkConfig object for at least one access category (AC) must have aTXOPLimit property with a nonzero value. Additionally, ensure that the TXOPLimit value for AC VI is nonzero.

    Algorithms

    collapse all

    Version History

    Introduced in R2026b