第一个例子

  1. 增加延时
tc qdsic add dev enp0s3 root netem delay 200ms
  • qdisc : queuing discipline, 当内核需要发送包到某个接口时,它是被送到qdis 配置的队列,然后 内核尽可能去从队列去获取最多的包,然后发送给网络驱动

  • root 表示树行的第一个节点,会影响之后的其他规则

  • netem 网络模拟, 允许添加延时,丢包率,重复包和其他外向数据

  • delay 这个命令可以延时

    1. 在添加规则前
    netbeez.net$ ping google.com
    PING google.com (172.217.6.78) 56(84) bytes of data.
    64 bytes from sfo07s17-in-f78.1e100.net (172.217.6.78):
    icmp_seq=1 ttl=53 time=11.9 ms
    64 bytes from sfo07s17-in-f78.1e100.net (172.217.6.78):
    icmp_seq=2 ttl=53 time=12.0 ms
    1. 添加规则后

      netbeez.net$ ping google.com
      PING google.com (172.217.5.110) 56(84) bytes of data.
      64 bytes from sfo03s07-in-f14.1e100.net (172.217.5.110):
      icmp_seq=1 ttl=53 time=213 ms
      64 bytes from sfo03s07-in-f14.1e100.net (172.217.5.110):
      icmp_seq=2 ttl=53 time=210 ms

可见增加的延时和配置的规则近一致

命令解释

查看规则:

tc qdisc show dev enp0s3

删除所有规则

tc qdisc delete dev enp0s3

添加丢包规则

tc qdisc add dec enp0s3 root netem loss 10%

出口网速限制

tc qdisc add dev enp0s3 root tbf rate 1mbit burst 32kbit latency 400ms

tc 通过 class, filter 进行规则匹配

添加一条限速规则

tc qdisc add dev enp0s3 root handle 1: htb r2q 1
tc class add dev enp0s3 parent 1 : classid 1:1 htb rate 10Mbit //rate 表示限制速率
tc filter add dev enp0s3 parent 1: protocol ip prio 16 u32 match ip dst 192.168.4.5 //dst 表示接收方,支持mask

最后,可以通过iperf 进行测试

tc/traffic control 网络控制工具的更多相关文章

  1. linux下使用tc(Traffic Control) 流量控制命令模拟网络延迟和丢包

    目录 TC案例 TC常用命令 TC安装 TC原理介绍 TC规则 TC操作原理 TC命名规则 TC单位 TC命令 TC案例 如何使用tc模拟网络延迟和丢包 修改网络延时:  sudo tc qdisc  ...

  2. Linux TC(Traffic Control)框架原理解析

    近日的工作多多少少和Linux的流控有点关系.自打几年前知道有TC这么一个玩意儿而且多多少少理解了它的原理之后,我就没有再动过它,由于我不喜欢TC命令行,实在是太繁琐了.iptables命令行也比較繁 ...

  3. Linux TC (traffic control)

    在着手学习TC采用如下单位来描述带宽: mbps = 1024 kbps = 1024 * 1024 bps => byte/s mbit = 1024 kbit => kilo bit/ ...

  4. 使用Kernel NetEm和tc模拟复杂网络环境

    关键词:netem(Network Emulator).tc(Traffic Control). 大部分局域网环境良好,但是产品实际网络环境可能千差万别,为了对产品进行各种情况测试就需要模拟网络环境. ...

  5. Linux网络流量控制工具—Netem

    第一篇:概念篇 Netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽.传输延迟.丢包等等情况.使 ...

  6. 【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP

    第24章     RL-TCPnet之网络控制报文协议ICMP 本章节为大家讲解ICMP(Internet Control Message Protocol,网络控制报文协议),通过前面章节对TCP和 ...

  7. 阅读Deep Packet Inspection based Application-Aware Traffic Control for Software Defined Networks

    Deep Packet Inspection based Application-Aware Traffic Control for Software Defined Networks Globlec ...

  8. ping(网络诊断工具)

    ping(网络诊断工具) Ping是Windows下的一个命令,在Unix和Linux下也有这个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用"ping"命令可 ...

  9. Netperf网络性能测试工具详解教程

    本文下载链接: [学习笔记]Netperf网络性能测试工具.pdf 一.Netperf工具简介 1.什么是Netperf ? (1)Netperf是由惠普公司开发的一种网络性能测量工具,主要针对基于T ...

随机推荐

  1. Pycharm2020最新激活码|永久激活(附最新激活码和插件)

    最近很多人的Pycharm激活时间又过期了,后台很多人索要激活码,我就再把激活的方法汇和工具再梳理一次给大家. 最主要有两种激活方式(两种方式需要的激活码不同): 一.激活码激活: 一般一年多需要激活 ...

  2. HttpServlet中文乱码问题

    客户端提交数据给服务器端(Requset) 如果数据中带有中文的话,有可能会出现乱码情况,那么可以参照以下方法解决. 如果是GET方式 1.代码转码 String username = request ...

  3. POJ 1149 网络流 合并建图

    这个题目我敲了一个简单的EK,这不是难点 难点在于建图,按题目的要求 每个猪圈和顾客都建点的话,那也太多了...我看了Edelweiss里面的缩点方法才建好的图,哎,惭愧啊 实际那些猪圈根本不需要单独 ...

  4. 关于Pytorch中autograd和backward的一些笔记

    参考自<Pytorch autograd,backward详解>: 1 Tensor Pytorch中所有的计算其实都可以回归到Tensor上,所以有必要重新认识一下Tensor. 如果我 ...

  5. 2020/2/13 bluecmsv1.6sp1代码审计

    0x00 前言 从今天开始审计一些小的cms,一周内至少审计一种,中间可能会写点别的有趣的东西 0x01 安装好后,看到登陆框,用万能密码打一发,无果,尝试重装,可以重装.有robots.txt 看u ...

  6. redis常用命令--zsets

    zsets常用命令: zadd key score1 mb1 [score2 mb2....]:像key中添加元素和这个元素的分数,如果元素已经存在,则替换分数. zscore key mb :获取k ...

  7. 新iPhone的高售价下,苹果供应商们是该笑还是该哭?

    自新 iPhone发布之日起,世界就从未停止讨论其售价,越来越多的人开始困惑:新 iPhone毫无创新亮点,有什么底气卖到12799RMB呢?整个地球都在期待苹果推出廉价版 iPhone,望眼欲穿地等 ...

  8. pip速度慢解决办法

    pip速度慢解决办法 sudo pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 注意加不加sudo是 ...

  9. Redis的数据结构和对象。

    一.简单动态字符串(simple dynamic string--SDS) Redis使用SDS表示字符串值,键值对都用SDS实现.SDS中的字符数组buf以空字符串结尾,好处是可以直接重用一部分C字 ...

  10. MySQL--InnoDB 关键特性

    插入缓冲 Insert Buffer 对于非聚集索引的插入或更新操作,不是每一次直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,若在,则直接插入:若不在,则先放入到一个 Insert ...