Edu DaLatHub
  • Trang chủ
  • Flutter
  • WordPress Plugin
  • GoLang
  • ReactJS
  • NodeJS
  • Networking
    • Basic Networking
      • ARP
      • ICMP
      • TCP/UDP
    • Routing & Switching
      • RIP
      • OSPF
      • EIGRP
      • Redistribution
      • TSHOOT
      • WAN
Liên hệ

  • By  Nguyễn Văn Huy Dũng
  • 0 comments
  • Tháng Một 13, 2022

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ố.

Vậy thì Link-State có nghĩa là gì:
  • 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 giao thức Link-state hoạt động bằng cách gửi các link-state advertisement (LSA) tới các router chạy Link-state khác.

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.

Khi làm việc với OSPF thì ta có thể có multiple area (đa vùng). Như hình trên, ta có area 1, 2 và 3. Tuy nhiên, bạn phải chú ý rằng các area này cần phải kết nối trực tiếp về backbone area. Nếu như bạn muốn kết nối area 1 và 2, thì các lưu lượng đều phải đi qua backbone area. Không thể kết nối area 1 và 2 mà không có backbone area. Điều này áp dụng đối với tất cả các area mà bạn sử dụng với hệ thống của mình. Vậy tại sao chúng ta không làm việc duy nhất với một vùng (single area) mà chúng ta phải chia ra nhiều area để làm gì? Hãy nhớ về ví dụ về hệ thống định vị. Nếu như chúng ta cần phải tính toán tới một địa điểm ở xa và có nhiều thông tin hơn thì bạn cần phải đợi thiết bị của mình tính toán lâu hơn việc tìm những địa điểm gần nhau. Việc tính toán này dựa vào một thuật toán gọi là shortest path first (SPF) hay còn được biết tới đó là thuật toán Dijkstra, thuật toán có thể bạn đã được học. Nói như vậy có nghĩa rằng router sẽ chỉ mang một tấm bản đồ trong khu vực mà nó hoạt động. Vậy việc tính toán thuật toán SPF sẽ nhanh hơn và một điều nữa là bạn sẽ giảm được kích thước của bảng định tuyến, giúp cải thiện hiệu suất cho việc định tuyến. Thật ra là thuật toán SPF đã được nghiên cứu từ những năm 70 còn OSPF được sáng chế vào những năm 80 của thế kỷ trước, lúc đó router không có những CPU tốt như bây giờ như Core 2 Duo / Quad hay Core I7 như bây giờ được. Đó là một yếu tố mà OSPF đã phải giải quyết trong thời điểm lúc bấy giờ. Cũng trong hình trên, chúng ta thấy phía trên góc phải, có một miền được gọi là “other routing domain”. Miền này có thể sử dụng một giao thức định tuyến (có thể là RIP,…) và nó có thể truyền các thông tin định tuyến của nó vàò hay lấy thông định tuyến từ miền sử dụng OSPF để có thể định tuyến được giữa các miền sử dụng các giao thức định tuyến khác nhau, và việc làm như vậy được gọi là redistribution (phân phối).
  • 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).

Nếu như bạn bắt gói và phân tích gói tin Hello này, các bạn sẽ thấy các thông tin như hình trên. Trong các thông tin trong gói tin có một số thông tin phải khớp trên giữa các router, nếu không chúng không thể trở thành láng giềng (các thông tin có đánh dấu * trong hình). Hãy cùng nhau xem qua các thông tin có trong gói tin Hello:
  • 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.
Mỗi router chạy OSPF cần có duy nhất một Router ID, giá trị này được lấy từ địa chỉ IP cao nhất trong các interface đang hoạt động. Nếu trên router có interface loopback đang hoạt động thì sẽ ưu tiên lấy địa chỉ trên interface loopback làm Router ID mặc dù nó có địa chỉ IP thấp hơn interface vật lý, với nhiều interface loopback cũng dùng nguyên tắc lấy địa chỉ IP cao nhất trong nhóm địa chỉ IP của các interface loopback. Tại sao OSPF cần phải làm điều này? Nguyên nhân của việc ưu tiên lấy interface loopback vì nếu trong quá trình hoạt động của router thì interface loopback sẽ không bị “down”, trừ khi router xảy ra sự cố. Việc sử dụng interface loopback bạn có thể làm 2 việc sau đây:
  • 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.
Một sự thật quá hiển nhiên, nhưng có gì khác biệt ở đây. Nếu như bạn quảng bá địa chỉ này thông qua OSPF, bạn có thể ping được tới địa chỉ này và hơn nữa là bạn có thể telnet đến router thông qua địa chỉ này. Việc này giúp bạn có thể telnet để quản trị các router trong hệ thống dễ dàng hơn là phải nhớ tất cả các địa chỉ các router trong hệ thống, tất nhiên là bạn cần phải có một quy tắc nào đó. Với việc cần phải thiết lập các thông tin chính xác giữa các router như đã giới thiệu như trên, các router đã có thể thiết lập quan hệ láng giềng với nhau. Sau khi đã cấu hình OSPF, và các router đã trở thành láng giềng thì chúng sẽ bắt đầu trao đổi link-state advertisements (LSAs). Quá trình này, router bắt đầu xây dựng riêng cho mình một LSDB và sau khi quá trình này hoàn tất, router sẽ có một tấm bản đồ về mô hình hệ thống mạng. Bước tiếp theo, router sẽ tiến hành chạy thuật toán SPF và tìm ra con đường ngắn nhất đến mỗi mạng đích. Vấn đề tiếp theo, metric? OSPF sử dụng metric gọi là cost được tính toán dựa trên bandwidth của các interface, và công thức tính như sau:

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.

Thêm một ví dụ khác, ta thấy 2 con đường có giá trị cost là 10. Vậy phải đối xử sao với 2 con đường này vì chúng có giá trị cost là bằng nhau? Câu trả lời là load balancing. Router sẽ sử dụng cả 2 con đường này để load balancing với việc chia lưu lượng là 50/50. Một số điều bạn cần biết về load balancing trên OSPF:
  • 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.
Việc thay đổi cost trên một interface có thể thực hiện bằng việc cấu hình cố định giá trị cost hay việc cấu hình thay đổi bandwidth. Tiếp theo, chúng ta hãy cùng xem router sẽ điền các thông tin gì vào LSDB. Hãy cùng nhìn vào hình bên dưới để có thể biết được quá trình mà LSDB cập nhật các thông tin nhận được từ các LSA.
Mỗi LSA có một bộ đếm thời gian aging timer, nó được gán ứng với mỗi trường link-state age. Mặc định, mỗi OSPF LSA có giá trị trong khoảng thời gian 30 phút. Nếu LSA hết hạn, router sẽ tạo ra một LSA mới và sẽ gửi đi, gói tin LSA mới này có giá trị sequence number tăng thêm 1. Hãy nhìn vào sơ đồ trên cùng với nhau. Trong ví dụ này là quá trình khi một LSA được nhận trên một router và router đó phải xử lý các thông tin LSA này:
  1. 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.
  2. 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.
  3. Nếu như LSA đã có trong LSDB nhưng số sequence number của LSA khác so với LSDB thì:
    1. 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.
    2. 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.
Bạn nên nhớ rằng LSA chỉ là các thông tin về link-state mà các router trao đổi với nhau, nó không phải là một gói tin mà nó được chứa trong các gói tin OSPF. Số sequence number không chỉ mang tính chất đánh thứ tự cho các LSA mà nó còn giúp OSPF biết được đâu là thông tin mới nhất, và ngoài ra, OSPF còn dựa vào các thông tin sau để nhận biết một LSA mới:
  • 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
Vậy số sequence number trong OSPF LSA sẽ được quy định thế nào?
  • 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.
Với 32-bits, chúng ta có rất nhiều giá trị dùng cho sequence number, và cứ 30 phút thì giá trị này tăng thêm 1. Nếu giá trị này đạt 0x7FFFFFFF thì nó sẽ tự động quay trở lại 0x80000001. Cứ mỗi 30 phút, mỗi LSA sẽ được gửi đi để đảm bảo rằng các thông tin LSDB luôn được cập nhật với số sequence number tăng thêm một. Khi đã nhận được thông tin này thì OSPF sẽ reset bộ đếm max age.

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.

Trên đây là kết quả của câu lệnh show ip ospf database để cho chúng ta xem các thông tin trên LSDB.
  • 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.
Vậy là bạn đã có thể biết tổng quan về OSPF cũng như về OSPF database. Trong chương tiếp theo, chúng ta sẽ tìm hiểu các loại gói tin mà OSPF sử dụng. Bạn có thể hiểu rõ hơn về OSPF LSDB thông qua bài lab
Tại đây
Tại đây

Lược dịch “How to master CCNP – Route”

NGUYỄN VĂN HUY DŨNG

OSPF - Open Shortest Path First (Phần 2)
Tags:
Networking, OSPF, Routing & Switching

Leave a Comment Cancel Reply

Your email address will not be published.*

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

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.

Elon Musk

Bài viết mới

  • Lorem Ipsum Sample Content123
  • Lorem Ipsum Sample Content
  • Hello world
  • Hello world
  • Hello world
  • Wide area networks (Phần 2)
  • Wide area networks (Phần 1)
  • Redistribution (Phần Cuối)
  • Redistribution (Phần 1)
  • OSPF – Open Shortest Path First (Phần Cuối)

Nơi chia sẻ về tin công nghệ, các kinh nghiệm lập trình. Xây dựng các khoá đào tạo lập trình, mạng, tin học văn phòng...

Thông tin liên hệ

  • 2/9 Phạm Ngũ Lão, Phường 3, Đà Lạt
  • 0865802659
  • info@dalathub.com

Copyright @ 2022 Edu DaLatHub