SiamCafe.net Blog
Technology

Segment Routing Production Setup Guide

segment routing production setup guide
Segment Routing Production Setup Guide | SiamCafe Blog
2025-10-02· อ. บอม — SiamCafe.net· 9,918 คำ

Segment Routing Production

Segment Routing SR-MPLS SRv6 Traffic Engineering ISIS OSPF Node SID Adjacency SID TI-LFA SR Policy Production Network SRGB Performance Measurement

TechnologyProtocolComplexityScaleFuture
SR-MPLSMPLS + IGPต่ำสูงมากCurrent
SRv6IPv6 + SRHปานกลางสูงมากNext-gen
RSVP-TERSVP + MPLSสูงปานกลางLegacy
LDPLDP + MPLSปานกลางสูงLegacy

SR-MPLS Configuration

# === Segment Routing MPLS Setup ===

# Cisco IOS-XR — ISIS SR Configuration
# router isis CORE
#  is-type level-2-only
#  net 49.0001.0000.0000.0001.00
#  address-family ipv4 unicast
#   metric-style wide
#   segment-routing mpls
#   segment-routing prefix-sid-map advertise-local
#  !
#  interface Loopback0
#   passive
#   address-family ipv4 unicast
#    prefix-sid index 1
#  !
#  interface GigabitEthernet0/0/0/0
#   point-to-point
#   address-family ipv4 unicast
#    fast-reroute per-prefix
#    fast-reroute per-prefix ti-lfa
#  !

# SRGB Configuration
# segment-routing
#  global-block 16000 23999
# !

# SR Policy (Traffic Engineering)
# segment-routing
#  traffic-eng
#   segment-list PATH-TO-PE2
#    index 10 mpls label 16002
#    index 20 mpls label 16005
#   !
#   policy LOW-LATENCY
#    color 100 end-point ipv4 10.0.0.2
#    candidate-paths
#     preference 100
#      explicit segment-list PATH-TO-PE2
#     !

# Juniper JunOS
# set protocols isis interface lo0.0 passive
# set protocols isis source-packet-routing
#     node-segment ipv4-index 1
# set protocols isis source-packet-routing srgb start-label 16000 index-range 8000

from dataclasses import dataclass
from typing import List

@dataclass
class RouterConfig:
    hostname: str
    role: str
    loopback: str
    node_sid: int
    isis_level: str
    ti_lfa: bool

routers = [
    RouterConfig("PE1", "Provider Edge", "10.0.0.1", 16001, "L2", True),
    RouterConfig("P1", "Provider", "10.0.0.2", 16002, "L2", True),
    RouterConfig("P2", "Provider", "10.0.0.3", 16003, "L2", True),
    RouterConfig("P3", "Provider", "10.0.0.4", 16004, "L2", True),
    RouterConfig("PE2", "Provider Edge", "10.0.0.5", 16005, "L2", True),
]

print("=== SR Network Topology ===")
for r in routers:
    print(f"  [{r.hostname}] {r.role} | Lo0: {r.loopback}")
    print(f"    Node SID: {r.node_sid} | ISIS: {r.isis_level} | TI-LFA: {r.ti_lfa}")

TI-LFA Fast Reroute

# === TI-LFA (Topology Independent LFA) ===

# TI-LFA ให้ Fast Reroute < 50ms
# ไม่ต้อง Pre-compute Backup Path ทุก Topology
# ใช้ SR Label Stack สร้าง Backup Path

# IOS-XR TI-LFA Verification
# show isis fast-reroute summary
# show isis fast-reroute detail
# show mpls forwarding
# show segment-routing mapping-server prefix-sid-map

# Failover Test
# interface GigabitEthernet0/0/0/0
#  shutdown
# ! — Traffic should reroute in < 50ms

@dataclass
class TILFAResult:
    prefix: str
    primary_path: str
    backup_path: str
    backup_labels: str
    convergence_ms: int

tilfa = [
    TILFAResult("10.0.0.5/32", "PE1->P1->PE2", "PE1->P2->P3->PE2",
                "[16003, 16004, 16005]", 35),
    TILFAResult("10.0.0.3/32", "PE1->P1->P2", "PE1->P3->P2",
                "[16004, 16003]", 28),
    TILFAResult("10.0.0.4/32", "PE1->P2->P3", "PE1->P1->P3",
                "[16002, 16004]", 42),
]

print("\n=== TI-LFA Backup Paths ===")
for t in tilfa:
    print(f"  [{t.prefix}]")
    print(f"    Primary: {t.primary_path}")
    print(f"    Backup:  {t.backup_path}")
    print(f"    Labels:  {t.backup_labels} | Convergence: {t.convergence_ms}ms")

Monitoring และ Verification

# === SR Monitoring ===

# Verification Commands (IOS-XR)
# show segment-routing mpls state
# show segment-routing mpls connected-prefix-sid-map
# show isis segment-routing prefix-sid-map active-policy
# show mpls traffic-eng tunnels
# show segment-routing traffic-eng policy all

# SR Performance Measurement
# performance-measurement
#  interface GigabitEthernet0/0/0/0
#   delay-measurement
#  !
#  delay-profile interfaces default
#   advertisement
#    accelerated minimum-change 500
#    periodic interval 30
#  !

# Python — SR Monitoring Script
# import paramiko
# import re
#
# def get_sr_status(host, username, password):
#     ssh = paramiko.SSHClient()
#     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#     ssh.connect(host, username=username, password=password)
#
#     stdin, stdout, stderr = ssh.exec_command(
#         'show segment-routing mpls connected-prefix-sid-map'
#     )
#     output = stdout.read().decode()
#
#     sids = re.findall(r'(\d+\.\d+\.\d+\.\d+/\d+)\s+(\d+)', output)
#     return sids

deployment_checklist = {
    "IGP SR-enabled": "ISIS/OSPF ทุก Router เปิด segment-routing",
    "SRGB Consistent": "Global Block เดียวกันทุกตัว (16000-23999)",
    "Node SID Unique": "ทุก Loopback มี Unique prefix-sid index",
    "TI-LFA Enabled": "เปิด TI-LFA ทุก Interface",
    "SR Policy": "สร้าง SR Policy สำหรับ Traffic Engineering",
    "Monitoring": "SR-PM วัด Delay ทุก Link",
    "Failover Test": "ทดสอบ Shutdown Link ตรวจ Convergence < 50ms",
    "Backup Verified": "ตรวจ TI-LFA Backup Path ทุก Prefix",
}

print("Production Deployment Checklist:")
for item, desc in deployment_checklist.items():
    print(f"  [ ] {item}: {desc}")

เคล็ดลับ

การนำความรู้ไปประยุกต์ใช้งานจริง

แหล่งเรียนรู้ที่แนะนำ ได้แก่ Official Documentation ที่อัพเดทล่าสุดเสมอ Online Course จาก Coursera Udemy edX ช่อง YouTube คุณภาพทั้งไทยและอังกฤษ และ Community อย่าง Discord Reddit Stack Overflow ที่ช่วยแลกเปลี่ยนประสบการณ์กับนักพัฒนาทั่วโลก

เปรียบเทียบข้อดีและข้อเสีย

ข้อดีข้อเสีย
ประสิทธิภาพสูง ทำงานได้เร็วและแม่นยำ ลดเวลาทำงานซ้ำซ้อนต้องใช้เวลาเรียนรู้เบื้องต้นพอสมควร มี Learning Curve สูง
มี Community ขนาดใหญ่ มีคนช่วยเหลือและแหล่งเรียนรู้มากมายบางฟีเจอร์อาจยังไม่เสถียร หรือมีการเปลี่ยนแปลงบ่อยในเวอร์ชันใหม่
รองรับ Integration กับเครื่องมือและบริการอื่นได้หลากหลายต้นทุนอาจสูงสำหรับ Enterprise License หรือ Cloud Service
เป็น Open Source หรือมีเวอร์ชันฟรีให้เริ่มต้นใช้งานต้องการ Hardware หรือ Infrastructure ที่เพียงพอ

จากตารางเปรียบเทียบจะเห็นว่าข้อดีมีมากกว่าข้อเสียอย่างชัดเจน โดยเฉพาะในแง่ของประสิทธิภาพและความสามารถในการ Scale สำหรับข้อเสียส่วนใหญ่สามารถแก้ไขได้ด้วยการเรียนรู้อย่างเป็นระบบและวางแผนทรัพยากรให้เหมาะสม

Segment Routing คืออะไร

Network Architecture Segments Labels SIDs Source Routing ไม่ต้อง LDP RSVP-TE SR-MPLS SRv6 Traffic Engineering ลดความซับซ้อน

SR-MPLS กับ SRv6 ต่างกันอย่างไร

SR-MPLS Label Stack MPLS Network Transition ง่าย SRv6 IPv6 SRH Native Network Programming อนาคต ต้อง IPv6

ทำไมใช้ SR แทน RSVP-TE

Stateless ไม่ต้อง State ทุก Router ลด Complexity ไม่ต้อง LDP RSVP IGP อย่างเดียว Scale ดี TI-LFA < 50ms

Production Deployment ต้องเตรียมอะไร

IGP SR-enabled SRGB เดียวกัน Node SID Unique TI-LFA SR Policy Monitoring SR-PM Failover Test Backup Verify

สรุป

Segment Routing SR-MPLS SRv6 Production ISIS OSPF Node SID Adjacency SID SRGB TI-LFA Fast Reroute SR Policy Traffic Engineering Performance Measurement Monitoring

📖 บทความที่เกี่ยวข้อง

Segment Routing Data Pipeline ETLอ่านบทความ → Istio Traffic Management Production Setup Guideอ่านบทความ → Segment Routing API Gateway Patternอ่านบทความ → Segment Routing Cost Optimization ลดค่าใช้จ่ายอ่านบทความ → Segment Routing Cloud Migration Strategyอ่านบทความ →

📚 ดูบทความทั้งหมด →