使用 Shadow 进行网络模拟

本文介绍了使用Shadow网络模拟框架来测试和改进以太坊客户端网络的方法。该项目旨在修复、更新和扩展ethereum-shadow,以便能够使用最新的客户端版本(如Reth和Lighthouse)进行网络模拟,并进行一系列实验来评估和改进客户端网络的性能和安全性。最终目标是为客户端团队和研究人员提供一个方便易用的模拟框架。

修订版 1, 2024-07-14

使用 Shadow 进行网络模拟

启用并运行网络模拟,以快速测试和改进客户端网络。

动机

网络自然是每个客户端中的一个关键组件。规范和实现都需要认真开发,以使 p2p 网络能够抵抗攻击并尽可能少地使用带宽(以使家庭质押在尽可能多的地区可行)。然而,测试网络更改非常困难:开发网络通常只在中心化网络中包含少量节点,而测试网络不适合进行适当的网络测试,因为它们无法通过新的客户端版本进行集中和快速的更新。手动创建具有实际节点数量(即数千个)的全球分布式测试网络在成本和精力上都是令人望而却步的。网络模拟通常不允许测试完整的软件,而是需要专门编写的代码,这降低了真实性。理想情况下,我们需要一种解决方案来运行具有实际客户端软件和真实网络参数(具有不同延迟和带宽的许多节点)的模拟。现有的方法是 EF DevOps 团队开发的 Kurtosis ethereum-package,它可以与 Trail of Bits 的 Attacknet 结合使用,以测试以太坊网络如何对几种类型的故障做出反应。

项目描述

Shadow 是一个网络模拟框架,它拦截程序的系统调用,以完全模拟这些程序之间的网络连接。由于进程睡眠和系统时间也可以被伪造,因此可以根据模拟节点的所需数量,尽可能快或尽可能慢地运行模拟。 Shadow 还允许定义复杂的网络结构。

ethereum-shadow 由 Pop Chunhapanya 在 2023 年初开发,它有助于设置涉及 Geth 和 Lighthouse 的 Shadow 模拟。Pop 已经运行了多达 1000 个节点的模拟,表明大规模模拟是可行的(前提是它们在具有足够内存的机器上运行)。然而,由于当时的技术限制,需要使用过时的 Lighthouse 版本。此外,Geth 最近的更新使得当前的测试设置无法启动,因为模拟是从 PoW 网络开始的,而 Geth 不再支持 PoW 网络。

在这个项目中,我将修复、更新和扩展 ethereum-shadow。此外,我将运行网络模拟来协助当前的研发,并分析客户端网络的改进。

路线图

该项目大致分为三个阶段。

阶段 1:准备

首先,必须更新 ethereum-shadow 以使用更新的客户端版本运行。我将从 Reth 和 Lighthouse 开始。此外,可能需要扩展 Shadow 本身以支持客户端使用的所有系统调用。

阶段 1 将持续大约三到四周。但是,如果需要比预期更多的精力,则该阶段可能会花费更长的时间。

阶段 2:实验

在该项目的主要阶段,我将运行几个实验。这些实验尚未完全确定,但大致计划是使用当前的客户端版本测试几种攻击场景或网络状况,并使用修改后的客户端重新运行它们,以测试改进行为的潜在方法。收集到的所有数据将以开放许可发布,并且有趣的发现将与相关的客户端团队和研究人员讨论。任何可能被用来攻击实时网络的发现都将负责任地披露,并且在漏洞修复之前不会发布。

需要调查的问题包括但不限于:

  • PeerDAS:弄清楚当前的规范是否足够有弹性。
  • 未来的 DAS 方法:对弹性 DHT 的研究正在进行中,模拟可以帮助评估它们。
  • Lighthouse 的消息队列:Lighthouse 在低带宽节点上的内存消耗方面存在一些长期存在的问题,因为如果消息在队列中停留太长时间,它们就无法足够快地出队。
  • Reth 正在研究 discv5 的优化,需要对其进行基准测试。

阶段 3:清理

如果实验证明有用,我想扩展模拟框架,使其尽可能方便使用,并支持所有主要客户端的模拟,以便客户端团队可以轻松地运行自己的模拟。

此阶段将在第 5 队列结束时甚至之后开始。其长度将取决于阶段 1 和阶段 2 期间 ethereum-shadow 的进展,但我预计至少需要两周时间。

可能的挑战

很难估计需要多少精力才能使 Shadow 与客户端软件一起工作。 可能需要开发 Shadow 本身的扩展,因为可能需要实现更多的系统调用才能正确运行 Reth 和 Lighthouse。

根据实验的不同,可能需要模拟大量节点。出于经济原因,必须认真考虑和准备此类实验。以这种规模运行模拟也可能导致需要修复的性能和稳定性问题。

基于 Shadow 的方法是否比上面提到的基于 Kurtosis 的测试方法提供显着优势还有待观察。优势可能包括降低资源需求(因为不涉及 Kubernetes)以及可以比实时更快地运行模拟(或者对于大型模拟则更慢)。 缺点可能包括 Shadow 的真实性较低(Shadow 使用自己的 TCP 协议栈,并在确定性方面牺牲了真实性)。

项目目标

  • 弄清楚 Shadow 是否是测试以太坊网络的好工具
  • 为复杂的模拟准备一个好的框架
  • 改进客户端网络,并帮助制定即将到来的硬分叉的规范
  • 如果 Shadow 被证明有用,则授权所有客户端团队和研究人员使用它

合作者

研究员

目前没有计划与其他研究员合作,但是,将强烈考虑涉及其他感兴趣的研究员的项目相关的实验。

导师

  • AgeManning (Sigma Prime): 讨论侧重于 Lighthouse 的实验
  • Pop Chunhapanya (EF Research): 开发 ethereum-shadow 模拟框架

资源

  • 原文链接: github.com/eth-protocol-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
eth-protocol-fellows
eth-protocol-fellows
江湖只有他的大名,没有他的介绍。