Bootstrap

mininetWiFi学习日记

        AP 节点被当作固定位置的网络设备进行配置和使用,并没有考虑其移动性相关的功能实现。而要赋予 AP 节点移动的特性,需要借助 MininetWiFi 中已有的移动模型相关机制,并参考其他可移动节点(比如站点 sta 节点,通常在无线仿真中站点是可移动的)的代码逻辑来进行改造。

        使用脚本mobility中的sta节点的可移动特性代码逻辑

import time  # 导入time模块,以便于控制移动的时间间隔      
    p1, p2, p3, p4 = {}, {}, {}, {}
    if '-c' not in args:
        p1 = {'position': '40.0,30.0,0.0'}
        p2 = {'position': '40.0,40.0,0.0'}
        p3 = {'position': '31.0,10.0,0.0'}
        p4 = {'position': '55.0,31.0,0.0'}

    net.mobility(sta1, 'start', time=1, **p1)
    net.mobility(sta2, 'start', time=2, **p2)
    net.mobility(sta1, 'stop', time=12, **p3)
    net.mobility(sta2, 'stop', time=22, **p4)
    net.stopMobility(time=23)

        因为使用到移动时间的概念,所以导入time模块。

        这样子就可以实现AP节点的移动。

         无线 Mesh 网络是一种自组织、自我修复的无线网络结构,其中多个节点通过无线信号相互连接,形成一个网络。这种网络的特点是每个节点不仅可以转发数据,还可以与多个其他节点直接通信,从而增加了网络的覆盖范围和稳定性。

        在脚本中加入命令执行代码,通过mesh组网方式实现AP之间的无线连接。

ef execute_command(command):  
    """执行终端命令并返回输出"""  
    info(f"执行命令: {command}\n")  
    os.system(command)  


def setup_mesh_ap(ap, mesh_id):  
    """设置无线Mesh接入点"""  
    info(f"配置接入点 {ap.name} 为无线Mesh接入点...\n")  
    
    # 创建Mesh接口  
    execute_command(f"sudo iw dev {ap.name} interface add {ap.name}-mesh type mesh")  
    
    # 设置Mesh ID  
    execute_command(f"sudo iw dev {ap.name}-mesh set mesh_id {mesh_id}")  
    
    # 设置频道  
    execute_command(f"sudo iw dev {ap.name}-mesh set channel 1")  
    
    # 启动Mesh接口  
    execute_command(f"sudo ip link set {ap.name}-mesh up")  
    
    # 加入Mesh网络  
    execute_command(f"sudo iw dev {ap.name}-mesh join {mesh_id}")  
    
    info(f"接入点 {ap.name} 设置为Mesh接入点成功!\n")  

AP1,2,3都成功接入mesh组网。

 

 

使用sta2 iw dev sta2-wlan0 link命令测试自组织网络是否实现就近连接以及是否可连接

//sta2站点节点
sta2 iw dev sta2-wlan0 link

 显示sta2站点没网,sta1站点因为离ap3近所以就近连接ap3

;