SD-WAN终端研发系列01 技术全景:从业务需求到系统架构
本文给出 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 文件系统。