在亚马逊云科技 VPC 中构建 QoS 网络限速功能

在亚马逊云科技 VPC 中构建 QoS 网络限速功能

💡 原文中文,约28000字,阅读约需67分钟。
📝

内容提要

本文介绍在AWS VPC中基于Transit Gateway Connect、FRR与Linux TC构建主备式QoS VNF,对VPC出口流量集中分级限速。VNF部署于独立net-vpc,通过GRE隧道和BGP引流,并用两张TGW路由表避免环路。TC采用HTB加fq_codel,按端口分类:高优先级保证80Mbit/s,尽力而为保证20Mbit/s,空闲带宽可互借。实验显示竞争时约为79.5/19.9Mbit/s,主备切换约25秒,并给出排空维护方法。

🔎

延伸解读

为什么必须用两张 TGW 路由表

文章把避免环路的关键放在按入口区分路由表:业务 VPC 进入 TGW 的流量走 spoke 表,匹配 VNF 发布的默认路由;VNF 解封装后送回 TGW 的流量走 vnf 表,直接去目的 VPC。若只有一张表,回送的包会再次匹配指向 VNF 的路由,形成环路。同时 vnf 表不能传播 net-vpc 网段,否则 VNF 访问本 VPC 的流量也会被引入隧道。

主备切换的实测代价与排空方法

实验显示,VNF1 数据面静默故障后,TGW 依赖 BGP hold time 发现故障,从故障到 VNF2 接管约 25 秒,其中多出的部分是 TGW 侧路由收敛,无法通过 VNF 配置继续缩短。计划内维护时,直接关闭 BGP 会话会造成约 25 秒中断;文章推荐临时加长默认路由 AS 路径来排空流量,保持会话和路由不变,实测排空、重启、回切全程无中断。

吞吐上限与实例选型提醒

文章指出每个 TGW Connect 对端最高支持 5 Gbps 和 300,000 pps,且不可调整;本方案同一时刻只有一条 GRE 隧道承载流量,因此整体吞吐上限约 5 Gbps,小报文时 pps 限制会更早成为瓶颈。VNF 实例自身网络带宽也是上限,文中 c6g.large 基线带宽仅 0.75 Gbps,生产环境应按持续带宽选择实例规格,而不能只看突发能力。

分类位置可以前移到终端节点

文章在 VNF 上按端口分类,但也讨论了另一种做法:由应用或主机为报文打 DSCP 标记,VNF 上的 TC 改为按 DSCP 匹配,HTB 整形和调度仍集中在 VNF。好处是业务识别规则由最了解业务的一方维护,新增业务不必改 VNF 配置;代价是 VNF 需要信任终端标记,必要时对不可信来源重新标记,并确认 DSCP 在整条路径上不被修改。

❓

Q&A

如何在AWS VPC中实现基于业务优先级的带宽限速?

可以部署主备式QoS VNF(EC2实例),通过Transit Gateway Connect挂载将VPC间流量经GRE隧道引流到VNF,VNF使用Linux TC的HTB qdisc按端口分类:高优先级流量(如端口8080)保证80Mbit/s,尽力而为流量保证20Mbit/s,空闲带宽可互借,总带宽100Mbit/s。

为什么需要两张TGW路由表来避免流量环路?

因为VNF调度后需将解封装的数据包送回TGW,若只有一张路由表,包会再次匹配指向VNF的路由造成环路。方案中spoke表关联业务VPC并传播VNF发布的默认路由,使流量进入VNF;vnf表关联Connect挂载和net-vpc,并传播业务VPC网段,使VNF回来的流量直接送往目的VPC。

VNF主备切换需要多长时间,如何加快?

实验中主备切换约25秒(BGP hold time设为9秒时)。加快切换可缩短BGP hold time(如timers 3 9),但TGW侧路由收敛约20秒无法通过VNF配置缩短。计划内维护可通过AS路径加长排空流量实现零中断。

如何对VNF进行计划内维护而不中断业务?

推荐保持BGP会话不变,在VNF1的route-map TGW-DEFAULT中临时加长AS路径(如set as-path prepend 65001 65001 65001 65001),并执行clear bgp * soft out,使TGW将流量切到VNF2,而VNF1继续转发切换期间流量。维护后执行no set as-path prepend恢复,重启FRR或实例后VNF1自动恢复为主用。

这个方案与Gateway Load Balancer(GWLB)有何区别?

GWLB适用于旁路或串接的安全设备(如防火墙、检测),提供自动健康检查和扩展,但不依赖BGP路由引流。本方案适用于需要通过BGP路由将流量引到设备、且需要全局统一带宽调度的场景,使用TGW Connect和FRR实现。

VNF的吞吐上限是多少?受哪些因素限制?

每个TGW Connect对端(GRE隧道)最高支持5Gbps带宽和300,000 pps,且不可调整。本方案同一时刻只有一台VNF承载流量,因此整体吞吐上限约5Gbps;小报文时pps限制更早成为瓶颈(如1500字节报文约3.6Gbps)。VNF实例自身网络带宽也是上限,如c6g.large基线0.75Gbps(突发10Gbps)。

🏷️

标签

➡️

继续阅读