4.1 VNF生命周期与服务链


4.1 VNF 生命周期与服务链

本节摘要:VNF 不是装好就完事的静态软件,它有一套完整的生命周期管理(实例化、配置、扩缩容、愈合、终止)。而单个 VNF 往往不够用,多个 VNF 要通过服务链(SFC)串联起来,才能形成端到端的网络服务——比如流量依次经过分类器、防火墙、NAT、负载均衡。本节讲清这两块。

学习目标

阅读完本节,你应当能够:

  1. 列出 VNF 生命周期的五个阶段及各阶段操作
  2. 解释服务链(SFC)的作用和数据流向
  3. 说明 VNFD 在生命周期管理中的角色
  4. 区分扩容和缩容的触发条件
  5. 画出一条典型服务链的流量路径

一、问题与直觉

传统网络设备是"买来、上架、配置、一直跑"的静态模式,生命周期管理很简单(坏了就修或换)。但 VNF 是软件实例,它的生命周期复杂得多——可以随时创建、销毁、扩容、缩容、迁移。这种动态性是 NFV 灵活性的来源,也是管理上的挑战。

想象一个企业 VPN 服务:包含一个 vFirewall(防火墙)、一个 vRouter(路由器)、一个 vLB(负载均衡)。这三个 VNF 要按正确顺序串联起来,流量才能正确处理:进来的流量先过防火墙过滤,再走路由器转发,最后到负载均衡分发到后端。这种"按顺序串联多个网络功能"的机制叫服务链(SFC,Service Function Chaining)。

服务链的灵活性是 NFV 的核心价值之一。传统网络里,流量要经过哪些设备是由物理拓扑决定的(设备怎么连线流量就怎么走);NFV 里,流量经过哪些 VNF 是由服务链逻辑决定的,可以随时编程调整——需要加一个深度包检测?在服务链里插入一个 vDPI 就行,不用改物理连线。

二、核心原理

2.1 VNF 生命周期五阶段

一个 VNF 从被创建到被销毁,经历五个阶段:

实例化(Instantiate):VNFM 根据 VNFD 创建 VNF 实例。向 VIM 申请资源(CPU、内存、网络),启动虚拟机或容器,加载 VNF 软件。这是"从无到有"的过程。

配置(Configure):VNF 起来后,注入初始配置——防火墙规则、路由表、NAT 策略等。配置可以来自 VNFD 的模板,也可以来自外部管理系统。

运行(Operate):VNF 正常处理流量,同时被监控。运行期间可能有配置变更、版本升级等操作。

扩缩容(Scale)

  • 扩容(Scale Out):负载增加时,增加 VNF 实例数分担流量。比如 vFirewall 从 2 个实例加到 4 个。
  • 缩容(Scale In):负载下降时,减少实例数节省资源。

愈合(Heal):VNF 故障时,自动重启或替换。第 2 章讲过愈合的细节。

终止(Terminate):业务结束时,按顺序关闭 VNF,释放资源。终止前要处理好状态(比如把连接优雅断开,不要中断用户业务)。

阶段 谁执行 关键操作
实例化 VNFM + VIM 申请资源、启动实例
配置 VNFM / EM 注入初始配置
运行 VNF 自身 处理流量
扩缩容 VNFM 增减实例
愈合 VNFM 重启或替换
终止 VNFM + VIM 关闭、释放资源

2.2 VNFD:生命周期的模板

VNF 的生命周期管理依赖 VNFD(VNF Descriptor)。它是一个模板文件,告诉 VNFM"这个 VNF 长什么样、怎么部署、怎么配置"。VNFD 里包含:

  • 部署 flavor:不同规格的资源需求(如小号 2vCPU/4GB,大号 8vCPU/16GB)。
  • 组件结构:VNF 由哪些虚拟机或容器组成,它们怎么互联。
  • 生命周期脚本:实例化、扩缩容、终止时执行的脚本(注入配置、健康检查等)。
  • 连接点:VNF 对外的网络接口,用于服务链串联。

VNFD 让 VNF 的部署变成"声明式"的——你描述"我想要什么样的 VNF",VNFM 按描述去实现,而不是手动一步步操作。这是"网络即代码"的体现。

2.3 服务链(SFC)

单个 VNF 通常只做一个功能(防火墙只过滤、路由器只转发)。但实际业务需要多个功能协作:进来的流量要先过防火墙过滤恶意流量,再经 NAT 转换地址,最后由负载均衡分发到后端服务器。这种"按顺序串联多个网络功能"的机制就是服务链(SFC,Service Function Chaining)

一条典型的服务链:

服务链的关键特征:

  • 有序性:流量必须按指定顺序经过各 VNF,不能跳过或乱序。比如先防火墙后 NAT,反过来可能导致 NAT 后的地址被防火墙误判。
  • 可编程:服务链是逻辑定义的,可以随时增删 VNF 节点。需要加一个深度包检测?在链里插入 vDPI 即可,不用改物理网络。
  • 分类驱动:不同流量可以走不同的服务链。比如视频流量走"加速链",普通流量走"标准链",由分类器(vClassifier)根据流量特征分流。
传统物理服务链 NFV 虚拟服务链
由物理拓扑决定 由逻辑定义决定
增减功能要改物理连线 增减功能改软件配置即可
所有流量走同一条路 不同流量走不同链
部署周期长 部署周期短

2.4 服务链的技术实现

服务链怎么实现流量的有序转发?几种主流方式:

基于 SDN 的服务链:SDN 控制器集中管理流量路径,在每个 VNF 节点上配置转发规则,引导流量按顺序经过各 VNF。这是最灵活的方式,因为 SDN 控制器可以动态调整路径。

基于 VLAN/VXLAN 的服务链:给经过服务链的流量打上特定的 VLAN 标签或 VXLAN 封装,每个 VNF 根据标签决定下一跳。实现简单但灵活性有限。

基于 SRv6 的服务链:用 IPv6 扩展头(Segment Routing)编码流量要经过的 VNF 节点列表,每个节点处理后更新指针指向下一个。这是新一代的服务链技术,灵活性和可扩展性都好。

💡 关键直觉:服务链是 NFV 和 SDN 协同的最佳体现。NFV 提供虚拟化的功能节点,SDN 提供灵活的流量调度。没有 SDN,服务链的流量路径还是僵化的;有了 SDN,服务链可以随业务需求动态调整。这也是为什么 NFV 和 SDN 经常一起部署。

三、工程实践要点

3.1 VNF 设计的解耦原则

设计 VNF 时,一个重要原则是控制平面和数据平面解耦

  • 控制平面:负责管理逻辑(路由表计算、防火墙规则下发),可以集中部署,对性能不敏感。
  • 数据平面:负责实际转发(过滤包、转发包),需要高性能,分散部署在流量经过的节点。

解耦的好处是各司其职——控制平面可以用通用软件框架(甚至微服务),数据平面用高性能实现(DPDK 加速)。5G 核心网的 CUPS(Control and User Plane Separation)就是这种思路的典型应用。

3.2 状态管理与扩缩容

VNF 扩缩容时要处理状态问题。如果一个 vFirewall 有 2 个实例,各自维护着已建立的连接状态表,扩容到 3 个实例时新实例没有状态,可能导致已有连接的处理中断。几种应对:

  • 无状态设计:VNF 不存状态,状态存外部(如 Redis),任何实例都能处理任何流量。扩缩容最简单,但不是所有功能都能无状态化。
  • 状态同步:实例之间同步状态表,新实例加入时从其他实例同步。复杂但有状态功能必须这么做。
  • 会话保持:确保同一连接的流量始终送到同一实例(通过哈希分流),避免跨实例状态问题。

3.3 服务链的故障处理

服务链里某个 VNF 故障了,整条链可能断掉。要设计容错:

  • 每个节点有冗余:关键 VNF 部署多个实例,一个挂了流量切到其他。
  • 健康检查与快速切换:持续检查各 VNF 健康,故障时快速把流量绕过故障节点。
  • 优雅降级:某些非关键 VNF(如深度包检测)故障时,允许流量跳过它继续转发,而不是中断整个服务。

⚠️ 常见坑:服务链越长,延迟和故障点越多。每多一个 VNF 节点,流量就多一跳处理延迟,也多一个可能故障的点。设计服务链时要在"功能完整"和"路径简短"之间平衡,不要为了堆功能把链做得太长。

本节要点回顾

  • VNF 生命周期五阶段:实例化、配置、运行、扩缩容/愈合、终止,由 VNFM 按 VNFD 模板管理。
  • VNFD 是声明式模板:描述 VNF 的结构、资源、配置,让部署自动化、可版本化。
  • 服务链(SFC)按序串联多个 VNF:形成端到端服务,特征是有序、可编程、分类驱动。
  • 服务链相比物理拓扑的优势:增减功能不用改物理连线,不同流量走不同链。
  • 服务链实现靠 SDN/VLAN/SRv6:SDN 提供灵活路径调度,SRv6 是新一代技术。
  • VNF 设计要控制平面和数据平面解耦:各司其职,性能和灵活性兼顾。
  • 扩缩容要处理状态:无状态设计最简单,有状态功能需状态同步或会话保持。
  • 服务链越长延迟和故障点越多:在功能完整和路径简短间平衡。

下一节看 VNF 向 CNF 的云原生演进——从虚拟机到容器,从单体到微服务,带来了什么改变和挑战。

四、服务链的流量工程实战

图:SFC 流量牵引路径

图:SFC 流量牵引路径

服务链(SFC)是 VNF 组合能力的集中体现:分类器给流量贴链标签,流量按处方依次穿过功能节点。实战中最容易栽的两个坑都在图里标注了——瓶颈转移:链上单点扩容后瓶颈会转移到下一环,扩容决策必须链级联动而不是节点级独立;有状态节点的亲和:会话创建在哪个 DPI 实例上,后续包就必须回到那个实例(否则会话表未命中、业务中断),这要求分流算法与实例扩缩容严格协同。这两个坑的本质是同一个教训:服务链是一个整体系统,任何"只优化自己这一环"的局部理性,都会被链级的全局约束惩罚。

五、生命周期各阶段的自动化剧本

VNF 生命周期自动化的检查点分布

阶段 自动化目标 高频坑 检查手段
实例化 模板一键拉起 配置注入顺序错误 干净环境重复部署演练
配置 声明式收敛 配置漂移无察觉 定期比对期望态与实际态
伸缩 按指标自动加减实例 伸缩风暴来回震荡 引入冷却期与步长限制
自愈 探针失败自动重启 假活探针放行僵死 业务级探针而非进程级
升级 滚动替换无感 会话型网元中断 双轨并行加会话迁移
终止 资源与配置全量回收 残留路由与漏洞 终止后资源对账

这张表的六行覆盖了 VNF 的一生,每行的"高频坑"一列是从故障复盘里反复出现的模式。特别值得展开的是配置漂移:运维人员在紧急情况下手工改了配置救火,事后没有回流到模板,下次重新部署时模板与线上的差异就成了隐蔽炸弹——解药是把"配置只改模板、模板再下发"定为铁律,紧急手工改动必须登记并在四十八小时内模板化。生命周期管理的成熟度,最终体现为这张表里每一行都有剧本、都有演练记录、都有复盘归档。

再强调一次链级思维的价值:服务链上任一节点的容量、时延、可靠性变化都是全链事件——把"链"而不是"节点"作为容量规划和变更管理的原子单位,是 VNF 组合时代与单设备时代运维思维的最大分野。所有链级工具(链路追踪、链级容量表、链级变更日历)都值得投入,因为它们对应的正是这个分野。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U