MỤC LỤC
Mặc dù vẫn còn những vấn đề về bảo mật hay vấn đề về bản quyền của những nội dung được trao đổi trong mạng ngang hàng, nhưng với những ưu thế và lợi ích mà mạng ngang hàng đem lại, chúng ta vẫn có thể thấy được sự phát triển mạnh mẽ của nó. Trên thực tế, cũng đang có rất nhiều nghiên cứu phát triển các ứng dụng trên nền công nghệ mạng ngang hàng, từ những lĩnh vực bình thường của đời sống như giải trí hay truyền hình( các ứng dụng về truyền video thông qua mạng ngang hàng) đến công việc kinh doanh hay nghiên cứu khoa học.
File .torrent này có chứa các thông tin về file muốn chia sẻ như, dung lượng file, tên file, số lượng các phần và giá trị băm của nội dung file cũng như nội dung từng phần nhỏ đó, đồng thời trong file đó cũng có chứa địa chỉ url của Tracker (server có nhiệm vụ liên kết các nút với nhau). Khi ai đó muốn download 1 file qua BitTorrent, bằng cách nào đó có được file .torrent của file đó (ví dụ như tải về từ 1 trang web nào đó .v.v.), từ thông tin có trong file .torrent, nút đó sẽ kết nối đến tracker và nhận về 1 danh sách(khoảng 40 nút) ngẫu nhiên các nút đang tham gia vào quá trình download file đó.
Tập hợp các nút cùng đang chia sẻ 1 file gọi là 1 swarm hay torrent, tập hợp các nút đang liên kết với 1 nút nào đó gọi là neiborghs hay peers của nút đó. Để quá trình trao đổi được thuận lợi, mỗi nút sẽ thông báo cho tất cả các nút kết nối với nó rằng nó đang nắm giữ những phần đơn vị nào của file đang chia sẻ.
Thông thường, một nút chỉ đáp ứng yêu cầu của 4 nút hàng xóm cung cấp cho nó tốc độ download cao nhất, và quá trình xác định tốc độ download của các nút liên kết với nó được thực hiện 10 giây một lần. Để tạo cơ hội tìm kiếm các nút có cung cấp tốc độ download cao hơn cũng như để cho nút mới tham gia vào mạng có thể có được đáp ứng về piece đầu tiên, BitTorrent sử dụng “optimictic unchoke” 30 giây 1 lần. Phương pháp dùng để phân phối tệp giữa mạng eDonkey2000 và BitTorrent là giống nhau, như các máy trong mạng eDonkey thường chia sẻ và tải về rất nhiều tệp, làm cho băng thông cho mỗi vận chuyển trở nên ít hơn.
Mô hình KaZaA chỉ thích hợp phân phối tài nguyên cho một số lượng lớn người dùng, nó đã được chứng minh là người ở đáy kim tự tháp tải tệp về nhanh hơn trường hợp tải tệp về bằng phương pháp HTTP (trong trường hợp tệp rất lớn). Nhưng mô hình KaZaA có một nhược điểm nhỏ đó là nó tin tưởng vào báo cáo của các máy trạm về cấp cống hiến vì vậy các máy trạm có thể gian lận cấp cống hiến với rất nhiều các máy trạm không chính thức.
Jun và Ahamad [8] xem xét hệ thống BitTorrent dưới lý thuyết trò chơi (vấn đề song đề tù nhân lặp lại – Iterated Prisoner’s Dilemma) và cho thấy rằng free-rider không bị trừng phạt thích đáng và những nút đóng góp cho hệ thống cũng không được đền đáp tương ứng. (5) Trong đó Dn(t) và Df(t) biểu thị tương ứng là tổng tốc độ download của non free- rider và free-rider tại thời điểm t(tốc độ non free-rider và free-rider rời khỏi các trạng thái tương ứng sau khi download xong). Nhận xét: Thông qua việc mô hình hóa hệ thống BitTorrent, chúng ta đã thấy được hiệu năng của hệ thống ở trạng thái ổn định và ảnh hưởng của hiện tượng free- riding lên hệ thống BitTorrent.
Hơn nữa, khi α đạt giá trị 0.2 (=1/u) thì Tf không tồn tại (có nghĩa là một số free-rider không có đủ tài nguyên để kết thúc quá trình download).Ngược lại, non free-rider luôn luôn có thể hoàn thành quá trình download. Từ đó, có thể kết luận là cơ chế của BitTorrent có khả năng chống lại hiện tượng free-riding trong hệ thống không có seed, và thông qua Optimistic Unchoking, free-rider cũng không gây ảnh hưởng lớn đối với hiệu năng của toàn hệ thống. Từ đẳng thức (11) ta cũng thấy một điều rằng có thể tăng thời gian Tf bằng cách tăng số liên kết upload của mỗi nút u, tuy nhiên, điều này khó có thể thực hiện trong thực tế do nếu tăng số lượng kết nối TCP sẽ tăng thời gian trễ và ảnh hưởng đến hiệu năng của mạng.
Từ đồ thị trên ta cũng thấy được một điều nữa là khi giá trị của α tăng lên, tỉ số giữa Tn và Tf cũng giảm xuống do thời gian download Tf tăng lên tương tự như trong hệ thống không có seed đã xét ở phần trước.
Cấu hình cần thiết để chạy được chương trình mô phỏng này là máy tính có thể cài và chạy được Visual Studio, tuy nhiên, chương trình sử dụng các hàm tính toán và xử lý khá nhiều sự kiện nên một máy tính có CPU với tốc độ xử lý cao có thể giúp rút ngắn thời gian tiến hành các thử nghiệm. Đối với môi trường Windows, sau khi tải về mã nguồn chương trình từ Microsoft Research (sẽ được 1 file có đuôi là .msi), sau khi bung nén, chúng ta sẽ được một thư mục chứa mọi file liên quan đến chương trình (địa chỉ mặc định khi bung nén của thư mục thường là “C:\Program Files\Microsoft Research\MSR Simulator for the BitTorrent Protocol”, trong đó chúng ta cần chú ý đến 2 thư mục con là OctoSim chứa mã nguồn C# của chương trình và workloads chứa các file mẫu đầu vào của chương trình mô phỏng. <định danh của nút> #d <số lượng kết nối download> <tổng tốc độ download của các kết nối> #u <số lượng kết nối upload> <tổng tốc độ upload của các kết nối> p <số piece đã có được> <số piece đang download dở> s <bit đánh dấu xem nút đang có vai trò là seed hay không> #p <số lượng các nút hàng xóm>.
Nhiệm vụ chính trong hàm Main là đọc vào các tham số dòng lệnh, lưu nó vào mảng tĩnh đã được khai báo ở trên (chi tiết các tham số và ý nghĩa của các tham số có thể xem cụ thể trong file mã nguồn), sau đó tạo ra một thực thể new WorkloadProcessor(workload_file) để xử lý file nằm trong thư mục workloads đã nói ở trên. public void RaiseSimulationEvent(long ms, TimerEvent obj): Phương thức thêm một sự kiện vào trong hàng đợi, với đầu vào là nội dung của sự kiện và thời gian diễn ra sự kiện, phương thức này rất quan trọng và được dùng để xây dựng nên hàng đợi của chương trình mô phỏng.
public static double seedLeavingProbability : Tỉ lệ nút rời mạng sau khi hoàn thành download ( giá trị này luôn nằm trong khoảng từ 0 đến 1). public static int nInitialSeeds : Số lượng seed trong thời điểm bắt đầu mọi sự kiện, các seed này chính là nguồn cung cấp nội dung file cho toàn bộ hệ thống.
Mặt khác, từ kết quả thu được của định lý 2, chúng ta thấy rằng, khi số lượng seed trong hệ thống tăng lên thì thời gian download trung bình của free rider lại giảm đi, và khi số lượng seed trong hệ thống đạt đến một giá trị nhất định thì thời gian download trung bình của free-rider và non free-rider trở nên tương đương với nhau. Đó là, khi chọn lựa nút hàng xóm để upload dữ liệu, seed sẽ xem xét đến sự đóng góp của nút đó trong mạng, với một quy tắc đơn giản là thay vì upload đến một số lượng giới hạn nút có tốc độ download từ nó là nhanh nhất thì nó sẽ upload dữ liệu cho một số lượng giới hạn các nút có tổng tốc độ upload vào hệ thống nhanh nhất, và từ chối upload cho nút có tổng tốc độ upload vào mạng bằng 0. Do hạn chế về thời gian và trình độ, tôi chưa có điều kiện kiểm chứng và đánh giá hiệu quả của phương án thay đổi đã đề xuất ở trên thông qua mô hình các tham số, tuy nhiên, chúng ta sẽ thấy được hiệu quả sau khi thay đổi cơ chế đối với seed trong hệ thống BitTorrent ở chương sau, khi tiến hành thử nghiệm trên mô phỏng.
Và thay đổi tham số seed leaving probability (giá trị của tham. số này là từ 0 đến 1, tương ứng với tỉ lệ số non free-rider rời khỏi hệ thống sau khi hoàn thành quá trình download, giá trị này bằng 1 có nghĩa là tất cả non free-rider đều rời hệ thống sau khi download hoàn thành, giá trị này bằng 0 có nghĩa là tất cả non free-rider sẽ ở lại hệ thống và trở thành seed sau khi hoàn thành quá trình download). Từ kết quả thí nghiệm, chúng ta thấy rằng, khi số lượng seed trong hệ thống tăng lên thì thời gian download hoàn thành trung bình của free-rider giảm đi, và giảm đến 1 giá trị gần như cố định khi tỉ lệ rời mạng là 0.8 (lúc này, số nút non free-rider ở lại mạng và trở thành seed tương đương với số lượng free-rider có trong mạng, do đó, free-rider có thể dễ dàng có được đủ lượng tài nguyên hệ thống cần thiết để hoàn thành download sớm).