Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > Simulasyon
Yazar
tommyknocker


avatar
Istanbul
Kayıt: 09.02.2006
21.05.2009-01:02 #60114
Sevgili arkadaşlarım C ile bir simulasyon yazmam gerekiyor.Bu simulasyon routerlar arası bir protokolü gerçekleyecek.Daha önce böyle birşey yapmadığım için kafam karıştı.Simulasyon nedir, nasıl yapılırdan öte genel olarak simulasyon kavramını kafama oturtamadım bir türlü.

Anladığım kadarıyla routerlar arası mesafeler olmalı böyle bir yapıda ve bu mesafeler uzaklık cinsinden değil zaman olarak olmalı diye düşünoyorum.Yani bir router'ın tuttuğu bu tür bir bilgi devamlı güncellenebilir olmalı ve bir an daha yakın olan daha sonra diğerinden daha uzak kalan bir routerın aslında değişen değeri ona ulaşma zamanı.

Böyle bir yapıyı bir ağaç yapısı ile yapmam mümkün mü ? Bana değil gibi geldi.Daha çok vektörler ile yapılabilir gibi geldi.Fakat eğer ağaç yapısı ile yapmak mümkünse vektör öğrenmeye çalışmakla uraşmak istemiyorum.Bu konuda bilgisi olan varsa ve paylaşırsa sevinirim.

Dediğim gibi iki derdim var: Virtual routerlarım olacak (5-10 neyse işte) ve bu routerlar arasında görsel bi iletişim yapacağım.Birbirlerine mesaj atacaklar...vs

Fakat aslında burda da bir sorun var.Aslında görsel olarak bir paket atılacak.Yani gerçekte bir paket atılmıyor.Bu durumda eğer paket kayıplarını ve ulaşımdaki başarıyı karşılaştıracaksam nasıl olacak bu? Yani neden paket kaybı olsun ki? Ortada fiziksel bir iletişim yok.Dolayısıyla paket kaybı da söz konusu olamaz gibi geliyor bana...

Bunu gibi sorunlarım var.Bu konuda daha önce çalışmış ya da proje yapmış arkadaşlardan yardım bekliyorum.





Those were the days guys...
Yazar
ogencay


avatar
Istanbul
banlandı
Kayıt: 02.03.2006
21.05.2009-05:48 #60117


Akşama gel ayrıntılı konuşalım tommy wink





There`s No Place Like 127.0.0.1

Yazar
ascii


avatar
öz
Kayıt: 26.07.2006
21.05.2009-08:49 #60120
Şimdi burda similasyonun amacına yani neyi gerçekleyeceğine göre paket tiplerini mesafeleri ve olası hata durumlarını kendin tasarlayacaksın ve simülasyon modelinide belirlenmen gerekiyor.

Örneğin router o anki yoğunluğuna göre bir paketi işlemede gecikme payına sahip olsun.

Şöyle ki mesela router kuyruğunda 8 adet paketin ilk 2 sini normal 3 birim geçikmeyle diğer sonraki ikisini gecikmeli 4 gibi birişlemle gerçekleyebilsin. Şimdi sen bir pakete ömür ver ve bu paket 15 birim sonra ölecek olsun eğer paket trafiğe takılırsa 15 birim gecikme süresini geçtiği an paket kaybı olsun.

Bu tamamen uydurma tabi senin analiz etmeye çalıştığın duruma göre bunları modellemelisin.

Birde benzetimde kullanacağın durumda önemli. Eğer vaktin varsa threadlerle modelleyebilirisin. Ama thread senkronizasyonu C de biraz zorlar söyleyeyim (Semaphore, Critical Region , mutex falan kullanmalısın).

Monothread yapısı kullanırsan o daha kolay. Bir timer kullanırsın ve bir bağlı liste hazırlarsın bağlı listede bir yapı tutarsın bu yapının bir elemanı işlenme zamanını tutar ve routerdan router a güncellenir taki işlemi bitip listeden silininceye kadar.

Sen timer ın her tick inde bağlı listeyi tarar elemanları tek tek okursun timer ın tick numarası ile yapının işlenme zamanı uyuyorsa o paketi işlersin. Nasıl işleyeceğini yapının diğer elemanlarında tutabilirsin.

Yani timer her çalıştığında bağlı liste okunur ilgili paketler okunur. Sonra yapılması gereken istekler varsa yeni paket falan geldiyse eklenir. Sonra tekrar liste okunur falan.

Thread kullanmazsan çok zorlamaz. Ama thread senkronizasyonu özellikle C de çok kolay değil. Yaparsın ama debug çok vaktini alabilir.

Kolay gelsin.






Windows is a misunderstood Unix.


Yazar
auzunun


avatar
Bursa
Kayıt: 15.01.2006
21.05.2009-10:52 #60122
ogencay yazdi
 
...

Bu programla istediğimiz yapıyı oluşturup paketi takip edebilir miyiz? Ayrıca paketin ne ile şifreleneceğine de karar verebilir miyiz? Kısaca program hakkında biraz bilgi verebilir misin biggrin Tam işime yarayabilecek bir programa benziyor da





Öldüremiyorsan, yaralama.
Yazar
ogencay


avatar
Istanbul
banlandı
Kayıt: 02.03.2006
21.05.2009-11:31 #60128
auzunun yazdi
 
ogencay yazdi
 
...

Bu programla istediğimiz yapıyı oluşturup paketi takip edebilir miyiz? Ayrıca paketin ne ile şifreleneceğine de karar verebilir miyiz? Kısaca program hakkında biraz bilgi verebilir misin biggrin Tam işime yarayabilecek bir programa benziyor da


Bu programla istediğin her türlü topolojiyi (Frame-Relay / Leased Line / WAN / LAN / OSPF / RIP) bi çok aygıtın orjinalleriyle birebir çalışan simülasyonlarını kullanarak ve daha sonra da router ve switchlerin konfigürasyonlarını yaparak istedigin noktadan istedigin noktaya istedigin çeşitte paket gönderip nerede takılabildiğini görebilirsin. Sistem random bi şekilde belirli bir süre çalışıp belirli yerlerde hata veren bir simülasyon oluşturabiliyor hatta kendine activity yaratıp sistemin sana çıkardığı hataları bulup düzeltmeye çalıştığın bi exercise bölümü bile var. Ve uyarıyorum program %99 gerçeklikle çalışıyor. Mesela aygıtlara "wr NVRAM" yapmadan kapatıp açtığında bütün konfigürasyonları uçuyor(muş) 1 saat konfigürasyon yaptıktan sonra hepsi uçunca acı bi şekilde bunu öğrendim ben laughing. Ha bir de internet yoluyla farklı iki bilgisayardaki packet tracerları birbirine bağlayıp sanal olan ama fiziksel şekilde çalışan networkler oluşturabiliyorsun. biggrin





There`s No Place Like 127.0.0.1

Yazar
tuuba


avatar
Bursa
Kayıt: 22.01.2007
21.05.2009-11:50 #60131
Başlığı tamamen okumadım ama NS2(Network Simulator) denen bişey var.O ne işe yarar peki? Arkadaşın bahsettiği şeyin onunla yapılabilitesi var mıdır? Varsa yukarıdaki programdan farkı ne?
Bilgilendirirseniz sevinirim.





Yazar
ascii


avatar
öz
Kayıt: 26.07.2006
21.05.2009-13:12 #60134
Arkdaşın istediği şeyi bir programla yapmak mümkün. Ama özellikle C de yapmak istediğini düşünüyorum. Yoksa Açık Kaynak NS2 yada OPNET kullanılarak yapılabilir. Ki OPNET bahsedilen programların hepsinden daha kapsamlı ve profesyonel bir program.

Ama arkadaş C de yapması gerektiğini söylüyor. Zaten ns2 ve opnet de C ile kendiniz eklentiler yapabiliyorsunuz (Çoğu zaman gerekiyor).





Windows is a misunderstood Unix.


Yazar
ogencay


avatar
Istanbul
banlandı
Kayıt: 02.03.2006
21.05.2009-13:42 #60136
ascii yazdi
 
Ki OPNET bahsedilen programların hepsinden daha kapsamlı ve profesyonel bir program.


http://www.googlefight.com/index.php?lang=en_GB&word1=Packet+Tracer&word2=OPNET# laughing





There`s No Place Like 127.0.0.1

Yazar
fealin


avatar

Kayıt: 30.01.2006
21.05.2009-15:17 #60138
ascii yazdi
 
Arkdaşın istediği şeyi bir programla yapmak mümkün. Ama özellikle C de yapmak istediğini düşünüyorum. Yoksa Açık Kaynak NS2 yada OPNET kullanılarak yapılabilir. Ki OPNET bahsedilen programların hepsinden daha kapsamlı ve profesyonel bir program.

Ama arkadaş C de yapması gerektiğini söylüyor. Zaten ns2 ve opnet de C ile kendiniz eklentiler yapabiliyorsunuz (Çoğu zaman gerekiyor).


Opnet de açık kaynak mı?





there is no emotion; there is peace
there is no ignorance; there is knowledge
there is no passion; there is serenity
there is no chaos; there is harmony
there is no death: there is the force
Yazar
ascii


avatar
öz
Kayıt: 26.07.2006
21.05.2009-15:37 #60140
Yok açık değil. Hatta baya bir kapalı. Fiyatıda evlere şenlik. Akademik versiyonu var ama yetersiz. Ama her başarılı programın bir açılmış versiyonu nette vardır.shame on you bende de var laughing





Windows is a misunderstood Unix.


Yazar
fealin


avatar

Kayıt: 30.01.2006
21.05.2009-15:49 #60141
peki kullandığın programın tam adını ve sürümünü yazabilir misin? special topics projemde kullanmam gerekecek





there is no emotion; there is peace
there is no ignorance; there is knowledge
there is no passion; there is serenity
there is no chaos; there is harmony
there is no death: there is the force
Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
21.05.2009-16:14 #60142
Simulasyon olayı tamamen sana bağlı olan bişey. Anladığım kadarıyla fiziksel olarak herhangi bir router a gerçek erişimden bahsetmiyoruz... Eğer doğru anladıysam modellenmesi gereken bir kaç parametre şöyle olabilir.

1. Trafik (routerlar arasındaki trafik yoğunluğu- random değişkenler üretip modellenebilir.)
2. Uzaklık ( ki bu parametre fiziksel olarak uzaklığı gösterir - routerların yerleri belirli ise bunlar manuel olarak girilmelidir.)
3. Uzaklıkla ilgili paket kayıp olasılık fonksiyonu ( bu da iletişim sisteminin fiziksel sistemin kalitesine bağlı olan bir parametre)

aklıma gelen temel paramtereler bunlar.. Trafik , uzaklık ile kayıpların artacağı açıktır. Belirli bir süre gecikmeden dolayı paket kaybı olacağı düşünülerek uygulamada bir timer kullanmak akıllıcadır. Girilen veya rasgele değişen parametrelere göre fonksiyon bir zaman çıktısı üretmelidir. Bu zaman çıktısı belirli bir değerden büyük ise paket kayıpları olduğu kabul edilir. Birden fazla paket kaybının olduğu routerlar belirlenip bir harita çıkartılabilir. Böylelikle network trafiği simule edilebilir. Trafik zamanları da belirlenerek simulasyon gerçeğe daha yakın hale getirilebilir..

Benim yorumum böyle.. Ama işi C ile nasıl yaparım diyosan.. Orası sanırım dilin özelliklerini iyi bilmeye bağlı. Bana kalırsa C# veya Java ile rahatlıkla yazabilirsin ama C ile seni zorlayabilir. peace





Yazar
tommyknocker


avatar
Istanbul
Kayıt: 09.02.2006
21.05.2009-18:22 #60146
Ömer şu lanet 45 sayfalık çeviri bitsin gelcem laughing

Yorumlar için teşekkürler.Bazıları elbette aklımda olan şeylerdi bazıları ise benim için yeni oldu.C ile yazmam gerekiyor o yüzden java olmuyor maalesef.
Algul aslında halihazırda yazdığım bir program var ve timer kullandım.Fakat sonra şunu fakettim : Timer aslında bir modülün sadece işlem süresini hesaplıyor.Yani bir router a ait tabloya bir verinin girilmesi (Virtual olarak paket iletimi bu olur diye düşünüyorum başka birşey aklıma gelmedi) paket iletiminin süresidir.Fakat işleyen süreç paketin iletilme süreci değil fonksiyonun çalışma süresidir.Bu durumda matrise girdiğim değerler (Evet sanırım vektör kulanmam gerekecek o yüzden vektör bakınıyorum artık laughing ) ne olursa olsun işlem süresi hep aynı kalacak.Çünkü fonksiyon hep aynı sürede işlemi yapacak.Ayrıca bu süre öyle kısa oluyor ki /1000 bile yapsam sonuç "0" çıkıyor.

Sonuçta bir gerçekleme yaptığım için timer ile süre hesabı olmayacak gibi geldi bana.Ama dediğim gibi bilgim kısıtlı simulasyon konusunda.Belki bilmediğim bir şekilde timer kullanılarak halledilebilir.Fakat benim aklımda olan uzaklık matrisine routerlar arası uzaklığı süre cinsinden girmek?





Those were the days guys...
Yazar
akgulozkan


avatar
istanbul
Kayıt: 12.12.2006
21.05.2009-19:07 #60149
tommyknocker yazdi
 
ne olursa olsun işlem süresi hep aynı kalacak.Çünkü fonksiyon hep aynı sürede işlemi yapacak.Ayrıca bu süre öyle kısa oluyor ki /1000 bile yapsam sonuç "0" çıkıyor.

Sonuçta bir gerçekleme yaptığım için timer ile süre hesabı olmayacak gibi geldi bana.Ama dediğim gibi bilgim kısıtlı simulasyon konusunda.Belki bilmediğim bir şekilde timer kullanılarak halledilebilir.Fakat benim aklımda olan uzaklık matrisine routerlar arası uzaklığı süre cinsinden girmek?


dediğim gibi trafik olayını random ayarlarsan süre hep aynı çıkmaz. Ayrıca routerlar üzerinde meydana gelebilecek fiziksel kayıplarda sistemin kalitesine göre random olan bi hata fonksiyonu olmalı.. Yani işin içerisine raslantı mutlaka koymalısın yoksa simulasyon olmaz. Ayrıca gerçek hayatta da raslantısal olan olaylar kayıplar ve trafik sorunu olmazsa bütün erişimlerin süresi sabit olurdu. Yani parametrelerin random olmalı. (Trafik, sistem kalitesi, çevresel faktörler gibi gibi ) Dediğim gibi timer kullanırken bu gecikmelerin hesaplanacak düzeyde olmasını sağlamak için büyük sayılarla çarp yada başka türlü döngü falan kur, (assembly de öyle yapardık biggrin) valla bilmiyorum ama timer ile olabilir gibi duruyor. wink





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb