模拟网络状况的有很多种,这里说的是Linux上的TC工具。
什么是TC
TC(traffic control)是Linux中的流量控制工具。它是通过控制netem来实现的网络场景模拟。该工具是直接对物理网卡生效的,如果是逻辑网卡,则该控制无效。如果是用的虚拟机,可视虚拟网卡为物理网卡。
什么是HTB
HTB是Hierarchy Token Bucket的缩写。通过在实践基础上的改进,它实现了一个丰富的连接共享类别体系。使用HTB可以很容易地保证每个类别的带宽,虽然它也允许特定的类可以突破带宽上限,占用别的类的带宽。HTB可以通过TBF(Token Bucket Filter)实现带宽限制,也能够划分类别的优先级。
TC使用步骤
要对网卡进行流量控制的配置,需要进行如下的步骤:
-
为网卡配置一个队列;
-
在该队列上建立分类;
-
根据需要建立子队列和子分类;
-
为每个分类建立过滤器;
-
建立与过滤器配合的路由表;
操作实例
正常情况下的网络表现
产生流量的语句: server端:
Client端:
产生的结果:
Server端:

Client端:
做了多遍,都和上面的结果相似。5个线程加在一起每秒大概1Gbits左右。
模拟丢包
模拟命令

丢包率与带宽的关系
模拟延迟
模拟命令
延迟与带宽的关系
HTB队列分层限制
分类配置

限流效果
测试手段从A机往B机用iperf开5个线程发数据包。



有很多种手段可以模拟网络丢包、延迟、限流的情况,大家可以自行探索。