OSPF (Open Shortest Path First) là giao thức định tuyến link-state được sử dụng phổ biến trong các hệ thống mạng doanh nghiệp quy mô lớn. Vậy OSPF là gì, hoạt động như thế nào và có những ưu, nhược điểm gì? Bài viết dưới đây của Tenten sẽ giúp bạn có cái nhìn tổng […]
OSPF (Open Shortest Path First) là giao thức định tuyến link-state được sử dụng phổ biến trong các hệ thống mạng doanh nghiệp quy mô lớn. Vậy OSPF là gì, hoạt động như thế nào và có những ưu, nhược điểm gì? Bài viết dưới đây của Tenten sẽ giúp bạn có cái nhìn tổng quan về OSPF .
OSPF (Open Shortest Path First) là một giao thức định tuyến động trạng thái liên kết (link-state) dùng trong mạng nội bộ (IGP), giúp các thiết bị tìm đường đi ngắn nhất, hội tụ nhanh và mở rộng tốt.
OSPF sử dụng các gói tin Hello để phát hiện và thiết lập quan hệ láng giềng giữa các router. Sau khi kết nối thành công, các router sẽ trao đổi Link-State Advertisement (LSA) nhằm chia sẻ thông tin về trạng thái các liên kết trong mạng và xây dựng Link-State Database (LSDB) với cùng một bản đồ topo mạng.
Dựa trên cơ sở dữ liệu này, mỗi router sẽ chạy thuật toán Dijkstra (Shortest Path First – SPF) để tính toán đường đi ngắn nhất đến từng đích, sau đó cập nhật kết quả vào bảng định tuyến và sử dụng để chuyển tiếp gói tin một cách tối ưu.

Quy trình thiết lập và vận hành của OSPF diễn ra theo 4 giai đoạn chính: định danh của router, xây dựng quan hệ láng giềng, trao đổi cơ sở dữ liệu trạng thái liên kết và tìm ra tuyến đường tối ưu nhất.
Router ID (RID) là định danh duy nhất của mỗi router trong OSPF, có định dạng giống địa chỉ IPv4 (A.B.C.D). Đây là điều kiện bắt buộc để router tham gia tiến trình OSPF và được sử dụng để nhận diện router trong toàn bộ miền OSPF. Router ID có thể được xác định theo hai cách:
1 – Router tự động chọn:
Router sẽ tự động lựa chọn Router ID theo thứ tự ưu tiên sau:
Loopback luôn được ưu tiên vì là giao diện logic, không phụ thuộc vào kết nối vật lý nên có tính ổn định cao và ít bị gián đoạn.
Ví dụ:
→ Router ID sẽ là 192.168.1.1 (địa chỉ IP vật lý cao nhất).
Nếu router được cấu hình thêm:
→ Router ID sẽ là 4.2.2.2, vì OSPF luôn ưu tiên địa chỉ IP cao nhất trên giao diện Loopback.
2 – Cấu hình thủ công:
Quản trị viên có thể chỉ định Router ID để đảm bảo tính nhất quán và dễ quản lý. Địa chỉ được sử dụng làm Router ID không bắt buộc phải được gán cho bất kỳ giao diện nào của router, miễn là duy nhất trong miền OSPF.
Lệnh cấu hình mẫu:
router OSPF [process-id] sau đó là router-id [A.B.C.D].
Sau khi có Router ID, các router sẽ sử dụng gói tin Hello để phát hiện và thiết lập quan hệ láng giềng (Neighbor). Theo mặc định, gói tin Hello được gửi 10 giây/lần đến địa chỉ multicast 224.0.0.5 để tìm kiếm các router OSPF khác trên cùng mạng.
Để hai router trở thành láng giềng, chúng phải đáp ứng các điều kiện sau:
Khi các điều kiện trên đều được đáp ứng, hai router sẽ thiết lập thành công quan hệ láng giềng và chuyển sang trạng thái 2-Way, sẵn sàng trao đổi thông tin định tuyến.
Sau khi thiết lập quan hệ láng giềng, các router sẽ trao đổi thông tin về trạng thái các liên kết để xây dựng Link-State Database (LSDB). LSDB là cơ sở dữ liệu chứa bản đồ topo của toàn bộ mạng trong một Area OSPF, và tất cả router trong cùng Area phải duy trì LSDB giống hệt nhau.
Quá trình này được thực hiện thông qua các Link-State Advertisement (LSA), được đóng gói trong các Link-State Update (LSU) để gửi giữa các router. Mỗi LSA chứa các thông tin quan trọng như Router ID, Area ID, chi phí liên kết (Cost) và loại liên kết, giúp các router đồng bộ cơ sở dữ liệu và nắm được cấu trúc mạng hiện tại.
Sau khi hoàn tất việc xây dựng LSDB, mỗi router sẽ độc lập chạy thuật toán Dijkstra (Shortest Path First – SPF) để tính toán đường đi ngắn nhất đến mọi mạng đích. OSPF đánh giá mỗi liên kết dựa trên cost (chi phí), trong đó cost càng thấp thì tuyến đường càng được ưu tiên.
Công thức tính cost mặc định:
Cost = 10⁸ / Bandwidth (bps)
Ví dụ:
Lưu ý: Kết quả tính Cost sẽ được lấy phần nguyên, bỏ phần thập phân).

Các loại liên kết mạng trong giao thức OSPF gồm liên kết điểm – điểm (Point-to-point link), liên kết phát sóng hoặc tạm thời (Transient Link), liên kết cụt (Stub link) và liên kết ảo (Virtual link).
Liên kết điểm – điểm (Point-to-point) là kiểu kết nối trực tiếp giữa hai router, không có router hoặc thiết bị trung gian tham gia vào liên kết. Khi hoạt động trên loại liên kết này, OSPF không cần bầu chọn DR (Designated Router) và BDR (Backup Designated Router). Hai router sẽ trực tiếp thiết lập quan hệ láng giềng và trao đổi thông tin trạng thái liên kết với nhau.
Transient Link (liên kết tạm thời) là loại liên kết kết nối nhiều router trong cùng một phân đoạn mạng. Loại liên kết này có thể được triển khai theo hai cấu trúc:
1 – Cấu trúc liên kết không thực tế
Với cấu trúc liên kết không thực tế, tất cả router được kết nối trực tiếp với nhau và có thể trao đổi thông tin với mọi router khác trong mạng.
2 – Cấu trúc liên kết thực tế
Một router được chỉ định làm Designated Router (DR) và một router dự phòng làm Backup Designated Router (BDR). Trên mạng broadcast (Ethernet…), thay vì mọi router trao đổi LSA trực tiếp với nhau, tất cả sẽ gửi thông tin qua DR để giảm tải lưu lượng. BDR đóng vai trò dự phòng, sẵn sàng thay thế nếu DR gặp sự cố.
Liên kết cụt (Stub link) là loại liên kết mạng chỉ kết nối với một router duy nhất. Do đó, toàn bộ lưu lượng dữ liệu đi vào hoặc đi ra khỏi phân đoạn mạng đều phải được truyền qua router này.
Liên kết ảo (Virtual link) là một đường dẫn logic được thiết lập giữa hai router OSPF, hoạt động như một đường hầm ảo trên mạng hiện có. Liên kết này được sử dụng để kết nối một Area không liền kề với Area 0 (Backbone Area) hoặc khôi phục kết nối logic khi đường kết nối trực tiếp đến vùng backbone không khả dụng.

OSPF sử dụng 5 loại gói tin chính. Mỗi gói tin đảm nhận một chức năng khác nhau trong quá trình xây dựng và duy trì mạng lưới định tuyến:

Mỗi gói tin OSPF có một cấu trúc phần đầu (header) chung, bao gồm các trường thông tin sau:
|
Trường thông tin |
Mô tả |
|
Version |
8 bit – Cho biết phiên bản OSPF mà gói tin đang sử dụng. |
|
Type |
8 bit – Xác định loại gói tin OSPF được truyền đi. |
|
Packet Length |
16 bit – Biểu thị Tổng chiều dài của gói tin OSPF tính bằng byte, bao gồm cả tiêu đề. |
|
Source IP Address |
32 bit – Lưu địa chỉ IP của router khởi tạo và gửi gói tin. |
|
Area Identification |
32 bit – Cho biết ID của vùng mà gói tin xuất phát. |
|
Checksum |
16 bit – Là mã kiểm tra lỗi để đảm bảo gói tin không bị hỏng trên đường truyền. |
|
Authentication Type |
8 bit – Cho biết phương thức xác thực được áp dụng cho gói tin. |
|
Authentication |
32 bit – Chứa dữ liệu xác thực để xác minh router gửi. |
Giao thức OSPF trải qua 7 trạng thái hoạt động sau:

OSPF nổi bật với khả năng hội tụ nhanh, không giới hạn số hop, hỗ trợ VLSM và chuẩn mở. Tuy nhiên, OSPF có một số hạn chế nhất định về cấu hình phức tạp, tiêu tốn nhiều tài nguyên.
Mặc dù OSPF phù hợp với nhiều hệ thống mạng, giao thức này vẫn có một số hạn chế về cấu hình, tài nguyên và khả năng xử lý khi quy mô mạng tăng cao.
Các hệ thống mạng hiện đại thường có tính biến động cao. Trong môi trường như vậy, định tuyến tĩnh hoặc các giao thức đã lỗi thời nhanh chóng trở nên kém hiệu quả và thiếu ổn định.
Với những ưu điểm nổi bật ở trên đã đề cập ở trên, OSPF là giải pháp lý tưởng, mang đến những lợi ích nổi bật sau:

Để cấu hình OSPF trên router, quản trị viên cần khai báo tiến trình OSPF, xác định các mạng tham gia định tuyến và kiểm tra trạng thái kết nối sau khi hoàn tất.
Bạn sử dụng hai lệnh chính để kích hoạt OSPF và xác định các mạng tham gia định tuyến:
router OSPF <process-id>
Lệnh này dùng để kích hoạt một tiến trình OSPF trên router. Giá trị <process-id> chỉ có ý nghĩa cục bộ trên router và không cần giống nhau giữa các router.
network <ip-address> <wildcard-mask> area <area-id>
Lệnh này dùng để xác định interface hoặc subnet tham gia OSPF, đồng thời chỉ định interface đó thuộc Area nào.
wildcard_mask = 255.255.255.255 – subnet_mask
Ví dụ: subnet mask 255.255.255.0 → wildcard mask = 0.0.0.255
(lưu ý công thức chỉ đúng với subnet liên tục)
Bạn có thể tính Wildcard Mask bằng cách lấy 255.255.255.255 trừ cho Subnet Mask:
Wildcard Mask = 255.255.255.255 – Subnet Mask
Ví dụ, với Subnet Mask 255.255.255.0, Wildcard Mask tương ứng là:
255.255.255.255
-255.255.255.0
= 0.0.0.255
Lưu ý: Công thức này được áp dụng trực tiếp với các subnet mask có phần mạng liên tục.
Giả sử hệ thống gồm R1 với các mạng 10.0.1.0/24 và 172.16.0.0/16, kết nối với R2 có các mạng 172.16.0.0/16 và 192.168.0.0/24:
R1 (10.0.1.0/24, 172.16.0.0/16)
|
|
R2 (172.16.0.0/16, 192.168.0.0/24)
Trên R1, bạn thực hiện cấu hình như sau:
R1(config)# router OSPF 1
R1(config-router)# network 10.0.1.0 0.0.0.255 area 0
R1(config-router)# network 172.16.0.0 0.0.255.255 area 0
Trên R2, bạn sử dụng các lệnh:
R2(config)# router OSPF 1
R2(config-router)# network 192.168.0.0 0.0.0.255 area 0
R2(config-router)# network 172.16.0.0 0.0.255.255 area 0
Trong cấu hình trên, cả hai router đều tham gia Area 0 trên mạng kết nối 172.16.0.0/16, từ đó có thể thiết lập quan hệ láng giềng và trao đổi thông tin định tuyến OSPF.
Sau khi hoàn tất cấu hình, quản trị viên có thể sử dụng các lệnh sau để kiểm tra quan hệ láng giềng và các tuyến OSPF.
Kiểm tra quan hệ láng giềng
show ip OSPF neighbor
Lệnh này giúp xác nhận hai router đã thiết lập quan hệ OSPF Neighbor hay chưa. Khi trạng thái hiển thị FULL, hai router đã hoàn tất quá trình đồng bộ cơ sở dữ liệu.
Ví dụ:
R1# show ip OSPF neighbor
| Neighbor ID | Pri State | Dead Time | Interface |
| 2.2.2.2 | 1 FULL/ – | 00:00:35 | GigabitEthernet0/0 |
Kiểm tra tuyến đường OSPF
show ip route
Lệnh này cho phép quản trị viên kiểm tra các tuyến đường mà router đã học được thông qua OSPF. Trong bảng định tuyến, các tuyến được học từ OSPF được đánh dấu bằng ký tự O.
Ví dụ:
R1# show ip route
O 192.168.0.0/24 [110/2] via 172.16.0.2
Trong đó, ký tự O cho biết tuyến 192.168.0.0/24 được học thông qua giao thức OSPF.
Để OSPF hoạt động ổn định và hiệu quả, bạn cần chú ý đến thiết kế topology, cấu hình, bảo mật và khả năng mở rộng của hệ thống mạng:

LSA (Link-State Advertisement – quảng bá trạng thái liên kết) là các thông tin mà router OSPF sử dụng để mô tả liên kết mạng, router láng giềng và trạng thái của mạng. Các LSA được trao đổi trong từng Area, giúp các router xây dựng LSDB đồng nhất và tính toán tuyến đường tối ưu.
Các loại LSA OSPF phổ biến gồm:
OSPF, RIP và EIGRP đều là các giao thức định tuyến động nội vùng (IGP) dùng để chia sẻ đường đi giữa các máy định tuyến. Điểm khác biệt lớn nhất nằm ở thuật toán hoạt động, tốc độ hội tụ và khả năng mở rộng mạng.
|
Tiêu chí |
OSPF |
RIP |
EIGRP |
|
Loại giao thức |
Link-state (trạng thái liên kết) |
Distance-vector (vector khoảng cách) |
Advanced distance-vector (vector khoảng cách nâng cao) |
|
Metric |
Cost dựa trên băng thông |
Số hop |
Bandwidth và Delay |
|
Thuật toán |
Dijkstra (SPF) |
Bellman-Ford |
DUAL |
|
Hội tụ |
Nhanh |
Chậm |
Rất nhanh |
|
Quy mô mạng |
Vừa và lớn |
Nhỏ |
Vừa và lớn, đặc biệt trong môi trường Cisco |
Dựa trên những khác biệt về netric, thuật toán, tốc độ hội tụ và khả năng mở rộng ở trên, mỗi giao thức sẽ phù hợp với một nhu cầu triển khai mạng khác nhau: