Nâng cấp mạng lúc 2 giờ sáng: Tại sao lại chọn SRv6?
Đã 2 giờ sáng, và tôi đang nhìn chằm chằm vào hệ thống lõi MPLS cũ kỹ vốn đã chạm đến giới hạn. LDP flap liên tục gây ra các vòng lặp vi mô (micro-loops), và các đường hầm RSVP-TE mà chúng tôi xây dựng để điều phối lưu lượng (traffic engineering) đã trở thành một cơn ác mộng về quản lý. Đó là khoảnh khắc tôi nhận ra rằng việc bám víu vào các giao thức từ 20 năm trước trong khi đang mở rộng hạ tầng backbone 100G hiện đại là một cuộc chiến nắm chắc phần thua nếu không tối ưu hóa mạng Linux để đạt hiệu suất thực tế.
Ngành công nghiệp mạng đang chuyển dịch nhanh chóng sang Segment Routing over IPv6 (SRv6). Khác với MPLS truyền thống, SRv6 không cần một giao thức báo hiệu nhãn riêng biệt. Nó sử dụng chính tiêu đề (header) IPv6 để mang các chỉ thị, được gọi là các Segment. Nếu phần cứng của bạn có thể định tuyến IPv6, bạn đã đi được nửa chặng đường tới một mạng lưới có khả năng lập trình toàn diện, dễ dàng tích hợp các giải pháp kết nối IPv4 vào mạng thuần IPv6. Làm chủ công nghệ này trên Linux là cách tốt nhất để thoát khỏi sự phụ thuộc vào các nhà cung cấp phần cứng độc quyền và xây dựng một cơ sở hạ tầng mở, linh hoạt.
SRv6 và MPLS truyền thống: Sự thay đổi về tư duy
Cách chúng ta luân chuyển các gói tin đang thay đổi từ gốc rễ. MPLS truyền thống dựa trên một chồng nhãn 32-bit mong manh. Mọi router trên đường đi phải thống nhất về ý nghĩa của các nhãn đó thông qua LDP hoặc BGP-LU. SRv6 thay thế sự phức tạp này bằng cách sử dụng chính địa chỉ IPv6 128-bit làm tập lệnh chỉ thị.
Các khác biệt chính
- MPLS truyền thống: Yêu cầu LDP/RSVP. Nó duy trì trạng thái (state) tại mọi bước nhảy (hop). Việc xử lý sự cố trở thành một cơn đau đầu khi nhãn không khớp giữa các thiết bị từ các hãng khác nhau.
- SR-MPLS: Loại bỏ LDP nhưng vẫn giữ mặt phẳng dữ liệu (data plane) là MPLS. Đây là một giải pháp trung gian ổn, nhưng bạn vẫn bị giới hạn bởi độ sâu của nhãn (label depth) trên các chipset cũ.
- SRv6: Không cần nhãn. “Segment Identifier” (SID) đơn giản là một địa chỉ IPv6 tiêu chuẩn. Bạn có khả năng kết nối nguyên bản và khả năng lập trình đầu-cuối mà không cần một lớp nền (underlay) hỗ trợ MPLS.
Ưu và nhược điểm trong thực tế
Trước khi di chuyển hệ thống lõi đang vận hành, bạn cần cân nhắc các đánh đổi mà tôi đã thấy trong các lần triển khai thực tế.
Ưu điểm
- Đơn giản hóa vận hành: Bạn cuối cùng có thể loại bỏ LDP và RSVP. Giao thức định tuyến nội vùng – IGP (IS-IS hoặc OSPFv3) sẽ tự mình đảm nhận các tác vụ nặng nề.
- Điều phối lưu lượng chi tiết: Bạn có thể điều hướng lưu lượng thoại (voice) yêu cầu độ trễ thấp qua một lộ trình cụ thể chỉ bằng cách thay đổi tiền tố (prefix) IPv6 đích.
- Giám sát tập trung: Mọi thứ đều là IPv6. Các bộ thu thập Netflow và bộ lọc Wireshark hiện có của bạn sẽ hoạt động ngay lập tức vì chúng không cần phải phân tích sâu bên dưới lớp nhãn MPLS.
Nhược điểm
- Quá tải MTU: Đây là vấn đề lớn nhất. Mỗi SID được thêm vào Segment Routing Header (SRH) sẽ tốn thêm 16 byte. Nếu bạn có một lộ trình với 5 SID, bạn sẽ mất 80 byte MTU.
- Tăng tốc phần cứng (Hardware Offloading): Mặc dù nhân Linux xử lý SRv6 hoàn hảo bằng phần mềm, các card mạng (NIC) cũ hơn như Intel i350 sẽ không hỗ trợ xử lý việc đóng gói (encapsulation) ở tầng phần cứng. Điều này có thể làm tăng mức sử dụng CPU trên các liên kết từ 10Gbps trở lên.
Cấu hình đề xuất
Hỗ trợ SRv6 đã trưởng thành kể từ nhân Linux 5.4. Tuy nhiên, đối với môi trường thực tế ổn định, tôi khuyên dùng phiên bản 5.15 trở lên để tránh các lỗi đã biết trong logic xử lý SRH.
- Hệ điều hành: Ubuntu 22.04 LTS hoặc Debian 12.
- Bộ giao thức định tuyến: FRRouting (FRR) phiên bản 8.5 trở lên.
- Kernel: 5.15+ với
CONFIG_IPV6_SEG6_LWTUNNELđược kích hoạt.
Triển khai: Cấu hình một Node SRv6
Thiết lập này cấu hình một node Linux làm SRv6 LER (Label Edge Router). Chúng ta sẽ sử dụng IS-IS cho mặt phẳng điều khiển (control plane) và định nghĩa một “Locator”—khối IPv6 được sử dụng cho các chỉ thị cụ thể của node này, tương tự như việc thiết lập OSPF Đa Vùng với FRRouting.
Bước 1: Chuẩn bị Kernel
Bạn phải bật chuyển tiếp IPv6 và yêu cầu nhân hệ điều hành xử lý các gói tin SRv6 trên các giao diện mạng một cách rõ ràng để tránh khắc phục nghẽn cổ chai đơn nhân khi lưu lượng tăng cao. Chạy các lệnh sau:
# Bật chuyển tiếp gói tin IPv6 (IPv6 Forwarding)
sudo sysctl -w net.ipv6.conf.all.forwarding=1
# Bật xử lý SRv6 trên giao diện backbone (ví dụ: eth0)
sudo sysctl -w net.ipv6.conf.eth0.seg6_enabled=1
sudo sysctl -w net.ipv6.conf.lo.seg6_enabled=1
Bước 2: Cài đặt FRRouting
Đừng sử dụng các gói mặc định của bản phân phối; chúng thường quá cũ đối với các tính năng SRv6 nâng cao. Thay vào đó, hãy sử dụng kho lưu trữ chính thức của FRR.
curl -s https://deb.frrouting.org/frr/keys.asc | sudo apt-key add -
FRR_REPO="deb https://deb.frrouting.org/frr $(lsb_release -s -c) frr-stable"
echo "$FRR_REPO" | sudo tee /etc/apt/sources.list.d/frr.list
sudo apt update && sudo apt install frr frr-pythontools
Bước 3: Định nghĩa SRv6 Locator
Locator là nhóm các địa chỉ đại diện cho các chức năng của node. Chỉnh sửa tệp /etc/frr/daemons để đặt isisd=yes, sau đó vào shell của FRR (vtysh).
conf t
!
segment-routing
srv6
locators
locator MAIN
prefix 2001:db8:1::/64
exit
!
exit
!
Bước 4: Liên kết IS-IS với SRv6
IS-IS cần quảng bá locator của bạn tới phần còn lại của mạng để các router khác biết cách tiếp cận các segment của bạn. Sử dụng cấu hình sau:
router isis 1
net 49.0001.0000.0000.0001.00
is-type level-2-only
topology ipv6-unicast
!
segment-routing srv6
locator MAIN
!
interface eth0
ipv6 router isis 1
isis network point-to-point
exit
!
Bước 5: Kiểm tra mặt phẳng dữ liệu (Data Plane)
Điều kỳ diệu xảy ra trong bảng localsid của kernel. Đây là nơi hệ điều hành ánh xạ các SID IPv6 đến với các hành động cụ thể, như giải mã lưu lượng hoặc kết nối chéo tới một VRF.
# Xem các localsid SRv6 đang hoạt động
ip -6 sr localsid show
Kết quả mong đợi: 2001:db8:1::1 dev lo action End. Điều này xác nhận router sẽ xử lý bất kỳ gói tin nào gửi đến địa chỉ đó như một điểm cuối (endpoint) SRv6 thay vì một gói tin máy chủ thông thường.
Lời kết từ thực tế
Triển khai SRv6 trên Linux đòi hỏi sự thay đổi trong cách bạn tư duy về tiền tố (prefix). Bạn không còn quản lý các mạch tĩnh (static circuits) nữa; bạn đang quản lý một không gian địa chỉ có khả năng lập trình. Khi tôi chuyển đổi phân đoạn thử nghiệm đầu tiên, lợi ích tức thì là khả năng hiển thị rõ ràng. Bảng định tuyến sạch sẽ hơn và chúng tôi không còn phải đuổi theo các lỗi timeout của láng giềng LDP. Bạn có thể kết hợp thêm việc phân tích lưu lượng thời gian thực để tối ưu hóa lộ trình. Nếu bạn đang xây dựng một đám mây riêng (private cloud) hoặc một ISP khu vực, Linux và FRRouting cung cấp con đường tiết kiệm chi phí nhất để làm chủ công nghệ đang vận hành các mạng lõi 5G hiện đại.

