Segment Routing Agile Scrum Kanban —
SR Agile

Segment Routing Agile Scrum Kanban SR-MPLS SRv6 Traffic Engineering Network Automation CI/CD Ansible NAPALM Sprint Backlog Retrospective Production
| Feature | SR-MPLS | SRv6 | Traditional MPLS |
|---|---|---|---|
| SID Type | MPLS Label 20-bit | IPv6 128-bit | LDP/RSVP Label |
| Protocol | IGP Extension | IGP + SRH | LDP + RSVP-TE |
| Complexity | ต่ำ | ปานกลาง | สูง |
| TE Support | SR Policy | SR Policy + SRH | RSVP-TE Tunnel |
| Service Chain | จำกัด | Native SRH | ไม่รองรับ |
| Hardware | MPLS existing | IPv6 capable | MPLS existing |
| เหมาะกับ | Brownfield ISP | Greenfield DC | Legacy |
SR Configuration
=== Segment Routing Configuration ===
Cisco IOS-XR — SR-MPLS
router isis CORE
address-family ipv4 unicast
segment-routing mpls
!
interface Loopback0
address-family ipv4 unicast
prefix-sid index 100
!
interface GigabitEthernet0/0/0/0
address-family ipv4 unicast
adjacency-sid absolute 15001
segment-routing
traffic-eng
เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ angular native คือ — ข้อมูลครบถ้วน 2026
policy GOLD
color 100 end-point ipv4 10.0.0.5
candidate-paths
preference 100
explicit segment-list SL-GOLD
แนะนำเพิ่มเติม — สัญญาณเทรดรายวัน XM Signal
index 10 mpls label 16002
index 20 mpls label 16005
Juniper — SRv6
set protocols isis source-packet-routing srv6
set protocols isis source-packet-routing node-segment ipv6-index 100
set protocols source-packet-routing srv6
locator LOC1 prefix 2001:db8:1::/48
Ansible Playbook for SR Deployment
- name: Deploy SR-MPLS Config
hosts: routers
gather_facts: no
เนื้อหาเกี่ยวข้อง — ดูเพิ่มเติมเรื่อง Immutable OS Fedora CoreOS Best Practices
tasks:
- name: Configure Prefix-SID
ios_config:
lines:
- segment-routing mpls
- prefix-sid index {{ sr_index }}
parents:
- router isis CORE
- interface Loopback0
- address-family ipv4 unicast
from dataclasses import dataclass
@dataclass
class SRNode:
hostname: str
role: str
loopback: str
prefix_sid: int
adjacency_sids: str
flex_algo: str
nodes = [
แนะนำเพิ่มเติม — ระบบเทรดของ iCafeForex
SRNode("PE1", "Provider Edge", "10.0.0.1", 16001, "24001-24004", "Algo 128 (low-latency)"),
SRNode("P1", "Core", "10.0.0.2", 16002, "24011-24014", "Algo 0 (SPF)"),
SRNode("P2", "Core", "10.0.0.3", 16003, "24021-24024", "Algo 0 (SPF)"),
SRNode("PE2", "Provider Edge", "10.0.0.4", 16004, "24031-24034", "Algo 128 (low-latency)"),
SRNode("PE3", "Provider Edge", "10.0.0.5", 16005, "24041-24044", "Algo 129 (low-jitter)"),
]
print("=== SR Network Nodes ===")
เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ LlamaIndex RAG Interview Preparation
for n in nodes:
print(f" [{n.hostname}] Role: {n.role} | Lo0: {n.loopback}")
print(f" Prefix-SID: {n.prefix_sid} | Adj-SIDs: {n.adjacency_sids}")
print(f" Flex-Algo: {n.flex_algo}")
Agile Network Management
# === Agile Scrum for Network Operations ===
@dataclass
class SprintTask:
task_id: str
title: str
priority: str
status: str
assignee: str
sprint: str
tasks = [
SprintTask("NET-101", "Deploy SR-MPLS on PE1-PE2", "High", "Done", "Alice", "Sprint 12"),
SprintTask("NET-102", "Configure Flex-Algo 128", "High", "In Progress", "Bob", "Sprint 12"),
SprintTask("NET-103", "Setup TI-LFA for fast reroute", "Medium", "To Do", "Charlie", "Sprint 12"),
SprintTask("NET-104", "Ansible playbook for SR policy", "Medium", "In Progress", "Alice", "Sprint 12"),
SprintTask("NET-105", "Monitor SR counters Grafana", "Low", "To Do", "Bob", "Sprint 13"),
SprintTask("NET-106", "SRv6 POC in lab", "Low", "Backlog", "Charlie", "Sprint 13"),
]
print("=== Sprint Board ===")
for t in tasks:
print(f" [{t.task_id}] {t.title}")
print(f" Priority: {t.priority} | Status: {t.status}")
print(f" Assignee: {t.assignee} | Sprint: {t.sprint}")
# Kanban Metrics
kanban = {
"Lead Time": "Config request to production: 3.5 days avg",
"Cycle Time": "Development to deployment: 1.2 days avg",
"WIP Limit": "Max 3 tasks per engineer",
"Throughput": "8 network changes per sprint",
"Blocked Rate": "12% — mostly waiting for change window",
"Defect Rate": "2% — config rollback needed",
}
print(f"\n\nKanban Metrics:")
for k, v in kanban.items():
print(f" [{k}]: {v}")
Automation Pipeline
=== CI/CD for Network Config ===
GitLab CI Pipeline
stages:

- validate
- test
- deploy
validate:
stage: validate
script:
- python -m py_compile config_generator.py
- yamllint inventory/*.yml
- ansible-lint playbooks/*.yml
test:
stage: test
script:
- batfish-client validate configs/
- pytest tests/test_sr_config.py
deploy:
stage: deploy
script:
- ansible-playbook -i inventory/production playbooks/sr_deploy.yml
when: manual
only: [main]
@dataclass
class PipelineStage:
stage: str
tools: str
duration: str
gate: str
เนื้อหาเกี่ยวข้อง — แนะนำให้อ่าน Webhook Design Pattern Best Practices ที่ต้องรู้
rollback: str
stages = [
PipelineStage("Lint", "yamllint ansible-lint pylint", "30s", "Auto pass", "N/A"),
PipelineStage("Validate", "Batfish config analysis", "2 min", "No errors", "Block deploy"),
PipelineStage("Unit Test", "pytest mock routers", "1 min", "100% pass", "Block deploy"),
PipelineStage("Integration", "Lab routers GNS3/EVE-NG", "10 min", "Connectivity verified", "Block deploy"),
PipelineStage("Deploy Staging", "Ansible to staging", "5 min", "Health check pass", "Auto rollback"),
PipelineStage("Deploy Production", "Ansible to production", "15 min", "Manual approval + health", "Auto rollback"),
]
print("CI/CD Pipeline:")
for s in stages:
print(f" [{s.stage}] Tools: {s.tools}")
print(f" Duration: {s.duration} | Gate: {s.gate}")
print(f" Rollback: {s.rollback}")
เคล็ดลับ
- Prefix-SID: กำหนด Prefix-SID Index ตาม Convention เช่น 1xxxx ต่อ Node
- TI-LFA: เปิด TI-LFA ทุก Interface สำหรับ Fast Reroute < 50ms
- Ansible: ใช้ Ansible สำหรับ Config ทุกครั้ง ไม่ Manual CLI
- Sprint: วางแผน Network Change เป็น Sprint 2 สัปดาห์
- Rollback: เตรียม Rollback Config ทุกครั้งก่อน Deploy
Segment Routing คืออะไร
Segment ID SID กำหนดเส้นทาง SR-MPLS Label SRv6 IPv6 ลดความซับซ้อน IGP OSPF IS-IS Traffic Engineering Flex-Algo TI-LFA Fast Reroute





