RPL DIO Message Contents

The DIO message is the primary mechanism for RPL nodes to discover the DODAG, select their parents, and maintain the routing topology. Nodes periodically transmit DIO messages to advertise their presence and routing information, allowing other nodes to join the DODAG and maintain routing paths.

struct rpl_dio {
uip_ipaddr_t dag_id;
rpl_ocp_t ocp;
rpl_rank_t rank;
uint8_t grounded;
uint8_t mop;
uint8_t preference;
uint8_t version;
uint8_t instance_id;
uint8_t dtsn;
uint8_t dag_intdoubl;
uint8_t dag_intmin;
uint8_t dag_redund;
uint8_t default_lifetime;
uint16_t lifetime_unit;
rpl_rank_t dag_max_rankinc;
rpl_rank_t dag_min_hoprankinc;
rpl_prefix_t destination_prefix;
rpl_prefix_t prefix_info;
struct rpl_metric_container mc;
};
typedef struct rpl_dio rpl_dio_t;

The provided code defines a structure called rpl_dio that represents the RPL (Routing Protocol for Low-Power and Lossy Networks) DODAG Information Object (DIO) message. The DIO message is a crucial component of the RPL protocol and is used for network discovery, parent selection, and DODAG maintenance.

Here’s a breakdown of the fields within the rpl_dio structure:

  1. dag_id: The identifier of the DODAG (Destination-Oriented Directed Acyclic Graph) to which the node belongs.
  2. ocp: The Objective Code Point, which identifies the Objective Function used by the RPL instance.
  3. rank: The rank of the node within the DODAG, indicating its position in the routing hierarchy.
  4. grounded: A flag indicating whether the DODAG is grounded (i.e., has a border router connected to a larger infrastructure).
  5. mop: The Mode of Operation, which specifies the method used for forwarding data packets.
  6. preference: The preference value of the node, which can be used to influence the DODAG construction.
  7. version: The version number of the DODAG.
  8. instance_id: The identifier of the RPL instance.
  9. dtsn: The Destination Advertisement Trigger Sequence Number, used to trigger DODAG updates.
  10. dag_intdoubl: The DODAG Interval Doubling, which specifies the interval between successive DIO transmissions.
  11. dag_intmin: The minimum interval between successive DIO transmissions.
  12. dag_redund: The DODAG Redundancy Constant, which controls the redundancy of DIO transmissions.
  13. default_lifetime: The default lifetime of the DODAG, used for setting the lifetime of routing table entries.
  14. lifetime_unit: The unit of time for the default lifetime.
  15. dag_max_rankinc: The maximum rank increase allowed when calculating a new rank.
  16. dag_min_hoprankinc: The minimum increment in rank when going up one hop.
  17. destination_prefix: The destination prefix information.
  18. prefix_info: The prefix information option.
  19. mc: The Metric Container, which holds information about the path metrics.

Gnuplot ile Grafik Çizimi ve EPS-II

Verileri görselleştirmek ve analiz etmek, birçok alanda önemli bir görevdir. Bu görevi yerine getirmek için birçok grafik oluşturma aracı bulunmaktadır. Bu blog yazısında, GNUPLOT adlı güçlü bir araçtan bahsedeceğiz. GNUPLOT, verileri grafiklere dönüştürmek için kullanılan bir komut satırı aracıdır. Hem basit hem de karmaşık grafikler oluşturmak için geniş bir işlevselliğe sahiptir.

GNUPLOT, birçok veri formatını destekler ve kullanıcı dostu bir komut satırı arayüzüne sahiptir. Verileri içeren dosyaları okuyarak, çizgi grafikleri, sütun grafikleri, nokta grafikleri, histogramlar, yüzey grafikleri gibi farklı grafik türlerini oluşturabilir. Ayrıca, eksenlerin ölçeğini, renkleri, etiketleri, başlıkları ve diğer grafik özelliklerini özelleştirme imkanı sunar.

GNUPLOT’ın avantajlarından biri, birçok işletim sistemi için mevcut olmasıdır. Linux, Windows ve macOS gibi yaygın kullanılan işletim sistemlerinde çalışabilir. GNUPLOT, açık kaynak bir yazılımdır ve sürekli olarak geliştirilmektedir, bu da kullanıcıların güncellemelere erişebilmesini sağlar. Verileri grafiklere dönüştürmek ve analiz etmek için GNUPLOT’ı kullanmak, veri görselleştirmesi konusunda etkili bir çözüm sunar. Hem basit hem de karmaşık grafikler oluşturabilme yeteneği sayesinde, kullanıcıların ihtiyaçlarına uygun çözümler sunar. GNUPLOT’ın esneklik, geniş grafik seçenekleri ve kullanıcı dostu arayüzü, veri analizi ve görselleştirmesi için güçlü bir araç olarak tercih edilmesini sağlar.

red = "#FF0000"
green = "#0000ff"
blue = "#00ff00"
skyblue = "#ff00ff"
son = "#800000"

set yrange [150:330]
set xrange [0.5:4]
set style data histogram
set style histogram cluster gap 1.5
set style fill solid border -1
set boxwidth 1.0

set xtics font 'Helvetica, 18'
set xlabel 'Proxy JRC' font 'Helvetica, 20'
set ylabel 'Average Time for Identity Verification (second)' font 'Helvetica, 20'
set grid ytics

set title 'A Network with 20 Nodes' font 'Helvetica, 30'

plot '20node_data_authentication' using 2:xtic(1) ti 'Centralized Authentication' fs pattern 1 lc rgb red,
'' using 3:xtic(1) ti 'Oracle' fs pattern 2 lc rgb green,
'' using 4:xtic(1) ti 'Cost Function 1' fs pattern 3 lc rgb blue,
'' using 5:xtic(1) ti 'Cost Function 2' fs pattern 4 lc rgb skyblue

set terminal postscript eps enhanced color solid linewidth 0.8 'Helvetica, 15'
set output '20node_data_authentication_temp.eps'

Yukarıdaki kod, GNUPLOT kullanarak bir histogram grafiği oluşturmak için bir örnektir. Aşağıda kodun adım adım açıklaması bulunmaktadır:

  1. Renk Değişkenleri:
    İlk olarak, grafikte kullanılacak renkleri tanımlamak için değişkenler oluşturulmuştur. Bu örnekte, “red”, “green”, “blue”, “skyblue” ve “son” adında beş renk değişkeni tanımlanmıştır.
  2. Eksen Ayarları:
    Grafikteki y ve x eksenlerinin sınırları ve görüntülenecek veri aralığı ayarlanmıştır. “set yrange” ve “set xrange” komutları ile y ve x eksenlerinin sınırları belirlenmiştir.
  3. Grafik Stili:
    Grafiğin histogram stiliyle çizilmesi için “set style data histogram” komutu kullanılmıştır. Ayrıca, çubuklar arasındaki boşluk, dolgu stili ve kenarlık ayarları da yapılmıştır.
  4. Eksen Etiketleri ve Başlık:
    X ve y eksenlerinin etiketleri “set xlabel” ve “set ylabel” komutlarıyla belirlenmiştir. Ayrıca, grafik başlığı “set title” komutu ile ayarlanmıştır.
  5. Veri Çizimi:
    Grafiğin çizimini yapmak için “plot” komutu kullanılmıştır. Bu komutta, çizilecek verilerin dosyadan okunması ve her bir veri setinin rengi, dolgu stili ve başlığı belirtilmiştir.
  6. Çıktı Ayarları:
    Grafiğin çıktısını almak için “set terminal” ve “set output” komutları kullanılmıştır. Bu örnekte, çıktı EPS formatında bir dosyaya kaydedilmiştir.

Son olarak, “replot” komutuyla grafiğin çizimi gerçekleştirilmiştir.

20node_data_authentication adlı veri dosyası;

Output;

Bu kod, “20node_data_authentication” adlı veri dosyasından verileri okuyarak, farklı veri setlerini histogram grafiği olarak çizmektedir. Grafikteki renkler, dolgu stilleri ve başlıklar, veri setlerini ayırt etmek için kullanılmaktadır.