当前位置: 首页 > news >正文

tc 介绍

目录

1.背景

2. tc介绍

3. tc 丢包


1.背景

需要使用tc 构造丢包场景,注意tc 丢包不能确定丢弃的是否是payload 数据包,有可能丢弃 ack 包。

2. tc介绍

1. 无法正常使用
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc qdisc add dev swift1f0 root netem delay 500ms loss 40%
Error: Specified qdisc kind is unknown.
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc -h
Usage:	tc [ OPTIONS ] OBJECT { COMMAND | help }tc [-force] -batch filename
where  OBJECT := { qdisc | class | filter | chain |action | monitor | exec }OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[aw] |-o[neline] | -j[son] | -p[retty] | -c[olor]-b[atch] [filename] | -n[etns] name | -N[umeric] |-nm | -nam[es] | { -cf | -conf } path-br[ief] }
[root@pool-100-1-1-18 /]# 2. 修复此问题
# 加载模块
sudo modprobe sch_netem# 再次检查是否加载成功
lsmod | grep sch_netem[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# lsmod |grep sch_netem      # 加载模块
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc qdisc show
qdisc noqueue 0: dev lo root refcnt 2 
qdisc fq_codel 0: dev enp4s0 root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev swift1f0 root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc fq_codel 0: dev swift1f1 root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
qdisc noqueue 0: dev virbr0 root refcnt 2 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]#  
[root@pool-100-1-1-18 /]# modprobe sch_netem       # 再次检查是否加载成功
modprobe: FATAL: Module sch_netem not found in directory /lib/modules/4.18.0-553.6.1.el8.x86_64
[root@pool-100-1-1-18 /]# #  安装 kernel-modules-extra(包含 sch_netem)
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# yum install kernel-modules-extra  
Repository extras is listed more than once in the configuration
Last metadata expiration check: 0:02:56 ago on Tue 05 Aug 2025 12:00:48 AM CST.
Dependencies resolved.
=========================================================================================================================================================Package                                     Architecture                  Version                                   Repository                     Size
=========================================================================================================================================================
Installing:kernel-modules-extra                        x86_64                        4.18.0-553.6.1.el8                        baseos                         11 MTransaction Summary
=========================================================================================================================================================
Install  1 PackageTotal download size: 11 M
Installed size: 687 k
Is this ok [y/N]: y
Downloading Packages:
kernel-modules-extra-4.18.0-553.6.1.el8.x86_64.rpm                                                                       2.8 MB/s |  11 MB     00:04    
---------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                    2.8 MB/s |  11 MB     00:04     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transactionPreparing        :                                                                                                                                 1/1 Installing       : kernel-modules-extra-4.18.0-553.6.1.el8.x86_64                                                                                  1/1 Running scriptlet: kernel-modules-extra-4.18.0-553.6.1.el8.x86_64                                                                                  1/1 Verifying        : kernel-modules-extra-4.18.0-553.6.1.el8.x86_64                                                                                  1/1 Installed:kernel-modules-extra-4.18.0-553.6.1.el8.x86_64                                                                                                         Complete!
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# modprobe sch_netem   #  加载模块
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# lsmod |grep sch_netem    # 再次检查是否加载成功
sch_netem              24576  0
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 

到此已加载成功,可以使用tc

3. tc 丢包

1. 查看当前规则[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc qdisc show dev swift1f0
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
[root@pool-100-1-1-18 /]# 2.丢包规则
2.1 固定间隔丢包  
# tc qdisc add dev <网卡名> root netem gap 10 delay 5000ms  # 每10个包丢1个,其余延迟5s[root@pool-100-1-1-18 /]# tc qdisc add dev swift1f0 root netem delay 500ms loss 50%
[root@pool-100-1-1-18 /]# 3. 查看当前规则
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc qdisc show dev swift1f0
qdisc netem 8009: root refcnt 2 limit 1000 delay 500ms loss 50%
[root@pool-100-1-1-18 /]# 4. 查看统计信息
# 发包后查看统计信息[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc -s qdisc show dev swift1f0
qdisc netem 8009: root refcnt 2 limit 1000 delay 500ms loss 50%Sent 168 bytes 4 pkt (dropped 3, overlimits 0 requeues 0) backlog 0b 0p requeues 0
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 5. 删除丢包规则
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc qdisc del dev swift1f0 root
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# tc qdisc show dev swift1f0
qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 
[root@pool-100-1-1-18 /]# 
[root@pool-100-1-1-18 /]# 

到此tc 丢包已实现

http://www.xdnf.cn/news/1245061.html

相关文章:

  • RHCA04--系统模块管理与资源限制
  • 26-数据仓库与Apache Hive
  • Dubbo-Go调Bug记录-泛化调用调不通
  • uniapp基础(五)调试与错误
  • Python 基础语法(二):流程控制语句详解
  • HPE磁盘阵列管理01——MSA和SMU
  • 「PromptPilot 大模型智能提示词平台」—— PromptPilot × 豆包大模型 1.6:客户投诉邮件高效回复智能提示词解决方案
  • Vlog音效大升级!用Audition环境音效打造沉浸式体验
  • 【C++】Stack and Queue and Functor
  • 【原创】基于gemini-2.5-flash-preview-05-20多模态模型实现短视频的自动化二创
  • 将普通用户添加到 Docker 用户组
  • promise类方法
  • 阿里云百炼平台创建智能体-上传文档
  • Java学习第一百零六部分——Lucene
  • 2.4 组件通信
  • deepseek、GPT与claude在MATLAB编程上的准确性对比——以卡尔曼滤波调试为例
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”
  • 本机部署K8S集群
  • 力扣:2246. 相邻字符不同的最长路径
  • ESP-idf框架下的HTTP服务器\HTML 485温湿度采集并长传
  • 14.Home-新鲜好物和人气推荐实现
  • 编程算法:技术创新与业务增长的核心引擎
  • Linux操作系统从入门到实战(十三)版本控制器Git基础概念讲解
  • 深入浅出 RabbitMQ-路由模式详解
  • 自由学习记录(77)
  • 24. 前端-js框架-Vue
  • vite面试题及详细答案120题(01-30)
  • 【工程化】tree-shaking 的作用以及配置
  • 研发团队看板协作中的自动化实践:集成CI/CD与任务流转
  • 【Linux系统】进程间通信:基于匿名管道实现进程池