网络监控与流量控制

网络监控与流量控制

1. 网络监控与可视化

1.1 进程网络流量监控–NetHogs

2023-12-14-14-53-59-网络监控与流量控制

实时监控进程发包速度和受包速度

1.2 iperf

在测试的两台机器之间分别安装iperf,一台作为服务机,一台作为客户机。

  • 服务机:iperf -s
  • 客户机:iperf -c <服务机IP> -i 1 -t 10,其中-i表示每隔1s输出一次,-t表示测试时间为10s

1.3 speedtest

由python编写的测速工具,可以测试上传和下载速度,安装方法apt install speddtest-clipip3 install spedtest-cli,但是貌似只能测试公网速度。

2023-12-14-15-31-38-网络监控与流量控制

  • speedtest-cli --verbose显示更详细信息
  • speedtest-cli --server <server_id>指定服务器

2. 网络流量控制

2.1 cgroup+tc

通过在输出端口处建立一个队列来实现流量控制,接收包从输入接口进来后,经过流量限制丢弃不符合规定的数据包,由输入多路分配器进行判断选择:

  • 如果接收包的目的主机是本主机,那么将该包送给上层处理,否则需要进行转发,将接收包交到转发块(Forwarding Block)处理。
  • 转发块同时也接收本主机上层(TCP、UDP等)产生的包,通过查看路由表,决定所处理包的下一跳。
  • 然后,对包进行排列以便将它们送到输出接口。

一般只能限制网卡发送的数据包,不能限制网卡接收的数据包,所以可以通过改变发送次序来控制传输速率。Linux流量控制主要是在输出接口排列时进行处理和实现的。

2.2 trickle

1
trickle -d <download-rate> -u <upload-rate>  <command>

trickle不支持静态链接的应用程序或者具有SUID或SGID位设置的二进制程序,因为它使用动态链接的方式将其载入到需要调整的进程和其关联的网络套接字之间。 Trickle此时会在这两种软件组件之间扮演代理的角色。

需要使用ldd <process>查看该进程是否使用了动态或共享的二进制库,输出中包含了libc.so则代表使用了该库,那么就可以使用trickle进行限速。独立模式和监管模式运行参照独立模式和监管模式运行参照博客


网络监控与流量控制
https://yee686.github.io/2023/12/12/网络监控与流量控制/
作者
Yi Zhengye
发布于
2023年12月12日
许可协议