使用tc模拟网络慢或异常

        上线前,需要模拟一下网络异常的情况:慢、丢包等,这时候tc可以发挥作用。

        1 模拟延迟

         tc qdisc add dev eth0 root netem delay 100ms  #延迟100ms

         tc qdisc add dev eth0 root netem delay 300ms 200ms   #延迟200-300ms

        2 模拟丢包

        tc qdisc add dev eth0 root netem loss 30% #丢包30%

 

        3 清除添加的策略

        tc qdisc del dev eth0 root

        

        4 常用命令

        tc qdisc del dev eth1 root

        tc qdisc replace dev eth1 root handle 1: prio

        tc qdisc replace dev eth1 parent 1:3 handle 30: netem delay 600ms

        tc filter replace dev eth1 parent 1:0 protocol ip u32  match ip dport $port 0xffff flowid 1:3

        tc qdisc ls dev eth1 root

.....

### 使用 `tc` 命令进行二层 (L2) 数据包的流量控制 为了实现对二层数据包的流量控制网络仿真,可以利用 Linux 的 Traffic Control (`tc`) 工具来配置队列调度算法和过滤器。具体来说,可以通过设置不同的 qdisc(Queueing Discipline)以及相应的 filter 来影响特定类型的 L2 流量。 #### 配置基本的带宽限制 对于简单的带宽限流需求,可以直接应用 HTB 者 TBF 类型的 qdisc: ```bash # 设置 eth0 接口的最大速率为 1Mbps sudo tc qdisc add dev eth0 root handle 1: htb default 11 sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit sudo tc class add dev eth0 parent 1:1 classid 1:11 htb rate 1mbit ceil 1mbit ``` 上述命令创建了一个基于层次令牌桶 (HTB) 的根队列,并设置了最大传输速率[^1]。 #### 应用延迟与抖动 当需要模拟高延时者不稳定的网络环境时,则可以在链路上引入固定时间延迟是随机变化的时间间隔: ```bash # 添加 50ms 的恒定延迟 sudo tc qdisc add dev eth0 root netem delay 50ms # 加入 ±10ms 范围内的随机波动 sudo tc qdisc change dev eth0 root netem delay 50ms 10ms ``` 这些参数能够有效地模仿真实世界中的广域网条件,帮助测试应用程序在网络状况不佳情况下的表现。 #### 过滤并优先处理某些 MAC 地址的数据帧 考虑到 Tap 设备监听的是二层协议,在实际部署过程中可能还需要针对具体的硬件地址实施更精细的操作。例如,通过匹配源/目的MAC地址来进行分类管理: ```bash # 创建一个多级队列结构用于区分不同优先级的服务质量(QoS) sudo tc qdisc add dev eth0 root handle 1: prio bands 3 priomap 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 # 定义三个子类分别对应低、中、高三档服务等级 for i in {1..3}; do sudo tc class add dev eth0 parent 1: classid 1:$i hfsc sc umax 1mbit dmax 10ms; done # 对来自指定设备(如服务器A)发出的所有请求赋予最高优先权 sudo tc filter add dev eth0 protocol all parent 1: basic match "ether src xx:xx:xx:xx:xx:xx" flowid 1:3 ``` 这里假设已知目标机器的物理地址为 `xx:xx:xx:xx:xx:xx` ,则此规则会确保其产生的通信始终享有最优路径资源分配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值