使用说明
乔里亚
添加 (爱尔兰语: 野兔)是一个完全可复制的网络自动化实验室,将全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.先决条件
- Docker+Docker组合
- 集装箱实验室
- Arista cEOS 4.35.1F图像(请参见 lab/README.md 如何获得它)
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 ..
这
--reconfigureflag强制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查询示例 |
许可证
麻省理工学院——见 许可证.
