2. 网络自动化基础概念高频题
面试网络自动化工程师,基础概念题往往比配置题更容易“翻车”。原因很简单:这些词在日常工作中被混用,候选人以为自己懂,面试官一追问边界和反例,回答就散了。本章围绕六组高频概念展开:自动化与编排、声明式与命令式、幂等性、配置漂移、Source of Truth、控制平面与数据平面自动化边界。目标不是背定义,而是能在面试中给出“定义 + 对比 + 工程实例 + 判断依据”的完整回答。
一、自动化与编排:一个是动作,一个是流程
自动化(Automation)指用脚本或工具替代人工执行单个或局部任务,例如批量登录设备执行 show version、按模板生成 VLAN 配置。它关注“这件事不用人手动敲了”。编排(Orchestration)则是把多个自动化任务按依赖关系、顺序、条件组织成端到端流程,例如“创建租户 → 分配 VRF → 配置 Leaf 接口 → 更新防火墙策略 → 验证连通性”。编排关注“多件事如何协同完成一个业务目标”。
面试中可以用一句话区分:自动化是“把动作交给机器”,编排是“把流程交给机器”。判断一道题考的是哪个,看它是否涉及跨系统、跨步骤、带依赖和回滚。例如“用 Ansible 给 50 台交换机下发 NTP 配置”是自动化;“新业务上线时联动 IPAM、NMS、防火墙和负载均衡完成开通”是编排。编排通常依赖自动化作为执行单元,但自动化不等于编排。
二、声明式与命令式:描述结果还是描述步骤
命令式(Imperative)关注“怎么做”,逐条给出操作步骤,例如:
configure terminal
interface GigabitEthernet0/1
description UPLINK-TO-CORE
switchport mode trunk
switchport trunk allowed vlan 10,20,30
end
write memory
这段配置的执行结果依赖当前设备状态:如果接口原本是 access 模式,命令会改变它;如果已经是 trunk,重复执行通常不报错,但语义上仍是“执行动作”。
声明式(Declarative)关注“要什么结果”,由工具负责计算差异并执行。例如用 YAML 描述期望状态:
interface:
name: GigabitEthernet0/1
description: UPLINK-TO-CORE
mode: trunk
allowed_vlans: [10, 20, 30]
工具读取设备当前状态,与期望状态比对,只下发缺失或不同的部分。面试常问“声明式一定幂等吗?”答案是:声明式天然更容易实现幂等,但幂等取决于工具实现,不取决于语法本身。一个声明式工具如果每次都全量覆盖,也可能破坏其他配置。
三、幂等性:重复执行结果一致
幂等性(Idempotency)指同一操作执行一次和执行多次,对系统最终状态的影响相同。它是自动化可靠性的核心指标。判断一个任务是否幂等,可以问三个问题:重复执行会不会报错?会不会产生重复对象(如重复 ACL 条目、重复 VLAN)?会不会覆盖掉别人手工加的配置?
以创建 VLAN 为例,非幂等写法是直接 vlan 100 后不检查;幂等写法是先查询:
show vlan id 100
! 若不存在则创建,存在则跳过或校验名称
vlan 100
name APP-SERVER
在 Ansible 中,ios_vlan 模块本身具备幂等性:第二次执行会返回 changed: false。面试时可以主动说出这个观察点——幂等任务的输出应体现“无变化”而不是“再次成功”。如果每次跑都 changed,说明要么模块不幂等,要么期望状态与设备状态始终不一致,后者往往就是配置漂移。
四、配置漂移:期望状态与真实状态的偏离
配置漂移(Configuration Drift)指设备或系统的实际配置偏离了 Source of Truth 中记录的期望状态。漂移来源包括:人工应急修改、其他自动化任务越权变更、设备重启后配置未保存、版本升级导致默认值变化。
工程上处理漂移的闭环是“检测 → 定位 → 修复 → 防复发”。检测可以用定期巡检脚本,把设备当前配置与 SoT 中的期望配置做结构化比对。例如期望接口描述为 UPLINK-TO-CORE,实际为 temp-fix-20240612,脚本输出:
DRIFT device=leaf-03 interface=Gi0/1
expected: description UPLINK-TO-CORE
actual: description temp-fix-20240612
action: review_then_remediate
注意,检测到漂移不等于立刻自动回滚。生产环境中,人工应急修改可能是有效的,正确做法是先告警、人工确认,再决定是更新 SoT 还是修复设备。面试中能说出“漂移修复策略要区分合法变更与非法变更”,会比只答“自动覆盖”更专业。
五、Source of Truth:唯一可信的期望状态来源
Source of Truth(SoT)是描述网络期望状态的权威数据源,通常包括设备清单、接口、IP 地址、VLAN、路由策略、业务与设备的映射关系。它可以是 NetBox、Nautobot、CMDB,也可以是 Git 仓库中的 YAML 文件。关键不在工具,而在唯一性和权威性:同一份数据只在一个地方维护,其他系统通过 API 或流水线读取,而不是各自复制一份。
一个最小可用的 SoT 数据结构示例:
devices:
- name: leaf-03
mgmt_ip: 10.0.0.13
role: leaf
site: shanghai-dc1
interfaces:
- name: GigabitEthernet0/1
description: UPLINK-TO-CORE
mode: trunk
allowed_vlans: [10, 20, 30]
面试常问“SoT 和设备谁为准?”标准回答是:SoT 是期望状态的唯一来源,设备是实际状态的载体;两者不一致时,先判断哪一方是错的,再决定修复方向。如果 SoT 永远自动覆盖设备,人工应急通道就被堵死;如果设备永远为准,SoT 就失去意义。成熟做法是让变更必须经过 SoT 和流水线,紧急通道单独审计并回填。
六、控制平面与数据平面自动化边界
控制平面负责“决定怎么转发”,包括路由协议、ARP、MAC 学习、控制器下发的转发表项;数据平面负责“按已决定的规则转发报文”。自动化边界要回答:哪些操作可以自动执行,哪些必须有人确认。
一般来说,控制平面自动化适合处理配置生成、协议参数下发、路由策略校验、控制器与设备的一致性检查;数据平面自动化更多体现为流量验证、路径探测、性能基线采集,例如用 ping、traceroute、TWAMP 或流表计数验证转发是否符合预期。真正危险的是让自动化直接修改生产数据平面转发行为,却没有回滚和验证。
面试中可以给出一个边界判断表:
| 操作 | 所属平面 | 建议自动化程度 | 判断依据 |
|---|---|---|---|
| 生成接口/VLAN 配置 | 控制平面 | 全自动,走流水线 | 幂等、可回滚、影响可预测 |
| 修改 OSPF 开销 | 控制平面 | 自动生成 + 人工审批 | 可能改变全局路径 |
| 下发 ACL 到生产接口 | 控制平面 | 自动生成 + 灰度 + 回滚 | 误封风险高 |
| 采集接口流量基线 | 数据平面 | 全自动,只读 | 不影响转发 |
| 动态调整 QoS 队列 | 数据平面 | 人工确认后执行 | 直接影响业务体验 |
这张表的用法不是背下来,而是理解判断逻辑:只读、幂等、影响局部且可回滚的操作可以高度自动化;写操作、影响全局路径或业务体验的,需要审批、灰度和验证。
七、面试答题模板与常见追问
遇到概念题,可以用四步作答:第一,给出定义;第二,与易混概念对比;第三,举一个工程实例;第四,说明判断依据或边界。例如被问“声明式和命令式有什么区别”,可以答:声明式描述期望结果,命令式描述执行步骤;声明式更容易幂等,但幂等取决于工具实现;例如用 YAML 描述 trunk 接口期望状态,工具比对后只下发差异;判断依据是重复执行是否 changed、是否覆盖无关配置。
常见追问包括:“幂等和声明式是一回事吗?”不是,幂等是结果属性,声明式是表达方式。“SoT 和 CMDB 有什么区别?”SoT 强调期望状态的权威性,CMDB 更偏资产记录,二者可以重合但不必然。“配置漂移检测频率多高合适?”取决于变更频率和风险,核心设备可以每小时,接入设备可以每天,关键是告警要能定位到具体设备和字段。
最后给出一份面试自检清单,用于快速复查本章概念是否真正掌握:
- 能否用一句话区分自动化与编排,并各举一个例子?
- 能否写出命令式与声明式的配置片段,并说明幂等差异?
- 能否解释幂等任务为什么第二次执行应返回“无变化”?
- 能否说出配置漂移的三种来源和修复前的判断步骤?
- 能否说明 SoT 与设备不一致时的处理原则?
- 能否给出控制平面与数据平面自动化的边界判断依据?
这些概念不是孤立的名词,而是同一条工程链路的不同侧面:SoT 提供期望状态,声明式表达期望,幂等保证重复执行安全,自动化执行动作,编排组织流程,漂移检测发现偏离,控制平面与数据平面边界决定自动化能走多远。面试时把这条链路讲清楚,比单独背定义更有说服力。