Dummynet: a simple approach to the evaluation of network protocols

Dummynet: a simple approach to the evaluation of network protocols
复制标题

DOI:
10.1145/251007.251012
复制
发表时间:
1997
期刊:
Comput. Commun. Rev.
影响因子:
--
通讯作者:
L. Rizzo
L. Rizzo
中科院分区:
其他
文献类型:
--
作者:
L. Rizzo

文献摘要

被引文献

相似文献

网络协议通常在运行网络或模拟环境中进行测试。使用前一种方法,不容易设置和控制带宽、延迟、队列大小等各种操作参数。模拟器更易于控制,但它们通常只是所需设置的近似模型,特别是关于各种流量生成器(生产者和消费者)及其与协议本身的交互。在本文中,我们展示了如何通过对现有协议栈进行最小程度的修改来构建一个简单、灵活和准确的网络模拟器-Dummynet,从而允许在独立系统上运行实验。Dummynet的工作原理是截获被测协议层的通信,并模拟有限队列、带宽限制和通信延迟的影响。它在完全可运行的系统中运行,因此允许使用真实的流量生成器和协议实现,同时解决了模拟不寻常环境的问题。使用我们的工具,使用网络协议进行实验就像在工作站上运行所需的一组应用程序一样简单。作者提供了针对TCP的Dummynet的FreeBSD实现。该实现具有很高的可移植性,并且与其他BSD派生系统兼容,并且只需不到300行内核代码。
Network protocols are usually tested in operational networks or in simulated environments. With the former approach it is not easy to set and control the various operational parameters such as bandwidth, delays, queue sizes. Simulators are easier to control, but they are often only an approximate model of the desired setting, especially for what regards the various traffic generators (both producers and consumers) and their interaction with the protocol itself.In this paper we show how a simple, yet flexible and accurate network simulator - dummynet - can be built with minimal modifications to an existing protocol stack, allowing experiments to be run on a standalone system. dummynet works by intercepting communications of the protocol layer under test and simulating the effects of finite queues, bandwidth limitations and communication delays. It runs in a fully operational system, hence allowing the use of real traffic generators and protocol implementations, while solving the problem of simulating unusual environments. With our tool, doing experiments with network protocols is as simple as running the desired set of applications on a workstation.A FreeBSD implementation of dummynet, targeted to TCP, is available from the author. This implementation is highly portable and compatible with other BSD-derived systems, and takes less than 300 lines of kernel code.