我有:
++
仅仅为了一些测试目的,我需要在A到达网关G之前对来自A的流量进行整形。我用tcpreplay在mac层注入A中的流量,所以我不能直接在A上进行整形。
我的想法是:
我的解决方案好吗?是否有更简单的不需要B上两个(以太网)网络接口的?
B上的虚拟网络接口会让我的生活更轻松吗?
要部署上述设置(不包括流量整形),我需要哪些典型命令?
发布于 2014-07-29 14:27:06
一些想法:
你的解决方案的主要问题是,它将使A依赖于B的网络更加不稳定。
虽然您的解决方案从本质上说是一种智能的、基于linux的路由器。如果"gw“和”开关S“是虚拟的,而B是聪明的,你甚至可以考虑扔掉其中的至少一个,让B进入你真正的门户。
发布于 2014-07-29 16:35:53
您不需要为此做任何路由技巧,也不需要虚拟接口。
你只需塑造你的流量,因为它离开系统A。
准确地勾勒出你想要做的事情,并且为它写一个“tc”规则是很简单的。
例如,假设您希望将所有传出流量的A限制为1 1mbit/s:
# Flush tc
tc qdisc del dev eth0 root &> /dev/null
tc qdisc add dev eth0 root handle 1: htb default 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit好了。
从A运行一个速度测试,您将看到您的传入流量可能没有受到影响,但您的传出流量限制为每秒1 Mebibit。
为什么我要说“可能没有受到影响”?因为如果您有一个非常高的传入率,您的ACK数据包可能超过1 1Mbit的限制,并被节流。如果你的ACK慢了,你的流量也慢了。
如果您无法在A上使用tc或iptables --例如,如果您的流量对tc/iptables不可见-例如,tcpreplay,则需要在B上执行流量控制。
为此,至少有三种方法可以做到这一点。
https://serverfault.com/questions/616309
复制相似问题