跳转到主要内容

JSON解析Linux网络命名空间(netns)拓扑构建器。

项目描述

json2netns

JSON解析Linux网络命名空间(netns)拓扑构建器。

安装

从PyPI

  • pip install json2netns

从GitHub

  • pip install git+git://github.com/cooperlees/json2netns

概念

该脚本从JSON配置文件中驱动命名空间的创建。让我们看看以下简单的两个网络命名空间拓扑

json2netns sample topology

我们有两个命名空间,它们通过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 查看哈希值)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面