以ZAM技术为例,首先要在运维端搭建统一的DHCP服务器和TFTP服务器(可以是同一台服务器),基于架构标准化设计和项目信息提前生成每台设备的完整配置文件以及版本文件,同时这些文件的文件名需要与设备的SN关联起来,确保每个配置文件可以对应唯一一台具体的物理设备。
图2 零配置上线方案架构
交换机加电起机后会主动发起DHCP请求,通过Option拿到TFTP服务器的地址以及脚本名称。通过TFTP的方式下载到脚本文件后,解析并执行。然后自动进行版本的升级以及配置文件的加载,重启后完成设备开局。主要流程如下:
图3 零配置上线流程
细节可以分拆成几个阶段来理解:
1. DHCP&TFTP获取阶段
1) 设备加电后,首先判断自身是否存在配置文件,如果不存在则进入ZAM模式;如果存在则正常加载现有配置文件启动;
2) 进入ZAM模式后,会先尝试从MGMT口上发起DHCP请求,无应答后会从业务口上广播该请求报文。DHCP Server在回应报文中通过Option66(或者150)、67选项,将TFTP Server的IP以及Python脚本名称同步给设备;
图4 典型的DHCP配置
3) 交换机设备(需要支持Python的运行环境)进行Python脚本的下载。
2. 自动化执行阶段
1) 初始化: 首先要进行初始化,与此同时要清空之前运行过的本地文件,目的是为了避免那些通过错误逻辑模块到达该处时文件错乱的情况,因此需要执行初始化操作;
2) 上传SN: 初始化完成后需要上传设备自身的SN到指定的目录下,目的是提示TFTP Server该设备已经开始启动。即上传 [sn]. ZAM到 /ZAM_STARTUP/, 若上传失败则写"0"到/etc/zam.txt (通告zam执行失败),退出;
3) 配置参数文件下载: 上传SN之后,会基于SN去下载对应的配置参数文件(.PARAM格式),下载路径在代码中已经写好,若下载失败则跳到错误处理;
4) 配置参数文件解析: 下载成功后解析该文件,判断是否需要升级版本,若解析失败则跳到错误处理;
5) 配置文件下载: 通常情况下,脚本中会默认写好配置文件的下载路径,设备会基于SN到该路径下载配置文件 [sn].CFG, 若下载失败跳到错误处理;
6) 版本文件下载: 如果配置参数文件中存在bin文件的标识,则到指定的路径去进行bin文件的下载,若下载失败则跳到错误处理;
7) 版本文件升级: 如果存在bin的文件,则进行升级bin文件,若升级失败则跳到错误处理;
8) 配置文件重命名: 执行代码做配置文件的重命名,更改成config.txt的格式后重启(不同厂家配置文件命名不同,这里以锐捷为例);