The performance and behavior of large-scale distributed applications is highly influenced by network properties such as latency, bandwidth, packet loss, and jitter. For instance, an engineer might need to answer questions such as: What is the impact of an increase in network latency in application response time? How does moving a cluster between geographical regions affect application throughput? How network dynamics affects application stability? Answering these questions in a systematic and reproducible way is very hard, given the variability and lack of control over the underlying network. Unfortunately, state-of-the-art network emulation or testbeds scale poorly (i.e., MiniNet), focus exclusively on the control-plane (i.e., CrystalNet) or ignore network dynamics (i.e., EmuLab). Kollaps is a fully distributed network emulator that address these limitations. Kollaps hinges on two key observations. First, from an application's perspective, what matters are the emergent end-to-end properties (e.g., latency, bandwidth, packet loss, and jitter) rather than the internal state of the routers and switches leading to those properties. This premise allows us to build a simpler, dynamically adaptable, emulation model that circumvent maintaining the full network state. Second, this simplified model is maintainable in a fully decentralized way, allowing the emulation to scale with the number of machines for the application. Kollaps is fully decentralized, agnostic of the application language and transport protocol, scales to thousands of processes and is accurate when compared against a bare-metal deployment or state-of-the-art approaches that emulate the full state of the network. We showcase how Kollaps can accurately reproduce results from the literature and predict the behaviour of a complex unmodified distributed key-value store (i.e., Cassandra) under different deployments.
翻译:大型分布式应用程序的性能和行为受到网络属性的高度影响, 例如 嵌入、 带宽、 包丢失和 音响。 例如, 工程师可能需要回答问题, 比如 : 在应用程序响应时间里, 网络延缓时间增加的影响是什么? 在地理区域之间移动集群是如何影响应用程序传输的? 网络动态如何影响应用程序稳定性? 以系统和可复制的方式回答这些问题非常困难, 这是因为在基础网络上存在变异性和缺乏控制 。 不幸的是, 最先进的网络模擬或测试台规模不高( 即 MiniNet ), 专注于控制- 平流( 即 CryNet ) 或忽略网络动态( 即 Emulab ) 的影响? Kollaps 是一个完全分布的网络模拟模拟器 来应对这些限制? 首先, 从应用程序的角度, 哪些是快速端端到端值的特性( 例如, 透明、 带带宽、 缩放、 移动、 移动、 移动、 移动、 移动、 移动、 移动、 移动、 移动、 移动、 移动、 维持、 移动、 移动、 移动、 移动、 移动、 移动、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 系统、 完全、 系统、 系统、 系统、 、 、 系统、 系统、 、 、 系统、 、 系统、 、 系统、 、 系统、 、 、 系统、 系统、 、 、 系统、 、 系统、 、 、 、 、 、 、 、 、 、 、 、 系统、 、 、 、 、 、 、 、 、 系统、 系统、 系统、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 和