Thursday 30 July 2009

Network Simulator-2 (NS2)

NS-2 UC Berkeley tarafından gelistirilmis çesitli IP tabanlı networkleri simüle edebilen olay tabanlı network simülatorüdür. NS-2 ile TCP, UDP gibi network protokolleri ve FTP, Telnet, WEB, CBR ve VBR gibi trafik kaynaklarını ve Drop Tail, RED, CBQ gibi router kuyruk yönetimini ve Dijkstra gibi routing algoritmalarını gerçeklestirilebilir. NS aynı zamanda LAN simülasyonları için bazı MAC katmanı protokollerini de gerçeklestirme imkanı sunar. NS-2 ayrık olay simülatörüdür. NS2 3 tip ayrık olay dağıtıcısı bulunmaktadır: list, heap ve hash tabanlı takvim. NS2 aynı zamanda default olarak network node'larının gerçeklestirimi, network node'larının bağlanması, yönlendirme algoritmaları, bazı tasıyıcı seviye protokolleri(özellikle UDP ve TCP’nin çok farklı çesitleri) ve bazı network trafiği üreticilerini sağlar. Ayrıca simülatöre ekstra fonksiyonlarla genisletilebilmektedir.


Şekil-NS ile Lan simulasyonları için bazı MAC katmanı programları

NS2 aynı zamanda gerekli tcl derleyiciler, simülasyon senaryo üreteci ve simülasyon topoloji üreteci gibi utilityler içermektedir. Tcl derleyiciler tcl scriptlerini derlemek için kullanılmaktadır ve eğer simülasyonu gerekli genis bir script ile kontrol edilmek isteniyorsa gereklidir. Tcl derleyicisi eğer otomatik olarak kurulmadıysa, NS2 tarafından içerilmez, fakat daha sonra kurulabilir. Tcl derleyicisinin bir dezavantajı, kullanılan tcl versiyonuna bağımlı olması ve aynı
zamanda NS2 versiyonuna da bağımlı olmasıdır.



Şekil- OTCL Yorumlayıcısının Yapısı

Yukarıdaki şekilde NS'in basitlestirilmis bir görüntüsüdür. Burada görüldüğü üzere NS OO TCL (OTCL) script yorumlayıcısı içermektedir. NS kütüphanesinde olay tasarlayıcı(event schedule) nesneler, ağ bileseni(network component) nesneleri ve ağ kurulum yardım menüleri vardır. Diğer bir deyisle NS i kullanmak için yapmak istediklerinizi Otcl script dilinde yazmanız gereklidir. Yapacağımız simulasyonu OTCL ile yazarken kullanıcı olay tasarlayıcısı ilklendirilir ve ağ nesneleri ve plumbing fonksiyonlarını kullanarak ağ topolojisini olusturur, son olarakta trafik kaynağına paketleri ne zaman göndermeye baslayacağı ve sonlandıracağı zamanı söyler. Plumbing terimi ağın ayarları manasında kullanılmaktadır.
NS'in en büyük bilesenlerinden biriside olay tasarlayıcısıdır(event schedular).NS te olay bir paket ID sidir. Bu ID NS nesnesinin isleyebilmesi için belirli bir zamanla birlikte her paket için tekil olarak tanımlanır. Olay tasarlayıcısı simulasyon sırasında olan bütün olayları kaydeder ve olay kuyruğundan o an olan olayı gerekli network nesnesini uyararak olay kuyruğundan çıkarır.Bir paket bir network nesnesine geldiği zaman o nesnenin olay kuyruğuna seçer.Sonra sırası geldiğinde zaman kuyruktan çıkarılıp islenir ve ilgili nesneye yönlendirilir. Yazdığımız scripti çalıstırdığımızda olaylar sıraya konur ve sırayla çalıstırılır.
NS sadece Otcl ile değil C++ ilede yazılabilir.Fakat etkinlik amacıyla veri yolu ve kontrol yolu birbirinden ayrılmıstır. Paket ve olay isletim süresini düsürebilmek için olay tasarlayıcısı ve basit network bilesenleri C++ ile yazılır. Bu derlenmis C++ ile yazılmıs nesneler Otcl yorumlayıcı tarafından Otcl nesnelerine dönüstürülürler. Bu yolla C++ nesnelerinin kontrolü de Otcl nesnelerine verilir.
Nesneler direkt olarak Otcl ile de olusturulabilir. Sekil-3.3 C++ ve Otcl nesne
hiyerarsisini göstermektedir.


Şekil- C++ OTCL Nesne Hiyerarşisi


Şekil- NS'in genel mimarisi

Yukarıdaki şekilde NS'in genel mimarisini göstermektedir. Normal bir kullanıcı Otcl kütüphanelerini kullanarak TCL ile bir simülasyon dizayn ederken veya çalıstırırken kendisinin sol alt kösesinde bulunan tcl8.0 yazan kısımdadır. Olay tasarlayıcı ve diğer network bilesenlerinin çoğu C++ ile gerçeklestirilmistir. Otcl ve Otcl bağlantıları ise tclcl kullanılarak gerçeklestirilmistir.
Topoloji üretimi için 4 seçenek var: NTG, RTG, GT-ITM ve TIERS paketleridir. En azından GT-ITM NS2’nun bir parçasıdır. NS2 ile birlikte çalısabilmesi için Knuth’un cweb ve SGB yazılımı gerektirir, fakat bu yazılımpaketleri zaten NS2’un parçasıdır. Bu topoloji üreteçleri ile tüm topolojileri el iletanımlama ihtiyacı olmaksızın genis network topolojileri olusturabilir.

Simülasyon senaryo üreteci düğümleri arasında trafik olusturmak için kullanılabilir. Wireless Network’leri simüle ederken, senaryo üreteci aynı zamanda düğümlerin hareketlerini tanımlayan dosya olusturur.

OTCL Yapılarının Tanımlanması



NAM Editörü
NS-2 ortamında bir network birbirine linklerle bağlanmıs nodelar ile yapılandırılırlar. Nodelar ve linkler birbirlerine çok değisik özelliklerle ilistirilirler. Mesela “agent ” adı verilen bir bilesen vardır. Bu herhangi bir node ile iliskilendirilerek, farklı network paketleri(TCP agent, UDP agent) üretmekle sorumludur. Network üzerinde paket tipleri belirlenince trafik olusturmak için
gerekli bir kaynak vardır. Trafiğin kaynağı ise uygulama(application) olarak isimlendirilir. Bu kaynak belirli bir agent ile iliskilendirilir. Bu yapı asağıdaki şekilde görülmektedir.



Şekil-Kaynağın Agent ile ilişkilendirilmesi

Yukarıda basit bir NS-2 network simülasyonu gösterilmektedir. Simdi basitçe bu simülasyon yapısını olusturmayı anlatalım.
1-NS-2 simülasyonu için önce nodelar olusturulur. Sekil-3.6'de Node-1 ve Node-2 olarak görülmektedir.
2- Sonra bu nodeları birbirine bağlamak için bir link olusturulur. Link olustururken bandwith, gecikme süresi, kuyruk tipi gibi değiskenler belirlenir.
3-Sonra nodelara UDP,TCP gibi agentlar atanır. Bu agentlar gidecek paket tipleri gibi node'un özelliklerini belirtir. Bu agentlar her bir node için ayrı olmalıdır.
Eğer node paket göndermeyecekse bile paket alımını gerçeklestirecek “null(sink)” agent olusturulur. Olusturulan agentlarla hangi node diğerine paket gönderecekse o nodelara ait olusturulan agentlar birbirine bağlanırlar.
4-Sonra bu agentlar için paket üretimini yapacak yani trafiği olusturacak uygulamalar olusturulup agentlara bağlanırlar. Ve bu uygulamalara baslangıç zamanları göndereceği paket büyüklükleri gibi parametreler set edilerek paket gönderimi sağlanır.
Asağıdaki yapılar bütün Otcl scriptlerinde olmalıdır.

NS-2' ya Giriş

NS kurulduktan sonra var olan bir Tcl scripti çalıstırmak için 'ns tclscript_adi'
yazmanız yeterlidir. Burada tclscript_adi sizin yazdığınız tcl dosyasının adı yerine kullanılmıştır. Eğer terminalinizden sadece 'ns' komutunu çalıstırırsanız size koduyazabilmeniz için tcl shell sunar. Çok kullanıslı bir ortam değildir. Yazmış olduğunuz scripti çalıstırdıktan sonra size stout üzerinde bir output olusturur. Bu oluşan dosya NAM gibi editörlerle açılabilir.

XGraph

Ns-allinone paketinin bir parçası da xgraph, simulasyon sonuçlarının
grafiksel sunumunu olusturan bir çizim programıdır. Orijinal programı herhangi bir X11 görünümü üzerinde çizmeyi destekler ve zoom yapabilmeyi sağlamak gibi bazı ekstra faydalı özelliklere sahiptir.
Orijinal koda 2 yeni özellik eklendi. Birincisi, ilk ham animasyon dataseti
yapar ve sadece bu yüklenen dataseti anime eder. Eğer dosyadaki veriler zamana göre sıralı ve düzenli ise bu yöntem faydalı. Ayrıca kod senin datanı nümerik olarak isletir ve yeni XGraph ekranında gösterir.
Fakat bazı sıkıcı problemler bulunmaktadır. Expose eventler meydana geldiğinde ekranı 4-5 kere refresh etmeye zorlar.

NAM (Network Animator) Nedir?

Nam network simülasyon izlerini ve gerçek dünya paket izleri datalarını
izlemek için bir animasyon tabanlı araç olan Tcl/TK‘dır. Nam; topoloji düzeni,
paket seviye animasyon ve çesitli data kesif araçlarını destekler.
Nam LBL’de basladı. Son zamanlarda gelisme göstermektedir. Nam
gelistirim çabası devam etmekte olan bir çalısma olan VINT projesi ile
sağlanmaktadır.
Nam’ı kullanmak için ilk adım bir trace dosyası olusturmaktır. Trace dosyası
topoloji bilgilerini içermeli. Örnek olarak düğümler, linkler ve paketlerdir. NS2
simülasyonu boyunca kullanıcı, topoloji konfigürasyonu, düzen bilgisi ve paket
izlerini izleme olaylarını(tracing events) kullanarak üretebilir.
Trace file üretildiği zaman, her sey anime etmek için hazır demektir.
Çalısmaya baslaması üzerine, nam trace dosyasını okur, topolojiyi olusturur, bir ekran çıkar ve simulasyonu gösterir. Nam kullanıcı ara yüzü ile animasyonun birden fazla görünümünü sağlar.
Nam düğüm(node), link(bağlantı), queue(kuyruk), packet(paket),
agent(temsilci) ve monitor yapı bloklarını kullanarak animasyon yapar.