14 个版本
0.2.2 | 2024年7月22日 |
---|---|
0.2.1 | 2024年7月22日 |
0.1.10 | 2024年2月21日 |
0.1.9 | 2024年1月31日 |
0.1.1 | 2023年11月23日 |
#1000 in 网络编程
1,482 每月下载量
用于 2 crates
155KB
620 行
atm0s-sdn: 全球规模超低延迟去中心化SDN
由SAN I/O驱动的开源去中心化网络基础设施,能够以最小延迟和高效的成本提供高质量数据,类似于Cloudflare为其网络实现的效果。
关于网络架构的技术细节,请参阅我们的 智能路由
项目状态:alpha
该项目目前处于开发alpha阶段。它正在积极开发中,可能会经历重大变化,包括API的变化。此阶段的主要重点是使项目稳定可靠。
我们正在与一些潜在合作伙伴合作,将网络集成到现实世界的场景中。如果您有兴趣测试网络,请随时联系我们或发送问题。
功能
- 通过完全分布式,无中央控制器实现高可用性。
- 支持多区域,高可扩展性。
- 基于指标的自适应路由:延迟、带宽
- 网络编排和发现(仅手动模式)。
- 通过使用网络服务实现高度可扩展性。
- 内置功能:PubSub,KeyValue ..
- 跨平台:Linux,MacOs。
内置功能
- 路由器同步:自动在节点之间同步路由表以实现智能路由
- Pubsub:发布/订阅
- DHT 多映射:键值存储
- 节点别名:每个节点可以有多个别名
- 虚拟套接字:充当虚拟UDP套接字
- 通过eBPF重定向实现网络加速器
- 身份验证和加密
内置服务
- 可视化:显示网络结构
- 手动发现:每个节点可以设置所有者标签和兴趣标签。每个节点将尝试连接到具有兴趣标签的其他节点。
架构
我们将逻辑分为两部分:功能和服务。
- 特性:是一种高级逻辑,可用于构建网络服务。例如,发布/订阅、键值、虚拟套接字等。
- 服务:是一种可扩展的逻辑,可用于构建自定义逻辑。每个服务都可以使用所有其他特性来构建自定义逻辑。
为了更好的测试和开发,我们将库分为两个部分。
- 网络协议:采用SANS-I/O风格实现。
- 运行器:用于与SANS-I/O运行时集成。
入门指南
项目包括一些示例和一个独立节点,可用于测试网络。
从源代码构建
cd bin
cargo build --release
将第一个种子节点作为网络结构收集器运行
cargo run -- --collector --local-tags demo --connect-tags demo --node-id 1 --udp-port 10001 --web-addr 0.0.0.0:3000
运行第二个节点并加入种子节点组成的网络(如果它在另一台设备上运行,则需要替换种子节点的IP地址)
cargo run -- --local-tags demo --connect-tags mode --seeds 1@/ip4/127.0.0.1/udp/10001 --node-id 2 --udp-port 10002
与此类似,我们可以运行更多节点并将它们连接到网络。请记住更改节点ID和端口号,以避免与其他节点冲突。
访问Web界面以查看网络结构: https://127.0.0.1:3000
您还可以通过添加--vpn
标志在每个节点中启用VPN功能。之后,每个节点都将分配一个私有IP规则:10.33.33.{node_id % 8}
。
基准测试
网络优化器
我们在亚洲、美国、欧洲运行了9个节点,通过Digital Ocean和越南的一些本地ISP测试了节点间的延迟。结果显示,与正常路由相比,网络可以将延迟提高最多48.5%。
最大优化
美国 | 欧洲 | 亚洲 | |
---|---|---|---|
美国 | 0 | ||
欧洲 | 3.40% | 0 | |
亚洲 | 48.5% | 28.30% | 47% |
平均优化
美国 | 欧洲 | 亚洲 | |
---|---|---|---|
美国 | 0 | ||
欧洲 | 0.40% | 0 | |
亚洲 | 11.6% | 9.50% | 3% |
我们将在未来进行更多测试,以获得更精确的结果,并与更多的云服务和本地ISP进行测试。
速度
在某些快速测试中,它显示网络节点可以每个核心中继大约1Gbps。我们将在未来进行更多测试以获得更精确的结果。
展示
贡献
该项目正在不断改进和更新。我们始终在寻找使其变得更好的方法,无论是通过优化性能、添加新功能还是修复错误。我们欢迎来自社区的贡献,并始终欢迎新的想法和建议。如果您对此感兴趣或认为它可能有所帮助,我们欢迎您对代码库的贡献,或者考虑收藏存储库以显示您的支持并激励我们的团队!
有关更多信息,您可以加入我们的Discord频道
路线图
第一个版本将与媒体服务器一起于2023年底发布。
有关我们的路线图详情,请参阅待定。
许可证
本项目的许可证为MIT许可证 - 有关详细信息,请参阅LICENSE文件。
致谢
我们感谢所有帮助使本项目成功的人。
依赖项
~11–40MB
~661K SLoC