这里测试系统为Linux操作系统,通过简单的TC命令来实现对带宽的控制.

1对具体IP地址的流量控制

这里采用iperf来进行带宽的测试,首先在服务器和客户端都安装上iperf软件,通过该软件下的命令来进行通讯和测试.

1.1测试正常情况下的带宽

1)服务器设置端口:

[root@docker117 ~]# iperf -s -p  #设置端口为7000,端口号不要设置成容易被占用的,比如XShell占用端口为22,此处倘若设置为22,就会发生冲突.

2)客户端连接服务器:

[root@localhost src]# ./iperf -c 192.168.48.117 -p  -n        #192.168.. 117为服务器地址,7000为其端口;-n规定了发送字节的个数.

3)服务器结果显示:

1.2根据IP对流量进行控制

1)客户端根据服务器的ip及其端口来限制网速:

tc qdisc add dev eth0 root handle : htb default   
#在网卡eth0上添加队列规则htb(分层令牌桶),其主序列号为10:,default 12表示当某个ip流不满足任何已设定的filter规则时,将自动归入class 中 tc class add dev eth0 parent : classid : htb rate 100kbit ceil 1000kbit burst 100k
#在队列规则下添加类型,以便有更深入的qdisc,这里所添加的类仍为htb,rate是一个类保证得到的带宽值,ceil是该类能最大能得到的带宽值,burst是令牌桶的大小
tc filter add dev eth0 protocol ip parent : prio u32 match ip dst 192.168.48.117/ match ip dport 0xffff flowid :1
#添加过滤器,满足后面的筛选条件进入到类10:1中.其中,prio代表优先级,u32是选择器,后面的是服务器的ip地址和端口. 0xffff是defmap字段值,数据包的优先权位
与defmap字段的值进行"或"运算来决定是否存在这样的匹配,如果是0xffff代表匹配所有包,0则代表不匹配

2)服务器结果显示:

可看出限制后带宽由13.8Mbits/s降至403Kbits/s,证明了流量控制命令的有效性.

2对具体IP协议的流量控制

这里采用CentOS下的firefox浏览器作为研究对象,在其上开启流量测量网页,在流量控制前后分别进行测量,以检验TC命令的效果.

2.1测试正常情况下网速

2.2通过命令限制浏览器网速

1)利用TC命令限制TCP协议下的网速:

tc qdisc add dev eth0 root handle : htb default              

tc class add dev eth0 parent : classid : htb rate 100kbit ceil 100kbit burst 1000k     

tc filter add dev eth0 protocol ip parent : prio  u32 match ip protocol  0xff flowid : 
#浏览器测速时对应的协议为TCP协议,对应的ip protocol为6

2)测试限制后浏览器网速:

限制后,下载和上传速度均有所下降,其中上传速度下降尤为显著,说明限制策略有效.

TC命令流量控制测试(针对具体IP和具体进程)的更多相关文章

  1. TC命令流量控制测试(针对具体IP地址和IP协议)

    这里测试系统为Linux操作系统,通过简单的TC命令来实现对带宽的控制. 1对具体IP地址的流量控制 这里采用iperf来进行带宽的测试,首先在服务器和客户端都安装上iperf软件,通过该软件下的命令 ...

  2. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  3. I.MX6 Android CAN 命令行测试

    /********************************************************************* * I.MX6 Android CAN 命令行测试 * 说 ...

  4. 1.网络工具:ifconfig,ping,netstate,Redhat命令和图形化设置ip,finger,nslookup

     1 ip ad查看网卡编号 2.ifconfig查看网卡信息 3.关闭网卡 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcX ...

  5. ab命令压力测试

    网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试工具目前最常见的有以下几种:ab.http_lo ...

  6. Linux命令行测试网速speedtest.net

    Linux命令行测试网速speedtest.net 当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带 ...

  7. Shell 命令行获取本机IP,grep的练习

    Shell 命令行获取本机IP,grep的练习 在 mac 下面输入 ifconfig 或者在 linux 下面输入 ip a 就可以得到我们的网卡信息.不过通常情况下,我们需要查看的是我们的IP地址 ...

  8. Bash命令查找本机公网IP

    用Bash命令查找本机公网IP wget -qO - http://ipecho.net/plain; echo

  9. @vue/cli3+配置build命令构建测试包&正式包

    上一篇博客介绍了vue-cli2.x配置build命令构建测试包和正式包,但现在前端开发vue项目大多数使用新版@vue/cli脚手架搭建vue项目(vue create project-name) ...

随机推荐

  1. Zabbix Agent active主动模式监控

    zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下: 1.当被监控端到达一个量级的时候,Web操作很卡,容易出现502 2.图 ...

  2. Ajax疯狂讲义

    Ajax: async javascript and xml 异步的JS和XML AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这 ...

  3. 试着把.net的GC讲清楚(3)

    前两篇写的都是gc的一些概念和细节,这些东西对自己以后写代码有什么用,本篇我就准备将这些内容. root 第一篇文章中讲了GC在遍历存活对象的时候,都是从root开始的,root是一些对象的引用,例如 ...

  4. Visual Studio 环境路径答疑!

    工程目录结构如下: Console │ Console.sln │ Console.VC.db │ ├─Console │ │ Console.cpp │ │ Console.vcxproj │ │ ...

  5. hdu1496 打表

    通常可以想到直接四个for枚举,但是会超时.就算只用三个for也很危险.可以用打表的方法将时间复杂度降到O(n^2),注意到x1,x2,x3,x4的取值区间是关于零对称的,因此可以只考虑正整数部分,洗 ...

  6. AnsibleAPI源码剖析(1)-Runner类的 初始化

    #ansible版本说明:ansible1.9.1 1.简单使用例子 # -*- coding=utf-8 -*- import ansible.runner #################### ...

  7. Linux定时器 timerfd使用

    英文使用手册原汁原味,一手资料. NAME       timerfd_create, timerfd_settime, timerfd_gettime - timers that notify vi ...

  8. 如何构造一个简单的USB过滤驱动程序

    本文分三部分来介绍如何构造一个简单的USB过滤驱动程序,包括"基本原理"."程序的实现"."使用INF安装".此文的目的在于希望读者了解基本 ...

  9. Linux 系统裁剪笔记 3

    说到裁减Linux,无非是为了减小磁盘占用或者是为了某些特定场合的应用(如嵌入式系统).以RedHat 7.3为例,其最小安装仍然达到了300M,这不得不让人对一直号称小而全的Linux系统感到疑惑. ...

  10. strstr()函数实现

    /* 函数要求:写一个函数模拟strstr()函数,设计中不得使用其他库函数. 函数原型:const char *strstr(const char *str1,const char *str2); ...