CHƯƠNG 3: CẤU TRÚC CHỈ MỤC PHÂN TÁN CHORD KÉP 3.1. Giới thiệu 3.1. Giới thiệu
Mô hình mạng Chord có thể được thiết kế cho những hệ thống và ứng dụng ngang hàng phân tán dựa trên nó bằng cách giải quyết tốt những khó khăn [6]:
- Cân bằng tải: Chord có thể đóng vai trò phân phối khóa đến từng nút với số lượng đồng đều.
- Tính phân tán: trong mạng không có nút nào đóng vai trò quan trọng hơn các nút khác. Vì vậy Chord có thể đáp ứng các ứng dụng ngang hàng trong môi trường mạng không ổn định.
- Khả năng mở rộng: độ phức tạp của một truy vấn trong mạng Chord tăng lên ứng với log của số lượng các nút, do đó có thể đáp ứng cả với những hệ thống rất lớn.
- Khả năng chịu lỗi: Chord có khả năng tự điều chỉnh các bảng định tuyến trên mỗi nút tương ứng với sự ra/ vào mạng của các nút, kể cả việc các nút đột ngột rời khỏi mạng. Chord còn đảm bảo trong bất kỳ môi trường mạng nào với mỗi một khóa bất kỳ đều có một nút tương ứng, chịu trách nhiệm về khóa đó.
- Khả năng đặt tên linh hoạt: giao thức Chord không có bất kỳ rằng buộc nào trên cấu trúc key mà nó tra cứu/ tìm kiếm. Các ứng dụng sử dụng Chord có khả năng tùy biến trong việc gán tên với các khóa.
Đã có những nghiên cứu nhằm mục đích cải tiến hiệu năng, nâng cao hiệu quả của giao thức Chord [14] [15], tuy nhiên các nghiên cứu này chỉ dựa trên cấu trúc chỉ mục cơ bản (đơn hướng, cùng chiều kim đồng hồ) của Chord.
[5] đưa ra một đề xuất cải thiện việc truy vấn và định tuyến trong mô hình mạng Chord bằng cách xây dựng quy tắc sao cho mô hình mạng mới có khả năng định tuyến theo 2 chiều, mô hình mạng mới này gọi là Chord kép (Bi-Chord).
Cấu trúc chỉ mục Chord kép được xem là phần mở rộng của cấu trúc chỉ mục Chord khi thêm vào chiều ngược lại. Với cấu trúc chỉ mục mới, các nút trên vòng Chord có thể định tuyến theo 2 chiều, cùng chiều kim đồng hồ và ngược chiều kim đồng hồ.
3.2. Cấu trúc chỉ mục Chord kép
Trong không gian định danh m bit, nếu như cấu trúc chỉ mục Chord chứa
m chỉ mục có thứ tự từ 0 ÷ m-1 và mỗi nút cần viếng thăm O(logN) (N số nút tham gia) với các nút trong mạng thì cấu trúc chỉ mục Chord sẽ có 2m-1 chỉ mục gồm:
m chỉ mục theo chiều thuận (cùng chiều kim đồng hồ),
m-1 chỉ mục theo chiều ngược (ngược chiều kim đồng hồ).
Và như vậy cấu trúc chỉ mục Chord kép có 2m-1 chỉ mục có giá trị từ 0 ÷ 2m-2. Hình 3.1 và hình 3.2 mô tả cấu trúc chỉ mục Chord kép theo [5]
x.finger[i] = {𝑥 − 2
𝑖−1
2 (i lẻ, 0 ≤ i ≤ 2m-2) 𝑥 − 22𝑖 (i chẵn, 0≤ i ≤ 2m-2) Hình 3.1. Cấu trúc chỉ mục theo chiều ngược
x.finger[i] = x + 2i (0 ≤ i ≤ m-1)
Hình 3.2. Cấu trúc chỉ mục theo chiều thuận
Trong đó phần thuận (clockwise) được ký hiệu dấu “+”, phần ngược (anti- clockwise) ký hiệu “ ˗ ”.
Hình 3.3 dưới đây mô tả cấu trúc chỉ mục Chord kép tại nút N8. Theo chiều thuận, N8 có các nút tham chiếu theo bảng chỉ mục gồm {N14, N21, N32, N42}, còn theo chiều ngược N8 tham chiếu đến {N8, N56}. Chi tiết như sau:
N8+1 N9 N14 N8-1 N7 N8 N8+2 N10 N14 N8-2 N6 N8 N8+4 N12 N14 N8-4 N4 N8 N8+8 N16 N21 N8-8 N0 N1 N8+16 N32 N8-16 N56 N8+32 N40 N42
Hình 3.3. Mô tả cấu trúc chỉ mục Chord kép của nút N8.
[5] đã đưa ra quy tắc cho cấu trúc chỉ mục Chord kép mà chưa xây dựng thủ tục định tuyến/ truy vấn cụ thể. Việc đề xuất và xây dựng chi tiết thủ tục định tuyến cho Chord kép sẽ được đề cập tại chương 4 của luận văn.
3.3. Định tuyến trong mạng Chord kép
Được xem như phần mở rộng của mạng Chord, mạng Chord kép kế thừa hoàn toàn các thuộc tính của giao thức Chord. Nếu trong Chord các truy vấn định tuyến chỉ được thực hiện theo 1 chiều (cùng chiều kim đồng hồ) thì Chord kép các truy vấn có thể thực hiện theo cả 2 chiều (cùng chiều kim đồng hồ, chiều thuận và ngược chiều kim đồng hồ, chiều ngược).
Để định tuyến thành công, các nút trong Chord kép phải xác định chính xác vị trí nút successor của khóa k trên vòng tròn và phụ thuộc rất nhiều vào các nút được tham chiếu đến trong bảng chỉ mục.
Hình 3.4 dưới đây so sánh quá trình định tuyến tìm kiếm giá trị khóa K54 trong mô hình mạng Chord và Chord kép với 6-bit định danh (theo [5]).
- Khóa có định danh K54 được lưu tại nút N56, N56 là successor của K54.
- Nút N8 muốn tìm giá trị khóa K54 N8 định vị được nút N56.
- Chi tiết bảng chỉ mục của nút N8 với 2 mô hình Chord và Chord kép như sau: N1 N8 N14 N21 N32 N38 N42 N48 N51 N56 Chỉ mục Nút N8+1 N14 N8-1 N8 N8+2 N14 N8-2 N8 N8+4 N14 N8-4 N8 N8+8 N21 N8-8 N1 N8+16 N32 N8-16 N56 N8+32 N42 +8 +16 +32 - 8 - 16
Mô hình Chord Mô hình Chord kép N8+1 N14 N8+1 N14 N8+2 N8 N8-1 N8 N8+4 N14 N8+2 N14 N8+8 N21 N8-2 N8 N8+16 N32 N8+4 N14 N8+32 N42 N8-4 N8 N8+8 N21 N8-8 N1 N8+16 N32 N8-16 N56 N8+32 N42
Hình 3.4. Mô tả quá trình định tuyến trong Chord so với Chord kép [5]. Trong mô hình mạng Chord, để tìm đến nút N56, N8 phải thực hiện các Trong mô hình mạng Chord, để tìm đến nút N56, N8 phải thực hiện các bước sau:
- Tìm trong khoảng từ N8 đến nút successor của nó là N14, do N56 không nằm trong khoảng này nên N8 chuyển sang việc tìm tại phần còn lại của bảng chỉ mục.
- N8 sẽ cố gắng tìm nút có định danh bằng hoặc nhỏ hơn gần nhất so với định danh của khóa muốn tìm, nếu không có nút nào thỏa mãn, nó sẽ chuyển đến nút cuối cùng trong bảng chỉ mục. Do K54 có giá trị lớn hơn N42 nên truy vấn chuyển đến cho nút N42
- Tại nút N42, quá trình tìm kiếm lặp lại và N42 tìm kiếm trong bảng chỉ mục của mình gồm các nút tham chiếu {N48, N51, N1}. N42 chuyển
N1 N8 N14 N21 N32 N38 N42 N48 N51 N56 K54 N1 N8 N14 N21 N32 N38 N42 N48 N51 N56 K54 (b) (a)
tiếp truy vấn đến nút có định danh nhỏ hơn gần nhất so với K54, là nút N51
- Bảng chỉ mục tại nút N51 gồm {N56, N1, N8, N21}. N51 tìm thấy ngay nút successor(K54) chính là nút successor của nút N51 là N56. Quá trình tìm kiếm dừng lại và kết quả trả cho nút N8. Như vậy qua 3 bước chuyển tiếp truy vấn, N8 đã tìm thấy successor(K54) = N56
Với mô hình mạng Chord kép, N8 có thể tìm kiếm successor(K54) theo 2 chiều.
- Như mô tả phần trên, theo chiều thuận, do N8 không tìm thấy nút
successor của K54 trong tập nút mà bảng chỉ mục thuận trỏ đến, mặt
khác do định danh K54 lớn hơn các định danh của nút tham chiếu nên N8 sẽ chuyển tiếp truy vấn đến nút N42, vì N42 có định danh gần với
successor của khóa muốn tìm nhất.
- Tuy nhiên theo chiều ngược, nút N8 có tập các nút mà bảng chỉ mục theo chiều ngược trỏ đến gồm {N8; N1; N56}
- Sau khi không tìm thấy nút successor(K54) trong khoảng từ nút
predeccessor của N8 và N8, nó sẽ tiến hành tìm trong phần còn lại của
bảng chỉ mục theo chiều ngược và tìm thấy nút N56 chính là successor
của khóa K54.
Nhận xét: với vòng Chord cần ít nhất 3 bước chuyển tiếp truy vấn để tìm được nút successor K54, nhưng với vòng Chord kép chỉ cần 1 bước chuyển đã có thể tìm được successor K54.
Nút ra nhập và rời mạng: vì được xây dựng trên nền mạng Chord nên thủ tục mà một nút mới gia nhập mạng cũng tương tự như trên mạng Chord. Khi nút
n muốn gia nhập mạng, nó khởi chạy thủ tục join(n’) – n’ là nút đang tồn tại trong mạng để tìm nút successor phù hợp cho n, mỗi nút trong mạng định kỳ khởi chạy thủ tục stabilize() để cập nhật lại thông tin về các nút có trong mạng. Nút n thi hành thủ tục stabilize() để tìm nút successor của nút predecessor sau đó thay thế nút này cho nút successor hiện tại. Hình dưới đây là mã giả của thủ tục gia nhập mạng đối với mỗi nút mới theo [6].
Hình 3.5. Mã giả thủ tục cho nút mới gia nhập mạng.
Thủ tục n.join(n’) do n khởi tạo với n’ là nút đang hoạt động trong mạng. Thủ tục n.stabilize() cập nhật thông tin về các nút có trong mạng.
3.4. Hiệu năng của mạng Chord kép
Tiếp theo là các kết quả đánh giá hiệu năng theo [5].
Hiệu năng của một giao thức phụ thuộc rất nhiều vào độ dài tuyến đường định tuyến giữa 2 nút bất kỳ trong mạng. Nếu quy định độ dài tuyến đường định tuyến (path length, gọi tắt pL) là số lượng các nút phải đi qua để tới nút đích, trong mạng Chord với N nút tham gia thì với xác suất cao, giá trị này = O(logN).
Hình dưới đây mô tả pL trên Chord và Chord kép.
0 1 1 2 1 2 2 3 1 2 2 3 2 3 3 4 0 1 1 2 1 2 2 2 1 2 2 2 1 2 1 1 CHORD (m=4) CHORD kép (m=4)
Dễ thấy pL trên Chord kép nhỏ hơn khá nhiều so với pL trên Chord, đặc biệt là nửa trái của vòng Chord.
Giả sử gọi mỗi bước chuyển (hop) từ nút này sang nút khác theo chiều kim đồng hồ = 1, ngược chiều kim đồng hồ = -1 thì quá trình định tuyến từ nút N0 đến nút N13 trong Chord như sau:
13 = 0 + (1×23 + 1×22 + 0×21 + 1×20)
Tương tự, quá trình định tuyến trong Chord kép được mô tả như sau: 13 = (0 + (0×23 - 1×22 + 0×21 + 1×20)) mod 24
pL là tổng số lượng các số 1; pL(Chord) = 3;
pL(Chord kép) = 2.
Ký hiệu : CQ(n) – giá trị trung bình pL trên Chord trong không gian định danh 2n
BQ(n) – giá trị trung bình pL trên Chord trong không gian 2n
QR(n) – tỷ lệ giá trị trung bình Chord kép so với Chord [5] đã chứng minh QR(n) = 𝐵𝑄(𝑛)
𝐶𝑄(𝑛) ≈ 23
Như vậy, tỷ lệ trung bình pL của Chord kép so với Chord là 2/3.
Bên cạnh đó, mỗi khi nút gia nhập hoặc rời mạng, hệ thống cần cập nhật bảng thông tin định tuyến bằng cách gửi các thông điệp quảng bá (Broadcast) = O(log2N)
Hình 3.7. Thông điệp quảng bá trong mạng Chord kép với n=4
1 2 4 8 12 14 15
5 6 7 9 10 11
3 13
Hình 3.8. Thông điệp quảng bá trong mạng Chord với n=4
Mô hình truyền thông quảng bá theo hình 3.7 cho thấy mạng Chord kép chỉ cần tối đa 2 bước chuyển đã có thể định tuyến đến các nút trên vòng Chord nên gói tin phát quảng bá tới tất cả các nút sẽ đi nhanh.
Mô hình truyền thông theo hình 3.8 thì mạng Chord cần số thời gian nhiều gấp đôi thời gian cần để phát quảng bá tới tất cả các nút (4 bước chuyển)
Giả sử gọi CM(n) thời gian trung bình để thông điệp đi tới các nút trong mạng Chord trong không gian định danh 2n
BM(n) thời gian trung bình để thông điệp đi tới các nút trong mạng Chord kép trong không gian định danh 2n
MR(n) tỷ lệ so sánh trung bình của mạng Chord kép và mạng Chord Theo [5] thì MR(n) = 𝐵𝑀(𝑛) 𝐶𝑀(𝑛) ≈ 1 2 1 2 4 8 5 6 9 10 12 3 7 11 13 14 15 0
CHƯƠNG 4: MÔ PHỎNG VÀ ĐÁNH GIÁ HIỆU NĂNG ĐẢM BẢO AN NINH ĐỊNH TUYẾN CHO MẠNG CHORD KÉP
4.1. Tóm tắt những vấn đề an ninh
Kiến trúc mạng ngang hàng với ứng dụng DHT cho phép thiết kế những hệ thống mạng lớn, những ứng dụng cùng hệ thống lưu trữ phân tán có khả năng thích nghi cao trong vấn đề chống chịu lỗi. Tuy nhiên sẽ rất nguy hiểm nếu hệ thống bị mất an toàn trong quá trình định tuyến, tra cứu và tìm kiếm. Chỉ cần một phần nhỏ vửa đủ các nút gây hại đã có thể ngăn chặn phần lớn những thông điệp luân chuyển trong hệ thống.
Do tính chất của cấu trúc chỉ mục phân tán, các truy vấn tìm kiếm giữa các nút trong lớp mạng phủ được thực hiện thông qua cơ chế định tuyến phụ thuộc vào các nút khác do đó việc đảm bảo quá trình định tuyến là một yếu tố quan trọng cho việc truyền thông điệp trong cấu trúc chỉ mục phân tán Chord kép một cách chính xác. Dưới đây tóm tắt lại những vấn đề an ninh trong định tuyến có thể gặp trong mô mạng Chord kép khi bị tấn công với một tỷ lệ nút nhiễm độc nhất định. - Vứt bỏ các truy vấn (mà nó nhận được) - Dropping Lookup Requests: đây là kiểu tấn công đơn giản nhất, nút nhiễm độc sẽ không hồi đáp các truy vấn chuyển đến nó.
- Chuyển tiếp truy vấn ngẫu nhiên - Randomly Misrouting Lookup Requests: kẻ tấn công cố gắng chuyển các truy vấn của nạn nhân tới các nút ngẫu nhiên không đúng với địa chỉ nút đã quy định trong bảng chỉ mục phân tán nhằm ngăn ngừa các truy vấn đến đích đúng.
- Vòng định tuyến nhỏ - Performing a Sub-ring: trong loại hình tấn công này, một nhóm các nút tấn công sẽ thông đồng với nhau nhằm đưa truy vấn của nạn nhân đến nút nhiễm độc nào đó. Để làm được điều này, mỗi nút nhiễm độc phải duy trì 2 bảng chỉ mục, 1 bảng đúng, 1 bảng còn lại chứa các nút nhiễm độc đầu tiên gần nhất với các nút không nhiễm độc trong bảng chỉ mục. Khi một kẻ tấn công nhận được 1 yêu cầu truy vấn “sạch” chúng sẽ chuyển tiếp các truy vấn này tới các nút nhiễm độc trong bảng chỉ mục thứ 2, truy vấn “sạch” sẽ bị chuyển lòng vòng qua các nút nhiễm độc đã định trước và kết thúc tại một nút nhiễm độc nào đó, dĩ nhiên nút này không phải là đích đến đúng. Kiểu tấn công này rất khó phát hiện nếu những kẻ tấn công hợp tác với nhau sao cho quá trình truy vấn luôn “đúng”
N4 N8 N10 N14 N18 N20 N22 N24 N28 N30 N32 N36 N38 N42 N63 N61 N56 N50 N46 K35 N2 K28 K1
Hình 4.1. Mô tả các tính chất của nút nhiễm độc
- Nút N14 gửi yêu cầu truy vấn đến nút N32 yêu cầu tìm khóa K35 lưu tại nút N36. Thay vì trả lời truy vấn cho nút N14, nút N32 loại bỏ các truy vấn chuyển đến nó, N32 là nút bị nhiễm độc có tính chất không hồi đáp truy vấn.
- Nút N10 chuyển tiếp truy vấn đến nút N18 yêu cầu tìm khóa K28 được lưu tại nút N28. Nhưng thay vì chuyển truy vấn đến N28, N10 lại chuyển tiếp truy vấn sang nút N50. N10 bị nhiễm độc có tính chất chuyển tiếp truy vấn ngẫu nhiên.
- Nút N38 chuyển yêu cầu truy vấn đến N46 với yêu cầu tìm kiếm khóa K1 tại nút N2. N46 chuyển tiếp truy vấn đến N46, N46 lại chuyển đến N56, N56 chuyển cho N4 và N4 chuyển đến N22. Truy vấn không bao giờ tới đích. N46, N56, N4, N22 bị nhiễm độc tạo thành một vòng định tuyến nhỏ hơn.
4.2. Xây dựng thủ tục định tuyến
[5] đã đề xuất ý tưởng cho mô hình mạng Chord kép mà chưa xây dựng thủ tục định tuyến cụ thể, dưới đây là các đề xuất của luận văn nhằm xây dưng thủ tục định tuyến cụ thể và hiệu quả.
Mô hình mạng Chord kép có thể truy vấn theo 2 chiều nên một câu hỏi được đặt ra là: để tìm successor của 1 khóa thì nên đi theo chiều nào?
Viết gọn công thức tính cho mỗi chỉ mục tại hình 3.1 và hình 3.2
x.finger[i] = {𝑥 − 2
𝑖−1
2 (i lẻ, 0 ≤ i ≤ 2m-2) 𝑥 + 22𝑖 (i chẵn, 0≤ i ≤ 2m-2) Hình 4.2. Cấu trúc chỉ mục phân tán Chord kép
Giả sử tại nút x cần truy vấn để tìm nút chịu trách nhiệm về khóa k, định vị nút successor(k). Xây dựng thủ tục tìm nút successor(k).
Để tìm kiếm theo mỗi chiều, bảng chỉ mục tại mỗi nút được chia làm 2