二、WASP 环境架构设计
WASP环境的设计是模拟WAN特征,比如包丢弃或延迟。它的目的是想要生成一个更贴近实际的通信量,通过这样检测服务器,对于它的容量设计就很有帮助。我们系统的一个重要特征就是孤立性和可再生性,然而实际中的Internet总是处于不断变化中。但为了便于研究和诊断性能方面的问题,我们的系统要求实验可重复。
由于互联网的多元化,任何一个特定的站点都不可能具有完全的代表性,所以我们希望观察大多数服务器通用的一系列参数,而不是仅仅限于一个点。我们做了一些服务器对条件的灵敏度分析,比如我们改变参数包延迟,从0一直到400ms,然后我们试图找到延迟对于服务器吞吐量的影响。另外,我们系统的优点在于可配置性:
1.站点主机操作人员能更根据网站自身配置系统参数,如果今后需要还可以随时改变它们;
2.可以在相同的条件下,重复地分析和实验。
缺点在于模拟的条件可能与实际没有那么相符,但我们还是相信实验结果要比非WAN条件下的要真实许多,这些提炼出来的结果能使我们对现实的因特网有更好的理解。
先前引入包丢弃和延迟的方法是在底层结构中,添加一个单一独立的机器,它的功能是作为一个WAN模拟器。如图2所示。有时这个机器又被称为延迟路由器。WAN的功能集中于一个单一的机器,我们称之为集中式方法。这个方法优点在于不需要对客户端和服务器的软件进行调整,这对非开源的系统是需要的。这个方法主要用于协议正确性的测试,而如果是在客户端产生的高负载的情况下,它是无法对WWW服务器性能做出评估的。
![]() |
图2. 集中式方法
于是我们用如图3所示的结构来代替,在这个结构中,我们用到了了FreeBSD中的虚拟网层(Dummynet layer),包延迟和包丢弃就可以直接引入客户端,如图4所示。虚拟网层处在协议栈的下方,所以对应用层是透明的。虚拟网层对于穿越协议栈的包应用包过滤规则,根据规则来决定是否丢弃或延迟。
![]() |
图3. WASP 方法
![]() |
图4. 虚拟网架构
为了延迟包的发送,虚拟网层用FreeBSD中的time-out()工具,默认的发送事件间隔是10ms。如果配置虚拟网层不起延迟作用,包就绕过time-out()工具,直接传送。对于包丢弃,虚拟网层使用一个随机丢弃模型,它能设定一个丢包概率。虚拟网层中的丢弃模型相对独立,不会因为过去的丢包决定而影响当前在线包的处理。同样,这对于测试协议正确性是有用的,但在很大程度上并不是实际因特网上包丢弃行为的真实描述。
我们把虚拟网(Dummynet)进一步扩展并和丢弃模型相结合,如图5所示,模型中有两个相对独立的状态。
![]() |
图5. 两种状态的丢弃模型
每个穿越虚拟网的连接都处于这两个状态:要么是“好”的状态,要么是“坏”的状态。对于处在“好”的状态的连接,虚拟网传送所有的数据包;对于处于“坏”的状态的,所有包被丢弃。从好的状态转到坏的状态的转化率取决与丢弃事件概率(loss event probability),这个与全部包丢弃率不同。保持在“坏”的状态的可能性就是条件性丢弃概率(conditional loss probability),也就是,当前一个包丢弃,后一个包丢弃的概率。从坏的状态到好的状态的过渡是丢弃事件概率(loss event probability)的反转。这些控制着每个丢弃事件的持续时间和丢弃包的数量。这个虚拟网的扩展维持着每个连接的状态,通过一个连接观察到的包丢弃相互关联的,但不同连接的丢弃是独立的。