网络自动化实验室

giorria是一个完全可重现的网络自动化实验室,结合了Arista cEOS拓扑和基于AI的操作平台,支持自然语言网络操作工具构建。

  • by ryaneoin
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ryaneoin/giorria

使用说明

乔里亚

添加 (爱尔兰语: 野兔)是一个完全可复制的网络自动化实验室,将全Arista cEOS拓扑与基于 模型上下文协议(MCP).

该实验室演示了如何在开源基础设施之上构建自然语言网络操作工具——离线配置分析、实时遥测、结构化审计跟踪和AAA会计——连接在一起,以便语言模型可以回答以下问题 “哪些BGP会话未建立?” 或 “显示自上次有意义的更改以来的配置差异” 使用真实的网络数据。


里面是什么

组件 技术 目的
网络实验室 Containerlab+Arista cEOS 4.35.1F 6节点骨干叶结构,两个AS,结构间对等
离线分析 蝙蝠鱼 +pybatfish 配置验证、BGP拓扑、可达性、路由表
事实存储 PostgreSQL 由摄取管道填充的标准化网络状态
配置备份 氧化 轮询所有设备,触发Batfish管道更改
对象存储 MinIO 快照存档(ZIP)
遥测 gNMIc+Prometheus OpenConfig接口计数器,系统状态
日志记录 Grafana Loki 结构化管道审计跟踪,TACACS+会计
仪表板 Grafana 预配置数据源(普罗米修斯+洛基)
AAA TACACS+ 所有6台设备的身份验证和命令计费
MCP服务器 FastMCP(Python) LLM可访问的所有上述工具

拓扑学

Fabric A  (AS 65100 / 65101 / 65102)         Fabric B  (AS 65200 / 65201 / 65202)

arista-spine1  172.100.100.2                  arista-spine2  172.100.100.3
  Eth1 10.1.1.0/31                              Eth1 10.2.0.0/31
  Eth2 10.1.2.0/31                              Eth2 10.2.0.2/31
  Eth3 10.99.0.0/31 --- inter-fabric ---------  Eth3 10.99.0.1/31
       |                                               |
  +---------+                                +---------+---------+
  |         |                                |                   |
arista-   arista-                        arista-leaf3       arista-leaf4
leaf1     leaf2                          (AS 65201)         (AS 65202)
(65101)   (65102)

管理网络: 172.100.100.0/24 (由Containerlab创建为 clab-mgmt)


快速开始

1.先决条件

2.导入cEOS图像

docker import cEOS-lab-4.35.1F.tar.xz ceos:4.35.1F

3.配置环境变量

python3 configure.py

该脚本要求提供实验室密码和TACACS+共享密钥(或生成 两者都为你),然后写所有 .env 文件和补丁设备启动 配置、氧化凭据和所选gNMIc凭据 密码。

重要提示: 运行这个 之前 部署实验室——它修补了 设备启动配置Containerlab绑定装载到每个容器中。

4.部署网络实验室

cd lab/
sudo containerlab deploy -t topology.yml --reconfigure
cd ..

这 --reconfigure flag强制cEOS容器重新应用其启动 从已安装的绑定配置 .cfg 文件夹。没有它,容器 重用以前部署中保存在flash中的任何内容,以及 配置更改将被自动忽略。

这将创建 clab-mgmt 所有服务都连接到的Docker网络。

5.启动堆栈

docker compose \
  --profile core \
  --profile observability \
  --profile oxidized \
  --profile tacacs \
  up -d

6.运行MCP服务器

cd network-mcp/
# Install with uv (recommended)
uv sync
uv run network-mcp

# Or with pip
pip install -e .
network-mcp

服务器正在监听 http://localhost:8080/mcp (流式HTTP传输)。 将Claude Desktop或任何兼容MCP的客户端指向该URL。


服务端口

服务 端口 注释
MCP服务器 8080 可流式HTTP-- http://localhost:8080/mcp
pgadmin 8006 PostgreSQL浏览器
MinIO控制台 8005 对象存储UI
MinIO S3 API 8004
氧化 8888 Web UI+REST API
Grafana 3000 仪表板
普罗米修斯 9090 指标
洛基 3100 日志聚合
蝙蝠鱼 9996 配置分析API
PostgreSQL 5432 事实存储
TACACS+ 49/TCP AAA

撰写个人资料

简介 服务
core Batfish、PostgreSQL、pgAdmin、MinIO、摄取管道
observability 洛基、普罗米修斯、gNMIc、格拉法纳
oxidized 氧化配置备份守护进程
tacacs TACACS+服务器+Promtail日志托运人

管道是如何工作的

Arista device config changes
         |
         v
    Oxidized polls & stores in git
         |  post_store hook
         v
  export-to-batfish.sh
  writes .cfg to shared volume
         |  HTTP POST
         v
    ingest (FastAPI)
    +-- archives configs
    +-- runs Batfish analysis
    +-- writes facts to PostgreSQL
    +-- uploads snapshot ZIP to MinIO
         |  structured events
         v
       Loki (audit trail)

MCP服务器首先查询PostgreSQL(无设备联系),仅在需要实时状态时升级为实时eAPI调用。


MCP工具类别

前缀 来源 使用时
netlab_* PostgreSQL事实存储 库存、接口、BGP、路由——先使用
arista_* 实时eAPI 实时计数器、运行配置、任意显示命令
batfish_* Batfish 可达性、配置验证、离线拓扑分析
loki_* Loki 管道审计跟踪、故障分析、每个节点的历史记录
prometheus_* Prometheus gNMI接口计数器,系统遥测
tacacs_* Loki(TACACS流) AAA审计——谁登录了,运行了什么命令

存储库布局

giorria/
+-- compose.yml              # All services, profile-gated
+-- configure.py             # One-shot setup: generates .env files, patches configs
+-- .env.example             # Root environment template
+-- lab/                     # Containerlab topology + device configs
+-- ingest/                  # FastAPI pipeline orchestrator + Dockerfile
+-- oxidized/                # Oxidized config.example, router.db, hook scripts
+-- collector/               # Prometheus, Loki, gNMIc, Grafana configs
|   +-- gnmic.example.yml    # gNMIc template (configure.py generates gnmic.yml)
+-- tacacs/                  # TACACS+ server (Python RFC 8907 implementation)
+-- network-mcp/             # MCP server (FastMCP, Python, pyproject.toml)
    +-- src/network_mcp/
        +-- server.py        # Tool definitions
        +-- config.py        # Environment-driven configuration
        +-- arista_tools.py  # Live eAPI queries
        +-- batfish_tools.py # Offline config analysis
        +-- postgres_tools.py# Fact store queries
        +-- loki_tools.py    # Audit trail queries
        +-- prometheus_tools.py # gNMI telemetry
        +-- tacacs_tools.py  # AAA audit queries

文档

指南 说明
智能体指令 MCP客户端推荐的系统提示——工具优先级和故障排除工作流程
Grafana查询参考 Grafana Explore的Loki和Prometheus查询示例

许可证

麻省理工学院——见 许可证.