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 / 问题

问题[traffic-shaping](server)

Martin Hope
red0ct
Asked: 2020-11-14 05:22:08 +0800 CST

降低 Linux 中的网络流量优先级

  • 1

我想降低特定网络流量的优先级,tc特别是tc-u32在我的 Linux 服务器中使用。换句话说,所有其他流量必须比具有指定 IP-proto 的流量具有更高的优先级。

我正在尝试应用此 tc 过滤器规则来降低传出 ICMP 流量的优先级:

tc f a dev eno1 parent 1: prio 2 u32 match ip protocol 1 0xff

但它返回此错误:

RTNETLINK answers: Invalid argument
We have an error talking to the kernel

在这种情况下,我对 tc 仍有一些不清楚的地方:

  1. 如何使这条规则正常工作?
  2. 我是否需要一些其他规则来告诉 Linux 诸如“所有其他流量以 1 优先级”之类的东西,或者这是默认完成的?
  3. 这种命名背后的基本逻辑是什么 - 1:,2:等等?是什么0xff意思?我应该明确指定classid字段吗?
linux networking traffic-shaping tc linux-networking
  • 1 个回答
  • 570 Views
Martin Hope
Shihab Pullissery
Asked: 2018-02-27 05:32:08 +0800 CST

tc qdisc 与 openwrt 中的 GRE

  • 0

我正在尝试在 openwrt 板上实现对 GRE 接口的流量控制。为此,我遵循以下步骤,

  1. 在两个隧道终端设备中创建名为 gre1 的 GRE 接口。
  2. 用 ping 测试可达性,成功。
  3. 使用以下命令创建 qdisc。

    tc qdisc add dev gre1 root handle 1: default 2

  4. 在创建 tc 类之前,我厌倦了ping 隧道接口,但这失败了。5.我试图在gre1中捕获数据包但发现0个数据包。

  5. 使用命令监控 qdisc 的统计信息

    tc -p -s -d qdisc show dev gre1

    发现丢包数在增加。

我已经在 Ubuntu PC 上测试了这个,发现可以正常工作。此外,如果我将隧道更改为 VPN 隧道而不是 GRE,它工作正常。

在 GRE 中实现 tc 需要处理任何其他事情吗?

任何帮助将不胜感激。

traffic-shaping
  • 1 个回答
  • 471 Views
Martin Hope
Sajjad Rizvi
Asked: 2017-05-26 15:30:33 +0800 CST

针对大带宽(超过 1Gig)的 Linux 流量整形

  • 0

我正在三台连接10G ig 接口且 RTT 为100 微秒的计算机之间进行实验。假设这些是机器 A、B 和 C。机器 A 正在与 B 和 C 通信。机器 B 和 C 不相互通信。

我想限制带宽,使机器 A 和 B 具有5G bps 带宽和 100毫秒延迟。而机器 A 和 C 没有任何带宽和延迟限制。我的目标是模拟具有大带宽可用的广域网。

我尝试使用 HTB 和 prio 来限制带宽和延迟。但是,达到的最大带宽约为 350 Mbps。我通过iperf进行了测试。我的理解是,我们使用 TC 的带宽不能超过 1Gig。

有什么方法或工具可以将带宽限制在 1Gig 以上?

我正在使用以下 TC 命令:

sudo tc qdisc del dev p4p1 root
sudo tc qdisc add dev p4p1 handle 1: root htb r2q 1000
sudo tc class add dev p4p1 parent 1: classid 1:3 htb rate 1000Mbps
sudo tc qdisc add dev p4p1 parent 1:3 handle 23: netem delay 50ms limit 100000000
sudo tc filter add dev p4p1 protocol ip prio 9 u32 match ip dst 10.96.0.1 flowid 1:3
traffic-shaping
  • 1 个回答
  • 1574 Views
Martin Hope
wcarhart
Asked: 2016-08-05 12:38:10 +0800 CST

如何检查所有活动的网络规则?

  • 1

tc我一直在使用/添加规则/设置(不确定这里的正确术语是什么)netem,例如tc qdisc add dev eth0 root netem delay 25ms,并且在使用后一直在删除它们。

但是,现在我想检查哪些规则/设置仍然有效。是否有查看或检查所有活动netem规则的命令?我认为等效的iptables命令类似于iptables -L.

linux networking traffic-shaping tc
  • 1 个回答
  • 4926 Views
Martin Hope
user2066671
Asked: 2015-11-04 18:31:39 +0800 CST

使用 ifb 重定向的流量整形

  • 1

我想使用 ifb 为多个虚拟接口执行一些整形。但是,我不确定如何告诉 ifb 接口出口到专用出口接口

现在 vnet0 -> mirrer action mirror -> ifb0

我想建立以下

vnet0 -> mirrer action 镜像到 ifb0 -> 过滤器匹配到 eth4

我注意到默认情况下,所有数据包都在 ifb0 接口上丢弃。我尝试了从 ifb0 到 eth4 的入口镜像操作,但没有数据包被转发。

traffic-shaping
  • 1 个回答
  • 356 Views
Martin Hope
rubo77
Asked: 2015-04-17 13:38:49 +0800 CST

在 debian jessie 上使用流量整形和 tc 来限制一个虚拟 IP

  • 2

我的服务器有多个 IP,其中只有一个映射到入站物理接口 eth0。其他 IP 通过 iptables/DNAT 以虚拟方式处理。

我想将我的一个名为“service1”(内部为 192.168.123.2)的 lxc 容器的流量限制为最大 50MBit/s。

从外部我通过 xxx90 到达我的主服务器“管理程序”,但防火墙将 xxx89 所需的所有端口路由到“service1”(我只使用端口 10000 和 5666)

tc对于到达 IP xxx89 上的 service1 contianer 的流量,如何将流量调整为最大 50Mbit/s?

我会从

DEV=eth0
IPT=/sbin/iptables
TC=/sbin/tc
$IPT -t mangle -F
# clear old rules:
$TC qdisc del dev $DEV ingress > /dev/null 2>&1
$TC qdisc del dev $DEV root > /dev/null 2>&1
$TC qdisc del dev lo root > /dev/null 2>&1
# initialize shaping and set default to channel 12: 
$TC qdisc add dev $DEV root handle 1:0 htb default 12 r2q 6
# set max limit to 1GBit
$TC class add dev $DEV parent 1:0 classid 1:1 htb rate 1Gbit ceil 1Gbit

这些是我的 iptables 规则(iptables-save):

-A PREROUTING -d x.x.x.89/32 -i eth0 -p tcp -m tcp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666
-A PREROUTING -d x.x.x.89/32 -i eth0 -p udp -m udp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666
-A PREROUTING -d x.x.x.89/32 -i eth0 -p tcp -m tcp --dport 10000 -j DNAT --to-destination 192.168.123.2:10000
-A PREROUTING -d x.x.x.89/32 -i eth0 -p udp -m udp --dport 10000 -j DNAT --to-destination 192.168.123.2:10000
-A POSTROUTING -s 192.168.123.0/24 -o eth0 -j SNAT --to-source x.x.x.89

现在,我将如何定义规则以将流量限制为最大 50Mit,仅用于从“service1”到“service1”的这两个端口 10000 和 5666?

traffic-shaping
  • 1 个回答
  • 928 Views
Martin Hope
Grigory
Asked: 2014-08-08 05:55:52 +0800 CST

Ubuntu 14.04 是否支持 Mellanox OFED 2 中的 ibdump?

  • 0

我有 Ubuntu 14.04。我有 Mellanox Technologies MT27500 系列 [ConnectX-3] HCA。我能够通过所有测试,例如 ibping 和 ib_rdma_lat。现在我正在运行 MPI 测试以验证 InfiniBand 是否正常工作。我如何才能真正看到有流量通过 HCA 的端口?

我尝试执行 ibdump 实用程序(来自下载中的所有 RPM)。但它失败了。有了这个:

root@node3:~/ibdump-1.0.5-4-rpms/ibdump-1.0.5-4.x86_64-rhel6/usr/bin# ./ibdump
 ------------------------------------------------
 IB device                      : "mlx4_0"       
 IB port                        : 1              
 Dump file                      : sniffer.pcap   
 Sniffer WQEs (max burst size)  : 4096           
 ------------------------------------------------

Initiating resources ...                         
searching for IB devices in host                 
Warning: memory access to device mlx4_0 failed: Input/output error.
Warning: Fallback on IO: much slower, and unsafe if device in use.
-E- Failed to open mst device mlx4_0: No such file or directory   
-E- failed to create resources                                    

但实际上有 mlx4_0 设备。正如我所说,来自 infiniband-diags 包的所有测试都通过了。

Ubuntu 14.04 的 MLNX_OFED 2 是否支持 ibdump?如果没有,那么我可以使用哪些替代品?

谢谢你。

traffic-shaping
  • 2 个回答
  • 982 Views
Martin Hope
Ian
Asked: 2014-03-22 15:59:13 +0800 CST

同时实现HTB、NetEM、TBF流量控制

  • 2

我正在开发一个 bash 实用程序,它将使用 tc Linux 命令行实用程序的多个方面来模拟各种网络条件。我已经成功构建了几个 qdisc 层次结构,一个用于 HTB 带宽控制、NetEM 延迟和数据包操作以及 TBF 速率控制,以及用于 HTB-NetEM 和 TBF-NetEM 的组合处理程序我正在努力将这三个组合成一个单一的结构,适用于我需要在一个连接上控制所有这些因素的情况。这是我到目前为止所拥有的:

  sudo tc qdisc add dev $interface root handle 1:0 htb

  sudo tc class add dev $interface parent 1:0 classid 1:1 htb  #htb args

  sudo tc qdisc add dev $interface parent 1:1 handle 10:0 tbf  #tbf args

  sudo tc qdisc add dev $interface parent 10:1 handle 101:0 netem  #netem args

由于我的范围较小,我知道问题不在于输入的语法,而可能在于我的 tc qdiscs 和类的结构。当我尝试在我的网桥的两个以太网端口中运行这些命令以及速率和带宽整形参数(分别为 10 和 15 Mbit/s)时,在 TCP 或 UDP 中显示 iperf 测试的带宽没有变化。任何意见,将不胜感激。

这是我的其他工作复合结构,以防它们可能有所帮助:

HTB 和 NetEM:

  sudo tc qdisc add dev $interface root handle 1: htb

  sudo tc class add dev $interface parent 1:0 classid 1:1 htb  #htb args

  sudo tc qdisc add dev $interface parent 1:1 handle 10:0 netem  #netem args

TBF 和 NetEM:

  sudo tc qdisc add dev $interface root handle 1:0 tbf  #tbf args

  sudo tc qdisc add dev $interface parent 1:1 handle 10:0 netem  #netem args
traffic-shaping
  • 1 个回答
  • 7092 Views
Martin Hope
Daniel
Asked: 2012-06-05 09:28:38 +0800 CST

Fedora 17 中的流量控制 (tc) 是否被破坏?

  • 1

从 Fedora 16 升级到 Fedora 17 后,流量控制似乎不再起作用。

运行# tc qdisc show会输出:

qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priopmap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

但是,如果我运行# tc qdisc add dev eth0 root netem delay 100ms或类似的命令,例如# tc ... loss 2%或# tc ... corrupt 3%我得到以下信息:

RNETLINK answers: No such file or directory

降级回 Fedora 16 允许我使用流量控制而不会出现这个问题,所以我确信这不是硬件问题。

这个问题类似于tc netem possible missing但我相信通过检查# yum provides */tc并确定 tc 来自包安装了正确的组件iproute,我有最新的安装包。

是netem我还必须安装的另一个软件包的一部分吗?

fedora traffic-shaping iproute
  • 2 个回答
  • 3783 Views
Martin Hope
Etienne Dechamps
Asked: 2012-05-28 01:23:36 +0800 CST

Linux tc htb + prio = 非常慢的链接

  • 1

我正在尝试使用 Linux (3.2) tc、HTB 和 PRIO 调整流出我的 DSL 链接(已验证 1 mbit 上传)的流量。我的 Linux 机器通过千兆以太网链路连接到 ADSL 调制解调器。我想使用 HTB 限制上传速率,以便我的数据包在 Linux 机器而不是调制解调器处排队,然后使用 PRIO 将数据包放入优先级带。

所以,我这样做了:

tc qdisc add dev dsl root handle 1: htb default 1
tc class add dev dsl parent 1: classid 1:1 htb rate 950kbit
tc qdisc add dev dsl parent 1:1 handle 2: prio bands 6
tc qdisc add dev dsl parent 2:1 bfifo
tc qdisc add dev dsl parent 2:2 bfifo
tc qdisc add dev dsl parent 2:3 bfifo
tc qdisc add dev dsl parent 2:4 bfifo
tc qdisc add dev dsl parent 2:5 bfifo
tc qdisc add dev dsl parent 2:6 bfifo

问题是,一旦我这样做了,我的上传链接就变慢了。我得到大约。25 kbit/s,比我应该得到的速度(950 kbit/s)慢38 倍,即使链路未被使用。

有趣的是,如果我删除 PRIO qdisc 但保留 HTB qdisc,那么吞吐量会上升到大约。550 kbit/s,更好但仍然不是我应该得到的。同样,该链接未使用,因此优先级不会考虑此行为。

知道我在做什么有什么问题吗?多年来,我一直在使用完全相同的命令将以太网链路塑造成 50 mbit/s,没有任何问题,所以我真的不知道为什么它在这种情况下不起作用。

附加信息:

# tc -s -d qdisc ls dev dsl
qdisc htb 1: root refcnt 2 r2q 10 default 1 direct_packets_stat 0 ver 3.17
 Sent 447262 bytes 1168 pkt (dropped 90, overlimits 38 requeues 0)
 backlog 0b 0p requeues 0
qdisc prio 2: parent 1:1 bands 6 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 447262 bytes 1168 pkt (dropped 90, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc bfifo 8043: parent 2:1 limit 1514b
 Sent 84138 bytes 928 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc bfifo 8044: parent 2:2 limit 1514b
 Sent 363124 bytes 240 pkt (dropped 90, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc bfifo 8045: parent 2:3 limit 1514b
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc bfifo 8046: parent 2:4 limit 1514b
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc bfifo 8047: parent 2:5 limit 1514b
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
qdisc bfifo 8048: parent 2:6 limit 1514b
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0

# tc -s -d class show dev dsl
class htb 1:1 root leaf 2: prio 0 quantum 11875 rate 950000bit ceil 950000bit burst 1599b/8 mpu 0b overhead 0b cburst 1599b/8 mpu 0b overhead 0b level 0
 Sent 478804 bytes 1316 pkt (dropped 90, overlimits 0 requeues 0)
 rate 42232bit 17pps backlog 0b 0p requeues 0
 lended: 1316 borrowed: 0 giants: 0
 tokens: 195781 ctokens: 195781
class prio 2:1 parent 2: leaf 8043:
 Sent 97560 bytes 1064 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
class prio 2:2 parent 2: leaf 8044:
 Sent 381244 bytes 252 pkt (dropped 90, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
class prio 2:3 parent 2: leaf 8045:
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
class prio 2:4 parent 2: leaf 8046:
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
class prio 2:5 parent 2: leaf 8047:
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
class prio 2:6 parent 2: leaf 8048:
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 0b 0p requeues 0
linux traffic-shaping traffic-management tc htb
  • 1 个回答
  • 4184 Views

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