Sau khi có được LSA của tất cả các node khác, cùng với LSA của mình tạo ra, mỗi node sẽ biết được mọi thơng tin về cấu hình kết nối, trạng thái kết nối…của mạng. Các thông tin này sẽ được sử dụng để tính tốn chọn đường.
Thơng thường một LSA cịn chứa thêm nhiều thơng tin khác như:
• Số thứ tự: Khi trong mạng tồn tại nhiều LSA do cùng một node
tạo ra, số thứ tự của LSA sẽ được dùng để chọn ra LSA mang thông tin mới nhất.
• Tuổi của LSA: Giá trị này được dùng để liểm tra xem LSA cịn có
giá trị nữa hay khơng.
• Kiểm tra lỗi: Dùng để kiểm tra lỗi trong khi truyền LSA trên
mạng hoặc khi lưu LSA trong bộ nhớ.
Ngoài ra, trong các giao thức khác nhau, LSA cịn có thể các trường mang các thơng tin chi tiết hơn, ví dụ như: cost của link cho các dịch vụ khác nhau, tình trạng tắc nghẽn của node…
Ta thấy, việc tạo ra LSA khá đơn giản. Nhưng vấn đề là ở chỗ khi nào thì tạo LSA. Cách thứ nhất là tạo chúng một cách định kỳ, cứ sau một khoảng thời gian xác định sẽ thực hiện. Cách thứ hai là tạo các LSA mỗi khi trong mạng có một sự thay đổi đáng kể như khi link, hoặc node thay đổi khả năng hoạt động: đang hoạt động tốt thì hỏng hoặc ngược lại.
1.4.5.5. Phân phát các LSA
Khi phân phát các LSA, yêu cầu đặt ra là phải nhanh, và đủ tin cậy. Thông
Switch B Links A D 4 2 Switch A Links B C 4 3 E 1 Ứng dụng 1 Switch E Links A C 1 1 D 3 Switch C Links A D 3 5 E 1 Switch A Links B C 2 5 E 3
tự sẽ được tăng dần lên. Mỗi node sẽ lưu giữ một bản danh sách các cặp giá trị (node,
số thứ tự). Khi một node nhận được một LSA, nó sẽ kiểm tra số thứ tự của LSA này,
nếu lớn hơn so với số thứ tự lưu trong bản danh sách, nó sẽ cập nhật cơ sở dữ liệu trạng thái liên kết của mình, đồng thời chuyển tiếp theo tất cả các link nối vào nó ngoại trừ link mà qua đó LSA được chuyển tới. Trường hợp ngược lại, LSA sẽ được bỏ qua.
Việc sử dụng số thứ tự trong các LSA cũng gặp phải một số rắc rối:
• Thứ nhất, nếu việc tăng dần số thứ tự dẫn đến tràn số, hoạt động của mạng bị rối loạn. (Tràn số là điều tất yếu xảy ra khi tăng số lên vượt quá phạm vi biểu diễn của máy tính, ví dụ khi biểu diễn số tự nhiên bằng 8 bit, ta chỉ có thể có giá trị lớn nhất là 255; sau khi cộng thêm 1 vào số này, kết quả thu được sẽ là 0). Vấn đề này có thể được giải quyết bằng cách sử dụng nhiều bit để biểu diễn số thứ tự. Ví dụ nếu sử dụng số thứ tự 32 bit, và với chu kỳ phát LSA thì phải sau 136 năm mới xảy ra tràn số.
• Thứ hai, nếu một node bị hỏng, nó sẽ bị mất giá trị số thứ tự hiện tại của mình. Nếu nó lại bắt đầu từ 0, tất cả các LSA nó phát đi sẽ khơng có giá trị. Vấn đề này có thể được giải quyết bằng cách: node sau khi bị hỏng và hoạt động trở lại, sẽ gửi yêu cầu tới tất cả các node khác trong mạng khởi tạo lại cặp giá trị (node, số thứ tự) tương ứng.
Để tăng độ tin cậy khi “tràn ngập”, tất cả các node đều phải gửi thơng tin báo nhận khi nó nhận được một LSA, dù LSA đó mang thơng tin củ hay mới. Nếu hai node lân cận gửi cùng một LSA cho nhau thì khơng cần phải báo nhận. Một node sau khi gửi LSA mà chưa được báo nhận thì sẽ tiếp tục gửi LSA sau mỗi khoảng thời gian quy định cho tới khi nhận được báo nhận.
Ví dụ, với mạng hình 2.9 ở trên, giả sử node A gửi LSA của mình, quá trình tràn ngập sẽ diễn ra như sau:
• Đầu tiên, A gửi các LSA của mình cho các node B, C và E.
• B, C và E thấy các LSA mới nhận được mang thông tin mới, sẽ cập nhật vào cơ sở dữ liệu, và gửi báo nhận về A. Sau đó, B sẽ truyền LSA này cho D, C truyền cho D và E, cịn E thì truyền cho và D.
• LSA chuyển giữa C và E được ngầm hiểu là báo nhận. Ở D, giả sử nhận được LSA từ C trước tiên, sẽ gửi LSA cho B và E, và gửi báo nhận cho C. Và D cũng ngầm coi các LSA chuyển đến từ B và E là báo nhận.
• Các LSA nhận được ở B và E từ D cũng được ngầm hiểu là báo nhận.
Để giảm lượng tài nguyên mạng bị chiếm bởi tràn ngập, các LSA sẽ giảm nhiều kích thước bằng cách chỉ chứa các thông tin về những thay đổi trong mạng.
1.4.5.6. Tính tốn chọn đường
Sau khi node đã có cơ sở dữ liệu đầy đủ, nó sẽ thực hiện việc tính tốn chọn đường. Như đã nói, hầu hết các giao thức chọn đường theo trạng thái liên kết đều sử dụng thuật tốn Dijkstra để tính tốn tìm đường ngắn nhất. Mỗi link sẽ có hai giá trị cost tương ứng do hai node ở hai đầu gửi đến. Thuật tốn Dijkstra có thể sử dụng cả hai giá trị này, mỗi giá trị cho một hướng, cũng có thể sử dụng giá trị trung bình cho cả hai hướng.
1.4.6. Định tuyến phân cấp
Khi số lượng các node trong mạng tăng, kích thước của bảng chọn đường tại mỗi node cũng tăng tương ứng. Điều này, khơng chỉ làm lãng phí nhiều bộ nhớ mà cịn làm tăng khoảng thời gian cho mỗi lần tìm đường (phải chọn trong bảng chọn đường lớn) và cịn làm lãng phí nhiều dung lượng đường truyền để truyền chúng đi. Kích thước của mạng cứ tăng, cho đến một lúc nào đó, việc mỗi node đều lưu thông tin để chọn đường tới tất cả các node khác trong mạng sẽ không cịn hợp lý, khi đó các node trong mạng cần phải được phân thành các cấp khác nhau để thực hiện việc định tuyến.
Khi phân cấp, các node sẽ được đưa vào các vùng khác nhau. Mỗi node chỉ cần biết chi tiết về việc chọn đường tới các đích trong một vùng với nó. Điều này rất phù hợp khi kết nối nhiều mạng lại với nhau. Lúc đó, mỗi mạng được coi là một vùng, mỗi node trong một mạng sẽ không cần phải biết chút gì về cấu trúc của các mạng khác.