Linux下用tc控制网络延时和丢包率 流量控制

本文介绍了如何利用Linux下的TC工具进行网络环境模拟,包括分配带宽、模拟网络时延及丢包等操作。通过具体案例说明了正确配置TC作为路由器中间节点的方法,并展示了如何设置网络延时和丢包率,以及这些设置对TCP传输的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux下的tc可以操纵网络,比如分配带宽给不同的应用、模拟网络时延、模拟糟糕网络环境下的丢包等。
tc中间需要用一个路由器。使用 tc 当中间的路由器,来接二个网卡,然后打开路由功能来测试。
于是我们拿一台linux机当router,单网卡,两个虚拟ip,让它连接两台服务器再试。更滑稽了,tc不起作用,两台服务器间的流量刷刷的走,tc却显示没有多少packet经过。tc不能用于router吗?
后来看了tc的详细手册(注意4.1节),终于知道了:tc标准用法是两台服务器中间一个双网卡的router,在router上用tc。
最后测试成功。丢包率越高,tcp传输的速度越慢;如果丢包率很高,tcp可能会顿住,但是只要改回去(去掉tc的netem配置),传输就会恢复。


tc修改网络延时:  
sudo tc qdisc add dev eth0 root netem delay 1000ms
删除策略:
sudo tc qdisc del dev eth0 root netem delay 1000ms


验证效果:
PING myhost (192.168.0.2) 56(84) bytes of data.
64 bytes from myhost (192.168.0.2): icmp_seq=1 ttl=64 time=1000 ms
64 bytes from myhost (192.168.0.2): icmp_seq=1 ttl=64 time=1000 ms
64 bytes from myhost (192.168.0.2): icmp_seq=1 ttl=64 time=1000 ms


修改丢包率:
sudo tc qdisc add dev eth0 root netem loss 10%
删除策略:
sudo tc qdisc del dev eth0 root netem loss 10%


tc流量控制

http://blog.163.com/wang_hui1009/blog/static/69113057201186434772/?latestBlog

### 使用工具模拟网络延迟丢包率 #### Network-Emulator-Toolkit-x64 工具介绍 为了有效评估视频直播间的性能,在实际环境中引入特定的网络状况是非常必要的。通过使用 `Network-Emulator-Toolkit-x64` 可以精确控制并调整诸如延迟、抖动、丢包等因素,从而更好地理解这些因素对用户体验的影响[^1]。 ```bash # 启动Network Emulator Toolkit界面 ./Network-Emulator-Toolkit-x64.exe ``` 该工具允许用户设定具体的参数值来模仿不同的互联网连接特性,比如DSL、3G/4G LTE等,并能实时监控所施加的效果。 #### Linuxtc (Traffic Control) 命令配置 除了专用的应用程序外,Linux操作系统自带的功能同样强大。利用内核模块中的流量控制系统(`tc`)配合`ip`指令能够轻松创建复杂的网络仿真场景[^2]: ```bash # 设置eth0接口上的固定延时为100ms sudo tc qdisc add dev eth0 root netem delay 100ms # 添加随机丢失数据包的概率(例如5%) sudo tc qdisc change dev eth0 root netem loss 5% # 清除所有已应用的规则 sudo tc qdisc del dev eth0 root ``` 上述命令展示了怎样快速建立一个具有指定特性的虚拟链路模型用于开发调试目的。 #### 桥接模式下实现二层延迟模拟 当涉及到更底层的数据帧处理时,则可能需要用到更加专业的技术方案——即基于桥接机制构建自定义拓扑结构来进行实验验证工作[^3]: ```bash # 安装所需软件包 yum install bridge-utils* # 创建名为br_test的新桥梁并将物理网卡加入其中 brctl addbr br_test && \ brctl addif br_test eth0 && \ brctl addif br_test eth1 # 配置IP地址及启动状态 ifconfig eth{0,1} down ;\ ifconfig eth{0,1} 0.0.0.0 up;\ ifconfig br_test UP # 应用netem队列调度器至目标端口以增加人为制造的传输滞后现象 tc qdisc replace dev eth0 root handle 1: netem delay 25ms ``` 此方法适用于那些希望深入探究协议栈内部运作原理的研究人员技术爱好者群体之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值