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
    • 最新
    • 标签
主页 / server / 问题 / 951385
Accepted
Deys Nima
Deys Nima
Asked: 2019-01-30 13:50:42 +0800 CST2019-01-30 13:50:42 +0800 CST 2019-01-30 13:50:42 +0800 CST

多队列 tun/tap 接口

  • 772

我试图了解 Multiqueue tuntap 接口是如何工作的。按照https://www.kernel.org/doc/Documentation/networking/tuntap.txt提供的说明, 我能够创建多个队列。但是,我不知道如何检查队列状态以及它们的创建位置。我试过了:

$ tc -s class show dev tap0

(其中 tap0 是我的点击界面),我看到大约 255 个队列,即使对于带有 IFF_MULTI_QUEUE 标志的单个 ioctl 调用也是如此。所以可能我看错地方了。以下是上述命令的输出片段:

class mq :1 root
 Sent 4741 bytes 37 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
class mq :2 root
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
.
.
.
class mq :ff root
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
class mq :100 root
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0

其次,我不确定如何使用 TC 或任何其他工具基于某些过滤器或分类器将数据包引导到这些队列。如果有人能对此有所了解,我将不胜感激。

PS:我不确定哪个是提出此类问题的最佳论坛,如果有人能指出我正确的论坛,我将不胜感激。我试过了: https ://unix.stackexchange.com/questions/496043/multiqueue-tun-tap-interface 但还没有任何令人信服的答案。谢谢!

tc
  • 1 1 个回答
  • 1899 Views

1 个回答

  • Voted
  1. Best Answer
    Deys Nima
    2019-02-01T11:44:01+08:002019-02-01T11:44:01+08:00

    好的,对于第二个问题,经过多次试验和错误,我能够将数据包引导到特定的类。这更像是一种探索性的努力,所以不确定它是否是“最好的”方式。这是我想要实现的简要背景:假设,如果我们有一个多队列分流接口,其中有两个队列和相应的 fd,fd1 和 fd2,那么我想在 fd1 上接收特殊流,其余的流到 fd2。我能够在应用层创建两个队列,再次使用这个链接。但是数据包被随机分配到这些队列中,可能是基于它们的哈希值。

    为了将数据包引导至特定流并最终引导至其相应的 fd,我使用了 tc-multiq。如果您在多队列分接接口上使用tc multiq创建类,您将获得分接接口支持的尽可能多的类;对于上面的例子,我得到了两个。然后,您可以利用 tc 过滤器和操作 ( skbedit ) 进行队列映射。

    要遵循的步骤:

    首先创建水龙头接口(在这里使用我自己的程序和脚本)。

    $ ./createTap.sh tap0

    检查队列的数量。我仍然不确定为什么我们在这里看到 255 个课程(我原帖的问题 1)。

    $ tc -s class show dev tap0 class mq :1 root Sent 4741 bytes 37 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class mq :2 root Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 . . . class mq :ff root Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class mq :100 root Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0

    让我们在 tap0 上创建 multiq:

    $ tc qdisc add dev tap0 root handle 1: multiq

    检查我们现在有多少个班级。请注意,我们现在只有 2 个类而不是 255 个:

    $ tc -s class show dev class multiq 1:1 parent 1: Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class multiq 1:2 parent 1: Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 `

    最后,使用tc 过滤器根据需要引导数据包。

    希望这对其他人有帮助!

    • 2

相关问题

  • Bash 脚本不工作

  • 如何对每个 OpenVPN 客户端使用 TC 进行流量整形(速率限制)

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve