IS-IS trên Linux: Tại sao các ISP ưu tiên chọn nó thay vì OSPF (và Cách Cấu hình)

Networking tutorial - IT technology blog
Networking tutorial - IT technology blog

Rào cản khả năng mở rộng: Tại sao OSPF không phải lúc nào cũng là câu trả lời

Hầu hết sự nghiệp trong lĩnh vực mạng đều bắt đầu với OSPF. Nó có mặt ở khắp mọi nơi, được tài liệu hóa đầy đủ và hoạt động tốt cho các mô hình doanh nghiệp tiêu chuẩn. Tuy nhiên, khi tôi mở rộng hạ tầng (fabric) cho các ISP lớn và trung tâm dữ liệu mật độ cao, cấu trúc Area cứng nhắc của OSPF thường trở thành một điểm yếu. Tôi đã từng chứng kiến thời gian hội tụ của OSPF kéo dài tới vài giây trong các mạng có hơn 500 nút do việc tràn ngập LSA liên tục và tính toán lại SPF tiêu tốn nhiều tài nguyên CPU.

Intermediate System to Intermediate System (IS-IS) xử lý các quy mô khổng lồ này một cách dễ dàng. Ban đầu được xây dựng cho bộ giao thức OSI, sau đó nó được điều chỉnh cho IP. Vì chạy trực tiếp trên Layer 2, nó không bị ảnh hưởng bởi các cuộc tấn công spoofing hoặc DoS dựa trên IP. Theo kinh nghiệm của tôi, nắm vững IS-IS là bước quan trọng nhất nếu bạn muốn chuyển từ mạng cơ bản sang thế giới của các Nhà cung cấp dịch vụ (Service Provider) Tier-1.

Các khái niệm cốt lõi: Tư duy theo cách của IS-IS

Hãy ngừng tư duy theo Area của OSPF và bắt đầu nghĩ theo các Cấp độ (Level). Mặc dù cả hai giao thức đều sử dụng thuật toán Dijkstra, IS-IS xây dựng cấu trúc phân cấp theo cách khác.

1. Sử dụng Level thay vì Area

Hãy quên Area 0 đi. Trong IS-IS, vùng xương sống (backbone) là một tập hợp các router Level 2.

  • Level 1 (L1): Định tuyến nội bộ. Router chỉ quan tâm đến Area của chính chúng.
  • Level 2 (L2): Xương sống. Kết nối các Area L1 khác nhau.
  • Level 1-2 (L1L2): Cầu nối. Các router này đóng vai trò biên giới, tương tự như ABR trong OSPF.

2. Địa chỉ NET

IS-IS không sử dụng Router ID 32-bit. Thay vào đó, nó sử dụng Network Entity Title (NET). Một địa chỉ NET điển hình có dạng 49.0001.1921.6800.1001.00. Nó tuân theo logic 20-byte nghiêm ngặt.

  • 49: Mã định danh thẩm quyền (Dùng cho mục đích nội bộ).
  • 0001: Area ID.
  • 1921.6800.1001: System ID. Mẹo nhỏ: lấy IP Loopback của bạn (192.168.0.1), thêm các số 0 cho đủ (192.168.000.001) và nhóm lại thành ba khối, mỗi khối bốn chữ số.
  • 00: N-Selector. Giá trị này luôn là 00 đối với chính router đó.

Thực hành: Triển khai IS-IS với FRRouting

Tôi sử dụng FRRouting (FRR) cho thiết lập này. Nó cung cấp giao diện dòng lệnh (CLI) giống Cisco (vtysh) và là tiêu chuẩn thực tế cho định tuyến mã nguồn mở trên Linux. Hãy cùng kết nối hai nút.

Bước 1: Cài đặt phần mềm

Cập nhật các gói phần mềm và cài đặt bộ công cụ FRR. Ví dụ này sử dụng Ubuntu 22.04.

sudo apt update && sudo apt install frr -y

Tiến trình (daemon) IS-IS bị tắt theo mặc định. Bạn phải kích hoạt nó trong tệp /etc/frr/daemons.

# Thay đổi isisd=no thành isisd=yes
sudo sed -i 's/isisd=no/isisd=yes/' /etc/frr/daemons
sudo systemctl restart frr

Bước 2: Cấu hình qua VTYSH

Tôi thích sử dụng shell hơn là chỉnh sửa tệp thô trực tiếp. Nó giúp phát hiện lỗi cú pháp ngay lập tức.

sudo vtysh

Bây giờ, hãy xây dựng tiến trình IS-IS. Chúng ta sẽ thiết lập router này ở Level-2 để tạo liên kết xương sống. Điều này rất phổ biến trong kiến trúc spine-leaf, nơi mọi nút đều là một phần của xương sống.

conf t
router isis CORE
  net 49.0001.0000.0000.0001.00
  is-type level-2-only
  topology ipv4-unicast
exit

Bước 3: Kích hoạt Interface

Không giống như BGP, bạn không định nghĩa các láng giềng (neighbor) bằng địa chỉ IP. Bạn chỉ cần bật IS-IS trên interface, và nó sẽ tự động tìm kiếm các router đối tác.

interface eth1
  ip router isis CORE
  isis network point-to-point
exit

interface lo
  ip router isis CORE
exit
write memory

Lưu ý lệnh point-to-point. Trong các trung tâm dữ liệu hiện đại, chúng ta sử dụng các liên kết P2P để bỏ qua quá trình bầu chọn DIS (Designated Intermediate System). Điều này có thể tiết kiệm được 2-3 giây trong thời gian thiết lập láng giềng.

Xác minh: Kiểm tra liên kết

Cấu hình nút thứ hai của bạn với một System ID duy nhất (ví dụ: 0000.0000.0002). Sau đó, hãy kiểm tra trạng thái láng giềng.

show isis neighbor

Nếu trạng thái là “Up”, mọi thứ đã ổn. Nếu nó hiển thị “Init”, hãy kiểm tra MTU của bạn. Các gói tin Hello của IS-IS được đệm (padded) cho đủ kích thước MTU (thường là 1500 bytes), và nếu liên kết của bạn không xử lý được, quá trình thiết lập láng giềng sẽ thất bại.

Để xem các tuyến đường thực tế:

show ip route isis

Đây là minh chứng cuối cùng. Nếu bạn thấy các địa chỉ loopback từ xa ở đây, thuật toán SPF đã tính toán thành công đường đi ngắn nhất xuyên suốt hạ tầng của bạn.

Kết luận

Học IS-IS giống như đang học một phương ngữ mới. Sự tinh tế của nó trong các mạng lớn là không gì sánh bằng. Bằng cách tách biệt logic định tuyến khỏi ngăn xếp IP (IP stack), bạn có được sự ổn định mà OSPF thiếu khi ở quy mô lớn. Cho dù bạn đang xây dựng cấu trúc CLOS hiện đại hay quản lý một mạng xương sống khu vực, FRRouting trên Linux cung cấp một giải pháp miễn phí và vững chắc để vận hành giao thức có khả năng mở rộng tốt nhất thế giới.

Thành công với IS-IS phụ thuộc vào hai yếu tố: một kế hoạch đánh địa chỉ NET sạch sẽ và biết khi nào nên sử dụng liên kết P2P. Làm chủ được những điều đó, mạng của bạn sẽ luôn ổn định lâu dài sau khi OSPF có thể đã bị quá tải.

Share: