Có nhiều giao thức định tuyến trong miền mạng khác nhau giúp xác định quy tắc về cách truyền dữ liệu. Giao thức OSPF (Open Shortest Path First) là một trong những giao thức định tuyến động. Nó được gọi là định tuyến động vì có khả năng tự động trao đổi thông tin định tuyến giữa các bộ định tuyến gần nhất.

Trong bài viết này, chúng ta sẽ đi tìm hiểu chi tiết xem giao thức OSPF là gì? Cách thức hoạt động của nó và nó khác các giao thức định tuyến khác như thế nào?

Giao thức OSPF

OSPF

Giao thức OSPF, hay còn được biết đến là Open Shortest Path First, là một giao thức định tuyến (routing protocol) sử dụng thuật toán Dijkstra để xác định đường đi ngắn nhất trong mạng. Được phát triển bởi IETF (Internet Engineering Task Force), OSPF là một trong những giao thức định tuyến phổ biến trong các mạng IP.

Ở mức độ chi tiết, OSPF chia mạng thành các “area” (khu vực), và các router trong cùng một area chia sẻ thông tin định tuyến. Các router trong cùng một area biết về cấu trúc mạng bên trong area đó, nhưng không cần phải biết về cấu trúc mạng ở các area khác. Điều này giúp giảm bớt overhead và tăng hiệu suất trong mạng lớn.

Mỗi router OSPF duy trì một bảng định tuyến được gọi là OSPF routing table, cung cấp thông tin về các đường đi ngắn nhất đến các đích trong mạng. OSPF cũng hỗ trợ cơ chế chia sẻ băng thông thông minh, nâng cao khả năng sử dụng tài nguyên mạng.

Nói chung, OSPF là một giao thức mạng mạnh mẽ và linh hoạt, thường được ưa chuộng trong các môi trường mạng lớn và phức tạp. Nếu bạn là quản trị viên mạng hoặc đang tham gia khóa học CCNA thì việc hiểu rõ về cách OSPF hoạt động và cấu hình là quan trọng để duy trì và quản lý mạng một cách hiệu quả.

Các tính năng của OSPF

  1. Phân chia mạng thành các area, giúp giảm độ phức tạp của mạng và tăng hiệu suất bằng cách giảm lưu lượng thông tin định tuyến.
  2. Sử dụng thuật toán Dijkstra để xác định đường đi ngắn nhất, giúp đảm bảo rằng dữ liệu sẽ được chuyển tiếp theo đường đi hiệu quả nhất.
  3. Hỗ trợ cả địa chỉ IPv4 và IPv6, giúp chuyển đổi mạng từ IPv4 sang IPv6 một cách dễ dàng.
  4. Sử dụng giao thức link-state để chia sẻ thông tin định tuyến giữa các router trong cùng một area, tạo ra một hình ảnh chính xác về mạng.
  5. Tính toán “cost” của các đường đi dựa trên băng thông và độ trễ, giúp chọn lựa đường đi tối ưu.
  6. Hỗ trợ đa đường đi, có nghĩa là nó có khả năng duy trì nhiều đường đi đến một đích và lựa chọn đường đi tối ưu dựa trên các tiêu chí như băng thông hoặc độ trễ.
  7. Sử dụng cơ chế kiểm soát lỗi và cập nhật định kỳ để đảm bảo tính toàn vẹn của thông tin định tuyến.
  8. Cung cấp các phương thức xác thực để bảo vệ tính an toàn của thông tin định tuyến.
  9. Sử dụng cơ chế thiết lập neighbor động, tức là các router có thể tự động phát hiện và thiết lập kết nối với nhau khi cần thiết.
  10. OSPF đảm bảo không có vòng lặp trong mạng, điều này giúp tránh tình trạng broadcast storm và tăng tính ổn định của mạng.
  11. Hỗ trợ VLSM, CIDR.

OSPF hoạt động như thế nào?

Giao thức OSPF (Open Shortest Path First) hoạt động dựa trên mô hình link-state routing, sử dụng thuật toán Dijkstra để xác định đường đi ngắn nhất trong mạng.

Các router OSPF tìm kiếm các “neighbor” (hàng xóm) bằng cách gửi các gói hello qua các interface của mình. Các gói hello chứa thông tin như địa chỉ IP của router, area ID, băng thông, và thời gian giữa các gói hello.

Khi một router nhận được gói hello từ một router khác và thông tin trong gói hello khớp với thông tin của nó, hai router này trở thành “adjacent” với nhau. Quá trình này tạo ra một liên kết giữa các router, cho phép chúng trao đổi thông tin định tuyến.

Mỗi router OSPF duy trì một bảng link-state database, trong đó chứa thông tin về trạng thái của tất cả các link trong mạng. Thông tin này bao gồm địa chỉ IP của các neighbor, trạng thái của các interface, và các thông số khác về link-state.

Khi có sự thay đổi trong mạng (ví dụ: thêm hoặc xoá một neighbor), router sẽ quảng bá thông tin link-state mới cho tất cả các router khác trong cùng area thông qua các gói Link-State Advertisement (LSA). Mỗi router sẽ nhận được LSA từ các router khác và cập nhật bảng link-state database của mình.

Dựa trên thông tin trong bảng link-state database, mỗi router sử dụng thuật toán Dijkstra để tính toán đường đi ngắn nhất đến tất cả các đích trong mạng. Kết quả của thuật toán là OSPF routing table, chứa thông tin về đường đi tối ưu đến mọi đích.

Các router cập nhật bảng định tuyến của mình dựa trên kết quả của thuật toán Dijkstra. Bảng định tuyến này sẽ chứa thông tin về đường đi ngắn nhất đến mọi đích trong mạng.

Cách giao thức OSPF phân chia mạng

Giao thức OSPF (Open Shortest Path First) sử dụng mô hình phân cấp mạng (Hierarchical Networking) bằng cách chia mạng thành các area. Area là một phần của mạng được định nghĩa trong OSPF. Mỗi router trong OSPF thuộc ít nhất một area, và thông tin định tuyến chỉ được chia sẻ trong cùng một area.

Area 0 được xác định là “area gốc” hoặc “backbone area.” Tất cả các area khác nên kết nối trực tiếp với backbone area hoặc thông qua một area trung gian.

Việc phân cấp mạng giúp giảm độ phức tạp của OSPF bằng cách hạn chế sự chia sẻ thông tin định tuyến giữa các area. Các router chỉ cần biết về cấu trúc mạng trong area của mình.

Kích thước của mỗi area nên được quyết định dựa trên số lượng router và tài nguyên mạng. Kích thước lớn nhất của mỗi area không nên vượt quá giới hạn kích thước của OSPF.

Border Router và ASBR

Lưu ý Về Border Router và ASBR:

  • Border Router: Là router nằm giữa hai area hoặc giữa một area và mạng ngoại vi. Border router chịu trách nhiệm chuyển đổi thông tin định tuyến giữa các area.
  • ASBR (Autonomous System Boundary Router): Là router kết nối OSPF với mạng ngoại vi hoặc một hệ thống tự trị khác.

Giao thức Hello trong OSPF

Giao thức “Hello” trong OSPF đóng vai trò quan trọng trong quá trình phát hiện và thiết lập liên kết giữa các router, được gọi là quá trình Adjacency Formation.

Mỗi router OSPF gửi các gói Hello định kỳ qua các interface của mình. Các gói này chứa thông tin như địa chỉ IP của router, area ID, băng thông, thời gian giữa các gói Hello (Hello interval), và thời gian hết hạn (Dead interval).

Khi một router nhận được gói Hello từ một router khác, nó kiểm tra thông tin trong gói để xác định xem liệu chúng có thể trở thành neighbor hay không.

Giao thức Hello trong OSPF

Quá trình Adjacency Formation:

  • Neighbor States: Các router trong OSPF trải qua một số trạng thái khi thiết lập liên kết với neighbor. Các trạng thái này bao gồm Down, Init, 2-Way, Exstart, Exchange, Loading, và Full.
  • Down State: Ở trạng thái này, router chưa nhận được gói Hello từ neighbor.
  • Init State: Router đã nhận được gói Hello từ neighbor, nhưng chưa xác định được liệu neighbor đó có thể trở thành adjacencies hay không.
  • 2-Way State: Hai router cùng nhau xác nhận rằng chúng có thể trở thành neighbor. Chúng gửi gói Hello với các thông tin cần thiết để xác định liên kết.
  • Exstart, Exchange, Loading States: Trong các trạng thái này, router chia sẻ thông tin về cơ sở dữ liệu định tuyến (LSDB) để xác định đường đi ngắn nhất.
  • Full State: Khi quá trình trao đổi thông tin kết thúc, router đạt được trạng thái Full, và liên kết adjacency đã được hình thành. Các router ở trạng thái Full có thể trao đổi thông tin định tuyến.

Hiểu về Link-State Database (LSDB) và LSA

Bảng Link-State Database (LSDB) là một cơ sở dữ liệu lưu trữ thông tin về trạng thái của tất cả các link trong mạng mà OSPF quản lý. Mỗi router OSPF duy trì một bản sao của LSDB, cung cấp cái nhìn toàn diện về trạng thái của mạng.

Thông tin trong LSDB bao gồm các LSAs (Link-State Advertisements) mà OSPF nhận được từ các neighbor và chính nó. Các LSAs này chứa thông tin về các router, các đường đi, và trạng thái của các liên kết trong mạng.

Link-State Database (LSDB) và LSA

Các loại LSAs trong LSDB:

  1. Router LSA (Type 1): Chứa thông tin về router gửi LSA này, bao gồm địa chỉ IP, ID router, và các liên kết nối với router khác.
  2. Network LSA (Type 2): Chứa thông tin về mạng liên quan đến router, bao gồm danh sách các router kết nối với mạng đó.
  3. Summary LSA (Type 3, 4, 5): Chứa thông tin về đường đi đến các mạng ngoại vi và các router không thuộc cùng một area.
  4. AS-External LSA (Type 5): Chứa thông tin về các mạng ngoại vi và đường đi đến chúng.
  5. Link LSA (Type 8): Thông tin về các router không thuộc cùng một area mà có thể trở thành neighbor.
  6. Intra-Area Prefix LSA (Type 9): Chứa thông tin về các đường đi đến mạng trong cùng một area.
  7. Grace-LSA (Type 11): Thông tin về thời gian grace period, liên quan đến graceful restart.

Thuật toán Dijkstra

Thuật toán Dijkstra được sử dụng trong OSPF để tính toán đường đi ngắn nhất từ một router đến tất cả các router khác trong cùng một area. Dưới đây là cách OSPF thực hiện thuật toán Dijkstra để xây dựng OSPF routing table:

  • Bước 1: Khởi tạo bảng định tuyến với đường đi của router hiện tại là 0, và các đường đi khác là vô cùng.
  • Bước 2: Chọn router có đường đi ngắn nhất từ danh sách router chưa được xử lý.
  • Bước 3: Duyệt qua các router kề và cập nhật đường đi nếu có đường đi ngắn hơn.
  • Bước 4: Đánh dấu router đã chọn là đã xử lý.
  • Bước 5: Lặp lại bước 2 và 3 cho đến khi tất cả các router đã được xử lý.

Các loại Area trong OSPF

các loại Area trong OSPF

Trong OSPF, có các loại area khác nhau và nguyên tắc thiết kế area đóng vai trò quan trọng trong việc đảm bảo hiệu suất và dễ quản lý của mạng. Dưới đây là các loại area và nguyên tắc thiết kế area trong OSPF:

  • Backbone Area (Area 0): Area gốc hoặc backbone area là area có số 0. Tất cả các area khác nên kết nối trực tiếp hoặc gián tiếp với backbone area.
  • Standard Area: Các area không phải là backbone area được gọi là standard area. Chúng có thể kết nối trực tiếp với backbone area hoặc thông qua một area trung gian.
  • Stub Area: Trong stub area, các router chỉ biết đến các mạng nội bộ của area đó và mạng backbone. Nó giảm độ phức tạp của LSDB và routing table.
  • Totally Stubby Area: Các totally stubby area giảm hết các LSA loại 3 (Summary LSA) và LSA loại 4 (ASBR-Summary LSA). Chỉ có một default route được chia sẻ từ area này đến backbone.
  • Not-So-Stubby Area (NSSA): NSSA cho phép mạng ngoại vi (external network) kết nối mà không cần phải chia sẻ tất cả các thông tin định tuyến trong area. Thay vì LSA loại 5 (External LSA), NSSA sử dụng LSA loại 7 (NSSA External LSA).
  • Totally NSSA: Totally NSSA giống như NSSA nhưng giảm hết cả LSA loại 3 và LSA loại 5. Chỉ có một default route được chia sẻ từ area này đến backbone.

Nguyên tắc thiết kế Area:

  • Area 0 nên được thiết kế  hiệu suất và sự ổn định. Vì nó là ưu tiên hàng đầu vì nó là cột mốc cho toàn bộ mạng OSPF.
  • Sử dụng nhiều area để giảm độ phức tạp và tăng khả năng mở rộng.
  • Cố gắng chia sẻ băng thông đồng đều giữa các area để tránh bottleneck và tăng hiệu suất.
  • Tránh thiết kế mạng OSPF có vòng lặp, vì nó có thể gây broadcast storm và ảnh hưởng đến tính ổn định của mạng.

Cách OSPF tính Cost

tính cost trong OSPF

Trong OSPF, “cost” (chi phí) là một giá trị số được sử dụng để đo lường chi phí của một đường đi từ một router đến một mạng hoặc một router khác. Cost được sử dụng để xác định đường đi ngắn nhất trong OSPF, và nó được tính dựa trên hai yếu tố chính là băng thông và độ trễ.

Công thức cơ bản để tính toán cost là: Cost = Reference Bandwidth / Interface Bandwidth

​Ở đây, Reference Bandwidth là giá trị tham chiếu mặc định và thường được đặt là 100 Mbps (megabits per second). Interface Bandwidth là băng thông của interface kết nối.

OSPF ưu tiên băng thông, nghĩa là đường đi có chi phí thấp hơn (tính theo băng thông cao hơn) được xem xét là đường đi tốt hơn. Khi băng thông của một interface thay đổi, OSPF sẽ tự động cập nhật cost của đường đi dựa trên công thức trên.

Ngoài băng thông, OSPF cũng có thể sử dụng độ trễ của đường đi để tính toán cost. Độ trễ của một đường đi được đo bằng thời gian cần thiết để truyền một bit từ đầu đến cuối của đường đi. OSPF sử dụng giá trị delay của interface để tính toán độ trễ này.

Thông Tin Về Tác Giả

Tổng Biên Tập at Thiết Bị Mạng Giá Rẻ | Website | + posts

Nguyễn Thành Hợp là một chuyên gia về lĩnh vực thiết bị mạng, viễn thông gần 10 năm kinh nghiệm với nhiều chứng chỉ chất lượng như CCNA 200-301, CCNP, CCDA, CCDP,... do Cisco cung cấp. Sở thích cá nhân là khám phá những kiến thức mới mẻ về công nghệ nói chung và đặc biệt là liên quan đến lĩnh vực mạng!