Minggu, 25 Juli 2010

AWK untuk menghitung QOS pada NS-2

Biasanya simulasi yang menggunakan Network Simulator juga disertai dengan analisis. Nah udah banyak kasus yang saya lihat (cie kyk detektif aja gw), apalagi kalau menyangkut tugas akhir, pasti rata-rata menggunakan software NS ini untuk menghitung Qos seperti jitter, delay, packet loss, dan throughput.

AWK adalah sebuah format script yang biasanya digunakan untuk mengolah data dalam bentuk text . Nah untuk NS2 juga memiliki format AWK yang dapat digunakan untuk menghitung QOS. Sebenarnya lebih enak kalau kita mengerti bahasa pemrograman, jadi file AWK ini bisa dibikin sendiri sesuai dengan fungsi yang kita mau :D , tapikarna gw bukan anak programming,jadi kurang ingin mendalami.wkwkwkk

nah ini dia file AWK standar yang biasanya digunakan untuk menghitung delay :

BEGIN {
         for (i in send) {
                 send[i] = 0
         sendt[i] = 0
         }
         for (i in recv) {
                 recv[i] = 0
         recvt[i] = 0
         }
         delay = 0
         num = 0
         avg_delay = 0
}

{
         # Trace line format: normal
         if ($2 != "-t") {
                event = $1
                time = $2
                node_id_s = $3
        node_id_d = $4
        pkt_type = $5
        pkt_size = $6
        pkt_attrib = $7
                pkt_id = $12
         }
         # Trace line format: new
         #if ($2 == "-t") {
         #        event = $1
         #        time = $3
         #        node_id = $5
         #        flow_id = $39
         #        pkt_id = $41
         #}

         # Store packets sent
         if (event == "+" && node_id_s == "0" && pkt_type == "tcp") {
                 send[pkt_id] = time
         sendt[pkt_id] = 1
          #       print("send[",pkt_id,"] = ",time)
         }
         # Store packets arrival time
         if (event == "r" && node_id_d == "9" && pkt_type == "tcp") {
                 recv[pkt_id] = time
         recvt[pkt_id] = 1
          #       print("recv[",pkt_id,"] = ",time)
          #      print(" --> delay[",pkt_id,"]= ",recv[pkt_id]-send[pkt_id])
        if (recvt[pkt_id] == 1 && sendt[pkt_id] == 1) {
        print (time," ",(recv[pkt_id]-send[pkt_id])) > "delay.tr" }
        }
}

END {
        # Compute average delay
        for (i in recv) {
                if (sendt[i] == 1 && recvt[i] == 1) {
                     delay += recv[i] - send[i]
                     num ++
         
                }
    }

        if (num != 0) {
                avg_delay = delay / num
        } else {
                avg_delay = 0
        }
        print("")
        print("")
        print("==> Average delay data    = ",avg_delay,"s")
        print("                          = ",avg_delay*1000,"ms")

wakakakk, males juga belajar ginian sebenarnya. Tapi bener2 perluuu
nah gw jelasin yang gw tau yaaa :D . Pertama yang for to dll itu tuh format awal sebuah AWK. komponen NS yang disetting contohnya 'event = $1' . ini menggambarkan isi / format dari .tr (trace file) . 'event = $1 ' berarti tabel pertama dari file .tr menunjukkan event . begitu pula pkt_type, karena berada di kolom ke-5, makanya dikasih $5 . begitu seterusnya. kalo ga ngerti, sok aja dibuka file .tr dan lihat urutannya. nanti aku kasih deh tabel2 urutan tracefile.

nah selanjutnya adalah :
         # Store packets sent
         if (event == "+" && node_id_s == "0" && pkt_type == "tcp") {
                 send[pkt_id] = time
         sendt[pkt_id] = 1
sesuai dengan fungsinya, AWK akan menghitung delay dari pengirim (node asal) ke penerima (node tujuan). makanya kalo temen2 lihat lagi format store packet sent ama arrival time tuh mirip2 aja. yang diedit biasanya "+" nya . "+" menandakan bahwa yang diukur adalah enqueue (paket yang masuk ke antrian atau paket yang dikirim oleh node) . biasanya '+' untuk wired dan 'r' untuk wireless .
lanjooooot..terus habis ituu yang harus diedit lagi adalah node_id . "0" berarti si pengirim adalah node yang pertama kali didefinisikan/ dicreate di dalam file tcl kita. kalo mau ngeliat sih tinggal running aja script tcl nya. ntar kan kelihatan pas di nam akan ada nomor2 untuk tiap node. itu menunjukkan nomor urutan pembuatannyaaa :D
pkt_type adalah jenis paket yang akan kita ukur. naah misalnya ni ada 3 jenis pengiriman data dalam simulasi (data,video,suara,dan biasanya kayak gitu) maka kita harus mengukur masing2 . jadi akan ada 3 script delay.awk yaitu mengukur tcp (data), rtp (suara), dan cbr (video).kalo mau ngukur yang lain juga bisa sii :D seperti ack (acknowledgement), exp (experience point), atau rtproto (protokol routing).
naah lanjut lg yaah..itu doang sii komponen penting yg harus kita edit. rumus mah ga usah diedit,soalnya rumus QOS udah standar internasionaleeee. kalo mau bikin rumus baru, silahkan ganti rumusnyaa.

itu doang sii pentingnyaa. ooiiia lupa ada satu lagiii ini niih
       if (recvt[pkt_id] == 1 && sendt[pkt_id] == 1) {
        print (time," ",(recv[pkt_id]-send[pkt_id])) > "delay.tr" }
khusus untuk file delay, kita akan membuat file trace tersendiri. kenapaaa?soalnya khusus untuk delay ini, kita dapat menganalisa hasilnya dengan trace graph yang berbentuk grafik yang memperlihatkan nilai delaynya.wkwkkwk, kayaknya yang lain juga bisa deh,tinggal ngopi scriptnya aja apa yah.tapi gw belum pernah nyobain siii. ntar aja deh..bagi yang iseng silahkan dicoba yaaa :D

okee sekian aja dari gw. kalo mau ngeliat file awk yang lain, gw udah aplod ke sini nih
silahkan donlot dan pelajari sesuka hati :D
jangan lupa leave comment yaah. makasiii
Categories:

6 komentar:

  1. hai,,

    salam kenal y,,makasih udh berbagi, postingannya sangat bagus dan membantu sekali,, :)

    BalasHapus
  2. semangat pagi..
    mkasih atas infonya,
    mau nanya nih,
    file awknya di copas aj ke script tclnya atw gimana yah ??
    (mash pemula di ns :p)

    BalasHapus
  3. maaf ya..ingin bertanya...
    jika,sudah ada file awk script...bagaimana mahu run awk script ini dalam terminal..maksudnya...caranya bagaimana..dan apakah command yg perlu ditype pd terminal utk melihat outputnya?
    saya masih baru....lagi kosong lagi dlm awk script ini..boleh tunjukkan langkah-langkahnya...
    thank you

    fatinmasturahmj@yahoo.com
    malaysia

    kalau tak keberatan..boleh saya tahu nama Facebook..supaya boleh saya add

    BalasHapus
  4. Ketik kan saja
    awk -f filehitungandelay.awk out.tr

    BalasHapus
  5. selamatmalam mas..
    terimakasih atas ilmunya..
    saya mau tanya mas..
    ada ngk awk yang buat ngitung konsumsi energy..
    kalo ada mohon bantuanya mas ya..
    fendi92antoni@gmail.com

    BalasHapus
  6. cara bikin file awk nya gimana ya?
    langsung copas ke text atau gimana?
    masih baru di dunia ns
    terima kasih

    BalasHapus