Google 致力于为黑人社区推动种族平等。查看具体举措

Happy

Happy 是一个用于模拟网络拓扑的轻量级编排工具。使用它在单台 Linux 开发机器上测试网络协议和其他分布式执行程序,而无需使用 IoT 设备硬件。

它是什么?

Happy 模拟复杂的网络拓扑。在单台 Linux 机器上,Happy 可以创建多个具有相互独立的网络堆栈的节点。一些节点可能连接到模拟的 Thread 网络,其他节点可能连接到模拟的 Wi-Fi、WAN(互联网)或蜂窝网络。

Happy 解决了以下用例:

  • 在单台 Linux 开发机器上测试网络协议和其他分布式执行程序,无需使用硬件
  • 跨网络执行自动化功能测试
  • 在同一系统上运行多个并发、并行网络以提高测试吞吐量

Happy 通过以最少的用户开销创建网络拓扑抽象来解决这些问题。可以使用单个 shell 命令调用创建复杂的拓扑。 Happy 支持交互式使用和自动脚本。

在开发过程中使用 Happy shell 命令来设置、测试和调试他们的代码。然后可以编写相同的网络配置和测试程序,并将其用于自动化测试。

开始

开始使用 Happy 的最快和最简单的方法是通过 Codelab。它引导用户了解所有 Happy 基本原理,包括:

  • 创建和删除拓扑
  • 网络节点在一起
  • 保存和恢复拓扑
  • 将拓扑连接到 Internet
  • 编织基础

尝试使用 Happy Codelab 入门

请参阅安装使用上设置和使用快乐的更多信息。

建筑学

快乐模型如下:

  • 节点-作为Linux的网络命名空间。组成节点的进程在指定的网络命名空间内运行。
  • 链接-一个Linux网络接口。快乐使用veth网络设备来支持L3(IP)接口和tap网络设备来支持L2接口箱的出。
  • 网络- Linux的网络命名空间内与他们运行的以太网桥。

执行

Happy 是 Python 模块的集合。核心 Happy 模块提供以下抽象:

  • 管理节点抽象
    • 添加、修改和删除节点
    • 在节点内运行一组进程
  • 管理链接
    • 添加、修改和删除链接
    • 为节点和网络分配链接
    • 分配和修改地址分配
  • 管理网络
    • 创建、修改和销毁网络
    • 网络连接
  • 以一致的方式管理框架的整体状态

Happy 模块实现的大部分抽象都映射到调用 Linux 网络工具的命令中。

快乐还包含了一组中发现的插件/plugins 。插件封装了与特定技术相关的一组功能。例如, /plugins/weave包含助手,对于内执行的快乐包裹各种编织应用。

执行

用户可以通过两种方法构建模拟拓扑:

  • Shell命令-所有的命令都在/bin
  • Python 脚本 — 导入 Happy 模块以在您自己的 Python 脚本中调用 Happy 命令。模块是在/happy

对于一个在自己的Python脚本使用快乐模块的更多信息,请参阅Python脚本