Amaç: OPNET IT Guru-TCP Bu laboratuvar uygulaması tıkanık kontrolü algoritmalarının TCP ye (Transmission Control Protocol, İletim Kontrolü Protokolü) uygulanışını göstermek amacıyla tasarlanmıştır. Simülasyon sonuçları karşılaştırılarak algoritmaların performansları analiz edilecektir. Genel Bakış: TCP, paketlerin güvenilir ve sıralı bir şekilde hedefe teslim edileceğinin garantisini verir. Alıcı düğümün, gönderici düğümün gönderdiği verinin miktarını sınırlayabilmesine imkan veren akış kontrolü mekanizması TCP de bulunmaktadır. Bu mekanizmanın ana fikri, göndericinin hızını kontrol ederek ağı aşırı yüklemelerden korumaktır. Her bir veri kaynağı için TCP tıkanıklık kontrolü şu şekilde işler: ağdaki kullanılabilir kapasite belirlenir ve böylece kaç adet paketin güvenli bir şekilde iletilebileceği bilinir. Ardından tıkanıklık penceresi adı verilen bir durum değişkeni her bir bağlantı için tanımlanır. Tıkanıklık penceresi, verilen herhangi bir zamanda ne kadar verinin iletilebileceğini sınırlayan bir değişkendir. Ağdaki tıkanıklık arttığı zaman tıkanıklık penceresi küçültülür, tıkanıklık azaldığı zaman büyütülür. Zaman aşımları (timeout) TCP tarafından bir tıkanıklık göstergesi olarak görülür. Her zaman aşımında veri kaynağı tıkanıklık penceresini bir önceki değerin yarısı olacak şekilde günceller. Tıkanıklık penceresi boyutunun tek bir paket boyutunun (Maximum segment size, MSS) altına düşmesine izin verilmez. Veri kaynağı her zaman tıkanıklık penceresi boyutundaki veriyi başarılı bir şekilde hedefe iletir. Bununla birlikte, tıkanıklık penceresinin boyutunu arttırmak için TCP yavaş başlangıç (slow start) adı verilen bir mekanizma kullanır. Bu mekanizmaya göre tıkanıklık penceresi boyutu doğrusal değil hızlı bir şekilde üssel olarak arttırılır. Bunun sonucu olarak hızlı tekrar iletim (fast retransmit) ve hızlı düzelme (fast recovery) işlemleri gerçekleşebilir. Hızlı tekrar iletimde kaybolmuş, bozulmuş ya da öldürülmüş bir paketin zaman aşımı süresinden önce tekrar iletilmesi söz konusudur. Yöntem: OPNET IT Guru yu başlatınız. File New seçiniz Project OK seçiniz Projeyi aşağıdaki gibi isimlendiriniz <belirleyici_bir_isim> _TCP Senaryo adı: NO Drop OK e tıklayınız. Başlangıç sihirbazı açılacaktır. Initial Topology Create Empty Scenario Next Network Scale listesinden Choose From Maps i seçiniz. Next e tıklayınız. Map listesinden USA i seçiniz. Bu adımdan sonra Next e iki kere tıklayıp son olarak OK e tıklayınız. 1
Ağı Yaratma ve Yapılandırma 1. Nesne paleti açık değilse açınız. internet_toolbox maddesinin düşey menüde seçili olduğuna emin olunuz. 2. Application Config, Profile Config, ip32_cloud ve iki adet subnet i çalışma alanına ekleyiniz. ip32_cloud, 32 seri hat arayüzü içeren IP trafiğini modelleyen bir ağ düğümüdür. İstenilen veri hızına ayarlanabilir ve ip32_cloud un herhangi bir girişine gelen paketi IP adresine göre istenilen çıkışa yönlendirir. Gelen paketi iletme süresini belirlemek için Packet Latency özelliği kullanılır. 3. Nesne paletini kapatıp eklenilen düğümleri aşağıdaki gibi isimlendiriniz. 4. Projenizi kaydediniz. Uygulamaları Yapılandırma Applications düğümüne sağ-klik yapınız. Edit Attributes menüsünden Application Definitions özelliğini genişletiniz. rows değerini 1 e ayarlayınız. Yeni satırı genişletip FTP_Application şeklinde adlandırınız. Description özelliğini genişletip FTP özelliğini aşağıdaki gibi ayarlayınız. Bu adımdan sonra Next e iki kere tıklayıp projenizi kaydediniz. 2
Profilleri Yapılandırma Profiles düğümüne sağ-klik yapınız. Edit Attributes menüsünden Profile Configuration özelliğini genişletiniz. rows değerini 1 e ayarlayınız. row 0 ın özelliklerini aşağıdaki gibi ayarlayıp OK e tıklayınız. West Subnet i Yapılandırma West düğümüne çift-klik yapınız. Yeni ve boş bir çalışma alanı göreceksiniz. Nesne paletini açınız. internet_toolbox maddesinin düşey menüde seçili olduğuna emin olunuz. Bir adet ethernet_server, bir adet ethernet4_slip8_gtwy router ı çalışma alanına ekleyip çift yönlü 100_BaseT bağlantı ile birbirine bağlayınız. Nesneleri aşağıdaki gibi adlandırınız. Server_West düğümüne sağ-klik yapınız. Edit Attributes menüsünden Edit Application: Supported Services rows değerini 1 e ayarlayınız. Name özelliğine FTP_Application değerini verip OK e tıklayınız. Server Address özelliğinin değerini Server_West olarak ayarlayınız. TCP Parameters özelliğini genişletiniz. Fast Retransmit ve Fast Recovery özelliklerinin seçimlerini kaldırınız. OK e tıklayıp projenizi kaydediniz. Go to next higher level butonuna tıklayınız. 3
East Subnet i Yapılandırma East düğümüne çift-klik yapınız. Yeni ve boş bir çalışma alanı göreceksiniz. Nesne paletini açınız. internet_toolbox maddesinin düşey menüde seçili olduğuna emin olunuz. Bir adet ethernet_wkstn, bir adet ethernet4_slip8_gtwy router ı çalışma alanına ekleyip çift yönlü 100_BaseT bağlantı ile birbirine bağlayınız. Nesneleri aşağıdaki gibi adlandırınız. Client_East düğümüne sağ-klik yapınız. Edit Attributes menüsünden Edit Application: Supported Profiles rows değerini 1 e ayarlayınız. Profile Name özelliğine FTP_Profile değerini veriniz. Client Address özelliğinin değerini Client _East olarak ayarlayınız. Application: Destination Preferences rows değerini 1 e ayarlayınız Symbolic Name değerini FTP Server olarak ayarlayınız. Actual Name rows değerini 1 e ayarlayınız Name sütununa Server_West değerini veriniz. OK e 3 kere tıklayıp projenizi kaydediniz. Go to next higher level butonuna tıklayınız. Subnet leri IP Cloud a Bağlama Nesne paletini açınız. PPP_DS3 çift yönlü bağlantıyı kullanarak East subnet ini IP Cloud a, West subnet ini de IP Cloud a bağlayınız. Gelen menüde hangi birimin bağlanacağı sorulduğunda routers ın seçili olduğuna emin olunuz. Nesne paletini kapatınız. 4
İstatistiklerin Seçimi West subnet indeki Server_West e sağ-klik yapınız. Choose Individual Statistics i seçiniz Choose Results menüsünden TCP Connection Congestion Window Size (bytes) ve Sent Segment Sequence Number istatistiklerini seçiniz. Congestion Window Size (bytes) a sağ-klik yapınız Change Collection Mode Advanced Dikey menüdeki tüm özellikleri aşağıda görüldüğü üzere ayarlayınız OK e tıklayınız. Sent Segment Sequence Number istatistiğine sağ-klik yapınız Change Collection Mode u seçiniz İletişim kutusundan Advanced seçeneğiniz işaretleyiniz Düşey menüde tüm değerleri üstteki şekilde görüldüğü üzere ayarlayınız. OK e 2 kere tıklayıp projenizi kaydediniz. Go to next higher level butonuna tıklayınız. Simülasyonu Yapılandırmak Simulation Configure Discrete Event Simulation menüsünden ya da Configure/Run Simulation butonunu kullanarak simülasyon çalıştırma penceresini açınız. Süreyi (duration) 10 dk ya ayarlayınız. OK e tıklayıp projenizi kaydediniz. Senaryoyu Tekrarlama Simülasyonda, paketlerin asla kaybolmadığı mükemmel bir ağ tasarlanmıştır. Ayrıca hızlı tekrar iletim (fast retransmit) ve hızlı düzelme (fast recovery) algoritmalarının çalışmaları da engellenmiştir. Paket kaybolması ve bu algoritmaların etkilerinin görülmesi için iki senaryo daha eklenecektir. Scenarios Duplicate Scenario seçiniz. Yeni senaryonun adını Drop_NoFast olarak belirleyiniz. OK e basıp kapatınız. Yeni senaryoda IP Cloud a sağ-klik yapınız. Edit Attributes menüsünden Packet Discard Ratio özelliğine 0.05% değerini veriniz. 5
OK e tıklayıp projenizi kaydediniz. Drop_NoFast senaryosunun içindeyken Scenarios Duplicate Scenario seçiniz. İkinci senaryonun adını Drop_Fast olarak belirleyiniz. Drop_Fast senaryosunda West subnetinin altındaki Server_West e sağ-klik yapınız. Edit Attributes menüsünden TCP Parameters özelliğini genişletiniz. Fast Retransmit özelliğini seçili hale getiriniz (Enable). Fast Recovery özelliğine ise Reno değerini veriniz. OK e tıklayıp projenizi kaydediniz. Simülasyonu Çalıştırma Üç senaryoyu da aynı anda çalıştırmak için: Scenarios menüsünden Manage Scenarios u seçiniz. Senaryoları aşağıdaki şekilde görüldüğü gibi ayarlayınız. Sonuçları Görüntüleme Sonuçları görüntüleyip karşılaştırmak için: Drop_NoFast senaryosuna geçiniz. Results menüsünden View Results ı seçiniz. Object Statistics özelliğini genişletip Congestion Window Size (bytes) ve Sent Segment Sequence Number sonuçlarını seçiniz. 6
Show a tıklayınız. Sonuç aşağıdaki şekle benzemelidir. Grafikteki detayları yakından gözlemlemek(zoom) için farenizi kullanarak grafiğin üstüne bir dikdörtgen çiziniz. Sonuç aşağıdaki şekle benzemelidir. 7
Segment Sequence Number, tıkanıklık penceresindeki her düşüşte neredeyse aynı seviyede kalmıştır. View Results menüsünü kapatıp Results menüsünden Compare Results seçiniz. Object Statistics özelliğini genişletiniz ve Sent Segment Sequence Number sonucunu seçiniz. Show a tıklayınız. Yakından gözlem (zoom) sonucu aşağıdaki şekle benzemelidir. 8
Sorular 1. Segment Sequence Number, tıkanıklık penceresindeki her düşüşte neden aynı seviyede kalmıştır? 2. Senaryoların Segment Sequence Number değerlerini karşılaştıran grafiğe bakınız. Drop_NoFast senaryosu neden en yavaş büyümeye sahiptir? 3. Drop_Fast senaryosunuz tekrarlayınız. Yeni senaryonun adı Q4_Drop_Fast_Buffer olsun. Yeni senaryoda Client_East düğümünün Receiver Buffer (bytes) özelliği 65535 olsun. Server_West in Congestion Window Size (bytes) parametresinin bu değişimden nasıl etkilendiğini grafikle gösteriniz. 9