receive

Transkript

receive
Dağıtık Sistemler CS5001
Th. Letschert
Çeviri : Turgay Akbaş
TH Mittelhessen Gießen
University of Applied Sciences
Protokoller ve Katmanlar
Protokoller
Protokol Özellikleri
Bir protokolün 5 unsuru*
Service:
Assumptions:
Vocabulary:
Encoding:
Procedure Rules:
Protokolü sağlayan servis
Yürütme ortamı hakkında varsayımlar
Gönderip alınan mesajlar
Mesajların kodlaması / formatı
Mesaj değişim kuralları
Service
Rules
En- / De-Coding
Service
Vocabulary
Rules
En- / De-Coding
Assumptions
*G.J. Holzmann: Design and Validation of
Computer Protocols, Prentice-Hall, 1991
Seite 2
(Holzmann prokoll doğrulama için kullanılan Spın
modelinin geliştiricisidir.)
Protokoller
Protokol Özellikleri
Procedure Rules
Süreçlerin geçiş sistemleri gibi


(extended) sonlu otomatalar
başka bir program / tanımlama gösterimi
formlarında tanımlanmalarıdır.
Durum a
Event
Reaksiyon
Durum b
Seite 3
Protokoller
Örnek Pencere-Protokolü (sliding window protocol)
Informal Açıklama:
Pencere Protokolü: FIFO özelliğine sahip kanallar ile direkt olarak birbirlerine bağlanmış süreçlerde
veri taşımasındaki (Hata ve) akış kontrolü mekanizması.
Prensip: Alıcı göndericiye n tane mesajı almaya hazır olduğuna dair n „kredisi“ gönderir. Kredi
gönderimde kullanılır ancak alıcı tarafından bir bilgi (Ack (-knowledge)) mesajıyla yenilenebilir.
En kolay bileşeni Start-Stop protokolüdür. Kredi 1'dir ve kullanıldığında bilgi mesajıyla yenilenir.
Genel olarak gönderici W kredisiyle başlar - „Pencere Büyüklüğü“. Gönderme işlemleri güncel kredi
değerini azaltır ve bilgi mesajları bu sayıyı artırır. Sayı
w = W – m + a m = Gönderilen mesajların, a = onaylanan mesajların sayısı
iletim penceresi olarak adlandırılır.
Pencere protokolleri aynı anda iletimde olabilen mesajlar ve onaylar üzerinde sürgülü bir akış kontrolü
sağlar.
Hata giderme: Sıra numaraları ve zamanların izlenmesiyle birlikte, pencere protokolleri akışın yanında
hata kontrolü yapacak şekilde geliştirilebilir.
Seite 4
Protokoller
Örnek sliding window Protokoll (sadece akış kontrolü) SDL içinde 1. çeşit *
Gönderici
Alıcı
receive
n<W
produce:m
Bu nedir:
Süreçler, Durumlar,
Eventler,
Protokol
otomataları?
msg(m)
receive
accept:m
n++
ack
ack
msg(m)
n--
Seite 5
* G. Holzmann, Design and Validation of
Computer Protocols,Sayfa 72
Protokoller
Örnek sliding window Protokoll (sadece akış kontrolü)
Süreçlerle Tanımlama
G
const
W = ..
var w = 0
do
w < N : produce(pkt) =>
w++
receiver!pkt
Receiver
do
sender?pkt =>
accept(pkt)
sender!Ack
od
receiver?Ack =>
w-od
produce „burada geçen“ bir „iç olaydır“.
accept mesajın içeride kabul edilmesidir.
Seite 6
Protokoller
Örnek sliding window Protokoll (sadece akış kontrolü)
Süreçler, Durum Otomaları, Prosedürler
Sender
Receiver
const
W = ..
var w = 0
do
sender?pkt =>
accept(pkt)
sender!Ack
do
w < N : produce(pkt) =>
w++
receiver!pkt
od
receiver?Ack =>
w-od
?
Süreç
Prosedür
accept
produce
Sender
Otomat
ack
Receiver
receiver
otomat
Süreç
Seite 7
?
pkt
sender
Süreç
Protokoller
Örnek sliding window Protokoll (hata kontrolü ile) (1)*
Sender
type SeqNr= 0..MaxSeqNr
var wBot:
SeqNr = 0
var wTop:
SeqNr = 0
const BufSize:int = MaxSeqNr+1
var wSize:
0..BufSize
var buffer: Pkt[0..MaxSeqNr]
var
timer:
Timer[0..MaxSeqNr]
do
wSize < BufSize : client?pkt =>
wSize++
buffer[wTop] = pkt
timer[wTop].start
receiver!<pkt,wTop>
wTop = (wTop+1)%BufSize
Müşterilerin veri paketini pkt kabul etmek:
Buffera kayıt edilmesi
Zamanlayıcıyı başlatılması
Alıcıya gönderilmesi
Pencerenin üst sınırını taşınması
receiver?Ack(a) =>
foreach i in wBot..a in modulo wSize-Arithm. {
timer[i].stop
wSize-wBot = (wBot+1)%BufSize
}
w_bot = a+1
timer[t].alarm =>
receiver!<pkt,t>
od
Seite 8
Alıcıya sıra numarası a için onay
verilmesi:
Bütün onaylanmış Pkt'ler için
zamanlayıcıların durdurulması:
Pencerenin alt sınırının taşınması
t numaralı paket için zamanlayıcının
süresi doldu:
Tekrar gönder
*N. Tanenbaum, Compuer Netwoks, 2nd
Edition, Sayfa 232ff
Protokoller
Örnek sliding window Protokoll (hata kontrolü ile) (2)
Receiver
Veri paketini al ve eğer doğru sıra
numarasına sahipse onayla.
var seqNrExpected = 0
do
sender?<pkt,s> =>
if (s == seqNrExpected) {
deliver(pkt)
sender!<ack,s>
seqNrExpected = (seqNrExpected+1)%BufSize
}
od
Seite 9
Katman / Layer
Katman / Layer
Öğretmenin eforu ve anlama açısından muhtemelen en büyük uyumsuzluğa sahip
konsept
OSI Katman konsepti
International Organization for Standardization, Information Processing
Open SystemsSeite
Interconnection,
Basic Reference Model, ISO 7498, 1987
10
Katman / Layer
Katman / Layer
Katman ~ sanal makine
gerçekleştirimi kapsüllenmiş (encapsulated) olanlara hizmet eder.
send
receive
Protokol gerçekleştirimi bir buffer
gibi davranır.
Buffer bir monitör – kendini
senkronize eden bir kaynaktır.
Akış ve Hata Kontrolleriyle İletim
Seite 11
Katman / Layer
Katman / Layer: Katman ve müşterilerin süreç yapıları ve etkileşimleri
Katman: müşterisinin aktif veya pasif partneri?
Sender
Receiver
Çağrı Arayüzü
send
receive
Akış ve Hata Kontrolleriyle İletim
sender
Katman pasif
receiver
İletişim
Arayüzü
Akış ve Hata Kontrolleriyle İletim
Seite 12
Katman aktif
Katman / Layer
Katman / Layer : Katman ve müşterilerin süreç yapıları ve etkileşimleri
Sender
Çağrı arayüzü
Receiver
receive
Callback- /
Çağrı arayüzü „geriye doğru“
Süreç
send
Akış ve Hata Kontrolleriyle İletim
Roller aşağıdaki gibi atanabilir:
Örn: aktif gönderim, pasif alım
veya çağırılan ve çağıran
durumuna göre aktif rol
değişimi.
Klassiker:
David Clark: The structuring of Systems Using Upcalls. In Proceedings of the 10th ACM
Symposium on Operating
Systems
Principles, pages 171-180, ACM Oakland, CA, 1985.
Seite
13
Katman / Layer
Katman / Layer : Katman ve müşterilerin süreç yapıları ve etkileşimleri
Die Prozessstruktur der Schichten war lange Zeit ein
heftig diskutiertes Thema unter der Überschrift
Yapı vs Etkinlik.
Protokoller etkinlik açısından süreçler olarak
tanımlanırlar, ancak sonrasında süreç sayısı ve
gerçekleştirimde kullanılan süreçler arası iletişim
minimuma indirilmeye çalışılır.
„Modularity is one of the chief villains in attempting to obtain good performance, so that the
designer is faced with a delicate and inevitable tradeoff between good structure and good
performance.“
David Clark: The structuring of Systems Using Upcalls. In Proceedings of the 10th ACM
Symposium on Operating Systems Principles, pages 171-180, ACM Oakland, CA, 1985.
Seite 14
Katman / Layer
Katman / Layer : Katman ve müşterilerin süreç yapıları ve etkileşimleri
Örnek: Fonksiyon olarak gönderim (send) ve (bloklanmış) alım (receive)
Sender
Receiver
send
receive
Ağ
Seite 15
Katman / Layer
Katman / Layer : Katman Gerçekleştirim Yapısı
Sender
Client
Receiver
Client
send
receive
?
?
Seite 16
Katman / Layer
Örnek Pencere Protokollerinin Tanımlanmaları
?
Süreç
prosedür
accept
produce
Sender
otomat
ak
Receiver
receiver
otomat
süreç
?
pkt
sender
süreç
Katmanlar ?
Katman etkileşimeri ?
Seite 17
Katman / Layer
Örnek Pencere Protokollerinin Tanımlanması : Süreç Yapısı
Sender
Client
accept
Süreç
Receiver
Client
Prosedür
produce
Sender
ak
Receiver
receiver
Otomat
pkt
sender
Otomat
İki tarafta pasif otomasyon olarak tanımlanmıştır.
Genel olarak „gönderme işlemi“ aktif süreç olarak kabul
edilir.
Diğer taraf aktif süreç olarak kabul edilir.
Hangi threadler modüllerde olduğu gibi
çalıştırılırlar?
Seite 18
Tanımlamada bir alt katman daha yoktur..
Gönderme istemcisi için bir Msg- arayüzü
vardır.
● Alıcı geri çağrım ile bilgilendirilir.
●
●
Katman / Layer
Örnek Pencere Protokollerinin Tanımlanması : Katman Yapısı
Sender Client
accept
Süreç
Receiver
Client
Süreç
produce
Sender
Automat
ak
Alıcı
Sürücüsü
Receiver
Automat
Süreç
Gerçekleştirim yapısı?
Seite 19
pkt
Süreç
Alıcı
Sürücüsü
Katman / Layer
Örnek Pencere Protokolünün Gerçekleştirimi
Koşullar / Gereksinimler:
alt katman: burada çağrı arayüzü ile verilir (alımı engelleme)
üst katman: burada çağrı arayüzü çağırılır. hier fordert Aufrufschnittstelle (alımı engelleme)
Sender
Client
Receiver
Client
send
receive
Sender
Receiver
pickUp
transmit
pickUp
Seite 20
transmit
Katman / Layer
Örnek Pencere Protokolünün Gerçekleştirimi
Protokol örneklerinin gerçekleştirimi
Sender
Client
Receiver
Client
send
receive
Alma Süreci
(receive)
pickUp
Alma Süreci
(receive)
Automat
transmit
pickUp
Seite 21
Automat
transmit
Katman / Layer
Örnek Pencere Protokolünün Gerçekleştirimi / Gönderim Tarafı
Müşteri
Süreci
Tanımlamada bir automat(otomat) pasif monitördür.
send
Alma Süreci
(receive)
pickUp
Automat
transmit
Eğer aktif monitöre dönüştürülürse, alma işleminden tasarruf
edebilirmiyiz?
Tanımlamada müşteri süreci istediğiyle mesajlar kullanarak
iletilim kurar. Gerçekleştirimde bu işlem metot olmak
zorundadır.
Seite 22
Katman / Layer
Örnek Pencere Protokolünün Gerçekleştirimi / Gönderim Tarafı
Müşteri
Süreci
send
Alma Süreci
(receive)
pickUp
Automat
transmit
Tanımlamada bir automat(otomat) pasif monitördür.
Eğer aktif monitöre dönüştürülürse, alma işleminden tasarruf
edebilirmiyiz?
Hayır!
receive pasiftir, herhangi biri tarafından çağırılmalıdır!
(Aktif) protokol otomatı(automat) receive sürecini bloklar
Buna izin verilmez. (Neden?)
Tanımlamada müşteri süreci istediğiyle mesajlar kullanarak
iletilim kurar. Gerçekleştirimde bu işlem metot olmak
zorundadır.
Basit!
Gönder metodu ''yapay'' bir mesaj göndermelidir.
Seite 23
Katman / Layer
Örnek Pencere Protokolünün Gerçekleştirimi / Alıcı Tarafı
Alıcı
İstemcisi
receive
Alma Süreci
(receive)
Automat
pickUp
transmit
gereken
tanımlana
n
Tanımlamada alıcı kendisine ait istemcileriyle aktif olarak
iletişşme geçer. Gerçekleştirimde gerekli olan pasif bir
arayüzdür.
Hangi dönüşüm gereklidir?
Seite 24
Katman / Layer
Örnek Pencere Protokolünün Gerçekleştirimi / Alıcı Tarafı
Alıcı
İstemcisi
receive
Hangi dönüşüm gereklidir:
İki aktif arasına bir buffer koyulmalıdır.
take
Buffer
put
Alma Süreci
(receive)
Automat
pickUp
transmit
Seite 25
Katman / Layer
Katman / Layer : Hata kontrolüne sahip pencere protokolünün katman gerçekleştirim
yapısı
Gönderici
Alıcı
send
re
se Protokol Otomatı
(Monitör)
nd
acceptPkt
Zamanlayıcı
Süreci
transmit
receive
Protokol Otomatı
(Monitör)
acceptPkt
Alma Süreci
(receive)
Alma Süreci
(receive)
pickUp
transmit
Seite 26
pickUp
Katman / Layer
Gerçekleştirim / İnceleme
1. Özellikleri oluşturma
2. Ortamı (environment) ve gereksinimleri belirle
3. Süreçler nerede: Ne aktif, ne pasif?
4. Ekle:
Süreçler: pasif => aktif
Buffer: İki aktif elemanın arayüzü
4. Protokol makinelerini gerçekleştir
Seite 27
Protokol: Bağlantı Kavramı / Örnekleri
Bağlantı Kavramı
Farklı durumlarda olabilen protokol makinelerine sahip protokoller bir bağlantı konseptine ihtiyaç
duyarlar.
connect / accept :
(Yeniden-) Protokol Makinelerinin Başlatılması
Seite 28
Protokol: Bağlantı Kavramı / Örnekleri
Örnekler(Instances)
Bir protokolün birden fazla örneğini eş zamanlı olarak tamamlayan katmanlar bu örneklerin ayırt
edilebilmeleri için bir imkan sunmalıdırlar.
protocol-handle = connect(...)
protocol-handle = accept(...)
Bağlantıya dayalı protokoller connect ve accept diğer işlemler için gereken protokol otomatından
yeni bir örnek türetmek „İşlem“ (Handle) sağlarlar.
Bağlantı konseptine bsahip olmayan protokoller bile eşzamanlı aktif protokol örneklerine(instance)
ihtiyaç duyarlar.
Örnek Broadcast: birden çok broadcast eşzamanlı olarak aktiftir ve bir istasyonda hepsi farklı
durumda olabilirler.
Seite 29
Protokol: Katmanlar
Protokol Örnekleri
protokolün işlenmeye başlamasıyla birlikte yaratılırlar.
Oturum– / Bağlantı Kavramı: İstemcileri örnekleri ayırt edebilmelidirler.
Alt katman teslimat sırasında yetkili örneği ayırt edebilmelidir.
Mesajlar örneklerin tanımlamalarınıda içermelidirler(„Portnr.“)
Yetkili örneğe yapılan teslimat organize edilmelidir.
Geri Çağrım Arayüzü: „Port'a kayıt yapmak“
Çağrım Arazüyü: Yetkili buffer'a erişm
...
Seite 30
Protokol : Katmanlar
Bağlantı Yönetimi
Bağlantı Yapısı ~> Protokol otomatlarının yaratımı / (yeniden-) başlatılmaları
Gönderici
Alıcı
Handle
Handle
connect
accept
erzeuge
erzeuge
send
re
se Protokol Otomatı
(Monitör)
nd
acceptPkt
Zamanlayıcı
Sürec
receive
receive
Protokol Otomatı
(Monitör)
Katman n
acceptPkt
Alma Süreci
(receive)
Alma Süreci
(receive)
transmit
transmit
Mutlaka bir close operasyonu olmalıdır.
Daha kolay anlaşılabilmesi için şekle eklenmemiştir.
Katman n+1
Seite 31
receive
Katman n-1
Protokol : Katmanlar
Mesaj İletimi / Message Dispatch
Mesajları alıcısına göndermek :
- Callback,
- Future,
- …
connect
send
send
sendAutomat
Protokoll
Automat
re Protokoll
(Monitor)
Protokoll
(Monitor)
se
Automat
nd
acceptPkt
erzeuge
TimerProzess
registrieren
zustellen
EmpfangsProzess
receive
Seite 32
transmit
Protokol : Katmanlar
Mesajların İletimi / Message Dispatch
Protokollerin Geliştirilmesi: İstemci ve sunucu soketleri
ss=Server Socket
accept(ss)
connect(ss)
cs=Client Socket
CR(cs, ss)
destination source
CA(cs, ss)
data
Çerçeve Formatı
send(data)
Data(ss, cs, data)
Alma Süreci
(receive)
Hedef soket iletim adresidir
Seite 33
Protokol : Katmanlar
Katmanlar ve Yazılım Teknolojileri :
Layer Pattern: Start at the lowest level of abstraction - call it Layer 1. This is
the base of your system. Work your way up the abstraction ladder by putting
Layer J on top of Layer J-1 until you reach the top level of functionality - call it
Layer N.
Buschmann, Meunier, Rohnert, Sommerlad: Pattern-Oriented Software Architecture, Vol 1
… ya da: dağıtık sistemlerin özel problemleri yazılım
mühendisleri tarafından çözüm beklemekte...
Seite 34

Benzer belgeler