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 / 问题 / 1158144
Accepted
olh
olh
Asked: 2024-04-18 17:39:54 +0800 CST2024-04-18 17:39:54 +0800 CST 2024-04-18 17:39:54 +0800 CST

限制物理接口带宽,将10G链​​路变成1G链路

  • 772

我希望给定的网卡表现得像速度较慢的网卡一样。就像我笔记本电脑中的 1G 接口实际上是 100M 或 10M 接口一样。一种方法当然是挖出我以前的旧 10mbit 集线器,并将其用于此目的。

我确信有一个“软件解决方案”。tc事实上,命令和功能似乎tbf能够做到这一点。

不幸的是,我没有完全掌握实现上面所写内容的概念。似乎需要考虑一些数学知识来考虑假设的链接速度/sys/class/net/*/speed,可能是来自 的 MTU/sys/class/net/*/mtu以及系统的滴答率。我不确定现在“当前”发行版内核是否仍然需要后者(例如,我有CONFIG_NO_HZ=y)CONFIG_HZ_300=y。

一个 shell 脚本应该如何使此类功能更加通用?喜欢bash link-bandhwidth.sh <interface> 10m|100m|1G|2.5G|10G

编辑:

正如@vidarlo 所建议的,更改链接速度确实有效。我能够更改交换机上各个端口的公布速度列表。我使用 ethtool 得到的结果好坏参半,即使是在提供多种不同速度的 mlx5 卡上也是如此。

我还有一张 mlx4 卡,仅支持单一速度。在这里,我尝试了建议的但不完整的nc命令。因此,问题是如何以编程方式生成最优值。直到现在,这部分仍然没有答案。对我来说,这样的命令适用于固定速度 10G 链路:

tc qdisc add dev $interface root tbf rate 2000mbit latency 1ms burst 2000mbit

这就像假设的 2G 卡,但延迟和突发值很可能还有改进的空间。我也尝试过1000mbit并且100mbit得到了预期的结果。

linux-networking
  • 2 2 个回答
  • 75 Views

2 个回答

  • Voted
  1. Best Answer
    vidarlo
    2024-04-18T17:47:20+08:002024-04-18T17:47:20+08:00

    使用ethtool:

    ethtool -s $IFACE speed 1000

    请注意,通常许多 SFP 仅支持单一速度。运行时ethtool $IFACE将显示支持的速率和模式。

    此外,您还可以使用tc减少可用带宽;这对卡的链接速度没有任何影响,但它可以塑造数据流:

    tc qdisc add dev $IFACE root tbf rate 100mbit

    • 5
  2. Tomek
    2024-04-18T20:33:17+08:002024-04-18T20:33:17+08:00

    正如已经指出的,看看ethtool.

    首先运行ethtool <ifname>并查看Supported link modes和Link partner advertised link modes。两组的交集为您提供了电缆两端可用的链路速度,您可以限制物理链路的速度。

    之后查看选项ethtool下方的手册页advertise。将速度转换为适当的位掩码并发出(作为根)ethtool -s <ifname> advertise <number>以将速度限制为由 <value> 中的位指示。

    • 2

相关问题

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