Thuật toán Choke là gì? Cơ chế hoạt động

Một trong những yếu tố quan trọng giúp BitTorrent trở nên mạnh mẽ là thuật toán quản lý kết nối giữa các thiết bị ngang hàng, được gọi là thuật toán Choke. Thuật toán này giúp tối ưu hóa hiệu suất và tính công bằng của kiến trúc BitTorrent.

Xem thêm:

1. Thuật toán Choke là gì?

Thuật toán Choke là một cơ chế quản lý kết nối, nhằm cân bằng tài nguyên và đảm bảo phân bổ băng thông công bằng giữa các thiết bị trong mạng ngang hàng. Bằng cách kiểm soát lưu lượng truy cập giữa các thiết bị, thuật toán giúp tối ưu hóa tốc độ tải xuống cho từng thiết bị giúp nâng cao hiệu quả tổng thể của quá trình truyền tệp.

2. Cơ chế hoạt động thuật toán Choke

Thuật toán choke hoạt động dựa trên cơ chế hệ thống xếp hàng (queue) của các gói tin trên đường truyền. Khi hệ thống bắt đầu xảy ra tình trạng quá tải, các gói tin mới sẽ không được đưa vào hàng chờ ngay lập tức mà phải chờ đến khi hàng chờ đã giảm xuống mức chấp nhận được. Như vậy, các gói tin sẽ được truyền đi một cách ổn định và đảm bảo chất lượng kết nối mạng.

3. Thuật toán Choke trong mạng bitTorrent

Khi một máy tính tham gia vào mạng BitTorrent để tải xuống dữ liệu, nó sẽ cố gắng kết nối với một số máy chủ khác, các máy chủ này đang chia sẻ dữ liệu đó. Điều quan trọng là thuật toán Choke đánh giá tốc độ tải xuống và tốc độ tải lên của các máy chủ này.

  • Tốc độ tải xuống: Các ngang hàng có tốc độ tải xuống cao hơn được ưu tiên chọn.
  • Tốc độ tải lên: Các máy có tốc độ tả lên nhanh hơn sẽ được ưu tiên để kết nối.
  • Kích thước bộ đệm: Các ngang hàng có bộ đệm lớn hơn được ưu tiên chọn.
  • Khoảng cách: Các đồng nghiệp ở gần hơn được ưu tiên chọn.

Sau khi đã chọn được các máy chủ để kết nối, thuật toán Choke sẽ giới hạn số lượng kết nối đồng thời của máy tính với các máy chủ này. Máy tính sẽ tải xuống dữ liệu từ các máy chủ này đồng thời, nhưng chỉ được kết nối đồng thời với một số lượng nhỏ các máy chủ. Các máy chủ còn lại sẽ bị giới hạn kết nối cho đến khi các kết nối đang được sử dụng được giải phóng. Sau một khoảng thời gian nhất định, thuật toán Choke sẽ đánh giá lại tốc độ tải xuống của các máy chủ và có thể thay đổi các kết nối đang được giữ.

4. Choke và unchoke

Choke có nghĩa là một máy ngang hàng sẽ không gửi bất kỳ dữ liệu nào cho máy ngang hàng khác (bị chặn kết nối), trong khi unchoke có nghĩa là một máy ngang hàng sẽ gửi dữ liệu cho máy ngang hàng khác. Thuật toán sau đó chia các ngang hàng được chọn thành hai nhóm: nhóm “unchoke” và nhóm “choke”. Các ngang hàng trong nhóm unchoke sẽ được nhận dữ liệu, còn nhóm choke sẽ không được nhận dữ liệu.

5. Optimistic unchoking

Optimistic unchoking là một chiến lược trong giao thức BitTorrent, được sử dụng để tối ưu hóa cách các máy tính (nút) trong mạng BitTorrent tải và chia sẻ dữ liệu với nhau. Trong chiến lược này, máy chủ thực hiện việc chọn một nút client định kỳ (thường là khoảng 30 giây) theo cách ngẫu nhiên. Sau đó, máy chủ gửi một tín hiệu gọi là “unchoking” đến nút đó, có nghĩa là máy chủ cho phép nút đó tải dữ liệu từ máy chủ của mình.

Thuật toán optimistic unchoking này có hai mục tiêu chính:

Tạo cơ hội cho các nút mới hoặc những nút tải chậm hơn: Khi một nút mới tham gia vào mạng BitTorrent hoặc khi một nút trước đây tải chậm hơn, họ thường gặp khó khăn để kết nối với các máy chủ chất lượng cao. Tuy nhiên, thông qua optimistic unchoking, một nút được chọn ngẫu nhiên sẽ được cho phép tải dữ liệu một thời gian, dù chưa chắc chắn rằng nút này có tốc độ tải tốt. Điều này giúp các nút mới hoặc chậm hơn có cơ hội tải nhanh hơn và giao tiếp với các nút khác.

Tạo sự đa dạng trong kết nối: Bằng cách cho phép các nút ngẫu nhiên tải dữ liệu từ máy chủ, optimistic unchoking tạo sự đa dạng trong kết nối mạng BitTorrent. Điều này giúp cải thiện hiệu suất của toàn bộ mạng bằng cách tạo ra nhiều đường tải dữ liệu khác nhau, giúp phân tải tải và tối ưu hóa việc chia sẻ dữ liệu.

6. Free-rider

Free-rider để chỉ những người dùng sử dụng các phần mềm hoặc giao thức của P2P để tải về và chia sẻ các tệp tin, nhưng không tham gia chia sẻ tệp của riêng họ.

Hành động của những “free-rider” này làm giảm hiệu quả của hệ thống mạng P2P, khiến cho có nguy cơ tình trạng quá tải, tăng băng thông và giảm tốc độ tải xuống. Để giảm tình trạng “free-rider”, BitTorrent và các hệ thống P2P khác thường sử dụng các chiến lược khác nhau, như sử dụng các phần mềm đánh giá, chiến lược tặng quà hoặc tăng tính cạnh tranh để kích thích sự chia sẻ dữ liệu của người dùng. Tuy nhiên do có Optimistic Unchoke như đã nói ở trên, free-rider vẫn có được cơ hội nhận được dữ liệu từ hệ thống.

6.1 Chứng minh bằng công thức

Gọi G \( p_{0}, p_{1},…, p_{xn-1}, q_{0}, q_{1},…, q_{xf-1} \) là tập hợp các nút trong mạng BitTorrent.

  • \(x_{n}\) là số lượng các nút bình thường (non free-rider).
  • \(x_{f}\) là số lượng của free-rider trong mạng.
  • µ là băng thông upload của mỗi nút => tổng băng thông upload của hệ thống là µ\(x_{n}\).
  • u là số lượng kết nối upload của nút trong mạng.
  • Tốc độ của mỗi kết nối bị giới hạn bởi µ/u.

Theo Optimistic Unchoking, mỗi nút bình thường sẽ chọn ngẫu nhiên một nút khác để gửi dữ liệu, từ đó tổng số kỳ vọng tốc độ download của free-rider trong G là:

tổng số kỳ vọng tốc độ download của free-rider trong G

Trong trường hợp xn + xf >>u

Từ (1) cho thấy rằng mặc dù không đóng góp cho hệ thống như free-rider vẫn nhận được tốc độ download được tính bởi (1).

Gọi ρ là tỉ lệ của tổng tốc độ download của free-rider so với tổng băng thông upload của các nút bình thường. Ta có:

tỉ lệ của tổng tốc độ download của free-rider so với tổng băng thông upload của các nút bình thường

Với 0 ≤ ρ ≤ 1. Từ (2) cho thấy free-rider vẫn có được một phần tốc độ download của cả hệ thống. Nói cách khác, cơ chế của BitTorrent không thể loại trừ hoàn toàn hiện tượng free-riding, và free-rider có thể nhận được tài nguyên từ các nút bình thường thông qua optimistic unchoking.

7. Lợi ích của thuật toán choke

  • Đảm bảo tất cả các máy ngang hàng đều có cơ hội tải lên và tải xuống dữ liệu.
  • Ngăn mạng bị quá tải.
  • Giúp cải thiện hiệu suất tổng thể của giao thức BitTorrent.

8. Ý nghĩa của thuật toán choke trong mạng BitTorrent

Thuật toán choke là một thành phần quan trọng của giao thức BitTorrent. Nó giúp đảm bảo rằng tất cả các máy ngang hàng đều có cơ hội tải lên và tải xuống dữ liệu công bằng, đồng thời ngăn mạng bị quá tải.

9. Lời kết

Thuật toán Choke là một phần quan trọng trong mạng BitTorrent. Nó giúp kết nối giữa các ngang hàng trong mạng p2p. Thuật toán loại bỏ có chọn lọc các ngang hàng dựa trên tốc độ tải xuống. Từ đó, sẽ cải thiện hiệu suất của mạng BitTorrent.

Xem thêm:

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em