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