3.3. Điều khiển tắc nghẽn bằng thay đổi bảng định tuyến
Trong phần này, chúng tôi mô tả chi tiết thuật toán điều khiển tắc nghẽn đề xuất (thuật toán CA-Chord). Thuật toán hoạt động bằng cách thay đổi bảng định tuyến để tránh định tuyến các câu truy vấn đi qua nút tắc nghẽn trong mạng ngang hàng có cấu trúc. Khi nút tắc nghẽn nhận được một yêu cầu truy vấn, nó sẽ gửi một thông báo tắc nghẽn trở lại nút gửi (nút nguồn hoặc nút chuyển tiếp các câu truy vấn) để thơng báo tình trạng tắc nghẽn. Thơng báo tắc nghẽn có chứa thơng tin về nút thay thế do nút tắc nghẽn lựa chọn. Nút gửi sẽ thay đổi bảng định tuyến bằng cách thay thế nút tắc nghẽn trong bảng định tuyến bởi nút thay thế trong thơng báo tắc nghẽn mà nó nhận được. Nút thay thế nằm sau nút tắc nghẽn trên đường định tuyến của truy vấn. Khi nút tắc nghẽn trở lại trạng thái bình thường, nó gửi thơng báo hết tắc nghẽn cho các nút gửi đã nhận được thơng báo tắc nghẽn của nó để các nút này thay đổi bảng định tuyến trở về trạng thái ban đầu.
Phương pháp này có thể tránh tắc nghẽn cục bộ thông qua việc tận dụng khả năng của các nút khơng tắc nghẽn để định tuyến gói tin, đồng thời khơng làm tăng số bước trong đường đi của gói tin, khơng làm ảnh hưởng đến mơ hình mạng Chord và khơng làm tăng kích thước của bảng định tuyến.
Phương pháp CA-Chord hoạt động theo các bước sau:
Bước 1: Phát hiện tắc nghẽn
Mỗi nút trong hệ thống có khả năng định tuyến C, là số tối đa các thơng báo truy vấn mà nút đó có thể định tuyến trong một đơn vị thời gian. Giá trị C được xác định dựa trên kích thước của thông báo truy vấn và băng thông được sử dụng cho việc định tuyến các thông báo truy vấn. Gọi B là băng thông mà một nút sử dụng cho việc định tuyến các thông báo truy vấn, đơn vị đo của B là Mbps, S là kích thước của thơng báo truy vấn, đơn vị đo của S là Byte. Khi đó, khả năng định tuyến của một nút được xác định theo công thức 3.1:
𝐶 = 𝐵
8 × 𝑆 (3.1)
Giả sử kích thước của thơng báo truy vấn là 200 Byte, băng thông của nút là 100Mbps và người dùng thiết lập băng thông định tuyến các thông báo truy vấn là 10Mbps thì khả năng định tuyến của nút đó là 6250 (10 Mbps / 200 Byte = 10000000 bit/s / 200 * 8 bit = 6250) thông báo trên một giây.
Nếu tốc độ thông báo truy vấn đến một nút lớn hơn khả năng định tuyến thì nút đó sẽ khơng xử lý thêm bất kỳ một thông báo truy vấn nào nữa và các thông báo truy vấn đến sau sẽ bị loại bỏ. Trạng thái này được gọi là trạng thái "tắc nghẽn cứng". Trạng thái "tắc nghẽn cứng" của một nút cho biết nút đó bị tắc nghẽn hồn tồn, khơng cịn khả năng xử lý thông báo truy vấn. Tốc độ thông báo truy vấn đến được tính tốn dựa trên việc đếm số thông báo truy
Để tránh xảy ra mất mát gói tin khi tắc nghẽn, mỗi nút sẽ theo dõi tốc độ gói tin đến phục vụ phát hiện sớm tắc nghẽn. Chúng tôi định nghĩa một tham số T gọi là ngưỡng tắc nghẽn mềm cho biết trạng thái tắc nghẽn của một nút. Ngưỡng tắc nghẽn mềm được xác định theo công thức (2) dưới đây:
T = p * C (2)
với p là một tham số hệ thống và 0 < p< 1.
Khi tốc độ thông báo truy vấn gửi đến của một nút đạt đến ngưỡng tắc nghẽn mềm, chúng tơi xem nút đó ở trạng thái bị tắc nghẽn. Trong trường hợp này, nút sẽ kích hoạt thủ tục xử lý tránh tắc nghẽn, tuy nhiên các thông báo truy vấn đến vẫn được xử lý như bình thường. Trạng thái này được gọi là
"trạng thái tắc nghẽn mềm".
Giá trị của ngưỡng tắc nghẽn mềm T ảnh hưởng đến "độ nhạy" của việc phát hiện tắc nghẽn. Nếu T quá nhỏ, các nút dễ dàng được coi là bị tắc nghẽn ngay cả khi chúng vẫn có khả năng xử lý. Mặt khác, nếu T quá lớn, quá trình xử lý nghẽn được thực hiện muộn, dẫn đến một nút bị tắc nghẽn hồn tồn, điều này sẽ làm tăng số lượng gói tin bị loại bỏ. Giá trị thích hợp của T được xác định dựa trên một số thí nghiệm cụ thể trong đánh giá thuật tốn.
Mỗi nút duy trì một danh sách các nút láng giềng đứng sau (theo chiều kim đồng hồ) trong không gian định danh ở trạng thái không tắc nghẽn và danh sách các nút phía trước (theo ngược chiều kim đồng hồ) mà nó gửi thơng báo tắc nghẽn. Khi một nút thay đổi từ trạng thái tắc nghẽn sang trạng thái không tắc nghẽn, nó sẽ thơng báo trạng thái của nó cho các nút trong danh sách nút phía trước nó để các nút này cập nhật lại bảng định tuyến. Danh sách các nút láng giềng đứng sau không bị tắc nghẽn được dùng để lựa chọn ra nút thay thế tốt nhất.
Khi một nút ở trạng thái "tắc nghẽn mềm" nhận được một thông báo truy vấn mới, nó sẽ thực hiện các tác vụ sau để tránh định tuyến gói tin đi qua các nút tắc nghẽn:
- Nút nhận thông báo truy vấn trong trạng thái tắc nghẽn (nút tắc nghẽn) gửi thông báo tắc nghẽn trở lại nút gửi thông báo truy vấn để thơng báo trạng thái tắc nghẽn của nó và thơng tin về nút thay thế. Nút thay thế là nút khơng tắc nghẽn có khả năng định tuyến truy vấn tốt nhất trong danh sách các nút láng giềng đứng sau không bị tắc nghẽn do nút tắc nghẽn quản lý. Phương pháp lựa chọn này làm giảm số lượng nút (nghĩa là số lượng hop) mà gói tin phải đi qua, tăng hiệu năng của tồn hệ thống. Thơng tin về nút nhận thông báo tắc nghẽn được nút tắc nghẽn lưu vào cơ sở dữ liệu của nó để hạn chế việc gửi lặp lại các thông báo tắc nghẽn khơng cần thiết. Thuật tốn xử lý tắc nghẽn tại nút n được mơ tả bằng đoạn giả mã trong Hình 3.1. Trong đoạn mã đó, v là nút tốt nhất chưa bị tắc nghẽn sau nút n, s là nút chuyển tiếp câu truy vấn đến nút n.
Hình 3.1. Giả mã thuật toán xử lý tắc nghẽn tại nút n
- Khi nút gửi nhận được gói tin thơng báo tắc nghẽn, nó thay thế nút tắc nghẽn trong bảng định tuyến bằng nút thay thế được chọn. Các gói tin mới
Để khơi phục lại trạng thái ban đầu của bảng định tuyến, mỗi nút sẽ lưu giữ đường định tuyến gốc trước khi thay đổi bảng định tuyến để tạo đường định tuyến mới.
Bảng 3.2 dưới đây là một ví dụ cho việc xử lý tránh tắc nghẽn. Giả sử nút ni có định danh là Ni, bảng định tuyến ban đầu của nút ni như sau:
Idx Target ID Active Route Origin Route
1 Ni + 20 na na 2 Ni + 21 nb nb … … k-1 Ni + 2k-1 nk-1 nk-1 k Ni + 2k nk nk … … … … m Ni + 2m nx nx