十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
网络故障一般包含网络数据异常,网络丢包和网络延迟。
创新互联公司是一家专业提供龙山企业网站建设,专注与网站设计制作、成都网站制作、HTML5、小程序制作等业务。10年已为龙山众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
Linux内核从2.2开始提供TC(Traffic Control)去控制Linux内核的流量,一般系统都是自带tc工具。
TC控制流程:
这里使用paping而不是ping,按照原作者说法是为了防止在防火墙开启的状态下可以ping通,但无法进行tcp连接的问题。
网络延迟:
tc qdisc add dev eth0 root netem delay 300ms
网络丢包:
tc qdisc add dev eth0 root netem loss 7% 25% #代表丢掉7%的包,但是成功率只有25%
tc qdisc add dev eth0 root netem loss 7% #只设置7%是代表随机丢掉7%的包
网络数据异常:
tc qdisc add dev eth0 root netem corrupt 10% # 10%的数据包损坏,不是没传过去,而是传过去不对。
网络数据重复:
tc qdisc add dev eth0 root netem duplicate 1% #随机产生1%的包重复
网络数据包乱序:
tc qdisc add dev eth0 root netem delay 10ms reorder 25% 50% #有25%的数据包(50%相关)会被立即发送,其他的延迟10秒
关闭网络异常模拟:
tc qdisc del dev eth0 root netem
监控网卡:
tc qdisc add dev eth0 root netem
其余命令:
tc qdisc change dev eth0 root netem duplicate 1%
tc qdisc replace dev eth0 root netem duplicate 1%
tc是要在client端设置的,因为只能控制数据发出,它模拟的是异常的数据到达Server后如何被处理,前提是数据在到达Server的时候已经异常了。
至于server端的控制,需要使用iptables。
参考文档:
你问的这么详细不如直接去看教程
但是初接触TC看教程还真有点费力,你还是多写写,读别人写的脚本去理解他们的意思
class就是规则分支,你用TC来限制速度,首先要写一些规则,比如优先级别,流量限制等
规则写完后,接下来就要过滤,,就是让系统知道哪些包符合规则,根据你的过滤条件来让数据包走不同的分支(规则,class)
基本步骤就是这样,具体清你看教程去把。
只需要修改iproute2应用层的makefile就可以了,编译tc并把tc拷贝到执行目录里