本文给出 OpenWrt SD-WAN 终端的功能边界和软件栈,重点说明 CPE、控制器、隧道、策略路由与设备管理之间的关系。

一、问题背景:企业广域网为什么需要SD-WAN

企业的分支机构和总部之间需要通过广域网(WAN)进行互联。传统方案通常依赖运营商提供的专线(如MPLS VPN),这种方式虽然稳定可靠,但成本高、开通周期长,且难以灵活调整带宽。

企业分支往往同时有有线宽带、4G/5G 蜂窝网络,甚至多个运营商的线路。SD-WAN 要做的是按业务和链路质量分配流量,让关键业务走稳定通道,普通业务走成本较低的线路。

SD-WAN(Software-Defined WAN)将控制面和数据面分开。集中式控制器决定流量怎么走,部署在分支的 CPE 负责转发,因此策略可以统一下发并动态调整。

二、SD-WAN终端设备的角色

在SD-WAN架构中,终端设备通常称为CPE(Customer Premises Equipment,客户侧设备)。它部署在企业分支机构的出口位置,上联总部或云端控制器,下联企业内网。CPE需要具备以下能力:

  • 多链路接入:同时管理有线WAN和4G蜂窝链路,甚至多条不同运营商的线路
  • 智能流量调度:根据业务类型、链路质量、策略规则,将不同流量引导到不同链路
  • 隧道封装:将流量封装在安全隧道中传输,常见的有L2TP、IPSec等
  • 远程管理:接受控制器的远程配置、监控和固件升级

在本文涉及的方案中,CPE的硬件载体是工业级无线路由器,运行的操作系统是OpenWrt,核心业务软件是部署在设备上的Agent程序。

三、终端的三种业务模式

本方案按转发目标和拓扑关系定义三类隧道业务:

3.1 虚拟专线

虚拟专线将指定业务网段或域名对应的流量送入加密隧道。终端使用 L2TP 建立 tunnel0 接口,再由 ipset、iptables 和策略路由决定隧道流量与本地直出流量。

3.2 海外加速

海外加速把目标域名或应用流量引导至境外出口节点。终端侧需要组合 DNS 解析策略、ipset、策略路由和加速隧道;需要按应用分流时,再增加 DPI 识别。

3.3 智能组网

智能组网在多个 CPE 之间建立点到点隧道,减少 Hub-Spoke 拓扑中的中心绕行。控制器维护节点、隧道和路由关系,终端根据隧道状态更新路由表,并通过主备隧道处理链路故障。

四、终端系统的技术栈全景

基于上述业务需求,终端系统的完整技术栈可以分层来看:

┌─────────────────────────────────────────────────┐
│              业务应用层                           │
│  Agent(远程管理 / 隧道控制 / 策略执行)           │
├─────────────────────────────────────────────────┤
│              系统服务层                           │
│  procd / dnsmasq / iptables / ipset / mwan3     │
│  hotplug / sqm-qos / watchdog                    │
├─────────────────────────────────────────────────┤
│              配置管理层                           │
│  UCI (Unified Configuration Interface)           │
│  UBUS (进程间通信) / LuCI (Web界面)              │
├─────────────────────────────────────────────────┤
│              操作系统层                           │
│  Linux Kernel / squashFS / JFFS2 / overlay       │
├─────────────────────────────────────────────────┤
│              硬件平台层                           │
│  MT7628 / MT7621 (MIPS) / IPQ8072A (ARM)        │
│  Flash / RAM / 4G Module / WiFi / Ethernet       │
└─────────────────────────────────────────────────┘

4.1 硬件平台

SD-WAN终端使用的硬件通常是工业级无线路由器,核心芯片以联发科(MediaTek)的MIPS架构SoC为主流选择:

  • MT7628:单核880MHz,适合成本敏感的入门级设备
  • MT7621:双核880MHz,性能更好,是中高端设备的主流选择

在更高性能需求的场景下,也可以选择高通(Qualcomm)的ARM架构SoC:

  • IPQ8072A:四核2.2GHz,支持WiFi 6和更多天线
  • IPQ4019:四核760MHz,性能够用但成本较高

选型时需要综合考量:CPU性能(DPI等特性对算力要求高)、OpenWrt版本兼容性(部分芯片的官方SDK基于较旧的OpenWrt版本)、Flash和RAM容量(影响可安装的软件包数量)以及4G模块支持。

4.2 操作系统:OpenWrt

OpenWrt是一个专为嵌入式设备设计的Linux发行版,具有以下特点使其成为SD-WAN终端的理想选择:

  • 高度可定制:可以从源码编译,精确控制固件中包含的组件
  • 包管理系统:通过opkg工具安装、更新、卸载软件包
  • 统一的配置接口:UCI(Unified Configuration Interface)用统一的格式管理所有系统配置
  • 丰富的网络功能:内置防火墙、QoS、多WAN负载均衡等企业级网络特性
  • 活跃的社区:大量的软件包和文档资源

OpenWrt的历史可以追溯到2002年Linksys WRT54G路由器的开源固件,中间经历了LEDE分支的分出与合并,目前是嵌入式网络设备领域最活跃的开源项目之一。

4.3 配置管理系统:UCI/UBUS/LuCI

OpenWrt提供了一套完整的配置管理基础设施:

UCI(Unified Configuration Interface)是 OpenWrt 的统一配置系统。网络、防火墙、DHCP 和系统参数等配置以文本形式保存在 /etc/config/。应用程序可以通过 uci 命令、C 库或 Lua 绑定读写这些配置。

UBUS是OpenWrt的进程间通信机制。系统中的各个守护进程通过UBUS注册自己的服务,其他进程可以通过调用UBUS方法来获取状态或执行操作。例如,网络守护进程(netifd)通过UBUS暴露接口状态,Agent程序可以通过UBUS查询或修改网络配置。

LuCI是OpenWrt的Web管理界面。在19.07版本之后,LuCI从基于Lua的实现转向了基于JavaScript的客户端渲染方案(LuCI2),通过UBUS接口与后端交互。

4.4 Agent程序

Agent是部署在终端设备上的核心业务程序。它承担以下职责:

  • 与控制器通信:通过WebSocket或MQTT与云端控制器保持长连接
  • 接收配置指令:根据控制器下发的策略,在本地创建隧道、配置分流规则
  • 上报设备状态:定期上报链路质量、流量统计、设备健康状态等信息
  • 执行本地操作:通过UCI、UBUS或直接调用Shell脚本完成路由、防火墙、DNS等配置变更

在资源受限的嵌入式环境中部署Agent,需要解决运行时环境、依赖库、交叉编译、进程守护等一系列工程问题。

五、从需求到实现:一条典型的技术路径

理解了整体架构之后,我们来看将一个SD-WAN终端从零到部署需要经历哪些技术环节。这也是本系列后续文章将逐个展开的主题:

业务需求定义
    ↓
硬件选型(芯片平台、Flash/RAM、4G模块)
    ↓
OpenWrt系统移植
    ├── 内核适配(添加新设备型号的DTS)
    ├── 4G模块驱动集成(修改内核USB驱动源码、打补丁)
    └── 默认配置定制(管理密码、地址、WiFi、MAC地址)
    ↓
固件编译与打包
    ├── 编译环境搭建(SDK/Toolchain配置)
    ├── 软件包管理(feeds源、Makefile编写、ipk打包)
    └── 固件构建(menuconfig → make → 固件输出)
    ↓
业务软件部署
    ├── 运行时环境部署(交叉编译或预编译包)
    ├── Agent程序移植(依赖库处理、代码保护)
    └── 系统服务集成(procd守护、自启动配置)
    ↓
核心功能实现
    ├── 虚拟专线隧道建立(L2TP)
    ├── 域名/IP分流(ipset + dnsmasq + 策略路由)
    └── 多链路管理(WAN/4G切换、mwan3)
    ↓
运维体系建设
    ├── 远程OTA升级(MQTT + 阿里云IoT)
    ├── 看门狗监控
    └── 远程调试(GDB、SSH/SFTP)

六、本系列文章索引

篇号 标题 核心内容
1 SD-WAN终端技术全景(本文) 业务需求、系统架构、技术栈全貌
2 OpenWrt系统原理:启动、分区与文件系统 U-Boot启动、MTD分区、overlay文件系统、网络初始化
3 OpenWrt编译体系:从源码到固件的全链路 编译目录结构、编译流程、SDK与Toolchain、Makefile编写
4 OpenWrt定制化开发:网络初始化、MAC地址与默认配置 board_detect、config_generate、MAC地址读取、默认配置修改
5 在OpenWrt上集成4G模块:从内核驱动到自动拨号 USB驱动修改、内核补丁、AT指令测试、自动拨号脚本
6 SD-WAN虚拟专线的流量分流实现 ipset、dnsmasq域名分流、策略路由、hotplug自动恢复
7 嵌入式Agent开发:从交叉编译到稳定部署 交叉编译、空间优化、系统集成、进程管理、远程调试
8 OpenWrt远程OTA升级方案设计与实现 MQTT协议、阿里云IoT SDK、OpenWrt包开发、升级流程

下一篇介绍 OpenWrt 的启动流程、Flash 分区和 overlay 文件系统。