#!/usr/bin/perl #
# Phạm Văn Tứ - K51MMT-UET-VNU.
# GVHD: PGS.TS. Nguyễn Đình Việt.
# GVĐHD: Ths. Đoàn Minh Phương.
#
# Tỷ lệ phân phát gói tin thành công (Hiệu suất đường truyền) #--->
# Là tỷ lệ giữa số các gói tin được phân phát thành công tới đích
# so với số các gói tin tạo ra bởi nguồn phát. #
# Tư tưởng giải thuật:
# - Ta dựa vào dấu hiệu trường: Trace level = AGT. Chỉ những gói tin gửi nhận của nút nguồn hoặc nút đích
# thì trường Trace level mới được gán nhãn AGT (gói tin tầng giao vận).Các nút trung gian khác thực hiện
# việc định tuyến, chuyển tiếp gói tin, hoạt động tại tầng Network nên Trace Level = RTR.
#
# - Do đó ta chỉ cần tính:
# + Tổng số gói tin các nút nguồn đã gửi (src_sent)
# + Tổng số gói tin các nút đích nhận được (dst_receive)
# ==> Tỷ lệ phân phát gói tin thành công = dst_receive*100/src_sent. #
# type: perl Pkt_success_rate.pl <trace file>
#==================================================== $infile=$ARGV[0];
$src_sent = 0; #Tổng số gói tin các nút nguồn gửi đi
$dst_receive = 0; #Tổng số gói tin các nút đích nhận được $productivity = 0; #Hiệu suất đường truyền.
open (DATA, "<$infile") || die "Loi mo file: $infile $!"; while (<DATA>){
@x = split(' ');
# Nút nguồn gửi gói tin
if (($x[0] eq 's') && ($x[3] eq 'AGT') && ($x[6] eq 'tcp')) { $src_sent++;
}
# Nút đích nhận được gói tin
if (($x[0] eq 'r') && ($x[3] eq 'AGT') && ($x[6] eq 'tcp')){ $dst_receive++;
} }
print STDOUT "Tỷ lệ phân phát gói tin thành công = $productivity % \n";
close DATA; exit(0);