Batfish Dashboard 项目说明文档

Batfish Dashboard 项目说明文档

1. 项目概述

Batfish Dashboard 是一个基于 Python Dash 框架构建的 Web 应用程序,旨在为 Batfish 网络配置分析工具提供图形化用户界面 (GUI)。

Batfish 是一个开源的网络配置分析工具,它能够将网络设备的配置文件(如 Cisco, Juniper, Arista 等厂商的配置)解析为独立于厂商的模型,并进行离线的网络模拟和正确性验证。

本项目通过可视化的方式,降低了使用 Batfish 的门槛,让网络工程师无需编写 Python 脚本即可进行网络拓扑查看、流量路径模拟、ACL 验证以及故障演练。


2. 核心业务逻辑

本项目的核心逻辑遵循 "配置 -> 解析 -> 建模 -> 分析 -> 可视化" 的流程:

  1. 连接 Batfish 服务

    • 前端通过 Pybatfish 客户端连接到运行在 Docker 容器或远程服务器上的 Batfish 服务。
  2. 数据组织 (Network & Snapshot)

    • Network (网络):一个逻辑容器,通常代表一个特定的数据中心或网络环境。
    • Snapshot (快照):代表网络在某一时刻的状态。用户上传一组配置文件(路由器配置、防火墙规则、主机定义等),Batfish 解析这些文件并建立网络模型。
  3. 分析与查询

    • 一旦快照初始化完成,用户在界面上的操作(如点击"Trace"或切换标签页)会触发后端调用 Pybatfish API。
    • 后端向 Batfish 服务发送查询请求(Questions),例如询问"所有 BGP 会话的状态"或"从 A 到 B 的流量路径"。
  4. 结果渲染

    • Batfish 返回结构化的数据(通常是 Pandas DataFrame)。
    • Dash 应用将这些数据转换为前端组件:
      • Cytoscape 图表:用于展示网络拓扑。
      • 数据表格:用于展示详细的配置信息。
      • 交互式组件:用于展示 Traceroute 的逐跳细节。

3. 页面功能详解

3.1 顶部导航与设置

  • Set Batfish Host:配置 Batfish 后端服务的地址(默认为本地,但支持连接远程服务)。
  • Networks / Snapshots:快捷跳转到管理模态框。
  • Ask Question:打开通用查询窗口。

3.2 控制栏 (Control Bar)

位于页面顶部,用于选择当前工作的上下文:

  • Select Network:选择当前要分析的网络环境。
  • Select Snapshot:选择该网络下的具体配置快照(例如 "Initial_Config" 或 "Post_Change_Config")。
  • 创建/删除功能:支持创建新网络、上传配置文件包生成新快照、以及删除旧的数据。

3.3 核心功能标签页 (Main Tabs)

A. 拓扑视图 (Layer 3, OSPF, BGP)

这三个标签页提供了不同层面的网络可视化,使用 Cytoscape 库渲染:

  • Layer 3:展示基于 IP 地址和子网构建的三层连接图。
  • OSPF:展示 OSPF 邻居关系,帮助理解内部网关协议的路由域。
  • BGP :展示 BGP 对等体关系(IBGP/EBGP),通过父节点分组展示自治系统 (AS)。
    • 交互:支持拖拽节点、缩放视图、鼠标悬停查看节点/链路详情。
B. 路径追踪 (Trace Route)

这是项目的核心功能之一,用于模拟流量在网络中的转发路径。

  • 基本配置
    • Source (源):选择起始设备和接口。
    • Destination (目的):选择目的 IP 或目的接口。
  • 高级选项 (Advanced)
    • 支持设置源端口、目的端口、IP 协议(TCP/UDP/ICMP)、应用类型等,以测试防火墙规则或策略路由。
  • 双向追踪 (Bidirectional):同时模拟回程流量,检测非对称路由问题。
  • 混沌模式 (Chaos Mode)
    • 故障模拟:允许用户在不修改真实配置的情况下,模拟某个节点或接口宕机,观察路径是否会自动切换(验证高可用性)。
    • 配置变更模拟:允许用户临时修改某个设备的配置文本,重新计算路径,验证变更是否符合预期。
C. ACL 分析 (All Things ACL)

用于验证访问控制列表 (ACL) 的等价性,常用于 ACL 重构场景。

  • Original ACL:输入重构前的 ACL 配置。
  • Refactored ACL:输入重构后的 ACL 配置。
  • Analyze:系统会对比两个 ACL 对流量的过滤行为是否完全一致。如果存在差异(例如某个流量在旧 ACL 允许但在新 ACL 被拒绝),系统会列出具体的流量包示例。

3.4 通用问答 (Ask a Question)

位于导航栏的 "Ask Question" 按钮。

  • 提供了一个通用的查询接口,用户可以从下拉菜单中选择 Batfish 支持的任意问题(如 ipOwners, routes, definedStructures 等)。
  • 结果以可搜索、可排序的数据表格形式展示,方便用户进行特定的审计或资产盘点。

4. 技术栈

  • 前端/应用框架 : Dash (基于 Flask, Plotly.js, React.js)
  • UI 组件库: Dash Bootstrap Components (DBC), Dash Cytoscape (网络图)
  • 后端逻辑: Python, Pandas
  • 网络分析引擎 : Pybatfish (Python 客户端) -> Batfish Service (Java)
相关推荐
qq_12498707532 小时前
基于springboot健康养老APP的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·微信小程序·毕业设计
盒马盒马3 小时前
Rust:内部可变性 & 型变
开发语言·后端·rust
无限大63 小时前
为什么玩游戏需要独立显卡?——GPU与CPU的分工协作
后端·程序员
Moment3 小时前
小米不仅造车,还造模型?309B参数全开源,深度思考完胜DeepSeek 🐒🐒🐒
前端·人工智能·后端
马卡巴卡3 小时前
SpringBoot集成Spring Statemachine(状态机)实战教程
后端
酒酿萝卜皮3 小时前
Elastic Search 安装使用
后端
kkk_皮蛋3 小时前
信令是什么?为什么 WebRTC 需要信令?
后端·asp.net·webrtc
库库林_沙琪马4 小时前
5、Seata
分布式·后端