HCIE-DATACOM · 第 11 章

SDN 与
网络自动化

SDN 三层架构 · OpenFlow · NETCONF / YANG · Telemetry · RESTCONF 与 Python 运维 —— 从"命令行工匠"到"网络工程师 2.0"的转身,HCIE 论述题新宠。

授课 6 学时 实验 4 学时 论述高频 ★★★★☆
HCIE-DataCom 全套课件第 11 章 / 共 13 章

本章学习目标

原理层

  • 用"三个解耦"讲清 SDN 价值
  • NETCONF 会话四阶段与 YANG 建模思想
  • Telemetry 推模式 vs SNMP 拉模式
  • 华为 iMaster NCE 产品线分工

实战层

  • 用 SSH+Python 脚本批量备份配置
  • 读懂/手写 NETCONF RPC 报文
  • 调用 RESTCONF(如 NCE 北向)API
考试定位新版 HCIE-DataCom 明确考察自动化与编程能力:笔试概念题 + 论述"自动化改造方案",考生失分集中在"只背概念不会落地"。
11.1

SDN 架构

控制转发分离 + 集中控制 + 开放可编程

三层架构与三个解耦

应用层:网络业务/编排(数据中心控制器应用、运维平台、AI 分析) 北向接口 NBI:RESTCONF / RESTful API / gRPC 控制层:SDN 控制器(集中拓扑、算路、策略、模型) 南向接口 SBI:OpenFlow / NETCONF / PCEP / BGP EVPN / SNMP 转发层:网络设备(交换机/路由器/VTEP/白盒) 受控转发表项 / 传统分布式控制(IGP/BGP)仍可共存
SDN 三层两接口:应用想"要什么",控制层知道"怎么算",转发层只管"怎么发"

三个解耦(论述必背)

  1. 控制与转发解耦:设备不再"各自为政"
  2. 网络业务与配置细节解耦:模型化声明意图
  3. 应用与网络解耦:开放 API 让 IT 吃进网络能力
观念纠偏SDN ≠ 必须 OpenFlow 白盒。华为路线:"转发面兼容传统协议 + 控制面增强(EVPN/BGP/PCEP)+ NETCONF 配置 + 控制器集中视图"——向"意图驱动网络 IDN"演进,而不是推倒重来。

OpenFlow:讲清"经典"与"局限"

  • 首条标准化南向协议(ONF):控制面下发流表(Match→Action)
  • 三元素:流表 + 安全通道(TLS) + 控制器协议
  • 设备持续上报 Packet-In,控制器决策后 Packet-Out / Flow-Mod

局限(考论述对比)

  • 集中式控制 → 规模/时延瓶颈
  • 流表爆炸:细粒度匹配吃 TCAM
  • 与现网协议栈并存复杂(双平面)

华为现实路线(答题用)

场景南向
数据中心VXLAN EVPN + NETCONF(NCE-Fabric)
园区NETCONF + 自定义(NCE-Campus)
广域/SRPCEP / BGP SR / NETCONF
传输OTN 专用(NCE-T)
笔试点ONF 组织名、"OpenFlow 是南向接口协议"、控制通道默认 6653 端口(旧 6633)——三个小数字常考。
11.2

NETCONF 与 YANG

配置管理的"标准化长子"

NETCONF:会话、能力与操作

  • 承载:SSH 830(RFC 6241/6242);内容 XML,模型 YANG
  • 会话四阶段:Hello(能力协商)→ 操作 → 通知 → Close-Session
  • 数据存储:running / startup / candidate(能力相关)
# NETCONF 操作集
<get>/<get-config>           # 拉取
<edit-config>              # 修改(merge/create/delete)
<copy-config>/<delete-config>
<lock>/<unlock>            # 锁配置
<kill-session>/<close-session>
# RPC 结构
<rpc message-id="101">
  <get-config>
    <source><running/></source>
  </get-config>
</rpc>

YANG:建模语言

  • 树状层级:module → container → list/leaf
  • 类型系统:内建(int32/enum…)+ 派生
  • 与 XML/JSON 双编码(RESTCONF 常用 JSON)
  • 能力由 <capability> URI 标识模块与版本
对比 SNMP(高频)SNMP:UDP 161、MIB 树 OID、拉模式、变更靠轮询、配置弱(Set 不安全);NETCONF:SSH 事务化、能力协商、事件订阅、面向配置管理 → "监控 Telemetry + 配置 NETCONF" 是现代组合。

设备侧使能

# 华为 VRP
netconf
 protocol inbound ssh port 830

Telemetry:秒级推模式

① 订阅
控制器/分析器向设备订阅路径(gRPC)
② 采集
设备按周期/条件推 GPB 编码数据
③ 分析
秒级/亚秒级可视化与告警
  • 协议栈:gRPC(HTTP/2 + Protobuf),支持 gNMI/gNMIc 生态
  • 推送路径基于 YANG 模型(订阅 leaf/list)

三模式对比

SNMP TrapSNMP PollTelemetry
方向推(事件)推(订阅)
时延/粒度秒/单点分钟/轮询亚秒/批量
数据量视规模大而结构化
用途告警巡检实时监控/AI 输入
论述金句"把网络从'人定期问'变成'数主动报'——Telemetry 让 5 分钟粒度的 MIB 轮询升级为秒级模型化推送,是智能运维的数据底座。"
11.3

RESTCONF 与网络编程

把网络变成"API 服务"

RESTCONF:Web 化的 NETCONF

  • REST 风格访问 YANG 数据(HTTP GET/POST/PUT/PATCH/DELETE)
  • 编码 JSON/XML;TLS 443
  • 资源 URL = YANG 树路径(api 资源根 /restconf/data/…)
# 一条 RESTCONF 调用
GET https://10.1.1.1/restconf/data/\
ietf-interfaces:interfaces/interface=GE0%2F0%2F1
Accept: application/yang-data+json
# 北向调用 NCE OpenAPI 同理:
# Token 认证 → 资源 URL → JSON 载荷

接口选型速记

需求首选
配置管理(事务/回滚)NETCONF
Web/云原生集成RESTCONF
高频监控Telemetry(gRPC)
传统网管兼容SNMP
设备临时操作SSH CLI
笔试点RESTCONF 与 NETCONF 数据模型同一套 YANG,只是传输与编码不同 —— "模型统一、传输多样"是核心思想。

Python 网络运维实战

import paramiko, time
def backup(host, user, pwd):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(
        paramiko.AutoAddPolicy())
    ssh.connect(host, username=user, password=pwd)
    cli = ssh.invoke_shell()
    cli.send('screen-length 0 temporary\n')
    cli.send('display current-configuration\n')
    time.sleep(2)
    out = cli.recv(65535).decode()
    with open(f'backup_{host}.cfg', 'w') as f:
        f.write(out)
for ip in ['10.1.1.1', '10.1.1.2']:
    backup(ip, 'admin', 'Huawei@123')

常用库速记

  • paramiko:SSH 原生会话(上例)
  • netmiko:多厂商 CLI 封装(更快上手)
  • ncclient:NETCONF 客户端(edit-config 脚本化)
  • requests:RESTCONF/北向 API 调用
  • nornir / ansible:批量编排框架

自动化四步走(论述模板)

  1. 场景选择:备份/巡检/变更三选一
  2. 数据源:设备清单 CSV → 脚本输入
  3. 能力选择:SSH CLI → NETCONF → 控制器北向(成熟度递进)
  4. 安全兜底:专用账号 + 日志留痕 + 变更窗口
考试趋势论述题已出现"写一段伪代码/说明脚本思路",把变量、循环、异常处理讲清楚即可得分——重点是工程思维不是语法。

华为控制器家族(NCE)

产品场景关键能力
NCE-Campus园区云管理园区、ZTP、准入、无线管理、意图配置
NCE-Fabric(+Insight)数据中心EVPN-VXLAN 自动化开通、可视化运维
NCE-IP / WAN广域SD-WAN、SRv6 隧道编排、路径调优
NCE-T 等传输/其他域光/传送协同

ZTP 零配置开局

  • 设备上电 → DHCP 拿 IP + 文件服务器地址
  • 下载系统软件/补丁/配置(含控制器地址)
  • 注册控制器 → 模板下发 → 业务分钟级上线
论述串联"自动化改造"答案三段式:设备层(NETCONF 使能+Telemetry 采样)→ 控制层(NCE 集中模型)→ 运营层(北向 API 对接工单/监控)+ 安全与回滚机制。把 ZTP 放在"新分支快速交付"例子中。

核心知识要点速记 考前 10 分钟过一遍

考点必背细节频度
三层架构应用层(北向 API)→ 控制层(集中大脑:拓扑/算路/下发)→ 转发层;三个解耦:应用与控制 / 控制与转发 / 转发表生成与转发执行★★★★
OpenFlow 流表流表项 = 匹配字段 + 计数器 + 动作(Forward/Drop/Modify/Normal);多级流表 Pipeline 匹配;交换机主动连控制器(TCP 6653,旧 6633);Table-miss 兜底流表决定"没匹配上的怎么办"★★★★
NETCONFSSH 端口 830;Hello 协商能力 → RPC 操作:get / get-config / edit-config / copy-config / delete-config / lock / unlock / commit;数据存储 running / candidate / startup;YANG 树形建模★★★★★
Telemetry推(push)模式:订阅后秒级主动上报;gRPC 承载;对比 SNMP 轮询:实时性高、CPU 开销低、适合趋势/间歇故障★★★★
RESTCONFHTTP(S) + JSON/XML;GET/PUT/POST/PATCH/DELETE 映射到数据存储;URL 即资源路径,Postman 可直连调试★★★
SNMP 对比定位SNMP:UDP 161/162、轮询+Trap、监控"过去";Telemetry:订阅推送、观测"现在"——两者互补不是替代★★★
华为落地iMaster NCE:自动化(网络自动驾驶,批量下发/ZTP 开局)+ 可视化运维(Telemetry 播高/秒级地图);传统设备靠 NETCONF/SSH 双通道过渡★★★
Python 工具链ncclient(NETCONF)、paramiko / netmiko(SSH 批量)、requests(RESTCONF);脚本三步:连接 → 下发/读取 → 结果校验回读★★★
易错陷阱① 南向接口是"控制器→设备"方向,北向才是对接应用——方向判断题必考;② OpenFlow 里流表优先级大的先匹配、计数器只增不减、Table-miss 是必答题;③ NETCONF 的 edit-config 默认在 candidate 存储,commit 才生效(华为 VRP 直接 running)。

练习重点 笔试 × 实操双线

笔试刷题方向

  1. 架构与接口方向:给场景判断南北向接口类型(OpenFlow/NETCONF/REST)
  2. 端口配对题:830(NETCONF)/ 6653(OpenFlow)/ 161(SNMP)/ 4789(VXLAN)混排
  3. Telemetry vs SNMP:推拉模式、实时性、开销三个维度判断
  4. NETCONF 操作语义:get-config 与 get 的区别、lock 的用途
  5. YANG / 解耦概念:判断题高频——解耦是"逻辑"不是"物理拆除"
达标线能画出一条配置从控制器经南向接口到转发表的全链路(含协议名)。

实操强化清单

  1. 用 ncclient 完成 edit-config 修改 VLAN → get-config 回读校验(实验 11 主线)
  2. netmiko 批量采集 5 台设备的 display version 并汇总成表
  3. RESTCONF 用 requests 发 PUT/GET,体会资源化接口
  4. 开启 Telemetry 订阅一条接口流量,抓 gRPC 报文看采样间隔
验证命令自查设备侧 display netconf capabilitydisplay telemetry subscribe;控制器侧看任务下发日志 —— 自动化"下发了≠生效",必须回读。

本章小结

SDN三层两接口;三个解耦(控转/业务配置/应用网络);华为走"增强+模型化"而非纯白盒路线。
OpenFlow流表 Match→Action;ONF;集中控制有规模瓶颈——考"定位与局限"。
NETCONFSSH 830;Hello 能力协商;get/edit-config;数据存储三类;YANG 树状建模。
TelemetrygRPC 订阅推模式、亚秒级、GPB 编码;与 SNMP 拉模式成对出现。
RESTCONFHTTP 动词 + YANG 路径 + JSON;与 NETCONF 同模型不同传输。
落地paramiko/netmiko/ncclient/requests 四库;自动化四步走;NCE 家族分场景。

课后思考

NETCONF 的能力协商(Hello)解决了 SNMP 的什么历史缺陷?
为什么 Telemetry 选择 gRPC+GPB 而不是 HTTP+JSON?(提示:序列化开销与长连接)
RESTCONF 的 URL 如何与 YANG 模型树对应?这带来了什么"自描述"好处?
若企业既有传统 CLI 设备又有新设备,自动化平台应如何分层设计接口适配?
控制器自身就是新单点,华为方案用什么缓解?(提示:集群/南向协议共存/设备本地能力)

实验 11:自动化上机 LAB · 2 学时

eNSP + PythonSSH 批量 + NETCONF 抓包

任务书

  1. paramiko 脚本:批量拉取 5 台设备配置存档,按日期归目录
  2. 巡检脚本:解析 display interface brief,输出 CSV(端口/状态/错包)
  3. 设备开启 NETCONF(830),用 SSH 抓取 Hello 能力列表
  4. (选做)ncclient 实现 get-config,对比 XML 输出与 CLI 差异
验证点预期
备份目录5 文件 + 时间戳命名
巡检 CSV端口数与真实一致
Hello 能力能看到 YANG 模块 URN 列表
讲评重点异常处理(设备不可达 continue)与超时设置——工程脚本及格线。