网络拓扑图生成器
用途
根据用户的一句话需求,自动生成专业、可直接交付的网络拓扑图,并导出多种格式。
触发时机
当用户出现以下任一意图时触发:
- 要求“画网络拓扑图”、“画拓扑图”、“生成网络架构图”
- 提供行业/场景并需要网络/安全拓扑(如“金融数据中心拓扑”、“医院三网拓扑”)
- 明确要求按 华为分区分域(安全域) 标准画图(如“按华为标准画分区分域拓扑”)
- 需要导出为 PNG、Visio(vsdx)、draw.io 等格式
- 提到“售前方案图”、“销售拓扑图”、“客户汇报拓扑”
前置信息收集
在生成拓扑前,按以下顺序确认关键信息。若用户已一次性给出,则跳过询问步骤。
- 绘图标准:
- 默认分层示意图:经典 5 层(外部/边界/核心/业务/接入),适合快速草图。
- 华为分区分域(安全域):按不可信区→边界防护区→DMZ→内部办公区→业务应用区→核心数据区→安全管理区/运维管理区绘制,符合等保 2.0 纵深防御与华为网络安全方法论。
- 写实图标风格:校园网/园区网交付图样式,节点用云、NGAF、AC、交换机、服务器机柜、楼宇、AP、PC 等写实图标呈现。设置"style": "realistic"启用。 - 行业 / 场景:金融、政务、医疗、教育、制造/工控、零售连锁、中小企业、通用。
- 客户类型 / 受众:
- 销售:突出安全域与业务价值,弱化型号。
- 售前:完整技术架构,含典型设备与带宽。
- 客户 / 实施:贴合甲方环境,可含具体型号/管理面。
- 管理层:宏观分区、合并同类设备。 - 关键需求:
- 是否有 DMZ / 等保分区 / 工控网 / 多校区 / 多门店
- 需要哪些核心设备(防火墙、WAF、核心交换、数据库、AP、摄像头等)
- 是否有分支机构 / 公有云 / 双活数据中心
- 对导出格式的偏好(PNG、Visio、draw.io、SVG 等)
工作流程
步骤 1:选择模板并生成拓扑描述 JSON
根据确认的行业和客户类型,从 references/industry_templates.md 中选择最接近的骨架,并结合用户需求增删节点、区域、链路。
若用户选择 华为分区分域(安全域) 标准,则优先使用 references/huawei_baseline.json 作为骨架:
- 保留 8 个标准安全域(外部网络区、边界防护区、对外服务区 DMZ、内部办公区、业务应用区、核心数据区、安全管理区、运维管理区)。
- 在 JSON 中设置
"standard": "huawei"。 - 区域的
trust字段决定配色:untrust / boundary / half / internal / core / mgmt。 - 跨域链路必须经边界安全设备,使用
sec字段标注设备(默认FW)。 - 管理/审计链路使用
"kind": "mgmt"渲染为灰色虚线。
生成的 JSON 必须符合 references/schema.md 的规范。设备类型必须使用 references/device_catalog.md 中的关键字,以保证图标、缩写、颜色、层级正确。
示例 JSON 见 references/sample_spec.json 与 references/huawei_baseline.json。
步骤 2:保存 JSON 并调用渲染脚本
- 在当前工作空间创建输出目录:
outputs/network-topology/。 - 将拓扑描述 JSON 保存到
outputs/network-topology/topo_spec.json。 - 调用渲染脚本:
python scripts/topo_render.py --spec outputs/network-topology/topo_spec.json --outdir outputs/network-topology --name <文件前缀> --formats svg,png,vsdx,drawio,html
脚本依赖:PNG 导出需要 Pillow(pip install pillow)。SVG、VSDX、draw.io 为零依赖。
步骤 3:预览并交付
- 使用
show_widget展示生成的 SVG 作为内联预览。 - 使用
present_files将outputs/network-topology/目录下的导出文件交付给用户。 - 告知用户:
-.svg:矢量图,可直接插入 PPT、Word,也可用 Visio 打开/编辑。
-.vsdx:原生 Visio 文件,可直接双击编辑。
-.drawio:draw.io / diagrams.net 可编辑源文件。
-.png:位图,适合插入汇报材料。
-.html:浏览器可直接打开的带标题预览页。
节点/链路设计原则
- 外部网络放最左列(tier 0)。
- 边界安全设备(防火墙、VPN、SASE、路由器)放第 1 列(tier 1)。
- 核心交换、安全检测(IPS、WAF、LB)放第 2 列(tier 2)。
- 业务/数据库/存储放第 3 列(tier 3)。
- 接入层与终端放第 4 列(tier 4)。
- 链路标签优先标注带宽(如“10G 聚合”、“千兆”)。
- 相同业务/安全域的节点放入同一
zone,自动绘制背景框。
华为分区分域渲染说明
- 设置
"standard": "huawei"后,渲染引擎将安全域绘制成 带标题条与信任色条的圆角矩形,而非半透明背景框。 - 节点在区域内单列(或多列,通过
zone.cols指定)自动堆叠。 - 区域几何可自动计算:不填写
x/y/w/h时,渲染器会按安全域顺序自动横向网格布局;需要精确排版时仍可显式指定。 - 支持节点内嵌在 zones 中:可将设备直接写在
zones[].nodes里,渲染器会自动补zone字段。 - 跨域链路会在 安全域边界 绘制带颜色编码的连线与防护设备标签。
- 画布底部自动生成 信任等级图例(不可信 / 边界防护 / 半可信 / 内部网络 / 核心数据 / 安全管理)。
参考资料
references/schema.md:拓扑描述 JSON 完整规范。references/device_catalog.md:设备类型、缩写、颜色与层级速查。references/industry_templates.md:金融、政务、医疗、教育、制造、零售、中小企业等行业骨架。references/huawei_zoning.md:华为分区分域(安全域)方法论与实现说明。references/huawei_baseline.json:华为分区分域标准拓扑模板。references/customer_types.md:销售/售前/客户/管理层适配指南。references/sample_spec.json:可直接参考的金融行业示例。scripts/topo_render.py:渲染与多格式导出引擎。