AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 414256
Accepted
Allison
Allison
Asked: 2018-01-02 23:33:19 +0800 CST2018-01-02 23:33:19 +0800 CST 2018-01-02 23:33:19 +0800 CST

增加无线设备上的发送缓冲区/数据包注入率?

  • 772

我编写了一个自定义无线系统/驱动程序,它在带有数据包注入的 wifi 卡上工作,并且处于监控模式。我的程序基于 libpcap,用于pcap_inject通过无线设备发送数据包。

它适用于任何数量的传入流量和每秒 1-2 个数据包的传出(ICMP ping)。然而,问题在于,当我开始尝试以更快的速度传输(TCP,更有用的协议,每秒 25 个以上的数据包)时,我似乎很快就耗尽了缓冲区,并且我的程序错误以Failed to inject packet: send: Resource temporarily unavailable.

这对我来说没有任何意义。我知道我的无线网卡可以传输足够快的速度以超过 500Mb/s 的速率处理 TCP(因此它不会使设备的 TX 环形缓冲区饱和),所以我认为问题出在其他地方。数据包注入在驱动程序/固件中是否以某种方式不太优化?libpcap 是否只是回避某种重要的缓冲区并尝试自行传输?

wifi pcap
  • 2 2 个回答
  • 785 Views

2 个回答

  • Voted
  1. Best Answer
    Allison
    2018-01-07T22:35:25+08:002018-01-07T22:35:25+08:00

    这实际上不是libpcap问题,而是无线工程问题。我正在处理的频道已经很吵了,但是因为这是一个不受监管的网格(意味着没有人可以使用 RTS/CTS 进行协调),所以我的 wifi 卡在监控模式下,决定退回到“聆听并等待静音” " 显然更慢且更容易出错的方法。这意味着我不能非常快地传输,这意味着我的 TX 缓冲区很快就会填满,从而产生Resource temporarily unavailable错误。这是物理载波侦听 (CCA) 的结果,它会导致指数退避。

    我切换到一个空通道(每两秒只有一个数据包),我突然能够以每秒超过一千个数据包的速度传输,这要好得多。我的传输速度仍然很差(最高约为 600KB/s),但至少对我来说足够快。这篇博文似乎暗示某些卡无法快速注入

    不幸的是,对于我的无线网卡及其驱动程序,没有简单的方法可以禁用这种非常胆小的传输行为。有些驱动程序会让你弄乱回退参数,如果你有 Atheros 卡,其他驱动程序让你实际上禁用 CCA。

    • 1
  2. J_H
    2018-01-07T15:23:00+08:002018-01-07T15:23:00+08:00

    以高速率发送 TCP 数据包pcap_inject听起来不像是一场你可能会赢得的性能战。考虑滥用高性能 TCP 机制将此类数据包发送到自定义内核模块,该模块根据您的需要调整有效负载并将数据包转发到网络接口。

    • 0

相关问题

  • 如何找出 nmcli 中缺少的插件?

  • /proc/net/wireless 如何是 /proc/net/dev 的“克隆”?

  • iwlist 质量和信号格式不一致?

  • 在 Gentoo 上,如何在不运行 NetworkManager 守护程序的情况下从命令行连接到 WiFi?

  • 哪些 802.11ac(或更高版本)WiFi 加密狗适用于 Linux 4.13 内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve