Cài đặt và sử dụng chương trình

Một phần của tài liệu NGHIÊN CỨU ẢNH HƯỞNG CỦA HIỆN TƯỢNG “THAM GIA MÀ KHÔNG ĐÓNG GÓP” LÊN HỆ THỐNG CHIA SẺ FILE NGANG HÀNG BITTORRENT (Trang 27 - 29)

4.1.1. Giới thiệu, cách thức cài đặt và thiết lập môi trường để chạy chương trình OctoSim

OctoSim : A BitTorrent Simulator là một ứng dụng viết bằng ngôn ngữ C# bởi các tác giả Ashwin Bharambe, Cormac Herley và Venkat Padmanabhan. Mã chương trình được các tác giả viết ra để thực hiện các thử nghiệm trong [4]. Có thể tìm và download chương trình tại địa chỉ trang web của Microsoft Research

(http://research.microsoft.com/apps/dp/dl/downloads.aspx và tìm với từ khóa BitTorrent

Simulator).

Chương trình mô phỏng lại hệ thống BitTorrent theo các chi tiết sau: File được chia nhỏ thành các pieces, và không thể chia nhỏ hơn nữa, đồng thời, thuật toán Choking của BitTorrent cũng được triển khai một cách chính xác. Tuy nhiên, chế độ kết

thúc (EndGame Mode) không được tính đến, tuy nhiên điều này cũng không ảnh hưởng nhiều đến các kết quả thử nghiệm.

Để cài đặt và chạy chương trình, trên Linux, cần có mono và mcs (để biên dịch ngôn ngữ C#), trên Windows, sử dụng bộ công cụ lập trình Visual Studio. Để thực hiện các thử nghiệm trong khóa luận này, tôi đã sử dụng Visual Studio 2005 trên hệ điều hành Windows XP để build và chạy chương trình mô phỏng. 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.

4.1.2. Đầu vào và đầu ra của chương trình mô phỏng

Về mặt thực thi, OctoSim là một ứng dụng dòng lệnh (Console Application) cho phép nhập các giá trị đầu vào thông qua các tham số dòng lệnh hoặc file text. Các kết quả thử nghiệm được hiện một phần ngay trong cửa sổ Console và kết xuất trong các file text. Bây giờ chúng ta sẽ mô tả ngắn gọn về các file text đầu vào và đầu ra của chương trình.

- File đầu vào: Một vài mẫu của file đầu vào có thể tìm thấy trong thư mục workloads. Các file có phần mở rộng là .wl. Trong file này các lệnh được bố trí theo dòng, các dòng bắt đầu bằng # chỉ đó là những dòng chú thích, và chương trình sẽ bỏ qua khi đọc đến những dòng này. Cấu trúc của một dòng bình thường được xử lý bởi chương trình mô phỏng như sau:

<time> <command> <command arguments> [end]

Có thể hiểu một cách khái quát nội dung của 1 dòng sẽ xác định một sự kiện (một lệnh) được thực hiện vào thời điểm nào trong quá trình mô phỏng. Chi tiết cụ thể sẽ được mô tả kĩ hơn trong phần sau, khi chúng ta nói về nội dung file mã nguồn WorkloadProcessor.cs

- File đầu ra: Khi chạy chương trình mô phỏng OctoSim sẽ kết xuất ra 4 file text đầu ra có phần mở rộng lần lượt là .out.prm, .out.nds, .out.bw, .out.gph. Trong đó:

File .out.prm lưu thông tin về giá trị của các tham số sử dụng trong chương trình như thời gian tiến hành thử nghiệm, thời gian và tốc độ tham gia vào mạng của các nút, kích cỡ file chia sẻ …

File .out.nds có chứa các thông tin chung về các sự kiện xảy ra với các nút. Cấu trúc chung của một dòng trong file này là:

[time] [node] [event] <details>

Có thể hiểu nội dung của dòng này là thời gian diễn ra sự kiện đối với nút, nút diễn ra sự kiện là nút nào, sự kiện đó là sự kiện gì và các thông tin chi tiết tương ứng với mỗi loại sự kiện. Thông tin chi tiết về từng loại sự kiện đối với 1 nút chúng ta có thể xem thêm trong file Logger.cs

File .out.bw, file này chính xác đóng vai trò là file log của hệ thống. Cấu trúc của file chia thành các khối, mỗi khối bắt đầu bằng một dòng có nội dung là “time <thời điểm>”. Các dòng tiếp theo trong khối mô tả một cách vắn tắt về tình trạng của toàn bộ các nút trong mạng tại thời điểm xét, mỗi nút trên 1 dòng, cụ thể, thông tin trên mỗi dòng sẽ là:

<đị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> <số lượng các kết nối Interested> <số lượng các kết nối không bị choke> <số lượng các kết nối useful> <số lượng các kết nối upload interested> <số lượng các kết nối upload không bị choke> <số lượng các kết nối upload useful> D <khoảng cách đến seed trong đồ thị>

Muốn biết chi tiết và hiểu hơn các khái niệm, có thể xem trong phương thức Dump của class Node trong file Node.cs.

Một phần của tài liệu NGHIÊN CỨU ẢNH HƯỞNG CỦA HIỆN TƯỢNG “THAM GIA MÀ KHÔNG ĐÓNG GÓP” LÊN HỆ THỐNG CHIA SẺ FILE NGANG HÀNG BITTORRENT (Trang 27 - 29)

Tải bản đầy đủ (DOC)

(44 trang)
w