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
# policy GOLD
# color 100 end-point ipv4 10.0.0.5
# candidate-paths
# preference 100
# explicit segment-list SL-GOLD
# 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
# 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 = [
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 ===")
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
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
Agile ช่วยจัดการ Network อย่างไร
Scrum Sprint 2 สัปดาห์ Kanban Board Task Backlog Priority P1 P2 P3 Retrospective CI/CD Pipeline Automation ลด Manual Error เร็ว
SR-MPLS กับ SRv6 ต่างกันอย่างไร
SR-MPLS Label 20-bit Hardware เดิม Brownfield SRv6 IPv6 128-bit Network Programming SRH Service Chaining Greenfield ยืดหยุ่นกว่า
Network Automation ทำอย่างไร
Ansible Playbook Netmiko SSH NAPALM Multi-vendor Nornir Parallel Git Version CI/CD Pipeline Batfish Validation YANG Model Structured
สรุป
Segment Routing Agile Scrum Kanban SR-MPLS SRv6 Traffic Engineering Flex-Algo TI-LFA Network Automation Ansible CI/CD Pipeline Sprint Production
