news 2026/5/2 5:10:13

AI辅助设计实战:基于eNSP的中小型校园网络毕业设计自动化方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI辅助设计实战:基于eNSP的中小型校园网络毕业设计自动化方案


AI辅助设计实战:基于eNSP的中小型校园网络毕业设计自动化方案


1. 手动在 eNSP 里搭校园网的“老毛病”

做毕业设计时,我先用传统方式在 eNSP 上画过三次拓扑,每次都被导师打回,总结下来痛点就这几条:

  1. IP 规划靠 Excel 手填,后期一扩容就冲突,排错全靠display ip routing-table人肉比对。
  2. ACL 写得又多又像,一条策略改 5 台设备,漏刷一次就把教务系统拦在门外。
  3. VLAN 与子网对应表写在 Word,设备一多,编号跳变、命名大小写不统一,调试时满屏“Error: VLAN does not exist”。
  4. 验收前临时加无线热点,手动改 AP 组策略,结果忘记把 DHCP Option 43 指向 AC,导致全网漫游失败,熬夜回滚配置。

这些重复劳动占掉 70% 时间,真正用于安全策略、冗余设计反而没空细想。


2. 传统方式 vs AI 辅助:效率与准确性对比

我记录了同一需求(500 信息点、3 栋教学楼、1 数据中心、出口双 ISP)两种做法的耗时:

环节纯手工AI 辅助
拓扑绘制4 h0.2 h(AI 生成 JSON 直接导入)
IP/VLAN 规划3 h0.1 h(LLM 自动切片)
设备配置6 h0.5 h(脚本批量下发)
初验排错5 h1 h(AI 提前做冲突检查)
总计18 h1.8 h

准确性方面,手工 ACL 因复制粘贴出现 7 条顺序错误;AI 方案利用“以需求为源”生成,配置一次性通过 eNSP 语法检查,零回退。


3. 提示工程:让大模型吐出合规 CLI

想让大模型一次就给出能直接刷进交换机/路由器的代码,我总结了三段式提示模板:

  1. 角色:你是一名拥有 HCIE 证书的网络工程师,只输出华为 VRP 8 兼容配置。
  2. 上下文:给出需求片段——“教学楼 A 有 120 用户,需隔离广播,可访问校内服务器,禁止访问财务网段 10.10.30.0/24”。
  3. 输出格式:严格按以下顺序,不含解释段落。
sysname SW_A vlan batch 10 30 interface Vlanif10 ip address 192.168.10.1 255.255.255.128 ...

把需求拆到最细(用户数、速率、互访关系),模型基本不会“自由发挥”。


4. Python 脚本:本地 LLM 驱动一键出拓扑 + 配置

下面给出最简可运行示例,依赖ollama本地跑qwen:7b,把需求 txt 丢进去,输出拓扑 JSON 与设备配置。

#!/usr/bin/env python3 # -*- coding utf-8 -*- """ campus_network_builder.py 0. 读取需求文档 requirement.txt 1. 调用本地 LLM 生成拓扑与配置 2. 输出 top.json & *.cfg """ import json, textwrap, subprocess, pathlib REQ_FILE = "requirement.txt" TOPO_FILE = "top.json" CFG_DIR = "configs" def read_req() -> str: return pathlib.Path(REQ_FILE).read_text(encoding="utf8") def call_llm(prompt: str) -> str: # 通过 ollama 运行本地模型 cmd = ["ollama", "run", "qwen:7b", prompt] return subprocess.check_output(cmd, text=True) def build_prompt(req: str) -> str: return textwrap.dedent(f"""\ 你是华为网络专家,请根据需求生成 eNSP 拓扑 JSON 与设备配置。 需求如下:{req} 输出格式: ===JSON=== {{拓扑 JSON 内容} ===END=== ===CFG=== 设备名1: ... ===END=== """) def parse_output(raw: str): _, json_part, cfg_part = raw.split("===JSON===")[1].split("===END===") topo = json.loads(json_part.strip()) cfgs = {} for block in cfg_part.strip().split("===END==="): if ":" in block: hostname, config = block.split(":", 1) cfgs[hostname.strip()] = config.strip() return topo, cfgs def save_files(topo, cfgs): pathlib.Path(CFG_DIR).mkdir(exist_ok=True) pathlib.Path(TOPO_FILE).write_text(json.dumps(topo, indent=2), encoding="utf8") for host, cfg in cfgs.items(): pathlib.Path(f"{CFG_DIR}/{host}.cfg").write_text(cfg, encoding="utf8") if __name__ == "__main__": req = read_req() prompt= build_prompt(req) raw = call_llm(prompt) topo, cfgs = parse_output(raw) save_files(topo, cfgs) print("生成完毕,请导入 top.json 到 eNSP,并加载 configs/*.cfg")

跑完后目录结构:

├── top.json # eNSP 可读拓扑 └── configs/ ├── SW_Core.cfg ├── SW_Access.cfg └── AR_E.cfg

5. 配置幂等、安全与 eNSP 加载验证

  1. 幂等:脚本在生成时给每条配置前加default恢复行,例如:

    default interface GigabitEthernet0/0/1 interface GigabitEthernet0/0/1 port link-type access port default vlan 10

    重复刷入不会累积垃圾命令。

  2. 安全:LLM 提示里强制写“禁用 telnet,仅启用 SSHv2,用户名 admin privilege 15 加密算法 aes256-ctr”。生成结果默认带:

    undo telnet server disable stelnet server enable ssh user admin authentication-type password cipher aes256
  3. eNSP 加载:
    a. 打开 eNSP → 文件 → 导入 → 选 top.json,拓扑一次到位。
    b. 右键设备 → 加载配置 → 选对应 *.cfg → 启动设备。
    c. 使用display current-configuration | include ssh核对安全策略;用ping -c 3 192.168.10.254测网关连通性。


6. 生产环境避坑指南

  • 子网冲突:AI 可能把“实验楼 200 台”直接算成 /24,却与现有服务器网段重叠。脚本里要加“已用网段池”预检,把冲突检测 prompt 再喂给模型。
  • 设备型号不匹配:大模型训练语料新旧混杂,会吐出 S5700 已停产命令。提前在提示里限定“仅使用 VRP 8.180 及以后版本,命令行需兼容 S5731”。
  • ACL 顺序幻觉:AI 偶尔把“deny ip 10.10.30.0 0.0.0.255”写在最后,导致被前面的 permit 覆盖。生成后跑一遍display acl 3000人工确认。
  • 默认路由遗漏:若需求里没显式写“访问互联网”,模型可能不生成默认路由,验收时外网不通。提示模板里加“必须包含一条默认路由指向 202.1.1.1”。

7. 效果展示

下图是我用上述脚本 30 秒生成的拓扑,在 eNSP 中直接打开,设备启动无报错,SSH 登录一次成功:


8. 小结与思考

把 AI 当“配置工人”,自己专注架构与安全,毕业设计效率肉眼可见地翻倍。但模型输出仍需要“人类守门员”做冲突检查与版本对齐。

思考题:如果要把这套流程并入 CI/CD,实现“网络即代码(NetDevOps)”,你会:

  1. 把 requirement.txt 放到 Git,PR 触发脚本生成拓扑与配置;
  2. 用 eNSP CLI 自动加载拓扑并跑 pytest 脚本做 ping/traceroute 验收;
  3. 验收通过后将 *.cfg 推送至真实设备(通过 Ansible/Netmiko)。

你觉得哪一步最容易踩坑?又该如何在流水线里回滚配置?欢迎留言交流。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:21:44

多屏效率重构:破解FancyZones的空间认知密码

多屏效率重构:破解FancyZones的空间认知密码 【免费下载链接】PowerToys Windows 系统实用工具,用于最大化生产力。 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys 在多任务处理成为职场标配的今天,高达68%的电脑用户仍…

作者头像 李华
网站建设 2026/5/1 11:14:42

Yi-Coder-1.5B开箱体验:用Ollama快速搭建私人编程助手

Yi-Coder-1.5B开箱体验:用Ollama快速搭建私人编程助手 有没有试过写到一半的函数突然卡壳,翻文档查语法却越查越乱?有没有被一段陌生的Shell脚本绕晕,想快速理清逻辑却找不到人问?有没有在深夜调试CI流水线时&#xf…

作者头像 李华
网站建设 2026/5/1 8:44:29

RexUniNLU行业落地:招聘JD中技能/学历/经验要求零样本抽取

RexUniNLU行业落地:招聘JD中技能/学历/经验要求零样本抽取 在HR日常工作中,每天要处理成百上千份招聘JD,手动提取其中的“Java开发”“5年经验”“本科及以上”等关键要求,不仅耗时费力,还容易遗漏或出错。传统方法要…

作者头像 李华
网站建设 2026/5/1 9:47:45

Total War MOD开发效率革命:RPFM从崩溃到精通的全流程指南

Total War MOD开发效率革命:RPFM从崩溃到精通的全流程指南 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt5 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https:/…

作者头像 李华
网站建设 2026/5/1 5:57:28

Windows 7系统Umi-OCR适配指南:老旧设备的文字识别解决方案

Windows 7系统Umi-OCR适配指南:老旧设备的文字识别解决方案 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com…

作者头像 李华