跨境SD-WAN网络高可用改造项目
项目说明书与实施计划
1. 项目背景与现状分析
1.1 当前架构核心风险
1.1.1 单点故障风险矩阵
| 风险点 | 影响范围 | 发生概率 | 业务影响等级 | 当前缓解措施 |
|---|---|---|---|---|
| LA1节点故障 | 全部跨境业务 | 中 | 🔴 灾难性 | 无 |
| HZ1节点故障 | 全部跨境业务 | 低 | 🔴 灾难性 | 无 |
| LA1↔HZ1链路质量劣化 | 全部跨境业务 | 高 | 🟡 严重 | 无 |
| 运营商网络波动 | 部分业务 | 高 | 🟡 严重 | 无 |
1.1.2 现有架构技术债务
现有协议栈:VLESS+REALITY → dokodemo-door → WireGuard
分层问题:
1. 封装开销:每个数据包经过4层封装(VLESS+TLS+UDP+WireGuard)
2. MTU难题:实际有效MTU可能低至1300-1350字节
3. 故障排查:问题定位需逐层剥离,复杂度高
4. 性能衰减:实测吞吐量约为裸链路的70-80%
1.2 引入LA2节点的战略价值
| 指标 | LA1 (现状) | LA2 (新增) | 价值对比 |
|---|---|---|---|
| 网络类型 | CN2 GIA | 三网直连(优化) | 网络路径多样性 |
| 云厂商 | 厂商A | 厂商B | 避免厂商级故障 |
| 物理位置 | 洛杉矶DC1 | 洛杉矶DC2 | 物理位置隔离 |
| 目标角色 | 主出口 | 备出口/负载均衡 | 消除单点 |
| 成本模型 | 按流量计费 | 按带宽计费 | 成本优化空间 |
2. 目标架构设计文档
2.1 最终目标架构(阶段二完成后)
杭州侧网络 (10.10.0.0/16)
|
HZ1 (10.10.1.1) - FRR OSPF Area 0
| ├── WireGuard Tunnel1 (10.100.1.0/30) → LA1
| └── WireGuard Tunnel2 (10.100.2.0/30) → LA2
|
杭州业务VPS (OSPF Client)
|
OSPF动态路由
|
智能路径选择 (基于FRR + 健康检查)
├── 路径A: HZ1 → LA1 → 美国网络A (10.8.1.0/24)
└── 路径B: HZ1 → LA2 → 美国网络B (10.8.2.0/24)
2.2 关键设计决策
2.2.1 编址方案
美国侧网络:
- LA1管理网段: 10.8.1.0/24 (原网段保留)
- LA2管理网段: 10.8.2.0/24 (新增网段)
- 业务VIP网段: 10.8.100.0/24 (用于高可用服务)
隧道网段:
- HZ1 ↔ LA1: 10.100.1.0/30 (HZ1: .1, LA1: .2)
- HZ1 ↔ LA2: 10.100.2.0/30 (HZ1: .1, LA2: .2)
杭州侧网络:
- HZ1管理地址: 10.10.1.1/24
- 业务VPS: 10.10.2.0/24 - 10.10.10.0/24
2.2.2 协议栈优化
简化后的协议栈(针对每条隧道):
方案A(保持兼容):VLESS+REality → WireGuard (UDP模式)
方案B(性能优先):WireGuard over UDP (裸奔,依赖ACL/IP白名单)
决策:初期采用方案A,稳定性验证后评估方案B
2.2.3 健康检查指标体系
健康检查项目:
- 基础连通性: ICMP Ping (权重: 20%)
- 链路延迟: TCP Ping/HTTPing (权重: 30%)
- 链路抖动: 连续10次Ping标准差 (权重: 25%)
- 链路丢包: 100包丢包率 (权重: 25%)
质量评分阈值:
- 优质链路: 总分 ≥ 80分,OSPF cost = 10
- 可用链路: 总分 ≥ 60分,OSPF cost = 50
- 劣质链路: 总分 < 60分,OSPF cost = 200
- 故障链路: 完全不可达,OSPF cost = 65535
3. 分阶段实施计划
3.1 阶段一:手动切换双隧道(预计:5个工作日)
3.1.1 工作分解结构(WBS)
| 任务编号 | 任务描述 | 负责人 | 预计工时 | 依赖关系 | 完成标准 |
|---|---|---|---|---|---|
| T1.1 | LA2环境初始化与网络配置 | 网络工程师 | 4小时 | 无 | LA2可正常访问公网 |
| T1.2 | HZ1↔LA2隧道配置搭建 | 网络工程师 | 8小时 | T1.1 | WireGuard隧道建立成功 |
| T1.3 | 代理层配置(VLESS+REALITY) | 网络工程师 | 4小时 | T1.2 | 可通过代理建立隧道 |
| T1.4 | 策略路由基础配置 | 网络工程师 | 4小时 | T1.3 | ip rule/ip route配置完成 |
| T1.5 | 手动切换脚本开发 | DevOps工程师 | 8小时 | T1.4 | 切换脚本可一键执行 |
| T1.6 | 基础监控部署 | DevOps工程师 | 8小时 | T1.5 | Grafana可查看双隧道状态 |
| T1.7 | 回滚方案测试 | 网络工程师 | 4小时 | T1.6 | 可快速回退到单LA1模式 |
| 小计 | 40小时 |
3.1.2 详细配置示例
# HZ1上的WireGuard配置示例 (wg1.conf - 连接LA1)
[Interface]
Address = 10.100.1.1/30
PrivateKey = <HZ1私钥>
ListenPort = 51821
[Peer] # LA1
PublicKey = <LA1公钥>
Endpoint = 127.0.0.1:51820 # 通过本地VLESS端口转发
AllowedIPs = 10.8.1.0/24, 10.100.1.2/32
PersistentKeepalive = 25
# HZ1上的WireGuard配置示例 (wg2.conf - 连接LA2)
[Interface]
Address = 10.100.2.1/30
PrivateKey = <HZ1私钥2>
ListenPort = 51822
[Peer] # LA2
PublicKey = <LA2公钥>
Endpoint = 127.0.0.2:51820 # 通过本地VLESS端口转发
AllowedIPs = 10.8.2.0/24, 10.100.2.2/32
PersistentKeepalive = 25
3.1.3 验收标准(阶段一)
- ✅ 双隧道可同时建立并保持连接
- ✅ 通过策略路由可将指定流量导向LA2隧道
- ✅ 手动切换脚本可在60秒内完成主路径切换
- ✅ 监控系统可独立显示两条隧道状态
- ✅ 回滚到单隧道时间不超过5分钟
3.2 阶段二:智能路由与自动切换(预计:15个工作日)
3.2.1 工作分解结构(WBS)
| 任务编号 | 任务描述 | 负责人 | 预计工时 | 依赖关系 | 完成标准 |
|---|---|---|---|---|---|
| T2.1 | FRR软件包安装与基础配置 | 网络工程师 | 8小时 | T1.7 | FRR服务正常启动 |
| T2.2 | OSPF区域规划与配置 | 网络工程师 | 16小时 | T2.1 | 杭州内网OSPF邻居建立 |
| T2.3 | 健康检查脚本V1.0开发 | DevOps工程师 | 24小时 | T2.2 | 可输出链路质量评分 |
| T2.4 | FRR API集成与路由控制 | DevOps工程师 | 24小时 | T2.3 | 可通过脚本修改OSPF cost |
| T2.5 | 监控告警系统增强 | DevOps工程师 | 16小时 | T2.4 | 链路切换可触发告警 |
| T2.6 | 故障切换模拟测试 | 测试工程师 | 24小时 | T2.5 | 完成10类故障场景测试 |
| T2.7 | 性能基准测试 | 测试工程师 | 16小时 | T2.6 | 出具性能对比报告 |
| T2.8 | 文档编写与知识转移 | 技术文档工程师 | 16小时 | T2.7 | 完成运维手册 |
| 小计 | 144小时 |
3.2.2 关键实施细节
FRR OSPF配置示例(HZ1节点):
# /etc/frr/frr.conf
frr version 8.4_git
frr defaults traditional
hostname HZ1
router ospf
ospf router-id 10.10.1.1
network 10.10.0.0/16 area 0
network 10.100.1.0/30 area 0
network 10.100.2.0/30 area 0
passive-interface default
no passive-interface wg1
no passive-interface wg2
!
interface wg1
ip ospf cost 10 # 初始cost,由健康检查动态调整
ip ospf dead-interval minimal hello-multiplier 4
!
interface wg2
ip ospf cost 50 # 初始cost高于wg1
ip ospf dead-interval minimal hello-multiplier 4
!
健康检查脚本架构:
# health_check.py 核心逻辑
class TunnelHealthChecker:
def __init__(self, tunnel_name, target_ips):
self.tunnel_name = tunnel_name
self.target_ips = target_ips # LA侧的多个探测IP
self.history = deque(maxlen=10) # 最近10次检查结果
def run_check(self):
scores = {
'latency': self.check_latency(),
'jitter': self.check_jitter(),
'packet_loss': self.check_packet_loss(),
'tcp_connectivity': self.check_tcp_connectivity(),
'http_availability': self.check_http_availability()
}
total_score = self.calculate_weighted_score(scores)
self.adjust_ospf_cost(total_score)
def adjust_ospf_cost(self, score):
# 通过FRR的vtysh或API动态调整接口cost
if score >= 80:
cost = 10 # 优质
elif score >= 60:
cost = 50 # 可用
elif score >= 30:
cost = 200 # 劣质
else:
cost = 65535 # 故障
os.system(f"vtysh -c 'conf t' -c 'interface {self.tunnel_name}' -c 'ip ospf cost {cost}'")
3.2.3 测试计划(阶段二)
测试场景矩阵:
| 测试编号 | 测试场景 | 预期结果 | 通过标准 |
|---|---|---|---|
| TS-01 | 模拟LA1节点宕机 | 流量在5秒内切换至LA2 | 切换时间≤5秒,丢包≤1% |
| TS-02 | 模拟LA1链路高延迟(>200ms) | 部分流量切换至LA2 | 延迟敏感业务切换 |
| TS-03 | 模拟LA1链路丢包(>5%) | 主流量切换至LA2 | 30秒内完成切换 |
| TS-04 | 双隧道同时可用 | 流量按cost比例分配 | 流量分布与cost成反比 |
| TS-05 | 隧道恢复测试 | 流量回切至LA1 | 回切平稳,无路由震荡 |
| TS-06 | 杭州内网VPS故障 | 不影响其他VPS跨境 | 故障隔离成功 |
| TS-07 | 配置错误恢复 | 自动降级至安全模式 | 系统保持部分可用 |
| TS-08 | 长时间压力测试 | 72小时无异常 | 无内存泄漏,路由稳定 |
3.2.4 验收标准(阶段二)
- ✅ 自动故障切换时间≤10秒
- ✅ 路由收敛时间≤5秒
- ✅ 系统可用性≥99.9%(按月计算)
- ✅ 健康检查准确率≥95%
- ✅ 运维人员可在15分钟内定位常见故障
- ✅ 回滚到阶段一的时间不超过30分钟
4. 运维与监控体系
4.1 监控指标清单
| 监控层级 | 监控指标 | 告警阈值 | 检查频率 |
|---|---|---|---|
| 物理链路层 | 隧道接口状态 | 接口DOWN | 10秒 |
| 隧道MTU | <1300字节 | 5分钟 | |
| 隧道流量 | 超过带宽80% | 1分钟 | |
| 网络质量层 | 端到端延迟 | >150ms | 30秒 |
| 丢包率 | >3% | 30秒 | |
| 抖动(Jitter) | >30ms | 30秒 | |
| 路由控制层 | OSPF邻居状态 | 邻居失效 | 10秒 |
| 路由表变更 | 频繁变更(>5次/分) | 实时 | |
| FRR进程状态 | 进程异常退出 | 10秒 | |
| 业务影响层 | 关键业务可达性 | 不可达 | 1分钟 |
| TCP重传率 | >5% | 1分钟 | |
| 应用响应时间 | >基准值200% | 1分钟 |
4.2 告警与响应流程
监控告警触发
↓
自动分级(P0-P3)
↓
P0/P1: 自动执行应急预案
├── 尝试自动修复(如重启服务)
├── 如失败,自动切换至备用路径
└── 通知on-call工程师
↓
P2/P3: 仅通知,人工干预
↓
故障修复后,系统自动回归测试
↓
生成故障报告与改进项
4.3 日常运维检查清单
每日检查:
- 双隧道状态与流量统计
- 链路质量评分趋势
- OSPF路由表稳定性
- 关键业务连通性测试
每周检查:
- 健康检查逻辑有效性验证
- 配置文件备份与版本对比
- 日志轮转与存储空间
- 安全补丁与漏洞扫描
每月检查:
- 全链路故障切换演练
- 性能基准对比分析
- 架构优化方案评审
- 成本分析与优化
5. 风险分析与应对措施
5.1 技术风险
| 风险描述 | 影响程度 | 发生概率 | 缓解措施 | 应急方案 |
|---|---|---|---|---|
| FRR配置错误导致路由环路 | 高 | 中 | 1. 配置前在测试环境验证 2. 使用配置管理工具 3. 实施变更窗口制度 |
1. 紧急回滚脚本 2. 手动清除错误路由 |
| 健康检查误判导致频繁切换 | 中 | 中 | 1. 设置切换迟滞(30秒) 2. 多指标综合判断 3. 人工确认机制 |
1. 暂停自动切换 2. 切换为手动模式 |
| 双隧道同时故障 | 高 | 低 | 1. 不同云厂商 2. 不同网络供应商 3. 定期演练 |
1. 启用本地缓存/降级 2. 通知业务方 |
| MTU问题导致性能下降 | 中 | 高 | 1. 合理设置隧道MTU 2. 启用TCP MSS Clamping 3. 监控分片率 |
1. 临时调低MTU 2. 切换TCP优化模式 |
5.2 组织与流程风险
| 风险描述 | 缓解措施 | 负责人 |
|---|---|---|
| 人员技能不足 | 1. 分阶段培训计划 2. 编写详细操作手册 3. 建立 mentorship 机制 |
CTO |
| 变更管理不规范 | 1. 建立变更评审委员会 2. 实施蓝绿部署策略 3. 强制回滚测试 |
运维经理 |
| 监控覆盖不全 | 1. 建立监控即代码流程 2. 定期监控有效性评审 3. 用户反馈闭环 |
DevOps主管 |
6. 项目时间线
6.1 总体时间线
6.2 关键里程碑
| 里程碑 | 日期 | 交付物 | 验收方 |
|---|---|---|---|
| M1 - 项目启动 | 2024-01-01 | 项目章程、团队组建 | 项目管理委员会 |
| M2 - 阶段一完成 | 2024-01-22 | 1. 双隧道可运行 2. 手动切换已验证 3. 基础监控就绪 |
技术负责人 |
| M3 - 智能路由核心完成 | 2024-02-20 | 1. FRR+健康检查运行 2. 自动切换测试通过 3. 故障演练完成 |
技术负责人 |
| M4 - 阶段二完成 | 2024-03-06 | 1. 全套系统交付 2. 运维手册完成 3. 团队培训完成 |
项目管理委员会 |
| M5 - 运维转轨 | 2024-03-31 | 1. 监控告警闭环 2. SLO达标 3. 运维团队自主 |
运维总监 |
7. 资源需求与预算
7.1 人力资源
| 角色 | 投入比例 | 主要职责 | 关键技能要求 |
|---|---|---|---|
| 网络架构师 | 30% | 架构设计、技术决策 | 跨境网络、BGP/OSPF、WireGuard |
| 网络工程师 | 100% | 实施部署、配置管理 | Linux网络、防火墙、隧道技术 |
| DevOps工程师 | 80% | 自动化、监控、健康检查 | Python、Ansible、监控体系 |
| 测试工程师 | 50% | 测试方案、故障演练 | 网络测试工具、自动化测试 |
| 技术文档工程师 | 30% | 文档编写、知识管理 | 技术写作、图表制作 |
| 项目经理 | 50% | 进度跟踪、风险管理 | 项目管理、跨团队协调 |
7.2 基础设施资源
| 资源类型 | 规格要求 | 数量 | 用途 | 成本估算 |
|---|---|---|---|---|
| LA2 VPS | 2核4G,500Mbps带宽 | 1 | 备份出口节点 | $200/月 |
| 监控服务器 | 4核8G,200GB SSD | 1 | 集中监控与告警 | $150/月 |
| 测试环境VPS | 1核2G,100Mbps | 2 | 功能与性能测试 | $50/月 |
| 软件许可 | FRR商业支持(可选) | 1 | 专业技术支持 | $1000/年 |
| 月度小计 | $400 |
7.3 一次性投入
| 项目 | 估算成本 | 说明 |
|---|---|---|
| 架构设计咨询 | $5,000 | 外部专家评审(可选) |
| 培训与认证 | $3,000 | 团队技能提升 |
| 测试工具采购 | $1,000 | 专业网络测试工具 |
| 文档系统 | $500 | 知识库建设 |
| 总计 | $9,500 |
8. 成功标准与KPI
8.1 技术KPI
| KPI指标 | 当前值 | 目标值 | 测量方法 |
|---|---|---|---|
| 跨境网络可用性 | 约99.5% | ≥99.9% | 月度SLA计算 |
| 故障切换时间 | 人工(5-30分钟) | 自动(≤10秒) | 模拟故障测试 |
| 链路利用率峰值 | LA1: 80% | 双链路均衡 | 监控系统统计 |
| 运维介入频率 | 每周2-3次 | 每月≤2次 | 运维工单统计 |
| 故障平均恢复时间(MTTR) | 2小时 | ≤30分钟 | 故障处理记录 |
8.2 业务KPI
| KPI指标 | 目标值 | 测量周期 | 责任人 |
|---|---|---|---|
| 业务投诉减少 | 减少50% | 月度 | 客服经理 |
| 跨境业务性能评分 | 提升30% | 季度 | 产品经理 |
| 成本优化率 | 带宽成本降低20% | 半年 | 财务总监 |
| 团队技能提升 | 3人获得相关认证 | 项目结束时 | 人力资源 |
8.3 验收检查表
项目最终验收标准:
- 双隧道稳定运行30天无重大故障
- 完成3次完整的故障切换演练并记录
- 运维团队可独立处理90%以上常见问题
- 监控覆盖率≥95%,告警准确率≥90%
- 所有文档已提交并归档
- 项目成果演示给相关干系人
- 后续6个月优化计划已制定
9. 附录
9.1 术语表
| 术语 | 解释 |
|---|---|
| CN2 GIA | 中国电信优质国际线路 |
| 三网直连 | 同时优化电信、联通、移动访问 |
| OSPF Cost | 开放最短路径优先协议的开销值 |
| 路由收敛 | 网络拓扑变化后,所有路由器更新路由表的过程 |
| MTU | 最大传输单元,单次可传输的最大数据包大小 |
9.2 参考文档
- 《WireGuard生产环境部署最佳实践》
- 《FRR OSPF配置指南》
- 《跨境网络质量监控白皮书》
- 《高可用网络架构设计模式》
- 《项目变更管理流程规范》
9.3 紧急联系人
| 场景 | 联系人 | 联系电话 | 备用联系人 |
|---|---|---|---|
| 重大网络故障 | 网络值班工程师 | +86-138-XXXX-XXXX | 网络架构师 |
| 系统自动切换失败 | DevOps值班 | +86-139-XXXX-XXXX | DevOps主管 |
| 业务影响评估 | 业务负责人 | +86-136-XXXX-XXXX | 产品经理 |
| 供应商协调 | 采购负责人 | +86-137-XXXX-XXXX | 运维总监 |
文档审批
| 角色 | 姓名 | 签字 | 日期 | 意见 |
|---|---|---|---|---|
| 项目经理 | ||||
| 技术负责人 | ||||
| 运维总监 | ||||
| 项目发起人 |
文档版本历史:
| 版本 | 日期 | 修改人 | 修改说明 |
|---|---|---|---|
| 1.0 | 2024-01-01 | 网络架构部 | 初始版本 |
| 1.1 | 2024-01-05 | 网络架构部 | 增加测试计划细节 |
| 1.2 | 2024-01-10 | DevOps团队 | 完善监控与自动化部分 |
文档状态: ✅ 审批通过 / ⏳ 待审批 / 🔄 修订中
评论区