Chương 3 : Đảm bảo công bằng với các ứng dụng cộng tác trong mạng ngang hàng
3.5. Áp dụng mô hình tin cậy NICE đảm bảo công bằng trong ứng dụng chia sẻ file BitTorrent
dụng chia sẻ file BitTorrent
3.5.1. Giới thiệu về BitTorrent
3.5.1.1. Tổng quan về BitTorrent
BitTorrent là một ứng dụng P2P với mục đích phân phối các file có dung lượng lớn nhanh và hiệu quả qua việc upload băng thông của các máy (peer) khi các máy này download dữ liệu. Nền tảng của vấn đề là phân chia các file thành các block có kích thước như nhau (mỗi block chiếm khoảng 32 đến 256 kbs) để các máy download đồng thời các block từ nhiều máy. Các block ở xa được chia nhỏ hơn để có thể sử dụng đường ống (pipelining) theo các yêu cầu.
là ở các cá nhân sử dụng công nghệ cho mục đích trái phép.
3.5.1.2. Các khái niệm và hoạt động của BitTorrent:
Torrent:
Mỗi một file lớn có hiệu lực download được gọi là một torrent.
Thường thì torrent là một file mang phần mở rộng .torrent nhận từ server. File .torrent này chứa thông tin về dữ liệu muốn down (chứ không phải là bản thân dữ liệu đó). User có thể save file .torrent đó trên máy của mình, sau đó mở nó bằng trình BitTorrent để tiến hành việc download. Hoặc, bạn có thể down ngay bằng cách click thẳng vào link trên trang web - cách này mất thêm chút công sức nếu muốn down lại file đó sau này.
–
Tracker:
Có một thành phần trung tâm cho biết nơi mà một peer có thể lấy dữ liệu từ các node trong hệ thống, thành phần trung tâm này gọi là tracker. Tracker nhận updates từ các node định kì 30 phút giống như các nút khi kết nối hoặc rời torrent.
Một server nằm trên mạng internet, phối hợp hoạt động của các trình BitTorrent. Khi bạn mở một file torrent, máy tính của bạn sẽ liên lạc với tracker để lấy danh sách các peer cần kết nối. Trong quá trình down file torrent, thỉnh thoảng máy tính của bạn sẽ lại liên lạc với tracker, thông báo cho tracker biết bạn đã down và up bao nhiêu, còn bao nhiêu nữa là down xong,... Nếu bạn chuẩn bị down một file mà tracker của nó hiện đang mất kết nối, bạn sẽ không thể tạo kết nối. Nếu đang down mà tracker mất kết nối, bạn vẫn có thể tiếp tục quá trình truyền tải file với các peer hiện có, nhưng sẽ không kết nối thêm được với peer mới nào khác. Thường các lỗi với tracker ít khi xảy ra trong một thời gian dài, do đó bạn chỉ việc chờ đợi và để mở trình BitTorrent.
Seed:
Một node trong hệ thống mà sau khi hoàn thành việc sao chép đầy đủ các file và có thể phục vụ cho các node khác thì được gọi là một seed.
Một máy tính có bản copy hoàn hảo của file torrent bạn muốn down. Khi quá trình down của bạn kết thúc, bạn sẽ hoạt động như một seed cho đến khi bạn bấm Finish hoặc đóng hoàn toàn trình BitTorrent lại. Thường thì bạn nên seed một file đã down xong cho người khác. Đồng thời, khi một file torrent mới được đưa lên tracker, một ai đó phải seed nó cho người khác down. Hãy nhớ rằng, tracker không biết tí gì về nội dung thực sự của file, vì thế luôn cần phải có ít nhất một máy đóng vai trò seed.
Reseed:
Với một file torrent mà số seed của nó là con số 0 tròn trĩnh (hoặc không có đủ số peer để tạo thành một bản copy hoàn hảo), thì dù muốn hay không tất cả những gì các peer nhận được cũng sẽ là một file không hoàn chỉnh, vì không ai trong swarm đó có các phần còn thiếu. Khi điều đó xảy ra, một ai đó với file hoàn chỉnh (seed) sẽ phải đứng ra kết nối với swarm để tiến hành việc truyền tải các phần còn thiếu. Nó gọi là reseed. Thường thì khi một yêu cầu reseed được đưa ra và được chấp thuận, người được yêu cầu phải đảm bảo mình sẽ để trình BitTorrent của mình mở trong một thời gian nhất định, tạo điều kiện cho file torrent đó có thể được nhiều người down hơn.
Swarm:
Một nhóm các máy tính kết nối với nhau thông qua một file torrent. Ví dụ, nếu trình BitTorrent của bạn báo bạn đang nối với 10 peers và 3 seeds, thì điều đó nghĩa là trong swarm đó có 13 người (không kể bạn).
Peer là một máy tính khác trên mạng internet. Bạn tạo kết nối với peer và truyền tải dữ liệu với nó. Thường thì một peer không có cả 100 % file mà bạn muốn down (nếu có nó sẽ được gọi là seed). Một vài người khi nói đến peer lại nghĩ tới leecher, những kẻ sau khi down xong không chịu để trình BitTorrent chạy tiếp và hoạt động như một seed.
Leecher:
Một node mà trong khi đang download các file nhưng vẫn phục vụ các block mà node này hiện có cho các node khác thì được gọi là leecher.
ữ
Share rating:
Nếu bạn dùng một trình BitTorrent với giao diện GUI, bạn sẽ thấy thông số share rating hiện trên giao diện. Nó đơn giản chỉ là tỉ lệ bạn up trên tỉ lệ down. Nếu thông số share ratio là 1.0, điều đó có nghĩa là lượng bạn down bằng với lượng bạn up. Số này càng cao thì nghĩa là bạn đóng góp càng nhiều. Nếu bạn thấy share ratio là vô cùng, thì nghĩa là bạn đang seed một file - bạn up nhưng không down. Vì lợi ích của người khác, hãy giữ cho share ratio của bạn lớn nhất có thể.
torrent về. Sau đó open bằng
mininova.org Torrentbits.org TorrentReactor.com – ... ad.
Cơ chế hoạt động của BitTorrent
Khi một node mới kết nối với một torrent, nó sẽ liên hệ với tracker để nắm được danh sách tập ngẫu nhiên các seed hoặc leecher có trong hệ thống hiện tại. Node mới sau đó sẽ thử thiết lập tới khoảng 40 node tồn tại hiện có trong hệ thống để trở thành hàng xóm với các node này. Nếu số các node hàng xóm của một nút thấp hoặc giảm xuống dưới 20 (do các node đó rời hệ thống - chẳng hạn) thì node mới này sẽ liên hệ lại với tracker để được bổ sung thêm các node mà node này có thể kết nối tới được.
Mỗi một node sẽ tìm kiếm thời điểm thích hợp (thời cơ) để download các khối từ các node khác (hàng xóm) và upload các khối tới các node hàng xóm này. Thường thì một nút có thể chọn một vài khối mà nó có thể download. Nó sử dụng chính sách local rarest first (ưu tiên cục bộ-LRF) trong việc chọn các block để download, nghĩa là node thử download các khối được sao chép ít nhất xung quanh các hàng xóm của node đó.
Chính sách tit-for-tat (có đi có lại – TFT) được sử dụng để cảnh giác chống lại cái gọi là free-riding, nghĩa là: một node sẽ thích hơn việc upload cho các node hàng xóm đã cung cấp cho node này tỉ lệ download tốt nhất. Mỗi một node giới hạn số các upload đồng thời thành một số nhỏ, số này vào khoảng 5. Các seed không có gì để download, nhưng chúng cho một chính sách như nhau, đó là chúng upload tới 5 nodes mà có tỉ lệ download cao nhất.
Cơ cấu được sử dụng để giới hạn số các upload đồng thời gọi là choking (ngăn chặn, điều tiết), đó là khoảng thời gian từ chối của một node để upload tới hàng xóm. Chỉ những kết nối để chọn hàng xóm (vào khoảng 5) là unchoked ở bất kỳ thời điểm nào. Một node tính toán tỉ lệ download nhận được từ hàng xóm của nó từ 10 giây để quyết định hàng xóm này (chưa bị chokes) sẽ bị choke để thay thế bởi một hàng xóm khác.
BitTorrent cũng kết hợp một chính sách gọi là optimistic unchoke (unchoke lạc quan) trong một node, trong việc unchoke bình thường đã mô tả ở trên, trong unchoke chọn ngẫu nhiên hàng xóm bất chấp tỉ lệ download đạt được từ hàng xóm đó. Optimistic unchoke thực hiện 30 giây mỗi lần. Cơ cấu này cho
phép các node khám phá các node hàng xóm thường có tỉ lệ download cao, giống như cho phép các node mới nhận được block đầu tiên của chúng.
Có thể nói BitTorrent là một giao thức được tạo ra phục vụ cho quá trình truyền tải file. Dưới hình thức kết nối peer-to-peer, người sử dụng kết nối trực tiếp với nhau để gửi và nhận các phần của một file. Một server trung tâm, dưới tên gọi tracker, được lập ra để xác định vị trí những người dùng ấy. Tracker mang nhiệm vụ duy nhất là quản lý các kết nối, nó không cần biết gì về nội dung file đang được truyền tải, bởi thế ngay cả khi tracker có băng thông cực nhỏ, một số lượng người dùng cực lớn vẫn có thể tham gia vào việc truyền tải file. Điểm cơ bản trong BitTorrent chính là việc người dùng thực hiện việc up và down cùng một lúc trong khi băng thông được tổ chức sao cho tối ưu nhất. BitTorrent được thiết kế để khi số người dùng càng tăng cao thì càng làm việc hiệu quả - điều này trái ngược hẳn với các giao thức truyền tải file khác.
Một ví dụ để dễ hình dung quá trình này này là hình ảnh một nhóm người ngồi quanh một cái bàn. Hiển nhiên ai cũng có thể nói và nghe người khác nói. Giờ hãy tưởng tượng họ đều đang cố lấy một bản copy của một cuốn sách. Người A cho biết anh ta có trang 1-10, 23, 42-50 và trang 75. Người C, D, E đều thiếu một số trang trong số các trang người A có, vì thế họ cần sắp xếp để lấy bản copy của những trang mà mình thiếu. Đến người B, anh cho biết mình có trang 11-22, 31-37, và 63-70. Người A, D và E bảo B rằng họ muốn một vài trang trong số đó, và B cần đưa cho họ bản copy các trang ấy. Quá trình cứ thế tiếp tục, mọi người lần lượt trao đổi cho nhau những phần mình có và người khác cần. Sau một lát, dù tất cả đã có bản copy của hầu hết các trang trong cuốn sách, song không ai trong số họ có đủ cả cuốn.
Giờ hãy chú ý đến một người khác cũng ngồi bên bàn mà ta tạm gọi là S. Người này có bản copy của cả cuốn sách, và vì thế không cần nhận bất cứ trang nào. Anh ta có nhiệm vụ phân phát những trang mà không ai trong nhóm có. Còn người nhận sẽ không lấy các trang mà người khác trong nhóm đã có. Như vậy, người S có thể chia sẻ cuốn sách cho người khác mà không cần phải gửi cả bản copy cho từng người. Anh ta chỉ việc đưa bản copy các trang khác nhau cho những người khác nhau, và tự họ sẽ chia sẻ cho nhau. Người S ở đây được gọi là seed trong BitTorrent.
Qui trình khi download với chương trình BitTorrent
1. Trước hết, bạn tải về một file có phần mở rộng là .torrent và mở nó với chương trình BitTorrent của mình. File torrent này không chứa file mà bạn muốn down, nó chỉ mang dữ liệu mô tả file mà bạn CHUẨN BỊ down.
2. Chương trình BitTorrent của bạn dùng thông tin ghi nhận được trong file torrent để kết nối với tracker. Tracker là server mang thông tin và danh sách các peer đang kết nối với file bạn muốn down.
3. Trình BitTorrent của bạn gửi request tới các peer đang kết nối với file đó (swarm) và bắt đầu down về các phần nhỏ của file đó từ mỗi peer.
4. Khi đã down xong mỗi phần nhỏ, trình BitTorrent sẽ bắt đầu up phần đó lên cho những ai trong swarm chưa có cơ hội down phần nhỏ ấy.
5. Quá trình tiếp diễn cho và mọi người trong swarm tiến hành down các phần của file mình cần.
6. Sau khi down xong file bạn cần, trình BitTorrent sẽ chuyển máy bạn thành seed cho file đó và cho phép mọi người tiếp tục down cho đến khi bạn thoát khỏi chương trình. Để một file torrent có thể được truyền lại, cần ít nhất một seed.
3.5.2. Áp dụng mô hình tin cậy NICE đảm bảo công bằng trong ứng dụng chia sẻ file BitTorrent
Như đã nói ở trên, trong ứng dụng BitTorrent thường xảy ra tình trạng một số peer download dữ liệu nhưng không chịu upload, đó là hiện tượng free- riding.
Hiện tượng free-riding trong BitTorrent giống như các node nguy hiểm (malicious) trong NICE, đó là các node xấu trong giao dịch luôn gán cookie với giá trị trong khoảng 0.9 đến 1 cho các node không nguy hiểm khác, hoặc gán giá trị cookie trong khoảng 0 đến 0.2.
Áp dụng mô hình NICE sẽ cho khả năng phát hiện và cô lập các nút nguy hiểm, đồng thời tạo ra các nhóm cộng tác thiết thực trong việc chia sẻ tài nguyên (như trong trường hợp download và upload trong BitTorrent), hạn chế các truy vấn, từ đó cải thiện băng thông.
Việc phát hiện các nút free-rider được tiến hành trong NICE thông qua các cookie như sau: Trong khi giao dịch, các node sẽ kiểm tra giá trị tin cậy thông qua cookie. Nếu trong cơ sở dữ liệu của nút kiểm tra chưa có cookie của node bị kiểm tra thì tiến hành kiểm tra qua các node lân cận (hàng xóm). Giá trị cookie nếu trong khoảng gần, hoặc bằng 1 là tin cậy (trong đoạn [0.7:1] chẳng hạn). Nếu thấp (chẳng hạn qui định nhỏ hơn hoặc bằng 0.2) là không tin cậy. Tuy vậy, nếu giá trị của cookie là tin cậy, nhưng cookie này không có được một cách tin cậy (không nằm trong cơ sở dữ liệu hoặc thông qua hàng xóm tin cậy) thì cũng bị coi là giả mạo.
Tỉ lệ các free-rider sẽ được tính thông qua tỉ số giữa các free-rider phát hiện được chia cho tổng các free-rider tham gia.
Trong quá trình giao dịch, mặc dù băng thông giữa hai điểm (node) là cố định, tuy nhiên nếu lượng giao dịch nhiều thì sẽ ảnh hưởng đến tốc độ của các tiến trình (download và upload chẳng hạn) giữa các điểm này. Trong NICE, việc ảnh hưởng đến băng thông chính là phụ thuộc vào số các truy vấn giữa các node. Vì vậy các free-rider tham gia càng nhiều thì càng ảnh hưởng đến băng thông sẽ càng lớn.
Để có thể hạn chế các truy vấn, tăng khả năng phát hiện các node nguy hiểm (free-rider) thì NICE đề ra giao thức của mình và tạo ra các nhóm cộng tác thiết thực. Với các node nguy hiểm, chúng sẽ luôn chuyển các truy vấn với giá trị cookie là 1. NICE ngăn chặn các truy vấn này theo phương án tạo ra các nhóm cộng tác thiết thực bằng cách tìm các node tốt. Các truy vấn từ các node xấu sẽ bị các node tốt phát hiện và sẽ không được các node tốt chuyển đi, điều đó làm giảm số các truy vấn giữa các node. Càng nhiều các node tốt thì nhóm cộng tác càng mở rộng, từ đó càng ngăn được nhiều các truy vấn xấu từ các node nguy hiểm, và vì vậy băng thông sẽ càng được cải thiện.
Chương trình Demo của NICE sau đây sẽ minh họa các vấn đề trong BitTorrent:
- Tỉ lệ các nút tham gia mà không đóng góp (free-rider) - Tỉ lệ phát hiện các free-rider
- Băng thông khi có free-rider