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.

[参考译文] Linux/WL1835MOD:AP 模式:未接收到入站 IPv6流量

Guru**** 2559860 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/664889/linux-wl1835mod-ap-mode-inbound-ipv6-traffic-not-received

器件型号:WL1835MOD

工具/软件:Linux

我正在使用的产品具有配置为接入点模式的 WiLink 芯片。 这通常通过 Connman 来完成。 目前、这对所有 IPv4流量都很有用。 但是、最近出现了一个用例、要求我们支持将通过 IPv6进行通信的客户端。 我已经确定、由于某种原因、通过 WiLink 芯片管理的 WiFi AP 的 IPv6流量不起作用。

下面是我确定这一点的方法:

  1. 在产品上启用 AP 模式。
  2. 为产品提供 IPv6地址:
    ifconfig wlan0 add 2001:0db8:0:F101:1/64
  3. 将 Linux 笔记本电脑连接到产品的 WiFi。
  4. 为 Linux 笔记本电脑提供 IPv6地址:
    ifconfig wlan0 add 2001:0db8:0:F101:10/64
  5. 将第二台 Linux 笔记本电脑连接到产品的 WiFi、并按如下方式进行配置:
    ifconfig wlan0 add 2001:0db8:0:F101:11/64
  6. 尝试先 ping 第二台笔记本电脑:
    ping6 2001:0db8:0:F101::11 (可选添加到 IPv6地址末尾的接口-这不影响结果)
    这不奏效。
  7. 从产品 ping 任一台笔记本电脑:
    ping6 2001:0db8:0:F101:10
    这正常工作。

通过一些额外的实验、我确定限制似乎是运行 AP 的产品可以向任何连接的客户端发送 IPv6流量、但无法接收来自这些客户端的流量、客户端也无法相互通信。

IPv6支持已内核。 此外、IPv6流量也适用于本产品的其他网络接口、尤其是在本产品通过 USB (NCM)托管虚拟网络接口的情况下。 我们还有一款不同的产品、其配置非常相似、另一款无线芯片未出现此问题。

在 WiLink 芯片处于 AP 模式时、IPv6支持是否存在任何限制? 如果不是-我是否可以进行任何配置更改以希望缓解此问题?

谢谢、

James Bettker

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

    我很确定它与 hostap 等配置相关。
    不是特定于 wl18xx 的东西。

    我自己没有尝试过、但它似乎与这个问题类似、对吧?:
    bugzilla.redhat.com/show_bug.cgi

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

    您好、Eyal、
    感谢您的回复。 我通常同意您的观点、这似乎是一个上层软件问题。 让我想起芯片组或 WiLink 驱动程序存在问题的原因是我们有另一个产品是由几乎相同的 Yocto 根构建的,并且安装了非常相似的配置和服务-- -此产品不会出现所述问题(并且不使用 WiLink)。

    我无法访问 WiLink 参考板。 这里的其他人是否有机会使用 hostapd 在参考板上对此进行快速测试? 只要您有两个支持 WiFi/IPv6的设备可以相互 ping 通、重现此过程的步骤就非常简单。 如果此问题被交付给我们的发行版、或者我们使用 ConnMan 启动 AP、这将有助于我澄清。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉-很清楚-我阅读了您链接的主题、除了许多人说不能解决问题的一些建议之外、它似乎不能提供问题的解决方案。 此外、我们的软 AP 在进入线控模式后确实会获得 IPv6链路本地地址。 问题是设备间通信本身被阻止。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 James:

    这可能是一个愚蠢的问题、但在相同的设置中、如果您使用 IPv4地址、一切是否正常?

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

    尊敬的 James:

    我刚刚在 AM335x BBB 上进行了测试、没有发现任何问题。

    请参见下面的。

    我的 AP 设置在 wlan1上、地址2001:db8:0:F101:1

    Laptop1:2001:db8:0:F101:10

    Laptop2: 2001:db8:0:F101::12

    下面是从 AM335x 板 ping 两台笔记本电脑。

    两台笔记本电脑之间的 Ping 操作也正常。

    root@AM335x-EVM:/usr/share/wl18xx ifconfig
    eth0 Link encap:ethernet HWaddr 84:EB:18:9C:DD:98
    上广播多播 MTU:1500公制:1
    RX 数据包:0错误:0丢弃:0超限:0帧:0
    TX 数据包:0错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    中断:175

    LO 链路环接:本地环回
    iNet addr:127.0.0.1掩码:255.0.0.0
    inet6 addr:::1%763860/128范围:主机
    正在运行 MTU:65536公制:1的上环回
    RX 数据包:16错误:0丢弃:0超限:0帧:0
    TX 数据包:16错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1
    RX 字节:1568 (1.5 KiB) TX 字节:1568 (1.5 KiB)

    USB0 Link encap:以太网 HWaddr B6:3D:6D:CB:B6:40
    上广播多播 MTU:1500公制:1
    RX 数据包:0错误:0丢弃:0超限:0帧:0
    TX 数据包:0错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)

    WLAN1 Link encap: Ethernet HWaddr 54:4A:16:13:12:B8
    iNet addr:192.168.43.1 Bcast:192.168.43.255掩码:255.255.255.0
    inet6 addr:2001:db8:0:f101::1% 763860/64范围:全局
    inet6 addr:fe80::564A:16ff:fe13:12b8%763860/64范围:链接
    运行多播 MTU:1500公制:1的上广播
    RX 数据包:4733错误:0丢弃:3溢出:0帧:0
    TX 数据包:1071错误:0丢弃:0溢出:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:401714 (392.2 KiB) TX 字节:160961 (157.1 KiB)

    root@AM335x-EVM:/usr/share/wl18xx

    root@AM335x-EVM:/usr/share/wl18xx

    root@AM335x-EVM:/usr/share/wl18xx
    root@AM335x-EVM:/usr/share/wl18xx # ping6 2001:0db8:0:F101:10
    Ping 2001:0db8:0:F101::10 (2001:db8:0:F101::10):56个数据字节
    从2001:db8:0:F101::10:seq=0 TTL=64 time=3.629ms
    从2001:db8:0:F101::10:seq=1 TTL=64 time=2.943ms 起64个字节
    从2001:db8:0:F101::10:seq=2 TTL=64 time=3.086ms 起64个字节
    从2001:db8:0:F101::10:seq=3 TTL=64 time=2.988ms
    ^C
    --2001:0db8:0:F101:10 ping 统计--
    发送4个数据包、接收4个数据包、0%数据包丢失
    往返最小值/平均值/最大值= 2.943/3.161/3.629ms
    root@AM335x-EVM:/usr/share/wl18xx # ping6 2001:0db8:0:F101::12
    Ping 2001:0db8:0:F101::12 (2001:db8:0:F101::12):56个数据字节
    从2001:db8:0:F101:::12:seq=0 TTL=64 time=118.203ms 起64个字节
    从2001:db8:0:F101:::12:seq=1 TTL=64 time=3.003ms
    从2001:db8:0:F101:::12:seq=2 TTL=64 time=10.228ms
    从2001:db8:0:F101:::12:seq=3 TTL=64 time=3.026ms 起64个字节
    从2001:db8:0:F101:::12:seq=4 TTL=64 time=2.987ms
    ^C
    --2001:0db8:0:F101::12 ping 统计--
    传输5个数据包、接收5个数据包、0%数据包丢失
    往返最小值/平均值/最大值= 2.987/27.489/118.203 ms

    此致、

    Eyal

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

    您好、Eyal、

    我已经确定了问题背后的原因。 这也是 Jimmy Perchet 几年前提供解决方案的问题。 使用主线内核 TI WiLink 驱动程序(按原样)时、WiLink 驱动程序会过滤出所有形式的多播数据包、这会导致网络节点之间的 IPv6 (需要多播才能工作)发生故障。 进行更改 Jimmy 建议修复我们的问题。 我不知道为什么您没有看到这个问题、但感谢您的帮助。 希望此主题至少能帮助发现此问题的其他人。 下面是 Jimmy 补丁的线程:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Eyal、
    我与集成工程师进行了交谈。 他想问我、您是否知道内核主线上的任何特定补丁、这些补丁本来可以解决我在上一篇文章中描述的问题。 如果没有、您能否告诉我您在 AM335x BBB 上使用的上游内核是在其上进行测试的、以便我们可以尝试跟踪 TI 实施的解决方案?

    作为参考、我们使用的是内核版本4.9、因此我们对其上游所做的任何更改感兴趣。

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

    尊敬的 James:

    此修补程序是我们官方版本(R8.7_SP3)的一部分:

    在上游也已接受该方案:

    patchwork.kernel.org/.../

    请检查它是否是内核的一部分...

    似乎它仅在 v4.11中达到主线、因此您可能没有它在内核中、您需要将其引入。



    BR、
    Eyal