CGI NEDİR?
Bu projenin amacı günümüz telekomünikasyon yapısını
ve ihtiyaçlar doğrultusunda bu yapının
gelişmesini anlatmaktır. Bu yeni ihtiyaçlara cevap verebilecek yapı olarak
B-ISDN kapsamında ATM teknolojisi ele alınmıştır. ATM protokolü kendine has
katman yapısı ve anahtarlama teknolojisini içermektedir. ATM'de veri
iletişiminde hücre adında özel bir yapıya sahip paketler kullanılmaktadır. ATM,
kendine has topolojisinin yanında varolan sistemlerle de uyumludur.
Bilgisayar teknolojisinin ve dolayısıyla bilgisayar
ağlarının büyük bir hızla gelişmesi sonucu, bilgisayarların kullanım amaçları
ve üstlendikleri hizmetler eskisine oranla çok daha geniş bir alana
yayılmıştır. Bu gelişime paralel olarak da yeni kullanım alanları doğmuş ancak
bir süre sonra varolan yapılar bu yeni taleplere karşılık veremez hale
gelmişlerdir. Şu anda ihtiyaç duyulan
pek çok servis (ses, görüntü, klasik veri iletimi, interaktif servisler vb.)
yüksek hızlarda iletim kapasitesi gerektirmektedir.
Veri iletişiminde ortaya çıkan ilerlemeler (VLSI-Very Large
Scale Integration, fiber optik ve anahtarlama teknolojilerindeki gelişmeler) bu
ihtiyaçlara cevap verebilecek B-ISDN yapısının oluşmasına imkan sağlamıştır.
ITU-T (International
Telecommunication Union), B-ISDN için
transfer modu olarak ATM'i önermiştir. ATM ve B-ISDN teknolojisi aynı zamanda
varolan sistemlere de adapte edilebilir olması açısından da avantajlıdır.
3.-GÜNÜMÜZ
TELEKOMUNİKASYON ALTYAPISI ve B-ISDN
Bugünün telekomunikasyon ağlarının
herbiri spesifik hizmetler vermek üzere tasarlanmıştır. Bunun anlamı, herbir
telekomunikasyon hizmeti için en az bir ağın olması ve bu ağların hedeflediği
spesifik servisi sağlamak amacıyla tasarlanıp çalıştırıldıklarından dolayı,
çoğunlukla başka amaçlar için kullanılmaya uygun olmamalarıdır. Örneğin, X.25
veri iletişimi ağları uçtan uca gecikme ve kayma değerlerinin kontrol
edilememesi nedeniyle, gerçek zamanlı ses iletişimi için uygun değildirler.
Ayrıca, bir ağ içinde, belli zamanlarda boş duran birtakım kaynaklar da başka
amaçlar için kullanılamamaktadır. (Örneğin, varolan telefon ağlarının TV yayını
için uygun olmamaları sebebiyle günün geç saatlerinde ses iletim ihtiyacının
düşük olmasına rağmen, kablolu TV yayını için kullanılamaması.)
Sonuçta birbirinden bağımsız ve farklı birçok iletişim ağı
ortaya çıkmış ve bu durum, ağların kullanım esnekliğini ve etkinliğini
düşürmüştür. Buna paralel olarak da bu tür ağların tasarım, bakım, üretim
maliyetleri de yükselmiştir. Bu ağlara örnek verecek olursak :
· Düşük hızlarda (300 kb/sn) bilgi transferi sağlayan teleks
ağları,
· POTS (Plain Old Telepnone Service) adıyla da bilinen ve
PSTN (Public Switched Telephone Network -
Anahtarlamalı Telefon Ağı ) üzerinden sağlanan iki yönlü ses iletişimi
için tasarlanan ağlar,
· X.25 ve benzeri PSDN
(Public Switched Data Networks ) paket anahtarlamalı veri ağları,
· CATV (Community Antenna
TV), kablolu televizyon ağları,
· LAN (Local Area Networks
), yerel iletişim ağları
Yukarıda
örnek verdiğimiz telekomunikasyon ağları ve varolan ihtiyaçlar gözönüne
alındığında, bu altyapının yetersiz kalacağı açıktır. Özellikle gelecekte
kullanılması düşünülen video-telefon, video-konferans, video-kütüphane ve
benzeri servisleri düşünürsek, bu tür ihtiyaçları karşılayacak iletişim
ağlarının servis türünden bağımsız, genişbantlı tek bir ağ olması gerektiği
ortaya çıkmaktadır.
Bu
alandaki çalışmalar seksenli yılların başlarında başlatılmış ve ISDN
(Integrated Switched Digital Networks) olarak adlandırılmıştır (Şu anda N-ISDN
Narrowband ISDN olarak anılmaktadır). Bu ağların bant genişliğinin
arttırılmasıyla hertürlü ses, veri, hareketli video ve yüksek çözünürlükte TV
iletiminin entegre edilmesi sağlanmış ve gelişen yapı B-ISDN (Broadband ISDN)
olarak adlandırılmıştır.
B-ISDN
yapısını olanaklı kılan faktörler, fiber-optik teknolojisinin gelişerek
iletişim hatlarında geniş çapta kullanılır olması ve yarı iletken
teknolojisinde sağlanan ilerlemeler olarak gösterilebilir. Böylelikle, yeni
geliştirilen yapıda, iletim ortamının daha güvenilir olması ve hata kontrolunun
ağ içinde yapılması gerekliliğinin ortadan kalkması ile daha etkin ve maliyeti
düşük yeni bir aktarım biçimi kullanılabilmiştir. İşte bu yeni teknoloji ATM
(Asynchronous Transfer Mode) olarak adlandırılmaktadır.
ITU-T (Eski adıyla CCITT) tarafından da yapılan
araştırmalar sonucu 1988 yılında ATM’ in B-ISDN için en uygun aktarım protokolu
oldugu belirlenmiştir.
ITU-T tarafından B-ISDN yapısı ile
verilmesi düşünülen hizmetler şöyle sıralanabilir:
·
HDTV(High Definition TV) Yüksek çözünürlüklü
TV servisleri,
·
Videokonferans servisleri,
·
İstek üzerine video (Video on Demand)
servisleri,
·
Karşılıklı iletişime dayalı (interaktif)
servisler,
·
Mesaj servisleri,
·
Veri transfer servisleri.
4.-ATM NEDİR ?
Her türden veriyi yüksek hızlarda taşıyabilen anahtarlanmış, hücre tabanlı
aktarım protokolüdür. ATM her türden network trafiğini (veri, ses video ve TV
sinyalleri) 53-byte'lık hücreler halinde
iletir.
4.1-ATM
Anahtarlamanın Tarihçesi
ATM’in başlangıcından bu yana gelişimi Şekil-1’de
görülmektedir :
Şekil-1
4.2-Transfer Modları
Transfer
modu, bir telekomunikasyon ağında kullanılan iletim (transmission), çoklama
(multiplexing) ve anahtarlama (switching) tekniklerinin toplamına verilen
isimdir. Network dünyasında transfer modu konusunda temel olarak iki kutup
bulunmaktadır. Bunlar devre anahtarlama ve paket anahtarlamadır.
Devre ve paket
anahtarlama belirtildiği gibi iki uç noktadır ve birbirlerine karşı avantaj ve
dezavantajlara sahiptirler. Zamanla bu iki zıt yöntemin de diğer yöntemin
avantajlarını kullanan varyasyonları ortaya çıkmıştır. Aşağıda bu metodların
başlıca açıklamaları bulunmaktadır.
4.2.1-Devre Anahtarlama
(Circuit Switching):
Bu transfer modu özellikle telefon
ağlarında kullanılır. N-ISDN 'de de bu yöntem kullanılmaktadır.
Devre anahtarlamanın temeli, bir iletim sırasında sadece
ilgili bağlantı tarafından kullanılabilen adanmış sabit kapasiteli bir kanal
oluşturmaktır.
Belirli zaman aralıklarında (125 µs gibi) sabit
uzunlukta bit kümeleri gönderilir (8 bit, 1000 bit gibi). Bu kümelerin her birine
'time slot' denir ve bunlar birleştirilerek çerçeveleri (frame) oluştururlar. (Çerçeveler
de belirli aralıklarda tekrarlanır. Bu çerçevelerin içindeki her time slot,
devam ettiği sürece belirli bir bağlantıya adanır. Ancak bağlantı
kapatıldığında ilgili slot başka bir uygulamanın kullanımına sunulabilir.) Pür
hat anahtarlamalı sistemlerde her time slot'un barındırabileceği bit miktarı
aynıdır ve sabittir. Yani her servis için sabit bir bit hızı vardır.
Devre anahtarlamalı sistemlerde bir hat, bağlantı boyunca
bir uygulamaya adandığından dolayı
sistemde oluşacak gecikmeler ancak iletim hattındaki yayılma gecikmesine
bağlıdır.
4.2.2-Multirate Circuit Switching:
Devre anahtarlamasının kısıtlamalarını ortadan kaldırmak
için tasarlanan bu yöntemde, bir bağlantı için birden fazla time slot
kullanılabilmektedir. Ancak birden fazla time slot kullanılırsa bunların
senkronize edilmesi zorunluluğu ortaya çıkar.
Başka bir problem de 'basic rate'in seçilmesindedir. Eğer
bu değer büyük seçilirse (örneğin 2 Mbit/s) küçük hat genişliği gerektiren
servisler (ses 64 kbit/s) gereksiz yere kaynak tüketmiş olacaklardır. Bu değer
küçük seçilirse de (1 kbit/s) büyük bant genişliği gerektiren servisler (HDTV
144 Mbit/s) için çok fazla miktarda kanalın kontrol edilmesi gerekecektir; bu
da işleri çok karmaşık hale getirir. Bu soruna üretilen çözüm ise bir çerçeveyi
farklı bit oranları olan slotlara bölmektir.
Böyle bir sistemde her farklı time slot için özel bir tür
anahtar kullanılmalıdır (farklı bit rate'lerden dolayı). Abonenin gelen/giden
bilgisi anahtarlara/anahtarlardan yönlendirilmeden önce multiplex/demultiplex
işleminden geçirilmelidirler (Bu işlem farklı bit rate'deki kanalların ilgili
anahtara yönlendirilmesi için yapılır).
Farklı bit rate'ler kullanılabilmesine karşın bunların
sabit değerler olmasından dolayı, servislerin ihtiyaçlarında oluşacak
değişikliklere karşı esnek olması beklenemez (Bant genişliği ihtiyacının
artması, sıkıştırma teknolojisindeki gelişmelerden dolayı ihtiyacın azalması
vb.).
Bu sistemler doğal olarak hat anahtarlamanın
dezavantajlarını da içerirler (Kaynakların ihtiyaç dışında meşgul edilmesi
vb.).
4.2.3-Paket Anahtarlama (Packet Switching):
Bu transfer modunda kullanıcının bilgileri paketler halinde taşınır. Bu
paketlerde kullanıcının bilgisine ek olarak başlık (header) denen ve
yönlendirme (routing), hata kontrol ve akış kontrol için kullanılan bilgileri
içeren saha da bulunur.
Eski bağlantıların güvenliği düşük olduğundan dolayı bu tip
sistemlerde ileri düzeyde hata kontrolü yapılır (İçinden geçilen her node'da
paket içeriği, hatalara karşı kontrol edilir…). Her node ‘da hatalı paketler
için tekrar gönderim isteği yapılır.(ARQ -Automatic Repeat Request)
Paket boyutları değişkendir. Dolayısıyla kompleks akış
kontrolü gerektirirler. Ancak iletişim hızı düşük olduğundan bu pek sorun
yaratmamaktadır.Protokollerin karmaşıklığından ve tekrar gönderme işleminden
dolayı yüksek hız gerektiren servislerde ve gerçek zamanlı uygulamalarda pek
kullanılmazlar.
4.2.4-Frame Relaying:
Frame Relaying,
iletim hatlarının güvenilirliği nedeniyle, ağ içinde paket anahtarlamalı
sistemlere (X.25) oranla daha az fonksiyonelliğe sahiptir (Daha kısıtlı hata
kontrol ve düzeltme yapılır). Bu da ağ içi anahtarlama noktalarında daha hızlı
bilgi işleme imkanı sağlar.
Paketlerin tekrar gönderimi ancak uç noktalar arasında
yapılır (yani aradaki node'lar paketlerin tekrar gönderimini istemez). Buna
karşın node'larda paketler hala hatalara karşı kontrol edilirler. Bunun nedeni
hatalı paketlerin iletimine devam edilmesinin bir anlamının olmamasıdır.
4.2.5-Cell Relaying(Fast
Packet Switching-ATM):
Fast Packet Switching
(ATM), birçok varyasyonu içeren bir kavramdır. Ancak bunların temel
karakteristiği aynıdır: Ağda minimum fonksiyonellikle paket anahtarlama.
Gönderici ve alıcı arasında bir senkronizasyon yoktur.
Senkronizasyon, gerektiğinde boş paketlerin eklenip çıkarılmasıyla
sağlanabilir.
ATM'de ağ içinde CRC ya da ARQ türünden hata kontrol
fonksiyonları yoktur. Hat anahtarlamada olduğu gibi hataların düzeltilmesi uç
noktalardaki protokollere bırakılmıştır.
ATM ‘in Frame Relay’den en önemli farkı, ATM’de verilerin
sabit ve küçük boyutlu paketler (hücreler) halinde iletilmesidir. Frame Relay
de ise paket boyu değişkendir.
5.-ATM HÜCRE YAPISI
ATM’de bilgi aktarımı için kullanılan temel birim 53
byte'lık sabit uzunlukta olan ve hücre (cell) olarak adlandırılan özel bir tür
pakettir. Hücrelerin ilk 5 byte'lık kısmı başlık (header) olarak adlandırılır
ve hücrenin ağ içinde ilerleyebilmesi için gerekli olan temel bilgileri taşır.
(Paket anahtarlama yönteminde bulunan ve ileri düzeyde fonksiyonellik sağlayan
alanlar hücre başlıklarında olabildiğince azaltılmıştır). Başlığın
fonksiyonelliğinin düşük düzeyde tutulması da ATM anahtarlarına yüksek hızda
işlem yapma imkanı verir. Geriye kalan 48 byte ise iletilecek olan bilgiyi
içerir.
5.1- ATM’deki Hücre Tipleri
Unassigned Cells:
Trafik olmadığı durumda, ATM tabakası
tarafından gönderilen boş paketlerdir. Bantgenişliğini doldurmak veya
senkronizasyon amaçlı kullanılırlar. Aynı zamanda IDLE hücreleri vardır. Bu
hücrelerin özelliği fiziksel tabaka tarafından yaratılmalarıdır. ATM tabakasına
çıkmazlar, fiziksel katmanlar arasındaki senkronizasyonda kullanılırlar.
Meta-Signaling
Cells: Ağ ile bir oturum kurmakta ve
oturum servislerini saptamada kullanılırlar.
General Broadcast
Cells: UNI’deki tüm istasyonlara
gönderilen paketleri belirlerler.
Point-to-Point
Signaling Cells: ATM tabakasında noktadan
noktaya bağlantı sağlayan UNI veya NNI arayüzü hücrelerini belirlerler.
F4 ve F5
Hüceleri: Sırasıyla VP ve VC bakım
hücrelerini belirlerler.
Resource
Management Cells: VC üzerinde hızlı kaynak
yönetimi için ayrılmışlardır.
ILMI (Interim
Local Management Interface) Cells: ATM
kullanıcı aygıtlarının durumlarını ve UNI’deki VP ile VC konfigürasyonu ile
ilgili bilgileri taşırlar.
5.2-Neden Sabit Uzunluk ?
Bir sistemde sabit uzunlukta hücreler kullanıldığında
etkinlik, gönderilecek bilginin uzunluğuna göre değişir. Eğer gönderilecek
bilgi küçük miktarlardaysa ve hücrelere bölündüğünde son hücrede büyük oranda
(30-40 byte) boşluk kalıyorsa bu iletişimdeki oranı pek yüksek olmaz. Ancak
gönderilecek bilgi 48 byte'ın tam katıysa yani hücrelerin hepsi tamamen doluysa
maximum etkinliğe (%90.5) ulaşılabilir. (Maximum etkinliğin %90.5 olmasının
sebebi gönderilen 53 bytelik her hücrenin 5 byte'ının başlığa ayrılmış
olmasıdır. 48/53=0.905...)
Değişken uzunlukta hücreler kullanılınca sistemde neredeyse
%100 ’lük etkinliğe ulaşılır. Ancak, farklı uzunluktaki paketlerin kuyruklama
için buffer'da etkin olarak saklanması oldukça zordur ve komplike algoritmalar
gerektirir. Bu kompleks buffer işlemleri de yüksek hız gerektirir. Bu tür
pratik nedenlerden dolayı degişken uzunlukta hücre kullanımı engellenmiştir.
Sabit uzunluktaki hücrelerde kalan boşluklar sistem
etkinliğine olumsuz yönde etki eder, ancak B-ISDN'de sunulacak servislerin
zaten yüksek miktarda bilgi iletimine ihtiyaç duyması bu olumsuzluğu ortadan
kaldırır.
5.3-Neden 53 Byte ?
Hücre boyunun seçilmesinde farklı faktörler rol oynamıştır.
Uzun bilgi alanları iletimin etkinliğini artırır. Çünkü her başlıkla beraber
gönderilen bilginin miktarı artar ve böylece başlıklardan kaynaklanan
overhead'ın oranı azalır.Ancak bilgi alanının boyu arttıkça paketleme
sırasındaki gecikme de (packetization delay) artar. Uzun hücreler
kullanıldığında ağ içindeki gecikmenin de belirli limitleri aşması daha kolay
olur (Örneğin telefon görüşmeleri için bu gecikme sınırı 25 ms'dir). Bu da ses
iletiminde yankı önleyicilerin kullanılmasını zorunlu kılar. Ayrıca uzun
hücreler anahtarlarda kullanılan geçici depolama alanlarının büyük olmasını
gerektirir. (Hücre kayıplarını önlemek için kuyruklar hücre boyutundan bağımsız
olarak belli miktarda hücreyi saklayabilecek kapasitede olmalıdırlar)
Bütün bu etkenler göz önüne alınarak hücredeki bilgi
sahasının boyunun 32 ya da 64 byte civarında olması öngörülmüştür (Avrupa ses
iletimindeki kolaylığından dolayı 32, Amerika ve Japonya ise etkinliğinden
dolayı 64 byte'lık boyutlarda ısrar etmişlerdir). Sonuçta 48 byte bilgi + 5
byte başlık olmak üzere 53 byte hücre boyutu olarak kabul edilmiştir.
6.-ATM KATMANLARI
ATM ‘in üzerinde kurulduğu fiziksel tabaka yapısı
SONET/SDH, DS3 veya FDDI olabilir. ATM, fiziksel ortamdan bağımsızdır ancak geniş
tabanlı genel taşıyıcı olarak, eş zamanlı bir iletim yapısı olan SONET (Synchronous Optical
Network) tercih edilir. SONET Bellcore tarafından üretilmiş ve ANSI (American
National Standards Institue) tarafından standartlaştırılmıştır. SONET, fiber
kablo üzerinde yüksek hızda dijital sinyal iletimini sağlamak için
tasarlanmıştır. Verileri 51.84 Mbps hızda taşımak için standart çoklama
biçimini kullanır. Ayrıca optik sinyal standardını, farklı kaynaklardan
karşılıklı bağlantı için kullanır. Geniş işlem yapma, yönetim ve bakım
özelllikleri vardır. Esnek yapısıyla, gelecekte varolacak yeni teknolojilere
ayak uydurabilir.
Fiziksel tabakanın
üzerinde ise ATM ve AAL (ATM Adaptation Layer) olmak üzere iki tabaka bulunur.
AAL, ATM ile diğer katmanlar arasında arayüz görevini yürütür. AAL, CS
(Convergence Sublayer) ve SAR (Segmentation and Reassembly Sublayer) den
oluşur. SAR farklı uzunluk ve formattaki PDU (Protocol Data Unit) ‘ları (yani
iletilecek veri paketlerini) 48 okteklik (sekizlik) parçalara ayırır. CS’nin
fonksiyonları AAL tarafından işlenen trafiğin tipine göre değişir.
Gönderici taraftaki
ATM tabakasında, SAR’dan gelen 48 sekizlik bilgiye 5 byte’lık hücre başlığını
ekler. Ağ içindeki anahtarlardaki ATM tabakaları VPI ve VCI bilgilerini
kullanarak yönlendirme işlemlerini gerçekleştirir. Alıcıdaki ATM tabakası 5
byte’lık başlık bilgisini çıkarır ve AAL’ e iletir.
6.1- AAL Katmanı Tarafından Desteklenen Trafik
Sınıfları
ATM AAL katmanı, değişik trafik
tiplerini desteklemek için 5 tane değişik trafik sınıfına sahiptir. Her trafik
tipi için kaynak ve varış noktaları arasında herhangi bir zaman ilişkisi
olmasının gerekip gerekmediği, bit hızının karakteristiği ve bağlantı uyumlu
olup olmadığı, trafik tipleri için birbirinden farklıdır.
6.2 -AAL
Tipleri
AAL, trafik tiplerini desteklemek
amacıyla AAL farklı protokolllere sahiptir.
6.2.1-AAL-1
A Sınıf trafiği destekler ve PDU yapısı 48
sekizlikten oluşur. Payload(Kullanıcı Verisi), 46 veya 47 sekizlik
olabilmektedir.
SNP (Sequence Number Protection), SN üzerinde hata kontrolü yapar. SNP sahası,
ancak 1 bitlik hataları düzeltebilmektedir. Payload ise CSI (Convergence
Sublayer Indication) , işaretci sahanın kullanıp kullanılmayacağını gösterir.
CSI’nın sıfır olması işaretçinin kullanılmadığını ve kullanıcı verisinin 47
sekizlik olduğunu gösterir. İşaretçi, verilerin hücre içinde yerleşimini
tutmaktadır.
6.2.2- AAL –2
Sınıf-B
trafiğini destekleyen protokoldür. Başlık kısmında SN (Sequence Number) ve IT (Information Type) bulunur.
IT sahası, BOM (Beginning Of Message), COM (Continuation of Message) ve EOM
(End Of Message) sahalarından oluşur. Kuyruk kısmında, LI (Length Indicator)
sahası Payload sahasındaki sekizlik sayısını tutar, CRC’de hata kontrolünde
kullanılır.
6.2.3 - AAL-3/4
İlk olarak,
bağlantı uyumlu VBR trafiğini destekleyen AAL-3 ve bağlantısız VBR trafiği için
AAL-4 protokolleri tanımlandı. Sonra bu iki tip birleştirilerek, AAL-3/4
protokolü tanımlandı.
SN,
IT, LI ve CRC sahaları AAL-2 protokolünde kullanılan yapıyla aynıdır, ama
AAL-3/4 ‘te bu sahaların uzunlukları bellidir. MID (Message IDentification)
sahası, belli bir bağlantıdan gelen trafiğin birleştirilmesinde kullanılır.
6.2.4- AAL-5
Forum
tarafından yüksek hızda, bağlantı
uyumlu servis kullanıcılarına hizmet veren, az overhead’e sahip, hata bulma
oranı yüksek olan protokoldur. Frame Relay trafiğinde uygundur.
6.2.5-AAL-6
ATM-Forum
tarafından ortaya çıkarılan, MPEG kodlu video için tanımlanacaktır.
Şekil-2 :
B-ISDN protokol katmanları ve üstlendikleri görevler görünmektedir.
7.-ATM’DE BAĞLANTI YAPISI
ATM’de mantıksal bağlantılar, sanal
kanal bağlantıları (VCC-Virtual Channel Connection) olarak adlandırılır. VCC,
B-ISDN ‘in en temel birimidir. Bir VCC , iki son kullanıcı arasında ağ
aracılığıyla kurulur. Değişken oranlarda (variable rate), sabit boyutlu
hücreler full-duplex (çift yönlü) akışla bağlantı üzerinden taşınır. VCC ‘ler
aynı zamanda kullanıcı-network exchange (kontrol sinyalleme) ve network-network
exchange (network yönetimi ve yönlendirme ) için kullanılır. Şekil-3’te sanal bir ATM
bağlantısının kesiti gorulmektedir
Şekil-3
Sanal yol (VP-Virtual Path)
kavramı, yüksek hızlı ağlarda kontrol harcama-larının yüzdesinin bütün network
harcamaları içinde yüksek yüzdelere artması sonucu geliştirilmiştir. Sanal yol
tekniği, network içinde ortak yolları paylaşan bağlantıları gruplayarak
(VPC-Virtual Path Connection) kontrol masraflarını azaltmaya yarar. Network
yönetim işlemleri bundan sonra çok sayıdaki bireysel kanallar yerine az
sayıdaki bağlantı gruplarına uygulanabilir.
VPC
’lerin kulanımından doğan avantajlar :
Þ Basitleştirilmiş network mimarisi (Ağ ortamındaki
fonksiyonların VPC ve VCC kavramlarına göre sınıflandırılmalarından dolayı
işlemler daha basitleşir),
Þ Artırılmış network performansı ve güvenilirlik (Ağ daha az
iletişim birimiyle uğraşır),
Þ Azaltılmış işlem ve kısa bağlantı kurulma zamanı (Bağlantı
işlemlerinin büyük kısmı VPC ilk kez oluşturulurken yapılır. Var olan bir
VPC’ye VCC’ler eklemek çok az bir işlem gerektirir),
Þ Geliştirilmiş ağ servisleri. [2]
ATM'de veri bağlantıları VCI ve VPI ile tanımlandıktan
sonra, verilen herhangi bir yöne giden sanal yollar çoklanarak fiziksel hatta
verilir. Sanal kanal bağlantıları son kullanıcılar arasında anlamlıdır. Fakat
bu bağlantı tanımlayıcıları, hücreler ATM ağı içinde ilerlerken değişebilir. Bu
yüzden belli bir VCI değerinin kullanıcı açısından bir önemi yoktur. Sorumluluk
ATM ağındadır.
VC ve VP ile oluşan bağlantı yapısı
şöyledir: İki kullanıcı için kontrol işlemi tek tek bütün sanal kanallar yerine
sadece VP bazında yapılabilir. Yani, bütün kanallar yerine sadece bir yol
(path) incelenir.
İki nokta arasında
sonuçta oluşan bağlantının tümü Şekil-4 ‘te ifade edimiştir.
Şekil-4
8.-ATM ANAHTARLAMA
ATM anahtarlamasındaki temel fikir
mantıksal bir kanaldan anahtara giren bilginin yol üzerindeki bir sonraki
noktaya iletilmesi için başka bir ATM kanalına yönlendirilmesidir. Genelde bir
anahtardan çıkan çok sayıda mantıksal ATM kanalı olmasından dolayı, yönlendirmeden
önce ilgili çıkış kanalı seçilmelidir. Bu seçim, giriş portunun numarasına ve
hücrenin VPI, VCI değerlerine bağlı olarak yapılır.
8.1 -ATM Anahtarları
Anahtara ulaşan her hücrenin giriş port numarasına,VPI ve
VCI değerlerine bakılır. Ardından, bu değerlerden yararlanılarak yönlendirme
tablosundan hücrenin çıkış portu ve yeni VPI, VCI değerleri bulunur. Yeni
bulunan VPI ve VCI değerleri; hücre, anahtardan çıkmadan önce başlıktaki eski
değerlerin yerlerine yerleştirilir. Sonunda da hücre, tablodan bulunan çıkış
portuna yönlendirilir.
Bir anahtara
genelde birden çok porttan hücre girdiğinden, bu hücrelerin çıkış portlarının
çakışması olasıdır. Böyle bir durumda ilgili çıkış portu boşalıncaya kadar kimi
hücreler geçici olarak bir tampon alanda saklanmak zorundadırlar. Bu hücreleri
sıraya sokma işlemi kuyruklama olarak adlandırılır.
ATM anahtarları,
sanal yol (VP) ve sanal kanal (VC) anahtarları olmak üzere kendi aralarında
ikiye ayrılırlar. Sanal yol anahtarları
yönlendirme sırasında sadece başlıktaki VPI değerini yenilerler. Halbuki
sanal kanal anahtarları başlıktaki hem VPI hem de VCI degerlerini yenilerler.
Anahtarlar için
böyle bir ayrıma gidilmesinin nedeni ağ içindeki ara noktalarda yapılan işi
azaltarak anahtarlamayı hızlandırmaktır. Ara noktalarda sanal yollar değişmekte ancak bunların
içerdiği kanallar aynı kalmaktadır. Böyle durumlarda sadece VPI değerlerini
inceleyen bir anahtar kullanmak daha etkin bir yoldur.
Şekil-5 ’te sanal yol ve sanal kanal
anahtarlarına örnek görülmektedir.
Şekil-5
Sonuç olarak bir ATM anahtarının temel
görevleri aşağıdaki üç maddede toplanabilir:
1. Hücreleri yönlendirmek (routing),
2. Gerektiğinde hücreleri kuyruklamak (queing),
3.
Gelen hücrelerin
başlıklarındaki VPI ve VCI değerlerini yönlendirme tablosundaki karşılıkları
ile değiştirmek.
8.2-ATM Anahtarlarının Performansını Etkileyen Faktörler
Bağlantı Bloklama
(Connection Blocking)
Bağlantı bloklama özelliği, anahtardaki bağlantı sayısının
ve yükün çok fazla olmasından dolayı giriş portundan gelen bilgilerin bir çıkış
portuna yönlendirilememesi durumunda bağlantının reddedilmesi anlamına gelir.
Hücre Kayıpları
(Cell Loss)
Eğer anahtar içindeki kuyruklara hücreler çok hızlı ve çok
sayıda gelirse, kuyruklarda taşma olacak ve bu da bazı hücrelerin kaybolmasına
neden olacaktır. ATM anahtarları tasarımcıları, hücre kaybolma olasılığını 10-8
ile 10-11 arasında tutmaya çalışmaktadır.
Hücre Eklenmeleri
(Cell Insertion)
ATM anahtarı içinde bazı hücreler yanlış yönlendirme
sonucunda, başka bir mantıksal bağlantıya gidebilirler. Böylece bazı çıkış
portlarında gereksiz hücre birikmesi olabilir. Bu tip bir olayın olması
olasılığı da 10-11 ile 10-14 arasın tutulmaya
çalışılmaktadır.
Anahtarlama
Gecikmesi (Switching Delay)
Hücrelerin anahtar içinden geçerken mümkün olduğunca hızlı
geçmesi gerekmektedir. Aksi halde, gecikme duyarlı gerçek zamanlı verilerin
iletiminde sorunlarla karşılaşılacaktır. Bu gecikmeler, 10 ve 1000 ms
arasında değerler alabilmektedir. Bu değerler birtakım olasılıklarla birlikte
de verilebilmektedir. Örneğin, 10-10 değerinde 100 ms
gecikme sözü, “anahtardaki gecikmenin 100 ms’den fazla olması olasılığı
10-10 dan azdır” anlamına gelmektedir.
9.-ATM TOPOLOJİSİ
ATM, yapı ve geliştirme bakımından esnek bir topolojiye
sahiptir. Bunun yanında varolan ağ topolojilerine uygulanabilir ve etkin bir
yapı oluşturulabilir. ATM’in topoloji yapısında iki türlü arabirimden
sözedilir. Bunlardan birincisi Public UNI (Public User-to-Network Interface -
Genel kullanıcı-ağ arayüzü), bir diğeri ise Private UNI (özel UNI) olarak
adlandırılmaktadır.
Şekil-6 ’te ATM ağ topolojisinin genel olarak yapı mantığı
verilmiştir
NETWORK
|
B-TE1-2: Broadband Terminal Equipment
B-NT1-2: Broadband Network Termination
B-TA
: Broadband Terminal Adapter
CPE
: Customer Premises Equipment
|
ATM
network
|
B-L/ET
|
B-NTI
|
B-NT2
|
B-TA
|
B-TE1/
B-TE2
|
ATM
endpoint
|
ATM
endpoint
|
TA
|
private ATM
switch
|
private
UNI
|
public
UNI
|
public ATM
switch
|
CPE
|
R
|
SB
|
TB
|
UB
|
NETWORK
|
Şekil-6
Şekil-7’de
ATM’in topoloji yapısı temel alınarak oluşturulmuş örnek bir Yerel Bilgisayar
Ağı (LAN) görülmektedir:
Şekil-7
9.1-ATM Yerel
Bilgisayar Ağları (ATM LANs) ve ATM LAN
Emulasyonu
ATM gelecekteki genişbant
çoklu-ortam servislerinin destekleyecek bir teknolojidir. Bununla beraber,
iletişimde IEEE 802 tabanlı yerel ağlar ve bu ağlar üzerinde kullanılan
uygulamalar günümüzde oldukça yaygındır. Bu yüzden ATM’in ilk aşamada bir LAN
teknolojisi olarak IEEE 802 ağlarıyla uyumlu olması gerekir. Bu uyumun
sağlanması için ATM, veri bağlantı katmanı gibi düşünülerek, varolan ağ
katmanları, bu yeni bağlantı katmanını destekleyecek şekilde geliştirilmektedir.
Böylelikle ATM üzerinde IP ve benzeri diğer protokoller çalışabilmektedir.
Varolan LAN
uygulamalarının ATM ağlarında desteklenebilmesi için bir başka çözüm ATM LAN
Emulasyonudur. LAN Emulasyonu, bağlantı uyumlu ATM ağları üzerinde bağlantısız
IEEE 802 ağları servislerinin nasıl gerçekleştirilebileceği üzerinde durur.
Diğer bir deyişle, noktadan noktaya bağlantı sağlayan ATM anahtarının sanal
paylaşılmış iletim ortamı görüntüsünü vermesini sağlamaktır. LAN Emulasyonu,
ATM uç sistemleri ve ATM-LAN köprülerinde ağ katmanının altında gerçekleşir.
9.1.1-LAN Emulasyonu Mimarisi
LAN emulasyon servisi aşağıdaki birimlerden oluşmuştur:
LAN Emulasyon istemcisi (LAN Emulation Client - LEC)
Bu birim, LAN ile ATM ağı arasındaki köprüdür. Kendilerine bağlı olan LAN’lardan
gelen mesajları kabul eder. Eğer mesaj “broadcast” veya “multicast” ise mesajı
“BUS” adı verilen ve aşağıda açıklanan birime gönderir.
BUS (Broadcast and Unknown Server)
Bu birim ATM ağına bağlı tüm LEC’ler ile bağlantılıdır. BUS,
“broadcast” bir mesaj aldığında, bu mesajı bağlı olduğu tüm LEC’lere gönderir.
LEC’ler ise mesajı kendilerine bağlı LAN’lardaki ilgili adreslere ulaştırır.
“Multicast” mesajlar ise, BUS tarafından sadece belli bir grup LEC’e yollanır.
LAN Emulasyon Sunucusu (LAN Emulation Server - LES)
LES’in
amacı, LE-ARP (LAN Emulation Address Resolution Protocol) desteklemektir. LE-ARP protokolü, bir LEC’in gelen bir MAC
(Media Access Control) adresinin içeren başka bir LEC’in ATM adresini bulmasını
sağlamaktadır. Bir LEC, bilinmeyen bir çerçeveye (karşılık gelen ATM adresi
bilinmeyen bir MAC adresi) rastlandığında LES’e LE-ARP sorgusu gönderir. LES
de, bu sorguyu diğer LEC’lere gönderir. Bu sorguyu alan tüm Lec’ler belirtilen
MAC adresinin kendilerinde olup olmadığının kontrol eder, eğer kendisinde ise
kendi ATM adresini de belirterek, LES’e cevap gönderir. LES de ilgili LEC’e haber vererek
adres çözümleme işini bitirir.
10.-ATM 'İN DEZAVANTAJLARI
ATM pahalı
bir teknolojidir. ATM anahtarların liste fiyatları temel konfigürasyon
için 9000$ 'dan başlayarak tam kurulu bir sistemde 350.000$ 'a kadar çıkan bir
çeşitlilik göstermektedir. Fakat yakın bir zamanda bu teknolojinin ucuzlaması
ve yaygınlaşması beklenmektedir .
ATM, yeni bir teknoloji olduğundan henüz
gerekli donanım ve yazılım desteği yeterli değildir. Bunda en önemli etken
standartların oluşmamasıdır. Özellikle yazılım konusunda büyük eksiklikler
bulunmaktadır. "ATM teknolojisi henüz olgunlaşma evresindedir. Endüstri
uzmanları, olgunlaşması için iki ya da
üç yıllık bir süre olduğunu tahmin etmektedir. " [6]
ATM anahtarları,
router(Yönlendirici) tarafından verilmekte olan hizmet sınıflarının pek çoğunu
kendi yapısı içinde kullanıcılara sunmaktadır. Fakat henüz standartların oluşmaması yüzünden
aşağıda sıralanan, router 'ın yapabildiği fonksiyonları anahtarlar henüz
yapamamaktadır .
1. Güvenli WAN Erişimi: Yönlendiriciler diğer
ağlara bağlanma konusunda şimdilik tek güvenilir cihazlar olarak kabul
edilmektedir.
2. Güvenlik Duvarları(Firewall):
Yönlendiriciler network'ün belirli alanları dışında kullanıcı erişimini
sınırlama özelliğine sahiptir. Bu, ortaya çıkan bir sorunun ağın başka bir
bölümüne intikal etmesini engellemektedir.
3. Çoklu Protokol Desteği: Yönlendiriciler,
tipik bir heterojen network'lerde bulunan bütün protokolleri ( IP, IPX, SNA ve
Apple Talk gibi) çalıştırabilmektedir.
11.-ATM 'İN AVANTAJLARI
1. ATM hızla gelişen bir teknolojidir. ITU-T ve ATM Forum,
standartlaşma çalışmalarında bulunmaktadır . Gelecekte belirecek talepler
şimdiden birçok büyük firmanın bu konuda
araştırmalara başlamasına yol açmaktadır. Büyük firmalar bu konuda iş yapan küçük
firmaları kendi bünyelerine katarak bu konuda çalışmalarını hızlandırmaktadır.
Bay Networks, Cisco ve 3Com gibi büyük Network Firmaları bu pastadan daha
büyük bir pay kapabilmek için savaşmaktadır. [6]
2. ATM ile verileri çok büyük
hızlarda taşımamız mümkündür. Hızı artırıcı amaçlı olarak hata kontrolü minimum düzeyde tutulur. Bu durumda,
hata kontrolü kullanıcının sorumluluğuna bırakılmaktadır.
3. Video, ses, TV, text gibi türlü veri tiplerinin hepsini destekleyen ve bütün ağların bir ortamda entegrasyonu için taban
sağlayacak BISDN için ITU-T tarafından switching (anahtarlama) modeli olarak
ATM seçilmiştir.
4. ATM, fiziksel (taşıma) ortamından bağımsızdır. Kablolar
koaksiyel kablo olabileceği gibi fiber de olabilmektedi. Fiziksel katman olarak
SONET tavsiye edilmektedir.
5. ATM var olan sistemlerle uyumludur. Bu, onun her tür ağ ortamıyla
sorun olmadan konuşabilmesini sağlamaktadır.
6. ATM, veri iletiminde esnektir. Değişken bit hızlarını
destekler niteliktedir.Kullanıcı isteğine
göre iletişim hızı belirlenir. "Hatta bazı anahtarlar, kullanıcılara ait
bant genişliği de sunabilirler". [6]
ATM ağında hata oranı ve gecikme değeri bildirilerek belli bir
kalitede hizmet alınabilir. Bu bilgiler, ağa bağlanıldığında kullanıcı tarafından
ağ ortamına bildirilir. İstenilen şey hız ise hata oranı göz önüne
alınmayabilir, hata oranı önemliyse o zaman hızdan ödün vermek gerekecektir .
7. ATM, sabit boyutlarda ve küçük hücreleri anahtarladığından ağ
kaynaklarını optimum kullanabilir. "Devre anahtarlamadaki gibi devre bütün
bağlantı için kapatılmaz. Paket anahtarlama tekniği kullanılarak sadece bilgi
transfer edilirken devre kullanılır" [1]. Diğer taraftan anahtarlar, yalnızca iletişimin gerekli
olduğu düğümler (nodes) arasında kurduğu bağlantılarla, ağ bant genişliğinin
etkin kullanımını sağlamaktadır. [6]
8. ATM ağ yapısı büyümeye elverişlidir.
9. ATM onu yorumlayan firmaya göre bazı
değişiklikler taşıyabilir. Belirli şartları sağladıkları sürece değişik ATM
-lan'lar birbirleriyle iletişim yapabilirler.
10. ATM istatistiki
çoklama tekniğini kullanarak çok kullanıcının veri trafiğini tek bir ağ
üzerinde birleştirir. Bunu da en etkin şekilde yapar.
11. ATM anahtarlama,
yönlendiricilere göre daha kolay anlaşılır, uygulaması kolay ve daha ekonomik
bir çözümdür. Yönlendiricilerin mevcut yazılımlarının düzeyi, karmaşılığı,
mimarisi ve fiyatı anahtarlar karşısında devre dışı kalmalarına yol açmaktadır.
[6]
12. ATM anahtarları , mevcut ağ ekipmanı üzerinde hiç değişiklik
yapmadan ya da çok küçük bazı değişiklikler yaparak ağa eklenebilir.
12.-SONUÇ
B-ISDN teknolojisinin,
varolan iletişim ihtiyaçlarının karşılanması ve gelecekte varolabilecek
ihtiyaçların karşılanmasına yönelik
esnekliği düşünüldüğünde geleceğin iletişim teknolojisi olacağı açıktır.
Ancak, bu yapıyı olanaklı kılan ATM altyapısındaki maliyet ve tam
standartlaşamama gibi dezavantajlardan dolayı henüz bu teknolojiye tam olarak
bir geçiş sağlanamamıştır.
13.
KAYNAKÇA
[1] DE PRYCKER, MARTIN
;“Asynchronous Transfer Mode, Solution For Broadband ISDN”, Ellis Harwood, 1993
[2] STALLINGS, William
;“Networking Standards A Guide to OSI, ISDN, LAN and MAN Standards”
[3] ERDUR, Cenk ; “İleri Bilgisayar Ağları ATM Semineri
Raporu” , 20.5.96
[4] ATEŞ, Ahmet Feyzi ;
“B-ISDN, ATM ve Diğer Gelişen Teknolojiler “,
27.5.96
[5] ÇIMENSEL, Ahmet ; “ATM Networks
Semineri (Bölüm1)” , 13.5.96
[6] STEPHEN, P.
Klett Jr. ; ComputerWorld Dergisi Sayı 298 ,
Sayfa 43-48 , 1995
[7] GAGE, Beth ; ComputerWorld
Dergisi Sayı 305 , Sayfa 27-37 , 1995
[8] Çeşitli Internet Kaynakları
(Başlangıç Noktası -“http://www.yahoo.com”)
[9] EBRAHIM, Zahir ; “A
Brief Tutorial on ATM“
14.-EK-Mini Sözlük
* AAL: ATM Adaptation Layer
* ANSA: Advanced Networked Systems
Architecture
* ASIC: Application Specific Integrated
Circuit
* ATM: Asynchronous Transfer Mode
* AUU: ATM User User indication, "the bit",
end of AAL5 block marker
* AVA: ATM Video Adaptor
* B-ISDN: Broadband Integrated Services Digital
Network
* CAC: Connection Admission Control
* CBR: Constant Bit Rate
* CCITT: Comitée Consultatif International Télégraphique et Téléphonique
(now the ITU-TS)
* CLP: Cell Loss Priority (a bit in a B-ISDN
cell header)
* CRC: Cyclical Redundancy Check
* DAN: Desk Area Network
* E1: 2 Mbit/sec
* E2: 8 Mbit/sec
* E3: 34 Mbit/sec
* EATM: EISA ATM (an adaptor)
*
EDL: Ethernet Data Link
* FDDI: Fiber Distributed Data Interface
* FAS: Framing and Sequencing
* FIFO: First In First Out
* GFC: Generic Flow Control (a 4 bit field
in a B-ISDN cell header)
* H.261: A constant bit rate video
compression standard.
* HEC: Header Error Check (an 8 bit CRC in a
B-ISDN cell)
* IOC: Input Output Controller
* IP: Internet Protocol
* ISDN: Integrated Services Digital Network
* ISO: International Standards Organisation
* ITU: International Telecommunication Union
* LAN: Local Area Network
* MAC: Media Access Control
* MAN: Metropolitan Area Network
* MPEG: Motion Picture Experts Group (a
video compression standard)
* NOSSDAV: Network and Operating System
Support for Digital Audio and
Video ("nose dive")
* NNI: Network Network Interface
* OC3: 155 Mbit/sec
* OC12: 622 Mbit/sec
*
OSI: Open Systems Interconnection
* PDU: Protocol Data Unit (a packet)
* PLT: Payload Type (a 3 bit field in a
B-ISDN cell header)
* PTM: Packet Transfer Mode
* Q.93B: The Standard (i.e. awful) ATM
signalling protocol
* QOS: Quality of Service
* SAR: Segmentation and Reassembly
* SDH: Synchronous Digital Hierarchy
* SDU: Service Data Unit (a packet)
* SOC: Start of Cell
* SONET: Synchronous Optical Network
* SPROING:To Break
* STM: Synchronous Transfer Mode
* STS1: 155 Mbit/sec
* STS4: 622 Mbit/sec
* T1: 1.5 Mbit/sec
*
T3: 45 Mbit/sec
* TDM: Time Division Multiplexing
* UNI: User Network Interface
* VC: Virtual Channel or Virtual Circuit
* VCI: Virtual Circuit Identifier (also
Virtual Channel Identifier)
* VP: Virtual Path
* VPI: Virtual Path Identifier
* WAN: Wide Area Network
1.Özet
Bu projenin amacı günümüz telekomünikasyon yapısını
ve ihtiyaçlar doğrultusunda bu yapının
gelişmesini anlatmaktır. Bu yeni ihtiyaçlara cevap verebilecek yapı olarak
B-ISDN kapsamında ATM teknolojisi ele alınmıştır. ATM protokolü kendine has
katman yapısı ve anahtarlama teknolojisini içermektedir. ATM'de veri
iletişiminde hücre adında özel bir yapıya sahip paketler kullanılmaktadır. ATM,
kendine has topolojisinin yanında varolan sistemlerle de uyumludur.
2.Giriş
Bilgisayar teknolojisinin ve dolayısıyla bilgisayar
ağlarının büyük bir hızla gelişmesi sonucu, bilgisayarların kullanım amaçları
ve üstlendikleri hizmetler eskisine oranla çok daha geniş bir alana
yayılmıştır. Bu gelişime paralel olarak da yeni kullanım alanları doğmuş ancak
bir süre sonra varolan yapılar bu yeni taleplere karşılık veremez hale
gelmişlerdir. Şu anda ihtiyaç duyulan
pek çok servis (ses, görüntü, klasik veri iletimi, interaktif servisler vb.)
yüksek hızlarda iletim kapasitesi gerektirmektedir.
Veri iletişiminde ortaya çıkan ilerlemeler (VLSI-Very Large
Scale Integration, fiber optik ve anahtarlama teknolojilerindeki gelişmeler) bu
ihtiyaçlara cevap verebilecek B-ISDN yapısının oluşmasına imkan sağlamıştır.
ITU-T (International
Telecommunication Union), B-ISDN için
transfer modu olarak ATM'i önermiştir. ATM ve B-ISDN teknolojisi aynı zamanda
varolan sistemlere de adapte edilebilir olması açısından da avantajlıdır.
3.-GÜNÜMÜZ
TELEKOMUNİKASYON ALTYAPISI ve B-ISDN
Bugünün telekomunikasyon ağlarının
herbiri spesifik hizmetler vermek üzere tasarlanmıştır. Bunun anlamı, herbir
telekomunikasyon hizmeti için en az bir ağın olması ve bu ağların hedeflediği
spesifik servisi sağlamak amacıyla tasarlanıp çalıştırıldıklarından dolayı,
çoğunlukla başka amaçlar için kullanılmaya uygun olmamalarıdır. Örneğin, X.25
veri iletişimi ağları uçtan uca gecikme ve kayma değerlerinin kontrol
edilememesi nedeniyle, gerçek zamanlı ses iletişimi için uygun değildirler.
Ayrıca, bir ağ içinde, belli zamanlarda boş duran birtakım kaynaklar da başka
amaçlar için kullanılamamaktadır. (Örneğin, varolan telefon ağlarının TV yayını
için uygun olmamaları sebebiyle günün geç saatlerinde ses iletim ihtiyacının
düşük olmasına rağmen, kablolu TV yayını için kullanılamaması.)
Sonuçta birbirinden bağımsız ve farklı birçok iletişim ağı
ortaya çıkmış ve bu durum, ağların kullanım esnekliğini ve etkinliğini
düşürmüştür. Buna paralel olarak da bu tür ağların tasarım, bakım, üretim
maliyetleri de yükselmiştir. Bu ağlara örnek verecek olursak :
· Düşük hızlarda (300 kb/sn) bilgi transferi sağlayan teleks
ağları,
· POTS (Plain Old Telepnone Service) adıyla da bilinen ve
PSTN (Public Switched Telephone Network -
Anahtarlamalı Telefon Ağı ) üzerinden sağlanan iki yönlü ses iletişimi
için tasarlanan ağlar,
· X.25 ve benzeri PSDN
(Public Switched Data Networks ) paket anahtarlamalı veri ağları,
· CATV (Community Antenna
TV), kablolu televizyon ağları,
· LAN (Local Area Networks
), yerel iletişim ağları
Yukarıda
örnek verdiğimiz telekomunikasyon ağları ve varolan ihtiyaçlar gözönüne
alındığında, bu altyapının yetersiz kalacağı açıktır. Özellikle gelecekte
kullanılması düşünülen video-telefon, video-konferans, video-kütüphane ve
benzeri servisleri düşünürsek, bu tür ihtiyaçları karşılayacak iletişim
ağlarının servis türünden bağımsız, genişbantlı tek bir ağ olması gerektiği
ortaya çıkmaktadır.
Bu
alandaki çalışmalar seksenli yılların başlarında başlatılmış ve ISDN
(Integrated Switched Digital Networks) olarak adlandırılmıştır (Şu anda N-ISDN
Narrowband ISDN olarak anılmaktadır). Bu ağların bant genişliğinin
arttırılmasıyla hertürlü ses, veri, hareketli video ve yüksek çözünürlükte TV
iletiminin entegre edilmesi sağlanmış ve gelişen yapı B-ISDN (Broadband ISDN)
olarak adlandırılmıştır.
B-ISDN
yapısını olanaklı kılan faktörler, fiber-optik teknolojisinin gelişerek
iletişim hatlarında geniş çapta kullanılır olması ve yarı iletken
teknolojisinde sağlanan ilerlemeler olarak gösterilebilir. Böylelikle, yeni
geliştirilen yapıda, iletim ortamının daha güvenilir olması ve hata kontrolunun
ağ içinde yapılması gerekliliğinin ortadan kalkması ile daha etkin ve maliyeti
düşük yeni bir aktarım biçimi kullanılabilmiştir. İşte bu yeni teknoloji ATM
(Asynchronous Transfer Mode) olarak adlandırılmaktadır.
ITU-T (Eski adıyla CCITT) tarafından da yapılan
araştırmalar sonucu 1988 yılında ATM’ in B-ISDN için en uygun aktarım protokolu
oldugu belirlenmiştir.
ITU-T tarafından B-ISDN yapısı ile
verilmesi düşünülen hizmetler şöyle sıralanabilir:
·
HDTV(High Definition TV) Yüksek çözünürlüklü
TV servisleri,
·
Videokonferans servisleri,
·
İstek üzerine video (Video on Demand)
servisleri,
·
Karşılıklı iletişime dayalı (interaktif)
servisler,
·
Mesaj servisleri,
·
Veri transfer servisleri.
4.-ATM NEDİR ?
Her türden veriyi yüksek hızlarda taşıyabilen anahtarlanmış, hücre tabanlı
aktarım protokolüdür. ATM her türden network trafiğini (veri, ses video ve TV
sinyalleri) 53-byte'lık hücreler halinde
iletir.
4.1-ATM
Anahtarlamanın Tarihçesi
ATM’in başlangıcından bu yana gelişimi Şekil-1’de
görülmektedir :
Şekil-1
4.2-Transfer Modları
Transfer
modu, bir telekomunikasyon ağında kullanılan iletim (transmission), çoklama
(multiplexing) ve anahtarlama (switching) tekniklerinin toplamına verilen
isimdir. Network dünyasında transfer modu konusunda temel olarak iki kutup
bulunmaktadır. Bunlar devre anahtarlama ve paket anahtarlamadır.
Devre ve paket
anahtarlama belirtildiği gibi iki uç noktadır ve birbirlerine karşı avantaj ve
dezavantajlara sahiptirler. Zamanla bu iki zıt yöntemin de diğer yöntemin
avantajlarını kullanan varyasyonları ortaya çıkmıştır. Aşağıda bu metodların
başlıca açıklamaları bulunmaktadır.
4.2.1-Devre Anahtarlama
(Circuit Switching):
Bu transfer modu özellikle telefon
ağlarında kullanılır. N-ISDN 'de de bu yöntem kullanılmaktadır.
Devre anahtarlamanın temeli, bir iletim sırasında sadece
ilgili bağlantı tarafından kullanılabilen adanmış sabit kapasiteli bir kanal
oluşturmaktır.
Belirli zaman aralıklarında (125 µs gibi) sabit
uzunlukta bit kümeleri gönderilir (8 bit, 1000 bit gibi). Bu kümelerin her birine
'time slot' denir ve bunlar birleştirilerek çerçeveleri (frame) oluştururlar. (Çerçeveler
de belirli aralıklarda tekrarlanır. Bu çerçevelerin içindeki her time slot,
devam ettiği sürece belirli bir bağlantıya adanır. Ancak bağlantı
kapatıldığında ilgili slot başka bir uygulamanın kullanımına sunulabilir.) Pür
hat anahtarlamalı sistemlerde her time slot'un barındırabileceği bit miktarı
aynıdır ve sabittir. Yani her servis için sabit bir bit hızı vardır.
Devre anahtarlamalı sistemlerde bir hat, bağlantı boyunca
bir uygulamaya adandığından dolayı
sistemde oluşacak gecikmeler ancak iletim hattındaki yayılma gecikmesine
bağlıdır.
4.2.2-Multirate Circuit Switching:
Devre anahtarlamasının kısıtlamalarını ortadan kaldırmak
için tasarlanan bu yöntemde, bir bağlantı için birden fazla time slot
kullanılabilmektedir. Ancak birden fazla time slot kullanılırsa bunların
senkronize edilmesi zorunluluğu ortaya çıkar.
Başka bir problem de 'basic rate'in seçilmesindedir. Eğer
bu değer büyük seçilirse (örneğin 2 Mbit/s) küçük hat genişliği gerektiren
servisler (ses 64 kbit/s) gereksiz yere kaynak tüketmiş olacaklardır. Bu değer
küçük seçilirse de (1 kbit/s) büyük bant genişliği gerektiren servisler (HDTV
144 Mbit/s) için çok fazla miktarda kanalın kontrol edilmesi gerekecektir; bu
da işleri çok karmaşık hale getirir. Bu soruna üretilen çözüm ise bir çerçeveyi
farklı bit oranları olan slotlara bölmektir.
Böyle bir sistemde her farklı time slot için özel bir tür
anahtar kullanılmalıdır (farklı bit rate'lerden dolayı). Abonenin gelen/giden
bilgisi anahtarlara/anahtarlardan yönlendirilmeden önce multiplex/demultiplex
işleminden geçirilmelidirler (Bu işlem farklı bit rate'deki kanalların ilgili
anahtara yönlendirilmesi için yapılır).
Farklı bit rate'ler kullanılabilmesine karşın bunların
sabit değerler olmasından dolayı, servislerin ihtiyaçlarında oluşacak
değişikliklere karşı esnek olması beklenemez (Bant genişliği ihtiyacının
artması, sıkıştırma teknolojisindeki gelişmelerden dolayı ihtiyacın azalması
vb.).
Bu sistemler doğal olarak hat anahtarlamanın
dezavantajlarını da içerirler (Kaynakların ihtiyaç dışında meşgul edilmesi
vb.).
4.2.3-Paket Anahtarlama (Packet Switching):
Bu transfer modunda kullanıcının bilgileri paketler halinde taşınır. Bu
paketlerde kullanıcının bilgisine ek olarak başlık (header) denen ve
yönlendirme (routing), hata kontrol ve akış kontrol için kullanılan bilgileri
içeren saha da bulunur.
Eski bağlantıların güvenliği düşük olduğundan dolayı bu tip
sistemlerde ileri düzeyde hata kontrolü yapılır (İçinden geçilen her node'da
paket içeriği, hatalara karşı kontrol edilir…). Her node ‘da hatalı paketler
için tekrar gönderim isteği yapılır.(ARQ -Automatic Repeat Request)
Paket boyutları değişkendir. Dolayısıyla kompleks akış
kontrolü gerektirirler. Ancak iletişim hızı düşük olduğundan bu pek sorun
yaratmamaktadır.Protokollerin karmaşıklığından ve tekrar gönderme işleminden
dolayı yüksek hız gerektiren servislerde ve gerçek zamanlı uygulamalarda pek
kullanılmazlar.
4.2.4-Frame Relaying:
Frame Relaying,
iletim hatlarının güvenilirliği nedeniyle, ağ içinde paket anahtarlamalı
sistemlere (X.25) oranla daha az fonksiyonelliğe sahiptir (Daha kısıtlı hata
kontrol ve düzeltme yapılır). Bu da ağ içi anahtarlama noktalarında daha hızlı
bilgi işleme imkanı sağlar.
Paketlerin tekrar gönderimi ancak uç noktalar arasında
yapılır (yani aradaki node'lar paketlerin tekrar gönderimini istemez). Buna
karşın node'larda paketler hala hatalara karşı kontrol edilirler. Bunun nedeni
hatalı paketlerin iletimine devam edilmesinin bir anlamının olmamasıdır.
4.2.5-Cell Relaying(Fast
Packet Switching-ATM):
Fast Packet Switching
(ATM), birçok varyasyonu içeren bir kavramdır. Ancak bunların temel
karakteristiği aynıdır: Ağda minimum fonksiyonellikle paket anahtarlama.
Gönderici ve alıcı arasında bir senkronizasyon yoktur.
Senkronizasyon, gerektiğinde boş paketlerin eklenip çıkarılmasıyla
sağlanabilir.
ATM'de ağ içinde CRC ya da ARQ türünden hata kontrol
fonksiyonları yoktur. Hat anahtarlamada olduğu gibi hataların düzeltilmesi uç
noktalardaki protokollere bırakılmıştır.
ATM ‘in Frame Relay’den en önemli farkı, ATM’de verilerin
sabit ve küçük boyutlu paketler (hücreler) halinde iletilmesidir. Frame Relay
de ise paket boyu değişkendir.
5.-ATM HÜCRE YAPISI
ATM’de bilgi aktarımı için kullanılan temel birim 53
byte'lık sabit uzunlukta olan ve hücre (cell) olarak adlandırılan özel bir tür
pakettir. Hücrelerin ilk 5 byte'lık kısmı başlık (header) olarak adlandırılır
ve hücrenin ağ içinde ilerleyebilmesi için gerekli olan temel bilgileri taşır.
(Paket anahtarlama yönteminde bulunan ve ileri düzeyde fonksiyonellik sağlayan
alanlar hücre başlıklarında olabildiğince azaltılmıştır). Başlığın
fonksiyonelliğinin düşük düzeyde tutulması da ATM anahtarlarına yüksek hızda
işlem yapma imkanı verir. Geriye kalan 48 byte ise iletilecek olan bilgiyi
içerir.
5.1- ATM’deki Hücre Tipleri
Unassigned Cells:
Trafik olmadığı durumda, ATM tabakası
tarafından gönderilen boş paketlerdir. Bantgenişliğini doldurmak veya
senkronizasyon amaçlı kullanılırlar. Aynı zamanda IDLE hücreleri vardır. Bu
hücrelerin özelliği fiziksel tabaka tarafından yaratılmalarıdır. ATM tabakasına
çıkmazlar, fiziksel katmanlar arasındaki senkronizasyonda kullanılırlar.
Meta-Signaling
Cells: Ağ ile bir oturum kurmakta ve
oturum servislerini saptamada kullanılırlar.
General Broadcast
Cells: UNI’deki tüm istasyonlara
gönderilen paketleri belirlerler.
Point-to-Point
Signaling Cells: ATM tabakasında noktadan
noktaya bağlantı sağlayan UNI veya NNI arayüzü hücrelerini belirlerler.
F4 ve F5
Hüceleri: Sırasıyla VP ve VC bakım
hücrelerini belirlerler.
Resource
Management Cells: VC üzerinde hızlı kaynak
yönetimi için ayrılmışlardır.
ILMI (Interim
Local Management Interface) Cells: ATM
kullanıcı aygıtlarının durumlarını ve UNI’deki VP ile VC konfigürasyonu ile
ilgili bilgileri taşırlar.
5.2-Neden Sabit Uzunluk ?
Bir sistemde sabit uzunlukta hücreler kullanıldığında
etkinlik, gönderilecek bilginin uzunluğuna göre değişir. Eğer gönderilecek
bilgi küçük miktarlardaysa ve hücrelere bölündüğünde son hücrede büyük oranda
(30-40 byte) boşluk kalıyorsa bu iletişimdeki oranı pek yüksek olmaz. Ancak
gönderilecek bilgi 48 byte'ın tam katıysa yani hücrelerin hepsi tamamen doluysa
maximum etkinliğe (%90.5) ulaşılabilir. (Maximum etkinliğin %90.5 olmasının
sebebi gönderilen 53 bytelik her hücrenin 5 byte'ının başlığa ayrılmış
olmasıdır. 48/53=0.905...)
Değişken uzunlukta hücreler kullanılınca sistemde neredeyse
%100 ’lük etkinliğe ulaşılır. Ancak, farklı uzunluktaki paketlerin kuyruklama
için buffer'da etkin olarak saklanması oldukça zordur ve komplike algoritmalar
gerektirir. Bu kompleks buffer işlemleri de yüksek hız gerektirir. Bu tür
pratik nedenlerden dolayı degişken uzunlukta hücre kullanımı engellenmiştir.
Sabit uzunluktaki hücrelerde kalan boşluklar sistem
etkinliğine olumsuz yönde etki eder, ancak B-ISDN'de sunulacak servislerin
zaten yüksek miktarda bilgi iletimine ihtiyaç duyması bu olumsuzluğu ortadan
kaldırır.
5.3-Neden 53 Byte ?
Hücre boyunun seçilmesinde farklı faktörler rol oynamıştır.
Uzun bilgi alanları iletimin etkinliğini artırır. Çünkü her başlıkla beraber
gönderilen bilginin miktarı artar ve böylece başlıklardan kaynaklanan
overhead'ın oranı azalır.Ancak bilgi alanının boyu arttıkça paketleme
sırasındaki gecikme de (packetization delay) artar. Uzun hücreler
kullanıldığında ağ içindeki gecikmenin de belirli limitleri aşması daha kolay
olur (Örneğin telefon görüşmeleri için bu gecikme sınırı 25 ms'dir). Bu da ses
iletiminde yankı önleyicilerin kullanılmasını zorunlu kılar. Ayrıca uzun
hücreler anahtarlarda kullanılan geçici depolama alanlarının büyük olmasını
gerektirir. (Hücre kayıplarını önlemek için kuyruklar hücre boyutundan bağımsız
olarak belli miktarda hücreyi saklayabilecek kapasitede olmalıdırlar)
Bütün bu etkenler göz önüne alınarak hücredeki bilgi
sahasının boyunun 32 ya da 64 byte civarında olması öngörülmüştür (Avrupa ses
iletimindeki kolaylığından dolayı 32, Amerika ve Japonya ise etkinliğinden
dolayı 64 byte'lık boyutlarda ısrar etmişlerdir). Sonuçta 48 byte bilgi + 5
byte başlık olmak üzere 53 byte hücre boyutu olarak kabul edilmiştir.
6.-ATM KATMANLARI
ATM ‘in üzerinde kurulduğu fiziksel tabaka yapısı
SONET/SDH, DS3 veya FDDI olabilir. ATM, fiziksel ortamdan bağımsızdır ancak geniş
tabanlı genel taşıyıcı olarak, eş zamanlı bir iletim yapısı olan SONET (Synchronous Optical
Network) tercih edilir. SONET Bellcore tarafından üretilmiş ve ANSI (American
National Standards Institue) tarafından standartlaştırılmıştır. SONET, fiber
kablo üzerinde yüksek hızda dijital sinyal iletimini sağlamak için
tasarlanmıştır. Verileri 51.84 Mbps hızda taşımak için standart çoklama
biçimini kullanır. Ayrıca optik sinyal standardını, farklı kaynaklardan
karşılıklı bağlantı için kullanır. Geniş işlem yapma, yönetim ve bakım
özelllikleri vardır. Esnek yapısıyla, gelecekte varolacak yeni teknolojilere
ayak uydurabilir.
Fiziksel tabakanın
üzerinde ise ATM ve AAL (ATM Adaptation Layer) olmak üzere iki tabaka bulunur.
AAL, ATM ile diğer katmanlar arasında arayüz görevini yürütür. AAL, CS
(Convergence Sublayer) ve SAR (Segmentation and Reassembly Sublayer) den
oluşur. SAR farklı uzunluk ve formattaki PDU (Protocol Data Unit) ‘ları (yani
iletilecek veri paketlerini) 48 okteklik (sekizlik) parçalara ayırır. CS’nin
fonksiyonları AAL tarafından işlenen trafiğin tipine göre değişir.
Gönderici taraftaki
ATM tabakasında, SAR’dan gelen 48 sekizlik bilgiye 5 byte’lık hücre başlığını
ekler. Ağ içindeki anahtarlardaki ATM tabakaları VPI ve VCI bilgilerini
kullanarak yönlendirme işlemlerini gerçekleştirir. Alıcıdaki ATM tabakası 5
byte’lık başlık bilgisini çıkarır ve AAL’ e iletir.
6.1- AAL Katmanı Tarafından Desteklenen Trafik
Sınıfları
ATM AAL katmanı, değişik trafik
tiplerini desteklemek için 5 tane değişik trafik sınıfına sahiptir. Her trafik
tipi için kaynak ve varış noktaları arasında herhangi bir zaman ilişkisi
olmasının gerekip gerekmediği, bit hızının karakteristiği ve bağlantı uyumlu
olup olmadığı, trafik tipleri için birbirinden farklıdır.
6.2 -AAL
Tipleri
AAL, trafik tiplerini desteklemek
amacıyla AAL farklı protokolllere sahiptir.
6.2.1-AAL-1
A Sınıf trafiği destekler ve PDU yapısı 48
sekizlikten oluşur. Payload(Kullanıcı Verisi), 46 veya 47 sekizlik
olabilmektedir.
SNP (Sequence Number Protection), SN üzerinde hata kontrolü yapar. SNP sahası,
ancak 1 bitlik hataları düzeltebilmektedir. Payload ise CSI (Convergence
Sublayer Indication) , işaretci sahanın kullanıp kullanılmayacağını gösterir.
CSI’nın sıfır olması işaretçinin kullanılmadığını ve kullanıcı verisinin 47
sekizlik olduğunu gösterir. İşaretçi, verilerin hücre içinde yerleşimini
tutmaktadır.
6.2.2- AAL –2
Sınıf-B
trafiğini destekleyen protokoldür. Başlık kısmında SN (Sequence Number) ve IT (Information Type) bulunur.
IT sahası, BOM (Beginning Of Message), COM (Continuation of Message) ve EOM
(End Of Message) sahalarından oluşur. Kuyruk kısmında, LI (Length Indicator)
sahası Payload sahasındaki sekizlik sayısını tutar, CRC’de hata kontrolünde
kullanılır.
6.2.3 - AAL-3/4
İlk olarak,
bağlantı uyumlu VBR trafiğini destekleyen AAL-3 ve bağlantısız VBR trafiği için
AAL-4 protokolleri tanımlandı. Sonra bu iki tip birleştirilerek, AAL-3/4
protokolü tanımlandı.
SN,
IT, LI ve CRC sahaları AAL-2 protokolünde kullanılan yapıyla aynıdır, ama
AAL-3/4 ‘te bu sahaların uzunlukları bellidir. MID (Message IDentification)
sahası, belli bir bağlantıdan gelen trafiğin birleştirilmesinde kullanılır.
6.2.4- AAL-5
Forum
tarafından yüksek hızda, bağlantı
uyumlu servis kullanıcılarına hizmet veren, az overhead’e sahip, hata bulma
oranı yüksek olan protokoldur. Frame Relay trafiğinde uygundur.
6.2.5-AAL-6
ATM-Forum
tarafından ortaya çıkarılan, MPEG kodlu video için tanımlanacaktır.
Şekil-2 :
B-ISDN protokol katmanları ve üstlendikleri görevler görünmektedir.
7.-ATM’DE BAĞLANTI YAPISI
ATM’de mantıksal bağlantılar, sanal
kanal bağlantıları (VCC-Virtual Channel Connection) olarak adlandırılır. VCC,
B-ISDN ‘in en temel birimidir. Bir VCC , iki son kullanıcı arasında ağ
aracılığıyla kurulur. Değişken oranlarda (variable rate), sabit boyutlu
hücreler full-duplex (çift yönlü) akışla bağlantı üzerinden taşınır. VCC ‘ler
aynı zamanda kullanıcı-network exchange (kontrol sinyalleme) ve network-network
exchange (network yönetimi ve yönlendirme ) için kullanılır. Şekil-3’te sanal bir ATM
bağlantısının kesiti gorulmektedir
Şekil-3
Sanal yol (VP-Virtual Path)
kavramı, yüksek hızlı ağlarda kontrol harcama-larının yüzdesinin bütün network
harcamaları içinde yüksek yüzdelere artması sonucu geliştirilmiştir. Sanal yol
tekniği, network içinde ortak yolları paylaşan bağlantıları gruplayarak
(VPC-Virtual Path Connection) kontrol masraflarını azaltmaya yarar. Network
yönetim işlemleri bundan sonra çok sayıdaki bireysel kanallar yerine az
sayıdaki bağlantı gruplarına uygulanabilir.
VPC
’lerin kulanımından doğan avantajlar :
Þ Basitleştirilmiş network mimarisi (Ağ ortamındaki
fonksiyonların VPC ve VCC kavramlarına göre sınıflandırılmalarından dolayı
işlemler daha basitleşir),
Þ Artırılmış network performansı ve güvenilirlik (Ağ daha az
iletişim birimiyle uğraşır),
Þ Azaltılmış işlem ve kısa bağlantı kurulma zamanı (Bağlantı
işlemlerinin büyük kısmı VPC ilk kez oluşturulurken yapılır. Var olan bir
VPC’ye VCC’ler eklemek çok az bir işlem gerektirir),
Þ Geliştirilmiş ağ servisleri. [2]
ATM'de veri bağlantıları VCI ve VPI ile tanımlandıktan
sonra, verilen herhangi bir yöne giden sanal yollar çoklanarak fiziksel hatta
verilir. Sanal kanal bağlantıları son kullanıcılar arasında anlamlıdır. Fakat
bu bağlantı tanımlayıcıları, hücreler ATM ağı içinde ilerlerken değişebilir. Bu
yüzden belli bir VCI değerinin kullanıcı açısından bir önemi yoktur. Sorumluluk
ATM ağındadır.
VC ve VP ile oluşan bağlantı yapısı
şöyledir: İki kullanıcı için kontrol işlemi tek tek bütün sanal kanallar yerine
sadece VP bazında yapılabilir. Yani, bütün kanallar yerine sadece bir yol
(path) incelenir.
İki nokta arasında
sonuçta oluşan bağlantının tümü Şekil-4 ‘te ifade edimiştir.
Şekil-4
8.-ATM ANAHTARLAMA
ATM anahtarlamasındaki temel fikir
mantıksal bir kanaldan anahtara giren bilginin yol üzerindeki bir sonraki
noktaya iletilmesi için başka bir ATM kanalına yönlendirilmesidir. Genelde bir
anahtardan çıkan çok sayıda mantıksal ATM kanalı olmasından dolayı, yönlendirmeden
önce ilgili çıkış kanalı seçilmelidir. Bu seçim, giriş portunun numarasına ve
hücrenin VPI, VCI değerlerine bağlı olarak yapılır.
8.1 -ATM Anahtarları
Anahtara ulaşan her hücrenin giriş port numarasına,VPI ve
VCI değerlerine bakılır. Ardından, bu değerlerden yararlanılarak yönlendirme
tablosundan hücrenin çıkış portu ve yeni VPI, VCI değerleri bulunur. Yeni
bulunan VPI ve VCI değerleri; hücre, anahtardan çıkmadan önce başlıktaki eski
değerlerin yerlerine yerleştirilir. Sonunda da hücre, tablodan bulunan çıkış
portuna yönlendirilir.
Bir anahtara
genelde birden çok porttan hücre girdiğinden, bu hücrelerin çıkış portlarının
çakışması olasıdır. Böyle bir durumda ilgili çıkış portu boşalıncaya kadar kimi
hücreler geçici olarak bir tampon alanda saklanmak zorundadırlar. Bu hücreleri
sıraya sokma işlemi kuyruklama olarak adlandırılır.
ATM anahtarları,
sanal yol (VP) ve sanal kanal (VC) anahtarları olmak üzere kendi aralarında
ikiye ayrılırlar. Sanal yol anahtarları
yönlendirme sırasında sadece başlıktaki VPI değerini yenilerler. Halbuki
sanal kanal anahtarları başlıktaki hem VPI hem de VCI degerlerini yenilerler.
Anahtarlar için
böyle bir ayrıma gidilmesinin nedeni ağ içindeki ara noktalarda yapılan işi
azaltarak anahtarlamayı hızlandırmaktır. Ara noktalarda sanal yollar değişmekte ancak bunların
içerdiği kanallar aynı kalmaktadır. Böyle durumlarda sadece VPI değerlerini
inceleyen bir anahtar kullanmak daha etkin bir yoldur.
Şekil-5 ’te sanal yol ve sanal kanal
anahtarlarına örnek görülmektedir.
Şekil-5
Sonuç olarak bir ATM anahtarının temel
görevleri aşağıdaki üç maddede toplanabilir:
1. Hücreleri yönlendirmek (routing),
2. Gerektiğinde hücreleri kuyruklamak (queing),
3.
Gelen hücrelerin
başlıklarındaki VPI ve VCI değerlerini yönlendirme tablosundaki karşılıkları
ile değiştirmek.
8.2-ATM Anahtarlarının Performansını Etkileyen Faktörler
Bağlantı Bloklama
(Connection Blocking)
Bağlantı bloklama özelliği, anahtardaki bağlantı sayısının
ve yükün çok fazla olmasından dolayı giriş portundan gelen bilgilerin bir çıkış
portuna yönlendirilememesi durumunda bağlantının reddedilmesi anlamına gelir.
Hücre Kayıpları
(Cell Loss)
Eğer anahtar içindeki kuyruklara hücreler çok hızlı ve çok
sayıda gelirse, kuyruklarda taşma olacak ve bu da bazı hücrelerin kaybolmasına
neden olacaktır. ATM anahtarları tasarımcıları, hücre kaybolma olasılığını 10-8
ile 10-11 arasında tutmaya çalışmaktadır.
Hücre Eklenmeleri
(Cell Insertion)
ATM anahtarı içinde bazı hücreler yanlış yönlendirme
sonucunda, başka bir mantıksal bağlantıya gidebilirler. Böylece bazı çıkış
portlarında gereksiz hücre birikmesi olabilir. Bu tip bir olayın olması
olasılığı da 10-11 ile 10-14 arasın tutulmaya
çalışılmaktadır.
Anahtarlama
Gecikmesi (Switching Delay)
Hücrelerin anahtar içinden geçerken mümkün olduğunca hızlı
geçmesi gerekmektedir. Aksi halde, gecikme duyarlı gerçek zamanlı verilerin
iletiminde sorunlarla karşılaşılacaktır. Bu gecikmeler, 10 ve 1000 ms
arasında değerler alabilmektedir. Bu değerler birtakım olasılıklarla birlikte
de verilebilmektedir. Örneğin, 10-10 değerinde 100 ms
gecikme sözü, “anahtardaki gecikmenin 100 ms’den fazla olması olasılığı
10-10 dan azdır” anlamına gelmektedir.
9.-ATM TOPOLOJİSİ
ATM, yapı ve geliştirme bakımından esnek bir topolojiye
sahiptir. Bunun yanında varolan ağ topolojilerine uygulanabilir ve etkin bir
yapı oluşturulabilir. ATM’in topoloji yapısında iki türlü arabirimden
sözedilir. Bunlardan birincisi Public UNI (Public User-to-Network Interface -
Genel kullanıcı-ağ arayüzü), bir diğeri ise Private UNI (özel UNI) olarak
adlandırılmaktadır.
Şekil-6 ’te ATM ağ topolojisinin genel olarak yapı mantığı
verilmiştir
NETWORK
|
B-TE1-2: Broadband Terminal Equipment
B-NT1-2: Broadband Network Termination
B-TA
: Broadband Terminal Adapter
CPE
: Customer Premises Equipment
|
ATM
network
|
B-L/ET
|
B-NTI
|
B-NT2
|
B-TA
|
B-TE1/
B-TE2
|
ATM
endpoint
|
ATM
endpoint
|
TA
|
private ATM
switch
|
private
UNI
|
public
UNI
|
public ATM
switch
|
CPE
|
R
|
SB
|
TB
|
UB
|
NETWORK
|
Şekil-6
Şekil-7’de
ATM’in topoloji yapısı temel alınarak oluşturulmuş örnek bir Yerel Bilgisayar
Ağı (LAN) görülmektedir:
Şekil-7
9.1-ATM Yerel
Bilgisayar Ağları (ATM LANs) ve ATM LAN
Emulasyonu
ATM gelecekteki genişbant
çoklu-ortam servislerinin destekleyecek bir teknolojidir. Bununla beraber,
iletişimde IEEE 802 tabanlı yerel ağlar ve bu ağlar üzerinde kullanılan
uygulamalar günümüzde oldukça yaygındır. Bu yüzden ATM’in ilk aşamada bir LAN
teknolojisi olarak IEEE 802 ağlarıyla uyumlu olması gerekir. Bu uyumun
sağlanması için ATM, veri bağlantı katmanı gibi düşünülerek, varolan ağ
katmanları, bu yeni bağlantı katmanını destekleyecek şekilde geliştirilmektedir.
Böylelikle ATM üzerinde IP ve benzeri diğer protokoller çalışabilmektedir.
Varolan LAN
uygulamalarının ATM ağlarında desteklenebilmesi için bir başka çözüm ATM LAN
Emulasyonudur. LAN Emulasyonu, bağlantı uyumlu ATM ağları üzerinde bağlantısız
IEEE 802 ağları servislerinin nasıl gerçekleştirilebileceği üzerinde durur.
Diğer bir deyişle, noktadan noktaya bağlantı sağlayan ATM anahtarının sanal
paylaşılmış iletim ortamı görüntüsünü vermesini sağlamaktır. LAN Emulasyonu,
ATM uç sistemleri ve ATM-LAN köprülerinde ağ katmanının altında gerçekleşir.
9.1.1-LAN Emulasyonu Mimarisi
LAN emulasyon servisi aşağıdaki birimlerden oluşmuştur:
LAN Emulasyon istemcisi (LAN Emulation Client - LEC)
Bu birim, LAN ile ATM ağı arasındaki köprüdür. Kendilerine bağlı olan LAN’lardan
gelen mesajları kabul eder. Eğer mesaj “broadcast” veya “multicast” ise mesajı
“BUS” adı verilen ve aşağıda açıklanan birime gönderir.
BUS (Broadcast and Unknown Server)
Bu birim ATM ağına bağlı tüm LEC’ler ile bağlantılıdır. BUS,
“broadcast” bir mesaj aldığında, bu mesajı bağlı olduğu tüm LEC’lere gönderir.
LEC’ler ise mesajı kendilerine bağlı LAN’lardaki ilgili adreslere ulaştırır.
“Multicast” mesajlar ise, BUS tarafından sadece belli bir grup LEC’e yollanır.
LAN Emulasyon Sunucusu (LAN Emulation Server - LES)
LES’in
amacı, LE-ARP (LAN Emulation Address Resolution Protocol) desteklemektir. LE-ARP protokolü, bir LEC’in gelen bir MAC
(Media Access Control) adresinin içeren başka bir LEC’in ATM adresini bulmasını
sağlamaktadır. Bir LEC, bilinmeyen bir çerçeveye (karşılık gelen ATM adresi
bilinmeyen bir MAC adresi) rastlandığında LES’e LE-ARP sorgusu gönderir. LES
de, bu sorguyu diğer LEC’lere gönderir. Bu sorguyu alan tüm Lec’ler belirtilen
MAC adresinin kendilerinde olup olmadığının kontrol eder, eğer kendisinde ise
kendi ATM adresini de belirterek, LES’e cevap gönderir. LES de ilgili LEC’e haber vererek
adres çözümleme işini bitirir.
10.-ATM 'İN DEZAVANTAJLARI
ATM pahalı
bir teknolojidir. ATM anahtarların liste fiyatları temel konfigürasyon
için 9000$ 'dan başlayarak tam kurulu bir sistemde 350.000$ 'a kadar çıkan bir
çeşitlilik göstermektedir. Fakat yakın bir zamanda bu teknolojinin ucuzlaması
ve yaygınlaşması beklenmektedir .
ATM, yeni bir teknoloji olduğundan henüz
gerekli donanım ve yazılım desteği yeterli değildir. Bunda en önemli etken
standartların oluşmamasıdır. Özellikle yazılım konusunda büyük eksiklikler
bulunmaktadır. "ATM teknolojisi henüz olgunlaşma evresindedir. Endüstri
uzmanları, olgunlaşması için iki ya da
üç yıllık bir süre olduğunu tahmin etmektedir. " [6]
ATM anahtarları,
router(Yönlendirici) tarafından verilmekte olan hizmet sınıflarının pek çoğunu
kendi yapısı içinde kullanıcılara sunmaktadır. Fakat henüz standartların oluşmaması yüzünden
aşağıda sıralanan, router 'ın yapabildiği fonksiyonları anahtarlar henüz
yapamamaktadır .
1. Güvenli WAN Erişimi: Yönlendiriciler diğer
ağlara bağlanma konusunda şimdilik tek güvenilir cihazlar olarak kabul
edilmektedir.
2. Güvenlik Duvarları(Firewall):
Yönlendiriciler network'ün belirli alanları dışında kullanıcı erişimini
sınırlama özelliğine sahiptir. Bu, ortaya çıkan bir sorunun ağın başka bir
bölümüne intikal etmesini engellemektedir.
3. Çoklu Protokol Desteği: Yönlendiriciler,
tipik bir heterojen network'lerde bulunan bütün protokolleri ( IP, IPX, SNA ve
Apple Talk gibi) çalıştırabilmektedir.
11.-ATM 'İN AVANTAJLARI
1. ATM hızla gelişen bir teknolojidir. ITU-T ve ATM Forum,
standartlaşma çalışmalarında bulunmaktadır . Gelecekte belirecek talepler
şimdiden birçok büyük firmanın bu konuda
araştırmalara başlamasına yol açmaktadır. Büyük firmalar bu konuda iş yapan küçük
firmaları kendi bünyelerine katarak bu konuda çalışmalarını hızlandırmaktadır.
Bay Networks, Cisco ve 3Com gibi büyük Network Firmaları bu pastadan daha
büyük bir pay kapabilmek için savaşmaktadır. [6]
2. ATM ile verileri çok büyük
hızlarda taşımamız mümkündür. Hızı artırıcı amaçlı olarak hata kontrolü minimum düzeyde tutulur. Bu durumda,
hata kontrolü kullanıcının sorumluluğuna bırakılmaktadır.
3. Video, ses, TV, text gibi türlü veri tiplerinin hepsini destekleyen ve bütün ağların bir ortamda entegrasyonu için taban
sağlayacak BISDN için ITU-T tarafından switching (anahtarlama) modeli olarak
ATM seçilmiştir.
4. ATM, fiziksel (taşıma) ortamından bağımsızdır. Kablolar
koaksiyel kablo olabileceği gibi fiber de olabilmektedi. Fiziksel katman olarak
SONET tavsiye edilmektedir.
5. ATM var olan sistemlerle uyumludur. Bu, onun her tür ağ ortamıyla
sorun olmadan konuşabilmesini sağlamaktadır.
6. ATM, veri iletiminde esnektir. Değişken bit hızlarını
destekler niteliktedir.Kullanıcı isteğine
göre iletişim hızı belirlenir. "Hatta bazı anahtarlar, kullanıcılara ait
bant genişliği de sunabilirler". [6]
ATM ağında hata oranı ve gecikme değeri bildirilerek belli bir
kalitede hizmet alınabilir. Bu bilgiler, ağa bağlanıldığında kullanıcı tarafından
ağ ortamına bildirilir. İstenilen şey hız ise hata oranı göz önüne
alınmayabilir, hata oranı önemliyse o zaman hızdan ödün vermek gerekecektir .
7. ATM, sabit boyutlarda ve küçük hücreleri anahtarladığından ağ
kaynaklarını optimum kullanabilir. "Devre anahtarlamadaki gibi devre bütün
bağlantı için kapatılmaz. Paket anahtarlama tekniği kullanılarak sadece bilgi
transfer edilirken devre kullanılır" [1]. Diğer taraftan anahtarlar, yalnızca iletişimin gerekli
olduğu düğümler (nodes) arasında kurduğu bağlantılarla, ağ bant genişliğinin
etkin kullanımını sağlamaktadır. [6]
8. ATM ağ yapısı büyümeye elverişlidir.
9. ATM onu yorumlayan firmaya göre bazı
değişiklikler taşıyabilir. Belirli şartları sağladıkları sürece değişik ATM
-lan'lar birbirleriyle iletişim yapabilirler.
10. ATM istatistiki
çoklama tekniğini kullanarak çok kullanıcının veri trafiğini tek bir ağ
üzerinde birleştirir. Bunu da en etkin şekilde yapar.
11. ATM anahtarlama,
yönlendiricilere göre daha kolay anlaşılır, uygulaması kolay ve daha ekonomik
bir çözümdür. Yönlendiricilerin mevcut yazılımlarının düzeyi, karmaşılığı,
mimarisi ve fiyatı anahtarlar karşısında devre dışı kalmalarına yol açmaktadır.
[6]
12. ATM anahtarları , mevcut ağ ekipmanı üzerinde hiç değişiklik
yapmadan ya da çok küçük bazı değişiklikler yaparak ağa eklenebilir.
12.-SONUÇ
B-ISDN teknolojisinin,
varolan iletişim ihtiyaçlarının karşılanması ve gelecekte varolabilecek
ihtiyaçların karşılanmasına yönelik
esnekliği düşünüldüğünde geleceğin iletişim teknolojisi olacağı açıktır.
Ancak, bu yapıyı olanaklı kılan ATM altyapısındaki maliyet ve tam
standartlaşamama gibi dezavantajlardan dolayı henüz bu teknolojiye tam olarak
bir geçiş sağlanamamıştır.
13.
KAYNAKÇA
[1] DE PRYCKER, MARTIN
;“Asynchronous Transfer Mode, Solution For Broadband ISDN”, Ellis Harwood, 1993
[2] STALLINGS, William
;“Networking Standards A Guide to OSI, ISDN, LAN and MAN Standards”
[3] ERDUR, Cenk ; “İleri Bilgisayar Ağları ATM Semineri
Raporu” , 20.5.96
[4] ATEŞ, Ahmet Feyzi ;
“B-ISDN, ATM ve Diğer Gelişen Teknolojiler “,
27.5.96
[5] ÇIMENSEL, Ahmet ; “ATM Networks
Semineri (Bölüm1)” , 13.5.96
[6] STEPHEN, P.
Klett Jr. ; ComputerWorld Dergisi Sayı 298 ,
Sayfa 43-48 , 1995
[7] GAGE, Beth ; ComputerWorld
Dergisi Sayı 305 , Sayfa 27-37 , 1995
[8] Çeşitli Internet Kaynakları
(Başlangıç Noktası -“http://www.yahoo.com”)
[9] EBRAHIM, Zahir ; “A
Brief Tutorial on ATM“
14.-EK-Mini Sözlük
* AAL: ATM Adaptation Layer
* ANSA: Advanced Networked Systems
Architecture
* ASIC: Application Specific Integrated
Circuit
* ATM: Asynchronous Transfer Mode
* AUU: ATM User User indication, "the bit",
end of AAL5 block marker
* AVA: ATM Video Adaptor
* B-ISDN: Broadband Integrated Services Digital
Network
* CAC: Connection Admission Control
* CBR: Constant Bit Rate
* CCITT: Comitée Consultatif International Télégraphique et Téléphonique
(now the ITU-TS)
* CLP: Cell Loss Priority (a bit in a B-ISDN
cell header)
* CRC: Cyclical Redundancy Check
* DAN: Desk Area Network
* E1: 2 Mbit/sec
* E2: 8 Mbit/sec
* E3: 34 Mbit/sec
* EATM: EISA ATM (an adaptor)
*
EDL: Ethernet Data Link
* FDDI: Fiber Distributed Data Interface
* FAS: Framing and Sequencing
* FIFO: First In First Out
* GFC: Generic Flow Control (a 4 bit field
in a B-ISDN cell header)
* H.261: A constant bit rate video
compression standard.
* HEC: Header Error Check (an 8 bit CRC in a
B-ISDN cell)
* IOC: Input Output Controller
* IP: Internet Protocol
* ISDN: Integrated Services Digital Network
* ISO: International Standards Organisation
* ITU: International Telecommunication Union
* LAN: Local Area Network
* MAC: Media Access Control
* MAN: Metropolitan Area Network
* MPEG: Motion Picture Experts Group (a
video compression standard)
* NOSSDAV: Network and Operating System
Support for Digital Audio and
Video ("nose dive")
* NNI: Network Network Interface
* OC3: 155 Mbit/sec
* OC12: 622 Mbit/sec
*
OSI: Open Systems Interconnection
* PDU: Protocol Data Unit (a packet)
* PLT: Payload Type (a 3 bit field in a
B-ISDN cell header)
* PTM: Packet Transfer Mode
* Q.93B: The Standard (i.e. awful) ATM
signalling protocol
* QOS: Quality of Service
* SAR: Segmentation and Reassembly
* SDH: Synchronous Digital Hierarchy
* SDU: Service Data Unit (a packet)
* SOC: Start of Cell
* SONET: Synchronous Optical Network
* SPROING:To Break
* STM: Synchronous Transfer Mode
* STS1: 155 Mbit/sec
* STS4: 622 Mbit/sec
* T1: 1.5 Mbit/sec
*
T3: 45 Mbit/sec
* TDM: Time Division Multiplexing
* UNI: User Network Interface
* VC: Virtual Channel or Virtual Circuit
* VCI: Virtual Circuit Identifier (also
Virtual Channel Identifier)
* VP: Virtual Path
* VPI: Virtual Path Identifier
* WAN: Wide Area Network
1.Özet
Bu projenin amacı günümüz telekomünikasyon yapısını
ve ihtiyaçlar doğrultusunda bu yapının
gelişmesini anlatmaktır. Bu yeni ihtiyaçlara cevap verebilecek yapı olarak
B-ISDN kapsamında ATM teknolojisi ele alınmıştır. ATM protokolü kendine has
katman yapısı ve anahtarlama teknolojisini içermektedir. ATM'de veri
iletişiminde hücre adında özel bir yapıya sahip paketler kullanılmaktadır. ATM,
kendine has topolojisinin yanında varolan sistemlerle de uyumludur.
2.Giriş
Bilgisayar teknolojisinin ve dolayısıyla bilgisayar
ağlarının büyük bir hızla gelişmesi sonucu, bilgisayarların kullanım amaçları
ve üstlendikleri hizmetler eskisine oranla çok daha geniş bir alana
yayılmıştır. Bu gelişime paralel olarak da yeni kullanım alanları doğmuş ancak
bir süre sonra varolan yapılar bu yeni taleplere karşılık veremez hale
gelmişlerdir. Şu anda ihtiyaç duyulan
pek çok servis (ses, görüntü, klasik veri iletimi, interaktif servisler vb.)
yüksek hızlarda iletim kapasitesi gerektirmektedir.
Veri iletişiminde ortaya çıkan ilerlemeler (VLSI-Very Large
Scale Integration, fiber optik ve anahtarlama teknolojilerindeki gelişmeler) bu
ihtiyaçlara cevap verebilecek B-ISDN yapısının oluşmasına imkan sağlamıştır.
ITU-T (International
Telecommunication Union), B-ISDN için
transfer modu olarak ATM'i önermiştir. ATM ve B-ISDN teknolojisi aynı zamanda
varolan sistemlere de adapte edilebilir olması açısından da avantajlıdır.
3.-GÜNÜMÜZ
TELEKOMUNİKASYON ALTYAPISI ve B-ISDN
Bugünün telekomunikasyon ağlarının
herbiri spesifik hizmetler vermek üzere tasarlanmıştır. Bunun anlamı, herbir
telekomunikasyon hizmeti için en az bir ağın olması ve bu ağların hedeflediği
spesifik servisi sağlamak amacıyla tasarlanıp çalıştırıldıklarından dolayı,
çoğunlukla başka amaçlar için kullanılmaya uygun olmamalarıdır. Örneğin, X.25
veri iletişimi ağları uçtan uca gecikme ve kayma değerlerinin kontrol
edilememesi nedeniyle, gerçek zamanlı ses iletişimi için uygun değildirler.
Ayrıca, bir ağ içinde, belli zamanlarda boş duran birtakım kaynaklar da başka
amaçlar için kullanılamamaktadır. (Örneğin, varolan telefon ağlarının TV yayını
için uygun olmamaları sebebiyle günün geç saatlerinde ses iletim ihtiyacının
düşük olmasına rağmen, kablolu TV yayını için kullanılamaması.)
Sonuçta birbirinden bağımsız ve farklı birçok iletişim ağı
ortaya çıkmış ve bu durum, ağların kullanım esnekliğini ve etkinliğini
düşürmüştür. Buna paralel olarak da bu tür ağların tasarım, bakım, üretim
maliyetleri de yükselmiştir. Bu ağlara örnek verecek olursak :
· Düşük hızlarda (300 kb/sn) bilgi transferi sağlayan teleks
ağları,
· POTS (Plain Old Telepnone Service) adıyla da bilinen ve
PSTN (Public Switched Telephone Network -
Anahtarlamalı Telefon Ağı ) üzerinden sağlanan iki yönlü ses iletişimi
için tasarlanan ağlar,
· X.25 ve benzeri PSDN
(Public Switched Data Networks ) paket anahtarlamalı veri ağları,
· CATV (Community Antenna
TV), kablolu televizyon ağları,
· LAN (Local Area Networks
), yerel iletişim ağları
Yukarıda
örnek verdiğimiz telekomunikasyon ağları ve varolan ihtiyaçlar gözönüne
alındığında, bu altyapının yetersiz kalacağı açıktır. Özellikle gelecekte
kullanılması düşünülen video-telefon, video-konferans, video-kütüphane ve
benzeri servisleri düşünürsek, bu tür ihtiyaçları karşılayacak iletişim
ağlarının servis türünden bağımsız, genişbantlı tek bir ağ olması gerektiği
ortaya çıkmaktadır.
Bu
alandaki çalışmalar seksenli yılların başlarında başlatılmış ve ISDN
(Integrated Switched Digital Networks) olarak adlandırılmıştır (Şu anda N-ISDN
Narrowband ISDN olarak anılmaktadır). Bu ağların bant genişliğinin
arttırılmasıyla hertürlü ses, veri, hareketli video ve yüksek çözünürlükte TV
iletiminin entegre edilmesi sağlanmış ve gelişen yapı B-ISDN (Broadband ISDN)
olarak adlandırılmıştır.
B-ISDN
yapısını olanaklı kılan faktörler, fiber-optik teknolojisinin gelişerek
iletişim hatlarında geniş çapta kullanılır olması ve yarı iletken
teknolojisinde sağlanan ilerlemeler olarak gösterilebilir. Böylelikle, yeni
geliştirilen yapıda, iletim ortamının daha güvenilir olması ve hata kontrolunun
ağ içinde yapılması gerekliliğinin ortadan kalkması ile daha etkin ve maliyeti
düşük yeni bir aktarım biçimi kullanılabilmiştir. İşte bu yeni teknoloji ATM
(Asynchronous Transfer Mode) olarak adlandırılmaktadır.
ITU-T (Eski adıyla CCITT) tarafından da yapılan
araştırmalar sonucu 1988 yılında ATM’ in B-ISDN için en uygun aktarım protokolu
oldugu belirlenmiştir.
ITU-T tarafından B-ISDN yapısı ile
verilmesi düşünülen hizmetler şöyle sıralanabilir:
·
HDTV(High Definition TV) Yüksek çözünürlüklü
TV servisleri,
·
Videokonferans servisleri,
·
İstek üzerine video (Video on Demand)
servisleri,
·
Karşılıklı iletişime dayalı (interaktif)
servisler,
·
Mesaj servisleri,
·
Veri transfer servisleri.
4.-ATM NEDİR ?
Her türden veriyi yüksek hızlarda taşıyabilen anahtarlanmış, hücre tabanlı
aktarım protokolüdür. ATM her türden network trafiğini (veri, ses video ve TV
sinyalleri) 53-byte'lık hücreler halinde
iletir.
4.1-ATM
Anahtarlamanın Tarihçesi
ATM’in başlangıcından bu yana gelişimi Şekil-1’de
görülmektedir :
Şekil-1
4.2-Transfer Modları
Transfer
modu, bir telekomunikasyon ağında kullanılan iletim (transmission), çoklama
(multiplexing) ve anahtarlama (switching) tekniklerinin toplamına verilen
isimdir. Network dünyasında transfer modu konusunda temel olarak iki kutup
bulunmaktadır. Bunlar devre anahtarlama ve paket anahtarlamadır.
Devre ve paket
anahtarlama belirtildiği gibi iki uç noktadır ve birbirlerine karşı avantaj ve
dezavantajlara sahiptirler. Zamanla bu iki zıt yöntemin de diğer yöntemin
avantajlarını kullanan varyasyonları ortaya çıkmıştır. Aşağıda bu metodların
başlıca açıklamaları bulunmaktadır.
4.2.1-Devre Anahtarlama
(Circuit Switching):
Bu transfer modu özellikle telefon
ağlarında kullanılır. N-ISDN 'de de bu yöntem kullanılmaktadır.
Devre anahtarlamanın temeli, bir iletim sırasında sadece
ilgili bağlantı tarafından kullanılabilen adanmış sabit kapasiteli bir kanal
oluşturmaktır.
Belirli zaman aralıklarında (125 µs gibi) sabit
uzunlukta bit kümeleri gönderilir (8 bit, 1000 bit gibi). Bu kümelerin her birine
'time slot' denir ve bunlar birleştirilerek çerçeveleri (frame) oluştururlar. (Çerçeveler
de belirli aralıklarda tekrarlanır. Bu çerçevelerin içindeki her time slot,
devam ettiği sürece belirli bir bağlantıya adanır. Ancak bağlantı
kapatıldığında ilgili slot başka bir uygulamanın kullanımına sunulabilir.) Pür
hat anahtarlamalı sistemlerde her time slot'un barındırabileceği bit miktarı
aynıdır ve sabittir. Yani her servis için sabit bir bit hızı vardır.
Devre anahtarlamalı sistemlerde bir hat, bağlantı boyunca
bir uygulamaya adandığından dolayı
sistemde oluşacak gecikmeler ancak iletim hattındaki yayılma gecikmesine
bağlıdır.
4.2.2-Multirate Circuit Switching:
Devre anahtarlamasının kısıtlamalarını ortadan kaldırmak
için tasarlanan bu yöntemde, bir bağlantı için birden fazla time slot
kullanılabilmektedir. Ancak birden fazla time slot kullanılırsa bunların
senkronize edilmesi zorunluluğu ortaya çıkar.
Başka bir problem de 'basic rate'in seçilmesindedir. Eğer
bu değer büyük seçilirse (örneğin 2 Mbit/s) küçük hat genişliği gerektiren
servisler (ses 64 kbit/s) gereksiz yere kaynak tüketmiş olacaklardır. Bu değer
küçük seçilirse de (1 kbit/s) büyük bant genişliği gerektiren servisler (HDTV
144 Mbit/s) için çok fazla miktarda kanalın kontrol edilmesi gerekecektir; bu
da işleri çok karmaşık hale getirir. Bu soruna üretilen çözüm ise bir çerçeveyi
farklı bit oranları olan slotlara bölmektir.
Böyle bir sistemde her farklı time slot için özel bir tür
anahtar kullanılmalıdır (farklı bit rate'lerden dolayı). Abonenin gelen/giden
bilgisi anahtarlara/anahtarlardan yönlendirilmeden önce multiplex/demultiplex
işleminden geçirilmelidirler (Bu işlem farklı bit rate'deki kanalların ilgili
anahtara yönlendirilmesi için yapılır).
Farklı bit rate'ler kullanılabilmesine karşın bunların
sabit değerler olmasından dolayı, servislerin ihtiyaçlarında oluşacak
değişikliklere karşı esnek olması beklenemez (Bant genişliği ihtiyacının
artması, sıkıştırma teknolojisindeki gelişmelerden dolayı ihtiyacın azalması
vb.).
Bu sistemler doğal olarak hat anahtarlamanın
dezavantajlarını da içerirler (Kaynakların ihtiyaç dışında meşgul edilmesi
vb.).
4.2.3-Paket Anahtarlama (Packet Switching):
Bu transfer modunda kullanıcının bilgileri paketler halinde taşınır. Bu
paketlerde kullanıcının bilgisine ek olarak başlık (header) denen ve
yönlendirme (routing), hata kontrol ve akış kontrol için kullanılan bilgileri
içeren saha da bulunur.
Eski bağlantıların güvenliği düşük olduğundan dolayı bu tip
sistemlerde ileri düzeyde hata kontrolü yapılır (İçinden geçilen her node'da
paket içeriği, hatalara karşı kontrol edilir…). Her node ‘da hatalı paketler
için tekrar gönderim isteği yapılır.(ARQ -Automatic Repeat Request)
Paket boyutları değişkendir. Dolayısıyla kompleks akış
kontrolü gerektirirler. Ancak iletişim hızı düşük olduğundan bu pek sorun
yaratmamaktadır.Protokollerin karmaşıklığından ve tekrar gönderme işleminden
dolayı yüksek hız gerektiren servislerde ve gerçek zamanlı uygulamalarda pek
kullanılmazlar.
4.2.4-Frame Relaying:
Frame Relaying,
iletim hatlarının güvenilirliği nedeniyle, ağ içinde paket anahtarlamalı
sistemlere (X.25) oranla daha az fonksiyonelliğe sahiptir (Daha kısıtlı hata
kontrol ve düzeltme yapılır). Bu da ağ içi anahtarlama noktalarında daha hızlı
bilgi işleme imkanı sağlar.
Paketlerin tekrar gönderimi ancak uç noktalar arasında
yapılır (yani aradaki node'lar paketlerin tekrar gönderimini istemez). Buna
karşın node'larda paketler hala hatalara karşı kontrol edilirler. Bunun nedeni
hatalı paketlerin iletimine devam edilmesinin bir anlamının olmamasıdır.
4.2.5-Cell Relaying(Fast
Packet Switching-ATM):
Fast Packet Switching
(ATM), birçok varyasyonu içeren bir kavramdır. Ancak bunların temel
karakteristiği aynıdır: Ağda minimum fonksiyonellikle paket anahtarlama.
Gönderici ve alıcı arasında bir senkronizasyon yoktur.
Senkronizasyon, gerektiğinde boş paketlerin eklenip çıkarılmasıyla
sağlanabilir.
ATM'de ağ içinde CRC ya da ARQ türünden hata kontrol
fonksiyonları yoktur. Hat anahtarlamada olduğu gibi hataların düzeltilmesi uç
noktalardaki protokollere bırakılmıştır.
ATM ‘in Frame Relay’den en önemli farkı, ATM’de verilerin
sabit ve küçük boyutlu paketler (hücreler) halinde iletilmesidir. Frame Relay
de ise paket boyu değişkendir.
5.-ATM HÜCRE YAPISI
ATM’de bilgi aktarımı için kullanılan temel birim 53
byte'lık sabit uzunlukta olan ve hücre (cell) olarak adlandırılan özel bir tür
pakettir. Hücrelerin ilk 5 byte'lık kısmı başlık (header) olarak adlandırılır
ve hücrenin ağ içinde ilerleyebilmesi için gerekli olan temel bilgileri taşır.
(Paket anahtarlama yönteminde bulunan ve ileri düzeyde fonksiyonellik sağlayan
alanlar hücre başlıklarında olabildiğince azaltılmıştır). Başlığın
fonksiyonelliğinin düşük düzeyde tutulması da ATM anahtarlarına yüksek hızda
işlem yapma imkanı verir. Geriye kalan 48 byte ise iletilecek olan bilgiyi
içerir.
5.1- ATM’deki Hücre Tipleri
Unassigned Cells:
Trafik olmadığı durumda, ATM tabakası
tarafından gönderilen boş paketlerdir. Bantgenişliğini doldurmak veya
senkronizasyon amaçlı kullanılırlar. Aynı zamanda IDLE hücreleri vardır. Bu
hücrelerin özelliği fiziksel tabaka tarafından yaratılmalarıdır. ATM tabakasına
çıkmazlar, fiziksel katmanlar arasındaki senkronizasyonda kullanılırlar.
Meta-Signaling
Cells: Ağ ile bir oturum kurmakta ve
oturum servislerini saptamada kullanılırlar.
General Broadcast
Cells: UNI’deki tüm istasyonlara
gönderilen paketleri belirlerler.
Point-to-Point
Signaling Cells: ATM tabakasında noktadan
noktaya bağlantı sağlayan UNI veya NNI arayüzü hücrelerini belirlerler.
F4 ve F5
Hüceleri: Sırasıyla VP ve VC bakım
hücrelerini belirlerler.
Resource
Management Cells: VC üzerinde hızlı kaynak
yönetimi için ayrılmışlardır.
ILMI (Interim
Local Management Interface) Cells: ATM
kullanıcı aygıtlarının durumlarını ve UNI’deki VP ile VC konfigürasyonu ile
ilgili bilgileri taşırlar.
5.2-Neden Sabit Uzunluk ?
Bir sistemde sabit uzunlukta hücreler kullanıldığında
etkinlik, gönderilecek bilginin uzunluğuna göre değişir. Eğer gönderilecek
bilgi küçük miktarlardaysa ve hücrelere bölündüğünde son hücrede büyük oranda
(30-40 byte) boşluk kalıyorsa bu iletişimdeki oranı pek yüksek olmaz. Ancak
gönderilecek bilgi 48 byte'ın tam katıysa yani hücrelerin hepsi tamamen doluysa
maximum etkinliğe (%90.5) ulaşılabilir. (Maximum etkinliğin %90.5 olmasının
sebebi gönderilen 53 bytelik her hücrenin 5 byte'ının başlığa ayrılmış
olmasıdır. 48/53=0.905...)
Değişken uzunlukta hücreler kullanılınca sistemde neredeyse
%100 ’lük etkinliğe ulaşılır. Ancak, farklı uzunluktaki paketlerin kuyruklama
için buffer'da etkin olarak saklanması oldukça zordur ve komplike algoritmalar
gerektirir. Bu kompleks buffer işlemleri de yüksek hız gerektirir. Bu tür
pratik nedenlerden dolayı degişken uzunlukta hücre kullanımı engellenmiştir.
Sabit uzunluktaki hücrelerde kalan boşluklar sistem
etkinliğine olumsuz yönde etki eder, ancak B-ISDN'de sunulacak servislerin
zaten yüksek miktarda bilgi iletimine ihtiyaç duyması bu olumsuzluğu ortadan
kaldırır.
5.3-Neden 53 Byte ?
Hücre boyunun seçilmesinde farklı faktörler rol oynamıştır.
Uzun bilgi alanları iletimin etkinliğini artırır. Çünkü her başlıkla beraber
gönderilen bilginin miktarı artar ve böylece başlıklardan kaynaklanan
overhead'ın oranı azalır.Ancak bilgi alanının boyu arttıkça paketleme
sırasındaki gecikme de (packetization delay) artar. Uzun hücreler
kullanıldığında ağ içindeki gecikmenin de belirli limitleri aşması daha kolay
olur (Örneğin telefon görüşmeleri için bu gecikme sınırı 25 ms'dir). Bu da ses
iletiminde yankı önleyicilerin kullanılmasını zorunlu kılar. Ayrıca uzun
hücreler anahtarlarda kullanılan geçici depolama alanlarının büyük olmasını
gerektirir. (Hücre kayıplarını önlemek için kuyruklar hücre boyutundan bağımsız
olarak belli miktarda hücreyi saklayabilecek kapasitede olmalıdırlar)
Bütün bu etkenler göz önüne alınarak hücredeki bilgi
sahasının boyunun 32 ya da 64 byte civarında olması öngörülmüştür (Avrupa ses
iletimindeki kolaylığından dolayı 32, Amerika ve Japonya ise etkinliğinden
dolayı 64 byte'lık boyutlarda ısrar etmişlerdir). Sonuçta 48 byte bilgi + 5
byte başlık olmak üzere 53 byte hücre boyutu olarak kabul edilmiştir.
6.-ATM KATMANLARI
ATM ‘in üzerinde kurulduğu fiziksel tabaka yapısı
SONET/SDH, DS3 veya FDDI olabilir. ATM, fiziksel ortamdan bağımsızdır ancak geniş
tabanlı genel taşıyıcı olarak, eş zamanlı bir iletim yapısı olan SONET (Synchronous Optical
Network) tercih edilir. SONET Bellcore tarafından üretilmiş ve ANSI (American
National Standards Institue) tarafından standartlaştırılmıştır. SONET, fiber
kablo üzerinde yüksek hızda dijital sinyal iletimini sağlamak için
tasarlanmıştır. Verileri 51.84 Mbps hızda taşımak için standart çoklama
biçimini kullanır. Ayrıca optik sinyal standardını, farklı kaynaklardan
karşılıklı bağlantı için kullanır. Geniş işlem yapma, yönetim ve bakım
özelllikleri vardır. Esnek yapısıyla, gelecekte varolacak yeni teknolojilere
ayak uydurabilir.
Fiziksel tabakanın
üzerinde ise ATM ve AAL (ATM Adaptation Layer) olmak üzere iki tabaka bulunur.
AAL, ATM ile diğer katmanlar arasında arayüz görevini yürütür. AAL, CS
(Convergence Sublayer) ve SAR (Segmentation and Reassembly Sublayer) den
oluşur. SAR farklı uzunluk ve formattaki PDU (Protocol Data Unit) ‘ları (yani
iletilecek veri paketlerini) 48 okteklik (sekizlik) parçalara ayırır. CS’nin
fonksiyonları AAL tarafından işlenen trafiğin tipine göre değişir.
Gönderici taraftaki
ATM tabakasında, SAR’dan gelen 48 sekizlik bilgiye 5 byte’lık hücre başlığını
ekler. Ağ içindeki anahtarlardaki ATM tabakaları VPI ve VCI bilgilerini
kullanarak yönlendirme işlemlerini gerçekleştirir. Alıcıdaki ATM tabakası 5
byte’lık başlık bilgisini çıkarır ve AAL’ e iletir.
6.1- AAL Katmanı Tarafından Desteklenen Trafik
Sınıfları
ATM AAL katmanı, değişik trafik
tiplerini desteklemek için 5 tane değişik trafik sınıfına sahiptir. Her trafik
tipi için kaynak ve varış noktaları arasında herhangi bir zaman ilişkisi
olmasının gerekip gerekmediği, bit hızının karakteristiği ve bağlantı uyumlu
olup olmadığı, trafik tipleri için birbirinden farklıdır.
6.2 -AAL
Tipleri
AAL, trafik tiplerini desteklemek
amacıyla AAL farklı protokolllere sahiptir.
6.2.1-AAL-1
A Sınıf trafiği destekler ve PDU yapısı 48
sekizlikten oluşur. Payload(Kullanıcı Verisi), 46 veya 47 sekizlik
olabilmektedir.
SNP (Sequence Number Protection), SN üzerinde hata kontrolü yapar. SNP sahası,
ancak 1 bitlik hataları düzeltebilmektedir. Payload ise CSI (Convergence
Sublayer Indication) , işaretci sahanın kullanıp kullanılmayacağını gösterir.
CSI’nın sıfır olması işaretçinin kullanılmadığını ve kullanıcı verisinin 47
sekizlik olduğunu gösterir. İşaretçi, verilerin hücre içinde yerleşimini
tutmaktadır.
6.2.2- AAL –2
Sınıf-B
trafiğini destekleyen protokoldür. Başlık kısmında SN (Sequence Number) ve IT (Information Type) bulunur.
IT sahası, BOM (Beginning Of Message), COM (Continuation of Message) ve EOM
(End Of Message) sahalarından oluşur. Kuyruk kısmında, LI (Length Indicator)
sahası Payload sahasındaki sekizlik sayısını tutar, CRC’de hata kontrolünde
kullanılır.
6.2.3 - AAL-3/4
İlk olarak,
bağlantı uyumlu VBR trafiğini destekleyen AAL-3 ve bağlantısız VBR trafiği için
AAL-4 protokolleri tanımlandı. Sonra bu iki tip birleştirilerek, AAL-3/4
protokolü tanımlandı.
SN,
IT, LI ve CRC sahaları AAL-2 protokolünde kullanılan yapıyla aynıdır, ama
AAL-3/4 ‘te bu sahaların uzunlukları bellidir. MID (Message IDentification)
sahası, belli bir bağlantıdan gelen trafiğin birleştirilmesinde kullanılır.
6.2.4- AAL-5
Forum
tarafından yüksek hızda, bağlantı
uyumlu servis kullanıcılarına hizmet veren, az overhead’e sahip, hata bulma
oranı yüksek olan protokoldur. Frame Relay trafiğinde uygundur.
6.2.5-AAL-6
ATM-Forum
tarafından ortaya çıkarılan, MPEG kodlu video için tanımlanacaktır.
Şekil-2 :
B-ISDN protokol katmanları ve üstlendikleri görevler görünmektedir.
7.-ATM’DE BAĞLANTI YAPISI
ATM’de mantıksal bağlantılar, sanal
kanal bağlantıları (VCC-Virtual Channel Connection) olarak adlandırılır. VCC,
B-ISDN ‘in en temel birimidir. Bir VCC , iki son kullanıcı arasında ağ
aracılığıyla kurulur. Değişken oranlarda (variable rate), sabit boyutlu
hücreler full-duplex (çift yönlü) akışla bağlantı üzerinden taşınır. VCC ‘ler
aynı zamanda kullanıcı-network exchange (kontrol sinyalleme) ve network-network
exchange (network yönetimi ve yönlendirme ) için kullanılır. Şekil-3’te sanal bir ATM
bağlantısının kesiti gorulmektedir
Şekil-3
Sanal yol (VP-Virtual Path)
kavramı, yüksek hızlı ağlarda kontrol harcama-larının yüzdesinin bütün network
harcamaları içinde yüksek yüzdelere artması sonucu geliştirilmiştir. Sanal yol
tekniği, network içinde ortak yolları paylaşan bağlantıları gruplayarak
(VPC-Virtual Path Connection) kontrol masraflarını azaltmaya yarar. Network
yönetim işlemleri bundan sonra çok sayıdaki bireysel kanallar yerine az
sayıdaki bağlantı gruplarına uygulanabilir.
VPC
’lerin kulanımından doğan avantajlar :
Þ Basitleştirilmiş network mimarisi (Ağ ortamındaki
fonksiyonların VPC ve VCC kavramlarına göre sınıflandırılmalarından dolayı
işlemler daha basitleşir),
Þ Artırılmış network performansı ve güvenilirlik (Ağ daha az
iletişim birimiyle uğraşır),
Þ Azaltılmış işlem ve kısa bağlantı kurulma zamanı (Bağlantı
işlemlerinin büyük kısmı VPC ilk kez oluşturulurken yapılır. Var olan bir
VPC’ye VCC’ler eklemek çok az bir işlem gerektirir),
Þ Geliştirilmiş ağ servisleri. [2]
ATM'de veri bağlantıları VCI ve VPI ile tanımlandıktan
sonra, verilen herhangi bir yöne giden sanal yollar çoklanarak fiziksel hatta
verilir. Sanal kanal bağlantıları son kullanıcılar arasında anlamlıdır. Fakat
bu bağlantı tanımlayıcıları, hücreler ATM ağı içinde ilerlerken değişebilir. Bu
yüzden belli bir VCI değerinin kullanıcı açısından bir önemi yoktur. Sorumluluk
ATM ağındadır.
VC ve VP ile oluşan bağlantı yapısı
şöyledir: İki kullanıcı için kontrol işlemi tek tek bütün sanal kanallar yerine
sadece VP bazında yapılabilir. Yani, bütün kanallar yerine sadece bir yol
(path) incelenir.
İki nokta arasında
sonuçta oluşan bağlantının tümü Şekil-4 ‘te ifade edimiştir.
Şekil-4
8.-ATM ANAHTARLAMA
ATM anahtarlamasındaki temel fikir
mantıksal bir kanaldan anahtara giren bilginin yol üzerindeki bir sonraki
noktaya iletilmesi için başka bir ATM kanalına yönlendirilmesidir. Genelde bir
anahtardan çıkan çok sayıda mantıksal ATM kanalı olmasından dolayı, yönlendirmeden
önce ilgili çıkış kanalı seçilmelidir. Bu seçim, giriş portunun numarasına ve
hücrenin VPI, VCI değerlerine bağlı olarak yapılır.
8.1 -ATM Anahtarları
Anahtara ulaşan her hücrenin giriş port numarasına,VPI ve
VCI değerlerine bakılır. Ardından, bu değerlerden yararlanılarak yönlendirme
tablosundan hücrenin çıkış portu ve yeni VPI, VCI değerleri bulunur. Yeni
bulunan VPI ve VCI değerleri; hücre, anahtardan çıkmadan önce başlıktaki eski
değerlerin yerlerine yerleştirilir. Sonunda da hücre, tablodan bulunan çıkış
portuna yönlendirilir.
Bir anahtara
genelde birden çok porttan hücre girdiğinden, bu hücrelerin çıkış portlarının
çakışması olasıdır. Böyle bir durumda ilgili çıkış portu boşalıncaya kadar kimi
hücreler geçici olarak bir tampon alanda saklanmak zorundadırlar. Bu hücreleri
sıraya sokma işlemi kuyruklama olarak adlandırılır.
ATM anahtarları,
sanal yol (VP) ve sanal kanal (VC) anahtarları olmak üzere kendi aralarında
ikiye ayrılırlar. Sanal yol anahtarları
yönlendirme sırasında sadece başlıktaki VPI değerini yenilerler. Halbuki
sanal kanal anahtarları başlıktaki hem VPI hem de VCI degerlerini yenilerler.
Anahtarlar için
böyle bir ayrıma gidilmesinin nedeni ağ içindeki ara noktalarda yapılan işi
azaltarak anahtarlamayı hızlandırmaktır. Ara noktalarda sanal yollar değişmekte ancak bunların
içerdiği kanallar aynı kalmaktadır. Böyle durumlarda sadece VPI değerlerini
inceleyen bir anahtar kullanmak daha etkin bir yoldur.
Şekil-5 ’te sanal yol ve sanal kanal
anahtarlarına örnek görülmektedir.
Şekil-5
Sonuç olarak bir ATM anahtarının temel
görevleri aşağıdaki üç maddede toplanabilir:
1. Hücreleri yönlendirmek (routing),
2. Gerektiğinde hücreleri kuyruklamak (queing),
3.
Gelen hücrelerin
başlıklarındaki VPI ve VCI değerlerini yönlendirme tablosundaki karşılıkları
ile değiştirmek.
8.2-ATM Anahtarlarının Performansını Etkileyen Faktörler
Bağlantı Bloklama
(Connection Blocking)
Bağlantı bloklama özelliği, anahtardaki bağlantı sayısının
ve yükün çok fazla olmasından dolayı giriş portundan gelen bilgilerin bir çıkış
portuna yönlendirilememesi durumunda bağlantının reddedilmesi anlamına gelir.
Hücre Kayıpları
(Cell Loss)
Eğer anahtar içindeki kuyruklara hücreler çok hızlı ve çok
sayıda gelirse, kuyruklarda taşma olacak ve bu da bazı hücrelerin kaybolmasına
neden olacaktır. ATM anahtarları tasarımcıları, hücre kaybolma olasılığını 10-8
ile 10-11 arasında tutmaya çalışmaktadır.
Hücre Eklenmeleri
(Cell Insertion)
ATM anahtarı içinde bazı hücreler yanlış yönlendirme
sonucunda, başka bir mantıksal bağlantıya gidebilirler. Böylece bazı çıkış
portlarında gereksiz hücre birikmesi olabilir. Bu tip bir olayın olması
olasılığı da 10-11 ile 10-14 arasın tutulmaya
çalışılmaktadır.
Anahtarlama
Gecikmesi (Switching Delay)
Hücrelerin anahtar içinden geçerken mümkün olduğunca hızlı
geçmesi gerekmektedir. Aksi halde, gecikme duyarlı gerçek zamanlı verilerin
iletiminde sorunlarla karşılaşılacaktır. Bu gecikmeler, 10 ve 1000 ms
arasında değerler alabilmektedir. Bu değerler birtakım olasılıklarla birlikte
de verilebilmektedir. Örneğin, 10-10 değerinde 100 ms
gecikme sözü, “anahtardaki gecikmenin 100 ms’den fazla olması olasılığı
10-10 dan azdır” anlamına gelmektedir.
9.-ATM TOPOLOJİSİ
ATM, yapı ve geliştirme bakımından esnek bir topolojiye
sahiptir. Bunun yanında varolan ağ topolojilerine uygulanabilir ve etkin bir
yapı oluşturulabilir. ATM’in topoloji yapısında iki türlü arabirimden
sözedilir. Bunlardan birincisi Public UNI (Public User-to-Network Interface -
Genel kullanıcı-ağ arayüzü), bir diğeri ise Private UNI (özel UNI) olarak
adlandırılmaktadır.
Şekil-6 ’te ATM ağ topolojisinin genel olarak yapı mantığı
verilmiştir
NETWORK
|
B-TE1-2: Broadband Terminal Equipment
B-NT1-2: Broadband Network Termination
B-TA
: Broadband Terminal Adapter
CPE
: Customer Premises Equipment
|
ATM
network
|
B-L/ET
|
B-NTI
|
B-NT2
|
B-TA
|
B-TE1/
B-TE2
|
ATM
endpoint
|
ATM
endpoint
|
TA
|
private ATM
switch
|
private
UNI
|
public
UNI
|
public ATM
switch
|
CPE
|
R
|
SB
|
TB
|
UB
|
NETWORK
|
Şekil-6
Şekil-7’de
ATM’in topoloji yapısı temel alınarak oluşturulmuş örnek bir Yerel Bilgisayar
Ağı (LAN) görülmektedir:
Şekil-7
9.1-ATM Yerel
Bilgisayar Ağları (ATM LANs) ve ATM LAN
Emulasyonu
ATM gelecekteki genişbant
çoklu-ortam servislerinin destekleyecek bir teknolojidir. Bununla beraber,
iletişimde IEEE 802 tabanlı yerel ağlar ve bu ağlar üzerinde kullanılan
uygulamalar günümüzde oldukça yaygındır. Bu yüzden ATM’in ilk aşamada bir LAN
teknolojisi olarak IEEE 802 ağlarıyla uyumlu olması gerekir. Bu uyumun
sağlanması için ATM, veri bağlantı katmanı gibi düşünülerek, varolan ağ
katmanları, bu yeni bağlantı katmanını destekleyecek şekilde geliştirilmektedir.
Böylelikle ATM üzerinde IP ve benzeri diğer protokoller çalışabilmektedir.
Varolan LAN
uygulamalarının ATM ağlarında desteklenebilmesi için bir başka çözüm ATM LAN
Emulasyonudur. LAN Emulasyonu, bağlantı uyumlu ATM ağları üzerinde bağlantısız
IEEE 802 ağları servislerinin nasıl gerçekleştirilebileceği üzerinde durur.
Diğer bir deyişle, noktadan noktaya bağlantı sağlayan ATM anahtarının sanal
paylaşılmış iletim ortamı görüntüsünü vermesini sağlamaktır. LAN Emulasyonu,
ATM uç sistemleri ve ATM-LAN köprülerinde ağ katmanının altında gerçekleşir.
9.1.1-LAN Emulasyonu Mimarisi
LAN emulasyon servisi aşağıdaki birimlerden oluşmuştur:
LAN Emulasyon istemcisi (LAN Emulation Client - LEC)
Bu birim, LAN ile ATM ağı arasındaki köprüdür. Kendilerine bağlı olan LAN’lardan
gelen mesajları kabul eder. Eğer mesaj “broadcast” veya “multicast” ise mesajı
“BUS” adı verilen ve aşağıda açıklanan birime gönderir.
BUS (Broadcast and Unknown Server)
Bu birim ATM ağına bağlı tüm LEC’ler ile bağlantılıdır. BUS,
“broadcast” bir mesaj aldığında, bu mesajı bağlı olduğu tüm LEC’lere gönderir.
LEC’ler ise mesajı kendilerine bağlı LAN’lardaki ilgili adreslere ulaştırır.
“Multicast” mesajlar ise, BUS tarafından sadece belli bir grup LEC’e yollanır.
LAN Emulasyon Sunucusu (LAN Emulation Server - LES)
LES’in
amacı, LE-ARP (LAN Emulation Address Resolution Protocol) desteklemektir. LE-ARP protokolü, bir LEC’in gelen bir MAC
(Media Access Control) adresinin içeren başka bir LEC’in ATM adresini bulmasını
sağlamaktadır. Bir LEC, bilinmeyen bir çerçeveye (karşılık gelen ATM adresi
bilinmeyen bir MAC adresi) rastlandığında LES’e LE-ARP sorgusu gönderir. LES
de, bu sorguyu diğer LEC’lere gönderir. Bu sorguyu alan tüm Lec’ler belirtilen
MAC adresinin kendilerinde olup olmadığının kontrol eder, eğer kendisinde ise
kendi ATM adresini de belirterek, LES’e cevap gönderir. LES de ilgili LEC’e haber vererek
adres çözümleme işini bitirir.
10.-ATM 'İN DEZAVANTAJLARI
ATM pahalı
bir teknolojidir. ATM anahtarların liste fiyatları temel konfigürasyon
için 9000$ 'dan başlayarak tam kurulu bir sistemde 350.000$ 'a kadar çıkan bir
çeşitlilik göstermektedir. Fakat yakın bir zamanda bu teknolojinin ucuzlaması
ve yaygınlaşması beklenmektedir .
ATM, yeni bir teknoloji olduğundan henüz
gerekli donanım ve yazılım desteği yeterli değildir. Bunda en önemli etken
standartların oluşmamasıdır. Özellikle yazılım konusunda büyük eksiklikler
bulunmaktadır. "ATM teknolojisi henüz olgunlaşma evresindedir. Endüstri
uzmanları, olgunlaşması için iki ya da
üç yıllık bir süre olduğunu tahmin etmektedir. " [6]
ATM anahtarları,
router(Yönlendirici) tarafından verilmekte olan hizmet sınıflarının pek çoğunu
kendi yapısı içinde kullanıcılara sunmaktadır. Fakat henüz standartların oluşmaması yüzünden
aşağıda sıralanan, router 'ın yapabildiği fonksiyonları anahtarlar henüz
yapamamaktadır .
1. Güvenli WAN Erişimi: Yönlendiriciler diğer
ağlara bağlanma konusunda şimdilik tek güvenilir cihazlar olarak kabul
edilmektedir.
2. Güvenlik Duvarları(Firewall):
Yönlendiriciler network'ün belirli alanları dışında kullanıcı erişimini
sınırlama özelliğine sahiptir. Bu, ortaya çıkan bir sorunun ağın başka bir
bölümüne intikal etmesini engellemektedir.
3. Çoklu Protokol Desteği: Yönlendiriciler,
tipik bir heterojen network'lerde bulunan bütün protokolleri ( IP, IPX, SNA ve
Apple Talk gibi) çalıştırabilmektedir.
11.-ATM 'İN AVANTAJLARI
1. ATM hızla gelişen bir teknolojidir. ITU-T ve ATM Forum,
standartlaşma çalışmalarında bulunmaktadır . Gelecekte belirecek talepler
şimdiden birçok büyük firmanın bu konuda
araştırmalara başlamasına yol açmaktadır. Büyük firmalar bu konuda iş yapan küçük
firmaları kendi bünyelerine katarak bu konuda çalışmalarını hızlandırmaktadır.
Bay Networks, Cisco ve 3Com gibi büyük Network Firmaları bu pastadan daha
büyük bir pay kapabilmek için savaşmaktadır. [6]
2. ATM ile verileri çok büyük
hızlarda taşımamız mümkündür. Hızı artırıcı amaçlı olarak hata kontrolü minimum düzeyde tutulur. Bu durumda,
hata kontrolü kullanıcının sorumluluğuna bırakılmaktadır.
3. Video, ses, TV, text gibi türlü veri tiplerinin hepsini destekleyen ve bütün ağların bir ortamda entegrasyonu için taban
sağlayacak BISDN için ITU-T tarafından switching (anahtarlama) modeli olarak
ATM seçilmiştir.
4. ATM, fiziksel (taşıma) ortamından bağımsızdır. Kablolar
koaksiyel kablo olabileceği gibi fiber de olabilmektedi. Fiziksel katman olarak
SONET tavsiye edilmektedir.
5. ATM var olan sistemlerle uyumludur. Bu, onun her tür ağ ortamıyla
sorun olmadan konuşabilmesini sağlamaktadır.
6. ATM, veri iletiminde esnektir. Değişken bit hızlarını
destekler niteliktedir.Kullanıcı isteğine
göre iletişim hızı belirlenir. "Hatta bazı anahtarlar, kullanıcılara ait
bant genişliği de sunabilirler". [6]
ATM ağında hata oranı ve gecikme değeri bildirilerek belli bir
kalitede hizmet alınabilir. Bu bilgiler, ağa bağlanıldığında kullanıcı tarafından
ağ ortamına bildirilir. İstenilen şey hız ise hata oranı göz önüne
alınmayabilir, hata oranı önemliyse o zaman hızdan ödün vermek gerekecektir .
7. ATM, sabit boyutlarda ve küçük hücreleri anahtarladığından ağ
kaynaklarını optimum kullanabilir. "Devre anahtarlamadaki gibi devre bütün
bağlantı için kapatılmaz. Paket anahtarlama tekniği kullanılarak sadece bilgi
transfer edilirken devre kullanılır" [1]. Diğer taraftan anahtarlar, yalnızca iletişimin gerekli
olduğu düğümler (nodes) arasında kurduğu bağlantılarla, ağ bant genişliğinin
etkin kullanımını sağlamaktadır. [6]
8. ATM ağ yapısı büyümeye elverişlidir.
9. ATM onu yorumlayan firmaya göre bazı
değişiklikler taşıyabilir. Belirli şartları sağladıkları sürece değişik ATM
-lan'lar birbirleriyle iletişim yapabilirler.
10. ATM istatistiki
çoklama tekniğini kullanarak çok kullanıcının veri trafiğini tek bir ağ
üzerinde birleştirir. Bunu da en etkin şekilde yapar.
11. ATM anahtarlama,
yönlendiricilere göre daha kolay anlaşılır, uygulaması kolay ve daha ekonomik
bir çözümdür. Yönlendiricilerin mevcut yazılımlarının düzeyi, karmaşılığı,
mimarisi ve fiyatı anahtarlar karşısında devre dışı kalmalarına yol açmaktadır.
[6]
12. ATM anahtarları , mevcut ağ ekipmanı üzerinde hiç değişiklik
yapmadan ya da çok küçük bazı değişiklikler yaparak ağa eklenebilir.
12.-SONUÇ
B-ISDN teknolojisinin,
varolan iletişim ihtiyaçlarının karşılanması ve gelecekte varolabilecek
ihtiyaçların karşılanmasına yönelik
esnekliği düşünüldüğünde geleceğin iletişim teknolojisi olacağı açıktır.
Ancak, bu yapıyı olanaklı kılan ATM altyapısındaki maliyet ve tam
standartlaşamama gibi dezavantajlardan dolayı henüz bu teknolojiye tam olarak
bir geçiş sağlanamamıştır.
13.
KAYNAKÇA
[1] DE PRYCKER, MARTIN
;“Asynchronous Transfer Mode, Solution For Broadband ISDN”, Ellis Harwood, 1993
[2] STALLINGS, William
;“Networking Standards A Guide to OSI, ISDN, LAN and MAN Standards”
[3] ERDUR, Cenk ; “İleri Bilgisayar Ağları ATM Semineri
Raporu” , 20.5.96
[4] ATEŞ, Ahmet Feyzi ;
“B-ISDN, ATM ve Diğer Gelişen Teknolojiler “,
27.5.96
[5] ÇIMENSEL, Ahmet ; “ATM Networks
Semineri (Bölüm1)” , 13.5.96
[6] STEPHEN, P.
Klett Jr. ; ComputerWorld Dergisi Sayı 298 ,
Sayfa 43-48 , 1995
[7] GAGE, Beth ; ComputerWorld
Dergisi Sayı 305 , Sayfa 27-37 , 1995
[8] Çeşitli Internet Kaynakları
(Başlangıç Noktası -“http://www.yahoo.com”)
[9] EBRAHIM, Zahir ; “A
Brief Tutorial on ATM“
14.-EK-Mini Sözlük
* AAL: ATM Adaptation Layer
* ANSA: Advanced Networked Systems
Architecture
* ASIC: Application Specific Integrated
Circuit
* ATM: Asynchronous Transfer Mode
* AUU: ATM User User indication, "the bit",
end of AAL5 block marker
* AVA: ATM Video Adaptor
* B-ISDN: Broadband Integrated Services Digital
Network
* CAC: Connection Admission Control
* CBR: Constant Bit Rate
* CCITT: Comitée Consultatif International Télégraphique et Téléphonique
(now the ITU-TS)
* CLP: Cell Loss Priority (a bit in a B-ISDN
cell header)
* CRC: Cyclical Redundancy Check
* DAN: Desk Area Network
* E1: 2 Mbit/sec
* E2: 8 Mbit/sec
* E3: 34 Mbit/sec
* EATM: EISA ATM (an adaptor)
*
EDL: Ethernet Data Link
* FDDI: Fiber Distributed Data Interface
* FAS: Framing and Sequencing
* FIFO: First In First Out
* GFC: Generic Flow Control (a 4 bit field
in a B-ISDN cell header)
* H.261: A constant bit rate video
compression standard.
* HEC: Header Error Check (an 8 bit CRC in a
B-ISDN cell)
* IOC: Input Output Controller
* IP: Internet Protocol
* ISDN: Integrated Services Digital Network
* ISO: International Standards Organisation
* ITU: International Telecommunication Union
* LAN: Local Area Network
* MAC: Media Access Control
* MAN: Metropolitan Area Network
* MPEG: Motion Picture Experts Group (a
video compression standard)
* NOSSDAV: Network and Operating System
Support for Digital Audio and
Video ("nose dive")
* NNI: Network Network Interface
* OC3: 155 Mbit/sec
* OC12: 622 Mbit/sec
*
OSI: Open Systems Interconnection
* PDU: Protocol Data Unit (a packet)
* PLT: Payload Type (a 3 bit field in a
B-ISDN cell header)
* PTM: Packet Transfer Mode
* Q.93B: The Standard (i.e. awful) ATM
signalling protocol
* QOS: Quality of Service
* SAR: Segmentation and Reassembly
* SDH: Synchronous Digital Hierarchy
* SDU: Service Data Unit (a packet)
* SOC: Start of Cell
* SONET: Synchronous Optical Network
* SPROING:To Break
* STM: Synchronous Transfer Mode
* STS1: 155 Mbit/sec
* STS4: 622 Mbit/sec
* T1: 1.5 Mbit/sec
*
T3: 45 Mbit/sec
* TDM: Time Division Multiplexing
* UNI: User Network Interface
* VC: Virtual Channel or Virtual Circuit
* VCI: Virtual Circuit Identifier (also
Virtual Channel Identifier)
* VP: Virtual Path
* VPI: Virtual Path Identifier
* WAN: Wide Area Network
GİRİŞ
CGI Nedir?
Windows için: CRT
Windows için: CuteFTP
print "Bu bir Perl kodu.\n";
Bölüm 1: Başlangıç
mv <taşınacak dosya> <taşınacağı dizin>
(Daha fazla bilgi için man mv)
chmod 755 <dosya adı>
#!/usr/bin/perl
#!/usr/bin/perl
print "Merhaba\n;"
print "Merhaba\n;"
chmod 755 ilkscript.pl
./ilkscript.pl
Olmadı mı?
Eğer
scriptiniz çalışmazsa şunları kontrol edin: 1. Scriptinizi ASCII olarak upload ettiniz mi? 2. Scriptinizin ilk satırı #!/usr/bin/perl mü? 3. Perl'ün yeri gerçekten #!/usr/bin/perl mü yoksa başka bir dizinde mi? Perl'ün nerede olduğunu which perl ya da whereis perl yazarak bulabilirsiniz. |
print "Content-type:text/html\n\n";
mv ilkscript.pl ilkcgi.cgi
#!/usr/bin/perl
print
"Content-type:text/html\n\n";
print
"<html><head><title>Deneme
Sayfası</title></head>\n";
print "<body>\n";
print "<h2>Merhaba</h2>\n";
print "</body></html>\n";
print "<body>\n";
print "<h2>Merhaba</h2>\n";
print "</body></html>\n";
Olmadı mı?
Scriptinizin
çalışmamasının nedeni şunlar olabilir: 1. Eğer karşınıza "Merhaba" yerine Perl kodları çıkmışsa scriptin uzantısını .cgi olatak değiştirmemiş olabilirsiniz. Ya da scriptin bulunduğu dizin CGI programlarını çalıştıracak şekilde ayarlanmamıştır (CGI scriptlerinizi hangi dizinde çalıştırabileceğinizi server'ınızın yöneticisine sormalısınız). 2. Browser'ınız "Internal Server Error" hatası veriyorsa scriptinizi ./ilkcgi.cgi komutu ile çalıştırın. Ekranda hatanın nerede olduğu yazacaktır. |
#!/usr/bin/perl
print
"Content-type:text/html\n\n";
print
<<HTMLSonu;
<html><head><title>Deneme Sayfası</title></head>
<body>
<h2>Merhaba</h2>
</body></html>
<html><head><title>Deneme Sayfası</title></head>
<body>
<h2>Merhaba</h2>
</body></html>
HTMLSonu
;
;
print "<a
href=\"http://cc.sau.edu.tr/\">"
Bölüm 2: Perl Değişkenleri
$sayi = 1;
$isim = "Sinan";
$pi = 3.141592;
$isim = "Sinan";
$pi = 3.141592;
$sihir = 23;
$sihir = "Sihirli sayımız $sihir";
$sihir = "Sihirli sayımız $sihir";
#!/usr/bin/perl
$kursadi = "CGI Programlama";
print "Merhaba. Adın ne?\n";
$siz = <STDIN>;
chomp($siz);
print "Merhaba $siz. $kursadi kursuna hoş geldiniz.\n";
$kursadi = "CGI Programlama";
print "Merhaba. Adın ne?\n";
$siz = <STDIN>;
chomp($siz);
print "Merhaba $siz. $kursadi kursuna hoş geldiniz.\n";
$siz = <STDIN>;
chomp($siz);
print "Merhaba $siz. $kursadi kursuna hoş
geldiniz.\n";
@renkler =
("sari","kirmizi","yesil");
Perl'de
dizi indisleri 0'dan başlar. Yani @renkler dizisinin ilk elemanını $renkler[0] verir. @renkler dizisinin tek bir
elemanının değerini göstereceği zaman @ işareti yerine $ işareti kullanılır. $ işareti tek bir değeri, @ işareti ise bütün diziyi kastettiğimiz
anlamına gelir.
#!/usr/bin/perl
#
bu bir açıklamadır.
# diyez (#) işareti ile başlayan bütün satırlar açıklamadır.
# diyez (#) işareti ile başlayan bütün satırlar açıklamadır.
@renkler
= ("sari","kirmizi","yesil");
print
"$renkler[0]\n";
print "$renkler[1]\n";
print "$renkler[2]\n";
print "$renkler[1]\n";
print "$renkler[2]\n";
#!/usr/bin/perl
#
bu bir açıklamadır.
# diyez (#) işareti ile başlayan bütün satırlar açıklamadır.
# diyez (#) işareti ile başlayan bütün satırlar açıklamadır.
@renkler
= ("sari","kirmizi","yesil");
foreach
$i (@renkler) {
print "$i\n";
}
print "$i\n";
}
Dizi Fonksiyonları
Perl'de
dizilere değer atamayı ve dizilerden değer okumayı kolaylaştıran fonksiyonlar
mevcuttur.
@renkler =
("sari","kirmizi","yesil","mavi","turuncu","bordo");
$ilkrenk
= pop(@renkler);
# $ilkrenk değişkenine @renkler dizisinin ilk değeri olan "sari" atanır.
# $ilkrenk değişkenine @renkler dizisinin ilk değeri olan "sari" atanır.
$sonrenk
= shift(@renkler);
# $sonrenk değişkenine @renkler dizisinin son değeri olan "bordo" atanır.
# $sonrenk değişkenine @renkler dizisinin son değeri olan "bordo" atanır.
push(@renkler,"gri");
# @renkler dizisinin sonuna "gri" ilave edilir.
# @renkler dizisinin sonuna "gri" ilave edilir.
@yenirenkler
= ("lacivert","pembe");
push(@renkler,@yenirenkler);
# @yenirenkler dizisindeki değerler @renkler dizisinin sonuna ilave edilir.
# @yenirenkler dizisindeki değerler @renkler dizisinin sonuna ilave edilir.
sort(@renkler);
# @renkler dizisinin elemanlarını alfabetik sıraya koyar.
# @renkler dizisinin elemanlarını alfabetik sıraya koyar.
reverse(@renkler);
# @renkler dizindeki elemanların diziliş sırasını ters çevirir.
# @renkler dizindeki elemanların diziliş sırasını ters çevirir.
@join(",
",@renkler);
# @renkler dizisini elemanların arasında ", " olacak şekilde birleştirir.
# @renkler dizisini elemanların arasında ", " olacak şekilde birleştirir.
$uzunluk
= $#renkler;
# $uzunluk değişkenine @renkler dizisinin uzunluğu atanır.
# $uzunluk değişkenine @renkler dizisinin uzunluğu atanır.
Değişken
|
Anahtar
|
Değer
|
%sayfalar
= (
|
"sinan",
|
"http://www.sinanilyas.cjb.net",
|
"koray",
|
"http://cc.sau.edu.tr/~ktoksoz",
|
|
"baris",
|
"http://turk.eu.org/uruzgar");
|
%sayfalar
= (
|
"sinan"
=>
|
"http://www.sinanilyas.cjb.net",
|
"koray"
=>
|
"http://cc.sau.edu.tr/~ktoksoz",
|
|
"baris"
=>
|
"http://turk.eu.org/uruzgar");
|
print "$sayfalar{'baris'}\n";
foreach $anahtar (keys %sayfalar) {
print "$anahtar'ın web sayfasının adresi: $sayfalar{$anahtar}\n";
}
print "$anahtar'ın web sayfasının adresi: $sayfalar{$anahtar}\n";
}
foreach $anahtar
("sinan","koray","baris") {
print "$anahtar'ın web sayfasının adresi: $sayfalar{$anahtar}\n";
}
print "$anahtar'ın web sayfasının adresi: $sayfalar{$anahtar}\n";
}
#!/usr/bin/perl
%sayfalar = ("sinan" => "http://www.sinanilyas.cjb.net",
"koray" => "http://cc.sau.edu.tr/~ktoksoz",
"baris" => "http://turk.eu.org/uruzgar" );
print "Content-type:text/html\n\n";
print <<IlkKisim;
<html><head><title>Adres Listesi</title></head>
<body>
<h2>Adres Listesi</h2>
<ul>
IlkKisim
;
foreach $anahtar (keys %sayfalar) {
print "<li><a href=\"$sayfalar{$anahtar}\">$anahtar</a>\n";
}
print <<SonKisim;
</ul>
<p>
</body>
</html>
SonKisim
;
%sayfalar = ("sinan" => "http://www.sinanilyas.cjb.net",
"koray" => "http://cc.sau.edu.tr/~ktoksoz",
"baris" => "http://turk.eu.org/uruzgar" );
print "Content-type:text/html\n\n";
print <<IlkKisim;
<html><head><title>Adres Listesi</title></head>
<body>
<h2>Adres Listesi</h2>
<ul>
IlkKisim
;
foreach $anahtar (keys %sayfalar) {
print "<li><a href=\"$sayfalar{$anahtar}\">$anahtar</a>\n";
}
print <<SonKisim;
</ul>
<p>
</body>
</html>
SonKisim
;
Bölüm 3: CGI Ortam Değişkenleri
CGI Ortam Değişkenleri
|
|
DOCUMENT_ROOT
|
Server'ınızın
kök dizinini verir.
|
HTTP_COOKIE
|
Eğer
varsa ziyaretçinin "cookie"sini verir.
|
HTTP_HOST
|
Server'ınızın
"hostname"ini verir.
|
HTTP_REFERER
|
Scriptin
çağrıldığı sayfanın adresini verir.
|
HTTP_USER_AGENT
|
Ziyaretçinin
browser'ının tipini verir.
|
PATH
|
Server'ınızın
"system path"ini verir. (Genelde /bin, /usr/sbin vs.)
|
QUERY_STRING
|
GET
metodu ile yollanan bilgiyi verir.
|
REMOTE_ADDR
|
Ziyaretçinin
IP adresini verir.
|
REMOTE_HOST
|
Ziyaretçinin
"hostname"ini verir. (*)
|
REMOTE_PORT
|
Ziyaretçinin
web server'ınıza bağlandığı portu verir.
|
REMOTE_USER
|
Ziyaretçinin
kullanıcı adını verir. (.htaccess korumalı sayfalar için)
|
REQUEST_METHOD
|
Bilgi
gönderme metodunu verir. (GET ya da POST)
|
SCRIPT_FILENAME
|
Scriptin
tam yolunu verir.
|
SERVER_ADMIN
|
Server'ınızın
webadmin'inin e-mail adresini verir.
|
SERVER_NAME
|
Server'ınızın
tam domain adını verir. (Örn: cc.sau.edu.tr)
|
SERVER_PORT
|
Server'ınızın
dinlemede olduğu portu verir.
|
SERVER_SOFTWARE
|
Serverdaki
web server programını verir. (Örn: Apache 1.3)
|
print "IP adresiniz:
$ENV{'REMOTE_ADDR'}\n";
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print <<HTMLSonu;
<html><head><title>Ortam Değişkenleri</title></head>
<body>
HTMLSonu
;
foreach $anahtar (sort(keys %ENV)) {
print "$anahtar = $ENV{$anahtar}<br>\n";
}
print "</body></html>";
print "Content-type:text/html\n\n";
print <<HTMLSonu;
<html><head><title>Ortam Değişkenleri</title></head>
<body>
HTMLSonu
;
foreach $anahtar (sort(keys %ENV)) {
print "$anahtar = $ENV{$anahtar}<br>\n";
}
print "</body></html>";
Basit Bir Sorgu Formu
http://hammer.prohosting.com/cgi-bin/ortam.cgi?deneme2
http://hammer.prohosting.com/cgi-bin/ortam.cgi?deneme3
<form
action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/ortam.cgi"
method="GET">
Buraya birşeyler yazın: <input type="text" name="ornek_yazi" size=30><p>
</form>
Buraya birşeyler yazın: <input type="text" name="ornek_yazi" size=30><p>
</form>
$ENV{'QUERY_STRING'} =
ornek_yazi=iste+yazdiginiz+yazi
<form
action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/ortam.cgi"
method="GET">
Adınız: <input type="text" name="ad" size=30><p>
Soyadınız: <input type="text" name="soyad" size=30><p>
<input type="submit" value="Gönder">
</form>
Adınız: <input type="text" name="ad" size=30><p>
Soyadınız: <input type="text" name="soyad" size=30><p>
<input type="submit" value="Gönder">
</form>
$ENV{'QUERY_STRING'} =
ad=umut+baris&soyad=ruzgar
@degerler = split(/\&/,$ENV{'QUERY_STRING'});
foreach $i (@degerler) {
($alanadi, $deger) = split(/=/,$i);
print "$alanadi = $deger\n";
}
foreach $i (@degerler) {
($alanadi, $deger) = split(/=/,$i);
print "$alanadi = $deger\n";
}
Bölüm 4: Form İşleme
Normal
Karakter |
Kodlanmış
Hali |
\n
(enter)
|
%0A
|
\t
(tab)
|
%09
|
/
|
%2F
|
~
|
%7E
|
:
|
%3A
|
;
|
%3B
|
@
|
%40
|
&
|
%26
|
$yazi =~ s/aranan/yerinekonan/;
$selamlama = "Merhaba. Benim adım
xisimx.\n";
$selamlama =~ s/xnamex/Sinan/;
print $selamlama;
$selamlama =~ s/xnamex/Sinan/;
print $selamlama;
$yazi =~ tr/arananlistesi/yerinekonanlistesi/;
$kucukh =~ tr/[A-Z]/[a-z]/;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
print "<html><head><title>Form Bilgileri</title></head><body>";
print "<h2>Formla gönderilen bilgiler:</h2>\n";
foreach $anahtar (keys(%FORM)) {
print "$anahtar = $FORM{$anahtar}<br>";
}
print "</body></html>";
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
print "<html><head><title>Form Bilgileri</title></head><body>";
print "<h2>Formla gönderilen bilgiler:</h2>\n";
foreach $anahtar (keys(%FORM)) {
print "$anahtar = $FORM{$anahtar}<br>";
}
print "</body></html>";
$yazi = "sari&kirmizi&yesil";
@renkler = split(/&/,$yazi);
@renkler = split(/&/,$yazi);
<form
action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/post.cgi"
method="POST">
<pre>
Adınız: <input type="text" name="ad" size=30><br>
Soyadınız: <input type="text" name="soyad" size=30><br>
</pre>
<input type="submit" value="Gönder">
<input type="reset" value="Tümünü Sil">
</form>
<pre>
Adınız: <input type="text" name="ad" size=30><br>
Soyadınız: <input type="text" name="soyad" size=30><br>
</pre>
<input type="submit" value="Gönder">
<input type="reset" value="Tümünü Sil">
</form>
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
$mailprog = '/usr/sbin/sendmail';
# bunu kendi mail adresinizle değiştirin
$gonderilen = 'silyas@esentepe.sau.edu.tr';
# burada maili göndermek üzere sendmail programı açılıyor
# eğer sendmail programı bulunamazsa hata alt programı (en altta)
# işletilerek programın bulunamadığı yazıyor
open (MAIL, "|$mailprog -t") or &hata("$mailprog bulunamadı!\n");
# sendmail programına mailin kime gönderileceği bildiriliyor
print MAIL "To: $gonderilen\n";
# sendmail programına ziyaretçinin email adresi bildiriliyor.
# bu "Yanıtla" tuşuna bastığınızda işe yarar
# kullanmak zorunda değilsiniz
# formunuzda 'email' ve 'isim' kutularının bulunduğu varsayılmıştır.
print MAIL "Reply-to: $FORM{'email'} ($FORM{'isim'})\n";
# sendmail programına mailin konusu gönderiliyor
# konudan sonra iki tane \n olduğuna dikkat edin
print MAIL "Subject: Form Bilgileri\n\n";
# sendmail programına form bilgileri gönderiliyor
foreach $anahtar (keys(%FORM)) {
print MAIL "$anahtar = $FORM{$anahtar}\n";
}
# bilgiler gönderildikten sonra sendmail programını kapatmayı unutmayın
close(MAIL);
# teşekkür sayfası oluşturuluyor
print <<HTMLSonu;
<html><head><title>Teşekkürler</title></head><body>
<h2>Teşekkürler</h2>
Mailiniz gönderildi. Formu gönderdiğiniz için teşekkürler<p>
</body></html>
HTMLSonu
;
# hata alt programı
sub hata {
($hatamesaji) = @_;
print "<html><head><title>Hata!</title></head><body>"
print "<h2>Hata</h2>\n";
print "$hatamesaji<p>\n";
print "</body></html>\n";
exit;
}
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
$mailprog = '/usr/sbin/sendmail';
# bunu kendi mail adresinizle değiştirin
$gonderilen = 'silyas@esentepe.sau.edu.tr';
# burada maili göndermek üzere sendmail programı açılıyor
# eğer sendmail programı bulunamazsa hata alt programı (en altta)
# işletilerek programın bulunamadığı yazıyor
open (MAIL, "|$mailprog -t") or &hata("$mailprog bulunamadı!\n");
# sendmail programına mailin kime gönderileceği bildiriliyor
print MAIL "To: $gonderilen\n";
# sendmail programına ziyaretçinin email adresi bildiriliyor.
# bu "Yanıtla" tuşuna bastığınızda işe yarar
# kullanmak zorunda değilsiniz
# formunuzda 'email' ve 'isim' kutularının bulunduğu varsayılmıştır.
print MAIL "Reply-to: $FORM{'email'} ($FORM{'isim'})\n";
# sendmail programına mailin konusu gönderiliyor
# konudan sonra iki tane \n olduğuna dikkat edin
print MAIL "Subject: Form Bilgileri\n\n";
# sendmail programına form bilgileri gönderiliyor
foreach $anahtar (keys(%FORM)) {
print MAIL "$anahtar = $FORM{$anahtar}\n";
}
# bilgiler gönderildikten sonra sendmail programını kapatmayı unutmayın
close(MAIL);
# teşekkür sayfası oluşturuluyor
print <<HTMLSonu;
<html><head><title>Teşekkürler</title></head><body>
<h2>Teşekkürler</h2>
Mailiniz gönderildi. Formu gönderdiğiniz için teşekkürler<p>
</body></html>
HTMLSonu
;
# hata alt programı
sub hata {
($hatamesaji) = @_;
print "<html><head><title>Hata!</title></head><body>"
print "<h2>Hata</h2>\n";
print "$hatamesaji<p>\n";
print "</body></html>\n";
exit;
}
<form action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/mail.cgi"
method="POST">
<pre>
Adınız: <input type="text" name="isim" size=30>
E-mail adresiniz: <input type="text" name="email" size=30>
Web sayfanız: <input type="text" name="web_sayfasi" size=30>
Yaşınız: <input type="text" name="yas" size=3>
</pre>
<input type="submit" value="Gönder">
<input type="reset" value="Tümünü Sil">
</form>
<pre>
Adınız: <input type="text" name="isim" size=30>
E-mail adresiniz: <input type="text" name="email" size=30>
Web sayfanız: <input type="text" name="web_sayfasi" size=30>
Yaşınız: <input type="text" name="yas" size=3>
</pre>
<input type="submit" value="Gönder">
<input type="reset" value="Tümünü Sil">
</form>
$gonderilen = 'silyas@esentepe.sau.edu.tr',
zeytinbey@bbs.ege.edu.tr, sinanilyas@hotmail.com';
Bölüm 5: İleri Seviye Formlar
if ($degiskenadi eq "birseyler") {
# koşul doğruysa işletilecek komutlar
}
elsif ($degiskenadi eq "baskaseyler") {
# bu koşul doğruysa işletilecek komutlar
}
else {
# yukarıdaki koşulların hiçbiri doğru değilse işletilecek komutlar
}
# koşul doğruysa işletilecek komutlar
}
elsif ($degiskenadi eq "baskaseyler") {
# bu koşul doğruysa işletilecek komutlar
}
else {
# yukarıdaki koşulların hiçbiri doğru değilse işletilecek komutlar
}
if ($varname > 23) {
# $sayi 23'ten büyükse işletilecek komutlar
}
# $sayi 23'ten büyükse işletilecek komutlar
}
Karşılaştırma
İfadesi
|
Sayı
İçin
|
Yazı
İçin
|
$x
eşittir $y
|
$x
== $y
|
$x
eq $y
|
$x
eşit değildir $y
|
$x
!= $y
|
$x
ne $y
|
$x
büyüktür $y
|
$x
> $y
|
$x
gt $y
|
$x
büyük eşittir $y
|
$x
>= $y
|
$x
ge $y
|
$x
küçüktür $y
|
$x
< $y
|
$x
lt $y
|
$x
küçük eşittir $y
|
$x
<= $y
|
$x
le $y
|
if ($FORM{'isim'} eq "") {
&hata("Lütfen isminizi yazın");
}
&hata("Lütfen isminizi yazın");
}
if ($FORM{'isim'} eq "" or $FORM{'email'}
eq "" or $FORM{'yas'} eq "") {
&hata("Lütfen isminizi, e-mail adresinizi ve yaşınızı yazın");
}
&hata("Lütfen isminizi, e-mail adresinizi ve yaşınızı yazın");
}
Onay Kutuları
Formdaki
onay kutularının nasıl yazdırıldığını bir örnekle açıklayalım. İlk önce
aşağıdaki kodlarla bir sayfa oluşturun ve "renk.html" adıyla
kaydedin.
<html><head><title>Sevdiğiniz
Renkler</title></head><body>
<form action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/renk.cgi" method="POST">
<h3>Sevdiğiniz renkleri işaretleyin</h3>
<input type="checkbox" name="kirmizi" value=1> Kırmızı<br>
<input type="checkbox" name="sari" value=1> Sarı<br>
<input type="checkbox" name="yesil" value=1> Yeşil<br>
<input type="checkbox" name="mavi" value=1> Mavi<p>
<input type="submit" value="Gönder">
</form>
</body></html>
<form action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/renk.cgi" method="POST">
<h3>Sevdiğiniz renkleri işaretleyin</h3>
<input type="checkbox" name="kirmizi" value=1> Kırmızı<br>
<input type="checkbox" name="sari" value=1> Sarı<br>
<input type="checkbox" name="yesil" value=1> Yeşil<br>
<input type="checkbox" name="mavi" value=1> Mavi<p>
<input type="submit" value="Gönder">
</form>
</body></html>
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
print "<html><head><title>Sonuçlar</title></head>\n";
print "<body>\n";
print "<h2>Sonuçlar</h2>\n";
@renkler = ("kirmizi","sari","yesil","mavi");
foreach $renk (@renkler) {
if ($FORM{$renk} == 1) {
print "$renk rengini işaretlediniz<br>\n";
}
}
print "</body></html>\n";
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
print "<html><head><title>Sonuçlar</title></head>\n";
print "<body>\n";
print "<h2>Sonuçlar</h2>\n";
@renkler = ("kirmizi","sari","yesil","mavi");
foreach $renk (@renkler) {
if ($FORM{$renk} == 1) {
print "$renk rengini işaretlediniz<br>\n";
}
}
print "</body></html>\n";
Radyo Düğmeleri
Radyo
düğmeleri onay kutularından biraz farklıdır. Form hazırlarken radyo
düğmelerinin hepsinin name sıfatına aynı değer
atandığı için yazdırılması daha kolaydır. Bir örnek vererek bunu açıklayalım.
<html><head>
<title>En Sevdiğiniz Renk</title>
</head>
<body>
<form action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/renk2.cgi" method="POST">
<h3>İçlerinde en sevdiğiniz renk hangisi?</h3>
<input type="radio" name="renk" value="kirmizi"> Kırmızı<br>
<input type="radio" name="renk" value="sari"> Sarı<br>
<input type="radio" name="renk" value="yesil"> Yeşil<br>
<input type="radio" name="renk" value="mavi"> Mavi<p>
<input type="submit" value="Gönder">
</form>
</body>
</html>
<title>En Sevdiğiniz Renk</title>
</head>
<body>
<form action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/renk2.cgi" method="POST">
<h3>İçlerinde en sevdiğiniz renk hangisi?</h3>
<input type="radio" name="renk" value="kirmizi"> Kırmızı<br>
<input type="radio" name="renk" value="sari"> Sarı<br>
<input type="radio" name="renk" value="yesil"> Yeşil<br>
<input type="radio" name="renk" value="mavi"> Mavi<p>
<input type="submit" value="Gönder">
</form>
</body>
</html>
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
print "<html><head><title>Sonuçlar</title></head>\n";
print "<body>\n";
print "<h2>Sonuçlar</h2>\n";
print "En sevdiğiniz renk: $FORM{'renk'}\n";
print "</body></html>\n";
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
print "<html><head><title>Sonuçlar</title></head>\n";
print "<body>\n";
print "<h2>Sonuçlar</h2>\n";
print "En sevdiğiniz renk: $FORM{'renk'}\n";
print "</body></html>\n";
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
%renkler = ("kirmizi" => "red",
"sari" => "yellow",
"yesil" => "green",
"mavi" => "blue");
print "<html><head><title>En Sevdiğiniz Renk</title></head>\n";
print "<body bgcolor=$renkler{$FORM{'renk'}}>\n";
print "<h2>En sevdiğiniz renk: $FORM{'renk'}</h2><br>\n";
print "</body></html>";
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
%renkler = ("kirmizi" => "red",
"sari" => "yellow",
"yesil" => "green",
"mavi" => "blue");
print "<html><head><title>En Sevdiğiniz Renk</title></head>\n";
print "<body bgcolor=$renkler{$FORM{'renk'}}>\n";
print "<h2>En sevdiğiniz renk: $FORM{'renk'}</h2><br>\n";
print "</body></html>";
Seçim Kutuları
Seçim
kutularının kodunun çözülmesi hemen hemen radyo butonları gibidir. Yine konunun
daha iyi anlaşılması bakımından bir örnek verelim.
<form
action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/renk2a.cgi"
method="POST">
<select name="renk">
<option value="kirmizi"> Kırmızı
<option value="sari"> Sarı
<option value="yesil"> Yeşil
<option value="mavi"> Mavi
</select><p>
<input type="submit" value="Gönder">
</form>
<select name="renk">
<option value="kirmizi"> Kırmızı
<option value="sari"> Sarı
<option value="yesil"> Yeşil
<option value="mavi"> Mavi
</select><p>
<input type="submit" value="Gönder">
</form>
<html><head><title>Form</title></head>
<body>
<form action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/form.cgi" method="POST">
İsminiz: <input type="text" name="isim" size=30><p>
E-mail adresiniz: <input type="text" name="email" size=30><p>
Bu siteye nasıl ulaştınız?
<select name="nasilulasti">
<option value=0 selected>Seçim yapın...
<option value=1>Direk adresini yazdım
<option value=2>Siteyi bookmark etmiştim
<option value=3>Arama motorundan buldum
<option value=4>Başka bir siteden
<option value=5>Adresi bir kitaptan aldım
<option value=6>Diğer
</select><p>
Siteye 5 üzerinden kaç verirsiniz?<br>
<input type="radio" name="puan" value=1> 1
<input type="radio" name="puan" value=2> 2
<input type="radio" name="puan" value=3> 3
<input type="radio" name="puan" value=4> 4
<input type="radio" name="puan" value=5> 5<p>
Aşağıdakilerden hangileriyle ilgilenirsiniz?<br>
<input type="checkbox" name="wds" value=1> Web Design<br>
<input type="checkbox" name="wsy" value=1> Web Server Yöneticiliği<br>
<input type="checkbox" name="tic" value=1> Elektronik Ticaret<br>
<input type="checkbox" name="als" value=1> İnternetten Alışveriş<br>
<input type="checkbox" name="egt" value=1> İnternet Aracılığıyla Eğitim<br>
<p>
Sayfa hakkında yorumlarınız:<br>
<textarea name="yorum" rows=5 cols=70 wrap="virtual">
</textarea>
<p>
<input type="submit" value="Gönder">
<input type="reset" value="Tümünü Sil">
</form>
</body></html>
<body>
<form action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/form.cgi" method="POST">
İsminiz: <input type="text" name="isim" size=30><p>
E-mail adresiniz: <input type="text" name="email" size=30><p>
Bu siteye nasıl ulaştınız?
<select name="nasilulasti">
<option value=0 selected>Seçim yapın...
<option value=1>Direk adresini yazdım
<option value=2>Siteyi bookmark etmiştim
<option value=3>Arama motorundan buldum
<option value=4>Başka bir siteden
<option value=5>Adresi bir kitaptan aldım
<option value=6>Diğer
</select><p>
Siteye 5 üzerinden kaç verirsiniz?<br>
<input type="radio" name="puan" value=1> 1
<input type="radio" name="puan" value=2> 2
<input type="radio" name="puan" value=3> 3
<input type="radio" name="puan" value=4> 4
<input type="radio" name="puan" value=5> 5<p>
Aşağıdakilerden hangileriyle ilgilenirsiniz?<br>
<input type="checkbox" name="wds" value=1> Web Design<br>
<input type="checkbox" name="wsy" value=1> Web Server Yöneticiliği<br>
<input type="checkbox" name="tic" value=1> Elektronik Ticaret<br>
<input type="checkbox" name="als" value=1> İnternetten Alışveriş<br>
<input type="checkbox" name="egt" value=1> İnternet Aracılığıyla Eğitim<br>
<p>
Sayfa hakkında yorumlarınız:<br>
<textarea name="yorum" rows=5 cols=70 wrap="virtual">
</textarea>
<p>
<input type="submit" value="Gönder">
<input type="reset" value="Tümünü Sil">
</form>
</body></html>
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
# "Bu siteye nasıl ulaştınız?" sorusunun cevabı
# numara olarak gönderildiği için bunu çevirebilmek
# için bir hash değişkene ihtiyacımız var
%nasilulasti = ( 0 => "",
1 => "Direk adresini yazdım",
2 => "Siteyi bookmark etmiştim",
3 => "Arama motorundan buldum",
4 => "Başka bir siteden",
5 => "Adresi bir kitaptan aldım",
6 => "Diğer" );
print <<HTMLBas;
<html><head><title>Sonuçlar</title></head>
<body>
<h2>Sonuçlar</h2>
Formla gönderdiğiniz bilgiler aşağıdaki şekildedir:<p>
İsminiz: $FORM{'isim'}<p>
E-mail adresiniz: $FORM{'email'}<p>
Siteye nasıl ulaştığınız: $nasilulasti{$FORM{'nasilulasti'}}<p>
Siteye verdiğiniz puan: $FORM{'puan'}<p>
HTMLBas
;
%secim = ("wds" => "Web Design",
"wsy" => "Web Server Yöneticiliği",
"tic" => "Elektronik Ticaret",
"als" => "İnternetten Alışveriş",
"egt" => "İnternet Aracılığıyla Eğitim" );
print "Aşağıdaki konularla ilgileniyorsunuz:<br>\n";
foreach $anahtar (keys %secim) {
if ($FORM{$anahtar} == 1) {
print "$secim{$anahtar}<br>\n";
}
}
print <<HTMLSon;
<p>
Sayfa hakkında yorumlarınız:<br>
$FORM{'yorum'}
<p>
</body></html>
HTMLSon
;
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$isim} = $deger;
}
# "Bu siteye nasıl ulaştınız?" sorusunun cevabı
# numara olarak gönderildiği için bunu çevirebilmek
# için bir hash değişkene ihtiyacımız var
%nasilulasti = ( 0 => "",
1 => "Direk adresini yazdım",
2 => "Siteyi bookmark etmiştim",
3 => "Arama motorundan buldum",
4 => "Başka bir siteden",
5 => "Adresi bir kitaptan aldım",
6 => "Diğer" );
print <<HTMLBas;
<html><head><title>Sonuçlar</title></head>
<body>
<h2>Sonuçlar</h2>
Formla gönderdiğiniz bilgiler aşağıdaki şekildedir:<p>
İsminiz: $FORM{'isim'}<p>
E-mail adresiniz: $FORM{'email'}<p>
Siteye nasıl ulaştığınız: $nasilulasti{$FORM{'nasilulasti'}}<p>
Siteye verdiğiniz puan: $FORM{'puan'}<p>
HTMLBas
;
%secim = ("wds" => "Web Design",
"wsy" => "Web Server Yöneticiliği",
"tic" => "Elektronik Ticaret",
"als" => "İnternetten Alışveriş",
"egt" => "İnternet Aracılığıyla Eğitim" );
print "Aşağıdaki konularla ilgileniyorsunuz:<br>\n";
foreach $anahtar (keys %secim) {
if ($FORM{$anahtar} == 1) {
print "$secim{$anahtar}<br>\n";
}
}
print <<HTMLSon;
<p>
Sayfa hakkında yorumlarınız:<br>
$FORM{'yorum'}
<p>
</body></html>
HTMLSon
;
Bölüm 6: Dosya İşlemleri
chmod 666 <dosya adı>
chmod 644 <dosya adı>
Dosyaları Açma
Dosyaları
açmak için open komutunu
kullanırız.
open(dosyadegiskeni,dosyaadi);
open(DOSYA,"bilgi.txt"); #
bilgi.txt dosyasını okumak için açar
open(DOSYA,">bilgi.txt"); # bilgi.txt dosyasını üstüne yazmak için açar
open(DOSYA,">>bilgi.txt"); # bilgi.txt dosyasını eklemek için açar
open(DOSYA,">bilgi.txt"); # bilgi.txt dosyasını üstüne yazmak için açar
open(DOSYA,">>bilgi.txt"); # bilgi.txt dosyasını eklemek için açar
open(DOSYA,">bilgi.txt") or
&hata("bilgi.txt dosyası bulunamadı...");
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$deger =~ s/\n/ /g; # satır sonu işaretlerini yok etmek için eklendi
$FORM{$isim} = $deger;
}
open(DOSYA,">>formbilgileri.txt") or &hata("formbilgileri.txt dosyası açılamadı. Lütfen silyas\@esentepe.sau.edu.tr adresine mail atarak webmaster'ı uyarınız.");
print DOSYA "$FORM{'isim'}|$FORM{'email'}|$FORM{'nasilulasti'}|$FORM{'puan'}|";
%secim = ("wds" => "Web Design",
"wsy" => "Web Server Yöneticiliği",
"tic" => "Electronic Commerce",
"als" => "Elektronik Ticaret",
"egt" => "İnternet Aracılığıyla Eğitim" );
foreach $anahtar (keys %secim) {
if ($FORM{$anahtar} == 1) {
print DOSYA "$anahtar,";
}
}
print DOSYA "|$FORM{'yorum'}\n";
close(DOSYA);
print <<HTMLSonu;
<html><head><title>Teşekkürler</title></head>
<body>
<h2>Teşekkürler</h2>
Gönderdiğiniz bilgiler kaydedildi.
</body></html>
HTMLSonu
;
sub hata {
($hatamesaji) = @_;
print "<h2>Hata!</h2>\n";
print $hatamesaji;
exit;
}
print "Content-type:text/html\n\n";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($isim, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$deger =~ s/\n/ /g; # satır sonu işaretlerini yok etmek için eklendi
$FORM{$isim} = $deger;
}
open(DOSYA,">>formbilgileri.txt") or &hata("formbilgileri.txt dosyası açılamadı. Lütfen silyas\@esentepe.sau.edu.tr adresine mail atarak webmaster'ı uyarınız.");
print DOSYA "$FORM{'isim'}|$FORM{'email'}|$FORM{'nasilulasti'}|$FORM{'puan'}|";
%secim = ("wds" => "Web Design",
"wsy" => "Web Server Yöneticiliği",
"tic" => "Electronic Commerce",
"als" => "Elektronik Ticaret",
"egt" => "İnternet Aracılığıyla Eğitim" );
foreach $anahtar (keys %secim) {
if ($FORM{$anahtar} == 1) {
print DOSYA "$anahtar,";
}
}
print DOSYA "|$FORM{'yorum'}\n";
close(DOSYA);
print <<HTMLSonu;
<html><head><title>Teşekkürler</title></head>
<body>
<h2>Teşekkürler</h2>
Gönderdiğiniz bilgiler kaydedildi.
</body></html>
HTMLSonu
;
sub hata {
($hatamesaji) = @_;
print "<h2>Hata!</h2>\n";
print $hatamesaji;
exit;
}
touch formbilgileri.txt
chmod 666 formbilgileri.txt
chmod 666 formbilgileri.txt
sinan
ilyas|silyas@esentepe.sau.edu.tr|1|5|wds,egt,|siteniz harika
$deger =~ s/\n/ /g;
print "Merhaba, ";
print "ben ";
print "Sinan.\n";
print "ben ";
print "Sinan.\n";
Merhaba, ben Sinan.
Dosyaları Kapatma
Dosya
ile işiniz bittiği zaman dosyayı kapatmalısınız. Bunu aşağıdaki komutla
yapabilirsiniz.
close(dosyadegiskeni);
Dosyalardan Bilgi Okuma
Bir
gün merak edip formla gönderilen bilgilerin bir özetini görmek
isteyebilirsiniz. Bunun için programda bilgilerin kaydedildiği dosyayı açtırıp
bütün kayıtları okutup gereken hesapları yaptırmalısınız.
open(DOSYA,"formbilgileri.txt") or
&hata("Dosya açılamadı.");
$a = <DOSYA>; # $a değişkenine dosyadan bir tek satır okur
@b = <DOSYA>; # @b değişkenine dosyanın tamamını okur
close(DOSYA);
$a = <DOSYA>; # $a değişkenine dosyadan bir tek satır okur
@b = <DOSYA>; # @b değişkenine dosyanın tamamını okur
close(DOSYA);
open(DOSYA,"formbilgileri.txt") or
&hata("Dosya açılamadı.");
@bilgiler = <DOSYA>;
close(DOSYA);
foreach $satir (@bilgiler) {
chomp($satir);
print "$satir\n";
}
@bilgiler = <DOSYA>;
close(DOSYA);
foreach $satir (@bilgiler) {
chomp($satir);
print "$satir\n";
}
#!/usr/bin/perl
print "Content-type:text/html\n\n";
open(DOSYA,"formbilgileri.txt") or &hata("formbilgileri.txt dosyası açılamadı. Lütfen silyas\@esentepe.sau.edu.tr adresine mail atarak webmaster'a haber verin.");
@bilgiler = <DOSYA>;
close(DOSYA);
# Bilgileri özetlemek için önce bazı değişkenler hazırlanıyor.
$sayi = 0; # Formu gönderenlerin sayısı
$toplampuan = 0; # Verilen puanların toplamı
$yorumlar = ""; # Gönderilen bütün yorumlar
%nasilulasti_sayisi = (); # Hangi şekilde kaç kişinin ulaştığı
%ilgi = (); # Hangi bilgisayar alanıyla kaç kişinin ilgilendiğinin sayısı
%nasilulasti = ( 0 => "",
1 => "Direk adresini yazdım",
2 => "Siteyi bookmark etmiştim",
3 => "Arama motorundan buldum",
4 => "Başka bir siteden",
5 => "Adresi bir kitaptan aldım",
6 => "Diğer" );
foreach $i (@bilgiler) {
chomp($i);
($isim,$email,$nasil,$puan,$secim,$yorum) = split(/\|/,$i);
# Bu satır "$sayi = $sayi + 1" ile aynı işi görür.
$sayi++;
$toplampuan = $toplampuan + $puan;
# Bu satır $yorumlar değişkeninin sonuna $yorum değişkeninin
# içeriğini ekler.
$yorumlar .= "$yorum\n";
$nasilulasti_sayisi{$nasil}++;
@ilgilistesi = split(/,/,$secim);
foreach $j (@ilgilistesi) {
$ilgi{$j}++;
}
}
# Verilen puanlarınn ortalaması bulunuyor.
if ($sayi > 0) { # Sıfıra bölmemek için
$ort_puan = int($toplampuan / $sayi);
} else {
$ort_puan = 0;
}
# Sonuçları bildiren web sayfası hazırlanıyor.
print <<HTMLSonu;
<html><head><title>Özet</title></head>
<body>
<h2>Özet</h2>
Gönderilen form sayısı: $sayi<p>
Verilen puanların ortalaması: $ort_puan<p>
Siteye kaç kişinin ne şekilde ulaştığı:<br>
<ul>
<li>(yanıtlamayan) - $nasilulasti_sayisi{0}
<li>$nasilulasti{1} - $nasilulasti_sayisi{1}
<li>$nasilulasti{2} - $nasilulasti_sayisi{2}
<li>$nasilulasti{3} - $nasilulasti_sayisi{3}
<li>$nasilulasti{4} - $nasilulasti_sayisi{4}
<li>$nasilulasti{5} - $nasilulasti_sayisi{5}
<li>$nasilulasti{6} - $nasilulasti_sayisi{6}
</ul>
Kaç kişinin hangi bilgisayar alanıyla ilgili olduğu:<br>
<ul>
<li>Web Design: $ilgi{'wds'}
<li>Web Server Yöneticiliği: $ilgi{'wsy'}
<li>Electronic Commerce: $ilgi{'tic'}
<li>Elektronik Ticaret: $ilgi{'tic'}
<li>İnternet Aracılığıyla Eğitim: $ilgi{'egt'}
</ul><p>
Sayfa Hakkında Yorumlar:<p>
$yorumlar
HTMLSonu
;
sub hata {
($hatamesaji) = @_;
print "<h2>Hata!</h2>\n";
print $hatamesaji;
exit;
}
print "Content-type:text/html\n\n";
open(DOSYA,"formbilgileri.txt") or &hata("formbilgileri.txt dosyası açılamadı. Lütfen silyas\@esentepe.sau.edu.tr adresine mail atarak webmaster'a haber verin.");
@bilgiler = <DOSYA>;
close(DOSYA);
# Bilgileri özetlemek için önce bazı değişkenler hazırlanıyor.
$sayi = 0; # Formu gönderenlerin sayısı
$toplampuan = 0; # Verilen puanların toplamı
$yorumlar = ""; # Gönderilen bütün yorumlar
%nasilulasti_sayisi = (); # Hangi şekilde kaç kişinin ulaştığı
%ilgi = (); # Hangi bilgisayar alanıyla kaç kişinin ilgilendiğinin sayısı
%nasilulasti = ( 0 => "",
1 => "Direk adresini yazdım",
2 => "Siteyi bookmark etmiştim",
3 => "Arama motorundan buldum",
4 => "Başka bir siteden",
5 => "Adresi bir kitaptan aldım",
6 => "Diğer" );
foreach $i (@bilgiler) {
chomp($i);
($isim,$email,$nasil,$puan,$secim,$yorum) = split(/\|/,$i);
# Bu satır "$sayi = $sayi + 1" ile aynı işi görür.
$sayi++;
$toplampuan = $toplampuan + $puan;
# Bu satır $yorumlar değişkeninin sonuna $yorum değişkeninin
# içeriğini ekler.
$yorumlar .= "$yorum\n";
$nasilulasti_sayisi{$nasil}++;
@ilgilistesi = split(/,/,$secim);
foreach $j (@ilgilistesi) {
$ilgi{$j}++;
}
}
# Verilen puanlarınn ortalaması bulunuyor.
if ($sayi > 0) { # Sıfıra bölmemek için
$ort_puan = int($toplampuan / $sayi);
} else {
$ort_puan = 0;
}
# Sonuçları bildiren web sayfası hazırlanıyor.
print <<HTMLSonu;
<html><head><title>Özet</title></head>
<body>
<h2>Özet</h2>
Gönderilen form sayısı: $sayi<p>
Verilen puanların ortalaması: $ort_puan<p>
Siteye kaç kişinin ne şekilde ulaştığı:<br>
<ul>
<li>(yanıtlamayan) - $nasilulasti_sayisi{0}
<li>$nasilulasti{1} - $nasilulasti_sayisi{1}
<li>$nasilulasti{2} - $nasilulasti_sayisi{2}
<li>$nasilulasti{3} - $nasilulasti_sayisi{3}
<li>$nasilulasti{4} - $nasilulasti_sayisi{4}
<li>$nasilulasti{5} - $nasilulasti_sayisi{5}
<li>$nasilulasti{6} - $nasilulasti_sayisi{6}
</ul>
Kaç kişinin hangi bilgisayar alanıyla ilgili olduğu:<br>
<ul>
<li>Web Design: $ilgi{'wds'}
<li>Web Server Yöneticiliği: $ilgi{'wsy'}
<li>Electronic Commerce: $ilgi{'tic'}
<li>Elektronik Ticaret: $ilgi{'tic'}
<li>İnternet Aracılığıyla Eğitim: $ilgi{'egt'}
</ul><p>
Sayfa Hakkında Yorumlar:<p>
$yorumlar
HTMLSonu
;
sub hata {
($hatamesaji) = @_;
print "<h2>Hata!</h2>\n";
print $hatamesaji;
exit;
}
Bölüm 7: Dosyada Metin Arama
@sonuclar = grep(/$arananmetin/,@liste);
#!/usr/bin/perl
@liste = ("sinan","koray","baris","orhan");
$arananmetin = "an";
@sonuclar = grep(/$arananmetin/,@liste);
foreach $i (@sonuclar) { print "$i\n"; }
@liste = ("sinan","koray","baris","orhan");
$arananmetin = "an";
@sonuclar = grep(/$arananmetin/,@liste);
foreach $i (@sonuclar) { print "$i\n"; }
sinan
orhan
orhan
1|768|Hasan Şahin|15
2|515|Mustafa Öztürk|16
3|663|İlhan Yıldırım|16
4|697|Fikret Yılmaz|15
5|716|Haluk Çiçek|15
2|515|Mustafa Öztürk|16
3|663|İlhan Yıldırım|16
4|697|Fikret Yılmaz|15
5|716|Haluk Çiçek|15
#!/usr/bin/perl
$veridosyasi = "ogrenci.txt";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($alanadi, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$deger =~ s/~!/ ~!/g;
$FORM{$alanadi} = $deger;
}
$arananmetin = $FORM{'isim'};
open(DOSYA,$veridosyasi);
@bilgiler = <DOSYA>;
close(DOSYA);
print "Content-type:text/html\n\n";
print "<html><head><title>Arama Sonuçları</title></head>\n";
print "<body><h3>Arama Sonuçları</h3>\n";
$bulunansayisi = 0;
@sonuclar = grep(/$arananmetin/,@bilgiler);
if ($#sonuclar >= 0) {
foreach $i (@sonuclar) {
chomp($i);
($kayitno,$okulno,$adsoyad,$yas) = split(/\|/,$i);
print "<b>$adsoyad</b> Okul No: $okulno Yaş: $yas<br>\n";
$bulunansayisi++;
}
print "<br><b>$bulunansayisi</b> kayıt bulundu.<p>\n";
}
else {
print "Kayıt Bulunamadı.<p>\n";
}
print "</body></html>\n";
$veridosyasi = "ogrenci.txt";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($alanadi, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$deger =~ s/~!/ ~!/g;
$FORM{$alanadi} = $deger;
}
$arananmetin = $FORM{'isim'};
open(DOSYA,$veridosyasi);
@bilgiler = <DOSYA>;
close(DOSYA);
print "Content-type:text/html\n\n";
print "<html><head><title>Arama Sonuçları</title></head>\n";
print "<body><h3>Arama Sonuçları</h3>\n";
$bulunansayisi = 0;
@sonuclar = grep(/$arananmetin/,@bilgiler);
if ($#sonuclar >= 0) {
foreach $i (@sonuclar) {
chomp($i);
($kayitno,$okulno,$adsoyad,$yas) = split(/\|/,$i);
print "<b>$adsoyad</b> Okul No: $okulno Yaş: $yas<br>\n";
$bulunansayisi++;
}
print "<br><b>$bulunansayisi</b> kayıt bulundu.<p>\n";
}
else {
print "Kayıt Bulunamadı.<p>\n";
}
print "</body></html>\n";
<form
action="http://hammer.prohosting.com/~sinan/cgi-bin/ornek/ogrenci1.cgi">
Aradığınız kişinin ismini girin <input type="Text" name="isim"> </form>
Aradığınız kişinin ismini girin <input type="Text" name="isim"> </form>
#!/usr/bin/perl
$veridosyasi = "ogrenci.txt";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($alanadi, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$deger =~ s/~!/ ~!/g;
$FORM{$alanadi} = $deger;
}
$arananmetin = $FORM{'isim'};
open(DOSYA,$veridosyasi);
@bilgiler = <DOSYA>;
close(DOSYA);
print "Content-type:text/html\n\n";
print "<html><head><title>Arama Sonuçları</title></head>\n";
print "<body><h3>Arama Sonuçları</h3>\n";
$bulunansayisi = 0;
@sonuclar = grep(/$arananmetin/,@bilgiler);
if ($#sonuclar >= 0) {
foreach $i (@sonuclar) {
chomp($i);
($kayitno,$okulno,$adsoyad,$yas) = split(/\|/,$i);
if ($adsoyad =~ $arananmetin) {
print "<b>$adsoyad</b> Okul No: $okulno Yaş: $yas<br>\n";
$bulunansayisi++;
}
}
}
if ($bulunansayisi == 0) {
print "Kayıt Bulunamadı.<p>\n";
}
else {
print "<br><b>$bulunansayisi</b> kayıt bulundu.<p>\n";
}
print "</body></html>\n";
$veridosyasi = "ogrenci.txt";
read(STDIN, $tampon, $ENV{'CONTENT_LENGTH'});
@ciftler = split(/&/, $tampon);
foreach $cift (@ciftler) {
($alanadi, $deger) = split(/=/, $cift);
$deger =~ tr/+/ /;
$deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$deger =~ s/~!/ ~!/g;
$FORM{$alanadi} = $deger;
}
$arananmetin = $FORM{'isim'};
open(DOSYA,$veridosyasi);
@bilgiler = <DOSYA>;
close(DOSYA);
print "Content-type:text/html\n\n";
print "<html><head><title>Arama Sonuçları</title></head>\n";
print "<body><h3>Arama Sonuçları</h3>\n";
$bulunansayisi = 0;
@sonuclar = grep(/$arananmetin/,@bilgiler);
if ($#sonuclar >= 0) {
foreach $i (@sonuclar) {
chomp($i);
($kayitno,$okulno,$adsoyad,$yas) = split(/\|/,$i);
if ($adsoyad =~ $arananmetin) {
print "<b>$adsoyad</b> Okul No: $okulno Yaş: $yas<br>\n";
$bulunansayisi++;
}
}
}
if ($bulunansayisi == 0) {
print "Kayıt Bulunamadı.<p>\n";
}
else {
print "<br><b>$bulunansayisi</b> kayıt bulundu.<p>\n";
}
print "</body></html>\n";
Bölüm 8: Son Birkaç Söz
http://www.lies.com/begperl/
http://agora.leeds.ac.uk/Perl/Cgi/start.html
http://www.xnet.com/~efflandt/pub/
http://cgi.resourceindex.com/rate/rated.html
http://www.speakeasy.org/~cgires/
http://www.eprotect.com/stas/TULARC/webmaster/cgi-scripts1.html
Hiç yorum yok:
Yorum Gönder