一、SDN核心架构
1.1 三大基本特征(绝对重点)
转控分离
- 控制平面(大脑):负责路由计算、决策制定,集中在控制器中。
- 转发平面(手脚):只负责根据流表高速转发数据包,位于网络设备中。
集中控制
- 网络智能被集中到控制器中,控制器拥有全局网络视图。
- 控制器基于全局视图进行最优路径计算和策略下发。
开放接口
- 南向接口:控制器与网络设备之间的开放接口。
- 北向接口:控制器与上层应用之间的开放接口(通常为RESTful API)。
1.2 接口方向(极易混淆,必须掌握)
记忆口诀:上北下南,控制器是核心
| 接口类型 | 方向 | 连接对象 | 典型协议 | 功能描述 |
|---|---|---|---|---|
| 北向接口 | 向上 | 控制器 ⇄ 业务应用 | RESTful API | 应用通过API调用网络服务,实现网络编程 |
| 南向接口 | 向下 | 控制器 ⇄ 网络设备 | OpenFlow, NETCONF/YANG, OVSDB | 控制器管理设备的所有通信,包括下发配置/流表和接收设备上报信息 |
| 东/西向接口 | 水平 | 控制器 ⇄ 其他控制器 | 未标准化 | 用于多控制器域间的协同,考试中较少涉及 |
关键辨析:
- 设备上报事件(如端口宕掉)是通过南向接口送给控制器,不是北向接口。
- 北向接口是应用程序用来告诉控制器业务需求的。
1.3 对“集中控制”的深度理解
正确理解:
- 控制器集中计算路径,网络设备间无需运行OSPF/IS-IS等分布式路由协议。
- 控制器通过下发流表来指导转发。
- 设备本地维护流表,绝大多数流量直接匹配流表高速转发,无需控制器干预。
经典误区纠正:
- 错误: 每个数据包的转发都需要控制器实时决策。
正确(流表转发机制):
- 首包上送: 流的首个数据包若无匹配流表,则上送控制器。
- 决策下发: 控制器计算路径,并向路径上的所有设备下发对应的流表项。
- 后续直转: 该流后续的所有数据包均在设备上直接匹配流表转发,实现高速性能。
1.4 SDN优势辨析
真正的核心优势:
- 灵活可编程: 通过开放接口实现网络定制。
- 简化运维: 集中控制使得网络配置、监控、排障更简单。
- 自动化业务部署: 业务上线速度快。
- 全局优化: 基于全局视图实现流量工程、负载均衡。
常见误解(必须避免):
- 错误: SDN能显著提升单台网络设备的硬件转发性能。
- 解释: 单设备的转发性能取决于其硬件芯片(ASIC)。SDN的优势是“控制和管理”层面的软优势,而非硬件性能的提升。
二、NETCONF与YANG协议精解
2.1 YANG与NETCONF的关系(核心模型)
比喻:YANG是建筑图纸,NETCONF是施工队。
| 组件 | 角色 | 功能描述 |
|---|---|---|
| YANG | 数据建模语言 | 定义网络数据的结构、类型、约束关系。它规定“数据该长什么样”,但本身是空的,不包含具体配置值。 |
| NETCONF | 网络配置协议 | 负责在管理端与设备端之间安全、可靠地传输具体的配置数据和状态数据。它传输的是根据YANG模型填充好的数据内容。 |
结论: YANG定义数据是什么样,NETCONF定义如何传输这些数据。NETCONF不传输YANG模型文件本身。
2.2 YANG数据分类
YANG模型中将数据节点明确分为两类:
| 数据类型 | YANG语句 | 读写性 | 描述 | 示例 |
|---|---|---|---|---|
| 配置数据 | config true; (可默认省略) | 可读可写 | 设备“应该如何工作”的期望状态。 | 接口IP地址、主机名、ACL规则、路由配置 |
| 状态数据 | config false; (必须声明) | 只读 | 设备“当前运行状态”的真实反馈。 | 接口流量计数器、CPU利用率、设备温度、协议邻居状态 |
重要性: 该区分是网络自动化的基础,使得管理程序能清晰区分“配置设备”和“查询状态”。
2.3 NETCONF关键操作与细节
常用RPC操作:
<get-config>:检索指定配置数据库(如<running/>)中的配置数据。<edit-config>:修改设备配置的核心操作。<get>:检索所有数据(包括配置数据和状态数据)。
关键细节:
- 传输协议: 通常使用 NETCONF over SSH,默认端口为 TCP 830。
- 数据编码: 主要使用XML。
三、网络自动化与Python
3.1 Python网络库选型与安全
| 库名 | 基于协议 | 安全性 | 特点与用途 |
|---|---|---|---|
telnetlib | Telnet | 明文传输 | 极不安全,严禁在生产环境使用,仅用于学习或测试。 |
paramiko | SSHv2 | 加密传输 | 实现了SSHv2协议的低层级库,提供安全连接,是许多高级库的基础。 |
netmiko | SSH (基于Paramiko) | 加密传输 | 自动化脚本首选。在Paramiko之上封装,简化了多厂商设备的连接与命令交互细节。 |
3.2 文件操作最佳实践
使用
with语句(上下文管理器):with open('config.txt', 'r') as file: # ‘r’表示读取模式 content = file.read()退出with代码块后,文件会自动关闭,无需手动调用file.close(),避免资源泄露。
- 这是Python文件操作的最佳实践。
四、关键协议与特性
4.1 RESTful API特征
- 正确特征(必须掌握):
- 无状态: 服务器不保存客户端上下文。每次请求必须包含所有必要信息(如认证令牌)。
统一接口: 使用标准HTTP方法操作资源:
GET(检索)、POST(创建)、PUT(更新/替换)、DELETE(删除)。
- 资源导向: 一切皆资源,通过URI标识。
- 常见误解(必须纠正):
错误: 必须使用XML作为数据格式。
- 事实: JSON因其轻量、易读,已成为更主流的选择。
错误: 需要维持一个长连接的会话。
- 事实: 因其无状态,不需要维持长连接。每次请求/响应后连接可关闭。
4.2 OpenFlow流表生命周期
- 流表项非永久有效: 控制器下发流表时可设置超时机制,防止流表被无用条目占满。
- 空闲超时: 如果在指定时间内没有数据包匹配此流表项,则自动删除。
- 硬超时: 无论是否有流量匹配,只要到达指定时间,流表项强制删除。
- 结论: “流表项直到设备重启才失效”的说法是错误的。
五、华为解决方案与相关技术
5.1 iMaster NCE 平台定位
- 它不是单一组件,是融合平台:
- 控制层功能: 作为SDN控制器,通过南向接口集中管理网络设备和拓扑。
- 应用协同层功能: 提供强大的业务自动化、智能分析和运维能力,超越基础控制器。
- 定位辨析:
- 不属于基础设施层(那是物理网络设备)。
- 不属于虚拟化层/NFVI(那是承载VNF的通用服务器和Hypervisor)。
5.2 混合SDN模型
- Underlay网络:
- 采用传统IP/MPLS技术(如IS-IS, BGP)。
- 目标:提供稳定、可靠、高性能的底层IP连通性。
- Overlay网络:
- 由SDN控制器(如iMaster NCE)通过VXLAN等技术创建和管理。
- 目标:在Underlay之上构建灵活、可编程的虚拟网络,实现业务快速部署和策略随行。
5.3 NFV(网络功能虚拟化)
- 核心思想: 将防火墙、路由器等网络功能从
专用硬件中解耦,以软件(VNF)形式运行在通用服务器上。 - 与SDN关系: SDN(实现网络连接自动化)和NFV(实现网络功能虚拟化)相互互补,结合使用能最大化网络转型价值。
复习建议: 每日快速浏览此文档,强化记忆易错点。尤其要反复理解SDN接口方向、YANG与NETCONF的关系以及各类协议的关键特性。祝您考试成功!