Cisco 350-401: 自动化、可编程性和 APIs — 学习指南
属于 Cisco CCNP Enterprise 350-401 ENCOR — 学习指南. 使用经过验证的答案练习: Cisco 考试中心, 或参加限时模拟考试: ExamRoll.io.
概述
企业网络正在从逐个设备的配置模式,转向基于控制器、意图驱动且具备闭环自动化能力的操作模式。可编程性通过 API 和数据模型暴露网络状态和控制能力,而 Python、Ansible 和 Git 等工具则支持可重复、可测试的工作流。其目标是:以声明方式表达期望的结果,让控制器将意图转化为策略和配置,通过遥测和保障机制来衡量结果,并自动或在人工批准下修复偏差。要实现这一点,需要理解控制器角色、API 和协议(REST、带 YANG 的 NETCONF/RESTCONF)、数据格式(JSON、XML、YAML)、自动化平台(Cisco DNA Center)以及运维准则(幂等性、版本控制、测试、风险管理和回滚)。
控制器、意图与闭环操作
- 基于控制器的网络及其角色:
- Cisco SD-WAN 分离了各个平面:vManage 提供单一的管理平面;vSmart 管理控制平面并分发策略,以引导整个网络结构(fabric)中的数据转发;vBond 负责协调设备上线过程,并可作为 STUN 服务器以穿越 NAT。SD-WAN 边缘路由器使用 OMP 作为控制平面协议与 vSmart 通信。
- Cisco SD-Access 创建了一个覆盖网络(overlay network),提供逻辑上的二层和三层隔离。网络结构控制平面节点(fabric control-plane node)维护一个全局的端点到位置的数据库,而网络结构边界节点(fabric border node)则将网络结构连接到外部网络。在无线网络中,Radio Resource Management 运行在无线控制器上。
- 意图与声明式配置:
- 意图描述的是期望的结果,而不是如何在每个设备上实现它。声明式系统(例如,“在所有地方为访客进行分段,并只提供互联网访问”)允许控制器将策略编译成特定于设备的配置。
- 权衡:声明式模型简化了操作并减少了配置漂移,但可能会隐藏实现细节。运维人员需要透明的工具来进行差异比较/预览(diff/preview)和回滚,以维持信任。
- 闭环操作:
- 衡量:通过流式遥测(streaming telemetry)和控制器保障机制收集状态。
- 分析:检测与意图的偏差(例如,分段违规、SLA 下降)。
- 行动:通过策略更新、配置变更或流量工程进行修复。
- 故障模式:事件风暴或嘈杂的遥测数据可能引发误报;修复循环可能产生振荡。设置护栏(速率限制、滞后效应、人工介入批准)和强大的关联分析可以防止系统抖动(thrashing)。
API、数据模型与协议
- REST API:
- 方法:GET(读取)、POST(创建/执行动作)、PUT(替换)、PATCH(部分更新)、DELETE(移除)、HEAD/OPTIONS(元数据)。
- 状态码:2xx 成功(200 OK、201 Created)、3xx 重定向、4xx 客户端错误(400 错误输入、401 未授权、403 禁止访问、404 未找到、409 冲突、429 速率限制)、5xx 服务器错误(500、503)。
- 认证:基本认证(通过 TLS)、令牌/持有者方案(token/bearer schemes)和 OAuth 2.0。始终使用 TLS;避免在 URI 中嵌入凭证。处理令牌刷新和过期问题。
- 速率限制:服务器可能会通过 429 状态码和 Retry-After 头部进行限流。在客户端实现指数退避、抖动和请求预算跟踪。
- 数据格式与验证:
- JSON 在 REST 中很常见;XML 在 NETCONF 中仍然普遍使用;YAML 用于人工编写的文件(如清单、playbook、变量集)。需要时在内部将 YAML 转换为 JSON。
- 模式验证:对 JSON 负载使用 JSON Schema;对 XML 使用 XML Schema;对基于模型的管理使用 YANG(类型、约束、must/when 语句)。在发送前于客户端进行验证,以便及早发现错误。
- NETCONF、RESTCONF、YANG、RPC 与数据存储:
- YANG 模型为配置和状态定义了数据结构和操作。
- NETCONF 通过 SSH 使用 XML,其操作包括
、 、 、 、 、 。数据存储通常包括 running 和 candidate;candidate 数据存储支持“准备并提交”(prepare-and-commit)模式,以确保原子性。 - RESTCONF 将 YANG 建模的资源映射到一个基于 HTTP(S) 的 RESTful 接口,使用 JSON 或 XML 及标准化的媒体类型。其方法映射到 NETCONF 的语义(例如,使用 PATCH/PUT 进行编辑)。
- 故障模式与设计:
- 锁争用:协调
操作以避免死锁;使用小范围锁定和超时。 - 部分失败:优先使用 candidate 数据存储 +
来实现事务性变更。如果只有 running 数据存储可用,则使用结构化的变更组和检查点。 - 模型漂移:设备可能支持不同版本的 YANG 模块;在 CI 过程中协商能力并进行测试。
- 锁争用:协调
- 简明示例:
- RESTCONF 部分更新(HTTP 交换):
undefined
- 使用 Python 的 NETCONF (ncclient):
undefined
工具与工作流:Python、Ansible、Git 和流水线
- Cisco DNA Center 自动化:
- 北向 REST API 提供对清单、模板、配置部署 (provisioning) 和 Assurance 功能的访问。南向接口通过 CLI、SNMP、NETCONF/RESTCONF 等方式将控制器连接到设备,以实现意图。
- 发现工作流可以使用 CDP、LLDP 和 IP 范围。使用基于角色的访问控制、基于项目的模板和站点级变量。Assurance 功能将遥测数据关联分析为问题、健康评分和建议的修复措施——这些是闭环自动化的关键输入。
- 用于网络自动化的 Python 基础:
- 核心语言:类型、函数、模块、虚拟环境和日志记录。
- 库:requests/httpx (用于 REST)、ncclient (用于 NETCONF)、jinja2 (用于模板化)、pyyaml、json、pandas (用于数据整理)、rich/logging (用于可观察性)。
- 实践:输入验证、带退避的重试、结构化异常、超时和单元测试。将业务逻辑与 I/O 操作分离,以简化测试。
- Ansible:
- Inventory 定义主机和组;将 host_vars/group_vars 保存在 YAML 文件中。
- Playbook 声明期望状态;诸如 ios_config、ios_facts、iosxe_config、restconf_config 和 uri 等模块执行具体操作。使用 role 来封装可复用的逻辑。
- 幂等性:模块确保重复运行能收敛到相同状态,而不会产生意外的变更。使用 check_mode 和 diff 进行预览;通过 notify handler 仅在发生变更时才执行保存操作。
- 示例:
- 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:
- 变更控制:使用维护窗口、串行或分批策略以及站点级限速来限制爆炸半径。自动捕获变更前后的检查结果。
- Git、版本控制、测试与流水线:
- 在 Git 中存储网络意图(YAML 变量、Jinja 模板、Playbook)、生成的配置和测试。使用分支、拉取请求 (pull request) 和代码审查。语义化提交 (Semantic commits) 和标签使版本与部署保持一致。
- 测试:对 YAML 和 Playbook 进行 lint 检查,验证 YANG/JSON 模式,运行单元测试和 Ansible Molecule 场景测试。在 CI 中集成综合性预检(例如,可达性测试)。
- 流水线:开发 (Dev) → 预发布/实验室 (staging/lab) → 生产环境金丝雀发布 (canary) → 分阶段部署。门禁 (Gate) 包括静态分析、针对模拟器的空跑 (dry-run)、审批以及当健康状况下降时自动回滚。
遥测、事件驱动自动化与风险管理
- 遥测流:
- 模型驱动遥测(IOS XE, NX-OS)通过 gRPC/gNMI 或 NETCONF,以定义的间隔发布 YANG 建模的状态,支持 dial-in 或 dial-out 订阅模式。其优点包括低延迟和结构化数据,性能优于定期的 CLI 抓取或 SNMP 轮询。
- 示例(IOS XE,简洁版): telemetry ietf subscription 100 encoding gpbid filter xpath /interfaces-state/interface receiver ip 10.0.0.50 port 57500 protocol grpc-tcp
- 设计技巧:使采样频率与用例对齐;确保消息总线容量;设计降采样/聚合管道;通过缓冲和确认机制来防止遥测数据丢失。
- 事件驱动自动化:
- 在 webhooks、syslog、SNMP traps、DNA Center 事件或 Kafka 主题上触发操作。使用关联和速率限制来避免风暴引起的抖动。维护可安全重跑的幂等处理程序。
- 闭环:控制器检测到策略违规,通过辅助信号进行验证,创建变更工单或触发有限的修复措施,然后重新测量并最终确认。
- 风险管理、回滚与凭证:
- 护栏机制:分阶段部署、并发限制、爆炸半径控制、对 429/5xx 响应的动态退避以及超时。在可用时使用事务(NETCONF candidate + commit),或使用设备检查点和
configure replace。 - 回滚:维护黄金配置、差异(diff)和每个设备的检查点。在支持的情况下优先使用
commit-confirmed语义;否则,使用计时器和可达性检查来实现自动回退。 - 凭证保护:强制执行 RBAC、短期令牌和按作业的即时(just-in-time)秘密。使用秘密存储(例如,Ansible Vault 或外部 vault),切勿将秘密嵌入 playbook 或 Git 中。按计划以及在人员变动后轮换凭证。保护控制器到设备的凭证并审计访问。
- 护栏机制:分阶段部署、并发限制、爆炸半径控制、对 429/5xx 响应的动态退避以及超时。在可用时使用事务(NETCONF candidate + commit),或使用设备检查点和
实际问题场景
Aurelius Logistics 公司计划标准化园区和分支机构的配置,实施一致的分段,并使用 Cisco DNA Center 实现闭环保障,同时通过 Ansible 和 Git 实现安全的变更。
- 建立基线并发现网络
- 基本原理:DNA Center 使用 IP 范围加上 CDP/LLDP 进行发现,可枚举设备和拓扑,从而建立权威的资产清单。这使得按站点进行意图范围界定和变量继承成为可能。收集保障数据可以建立变更前的健康基线,用于比较和触发回滚。
- 在 DNA Center 中建模意图和模板
- 基本原理:以声明方式表达分段(例如,员工、物联网、访客)和 QoS 策略。为接口、路由和 ACL 使用带有站点变量的参数化模板。声明式策略允许控制器编译特定于设备的配置,从而减少人为错误和配置漂移。
- 实施 Git 驱动的配置管理
- 基本原理:将模板、站点变量(YAML)和验证测试存储在 Git 中。功能分支和拉取请求(pull request)强制执行同行评审。标签(Tag)将部署与版本对应起来,从而实现精确回滚。这提供了可审计的变更历史,并支持自动化管道触发器。
- 构建带有验证关卡的 CI/CD 管道
- 基本原理:管道阶段包括对 YAML 进行 lint 检查、验证 JSON/YANG 负载、对 Jinja 渲染进行单元测试,以及在沙箱中模拟 API 调用。DNA Center 的空运行(dry run)和 Ansible 的
check_mode/diff可以在不产生影响的情况下验证变更。只有通过所有关卡后,管道才允许操作员批准继续执行。
- 使用 Ansible 和 DNA Center API 进行增量部署
- 基本原理:首先使用 DNA Center 北向 API 将模板推送到一个金丝雀站点,然后按站点以批量大小限制进行串行部署。对于支持 NETCONF/RESTCONF 的设备,Ansible 模块执行有针对性的、幂等的更新。这种双重方法利用控制器处理策略密集型任务,并利用直接设备自动化进行细粒度变更,同时最小化爆炸半径。
- 激活遥测流和由保障驱动的检查
- 基本原理:在边缘设备上配置模型驱动遥测,为 DNA Center Assurance 和公司的可观察性堆栈提供数据。定义 SLO(例如,设备接入成功率、延迟)和事件订阅,以便在变更后指标下降时发出警报。这能够立即检测到负面结果。
- 启用受控的闭环修复
- 基本原理:对于已充分理解的偏差(例如,接口关闭且有已知的解决方法),允许管道触发一个受限的 playbook 来恢复上一次变更或应用热修复。对于更广泛的修复,则需要人工批准。实施指数退避和冷却时间以防止振荡。
- 准备和测试回滚路径
- 基本原理:在每次变更前,创建设备检查点,或在可用时使用 NETCONF candidate + commit-confirmed。归档变更前的配置,并在 Git 仓库中打上标签。如果健康分数下降或遥测显示 SLA 违规,管道将执行
configure replace或 NETCONF discard/rollback,快速恢复到先前的状态。
- 保护凭证并强制执行访问控制
- 基本原理:将设备/控制器凭证存储在 vault 中;将短期令牌注入到作业中。使用 DNA Center RBAC 限制 API 范围。切勿记录秘密;在 CI 中清理输出。定期以及在人员变动后轮换凭证和令牌,以降低风险。
- 通过文档和运行手册实现运维化
- 基本原理:记录意图定义、变量模式、故障模式(速率限制、API 错误、模型不匹配)和恢复步骤。培训网络运营中心(NOC)解读保障信号和管道状态,确保对事件做出一致、快速的响应。
这种方法创建了一条从意图到实施的安全、可测试的路径,利用控制器进行策略分发(在 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.
通过考试 →