Chúng ta cho rằng cả chuyển mạch và router khơng đủ thơng tin về topology mạng để chúng cĩ thể quyết định chọn đúng cổng cho các gĩi được output. Trong trường hợp chuyển mạch kênh, định tuyến là vấn đề chỉ cho các gĩi yêu cầu nối kết, cịn tất cả các gĩi theo sau thì đi cùng đường dẫn như gĩi yêu cầu.
Trong mạng datagram(mạng IP), định tuyến là vấn đề của tất cả các gĩi. Một chuyển mạch hay một router cần phải xem xét các địa chỉ đích trong mỗi gĩi và rồi quyết định cổng tốt nhất mà gĩi cĩ thể truyền. Chuyển mạch thực hiện quyết định dựa trên các thơng tin trong bảng chuyển tiếp. Vấn đề cơ bản của quá trình chuyển tiếp là các chuyển mạch hay router lấy được thơng tin trong các bảng này.
• Quá trình chuyển tiếp bao gồm lấy một gĩi, xem địa chỉ nguồn, tham khảo bảng và gửi gĩi đĩ theo hướng được xác định bởi dữ liệu trong bảng đĩ.
• Định tuyến là một q trình xây dựng bảng.
Xem bảng sau, trong trường hợp bảng định tuyến cĩ nghĩa là mạng số 10 cĩ thể đến bởi router chặng tiếp theo cĩ địa chỉ 171.69.245.10, trong khi bảng forwarding chứa thơng tin chính xác như thế nào để chuyển gĩi chặng tiếp theo, gửi gĩi ra ngồi qua giao tiếp 0 với địa chỉ 8:0:2b:e4:b:1:2.
NetworkNum NextHop
10 171.69.245.10
a)Bảng định tuyến
NetworkNum Interface MAC address
10 If0 8:0:2b:e4:b:1:2
b)Bảng forwarding
1. Mạng là đồ thị:
Định tuyến là một bài tốn của đồ thị, hình trên là một đồ thị thể hiện một mạng, một nút của đồ thị là các nhãn từ A đến F, các nhãn cĩ thể là host, chuyển mạch, router hay một mạng. Trong trường hợp này chúng ta chỉ quan tâm các nút là router. Các cạnh của đồ thị tương ứng với một liên kết mạng. Mỗi cạnh được gán một trọng số(chi phí).
Hình IV-14.Mạng thể hiện như đồ thị
Vấn đề cơ bản của định tuyến là tìm được một đường đi cĩ chi phí thấp nhất giữa hai nút(chi phí của đường đi bằng tổng chi phí của tất cả các cạnh trên đường đi).
Cĩ 2 cách xây dựng định tuyến cho các nút:
• Tính tất cả các đường đi ngắn nhất và lưu trữ chúng trên mỗi nút. • Thực hiện giao thức định tuyến tương ứng giữa tất cả các nút.
Chúng ta giả sử chi phí mỗi cạnh trong mạng cĩ thể biết được, chúng ta xem xét hai lớp giao thức routing chính được sử dụng trong mạng: distance vector và link state.
2. Định tuyến theo vector khoảng cách-Distance Vector(RIP):
Hình IV-15. Ví dụ về định tuyến Distance Vector
Ý tưởng:
Mỗi nút xây dựng một mảng một chiều(vector) chứa khoảng cách(chi phí) đến tất cả các nút và phân phối vector đĩ với người hàng xĩm của chúng. Để bắt đầu xây dựng, mỗi nút phải biết chi phí của các liên kết trực tiếp với người hàng xĩm của chúng. Sau đĩ nĩ mới gán một chi phí xác định.
Khoảng cách đến các nút Thơng tin lưu
trữ ở Nút A B C D E F G A 0 1 1 ∞ 1 1 ∞ B 1 0 1 ∞ ∞ ∞ ∞ C 1 1 0 1 ∞ ∞ ∞ D ∞ ∞ 1 0 ∞ ∞ 1 E 1 ∞ ∞ ∞ 0 ∞ ∞ F 1 ∞ ∞ ∞ ∞ 0 1 G ∞ ∞ ∞ 1 ∞ 1 0
Bảng IV-1.Khởi tạo khoảng cách tại mỗi nút
Bảng trên trình bày thơng tin khởi tạo về khoảng cách của từng nút đến tất cả các nút cịn lại trong mạng.
Mỗi hàng trong bảng là một danh sách khoảng cách từ một nút đến tất cả các nút khác. Khởi tạo, mỗi nút đặt một chi phí là 1 cho tất cả các người hàng xĩm của chúng và cho tất cả các nút khác. Thật vậy, lúc khởi tạo A cĩ thể tin rằng nĩ cĩ thể đi 1 bước tới B, nhưng khơng thể đến D. Bảng định tuyến lưu trữ ở A như sau:
Destination Cost NextHop
B 1 B C 1 C D ∞ - E 1 E F 1 F G ∞ -
Bảng IV-2.Khởi tạo bảng định tuyến ở nút A
Tiếp theo mỗi nút gửi một thơng điệp chứa danh sách khoảng cách cá nhân của nĩ trực tiếp đến các nút hàng xĩm. Ví dụ nút F nĩi với nút A là nĩ cĩ thể đến G với chi phí là 1; A biết nĩ cĩ thể đến F với chi phí 1, nĩ cộng chi phí này với chi phí đến G từ F. Tổng chi phí là 2. Vậy A cĩ thể đến G với chi phí là 2 qua F. Tương tự A cĩ thể học từ C và biết rằng nĩ cĩ thể đến D với chi phí là 2 qua C.
Lúc này A cĩ thể cấp nhật bảng định tuyến với chi phí và chặng tiếp theo (nexthop) cho tất cả các nút trên mạng. Kết quả trong bảng sau:
Destination Cost NextHop B 1 B C 1 C D 2 C E 1 E F 1 F G 2 F Bảng IV-3.Bảng định tuyến hồn chỉnh ở nút A
Cĩ hai tình huống khác nhau lúc một nút quyết định gửi bảng cập nhật routing đến hàng xĩm của nĩ.
Cập nhật định kỳ: mỗi nút tự động gửi cập nhật sau một khoảng thời gian dù khơng cĩ sự thay đổi, nĩ nhằm thơng báo cho các nút khác là nĩ vẫn cịn chạy, nĩ cũng đảm bảo rằng nĩ muốn lấy thơng tin khác nếu người hàng xĩm của nĩ bị hỏng.
Cập nhật phản ứng (triggered): xảy ra bất cứ lúc nào một nút nhận một cập nhật từ một người hàng xĩm mà nĩ cĩ sự thay đổi trong bảng routing.
Giả sử nút F phát hiện ra nút G sai. Đầu tiên F đặt khoảng cách mới tới G là khơng xác định và nĩ gởi thơng tin này tới A, bởi vì A biết rằng nĩ cĩ thể đi tới G 2 bước qua F , A cũng sẽ đặt khoảng cách tới G là khơng xác định, Tuy nhiên, với việc cập nhật kế tiếp từ , A sẽ học là C cĩ thể đi 2 bước đến G. Thật vậy, A sẽ biết đến G với 3 bước qua C, nĩ sẽ cập nhật giá trị này vào bảng, lúc nĩ quảng cáo đến Khung, nút F sẽ học đến G 4 bước qua A. Để ngăn ngừa trường hợp này, ví dụ lúc liên kết từ A đến E bị hỏng, trong lần cập nhật tiếp theo, A quảng cáo một khoảng cách khơng xác định đến Ethernet, nhưng B và C quảng cáo 2 bước tới E. Dựa vào một khoảng thời gian, vấn đề cĩ thể xảy ra, nút B nghe rằng nĩ cĩ thể đến E hai bước từ C, vậy nĩ cĩ thể đến Ethernet 3 bước và quảng cáo với A, nút kết luận rằng nĩ cĩ thể đến E 4 bước và quảng cáo tới C ….vịng lặp này chỉ kết thúc khi khoảng cách tăng đến một số đủ lớn. Nghĩa là, khơng cĩ nút nào thật sự biết E là nút khơng thể đến. Cĩ một vài cách để giải quyết vấn đề này:
• Sử dụng một số nhỏ nhất để xác định khoảng cách, ví dụ chúng ta cĩ thể quyết định số chặng lớn nhất qua một mạng nào đĩ sẽ khơng bao giờ lớn hơn 16.
• Split hozizon: lúc một nút gửi một routing cập nhật đến hàng xĩm của nĩ, nĩ khơng gởi router mà nĩ học từ mỗi hàng xĩm trở lại router đĩ. Ví dụ, nếu B cĩ router(E,2,A) trong bảng của nĩ, và nĩ biết rằng nĩ học cái này từ router A, và vì vậy bất cứ lúc nào B gửi router cập nhật đến A, nĩ sẽ khơng gửi router(E,2). B thật sự gửi router đĩ về A, nhưng nĩ đặt một thơng tin phủ nhận để đảm bảo rằng A khơng thể đến E từ B, ví dụ B gửi router(E, ) đến A.
Khoảng cách đến các nút Thông tin lưu
trữ ở Nút A B C D E F G A 0 1 1 2 1 1 2 B 1 0 1 2 2 2 3 C 1 1 0 1 2 2 2 D 2 3 1 0 3 2 1 E 1 2 2 3 0 2 3 F 1 2 2 2 2 0 1 G 2 3 2 1 3 1 0 Bảng IV-4.Khoảng cách hồn chỉnh ở tất cả các nút
3. Định tuyến theo trạng thái kết nối-Link state(OSPF):
Thơng đường theo trạng thái liên kết là một lớp thứ hai quan trọng của giao thức lộ trình. Mỗi nút cho rằng nĩ cĩ khả năng tìm ra trạng thái liên kết với người hàng xĩm của nĩ và chi phí của mỗi liên kết(chúng ta muốn cung cấp cho mỗi nút đầy đủ thơng tin để cĩ thể nĩ tìm ra một đường đi cĩ chi phí nhỏ nhất đến bất cứ địa chỉ nào).
Ý tưởng:
Mỗi nút biết như thế nào để nối kết trực tiếp với hàng xĩm của nĩ, và nếu chúng ta đảm bảo rằng tồn bộ những hiểu biết này được phổ biến đến tất cả các nút và rồi mỗi nút đủ kiến thức để xây dựng một sơ đồ mạng hồn chỉnh. Đây rõ ràng là một điều kiện lý tưởng cho việc tìm đường đi ngắn nhất cho bất kỳ điểm nào trong mạng. Giao thức thơng đường trạng thái liên kết dựa vào hai kỹ thuật chính:
• Đảm bảo sự phổ biến thơng tin trạng thái liên kết.
• Tính tốn đường đi từ tổng hợp tất cả các trạng thái liên kết mà nĩ biết.
Reliable Flooding
Đây là một quá trình nhằm đảm bảo tất cả các nút tham gia liên kết cĩ một bản sao thơng tin trạng thái liên kết từ tất cả các nút khác. "Flooding" cĩ nghĩa rằng một nút gửi thơng tin trạng thái liên kết ra tất cả các hàng xĩm nối kết trực tiếp đến nĩ và mỗi nút nhận thơng tin này tiếp tục chuyển ra tất cả các nút khác. Quá trình này tiếp tục cho tới khi chúng truyền thơng tin đến tồn bộ mạng. Chính xác hơn, mỗi nút tạo một gĩi (LSP) chứa các thơng tin sau:
• ID của nút tạo ra LSP
• Danh sách chi phí từ nĩ đến các hàng xĩm nối kết trực tiếp. • Một số thứ tự.
• Thời gian sống của gĩi. Flooding làm việc theo cách sau:
Đầu tiên thực hiện truyền một LSP giữa các router nằm sát nhau(nĩ đảm bảo truyền bằng cách sử dụng cách thức truyền và hồi báo), tuy nhiên cĩ nhiều bước cần đảm bảo flooding một LSP đến tất cả các nút trong mạng. Xem xét một nút X mà nĩ nhận bản sao của LSP từ host Y. X kiểm tra xem nĩ đã thật sự lưu trữ một bản sao LSP từ Y hay chưa, nếu chưa thì lưu trữ nĩ, ngược lại nĩ so sánh số thứ tự, nếu nĩ cho rằng bảng mới nhất thì nĩ thay thế cái củ, tiếp theo X gửi một bản sao LSP đĩ đến tất cả người hàng xĩm ngoại trừ Y , và sau đĩ thơng tin này sẽ đến tất cả các nút.
Hình IV-16. Flooding gĩi qua trạng thái liên kết. Hình trên là một ví dụ chỉ ra một LSP bị flooding trong một mạng nhỏ. Mỗi nút cĩ thể sinh ra LSP theo hai cách:
• Theo một khoảng thời gian định sẳn,
• Thay đổi sơ đồ nối kết cĩ thể là nguyên nhân một nút tạo ra một LSP mới(chỉ thực hiện khi cĩ một nút mới tham gia nối kết hay một liên kết bị hỏng). Nĩ cĩ thể phát hiện sự hỏng hĩc bằng cách gửi một thơng điệp thăm dị, nếu sau một khoảng thời gian khơng nhận được hồi báo nĩ xem như hàng xĩm bị hỏng và tạo ra một LSP mới.
Một trong những mục tiêu thiết kế quan trọng của giao thức flooding là các thơng tin mới nhất phải được flood đến tất cả các nút nhanh chĩng, trong khi các thơng tin cũ phải được di chuyển từ mạng và khơng cho phép lưu thơng. Thêm vào đĩ nĩ giảm tổng phí giao thơng trên mạng.
Một cách để làm giảm sự quá tải trên mạng là bằng cách tránh tạo ra LSP trừ khi thật sự cần thiết. Nĩ được thực hiện bằng cách gán một thời gian dài, thường là một vài giờ cho việc tạo ra một LSP mới.
Để đảm bảo rằng thơng tin củ được thay thế bởi thơng tin mới hơn, LSP mang một số thứ tự. Mỗi lần sinh ra một LSP mới, nĩ tăng số thứ tự lên 1, trường này tới 64 bit. Nếu một nút bị hỏng và nối kết lại nĩ gán số thứ tự này bằng 0. Nếu nút đĩ bị hỏng trong một thời gian dài, tất cả các LSP của nút sẽ bị xố, ngược lại nếu nĩ nhận một bảng sao của chính nĩ với số thứ tự cao hơn, nĩ cĩ thể gia tăng và sau đĩ sử dụng số thứ tự này.
LSP cũng mang một thời gian sống(time-to-live), nĩ dùng để đảm bảo rằng thơng tin liên kết củ phải được di chuyển khỏi mạng. Một nút luơn luơn giảm TTL của một LSP mới nhận trước khi gửi nĩ cho tất cả các người hàng xĩm.
Tính tốn đường đi
Khi một nút cĩ một bản sao của LSP từ các nút khác, nĩ cĩ thể tạo ra một sơ đồ hồn chỉnh của mạng và từ bảng đồ này nĩ cĩ thể quyết định đường đi tốt nhất đến đích. Dựa vào thuật tĩan Dijkstra, tưởng tượng rằng một nút lấy tất cả LSP mà nĩ nhận và xây dựng một đồ thị thể hiện đường đi trên mạng.
Thuật tốn:
• N tập tất cả các nút trong đồ thị. • l(i,j) chi phí cho cạnh(i,j)
• s chỉ nút hiện tại.
• C(n) chi phí đường đi từ s đến n • M chỉ tập các nút
• Thuật tốn tìm đường đi ngắn nhất: • M={s} • For each n in N-{s} C(n) = l(s,n) • While (N!=M) o M = M U {w} mà C(w) là giá trị nhỏ nhất trong tất cả w in (N- M) o For each n in (N-M) C(n) = MIN(C(n), C(w) + l(w,n))
Trong thực tế, mỗi chuyển mạch tính bảng table routing của nĩ từ các LSP, nĩ sử dụng thuật tốn forward search. Mỗi chuyển mạch chứa hai danh sách
Tentative và Confirmed. Mỗi danh sách này chứa một tập các entry dạng <Destination, Cost, NextHop>. Thuật tốn làm việc như sau:
1. Khởi tạo danh sách confirmed với một entry cho chính nĩ, với chi phí là 1. 2. Cho nút vừa thêm đến danh sách confirmed trong bước trước, gọi nút Next. 3. Cho mỗi hàng xĩm của Next tính cost(chi phí) đến các hàng xĩm này(bằng
tổng chi phí từ chính nĩ đến Next và từ Next đến hàng xĩm).
4. If hàng xĩm hiện tại khơng cĩ trong confirmed và tentative, thêm (Neighbor, Cost, NextHop) tới danh sách tentative
5. If hàng xĩm hiện tại trên danh sách tentative, và chi phí hiện tại thấp hơn chi phí hiện tại, thay thế entry với (Neighbor, Cost, Nexthop).
6. If tentative rỗng, thì dừng lại, ngược lại lấy từ danh sách Tentative một entry chi phí thấp nhất và đặt nĩ vào danh sách Confirmed và chạy lại bước 2.