def init_experiment():
    """Initialize the experiment."""
    global n_sta1, n_sta2, n_ap, rate_info, network_config, network_config, nodes, attr_dict, s

    print("\nInitializing experiment\n")

    # Print attributes about the experiment - Changed by Rebecca
    print(log_util.convert_datetime_to_log_time_str(datetime.datetime.utcnow()))

    # Create an object that describes the network configuration of the host PC
    network_config = wlan_exp_config.WlanExpNetworkConfiguration(network=NETWORK,
                                                                 jumbo_frame_support=USE_JUMBO_ETH_FRAMES)

    # Create an object that describes the WARP v3 nodes that will be used in this experiment
    nodes_config   = wlan_exp_config.WlanExpNodesConfiguration(network_config=network_config,
                                                               serial_numbers=NODE_SERIAL_LIST)

    # Initialize the Nodes
    #   This command will fail if either WARP v3 node does not respond
    nodes = wlan_exp_util.init_nodes(nodes_config, network_config, network_reset=False)

    # Set the time of all the nodes to zero
    #wlan_exp_util.broadcast_cmd_set_mac_time(0, network_config)

    # Extract the different types of nodes from the list of initialized nodes
    #     - This will work for both 'DCF' and 'NOMAC' mac_low projects
    n_ap_l  = wlan_exp_util.filter_nodes(nodes=nodes, mac_high='AP',  serial_number=NODE_SERIAL_LIST)    
    n_sta_l = wlan_exp_util.filter_nodes(nodes=nodes, mac_high='STA', serial_number=NODE_SERIAL_LIST)

    # Check that setup is valid
    if len(n_ap_l) == 1 and len(n_sta_l) == 2:
        # Extract the two nodes from the lists for easier referencing below
        n_ap  = n_ap_l[0]
        n_sta1 = n_sta_l[0]
        n_sta2 = n_sta_l[1]
    elif len(n_ap_l) == 1 and len(n_sta_l) == 1:
        n_ap  = n_ap_l[0]
        n_sta1 = n_sta_l[0]

    # Do not set the node into a known state.  This example will just read
    # what the node currently has in the log.  However, the below code could
    # be used to initialize all nodes into a default state:
    #
    # Set each node into the default state
#    for tmp_node in nodes:
#         # Issue a reset command to stop current operation / initialize components
#         tmp_node.reset(log=True, txrx_counts=True, ltg=True, queue_data=True) # Do not reset associations/bss_info
    
#         # Configure the log
#         tmp_node.log_configure(log_full_payloads=True)

    if sock_on:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # replaced SOCK_STREAM with SOCK_DGRAM
def init_experiment():
    print("\nInitializing experiment\n")
    
    global n_ap, n_sta, rate_info, network_config
    
    # Create an object that describes the network configuration of the host PC
    network_config = config.WlanExpNetworkConfiguration(network=NETWORK,
                                                        jumbo_frame_support=USE_JUMBO_ETH_FRAMES)
    
    # Create an object that describes the WARP v3 nodes that will be used in this experiment
    nodes_config   = config.WlanExpNodesConfiguration(network_config=network_config,
                                                      serial_numbers=NODE_SERIAL_LIST)
    
    # Initialize the Nodes
    #   This command will fail if either WARP v3 node does not respond
    nodes = util.init_nodes(nodes_config, network_config)
    
    # Set the time of all the nodes to zero
    util.broadcast_cmd_set_mac_time(0, network_config)
    
    # Extract the different types of nodes from the list of initialized nodes
    #     - This will work for both 'DCF' and 'NOMAC' mac_low projects
    n_ap_l  = util.filter_nodes(nodes=nodes, mac_high='AP',  serial_number=NODE_SERIAL_LIST)
    n_sta_l = util.filter_nodes(nodes=nodes, mac_high='STA', serial_number=NODE_SERIAL_LIST)
    
    # Check that setup is valid
    if len(n_ap_l) == 1 and len(n_sta_l) == 1:
        # Extract the two nodes from the lists for easier referencing below
        n_ap  = n_ap_l[0]
        n_sta = n_sta_l[0]
    
        # Configure the AP to reject authentication requests from wireless clients
        #     - Uncomment this line to block any wireless associations during the experiment
        # n_ap.set_authentication_address_filter(allow='NONE')
    
        # Configure AP BSS
        n_ap.configure_bss(ssid=SSID, channel=CHANNEL, beacon_interval=BEACON_INTERVAL)
    
        # Establish the association state between nodes
        #     - This will change the STA to the appropriate channel
        n_ap.add_association(n_sta)
    else:
        print("ERROR: Node configurations did not match requirements of script.\n")
        print("    Ensure two nodes are ready, one using the AP design, one using the STA design\n")
        sys.exit(0)
    
    # Check that the nodes are part of the same BSS.  Otherwise, the LTGs below will fail.
    if not util.check_bss_membership([n_ap, n_sta]):
        print("\nERROR: Nodes are not part of the same BSS.")
        util.check_bss_membership([n_ap, n_sta], verbose=True)
        print("Ensure that both nodes are part of the same BSS.")
        sys.exit(0)
def run_experiment():
    """WLAN Experiment.""" 
    global nodes

    # Print initial message
    print("\nRunning experiment\n")

    # Get all AP nodes from the list of initialize nodes    
    nodes_ap  = wlan_exp_util.filter_nodes(nodes, 'node_type', 'AP')

    # If the node is not configured correctly, exit
    if (len(nodes_ap) == 0):
        print("AP not initialized.  Exiting.")
        return


    while(True):

        # For each of the APs, get the statistics
        for ap in nodes_ap:
            station_info = ap.get_station_info()
            stats        = ap.stats_get_txrx()
            print_stats(stats, station_info)
       
        # Wait for 5 seconds
        time.sleep(5)
def run_experiment():
    """WLAN Experiment.""" 
    global nodes

    # Print initial message
    print("\nRunning experiment\n")

    # Get all AP nodes from the list of initialize nodes    
    #   NOTE:  This will work for both 'DCF' and 'NOMAC' mac_low projects
    nodes_ap = wlan_exp_util.filter_nodes(nodes=nodes, mac_high='AP', serial_number=NODE_SERIAL_LIST)

    # If the node is not configured correctly, exit
    if (len(nodes_ap) == 0):
        print("AP not initialized.  Exiting.")
        return


    while(True):

        # For each of the APs, get the statistics
        for ap in nodes_ap:
            station_info = ap.get_station_info()
            stats        = ap.stats_get_txrx()
            print_stats(stats, station_info)
       
        # Wait for 5 seconds
        time.sleep(5)
Beispiel #5
0
# Create an object that describes the WARP v3 nodes that will be used in this experiment
nodes_config = wlan_exp_config.WlanExpNodesConfiguration(
    network_config=network_config, serial_numbers=NODE_SERIAL_LIST)

# Initialize the Nodes
#  This command will fail if either WARP v3 node does not respond
nodes = wlan_exp_util.init_nodes(nodes_config, network_config)

# Set the time of all the nodes to zero
wlan_exp_util.broadcast_cmd_set_time(0.0, network_config)

# Extract the different types of nodes from the list of initialized nodes
#   NOTE:  This will work for both 'DCF' and 'NOMAC' mac_low projects
n_ap_l = wlan_exp_util.filter_nodes(nodes=nodes,
                                    mac_high='AP',
                                    serial_number=NODE_SERIAL_LIST)
n_sta_l = wlan_exp_util.filter_nodes(nodes=nodes,
                                     mac_high='STA',
                                     serial_number=NODE_SERIAL_LIST)

# Check that we have a valid AP and STA
if (((len(n_ap_l) == 1) and (len(n_sta_l) == 1))):
    # Extract the two nodes from the lists for easier referencing below
    n_ap = n_ap_l[0]
    n_sta = n_sta_l[0]
else:
    print("ERROR: Node configurations did not match requirements of script.\n")
    print(
        "    Ensure two nodes are ready, one using the AP design, one using the STA design\n"
    )
# Create an object that describes the configuration of the host PC
host_config  = wlan_exp_config.WlanExpHostConfiguration(host_interfaces=HOST_INTERFACES)

# Create an object that describes the WARP v3 nodes that will be used in this experiment
nodes_config = wlan_exp_config.WlanExpNodesConfiguration(host_config=host_config,
                                                         serial_numbers=NODE_SERIAL_LIST)

# Initialize the Nodes
#  This command will fail if either WARP v3 node does not respond
nodes = wlan_exp_util.init_nodes(nodes_config, host_config)

# Set the time of all the nodes to zero
wlan_exp_util.broadcast_cmd_set_time(0.0, host_config)

# Extract the AP and STA nodes from the list of initialized nodes
n_ap_l  = wlan_exp_util.filter_nodes(nodes, 'node_type', 'AP')
n_sta_l = wlan_exp_util.filter_nodes(nodes, 'node_type', 'STA')


# Check that we have a valid AP and STA
if (((len(n_ap_l) == 1) and (len(n_sta_l) == 1))):
    # Extract the two nodes from the lists for easier referencing below
    n_ap = n_ap_l[0]
    n_sta = n_sta_l[0]
else:
    print("ERROR: Node configurations did not match requirements of script.\n")
    print("    Ensure two nodes are ready, one using the AP design, one using the STA design\n")
    sys.exit(0)

# Check that the nodes are associated.  Otherwise, the LTGs below will fail.
if not n_ap.is_associated(n_sta):
# Create an object that describes the WARP v3 nodes that will be used in this experiment
nodes_config   = config.WlanExpNodesConfiguration(network_config=network_config,
                                                  serial_numbers=NODE_SERIAL_LIST)

# Initialize the Nodes
#   This command will fail if either WARP v3 node does not respond
nodes = util.init_nodes(nodes_config, network_config)

# Reset all (optional)
# for node in nodes:
#     node.reset_all()

# Extract the different types of nodes from the list of initialized nodes
#     - This will work for both 'DCF' and 'NOMAC' mac_low projects
n_ap_l   = util.filter_nodes(nodes=nodes, mac_high='AP',   serial_number=NODE_SERIAL_LIST, warn=False)
n_sta_l  = util.filter_nodes(nodes=nodes, mac_high='STA',  serial_number=NODE_SERIAL_LIST, warn=False)
n_ibss_l = util.filter_nodes(nodes=nodes, mac_high='IBSS', serial_number=NODE_SERIAL_LIST, warn=False)

# Check that setup is valid:
#     1) AP and STA
#     2) Two IBSS nodes
if len(n_ap_l) == 1 and len(n_sta_l) == 1:
    # Setup the two nodes
    node1 = n_ap_l[0]
    node2 = n_sta_l[0]

    # Configure the AP to reject authentication requests from wireless clients
    #    - Uncomment this line to block any wireless associations during the experiment
    # node1.set_authentication_address_filter(allow='NONE')
# Create an object that describes the WARP v3 nodes that will be used in this experiment
nodes_config   = config.WlanExpNodesConfiguration(network_config=network_config,
                                                  serial_numbers=NODE_SERIAL_LIST)

# Initialize the Nodes
#   This command will fail if either WARP v3 node does not respond
nodes = util.init_nodes(nodes_config, network_config)

# Reset all (optional)
# for node in nodes:
#     node.reset_all()

# Extract the different types of nodes from the list of initialized nodes
#     - This will work for both 'DCF' and 'NOMAC' mac_low projects
n_ap_l   = util.filter_nodes(nodes=nodes, mac_high='AP',   serial_number=NODE_SERIAL_LIST, warn=False)
n_sta_l  = util.filter_nodes(nodes=nodes, mac_high='STA',  serial_number=NODE_SERIAL_LIST, warn=False)
n_ibss_l = util.filter_nodes(nodes=nodes, mac_high='IBSS', serial_number=NODE_SERIAL_LIST, warn=False)


# Check that setup is valid:
#     1) AP and STA
#     2) Two IBSS nodes
if len(n_ap_l) == 1 and len(n_sta_l) == 1:
    # Setup the two nodes
    node1 = n_ap_l[0]
    node2 = n_sta_l[0]

    # Configure the AP to reject authentication requests from wireless clients
    #    - Uncomment this line to block any wireless associations during the experiment
    # node1.set_authentication_address_filter(allow='NONE')
# Create an object that describes the network configuration of the host PC
network_config = config.WlanExpNetworkConfiguration(network=NETWORK,
                                                    jumbo_frame_support=USE_JUMBO_ETH_FRAMES)

# Create an object that describes the WARP v3 nodes that will be used in this experiment
nodes_config   = config.WlanExpNodesConfiguration(network_config=network_config,
                                                  serial_numbers=NODE_SERIAL_LIST)

# Initialize the Nodes
#   This command will fail if either WARP v3 node does not respond
nodes = util.init_nodes(nodes_config, network_config)

# Extract the different types of nodes from the list of initialized nodes
#     - This will work for both 'DCF' and 'NOMAC' mac_low projects
n_ap_l  = util.filter_nodes(nodes=nodes, mac_high='AP',  serial_number=NODE_SERIAL_LIST)
n_sta_l = util.filter_nodes(nodes=nodes, mac_high='STA', serial_number=NODE_SERIAL_LIST)

# Check that setup is valid
if (((len(n_ap_l) == 1) and (len(n_sta_l) == 1))):
    # Extract the two nodes from the lists for easier referencing below
    n_ap  = n_ap_l[0]
    n_sta = n_sta_l[0]
else:
    print("ERROR: Node configurations did not match requirements of script.\n")
    print(" Ensure two nodes are ready, one using the AP design, one using the STA design\n")
    sys.exit(0)



#-------------------------------------------------------------------------
Beispiel #10
0
def init_experiment():
    """Initialize the experiment."""
    global n_ap, n_sta1, n_sta2, network_config, nodes, attr_dict

    print("\nInitializing experiment\n")

    # Log attributes about the experiment
    attr_dict['exp_start_time'] = log_util.convert_datetime_to_log_time_str(datetime.datetime.utcnow())

    # Create an object that describes the network configuration of the host PC
    network_config = wlan_exp_config.WlanExpNetworkConfiguration(network=NETWORK,
                                                                 jumbo_frame_support=USE_JUMBO_ETH_FRAMES)

    # Create an object that describes the WARP v3 nodes that will be used in this experiment
    nodes_config   = wlan_exp_config.WlanExpNodesConfiguration(network_config=network_config,
                                                               serial_numbers=NODE_SERIAL_LIST)

    # Initialize the Nodes
    #   This command will fail if either WARP v3 node does not respond
    nodes = wlan_exp_util.init_nodes(nodes_config, network_config)

    n_ap_l = wlan_exp_util.filter_nodes(nodes=nodes, mac_high='AP', serial_number=NODE_SERIAL_LIST)
    n_sta_l = wlan_exp_util.filter_nodes(nodes=nodes, mac_high='STA', serial_number=NODE_SERIAL_LIST)

    # Check that setup is valid
    if len(n_ap_l) == 1 and len(n_sta_l) == 2:
        # Extract the two nodes from the lists for easier referencing below
        n_ap  = n_ap_l[0]
        n_sta1 = n_sta_l[0]
        n_sta2 = n_sta_l[1]
    elif len(n_ap_l) == 1 and len(n_sta_l) == 1:
        n_ap  = n_ap_l[0]
        n_sta1 = n_sta_l[0]

        # Configure the AP to reject authentication requests from wireless clients
        #     - Uncomment this line to block any wireless associations during the experiment
        # n_ap.set_authentication_address_filter(allow='NONE')

        # Configure AP BSS
        n_ap.configure_bss(ssid=SSID, channel=CHANNEL, beacon_interval=BEACON_INTERVAL)

        # Establish the association state between nodes
        #     - This will change the STA to the appropriate channel
        n_ap.add_association(n_sta1)
        n_ap.add_association(n_sta2)
    else:
        print("ERROR: Node configurations did not match requirements of script.\n")
        print("    Ensure two nodes are ready, one using the AP design, one using the STA design\n")
        sys.exit(0)

    # Check that the nodes are part of the same BSS.  Otherwise, the LTGs below will fail.
    if not wlan_exp_util.check_bss_membership([n_ap, n_sta1]) | wlan_exp_util.check_bss_membership([n_ap, n_sta2]):
        print("\nERROR: Nodes are not part of the same BSS.")
        wlan_exp_util.check_bss_membership([n_ap, n_sta1], verbose=True)
        wlan_exp_util.check_bss_membership([n_ap, n_sta2], verbose=True)
        print("Ensure that both nodes are part of the same BSS.")
        sys.exit(0)

    # Do not set the node into a known state.  This example will just read
    # what the node currently has in the log.  However, the below code could
    # be used to initialize all nodes into a default state:
    #
    # Set each node into the default state
    for tmp_node in nodes:
        # Issue a reset command to stop current operation / initialize components
        tmp_node.reset(log=True, txrx_counts=True, ltg=True, queue_data=True) # Do not reset associations/bss_info

        # Configure the log
        tmp_node.log_configure(log_full_payloads=True)
Beispiel #11
0
print("\nInitializing experiment\n")

# Create an object that describes the configuration of the host PC
host_config = wlan_exp_config.WlanExpHostConfiguration(
    host_interfaces=HOST_INTERFACES)

# Create an object that describes the WARP v3 nodes that will be used in this experiment
nodes_config = wlan_exp_config.WlanExpNodesConfiguration(
    host_config=host_config, serial_numbers=NODE_SERIAL_LIST)

# Initialize the Nodes
#  This command will fail if either WARP v3 node does not respond
nodes = wlan_exp_util.init_nodes(nodes_config, host_config)

# Extract the AP and STA nodes from the list of initialized nodes
n_ap_l = wlan_exp_util.filter_nodes(nodes, 'node_type', 'AP')
n_sta_l = wlan_exp_util.filter_nodes(nodes, 'node_type', 'STA')

# Check that we have a valid AP and STA
if (((len(n_ap_l) == 1) and (len(n_sta_l) == 1))):
    # Extract the two nodes from the lists for easier referencing below
    n_ap = n_ap_l[0]
    n_sta = n_sta_l[0]
else:
    print("ERROR: Node configurations did not match requirements of script.\n")
    print(
        " Ensure two nodes are ready, one using the AP design, one using the STA design\n"
    )
    sys.exit(0)

#-------------------------------------------------------------------------
print("\nInitializing experiment\n")

# Create an object that describes the configuration of the host PC
network_config = wlan_exp_config.WlanExpNetworkConfiguration(network=NETWORK)

# Create an object that describes the WARP v3 nodes that will be used in this experiment
nodes_config   = wlan_exp_config.WlanExpNodesConfiguration(network_config=network_config,
                                                           serial_numbers=NODE_SERIAL_LIST)

# Initialize the Nodes
#  This command will fail if either WARP v3 node does not respond
nodes = wlan_exp_util.init_nodes(nodes_config, network_config)

# Extract the different types of nodes from the list of initialized nodes
#   NOTE:  This will work for both 'DCF' and 'NOMAC' mac_low projects
n_ap_l = wlan_exp_util.filter_nodes(nodes=nodes, mac_high='AP', serial_number=NODE_SERIAL_LIST)

# Setup WLAN devices
devices = []

for device in WLAN_DEVICE_LIST:
    devices.append(wlan_device.WlanDevice(mac_address=device[0], name=device[1]))

# Check that we have a valid AP and at least one valid WLAN device
if ((len(n_ap_l) == 1) and devices):
    # Extract the two nodes from the lists for easier referencing below
    n_ap = n_ap_l[0]
else:
    print("ERROR: Node configurations did not match requirements of script.\n")
    print("    Ensure the AP is ready and there is one valid WLAN device\n")
    sys.exit(0)