This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC33XX-SOFTWARE:我们希望 Wi-Fi AP 即使没有关联站点、也能将多播数据包无线传输

Guru**** 2466550 points
Other Parts Discussed in Thread: CC3300

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1523599/cc33xx-software-we-want-a-wi-fi-ap-to-put-multicast-packets-on-the-air-even-when-there-are-no-stations-associated

器件型号:CC33XX-SOFTWARE
主题中讨论的其他部件:cc3300

工具/软件:

我们的电路板是运行 Linux 的 am62x 和采用 AP 模式的 CC3300。  我们能够传输多播 IP 数据包。  但是、如果 AP 至少关联了一个站点、我们只能在无线中看到数据包。

即使没有关联站点、我们也会尝试通过无线方式从 AP 传输多播数据包。  我们不确定 WiFi 堆栈的哪一层正在丢弃数据包。

在这种情况下、是否可以将 CC33XX 配置为不过滤多播数据包?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bryan、

    您能否解释一下您尝试发送多播数据包的方式? 我想进一步探讨这个概念、但不知道如何去探讨。  

    此外、您是否使用开放网络配置进行 AP 或 WPA 加密?

    您如何知道您的客户端与 AP 位于同一信道?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sabeeh:

    在测试中、我使用了我们的电路板、该电路板具有 CC3300 无线电(器件 1)和两个其他 (Linux) 器件(具有 WIFI 无线电)。  其中一个对讲机支持监控模式(设备 2)、用于监控无线中的所有数据包。  另一个用作 Wi-Fi 站点(器件 3)以连接到器件 1。

    在 am62x 设备 1 上、我创建了 AP、配置为 WPA2 PSK 身份验证。   192.168.225.1/24 被分配给 wlan0 接口。

    这是 hostapd.conf 文件:

    interface=wlan0
    ssid=12345678
    hw_mode=g
    channel=8
    auth_algs=1
    wmm_enabled=1
    ieee80211n=1
    wpa=2
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP
    rsn_pairwise=CCMP
    wpa_passphrase=XXXXXXX
    

    在支持监控模式的设备(设备 2)上、我安装了  aircrack-ng、并使用该软件包中的 airmon-ng 命令将 wifi 设备置于监控模式。  然后、我使用 Wireshark 监控无线传输的数据包。

    我使用此 python 脚本来从 AP 发送 UDP 多播数据包:

    import socket
    MCAST_GRP = '239.255.0.1' # site-local ipv4 administrative scope, 239.255.0.0 to 239.255.255.255
    MCAST_PORT = 12345
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton('192.168.225.1')
    sock.sendto(b"Hello Multicast", (MCAST_GRP, MCAST_PORT))
    

    我将附加我在器件 3 上使用的 Python 脚本、该脚本作为工作站连接、可接收多播数据包。

    在侦听 Wireshark 中的流量时、我发现、当连接器件 3 时、Wireshark 可以看到来自 AP 的多播数据包。

    但是、如果器件 3 未作为站点连接(因此没有与 AP 关联的站点)、则 Wireshark 没有观察到任何多播数据包(即使 python 脚本仍在发送它们)。

    我们有一个用例、希望即使没有关联站点、也能通过无线方式传输多播数据包。

    谢谢、

    Bryan

    这是接收器 python 程序:

    #!/usr/bin/env python3
    
    import socket, struct, sys
    import argparse, re, netifaces
    
    parser = argparse.ArgumentParser(description='Receive a multicast packet')
    parser.add_argument('-a', '--address', help='IP address assigned to the wifi interface')
    
    args = parser.parse_args()
    
    if args.address:
        addr = args.address
    else:
        pat = re.compile(r'^192\.168\.225\.')
        found = False
        for interface in netifaces.interfaces():
            if not found:
                addrlist = netifaces.ifaddresses(interface)
                if netifaces.AF_INET in addrlist:
                    for link in addrlist[netifaces.AF_INET]:
                        if pat.match(link['addr']):
                            addr = link['addr']
                            found = True
                            print("Receiving on {} ({})".format(addr, interface))
                            break
        if not found:
            print("Couldn't find wifi IP address")
            sys.exit(1)
    
    MCAST_GRP = '239.255.0.1'
    MCAST_PORT = 12345
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind(('', MCAST_PORT))
    #mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
    mreq = struct.pack("4s4s", socket.inet_aton(MCAST_GRP), socket.inet_aton(addr))
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
    while True:
        print(sock.recv(1024))
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bryan、  

    对不起,但我已经回到工作这个星期从假期。 这是否仍是一个未决问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sabeeh。  是的、这仍然是一个未决问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bryan、

    对延迟深表歉意。 我目前的理解是、由于我们是 SoftAP、除非连接了基站、否则我们不会发送任何数据。 但是、我还不确定这是 CC33xx FW 还是 hostapd/mac80211 限制。  

    如果您有其他支持 AP 模式的设备/Linux 笔记本电脑、能否在其他设备上尝试同样的实验、看看 AP 是否一直发送这些消息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我尚未能够使用另一个用作 AP 的器件进行测试。  我也不确定在什么级别应用限制、尽管我确实看到接口的数据包计数器在发送多播数据包时会增加。  我不知道数据包是在内核 802.11 级别、 cc33xx 驱动程序还是由 CC33xx 固件丢弃。  这是否是您在确定时可能会有所帮助的东西?

    即使 wifi 芯片组通常不支持这样做、但 CC33xx 是否支持它、这对我们来说是非常有用的。

    谢谢、

    Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bryan、

    回想一下您的实验、您在上面提到、您使用的 AP 模式是 WPA2。 但是 、Wireshark 只有在有站点连接到 AP 时才能解密 WPA2。 在更技术性的术语中、Wireshark 搜索在连接过程中生成的 EAPOL 数据包、并根据这些数据进行解密。 如果您没有 EAPOL 数据包、则 Wireshark 不会解密。 或者您没有从 Wireshark 看到任何数据包?

    我认为可能 AP 仍在发送这些数据包。 您是否可以尝试将 AP 设置为打开/无安全性?

    虽然我看到接口的数据包计数器在发送多播数据包时有所增加

    您是指在 TX 还是 RX 方向上? STA(器件 3)或 AP(器件 1)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bryan、

    在进一步研究之前、我想更好地了解用例或应用。 我想我不明白为什么器件 3 不需要在您的应用中连接。  

    此外、我尝试了与您的 python 脚本类似的内容(也是 python 脚本)、因此我能够看到 TX 数据包递增的类似行为、但在监听器捕获中没有看到。 我认为这是因为我们使用的是基于 IP 的广播包。 但网络上没有其他 IP 地址、因为没有其他设备。 因此、python 应用程序需要能够发送到所有 MAC 地址、而不是 IP... 可能。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因为现在我对此感兴趣、这就是我使用的脚本:

    import socket
    import struct
    
    iface = "wlan1"
    src_mac = b"\xee\x9a\x34\x06\x7b\xba"
    dst_mac = b"\xff\xff\xff\xff\xff\xff"
    
    ethertype = 0x88b5
    payload = b"HelloWorld"
    
    sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)
    sock.bind((iface,0))
    
    eth_header = dst_mac + src_mac + struct.pack("!H", ethertype)
    frame = eth_header + payload
    
    while 1:
            sock.send(frame)
    
    sock.close()
    

    但与您报告的行为相同:这些原始数据包仅在连接工作站时发送。 如果电台断开连接、我没有看到他们。 正如您所说的、AP 接口上的 TX 数据包无论如何都会增加。

    现在、我们需要了解这些数据包被丢弃的位置和原因。 我可以帮助看看这个,但这将需要一些时间。

    如上所述、用此类内容了解目标和用例会有所帮助。