SASE Capacity Planning
SASE Framework Capacity Planning SD-WAN SWG CASB ZTNA FWaaS PoP Bandwidth Sizing License Monitoring Production
| Component | Sizing Metric | Per 1000 Users | Growth Factor |
|---|---|---|---|
| SD-WAN | Bandwidth (Mbps) | 1.8-3 Gbps | +20-30%/year |
| SWG | Throughput (Mbps) | 2.2-3.6 Gbps (SSL) | +25%/year |
| ZTNA | Concurrent Connections | 1,800 connections | +30%/year |
| CASB | API Calls/day | 500K calls/day | +20%/year |
| FWaaS | Rules Processing | 2-3.3 Gbps | +20%/year |
| PoP | Latency (ms) | < 20ms to nearest PoP | Add PoP per Region |
Capacity Calculation
# === SASE Capacity Calculator ===
from dataclasses import dataclass
@dataclass
class SASESizing:
component: str
formula: str
example_1000_users: str
growth_rate: float
year3_estimate: str
sizing = [
SASESizing("SD-WAN Bandwidth",
"Users x Concurrent% x AvgMbps x 1.3(overhead) x 1.5(peak)",
"1000 x 0.6 x 3 x 1.3 x 1.5 = 3.51 Gbps",
0.25,
"3.51 x 1.25^3 = 6.85 Gbps"),
SASESizing("SWG Throughput",
"SD-WAN Bandwidth x 1.2 (SSL Inspection)",
"3.51 x 1.2 = 4.21 Gbps",
0.25,
"4.21 x 1.25^3 = 8.22 Gbps"),
SASESizing("ZTNA Connections",
"Concurrent Users x 3 (Multi-app)",
"600 x 3 = 1,800 connections",
0.30,
"1800 x 1.30^3 = 3,952 connections"),
SASESizing("CASB API Calls",
"Users x SaaS Apps x 100 calls/day",
"1000 x 5 x 100 = 500K calls/day",
0.20,
"500K x 1.20^3 = 864K calls/day"),
SASESizing("FWaaS Processing",
"SD-WAN Bandwidth x 1.1 (Rule Processing)",
"3.51 x 1.1 = 3.86 Gbps",
0.25,
"3.86 x 1.25^3 = 7.54 Gbps"),
SASESizing("License Count",
"Current Users x 1.2 (Buffer)",
"1000 x 1.2 = 1,200 licenses",
0.15,
"1200 x 1.15^3 = 1,825 licenses"),
]
print("=== SASE Sizing (1000 Users) ===")
for s in sizing:
print(f"\n [{s.component}]")
print(f" Formula: {s.formula}")
print(f" Now: {s.example_1000_users}")
print(f" Growth: {s.growth_rate*100:.0f}%/year")
print(f" Year 3: {s.year3_estimate}")
PoP Selection & Architecture
# === PoP Selection Strategy ===
# Architecture
# User (Bangkok) → PoP (Singapore) → SASE Cloud → App (AWS ap-southeast-1)
# User (London) → PoP (London) → SASE Cloud → App (AWS eu-west-1)
# User (NYC) → PoP (New York) → SASE Cloud → App (AWS us-east-1)
@dataclass
class PoPRegion:
region: str
users: int
pop_location: str
latency_target: str
redundancy: str
bandwidth: str
pops = [
PoPRegion("Southeast Asia",
500, "Singapore + Bangkok",
"< 15ms",
"2 PoPs (SG primary, BKK secondary)",
"2 Gbps"),
PoPRegion("Europe",
200, "London + Frankfurt",
"< 20ms",
"2 PoPs (LON primary, FRA secondary)",
"800 Mbps"),
PoPRegion("North America",
200, "New York + San Jose",
"< 20ms",
"2 PoPs (NYC primary, SJC secondary)",
"800 Mbps"),
PoPRegion("Japan/Korea",
100, "Tokyo",
"< 15ms",
"1 PoP (TKY) + Failover to SG",
"400 Mbps"),
]
print("=== PoP Selection ===")
for p in pops:
print(f" [{p.region}] Users: {p.users}")
print(f" PoP: {p.pop_location}")
print(f" Latency: {p.latency_target} | Redundancy: {p.redundancy}")
print(f" Bandwidth: {p.bandwidth}")
Monitoring & Forecasting
# === SASE Monitoring Dashboard ===
@dataclass
class SASEMetric:
metric: str
source: str
threshold: str
action: str
metrics = [
SASEMetric("Bandwidth Utilization per PoP",
"SASE Dashboard / SNMP",
"> 80% sustained 15 min",
"Upgrade PoP Bandwidth หรือ Add PoP"),
SASEMetric("User-to-PoP Latency",
"DEM / Synthetic Monitoring",
"> 50ms P95",
"เพิ่ม PoP ใกล้ User หรือ ตรวจ ISP Issue"),
SASEMetric("SSL Inspection Throughput",
"SWG Metrics",
"> 70% capacity",
"Upgrade SWG License/Capacity"),
SASEMetric("ZTNA Connection Failures",
"ZTNA Logs",
"> 5% failure rate",
"ตรวจ Policy Config / Scale ZTNA Capacity"),
SASEMetric("License Usage",
"SASE Admin Console",
"> 90% of licensed users",
"ซื้อ License เพิ่มก่อนหมด"),
SASEMetric("DEM Score",
"Digital Experience Monitoring",
"Score < 70/100",
"ตรวจ Network Path / PoP Performance"),
SASEMetric("Capacity Forecast",
"Historical Data + ML Prediction",
"Projected > 80% ใน 3 เดือน",
"วางแผน Upgrade ล่วงหน้า"),
]
print("=== Monitoring Metrics ===")
for m in metrics:
print(f" [{m.metric}]")
print(f" Source: {m.source}")
print(f" Threshold: {m.threshold}")
print(f" Action: {m.action}")
เคล็ดลับ
- Baseline: วัด Baseline Traffic 30 วันก่อนวางแผน
- Peak: เผื่อ Peak 1.5x ของ Average Traffic
- PoP: เลือก PoP ใกล้ User Latency < 20ms
- License: ซื้อ License เผื่อ 20% Buffer
- Forecast: วางแผน 3 ปี ด้วย Growth Rate จริง
การนำไปใช้งานจริงในองค์กร
สำหรับองค์กรขนาดกลางถึงใหญ่ แนะนำให้ใช้หลัก Three-Tier Architecture คือ Core Layer ที่เป็นแกนกลางของระบบ Distribution Layer ที่ทำหน้าที่กระจาย Traffic และ Access Layer ที่เชื่อมต่อกับผู้ใช้โดยตรง การแบ่ง Layer ชัดเจนช่วยให้การ Troubleshoot ง่ายขึ้นและสามารถ Scale ระบบได้ตามความต้องการ
เรื่อง Network Security ก็สำคัญไม่แพ้กัน ควรติดตั้ง Next-Generation Firewall ที่สามารถ Deep Packet Inspection ได้ ใช้ Network Segmentation แยก VLAN สำหรับแต่ละแผนก ติดตั้ง IDS/IPS เพื่อตรวจจับการโจมตี และทำ Regular Security Audit อย่างน้อยปีละ 2 ครั้ง
เปรียบเทียบข้อดีและข้อเสีย
จากตารางเปรียบเทียบจะเห็นว่าข้อดีมีมากกว่าข้อเสียอย่างชัดเจน โดยเฉพาะในแง่ของประสิทธิภาพและความสามารถในการ Scale สำหรับข้อเสียส่วนใหญ่สามารถแก้ไขได้ด้วยการเรียนรู้อย่างเป็นระบบและวางแผนทรัพยากรให้เหมาะสม
SASE คืออะไร
Secure Access Service Edge SD-WAN SWG CASB ZTNA FWaaS DLP Cloud-delivered PoP Remote Work Zscaler Prisma Netskope Cloudflare
Capacity Planning ทำอย่างไร
Baseline Traffic Users Concurrent Peak Growth Rate 80% Target Sizing Components License PoP Selection Latency Redundancy Buffer
Sizing ทำอย่างไร
1-5 Mbps/User Concurrent 60% Peak 1.5x SSL 1.2x ZTNA x3 CASB 100 calls/user/day License +20% Buffer Growth 3 ปี
Monitor อย่างไร
Bandwidth Utilization Latency SSL Throughput ZTNA Failures License Usage DEM Score Forecast 3 เดือน Alert Threshold Action
สรุป
SASE Framework Capacity Planning SD-WAN SWG CASB ZTNA FWaaS PoP Sizing License Monitoring Forecast Production
