3.2.1. Đặt vấn đề
Khi một ứng dụng B (có thể là các peer) có nhu cầu truy cập (lấy hoặc chia sẻ tài nguyên hệ thống) tại một nút mạng A nào đó thì sẽ được xem xét để đảm bảo tính tin cậy, hợp pháp đối với nút mạng A. Ngoài ra khi nhiều ứng dụng cùng có nhu cầu lấy tài nguyên tại một nút thì cần phải phân quyền ưu tiên, và nếu ứng dụng nào đã chia sẻ nhiều tài nguyên hơn trong hệ thống cộng tác thì sẽ được quyền ưu tiên cao hơn trong truy cập giành tài nguyên của hệ thống.
Để thỏa được điều này, giải pháp đề xuất là nút ứng dụng cấp phát tài nguyên (nút A) sẽ kiểm tra các ứng dụng (các peer-nút B) cần lấy hoặc chia sẻ tài nguyên. Nếu B muốn lấy tài nguyên thì A sẽ kiểm tra B thông qua tổng giá trị các cookie (số điểm như trong cách tính của Website thương mại) có được của mỗi ứng dụng (mỗi peer). Số các cookie này ở mỗi ứng dụng có được khi ứng dụng đó chia sẻ tài nguyên. Trường hợp B muốn chia sẻ tài nguyên thì A và B sẽ thực hiện giao dịch về chia sẻ tài nguyên. Rõ ràng nếu một ứng dụng càng
-39- chia sẻ nhiều tài nguyên thì số cookie (và tương ứng tổng giá trị các cookie) mà ứng dụng này có được sẽ càng lớn, và như vậy quyền truy cập, ưu tiên của ứng dụng này sẽ càng cao.
Ví dụ về việc một ứng dụng (hoặc người sử dụng) chia sẻ tài nguyên để được tính điểm vào hệ thống có thể được tiến hành như ở một số các Website như sau: nếu muốn tải một tài liệu của Website thì số điểm của người đó phải ở một mức tối thiểu nào đó. Trong trường hợp không đủ điểm để download tài liệu, thì người sử dụng phải thêm số điểm vào tài khoản của mình trên Website bằng cách upload tài liệu của mình lên Website hoặc nạp tiền vào tài khoản của mình trên Website đó. Càng upload nhiều tài liệu (hoặc nạp nhiều tiền vào tài khoản Website) thì sẽ càng có nhiều điểm trong tài khoản của mình trên Website đó. Thường thì khi upload một tài liệu, tài khoản của người upload sẽ được cộng thêm một số điểm, hoặc gửi một tin nhắn theo cú pháp của Website qui định thì được cộng thêm một số điểm (như đã mô tả trong phần 3.2 trên).
Ví dụ trên được áp dụng trong mô hình mạng Client/Server. Trong mạng P2P cũng có thể áp dụng vì mỗi máy vừa đóng vai trò Client, vừa đóng vai trò Server.
3.2.2. Bài toán
Sau đây là bài toán và giải thuật tương ứng đảm bảo công bằng cho các ứng dụng cộng tác ngang hàng:
a) Input:
Tập các node (peer) chia sẻ tài nguyên
b) Output:
- Xác định các node (các peer) cần cộng tác (lấy/chia sẻ) tài nguyên với các node khác.
- Kiểm tra độ tin cậy của các peer, tính giá trị tin cậy mỗi peer.
c) Giải thuật kiểm tra và tính giá trị tin cậy các peer:
i) Kiểm tra trực tiếp tài khoản của peer cần cộng tác (kí hiệu là B) trong cơ sở dữ liệu của máy chia sẻ tài nguyên (kí hiệu là A):
i1- Nếu đúng (bao gồm user name và password) thì kiểm tra giá trị tài khoản (là tổng điểm) của B.
-40- - Nếu muốn download thì kiểm tra ngưỡng download (so sánh giá trị tài khoản với mức giá trị tối thiểu được phép download). Nếu thỏa ngưỡng download thì xếp hạng thứ tự từ cao xuống thấp về giá trị tài khoản với những peer khác cùng muốn download, thực hiện thủ tục giao dịch dựa trên cookie (phần 3.3.2) và kết thúc. Nếu không thỏa thì thông báo không đủ điều kiện, ra đề nghị (nếu cần) và kết thúc.
- Nếu muốn chia sẻ tài nguyên thì thực hiện thủ tục giao dịch dựa trên cookie (phần 3.3.2) và kết thúc.
i2- Nếu sai (chưa tồn tại tài khoản trực tiếp) thì sang bước ii. ii) Kiểm tra B qua hàng xóm
- Nếu tìm thấy thì thực hiện bước i1.
- Nếu không tìm thấy thì thông báo không đủ điều kiện, ra đề nghị (nếu cần) và kết thúc.
3.3.3. Đánh giá thuật toán
Chứng minh thuật toán trên hội đủ các tính chất của thuật toán - Đầu vào: Tập các node (peer) chia sẻ tài nguyên
- Đầu ra: - Xác định các node (các peer) cần cộng tác (lấy/chia sẻ tài nguyên) với các node khác. Kiểm tra độ tin cậy của các peer, tính giá trị tin cậy mỗi peer.
- Tính xác định và khả thi: thuật toán có các bước kiểm tra tài khoản và giá trị tài khoản có sử dụng vòng lặp hữu hạn (vì số nút hữu hạn) và các phép so sánh các bước đều được xác định chính xác và có thể thi hành.
- Tính hữu hạn: thuật toán luôn luôn kết thúc sau khi tất cả các nút được kiểm tra
- Tính hiệu quả: thuật toán luôn kết thúc trong 1 khoảng thời gian hữu hạn.
- Tính phổ dụng: có thể áp dụng thuật toán này tìm nút bất kỳ trong dãy các nút.
-41- Về thời gian: Trong thuật toán này, ta thấy phép toán tích cực là phép tìm kiếm. Tùy thuộc vào cơ sở dữ liệu lưu tại mỗi nút và phương pháp sắp xếp, tìm kiếm mà thời gian thực hiện của chương trình dài hay ngắn.
Trường hợp tốt nhất là tìm kiếm trực tiếp tại cơ sở dữ liệu của nút chia sẻ dữ liệu (nút A). Trường hợp xấu nhất là phải tìm trong lân cận hàng xóm, đồng thời phải sử dụng phép toán so sánh khóa và thông qua máy tin cậy AH(C) trong giao dịch tin cậy dựa trên cookie (phần 3.3.2). Nếu cơ sở dữ liệu có n bản ghi (tại nút A và hàng xóm), đồng thời sử dụng giao dịch tin cậy dựa trên cookie ,thì độ phức tạp của thuật toán cỡ n*n*n hay n3
.
3.3.5. Các ví dụ mô phỏng thuật toán
Ví dụ 1: Giao dịch qua thẻ ATM
Một khách hàng (A) sử dụng thẻ ATM của ngân hàng X rút tiền qua case ATM của ngân hàng Y.
Tại case giao dịch Y: - A cho thẻ vào ATM
- Y kiểm tra tài khoản A (tìm kiếm) qua ngân hàng của Y, sau đó qua hàng xóm X.
- Tìm thấy, Y đề nghị A nhập password (thỏa thuận giao dịch). - A nhập mật khẩu.
- Y kiểm tra A qua hàng xóm X. Nếu sai thì ra thông báo và đề nghị làm lại (thỏa thuận giao dịch), nếu vẫn sai thì hủy giao dịch, nếu đúng sang bước kế tiếp.
- Y yêu cầu A nhập số tiền cần rút - A nhập số tiền
- Y kiểm tra số tiền trong tài khoản của A qua người nắm giữ tài khoản của A (là X). Nếu số tiền A nhập để rút vượt quá số tiền trong tài khoản của A có (sau khi trừ phí dịch vụ và số dư tài khoản của A), thì Y ra thông báo đề nghị A nhập lại, trường hợp ngược lại chuyển sang bước tiếp theo.
- Y trả tiền cho A (Y cung cấp dịch vụ) và trừ vào tài khoản của A. Y giữ phần trừ này để giao dịch với X.
-42- - Quá trình A nhập tiền và Y phục vụ diễn ra cho đến khi A không còn tiền để rút hoặc thỏa thuận với Y ngừng cung cấp dịch vụ thì chấm dứt.
Ví dụ 2: Trường hợp gọi điện thoại khác mạng cũng diễn ra tương tự. Trong phần tiếp theo sẽ trình bày giao dịch dựa trên cookie cho các ứng dụng trong giao dịch cộng tác với nhau và kiểm tra tính tin cậy của các cookie của một peer đối với peer chia sẻ tài nguyên.