JSON解析Linux网络命名空间(netns)拓扑构建器。
项目描述
json2netns
JSON解析Linux网络命名空间(netns)拓扑构建器。
安装
从PyPI
pip install json2netns
从GitHub
pip install git+git://github.com/cooperlees/json2netns
概念
- 什么是Linux命名空间 - 即NetNS?
- 什么是JSON?
该脚本从JSON配置文件中驱动命名空间的创建。让我们看看以下简单的两个网络命名空间拓扑
我们有两个命名空间,它们通过veth有1个直接连接。它还有一个OOB(Out of Band)接口集,允许主Linux网络命名空间直接与netns通信。
- 默认情况下,它甚至可以通过物理接口进行桥接,以便将外部数据包路由到netns(如果需要从物理NIC进行路由)。
配置
上述拓扑由 sample.json 表示。此配置还用于unittest以确保正确运行。随着时间的推移,我们可以添加更多功能。
小型1 NS示例JSON配置
{
"namespaces": {
"left": {
"id": 1,
"interfaces": {
"left0": {
"prefixes": ["fd00::1/64", "10.1.1.1/24"],
"peer_name": "right0",
"type": "veth"
},
"lo": {
"prefixes": ["fd00:1::/64", "10.6.9.1/32"],
"type": "loopback"
}
},
"oob": false,
"routes": {
"route1": {
"dest_prefix" : "10.6.9.6/32",
"next_hop_ip" : "10.1.1.2",
"egress_if_name" : ""
},
"route2": {
"dest_prefix" : "fd00:6::/64",
"next_hop_ip" : "fd00::2",
"egress_if_name" : ""
}
}
}
},
"oob": {},
"physical_int": ""
}
用法
安装后,只需将 json2netns
指向有效的配置文件,并以root身份运行(未来我们可能会使其具有能力感知 - 欢迎提交PR!)。
- 用法:json2netns [-h] [-d] [--validate] [--workers 工作者数] 配置 动作
动作
- create:创建接口和命名空间 + 启用接口
- check:打印接口寻址 + v4/6 路由表到标准输出
- delete:删除命名空间和所有接口
开发
代码首先尝试面向对象。请尽量使用继承,并将所有新接口类型作为 Interface 等的子类添加到所有代码中。
开发 '可编辑' 安装
python3 -m venv [--upgrade-deps] /tmp/tj
/tmp/tj/bin/pip install -r requirements_test.txt
/tmp/tj/bin/pip install -e .
运行测试
为了测试,我们使用 ptr。
/tmp/tj/bin/ptr [-k] [--print-cov] [--debug]
-k
:保留 venv ptr 创建的--print-cov
:方便查看所有文件上的覆盖率--debug
:方便查看所有运行的命令,以便您可以手动运行步骤
项目详情
下载文件
下载您平台上的文件。如果您不确定要选择哪一个,请了解有关 安装包 的更多信息。
源分发
json2netns-2021.9.20.tar.gz (14.8 kB 查看哈希值)
构建分发
json2netns-2021.9.20-py3-none-any.whl (17.4 kB 查看哈希值)
关闭
json2netns-2021.9.20.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 011e4081ff4ff9c008bbafcafe234812a96c3bf18e8896ae4bac14a78831af9b |
|
MD5 | fd43723a4bc8b752e200b46b5fde0513 |
|
BLAKE2b-256 | 5548784c7ffe67849d8c8f37bc94a084e3bc4450f0ff5082b40f9ad89182e7bf |
关闭
json2netns-2021.9.20-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9b3ee2488e721877ba770d47c7700d65f90dbcd40b683a9504a354bcd661fd00 |
|
MD5 | ea1db5e4d10e1c1b2ff663d3ea092c70 |
|
BLAKE2b-256 | 766aab70f5d0554938c2dcae4bbce43997bcb5a0a31d169902e14088bcf901ab |