Cơ bản về cấu hình định tuyến
Trong ngành mạng máy tính, định tuyến (tiếng Anh: routing hay routeing) là quá trình chọn lựa các đường đi trên một mạng máy tính để gửi dữ liệu qua đó. Việc định tuyến được thực hiện cho nhiều loại mạng, trong đó có mạng điện thoại, liên ...
Trong ngành mạng máy tính, định tuyến (tiếng Anh: routing hay routeing) là quá trình chọn lựa các đường đi trên một mạng máy tính để gửi dữ liệu qua đó. Việc định tuyến được thực hiện cho nhiều loại mạng, trong đó có mạng điện thoại, liên mạng, Internet, mạng giao thông.
Routing chỉ ra hướng, sự di chuyển của các gói (dữ liệu) được đánh địa chỉ từ mạng nguồn của chúng, hướng đến đích cuối thông qua các node trung gian; thiết bị phần cứng chuyên dùng được gọi là router (bộ định tuyến). Tiến trình định tuyến thường chỉ hướng đi dựa vào bảng định tuyến, đó là bảng chứa những lộ trình tốt nhất đến các đích khác nhau trên mạng. Vì vậy việc xây dựng bảng định tuyến, được tổ chức trong bộ nhớ của router, trở nên vô cùng quan trọng cho việc định tuyến hiệu quả.
Routing khác với bridging (bắc cầu) ở chỗ trong nhiệm vụ của nó thì các cấu trúc địa chỉ gợi nên sự gần gũi của các địa chỉ tương tự trong mạng, qua đó cho phép nhập liệu một bảng định tuyến đơn để mô tả lộ trình đến một nhóm các địa chỉ. Vì thế, routing làm việc tốt hơn bridging trong những mạng lớn, và nó trở thành dạng chiếm ưu thế của việc tìm đường trên mạng Internet.
Các mạng nhỏ có thể có các bảng định tuyến được cấu hình thủ công, còn những mạng lớn hơn có topo mạng phức tạp và thay đổi liên tục thì xây dựng thủ công các bảng định tuyến là vô cùng khó khăn. Tuy nhiên, hầu hết mạng điện thoại chuyển mạch chung (public switched telephone network - PSTN) sử dụng bảng định tuyến được tính toán trước, với những tuyến dự trữ nếu các lộ trình trực tiếp đều bị nghẽn. Định tuyến động (dynamic routing) cố gắng giải quyết vấn đề này bằng việc xây dựng bảng định tuyến một cách tự động, dựa vào những thông tin được giao thức định tuyến cung cấp, và cho phép mạng hành động gần như tự trị trong việc ngăn chặn mạng bị lỗi và nghẽn.
Định tuyến động chiếm ưu thế trên Internet. Tuy nhiên, việc cấu hình các giao thức định tuyến thường đòi hỏi nhiều kinh nghiệm; đừng nên nghĩ rằng kỹ thuật nối mạng đã phát triển đến mức hoàn thành tự động việc định tuyến. Cách tốt nhất là nên kết hợp giữa định tuyến thủ công và tự động.
Những mạng trong đó các gói thông tin được vận chuyển, ví dụ như Internet, chia dữ liệu thành các gói, rồi dán nhãn với các đích đến cụ thể và mỗi gói được lập lộ trình riêng biệt. Các mạng xoay vòng, như mạng điện thoại, cũng thực hiện định tuyến để tìm đường cho các vòng (ví dụ như cuộc gọi điện thoại) để chúng có thể gửi lượng dữ liệu lớn mà không phải tiếp tục lặp lại địa chỉ đích.
Định tuyến IP truyền thống vẫn còn tương đối đơn giản vì nó dùng cách định tuyến bước kế tiếp (next-hop routing), router chỉ xem xét nó sẽ gửi gói thông tin đến đâu, và không quan tâm đường đi sau đó của gói trên những bước truyền còn lại. Tuy nhiên, những chiến lược định tuyến phức tạp hơn có thể được, và thường được dùng trong những hệ thống như MPLS, ATM hay Frame Relay, những hệ thống này đôi khi được sử dụng như công nghệ bên dưới để hỗ trợ cho mạng IP.
Thuật toán vector (distance-vector routing protocols)
Thuật toán này dùng thuật toán Bellman-Ford. Phương pháp này chỉ định một con số, gọi là chi phí (hay trọng số), cho mỗi một liên kết giữa các node trong mạng. Các node sẽ gửi thông tin từ điểm A đến điểm B qua đường đi mang lại tổng chi phí thấp nhất (là tổng các chi phí của các kết nối giữa các node được dùng).
Thuật toán hoạt động với những hành động rất đơn giản. Khi một node khởi động lần đầu, nó chỉ biết các node kề trực tiếp với nó, và chi phí trực tiếp để đi đến đó (thông tin này, danh sách của các đích, tổng chi phí của từng node, và bước kế tiếp để gửi dữ liệu đến đó tạo nên bảng định tuyến, hay bảng khoảng cách). Mỗi node, trong một tiến trình, gửi đến từng “hàng xóm” tổng chi phí của nó để đi đến các đích mà nó biết. Các node “hàng xóm” phân tích thông tin này, và so sánh với những thông tin mà chúng đang “biết”; bất kỳ điều gì cải thiện được những thông tin chúng đang có sẽ được đưa vào các bảng định tuyến của những “hàng xóm” này. Đến khi kết thúc, tất cả node trên mạng sẽ tìm ra bước truyền kế tiếp tối ưu đến tất cả mọi đích, và tổng chi phí tốt nhất.
Khi một trong các node gặp vấn đề, những node khác có sử dụng node hỏng này trong lộ trình của mình sẽ loại bỏ những lộ trình đó, và tạo nên thông tin mới của bảng định tuyến. Sau đó chúng chuyển thông tin này đến tất cả node gần kề và lặp lại quá trình trên. Cuối cùng, tất cả node trên mạng nhận được thông tin cập nhật, và sau đó sẽ tìm đường đi mới đến tất cả các đích mà chúng còn tới được.
Thuật toán trạng thái kết nối (Link-state routing protocols)
Khi áp dụng các thuật toán trạng thái kết nối, mỗi node sử dụng dữ liệu cơ sở của nó như là một bản đồ của mạng với dạng một đồ thị. Để làm điều này, mỗi node phát đi tới tổng thể mạng những thông tin về các node khác mà nó có thể kết nối được, và từng node góp thông tin một cách độc lập vào bản đồ. Sử dụng bản đồ này, mỗi router sau đó sẽ quyết định về tuyến đường tốt nhất từ nó đến mọi node khác.
Thuật toán đã làm theo cách này là Dijkstra, bằng cách xây dựng cấu trúc dữ liệu khác, dạng cây, trong đó node hiện tại là gốc, và chứa mọi noded khác trong mạng. Bắt đầu với một cây ban đầu chỉ chứa chính nó. Sau đó lần lượt từ tập các node chưa được thêm vào cây, nó sẽ thêm node có chi phí thấp nhất để đến một node đã có trên cây. Tiếp tục quá trình đến khi mọi node đều được thêm.
Cây này sau đó phục vụ để xây dựng bảng định tuyến, đưa ra bước truyền kế tiếp tốt ưu, … để từ một node đến bất kỳ node khác trên mạng.
So sánh các thuật toán định tuyến
Các giao thức định tuyến với thuật toán vector tỏ ra đơn giản và hiệu quả trong các mạng nhỏ, và đòi hỏi ít (nếu có) sự giám sát. Tuy nhiên, chúng không làm việc tốt, và có tài nguyên tập hợp ít ỏi, dẫn đến sự phát triển của các thuật toán trạng thái kết nối tuy phức tạp hơn nhưng tốt hơn để dùng trong các mạng lớn. Giao thức vector kém hơn với rắc rối về đếm đến vô tận.
Ưu điểm chính của định tuyến bằng trạng thái kết nối là phản ứng nhanh nhạy hơn, và trong một khoảng thời gian có hạn, đối với sự thay đổi kết nối. Ngoài ra, những gói được gửi qua mạng trong định tuyến bằng trạng thái kết nối thì nhỏ hơn những gói dùng trong định tuyến bằng vector. Định tuyến bằng vector đòi hỏi bảng định tuyến đầy đủ phải được truyền đi, trong khi định tuyến bằng trạng thái kết nối thì chỉ có thông tin về “hàng xóm” của node được truyền đi. Vì vậy, các gói này dùng tài nguyên mạng ở mức không đáng kể. Khuyết điểm chính của định tuyến bằng trạng thái kết nối là nó đòi hỏi nhiều sự lưu trữ và tính toán để chạy hơn định tuyến bằng vector.
Giao thức được định tuyến và giao thức định tuyến
Sự nhầm lẫn thường xảy ra giữa “giao thức được định tuyến” và “giao thức định tuyến” (“routed protocols” và “routing protocols”).
Giao thức được định tuyến (routed protocols hay routable protocols )
Một giao thức đã được định tuyến là bất kỳ một giao thức mạng nào cung cấp đầy đủ thông tin trong địa chỉ tầng mạng của nó để cho phép một gói tin được truyền đi từ một máy chủ (host) đến máy chủ khác dựa trên sự sắp xếp về địa chỉ, không cần biết đến đường đi tổng thể từ nguồn đến đích. Giao thức đã được định tuyến định nghĩa khuôn dạng và mục đích của các trường có trong một gói. Các gói thông thường được vận chuyển từ hệ thống cuối đến một hệ thống cuối khác. Hầu như tất cả giao thức ở tầng 3 các giao thức khác ở các tầng trên đều có thể được định tuyến, IP là một ví dụ. Nghĩa là gói tin đã đuợc định hướng (có địa chỉ rõ ràng )giống như lá thư đã được ghi địa chỉ rõ chỉ còn chờ routing (tìm đường đi đến địa chỉ đó)
Các giao thức ở tầng 2 như Ethernet là những giao thức không định tuyến được, vì chúng chỉ chứa địa chỉ tầng liên kết, không đủ để định tuyến: một số giao thức ở tầng cao dựa trực tiếp vào đây mà không có thêm địa chỉ tầng mạng, như NetBIOS, cũng không định tuyến được.
Giao thức định tuyến (routing protocols)
Giao thức định tuyến được dùng trong khi thi hành thuật toán định tuyến để thuận tiện cho việc trao đổi thông tin giữa các mạng, cho phép các router xây dựng bảng định tuyến một cách linh hoạt. Trong một số trường hợp, giao thức định tuyến có thể tự chạy đè lên giao thức đã được định tuyến: ví dụ, BGP chạy đè trên TCP: cần chú ý là trong quá trình thi hành hệ thống không tạo ra sự lệ thuộc giữa giao thức định tuyến và đã được định tuyến.
Danh sách các giao thức định tuyến
Giao thức định tuyến trong
- Router Information Protocol (RIP)
- Open Shortest Path First (OSPF)
- Intermediate System to Intermediate System (IS-IS)
Hai giao thức sau đây thuộc sở hữa của Cisco, và được hỗ trợ bởi các router Cisco hay những router của những nhà cung cấp mà Cisco đã đăng ký công nghệ:
- Interior Gateway Routing Protocol (IGRP)
- Enhanced IGRP (EIGRP)
Giao thức định tuyến ngoài
- Exterior Gateway Protocol (EGP)
- Border Gateway Protocol (BGP)
- Constrained Shortest Path First (CSPF)
Thông số định tuyến (Routing metrics)
Một thông số định tuyến bao gồm bất kỳ giá trị nào được dùng bởi thuật toán định tuyến để xác định một lộ trình có tốt hơn lộ trình khác hay không. Các thông số có thể là những thông tin như băng thông (bandawidth), độ trễ (delay), đếm bước truyền, chi phí đường đi, trọng số, kích thước tối đa gói tin (MTU - Maximum transmission unit), độ tin cậy, và chi phí truyền thông. Bảng định tuyến chỉ lưu trữ những tuyến tốt nhất có thể, trong khi cơ sở dữ liệu trạng thái kết nối hay topo có thể lưu trữ tất cả những thông tin khác.
Router dùng tính năng phân loại mức tin cậy (administrative distance -AD) để chọn đường đi tốt nhất khi nó “biết” hai hay nhiều đường để đến cùng một đích theo các giao thức khác nhau. AD định ra độ tin cậy của một giao thức định tuyến. Mỗi giao thức định tuyến được ưu tiên trong thứ tự độ tin cậy từ cao đến thấp nhất có một giá trị AD. Một giao thức có giá trị AD thấp hơn thì được tin cậy hơn, ví dụ: OSPF có AD là 110 sẽ được chọn thay vì RIP có AD là 120.
Bảng sau đây cho biết sự sắp xếp mức tin cậy được dùng trong các router Cisco
Các lớp giao thức định tuyến
Dựa vào quan hệ của các dòng router với các hệ thống tự trị, có nhiều lớp giao thức định tuyến như sau:
- Giao thức định tuyến trong mạng Ad-hoc xuất hiện ở những mạng không có hoặc ít phương tiện truyền dẫn.
- Interior Gateway Protocols (IGPs) trao đổi thông tin định tuyến trong một AS. Các ví dụ thường thấy là:
- IGRP (Interior Gateway Routing Protocol)
- EIGRP (Enhanced Interior Gateway Routing Protocol)
- OSPF (Open Shortest Path First)
- RIP (Routing Information Protocol)
- IS-IS (Intermediate System to Intermediate System)
Chú ý: theo nhiều tài liệu của Cisco, EIGRP không phân lớp như giao thức trạng thái kết nối.
Exterior Gateway Protocols (EGPs) định tuyến giữa các AS. EGPs gồm:
- EGP (giao thức cũ để nối mạng Internet trước đây, bây giờ đã lỗi thời)
- BGP (Border Gateway Protocol: phiên bản hiện tại, BGPv4, có từ khoảng năm 1995)
Giao thức định tuyến nội vùng RIP
RIP (tiếng Anh: Routing Information Protocol) là một giao thức định tuyến nội vùng sử dụng thuật toán định tuyến Distance-vector.
Các đặc điểm:
- Là giao thức định tuyến theo vector khoảng cách (Distance Vector ) , tức là RIP sẽ cập nhật toàn bộ hoặc 1 phần bảng định tuyến của mình cho các Router láng giềng kết nối trực tiếp với nó . Bảng định tuyến gồm các thông tin như : địa chỉ của router kế tiếp trên đường đi , tổng chi phí từ chính router đó đến mạng đích…
- Là giao thức định tuyến theo kiểu classful ( tức định tuyến theo lớp địa chỉ) vì rip k mang theo thông tin subnet mask đi kèm (FLSM)
- Chọn đường đi dựa vào thông số định tuyến là hop count ( số router ) hay còn nói metric của RIP là hop count, dùng simple routing metric. Chính vì thế mà đôi lúc có 1 số đường mà rip chọn k phải là đường tối ưu nhất đến mạng đích. Nếu 1 packet đến mạng đích có số lượng hop vượt quá 15 thì nó sẽ bị drop. Do cái tính khó chịu này của RIP nên mới nó được cho là khó mở rộng , phù hợp với mạng nhỏ ( nhưng mèo thấy nó không nhỏ đâu đối với vn )
- Update định kì 30s ( thay đổi bằng câu lệnh update-timers) . Ngoài ra RIP còn các giá trị thời gian khác như invalid , holdown và flush timer set bằng câu lệnh sau timers basic update invalid holdown flush
- Administrative Distance (AD) = 120 , thông số này càng nhỏ thì càng ưu tiên
- Load balacing ( chia tải ) maximum là 6 đường , default là 4 đường có thể set lại bằng câu lệnh maximum-paths . Việc chia tải ở đây đòi hỏi các đường phải có chi phí (cost)bằng nhau mới được nhé hay còn gọi là equal-cost mà cost của rip là hop count vì thế nếu tốc độ của 2 đường khác nhau như 1 đường là dial-up và 1 đường là T1 thì cũng như vậy thôi.
Các cơ chế chống Loop
- Count to infinity ( định nghĩa giá trị tối đa) khi trong mạng xảy ra loop , gói tin chạy lòng vòng hoài trong mạng cho đến khi có tiến trình nào đó cắt đứt vòng lặp gọi là đếm vô hạn .Với rip metric là hop count vì thế mỗi khi thông tin cập nhật được “đi qua” 1 router thì số lượng hop sẽ tăng lên 1. Bản thân rip sẽ khắc phục tình trạng đếm đến vô hạn bằng cách cứ thông số định tuyến mà vượt quá 15 thì packet đó sẽ bị drop
- Route poisioning ( poison reverse ): thường thì khi 1 đường mạng nào đó có thông số định tuyến tăng dần lên thì đã bị tình nghi là loop rồi nhé . Lúc đó router sẽ phát đi 1 thông tin poison reverse để xóa đi đường đó và cho nó vào trạng thái holddown .
Triggered update ( câu lệnh ip rip triggered) : vì rip cập nhật thông tin định tuyến 30s 1 lần vì thế khi có 1 mạng thay đổi thì phải chờ đến hết 1 chu kỳ 30s thì các router khác trong mạng mới biết được sự thay đổi đó. Cơ chế triggered update này giúp router cập nhật ngay sự thay đổi trong mạng mà k cần phải đợi hết chu kỳ đó. Kết hợp cơ chế này cùng poison reverse là ok.
- Holdown timer :khi router A nhận được 1 thông tin về 1 mạng X từ 1 router B nói rằng mạng X bị đứt thì router A sẽ set holddown timer. Trong suốt thời gian holddown này , router sẽ không cập nhật bất kì thông tin định tuyến nào về mạng X từ các router khác trong mạng , chẳng hạn router C cập nhật cho A nói , mạng X còn sống thì router A sẽ phớt lờ thông tin đó đi. Trừ phi router B nói với nó là mạng X sống lại rồi thì router A mới cập nhật nhé
- Split Horizon tức là khi router gửi thông tin định tuyến ra 1 interface , thì router sẽ k gửi ngược trở lại các thông tin định tuyến mà nó học được từ cổng đó . Cơ chế này chỉ tránh được loop giữa 2 router
- Kết hợp Split horizon với poision reverse : nếu đọc phớt qua , các bạn sẽ thấy 2 anh này trái ngược nhau , chắc là 2 cơ chế này đố kị nhau đây . Nhưng thực ra khi kết hợp lại sẽ hữu dụng trong khi mạng gặp sự cố , hình như mặc định là nó k dùng cơ chế này hay nói cách khác 2 cơ chế này tách riêng không làm chung vì sợ làm tăng kích thước của bảng định tuyến. Khi router A học được 1 mạng X bị die từ router B từ cổng S0/0 chẳng hạn , thì A sẽ advertise lại mạng X đó ra cổng s0/0 tiếp tục với hop count là 16
Quá trình gửi và nhận thông tin định tuyến
Mô hình minh họa
Lúc gửi thông tin định tuyến: Trước khi gửi update (về đường mạng 131.108 và 131.99) cho router 2 thì router 1 phải check rằng
- Đường mạng 131.108.5.0/24 có cùng major net với 131.108.2.0/24 hay không?
- Trong trường hợp này là có, Router 1 mới check típ 131.108.5.0 và 131.108.2.0 có cùng subnet mask hay không?
- Nếu trùng, Router 1 sẽ quảng bá đường mạng này.
- Nếu k trùng , router 1 sẽ drop packet đó
- Đường mạng 137.99.88.0/24 có cùng major net với 131.108.2.0/24 hay không?
- Nếu không thì router 1 sẽ làm động tác là tổng hợp (summarize) 137.99.88.0/24 tại major net boundary thành 137.99.0.0 và quảng bá nó.
Trong mô hình này thì ta nhận được kết quả như thế này trong khi thi hành lệnh debug ip rip
Nhận update :
Lúc này debug ip rip ngay trên router 2 thì ta thấy như thế này
Router 2 sẽ check để xem nên apply mask nào cho đường mạng 131 và 137 này đây
131.108.5.0 và 131.108.2.0( xét trên interface mà nhận update vào) có cùng 1 major net k?
Nếu có thì apply thẳng mask của interface mà nó nhận update, trong trường hợp này là apply /24). Nếu mạng được quảng bá tức 131.108 mà /32 thì router 2 sẽ apply /32 và típ tục quảng bá cho các router khác là /32( điều này nó khác với IGRP nhé)
131.108.5.0 và 137.99.0.0 có cùng major net k?
Nếu không xét tiếp, trong bảng định tuyến có subnet nào hay mạng con của major net này mà nó học từ các interface khác không?
Nếu không thì router 2 sẽ apply thẳng classful subnet mask là /16 luôn vì 137 là mạng lớp B. Chú ý ở đây nó sẽ apply host mask nếu như giữa 2 router là 1 unnumbered link và chứa thông tin về subnet ( tức là khi đó các bit trong phần portion của network được set).
Ngược lại thì router sẽ ignore thông tin định tuyến này đi
Lúc này show ip route thử xem
Do ripv2 phát triển từ ripv1 nên nó cũng còn thừa hưởng những đặc điểm của ripv1 như :
- Là giao thức định tuyến theo vector khoảng cách
- Cost của nó là hop count . Ở đây cho mèo sử dụng từ cost thay cho metric nhé . Vì nếu lỡ có ai xem qua BGP rùi thì sẽ bị lộn 1 tí . Maximum hop count vẫn là 15
- Cũng sử dụng các cơ chế chống lặp vòng như ripv1
Nhưng Ripv2 có các điểm cải tiến khác version 1 như
- Nhiều thông tin định tuyến hơn như có gửi subnet mask đi kèm với địa chỉ mạng trong thông tin mà nó update.
- Hỗ trợ VLSM ( Variable length subnet mask ) subnet mask khác nhau, CIDR ( Classless Interdomain Routing ) và route summarization
- Có cơ chế xác thực thông tin khi nhận được bằng plaintext hoặc mã hóa MD5
- Gởi thông tin định tuyến theo địa chỉ multicast là 224.0.0.9 bằng với 01-00-5E-00-00-09
Tổng Quan Về OSPF
OSPF là một giao thức định tuyến theo trạng thái đường liên kết được triển khai dựa trên các chuẩn mở. OSPF được mô tả trong nhiều chuẩn của IETF (Internet Engineering Task Force). Chuẩn mở ở đây có nghĩa là OSPF hoàn toàn mở với công cộng, không có tính độc quyền.
Nếu so sánh với RIPv1 và RIPv2 là một giao thức nội thì IGP tốt hơn vì khả năng mở rộng của nó. RIP chỉ giới hạn trong 15 hop, hội tụ chậm và đôi khi còn chọn đường có tốc độ chậm vì khi quyết định chọn đường nó không quan tâm đến các yếu quan trọng khác như băng thông chẳng hạn. OSPF khắc phục được các nhược điểm của RIP vì nó là một giao thức định tuyến mạnh, có khả năng mởi rộng, phù hợp với các hệ thống mạng hiện đại. OSPF có thể cấu hình đơn vùng để sử dụng cho các mạng nhỏ.
So Sánh OSPF Với Giao Thức Định Tuyến Theo Distance Vector
Router định tuyến theo trạng thái đường liên kết có một cơ sở đầy đủ về cấu trúc hệ thống mạng. Chúng chỉ thực hiện trao đổi thông tin về trạng thái đường liên kết lúc khởi động và khi hệ thống mạng có sự thay đổi. Chúng không phát quảng bá bảng định tuyến theo định kỳ như các router định tuyến theo distance vector. Do đó, các router định tuyến theo trạng thái đường liên kết sử dụng ít băng thông hơn cho hoạt động duy trì bảng định tuyến.
RIP phù hợp với các mạng nhỏ và đường tốt nhất đối với RIP là đường có số hop ít nhất. OSPF thì phù hợp với mạng lớn, có khả năng mở rộng, đường đi tốt nhất của OSPF được xác định dựa trên tốc độ của đường truyền. RIP cũng như các giao thức định tuyến theo distance vector khác đều sử dụng thuật toán chọn đường đơn giản. Còn thuật toán SPF thì phức tạp. Do đó, nếu router chạy theo giao thức định tuyến theo distance vector thì sẽ ít tốn bộ nhớ và cần năng lực xử lý thấp hơn so với khi chạy OSPF.
- OSPF chọn đường dựa trên chi phí được tính từ tốc độ của đường truyền. Đường truyền có tốc độ càng cao thì chi phí OSPF tương ứng càng thấp.
- OSPF chọn đường tốt nhất từ cây SPF.
- OSPF bảo đảm không bị định tuyến lặp vòng. Còn giao thức định tuyến theo distance vector vẫn có thể bị loop.
Nếu một kết nối không ổn định, chập chờn, việc phát liên tục các thông tin về trạng thái của đường kiên kết này sẽ dẫn đén tình trạng các thông tin quảng cáo không đồng bộ làm cho kết quả chọn đường của các router bị đảo lộn.
OSPF giải quyết được các vấn đề sau:
- Tốc độ hội tụ.
- Hỗ trợ VLSM (Variable Length Subnet Mask).
- Kích cỡ mạng.
- Chọn đường.
- Nhóm các thành viên.
Trong một hệ thống mạng lớn, RIP phải mất ít nhất vài phút mới có thể hội tụ được vì mỗi router chỉ trao đổi bảng định tuyến với các router láng giềng kết nối trực tiếp với mình mà thôi. Còn đối với OSPF sau khi đã hội tụ vào lúc khởi động, khi có thay đổi thì việc hội tụ sẽ rất nhanh vì chỉ có thông tin về sự thay đổi được phát ra cho mọi router trong vùng.
OSPF có hỗ trợ VLSM nên nó được xem là một giao thức định tuyến không theo lớp địa chỉ. RIPv1 không hỗ trợ VLSM, nhưng RIPv2 thì có.
Đối với RIP, một mạng đích cách xa hơn 15 router xem như không thể đến được vì RIP có số lượng hop giới hạn là 15. Điều này làm kích thước mạng của RIP bị giới hạn trong phạm vi nhỏ. OSPF thì không giới hạn về kích thước mạng, nó hoàn toàn có thể phù hợp với mạng vừa và lớn.
Khi nhận được từ router láng giềng các báo cáo về số lượng hop đến mạng đích, RIP sẽ cộng thêm 1 vào thông số hop này và dựa vào số lượng hop đó để chọn đường đến mạng đích. Đường nào có khoảng cách ngắn nhất hay nói cách khác là có số lương hop ít nhất sẽ là đường tốt nhất đối với RIP. Nhận xét thấy thuật toán chọn đường như vậy là rất đơn giản và không đòi hỏi nhiều bộ nhớ và năng lực xử lý của router. RIP không hề quan tâm đến băng thông đường truyền khi quyết định chọn đường.
OSPF thì chọn đường dựa vào chi phí được tính từ băng thông của đường truyền. Mọi OSPF đều có thông tin đầy đủ về cấu trúc của hệ thống mạng và dựa vào đó để chọn đường đi tốt nhất. Do đó, thuật toán chọn đường này rất phức tạp, đòi hỏi nhiều bộ nhớ và năng lực xử lý của router cao hơn so với RIP.
RIP sử dụng cấu trúc mạng dạng ngang hàng. Thông tin định tuyến được truyền lần lượt cho mọi router trong cùng một hệ thống RIP. Còn OSPF sử dụng khái niệm về phân vùng. Một mạng OSPF có thể chia các router thành nhiều nhóm. Bằng cách này, OSPF có thể giới hạn lưu thông trong từng vùng. Thay đổi trong vùng này không ảnh hưởng đến hoạt động của các vùng khác. Cấu trúc phân lớp như vậy cho phép hệ thống mạng có khả năng mở rộng một cách hiệu quả.
Thuật Toán Chọn Đường Ngắn Nhất
Theo thuật toán này, đường tốt nhất là đường có chi phí thấp nhất. Thuật toán được sử dụng là Dijkstra, thuật toán này xem hệ thống mạng là mọt tập hợp các nodes được kết nối với nhau bằng kết nối point-to-point. Mỗi kết nối này có một chi phí. Mỗi nodes có một tên. Mỗi nodes có đầy đủ cơ sở dữ liệu về trạng thái của các đường liên kết. Do đó, chúng có đầy đủ thông tin về cấu trúc vật lý của hệ thống mạng. Tất cả các cơ sở dữ liệu này điều giống nhau cho mọi router trong cùng một vùng.
Các Loại Mạng OSPF
Các OSPF phải thiết lập mối quan hệ láng giềng để trao đổi thông tin định tuyến. Trong mỗi mạng IP kết nối vào router. Nó đều cố gắng ít nhất là trở thành một láng giềng hoặc là một láng giềng thân mật với một router khác, router OSPF quyết định chọn router nào làm láng giềng thân mật là tùy thuộc vào từng loại mạng kết nối với nó. Có một số router có thể cố gắng trở thành láng giềng thân mật với mọi router láng giềng khác. Có một số router khác lại có thể chỉ cố gắng trở thành láng giềng thân mật với một hoặc hai router láng giềng thôi. Một khi mối quan hệ láng giềng thân mật đã được thiết lập giữa hai láng giềng với nhau thì thông tin về trạng thái đường liên kết mới được trao đổi.
Giao thức OSPF nhận biết các loại mạng sau:
- Mạng quảng bá đa truy cập, ví dụ mạng Ethernet.
- Mạng point-to-point.
- Mạng không quảng bá đa truy cập (NBMA – NonBroadcast Multil-Access), ví dụ Frame Relay.
- Mạng Point-to-Multipoint có thể được nhà quản trị mạng cấu hình cho một cổng của router.
Trong mạng đa truy cập không thể biết được là có bao nhiêu router sẽ có thể được kết nối vào mạng.
Trong mạng point-to-point thì chỉ có hai router được kết nối với nhau.
Trong mạng quảng bá đa truy cập có rất nhiều router kết nối vào. Nếu mỗi router đều thiết lập mối quan hệ thân mật với mọi router khác và thực hiện trao đổi thông tin về trạng thái đường liên kết với mọi router láng giềng thì sẽ quá tải. Nếu có 10 router thì sẽ cần 45 mối liên hệ thân mật, nếu có n router thì sẽ có n*(n-1)/2 mối quan hệ láng giềng cần thiết lập.
Giải pháp cho vấn đề quá tải trên là bầu ra một router làm đại diện (DR- Designated Router). Router này sẽ thiết lập mối quan hệ thân mật với mọi router khác trong mạng quản bá. Mọi router còn lại sẽ chỉ gởi thông tin về trạng thái đường liên kết cho DR. Sau đó DR sẽ gởi các thông tin này cho mọi router khác trong mạng bằng địa chỉ multicast 224.0.0.5 DR đóng vai trò như một người phát ngôn chung.
Việc bầu DR rất có hiệu quả nhưng cũng có một nhược điểm. DR trở thành một tâm điểm nhạy cảm đối với sự cố. Do đó, cần có một router thứ hai được bầu ra để làm đại diện dự phòng (BDR – Backup Designated Router), router này sẽ đảm trách vai trò của DR nếu DR bị sự cố. Để đảm bảo cả DR và BDR đều nhận được thông tin về trạng thái đường liên kết từ mọi router khác trong cùng một mạng, địa chỉ multicast 224.0.0.6 cho các router đại diện.
Trong mạng point-to-point chỉ có 2 router kết nối với nhau nên không cần bầu ra DR và DBR. Hai router này sẽ thiết lập mối quan hệ láng giềng thân mật với nhau.
Loại Mạng Các Đặc Tính Bầu DR
Broadcast, Multi-Access Ethernet,ToKen Ring,FĐI | Có |
NonBroadcast Multi-Access Frame Relay,X25,SMDS | Có |
Point-to-Point PPP,HDLC | Không |
Point-to-Multipoint Được cấu hình bởi Administrator | Không |
Giao Thức OSPF Hello
Khi router bắt đầu khởi động tiến trình định tuyến OSPF trên một cổng nào đó thì nó sẽ gởi một gói hello ra cổng đó và tiếp tục gởi hello theo định kỳ. Giao thức hello đưa ra các nguyên tắc quản lý việc trao đổi các gói OSPF hello.
Ở lớp 3 của mô hình OSI, gói hello mang địa chỉ multicast 224.0.5.0 địa chỉ này chỉ đến tất cả các OSPF router. OSPF router sử dụng gói hello để thiết lập một quan hệ láng giềng thân mật mới và để xác định là router láng giềng có còn hoạt động hay không. Mặc định hello được gởi đi 10 giây một lần trong mạng quảng bá đa truy cập và mạng Point-to-Point. Trên cổng nói vào mạng NBMA, ví dụ như Frame Relay, chu trình mặc định của hello là 30 giây.
Trong mạng đa truy cập, giao thức hello tiến hành bầu DR và BDR.
Mặc dù gói hello rất nhỏ nhưng nó cũng bao gồm cả phần header của gói OSPF. Cấu trúc của phần header trong gói OSPF được thể hiện như hình sau. Nếu gói hello thì trường Type sẽ có giá trị là một.
Các thông điệp Hello trong OSPF thực hiện ba chức năng chính:
- Tìm ra những router chạy OSPF khác trên cùng một mạng chung.
- Kiểm tra sự tương thích trong các thông số cấu hình.
- Giám sát tình trạng của láng giềng để phản ứng nếu láng giềng bị fail.
Để tìm ra những router láng giềng, OSPF lắng nghe những thông điệp Hello được gửi đến 224.0.0.5. Đây là địa chỉ multicast tượng trưng cho tất cả các router OSPF, trên bất cứ cổng nào đã bật OSPF. Các gói Hello sẽ lấy nguồn từ địa chỉ primary trên cổng, nói cách khác, Hello không dùng địa chỉ phụ. (OSPF router sẽ quảng bá các địa chỉ phụ nhưng nó sẽ không gửi Hello từ những địa chỉ này và không bao giờ hình thành mối quan hệ dùng địa chỉ phụ.
Khi hai router tìm ra nhau thông qua các gói Hello, các router thực hiện các phép kiểm tra các thông số như sau:
- Các router phải vượt qua tiến trình xác thực.
- Các router phải trong cùng địa chỉ mạng primary, phải có cùng subnetmask.
- Phải trong cùng OSPF area.
- Phải có cùng kiểu vùng OSPF.
- Không có trùng RID.
- OSPF Hello và Deadtimer phải bằng nhau.
Nếu bất kỳ điều kiện nào nêu trên không thỏa mãn, hai router đơn giản sẽ không hình thành quan hệ láng giềng. Cũng lưu ý rằng một trong những điều kiện quan trọng nhất mà hai bên không cần giống là chỉ số ID của tiến trình OSPF, như được cấu hình trong câu lệnh router ospf process-id. Bạn cũng nên lưu ý rằng giá trị MTU phải bằng nhau để các gói tin DD được gửi thành công giữa những láng giềng nhưng thông số này không được kiểm tra trong tiến trình Hello.
Chức năng thứ ba của Hello là để duy trì liên lạc giữa những láng giềng. Các láng giềng gửi Hello ở mỗi chu kỳ hello interval; nếu router không nhận được Hello trong khoảng thời gian dead interval sẽ làm cho router tin rằng láng giềng của nó đã fail. Khoảng thời gian hello interval mặc định bằng 10 giây trên những cổng LAN và 30 giây trong những đường T1 hoặc đường thấp hơn T1. Thời gian dead interval mặc định bằng bốn lần thời gian hello interval.