Linux 网络tc,linux下使用tc和netem模拟复杂网络环境
netem(Network Emulator)可以用来对网卡发出的数据包进行增加延迟、丢包、重复、乱序等处理,来模拟复杂网络环境。netem的设置依赖tc命令,tc是Linux内核提供的流量控制工具。
基本用法
对eth0网卡发出的数据包延迟500毫秒发送
$ tc qdisc add dev eth0 root netem delay 500ms
这里的qdisc是tc中的一个基本概念,dev eth0表示操作的网卡,root表示出队列的根(egress),与之相对的是ingress(入队列)。netem表示启用netem,delay 500ms表示延迟500毫秒。其他命令类似。
对eth0网卡发出的数据包随机丢包5%
$ tc qdisc add dev eth0 root netem loss 5%
对eth0网卡发出的数据包产生10%的重复数据包
$ tc qdisc add dev eth0 root netem duplicate 10%
对eth0网卡发出的数据包,乱序25%(50%相关),延迟50ms
$ tc qdisc add dev eth0 root netem delay 50ms reorder 25% 50%
处理特定IP或端口的数据包
前述的命令会影响指定网络发出的所有数据包,tc命令支持更精细的控制。
如下面的设置,对发往1.1.1.1的数据包随机丢包10%
$ tc qdisc add dev eth0 root handle 1: prio
$ tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 1.1.1.1 flowid 2:1
$ tc qdisc add dev eth0 parent 1:1 handle 2: netem loss 10%
上述命令,先在入队列的根节点绑定一个prio qdisc,handle指定队列的id,id为冒号分割的两个数字。prio disc下自带了三个band,id分别是1:0, 1:1, 1:2。然后在band 1:1上增加一个qdisc,类型为netem,loss 10%是netem参数,表示丢包10%。同时,通过tc filter增加规则,将匹配到目的IP为1.1.1.1的数据包交由id为2:1的对象(即netem的 qdisc)。
这里命令中的handle后的id如,1:、1:1等不能重复。详细的解析可以参考tc命令。在filter中配置不同的match规则,可以匹配目的IP、源IP、目的端口、源端口等。
处理入数据包
netem只能发出的数据包,无法处理接收的数据包。要处理入数据包,需要借助Linux内核提供的ifb模块(Intermediate Functional Block)。
先加载ifb模块,启动ifb网卡
$ modprobe ifb
$ if link set ifb0 up
通过tc命令将入流量导入到ifb网卡上。
$ tc qdisc add dev eth0 handle ffff: ingress
$ tc filter add dev eth0 parent ffff: u32 match u32 0 0 action mirred egress redirect dev ifb0
然后再通过tc命令设置需要的规则即可,只是这里需要操作的是ifb0网卡。 如设置入数据包延迟500ms
$ tc qdisc add dev ifb0 root netem delay 500ms
设置其他处理方式,或者按照IP/端口处理与前述相同。
使用tcconfig配置netem
tc提供的非常强大的功能,同时也非常难以理解使用。通过tcconfig可以方便地配置netem的功能。 tcconfig可以通过pip或pip3安装,详见官方文档,可惜实测centos6通过pip安装会失败。
如对发往1.1.1.1的数据包增加延迟500ms,只需要一个命令即可。tcconfig会自动根据需要调用tc命令进行配置。
$ tcset eth0 --delay 500ms --dst-address 1.1.1.1 --direction outgoing
对1.1.1.1的80端口的出入数据包增加随机丢包5%。
$ tcset eth0 --loss 5% --dst-address 1.1.1.1 --dst-port 80 --direction outgoing
$ tcset eth0 --loss 5% --src-address 1.1.1.1 --src-port 80 --direction incoming
通过tcshow命令可以查看现有的规则
$ tcshow eth0
通过tcdel命令删除现有规则
$ tcdel eth0 --all
Linux 网络tc,linux下使用tc和netem模拟复杂网络环境相关推荐
- Linux系统:centos7下安装Jdk8、Tomcat8、MySQL5.7环境
一.JDK1.8 环境搭建 1.上传文件解压 [root@localhost mysoft]# tar -zxvf jdk-8u161-linux-x64.tar.gz [root@localhost ...
- 混沌工程之ChaosMesh使用之模拟POD网络延迟
文章目录 前言 模拟 POD 网络延迟 目标 配置文件 执行 验证 恢复 留个思考题给你 前言 在这一篇中我们来看一下如何模拟 POD 网络故障. 模拟 POD 网络延迟 目标 指定 pod 产生 1 ...
- Chrome浏览器模拟4G网络
1 F12 打开开发者工具 2 选择Network面板,选择"Add"添加自定义网络: 4 填写自定义网络网速信息: 5 选择"Add"保存自定义网络信息,设置 ...
- linux下使用TC模拟弱网络环境
linux下使用TC模拟弱网络环境 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟 ...
- linux 下使用 tc 模拟网络延迟和丢包
1 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...
- Linux下使用 tc 模拟网络延迟和丢包
1.模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带 ...
- iproute2和流量控制(ip和tc工具)---iproute2/ip/tc/qdisc实现Linux下的QoS控制
本文目录 1.网络配置: "ip"工具 2.流量控制工具Traffic Control: tc工具 2.1.流量整形:Queuing Packets(也称做traffic shap ...
- linux下使用tc工具模拟网络延迟和丢包
模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽. ...
- 如何确认linux内核是否配置了nat,Linux Stateless无状态NAT-使用TC来配置
Linux Stateless无状态NAT-使用TC来配置 如果想在Linux上配置NAT,那么大家众所一言的就是使用iptables的NAT表来配置,iptables提供了灵活丰富的配置来配置SNA ...
最新文章
- mysql如何实现实时存储_OpenResty + Mysql 实现日志实时存储
- 从传统操作系统角度理解Hadoop YARN
- python——学习笔记3
- python的使用说明_Python 的基本使用说明
- mini6410 uboot board.c 分析
- django jsonresponse_0基础掌握Django框架(29)HttpResponse对象
- jquery 插件 分析
- spark 窗口函数(Window)实战详解
- ppc64,ppc64le,ARM,AMD,X86,i386,x86_64(AMD64),AArch64的概念
- AD快捷键的设置及推荐
- CDMA 短信中心号码
- android studio 官方虚拟机,Android Studio 移动虚拟机
- Web Services Ksoap 下载多张图片
- python视频转字符详细教程_python视频转字符画教程
- 某云不限速破解详细教程附工具
- RTP:一种实时应用的传输协议 (RFC-3550)
- WPF技巧(5)元素的加载与卸载(Loaded and Unloaded)
- AtCoder Beginner Contest 165 D Floor Function 公式推导
- C语言—猜数字游戏的实现
- 东半球空间环境地基综合监测子午链——子午工程
热门文章
- cad面积计算机,AutoCAD如何测面积 AutoCAD面积计算方法
- SSM+宠物领养系统毕业设计-附源码031654
- 径向球坐标拉普拉斯方程在高数中的应用
- 阿里云混合云首席架构师张晓丹:政企混合云技术架构的演进和发展
- 【文献阅读】CSI: Novelty Detection via Contrastive Learning on Distributionally Shifted Instances
- [渝粤教育] 南昌航空大学 数据库原理 参考 资料
- 【JS】问号点和双问号的用法
- 【软件工程】小学四则运算 “软件”之初版
- 调试笔记 --- Sending non-protected broadcast ...
- equals方法该怎么重写呢