Google 致力于为黑人社区推动种族平等。查看具体举措
此页面由 Cloud Translation API 翻译。
Switch to English

快乐

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

它是什么?

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

快乐解决了以下用例:

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

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

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

开始吧

使用Happy最快最简单的方法是遍历Codelab。它引导用户了解所有“快乐”基础知识,包括:

  • 创建和删除拓扑
  • 将节点联网
  • 保存和还原拓扑
  • 将拓扑连接到Internet
  • 编织基础

尝试Happy Codelab入门

有关设置和使用Happy的更多信息,请参见“ 设置用法 ”。

建筑

快乐模型如下:

  • 节点 — Linux网络名称空间。组成节点的进程在指定的网络名称空间中运行。
  • 链接 — Linux网络接口。 Happy使用vethveth网络设备来支持L3(IP)接口,而使用tap网络设备来支持L2接口。
  • 网络 -在其中运行以太网桥的Linux网络名称空间。

实作

快乐是Python模块的集合。核心快乐模块提供以下方面的抽象:

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

Happy模块实现的大多数抽象都映射为调用Linux网络工具的命令。

Happy还包含在/plugins找到的一组/plugins 。插件包装了与特定技术相关的一组功能。例如, /plugins/weave包含用于包装各种Weave应用程序以在Happy中执行的助手。

执行

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

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

有关在您自己的Python脚本中使用Happy模块的更多信息,请参见Python脚本