AB-2016 / 05.02.2016 Kablosuz Duyarga Ağlarında Yönlendirme Algoritmalarının Performans Analizi Yard. Doc Coşkun Atay Sinem Seçgin
Kablosuz Algılayıcı Ağlar, Nedir?
WSN's Fiziksel Durumlar Sıcaklık Nem Işık Ses Basınç
Uygulama Alanları Afet Alanları ( Yer tespiti, Kurtarma operasyonları...) Askeri Uygulamalar (Komuta, kontrol , iletişim, hedef/tespit) Akıllı yaşam alanları( Toplu taşıma alanları, Hava alanları, binalar, yerleşim yerleri ) Sağlık alanı (Sıcaklık algılayıcısı, solunum algılayıcısı, kan akış algılayıcısı,oksimetre algılayıcısı , EKG...)
Sensör düğümü örneği kablosuz sensör ağlarında kullanılan ve hesaplama, algısal bilgi toplama ve ağdaki diğer bağlantılı düğümlerle haberleşme yeteneklerine sahip düğümlerdir. Tipik bir sensör düğümü mimarisi : Sensör düğümünün ana bileşenleri mikrodenetleyici, alıcı-verici, dışsal bellek, güç kaynağı ve bir veya daha fazla sensördür.
WSN's Güvenliği Saldırılara karşı dayanıklılık İç krizlere karşı direnç Veri gizliliği (Bir sensör ağ kesinlikle sensör bilgisini komşu ağlara sızdırmamalıdır.) Veri doğrulama/ Kimlik denetimi Veri bütünlüğü Verinin tazeliği Kullanılabilirlik Hizmet bütünlüğü Bu noktada, Ağ protokolleri büyük önem taşımakla beraber en bilinen protokolümüz Yönlendirme protokolüdür. (Routing Protocols)
Yönlendirme protokolleri Routing olarak tabir ettigimiz yonlendirme islemi routerlar yada yonlendirme ozelligi olan switch-ler tarafindan gerceklestirilmektedir. Yonlendirmeden kasit paketlerin bir networkden(ağdan) baska bir networke iletilmesidir. Routing protokolleri uce ayrilmaktadir: 1)Distance-Vector Protokolleri 2)Link-state Protokolleri 3)Hybrid Protokolleri
Yönlendirme Protokolleri Ağ topolojisine paralel olarak ortaya çıkmıştır. Şekilde Ayrılan routerlara göre kendi alanlarında algoritmalara sahip olmuşlardır. Bizim araştırmamızda, Distance(mesafe) ile Link state protokollerine bağlı olan 2 algoritmanın analizleri karşılaştırılacaktır.
Problem Algılayıcı sensör ağlar esas pil gücüne bağlıdır. Amacımız en kısa yol problemlerini ve en kısa güç tüketimini inceleyip ağ tıkanıklıkları ve algoritmaların sensörlere etkilerini karşılaştırmaktır. Analizlerimizde : Ağırlık Maliyet Yol hesapları ---> Eşit değerler verilerek hesaplanmış ve aralarındaki performanslara göre sonuca varılmıştır.
Yönlendirme(Router) Algoritmaları Yönlendirme veri paketlerinin kaynaktan hedefe aktarılmasıdır. Yönlendiriciler üçüncü katmanda (network layer) çalışırlar. Routerların görevi : 1)Kaynak ve hedef sistem arasında en uygun yolu belirlemek 2)kaynaktan gelen veri paketlerini hedefe doğru iletmek Router algoritmaları da yönlendirme tablolarını en uygun şekilde hazırlamaya yarayan tablolardır diyebiliriz. Statik ve dinamik olmak üzere 2 kısımda incelenmektedir
Başlıca (Router) Yönlendirme Algoritmaları : Dijkstra Algoritması Bellman-Ford Algoritması Flooding Algoritması Random Algoritması
Dijkstra algoritması: O(E + V lg V) çalışma hızı. En kısa yolu bulmayı amaçlar Algoritma : internet ağ trafiği kontrolü, Open Shortest Path First protokolünde ve genellikle ulaşım alanında kullanılır. Her bir adımda anahtarlama kontrolü yapar ve en düşük adımı bulur. Hat durumuna dayalı olan protokollerde kullanılır (Open shortest path first OSPF) Dijkstra algoritması: O(E + V lg V) çalışma hızı.
Bellman-Ford Algoritması Düğümler arasındaki en kısa yolu bulmak için kullanılan bir algoritmadır Ağ trafiği kontrolünde yaygın olarak kullanılır İteratif bir çözümdür. Maliyeti artan bağlantı sayısına dayalı olarak artar. Öncelikle bağlantı hatlarına bakar İkincil olarak anahtarlama noktası arar Uzaklık vektörüne dayalı protokollerde kullanılır (Routing information protocol(RIP)) Bellman-Ford: O(VE) çalışma hızı.
Matlab'da yapılan deneylerde random bir ağ simulasyonu oluşturulmuş olup bu algoritmaların tek tek incelenmesi yapıldı daha sonra rand() fonksiyonu devreden çıkartılarak kendi verdiğimiz sabit değerler ile hesaplamalar gerçekleştirildi.
Aynı şekilde bir tane de Bellman-Ford ve Random Algoritmaları içinde analiz edilip çalışma hızları karşılaştırılmıştır
int dijkstra_node_distance( node_t * node ) { path_t * p; if ( ! node->visited ) { printf("dijkstra_node_distance( %s )...\n", node->name ); node->visited = true; for( p = node->paths; p->node; p++) { int d = dijkstra_node_distance( p->node ) + p->distance ; if ( d < node->distance ) { node->distance = d; node_mark_best_path( node, p ); } printf("dijkstra_node_distance( %s ): %d\n", node->name, node->distance ); return node->distance; void dijskstra_nodes( node_t ** nodes ) { node_t * n; while( (n = *nodes) ) { dijkstra_node_distance( n ); nodes++; void dijkstra_solution( node_t * node ) { printf("%s[%d]", node->name, node->distance ); for( p = node->paths; p->node; p++ ) { if ( p->best ) { printf(" --(%d)--> ", p->distance ); dijkstra_solution( p->node ); break;
void bellmanFordAlgorithm() { initialize(); for (int i = 0; i <= nodes.Count - 2; i++) foreach (Edge edge in edges) relax(edge.n1, edge.n2); } if (detectingNegativeCycles()) MessageBox.Show("Negative Cycle can not found!"); else MessageBox.Show("Negative Cycle found!"); show(); bool detectingNegativeCycles() if (edge.n2.deger > edge.n1.deger + getWeight(edge.n1, edge.n2)) return false; return true;
Düğüm Sayısı ÇalışmaZamanı (DA) Çalışma zamanı(BFA) 10000 2.172 2.288 20000 9.188 9.508 30000 21.700 24.300 40000 31.212 44.854 50000 42.402 75.501
Alınan Sonuç Grafiği y=[ 2.288, 9.508, 24.300, 44.854,75.501]; x=[2.172 , 9.188, 21.700,35.212 , 45.402]; a = [1000,2000,3000,4000,5000]; subplot(1,2,1), plot(x,a); title('Dijkstra Algoritması Performans Hızı'); subplot(1,2,2), plot(x,a); xlabel('x'); ylabel('y'); title('Bellman-Ford Algoritması Performans Hızı');
Dinlediğiniz için teşekkür ederim.