ns2 report

7
BÁO CÁO CÁ NHÂN BÀI 4 Số thứ tự: Họ và tên: Lương Ngọc Sơn Lớp : ĐTVT – 08 MSSV: 20102094 GVHD: TS. Phạm Văn Tiến Nội dung đóng góp: - Tìm hiểu và viết code tính toán tỷ lệ mất gói trên từng luồng. Công việc thực hiện được: - Tìm hiểu về công cụ NS-2 và 1 số công cụ hỗ trợ việc mô phỏng và phân tích mạng (NAM, xgraph, awk,…) - Thực hiện xây dựng topology theo yêu cầu của bài tập và chạy mô phỏng trên NAM. - Tìm hiểu cấu trúc file bám vết (*.tr), từ đó viết code thực hiện việc tính toán và vẽ đồ thị tỷ lệ mất gói trên từng luồng. 1. Cấu trúc file trace: Khi bám vết trong 1 file ACSII đầu ra, trace được tổ chức thành 12 trường (hình vẽ)

Upload: autoknight

Post on 24-Oct-2015

125 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: NS2 Report

BÁO CÁO CÁ NHÂN

BÀI 4

Số thứ tự:

Họ và tên: Lương Ngọc Sơn

Lớp : ĐTVT – 08

MSSV: 20102094

GVHD: TS. Phạm Văn Tiến

Nội dung đóng góp:

- Tìm hiểu và viết code tính toán tỷ lệ mất gói trên từng luồng.

Công việc thực hiện được:

- Tìm hiểu về công cụ NS-2 và 1 số công cụ hỗ trợ việc mô phỏng và phân tích

mạng (NAM, xgraph, awk,…)

- Thực hiện xây dựng topology theo yêu cầu của bài tập và chạy mô phỏng trên

NAM.

- Tìm hiểu cấu trúc file bám vết (*.tr), từ đó viết code thực hiện việc tính toán và vẽ

đồ thị tỷ lệ mất gói trên từng luồng.

1. Cấu trúc file trace:

Khi bám vết trong 1 file ACSII đầu ra, trace được tổ chức thành 12 trường (hình vẽ)

Event: Sự kiện xảy ra

+ : 1 gói được xếp vào hàng đợi.

- : 1 gói đi ra khỏi hàng đợi.

r : 1 gói được nhận toàn bộ ở nút đích

d : 1 gói bị drop tại hang đợi.

Time: Thời điểm xảy ra sự kiện

Page 2: NS2 Report

From node: Nút gửi gói.

To node: Nút nhận gói.

Pkt type: Loại gói được truyền.

Pkt size: Kích thước gói được truyền.

Flags: Cờ.

Fid: (flow id): Mã của luồng (được định nghĩa trong file *.tcl)

Src addr: Địa chỉ nguồn dưới dạng “node.port”

Dst addr: Địa chỉ đích dưới dạng “node.port”

Seq num: Số thứ tự gói tin của giao thức lớp mạng

Pkt id: Mã của gói tin. (Mỗi gói tin được đánh 1 mã duy nhất)

Để ghi dữ liệu bám vết vào file trace ta cần khai báo dòng lệnh sau trong file *.tcl

set tracefile [open out.tr w]

$ns trace-all $tracefile

2. Ngôn ngữ AWK:

- AWK là ngôn ngữ lập trình giúp xử lý dữ liệu dạng chữ trong text file theo nguyên

lý khớp mẫu. Khi phân tích 1 file bám vết (*.tr), các cột dữ liệu trong file được

xem như là 1 trường và được đặt tên $1 cho cột 1, $2 cho cột 2, …. Như vậy trong

file trace: $1 ứng với trường event, $2 ứng với trường time,….

- Để vẽ được đồ thị biễu diễn 1 thông số mạng nào đó, trước hết ta cần trích xuất dữ

liệu từ file bám vết, từ đó tính toán thông số cần vẽ đồ thị và đưa giá trị của thông

số đó vào 1 file dữ liệu khác rồi thực hiên vẽ đồ thị bằng công cụ XGRAPH. Cụ

thể ta cần chèn những dòng lệnh sau trong file *.tcl:

#Tạo file dữ liệu để lưu trữ giá trị của thông số cần vẽ đồ thị

set losts1 [open lost_s_1.tr w]

proc finish {} {

#Trích xuất dữ liệu từ file bám vết out.tr

exec awk -f lost_s1.awk out.tr

#Vẽ đồ thị từ file dữ liệu lost_s_1.tr

Page 3: NS2 Report

exec xgraph lost_s_1.tr -bg white -geometry 800x400 -t

"Lost S1" -x "s" -y "%" &

...

}

- Câu lệnh: print $2 " " rate >> "lost_s_1.tr" trong file *.awk giúp ghi

giá trị của thông số cần vẽ đồ thị vào file dữ liệu.

3. Tính toán tỷ lệ mất gói tại từng luồng:

Tỷ lệ mất gói được xác định là tỷ lệ giữa số gói bị drop với tổng số gói truyền

lost= số góibị droptổng số gói truyền

∗100

Code file lost_s1.awk tính toán tỷ lệ mất gói trên luồng s1-d:

BEGIN{ npacket=0;dpacket=0;time=0;}

{

if (($1=="+")&&($3=="0")&&($8=="1"))

{npacket=npacket+1;}

if (($1=="d")&&($8=="1"))

{dpacket=dpacket+1;}

if($2>time+1.0)

{

rate= 100*dpacket/npacket;

dpacket=0;

npacket=0;

time=$2;

print $2 " " rate >> "lost_s_1.tr";

}

}

END{}

Code file lost_s2.awk; lost_s3.awk tính toán tỷ lệ mất gói trên luồng s2-d & s3-d3 tương

tự như trên.

4. Kết quả & nhận xét:

Page 4: NS2 Report

Đồ thị tỉ lệ mất gói của luồng từ s1-d với Queue=50 và sau 20s tăng 20%

Đồ thị tỉ lệ mất gói của luồng từ S2-d với Queue=50 và sau 20s tăng 20%

Page 5: NS2 Report

Đồ thị tỉ lệ mất gói của luồng s3-d3 với Queue=50 và sau 20s tăng 20%

Nhận xét:

Tỉ lệ mất gói của nguồn S1 và S2 là thấp vì mỗi khi có mất gói thì lập tức nó sẽ

giảm tốc độ phát xuống để tránh mất gói, cụ thể sẽ giảm 1 nửa nếu như phát hiện mất gói

và sẽ tăng tuyến tuyến tính đến khi mất gói, quá trình đó lặp đi lặp lại. Mất gói của 2

nguồn S1 và S2 là như nhau bởi vì 2 nguồn đều có cơ chế điều khiển luồng chống tắc

nghẽn, và cùng chia sẻ băng thông đường truyền node 4-node 5 nên tỉ lệ mất gói của

chúng là như nhau.

Mô hình hàng đợi SFQ là mô hình không thức tế.

Tỉ lệ mất gói trước và sau tăng hàng đợi 20% sau mỗi chu kỳ là không đổi. Do

hàng đợi SFQ không có định nghĩa hàng đợi. SFQ chỉ hữu ích trong trường hợp giao

diện mạng thực tế của bạn là thực sự đầy đủ! Nếu không thì sẽ không có hàng đợi trên

máy tính Linux của bạn và do đó không có hiệu lực.