Cisco 350-401: 自動化、可程式化與 APIs — 學習指南
屬於 Cisco CCNP Enterprise 350-401 ENCOR — 學習指南. 使用經過驗證的解答練習: Cisco 考試中心, 或參加限時模擬考試: ExamRoll.io.
總覽
企業網路正在從逐一設備的配置,轉向以控制器為基礎、意圖驅動 (intent-driven) 且具備閉環自動化 (closed-loop automation) 的維運模式。可程式化 (Programmability) 透過 API 和資料模型來揭露網路狀態與控制權,而 Python、Ansible 和 Git 等工具則實現了可重複、可測試的工作流程。其目標是以宣告式 (declaratively) 的方式表達預期成果,讓控制器將意圖轉譯為策略和配置,透過遙測 (telemetry) 和保證 (assurance) 來衡量結果,並在人為批准下或自動修復偏差。要達成此目標,需要了解控制器的角色、API 與協定 (REST、NETCONF/RESTCONF with YANG)、資料格式 (JSON、XML、YAML)、自動化平台 (Cisco DNA Center),以及維運紀律 (冪等性 idempotency、版本控制、測試、風險管理與回滾 rollback)。
控制器、意圖與閉環維運
- 以控制器為基礎的網路與其角色:
- Cisco SD-WAN 分離了各個平面:vManage 提供單一的管理平面;vSmart 管理控制平面並分發策略,以引導整個 fabric 的資料轉送;vBond 協調新設備的啟用 (onboarding),並可作為 STUN 伺服器以穿越 NAT。SD‑WAN 邊緣路由器使用 OMP 作為控制平面協定與 vSmart 通訊。
- Cisco SD‑Access 建立了一個 overlay 網路,提供邏輯上的 Layer 2 和 Layer 3 分離。fabric 控制平面節點維護一個全域的端點對位置 (endpoint-to-location) 資料庫,而 fabric 邊界節點則將 fabric 連接到外部網路。在無線環境中,無線資源管理 (Radio Resource Management) 運行在無線控制器上。
- 意圖 (Intent) 與宣告式配置:
- 意圖描述的是預期成果,而非如何在每台設備上實作。宣告式系統 (例如,「在各處隔離訪客,僅提供網際網路存取」) 允許控制器將策略編譯成特定於設備的配置。
- 權衡取捨:宣告式模型簡化了維運並減少了配置飄移 (drift),但可能會隱藏實作細節。維運人員需要透明的工具來進行差異比較/預覽 (diff/preview) 和回滾,以維持信任。
- 閉環維運 (Closed-loop operations):
- 衡量 (Measure):透過串流遙測 (streaming telemetry) 和控制器保證 (assurance) 收集狀態。
- 分析 (Analyze):偵測與意圖的偏差 (例如,分段違規、SLA 下降)。
- 行動 (Act):透過策略更新、配置變更或流量工程 (traffic engineering) 進行修復。
- 故障模式:事件風暴 (Event storms) 或充滿雜訊的遙測可能觸發誤報;修復循環可能產生振盪。防護機制 (Guardrails),如速率限制 (rate limits)、遲滯現象 (hysteresis)、人為介入批准,以及穩健的關聯性分析,可以防止系統崩潰 (thrashing)。
API、資料模型與協定
- REST API:
- 方法 (Methods):GET (讀取)、POST (建立/執行動作)、PUT (取代)、PATCH (部分更新)、DELETE (移除)、HEAD/OPTIONS (元資料)。
- 狀態碼 (Status codes):2xx 成功 (200 OK、201 Created)、3xx 重新導向、4xx 客戶端錯誤 (400 不良輸入、401 未授權、403 禁止、404 找不到、409 衝突、429 速率限制)、5xx 伺服器錯誤 (500、503)。
- 驗證 (Authentication):基本驗證 (透過 TLS)、權杖/持有者 (token/bearer) 機制,以及 OAuth 2.0。務必使用 TLS;避免將憑證嵌入 URI 中。處理權杖的更新與過期。
- 速率限制 (Rate limits):伺服器可能會用 429 狀態碼和 Retry-After 標頭來進行節流。在客戶端實作指數退避 (exponential backoff)、抖動 (jitter) 和請求預算追蹤。
- 資料格式與驗證:
- JSON 在 REST 中很常見;XML 在 NETCONF 中仍然普遍;YAML 用於人為編寫的檔案 (例如 inventory、playbook、變數集)。必要時在內部將 YAML 轉換為 JSON。
- 綱要驗證 (Schema validation):對 JSON 負載使用 JSON Schema;對 XML 使用 XML Schema;對基於模型的管理使用 YANG (定義類型、約束、must/when 陳述式)。在傳送前於客戶端進行驗證,以提早發現錯誤。
- NETCONF、RESTCONF、YANG、RPC 與資料儲存庫 (datastores):
- YANG 模型定義了用於配置和狀態的資料結構與操作。
- NETCONF 透過 SSH 使用 XML,其操作如
、 、 、 、 、 。資料儲存庫通常包括 running 和 candidate;candidate 儲存庫能以原子性 (atomicity) 實現「準備並提交」(prepare-and-commit) 的操作。 - RESTCONF 將 YANG 建模的資源對應到一個基於 HTTP(S) 的 RESTful 介面,使用 JSON 或 XML 搭配標準化的媒體類型 (media types)。其方法對應到 NETCONF 的語意 (例如用 PATCH/PUT 進行編輯)。
- 故障模式與設計:
- 鎖定競爭 (Lock contention):協調
操作以避免死鎖 (deadlocks);使用窄範圍和超時設定。 - 部分失敗:對於交易式變更,優先使用 candidate 資料儲存庫 +
。如果只有 running 可用,則使用結構化的變更群組和檢查點 (checkpoints)。 - 模型飄移 (Model drift):設備可能支援不同版本的 YANG 模組;在 CI 過程中應協商能力 (negotiate capabilities) 並進行測試。
- 鎖定競爭 (Lock contention):協調
- 簡潔範例:
- RESTCONF 部分更新 (HTTP 交換): PATCH /restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet1 Content-Type: application/yang-data+json { “ietf-interfaces:interface”: { “name”: “GigabitEthernet1”, “description”: “Uplink”, “enabled”: true } }
- 使用 Python 的 NETCONF (ncclient):
from ncclient import manager
cfg = """
""" with manager.connect(host=“r1”, port=830, username=“netops”, password="***", hostkey_verify=False) as m: m.edit_config(target=“candidate”, config=cfg) m.commit()GigabitEthernet1 Uplink true
工具與工作流程:Python、Ansible、Git 與 Pipeline
- Cisco DNA Center 自動化:
- 北向 REST API 提供資產清單、範本、配置 (provisioning) 與 assurance 的存取。南向介面則透過 CLI、SNMP、NETCONF/RESTCONF 將控制器連接到設備,以實現意圖 (intent)。
- 探索 (Discovery) 工作流程可使用 CDP、LLDP 與 IP 範圍。採用角色型存取控制 (RBAC)、基於專案的範本,以及每個站點 (per-site) 的變數。Assurance 功能會將遙測 (telemetry) 資料關聯分析成問題、健康分數與建議的修復措施——這些是閉環自動化 (closed-loop automation) 的關鍵輸入。
- Python 網路自動化基礎:
- 核心語言:型別、函式、模組、虛擬環境與日誌記錄 (logging)。
- 函式庫:requests/httpx (用於 REST)、ncclient (用於 NETCONF)、jinja2 (用於範本)、pyyaml、json、pandas (用於資料整理)、rich/logging (用於可觀測性)。
- 實務作法:輸入驗證、具備退避 (backoff) 機制的重試、結構化例外處理、超時機制與單元測試。將商業邏輯與 I/O 操作分離 (Serialize),以簡化測試。
- Ansible:
- Inventory 定義主機與群組;將 host_vars/group_vars 保存在 YAML 檔案中。
- Playbook 用於宣告期望狀態;ios_config、ios_facts、iosxe_config、restconf_config 與 uri 等模組則執行具體操作。使用 roles 來封裝可重複使用的邏輯。
- 冪等性 (Idempotency):模組確保重複執行時,結果會收斂一致,而不會產生非預期的變更。使用 check_mode 與 diff 模式來預覽變更;並透過 notify 觸發 handlers,僅在發生變更時才儲存設定。
- 範例:
- hosts: edge
connection: network_cli
gather_facts: no
tasks:
- ios_config: parents: interface GigabitEthernet1 lines: - description Uplink notify: save handlers:
- name: save ios_config: save_when: changed
- hosts: edge
connection: network_cli
gather_facts: no
tasks:
- 變更控制:使用維護視窗、序列化 (serial) 或批次 (batched) 的執行策略,以及每個站點的流量節流 (throttling) 來限制爆炸半徑 (blast radius)。自動化擷取變更前/後的檢查結果。
- Git、版本控制、測試與 Pipeline:
- 將網路意圖 (YAML 變數、Jinja 範本、Playbook)、生成的設定檔與測試儲存在 Git 中。使用分支 (branches)、合併請求 (pull requests) 與程式碼審查 (code review)。語意化的提交 (Semantic commits) 與標籤 (tags) 能讓版本與部署保持一致。
- 測試:對 YAML 與 Playbook 進行 Linting (語法檢查)、驗證 YANG/JSON schema、執行單元測試與 Ansible Molecule 情境測試。在 CI 中整合綜合性預檢 (synthetic prechecks),例如連線能力測試。
- Pipeline 流程:開發 (Dev) → 預備環境/實驗室 (staging/lab) → 生產環境金絲雀部署 (canary) → 分階段推出 (phased rollout)。閘門 (Gates) 包含靜態分析、針對模擬器進行試運行 (dry-run)、審核批准,以及當健康狀況下降時自動回滾。
遙測、事件驅動的自動化與風險管理
- 遙測串流 (Telemetry streaming):
- 模型驅動遙測 (Model-driven telemetry) (IOS XE, NX-OS) 透過 gRPC/gNMI 或 NETCONF,以定義的間隔發布 YANG 模型化的狀態,並支援撥入式 (dial-in) 或撥出式 (dial-out) 訂閱。其優點包括低延遲和結構化資料,效能優於定期的 CLI 抓取或 SNMP 輪詢。
- 範例 (IOS XE, 簡潔版):
undefined
- 設計訣竅:讓取樣頻率與使用情境對齊;確保訊息匯流排 (message bus) 的容量;設計降採樣 (downsampling)/彙總 (aggregation) 的管線;透過緩衝 (buffering) 和確認 (acknowledgments) 來防止遙測資料遺失。
- 事件驅動的自動化 (Event-driven automation):
- 根據 webhooks、syslog、SNMP traps、DNA Center 事件或 Kafka 主題來觸發動作。使用關聯性分析和速率限制 (rate limiting) 來避免風暴引起的狀態抖動 (flaps)。維護冪等 (idempotent) 的處理程式,使其可以安全地重複執行。
- 閉環式 (Closed-loop):控制器偵測到策略違規,透過次要訊號進行驗證,開啟變更工單或觸發有限的修復動作,然後重新測量並完成程序。
- 風險管理、還原 (rollback) 與憑證:
- 防護機制 (Guardrails):分階段推出、並行限制、爆炸半徑 (blast-radius) 控制、對 429/5xx 回應進行動態退避 (backoff),以及逾時。在可用時使用交易 (transaction) (NETCONF candidate + commit),或使用設備檢查點 (checkpoint) 和
configure replace。 - 還原 (Rollback):維護黃金設定檔 (golden configs)、差異檔 (diffs) 和每個設備的檢查點。在支援的情況下,優先使用 commit-confirmed 語意;否則,使用計時器和可達性檢查來實作自動化備援 (fallback)。
- 憑證保護:強制執行 RBAC、短期權杖 (short-lived tokens) 和每個任務的即時 (just-in-time) 機密。使用機密儲存庫 (secret stores) (例如 Ansible Vault 或外部 vault),絕不將機密嵌入 playbooks 或 Git 中。按時程和人員異動後輪替憑證。保護控制器到設備的憑證並稽核存取。
- 防護機制 (Guardrails):分階段推出、並行限制、爆炸半徑 (blast-radius) 控制、對 429/5xx 回應進行動態退避 (backoff),以及逾時。在可用時使用交易 (transaction) (NETCONF candidate + commit),或使用設備檢查點 (checkpoint) 和
實際問題情境
Aurelius Logistics 公司計劃標準化園區和分支機構的設定,強制執行一致的網路分段,並使用 Cisco DNA Center 實作閉環式保證 (closed-loop assurance),同時透過 Ansible 和 Git 實現安全的變更。
- 建立基準線並探索網路
- 原理說明:DNA Center 使用 IP 範圍加上 CDP/LLDP 來探索,以枚舉設備和拓撲,建立權威的資產清單。這使得能夠按站點進行意圖範圍界定和變數繼承。收集 assurance 資料可以建立變更前的健康基準線,用於比較和觸發還原。
- 在 DNA Center 中建立意圖和範本模型
- 原理說明:以宣告方式表達網路分段 (例如,員工、物聯網、訪客) 和 QoS 策略。為介面、路由和 ACLs 使用帶有站點變數的參數化範本。宣告式策略允許控制器編譯特定於設備的設定,從而減少人為錯誤和設定漂移 (drift)。
- 實作由 Git 驅動的設定管理
- 原理說明:將範本、站點變數 (YAML) 和驗證測試儲存在 Git 中。功能分支 (Feature branches) 和拉取請求 (pull requests) 強制執行同儕審查。標籤 (Tags) 將部署與版本對齊,從而實現精確的還原。這提供了可稽核的變更歷史,並支援自動化的管線觸發器。
- 建立具有驗證關卡 (validation gates) 的 CI/CD 管線
- 原理說明:管線階段會對 YAML 進行語法檢查 (lint)、驗證 JSON/YANG 酬載 (payloads)、對 Jinja 渲染進行單元測試,並在沙箱中模擬 API 呼叫。DNA Center 的試運行 (dry runs) 和 Ansible 的
check_mode/diff會在不產生影響的情況下驗證變更。只有在通過所有關卡後,管線才允許操作員批准繼續進行。
- 使用 Ansible 和 DNA Center API 進行增量部署
- 原理說明:首先使用 DNA Center 北向 API 將範本推送到金絲雀站點 (canary site),然後按站點以批次大小限制進行序列式推出。對於支援 NETCONF/RESTCONF 的設備,Ansible 模組會執行目標明確且冪等的更新。這種雙重方法利用控制器處理策略密集型任務,並利用直接的設備自動化進行細微的變更,同時將爆炸半徑降至最低。
- 啟動遙測串流和由 assurance 驅動的檢查
- 原理說明:在邊緣設備上設定模型驅動遙測,以將資料饋送給 DNA Center Assurance 和公司的可觀測性堆疊 (observability stack)。定義 SLO (例如,上線成功率、延遲) 和事件訂閱,以便在變更後指標下降時發出警報。這能夠立即偵測到負面結果。
- 啟用受控的閉環式修復
- 原理說明:對於已充分了解的偏差 (例如,介面關閉且有已知的解決方法),允許管線觸發一個受限的 playbook 來還原上次的變更或應用緊急修復 (hotfix)。對於更廣泛的修復,則需要人工批准。實作指數退避 (exponential backoff) 和冷卻時間 (cooldown) 以防止振盪。
- 準備並測試還原路徑
- 原理說明:在每次變更之前,建立設備檢查點,或在可用時使用 NETCONF candidate + commit-confirmed。封存變更前的設定並為 Git 儲存庫加上標籤。如果健康分數下降或遙測顯示違反 SLA,管線將執行
configure replace或 NETCONFdiscard/rollback,快速恢復到先前的狀態。
- 保護憑證並強制執行存取控制
- 原理說明:將設備/控制器憑證儲存在 vault 中;將短期權杖注入到任務中。使用 DNA Center RBAC 來限制 API 範圍。絕不記錄機密;在 CI 中清理輸出內容。定期並在人員異動後輪替憑證和權杖以降低風險。
- 透過文件和執行手冊 (runbooks) 將其營運化
- 原理說明:記錄意圖定義、變數綱要 (schema)、故障模式 (速率限制、API 錯誤、模型不匹配) 和恢復步驟。訓練 NOC 解讀 assurance 訊號和管線狀態,確保對事件有一致、快速的回應。
這種方法建立了一條從意圖到實作的安全、可測試的路徑,利用控制器進行策略分發 (在 SD‑WAN 中使用 vManage/vSmart,在園區網路中使用 DNA Center),使用冪等工具來達成收斂,並透過有遙測支援的驗證和受控的修復來形成閉環。
← 企業安全與身分識別服務 · 所有領域 · 網路保證、維運與故障排除 →
練習這些題目 → · 在 ExamRoll.io 上限時練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通過考試 →