Happy是用于轻量级编排模拟网络拓扑的工具。使用它可以在一台Linux开发计算机上测试网络协议和其他分布式执行程序,而无需使用IoT设备硬件。
它是什么?
Happy模拟复杂的网络拓扑。在单台Linux机器上,Happy可以创建具有彼此独立的网络堆栈的多个节点。一些节点可能连接到模拟线程网络,另一些节点可能连接到模拟Wi-Fi,WAN(互联网)或蜂窝网络。
快乐解决了以下用例:
- 在不使用硬件的情况下在一台Linux开发机器上测试网络协议和其他分布式执行程序
- 跨网络执行自动化功能测试
- 在同一系统上运行多个并行并行网络,以提高测试吞吐量
Happy通过以最少的用户开销创建网络拓扑抽象来解决这些问题。可以使用单个shell命令调用来创建复杂的拓扑。 Happy支持交互式使用和自动脚本编写。
在开发过程中,使用Happy shell命令设置,测试和调试其代码。然后,可以将相同的网络配置和测试程序编写为脚本并在自动测试中使用。
开始吧
使用Happy最快最简单的方法是遍历Codelab。它引导用户了解所有“快乐”基础知识,包括:
- 创建和删除拓扑
- 将节点联网
- 保存和还原拓扑
- 将拓扑连接到Internet
- 编织基础
建筑
快乐模型如下:
- 节点— Linux网络名称空间。组成节点的进程在指定的网络名称空间中运行。
- 链接— Linux网络接口。 Happy使用
veth
第veth
网络设备来支持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脚本。