Happy 是一個用於模擬網絡拓撲的輕量級編排工具。使用它在單台 Linux 開發機器上測試網絡協議和其他分佈式執行程序,而無需使用 IoT 設備硬件。
它是什麼?
Happy 模擬複雜的網絡拓撲。在單台 Linux 機器上,Happy 可以創建多個具有相互獨立的網絡堆棧的節點。一些節點可能連接到模擬的 Thread 網絡,其他節點可能連接到模擬的 Wi-Fi、WAN(互聯網)或蜂窩網絡。
Happy 解決了以下用例:
- 在不使用硬件的情況下在單台 Linux 開發機器上測試網絡協議和其他分佈式執行程序
- 跨網絡執行自動化功能測試
- 在同一系統上運行多個並發、並行網絡以提高測試吞吐量
Happy 通過以最少的用戶開銷創建網絡拓撲抽象來解決這些問題。可以使用單個 shell 命令調用創建複雜的拓撲。 Happy 支持交互式使用和自動腳本。
在開發過程中使用 Happy shell 命令來設置、測試和調試他們的代碼。然後可以編寫相同的網絡配置和測試程序,並將其用於自動化測試。
開始
開始使用 Happy 的最快和最簡單的方法是通過 Codelab。它引導用戶了解所有 Happy 基本原理,包括:
- 創建和刪除拓撲
- 網絡節點在一起
- 保存和恢復拓撲
- 將拓撲連接到 Internet
- 編織基礎
建築學
快樂模型如下:
- 節點-作為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腳本。