Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isrm:laboratoare:v2:01 [2024/06/27 22:44]
mbarbulescu [Task 01: Analiza PCAP]
isrm:laboratoare:v2:01 [2024/06/28 09:48] (current)
mbarbulescu [Task 03: Basic plot]
Line 113: Line 113:
  
 <code bash> <code bash>
-root@isrm-vm:/​home/​student/​isrmls *.pcap+root@isrm-vm:/​home/​student/​isrmls *.pcap
 AccessPoint-0-0.pcap ​ Station-1-0.pcap AccessPoint-0-0.pcap ​ Station-1-0.pcap
 </​code>​ </​code>​
 +
 +<note important>​
 +Dacă vreți să accesați de pe mașina fizică/​virtuală din care rulați docker image-ul fișierele din interiorul docker image, acestea sunt montate prin [[https://​docs.docker.com/​storage/​storagedriver/​overlayfs-driver/​|overlayfs]] și sunt configurate să fie accesibile din folderul: ''​~/​.isrm2024/​merge''​
 +
 +(presupunând că ați rulat scriptul de build cu parametru numele mașinii ''​isrm2024''​)
 +</​note>​
  
 Filtrați și afișați doar pachetele TCP. Fără a citi codul simulării și nici descrierea de la începutul sursei, ci doar PCAP-urile, care credeți că e direcția traficului? Sunt două noduri: 0 și 1 - 0->1 sau 1->0? Filtrați și afișați doar pachetele TCP. Fără a citi codul simulării și nici descrierea de la începutul sursei, ci doar PCAP-urile, care credeți că e direcția traficului? Sunt două noduri: 0 și 1 - 0->1 sau 1->0?
Line 139: Line 145:
  
 <code bash> <code bash>
-student@isrm-vm:~/ns-3-dev$ tshark -T fields -e frame.time_epoch \+root@isrm-vm:/home/​student/​isrm$ tshark -T fields -e frame.time_epoch \
      -e frame.number -e ip.src ​ \     -r ./​AccessPoint-0-0.pcap '​(ip.proto == 6) && (ip.src == 10.0.0.1)'​ > frames.txt      -e frame.number -e ip.src ​ \     -r ./​AccessPoint-0-0.pcap '​(ip.proto == 6) && (ip.src == 10.0.0.1)'​ > frames.txt
 </​code>​ </​code>​
Line 176: Line 182:
 =====  Task 02: Analiza trace-ului ASCII ===== =====  Task 02: Analiza trace-ului ASCII =====
  
-Mecanismul de [[https://​www.nsnam.org/​docs/​tutorial/​html/​tracing.html|tracing din ns-3]] ne permite să logăm și în format ASCII evenimentele. Rulați simularea ​aferentă laboratorului 3 astfel:+Mecanismul de [[https://​www.nsnam.org/​docs/​tutorial/​html/​tracing.html|tracing din ns-3]] ne permite să logăm și în format ASCII evenimentele. Rulați simularea:
  
 <code bash> <code bash>
Line 205: Line 211:
 Apoi urmează o serie de nume de clase din [[https://​www.nsnam.org/​doxygen/​group__attribute.html|sistemul de atribute al ns-3]] (''​ns3::​Ipv4Header,​ ns3::​TcpHeader''​) și cu o listă de trace-uri specifice clasei respective. ​ Apoi urmează o serie de nume de clase din [[https://​www.nsnam.org/​doxygen/​group__attribute.html|sistemul de atribute al ns-3]] (''​ns3::​Ipv4Header,​ ns3::​TcpHeader''​) și cu o listă de trace-uri specifice clasei respective. ​
  
 +=====  Task 03: Basic plot =====
  
 +Ne propunem să validăm și că funcționează generarea de grafice, lucru pe care îl vom folosi la toate laboratoarele. ​
 +
 +Descarcati fișierul de date numit  **plotting_data1.csv** ce conține:
 +<file csv plotting_data1.csv>​
 + # comentarii ​
 + # X Y
 +   1 2
 +   2 3
 +   3 2
 +   4 1
 +</​file>​
 +
 +Pe baza acestor date, graficul poate fi construit folosind urmatorul template (pe care il puteti folosi si la restul laboratoarelor):​
 +
 +<code python>
 +import copy
 +import numpy as np
 +import matplotlib
 +import matplotlib.pyplot as plt
 +
 +# Calea absoluta catre fisierul de date din care citim
 +# TODO - trebuie inlocuita cu calea corecta
 +DATA_FILE = '​plotting_data1.csv'​
 +columns = ['​x',​ '​y'​]
 +
 +# Citim datele din fisier
 +# Argumentul delimiter precizeaza care este delimitatorul dintre coloane
 +# Argumentul skip_header precizeaza cate linii nu vor fi citite pornind cu inceputul fisierului
 +# Argumentul names este unul foarte util deoarece permite asocierea de nume pentru coloanele din fisier si
 +# de asemenea duce la un acces foarte usor al datelor in script. In acest exemplu, names va fi egal cu ['​x',​ '​y'​]
 +# ceea ce inseamna ca putem accesa valorile din prima coloana prin sim_data['​x'​].
 +# Argumentul dtype setat specifica modul in care vor fi interpretate coloanele (string-urile ca string-uri, float-urile ca float-uri).
 +# In absenta acestui argument, valorile din coloane vor fi interpretate ca float.
 +sim_data = np.genfromtxt(DATA_FILE,​ delimiter='​ ', skip_header=2,​ names=columns,​ dtype=None)
 +
 +def plot_data(sim_data):​
 +    data = copy.deepcopy(sim_data)
 +
 +    # Apelul subplots poate fi folosit pentru a crea mai multe subgrafice in cadrul aceluiasi grafic sau in cadrul unor grafice diferite
 +    # Prin figsize se specifica dimensiunea graficului
 +    fig, ax = plt.subplots(figsize=(12,​12))
 +    # Valori stilistice pentru grafic
 +    ax.grid(color='​b',​ alpha=0.5, linestyle='​dashed',​ linewidth=0.5)
 +    # Denumirile axelor Ox si Oy, precum si titlul graficului
 +    plt.xlabel('​X values'​)
 +    plt.ylabel('​Y values'​)
 +    plt.title('​A very nice looking plot')
 +
 +    # Aici este construit efectiv graficul. Campul label va fi folosit in cadrul legendei graficului
 +    ax.plot(data['​x'​],​ data['​y'​],​ label='​My plot')
 +    ax.legend()
 +    ​
 +    plt.savefig("​l1t3.png"​)
 +
 +if __name__ == '​__main__':​
 +    plot_data(sim_data)
 +</​code>​
  
 +Verificați după rulare că în folderul din docker aveți fișierul ''​l1t3.png''​. De asemenea, pentru că folosim [[https://​docs.docker.com/​storage/​storagedriver/​overlayfs-driver/​|overlayfs]] puteți accesa de pe mașina fizică/​virtuală din care rulați docker-ul din folderul: ''​~/​.isrm2024/​merge/​l1t3.png''​ presupunând că la build ati folosit ca parametru numele docker image-ului ''​isrm2024''​. ​
  
  
isrm/laboratoare/v2/01.1719517444.txt.gz · Last modified: 2024/06/27 22:44 by mbarbulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0