OSPF – Open Shortest Path First (Phần 1)
Giới thiệu về OSPF
Sau khi đã cùng nhau tìm hiểu về EIGRP, tiếp theo chúng ta cùng tìm hiểu về một giao thức định tuyến IGP (Interior Gateway Protocol) khác là OSPF (Open Shortest Path First). Trong chương đầu tiên này, chúng ta sẽ cùng xem lại tổng quan OSPF là gì và các hoạt động của nó. Hầu hết các kiến thức thức ở đây các bạn đều đã có thể đã biết qua chương trình CCNA và chúng ta sẽ biết thêm về một số phần mở rộng của OSPF.

Chúng ta có một ví dụ sau: “Tôi không biết đường đến nhà bạn, nhưng tôi có một thiết bị định vị để dẫn đường. Thật tốt khi tôi có thể đi theo hướng dẫn của thiết bị này mà không cần lo về việc tìm đường hay chỉ dẫn giao thông gì cả; tuy nhiên, nếu như nó không hoạt động thì tôi sẽ bị lạc…”
Giao thức định tuyến Link-State hoạt động giống như một thiết bị định vị, các router sử dụng giao thức Link-State có một bản đồ hoàn chỉnh của hệ thống mạng. Nếu như bạn có một bản đồ của hệ thống mạng, bạn có thể tự mình tính ra con đường ngắn nhất (shortest path) tới tất cả những đích đến mà bạn mong muốn. Nếu như vậy thì quả thật là hữu dụng, vì nếu như bạn đã tự mình biết các tuyến đường khác nhau trên hệ thống, bạn sẽ không tạo ra được một vòng lặp định tuyến được vì bạn đã biết được tất cả mọi thứ. Nhược điểm của việc này là sẽ tốn tài nguyên xử lý của CPU hơn so với các giao thức định tuyến distance vector. Nó giống như một hệ thống định vị, nếu như bạn tìm đường đi từ New York tới Los Angeles thì bạn cần phải tính toán lâu hơn khi bạn tìm tuyến đường giữa các con đường trong cùng một thành phố.

- Link: Là các interface của các router trên hệ thống.
- State: Mô tả về interface nào đó và cách kết nối, trạng thái của interface đó.

Các router chạy Link-state cần nhận được các gói tin link-state advertisement (LSAs) để có thể xây dựng cho mình riêng một CSDL gọi là linkstate database (LSBD).
Về cơ bản thì các LSA là các viên gạch nền tảng để xây dựng nên LSDB cho mỗi router.
LSBD giống như một tấm bản đồ mô tả chi tiết về hệ thống mạng, hay còn gọi được là topology.
Ở đây chúng ta có thể so sánh LSDB với một tấm bản đồ đầy đủ về một quốc gia vậy:

Khi tất cả các router đều có một tấm bản đồ hoàn chỉnh, chúng có thể tự mình tính toán ra đường đi ngắn nhất đến tất các các mạng đích khác nhau bằng thuật toán shortest path first (SPF). Sau khi đã tính toán, thông tin tốt nhất trong các số liệu đã xử lý sẽ được sử dụng trong bảng định tuyến. Việc tính toán đường đi ngắn ngắn nhất giống như việc sử dụng thiết bị định vị vậy, nó sẽ dựa vào tấm bản đồ nó có và sẽ tính toán tất cả các thông tin mà mình có và sẽ đưa ra một kết quả về con đường tốt nhất tới cho bạn.
Trong các giao thức định tuyến link-state, chúng ta chỉ tìm hiểu về giao thức OSPF (Open Shortest Path First). Ngoài OSPF thì link-state còn có một giao thức khác đó là IS-IS nhưng giao thức này đã không còn được vào các giáo trình của Cisco như CCNA, CCNP hay CCIE nữa.
Chúng ta đã có thể biết sơ qua link-state là gì, vậy chúng ta hãy cùng nhau tìm hiểu rõ hơn cách mà OSPF sẽ hoạt động như thế nào.

OSPF làm việc với khái niệm vùng (areas) và mặc định khi làm việc với OSPF, ta luôn có một single area (đơn vùng). Thông thường chúng ta hay gặp nhất đó là area 0 hay còn được gọi là backbone area.

- Các router nằm trong backbone area (area 0) được gọi là các backbone router.
- Các router nằm giữa 2 area (như nó nằm giữa area 0 và 1) được gọi là border router hay ABR.
- Các router chạy OSPF nằm giữa các miền sử dụng các giao thức định tuyến khác nhau được gọi là autonomous system border router hay ASBR.

Cách hoạt động của OSPF khác với RIP hay EIGRP, trước hết nó là một giao thức link-state khi so sánh với giao thức distance vector, và nó không chỉ đơn thuần là gửi các LSA ra cho một router bất kỳ nào. Trước tiên, các router phải trở thành láng giềng (neighbors) với nhau, một khi đã là láng giềng, chúng sẽ bắt đầu trao đổi các LSA.
Khi bạn cấu hình kích hoạt OSPF, OSPF bắt đầu gửi các gói tin Hello. Nếu như router nhận được một gói tin Hello từ một router khác thì chúng sẽ trở thành láng giềng (neighbors).

- Router ID: Mỗi router khi chạy OSPF thì cần duy nhất một ID duy nhất (Router-ID), là IP lớn nhất trên các interface đang hoạt trên router, ưu tiên interface loopback. Bạn sẽ biết thêm về Router ID ở phần sau.
- Hello / Dead Interval: Cứ vào một khoảng thời gian nhất định, router sẽ gửi gói tin Hello đến router láng giềng, nếu như router không nhận được gói tin Hello này từ láng giềng trong một khoảng thời gian quy định – “dead time” và router sẽ hủy mối quan hệ láng giềng. Các giá trị này cấn phải đúng trên các router muốn trở thành láng giềng với nhau.
- Neighbors: Tất cả router láng giềng của router đang xét được chỉ định cụ thể và gửi đi trong gói tin Hello.
- Area ID: Giá trị chỉ định area mà router đang hoạt động, giá trị này phải khớp trên các router để trở thành láng giềng.
- Router Priority: Giá trị được sử dụng để xác định router nào sẽ trở thành Designated Router (DR) hay Backup Designated Router (BDR). Chúng ta sẽ tìm hiểu vấn đề này sau.
- DR and BDR IP address: Địa chỉ của Designated Router (DR) hay Backup Designated Router (BDR). Chúng ta sẽ tìm hiểu vấn đề này sau.
- Authentication password: Bạn có thể sử dụng clear text hay MD5 authentication để cấu hình xác thực cho OSPF. Đã là mật khẩu thì cần phải khớp trên các router nếu muốn trở thành láng giềng.
- Stub area flag: Ngoài area number, OSPF còn có một khái niệm khác là area type, sẽ được đề cập rõ hơn ở các phần sau. Các router phải trùng area type để trở thành láng giềng.

- Quảng bá địa chỉ IP trên interface loopback này thông qua OSPF.
- Hay bạn cũng không cần quảng bá địa chỉ này.
Cost = Reference Bandwidth / Interface Bandwidth
Reference bandwidth là giá trị mặc định trên Cisco Router có giá trị tương đương 1 interface 100Mbit. Lấy Reference bandwidth chia cho interface bandwidth bạn sẽ có giá trị cost cho mỗi liên kết.
Lấy ví dụ: Nếu bạn có một interface 100Mbit, vậy giá trị cost của nó là bao nhiêu?
Cost = Reference bandwidth / Interface bandwidth.
100 Mbit / 100 Mbit = COST 1
Ví dụ khác: Nếu bạn có một interface 10Mbit, vậy giá trị cost của nó là bao nhiêu?
100 Mbit / 10 Mbit = COST 10
Nếu bạn có một interface 1Mbit, vậy giá trị cost của nó là bao nhiêu?
100 Mbit / 1 Mbit = COST 100
Giá trị cost thấp hơn được xem là tốt hơn.

Nhìn vào hình phía trên, chúng ta cùng xét trên router ở phía tay trái, cùng nhau khảo sát thuật toán SPF hoạt động để tìm đường đi ngắn nhất tới đích.
Nếu như là con đường đi qua router ở phía trên chúng ta sẽ có tổng cost là 10 + 8 = 18. Tương tự như vậy ta có cost đi qua router ở giữa là 10 và router ở dưới cùng là 40. Ta thấy cost của con đường đi qua router ở giữa là thấp nhất, vậy nó sẽ được sử dụng để định tuyến tới mạng đích.

- Các con đường bắt buộc phải có cost bằng nhau.
- Chỉ có 4 con đường có chi phí bằng nhau (equal cost) được đặt vào bảng định tuyến.
- Có thể hỗ trợ tối đa 16 equal cost.
- Bạn có thể tạo ra các equal cost bằng cách thay đổi cost trên các liên kết.

- Nếu như LSA không có trong LSDB, router sẽ tạo ra một LSAck (acknowledgement) gửi phản hồi lại cho láng giềng của mình. Các gói tin LSA được gửi tới tất cả các láng giềng chạt OSPF và các router phải chạy thuật toán SPF để cập nhật bảng định tuyến của mình.
- Nếu như LSA đã có trong LSDB và số sequence number của gói LSA trùng với thông tin có trong LSBD thì router sẽ hủy bỏ gói tin này.
- Nếu như LSA đã có trong LSDB nhưng số sequence number của LSA khác so với LSDB thì:
- Nếu như sequence number cao hơn, có nghĩa là một LSA mới và router sẽ cập nhật các thông tin này vào LSDB.
- Nếu như sequence number có giá trị thấp hơn, có nghĩa là LSA đã cũ và router nghĩ rằng mình cần phải giúp cho router đã gửi LSA này cập nhật thông tin mới hơn. Router sẽ gửi một gói tin LSU (Link state update) mang thông tin LSA mới hơn tới cho router láng giềng đó của mình. LSU là một gói tin có thể mang theo nhiều thông tin LSA. Các bạn sẽ biết được nhiều thông tin về nó trong chương sau khi giới thiệu về OSPF packets.
- Giá trị sequence number lớn nhất.
- Giá trị checksum lớn nhất
- Giá trị age bằng với giá trị maximum age.
- Giá trị link-state age thấp hơn
- Nó có độ dài là 4 bytes hay 32-bits.
- Giá trị bắt đầu bằng 0x80000001 và kết thúc là 0x7FFFFFFF.
- Cứ mỗi 10 phút, mỗi LSA sẽ được tạo mới và gửi tới các láng giềng:
- sequence number tăng thêm 1.

Hãy cùng nhìn vào sơ đồ mạng trên, chúng ta sẽ cùng xem khi cấu hình OSPF cách hoạt động của một số LSA:

Cũng giống với EIGRP, việc cấu hình như trên giúp ta quảng bá tất cả các địa chỉ IP trên các interface của router.

- Mỗi router chạy OSPF sẽ có các interface chạy trên từng area (ờ ví dụ này chỉ có area 0). Với mỗi interface, ta sẽ có một LSA. Link ID là OSPF router ID.
- Trong các thông tin LSA entry, bạn có thể nhìn thấy enrty đầu tiên được gửi bởi router Nancy, có sequence number và checksum.
Lược dịch “How to master CCNP – Route”
NGUYỄN VĂN HUY DŨNG
Don’t compare yourself with anyone in this world…if you do so, you are insulting yourself.
Bill Gates
When something is important enough, you do it even if the odds are not in your favor.