以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的格式后重啟(不同廠家配置文件命名不同,這里以銳捷為例);