5 Mart 2013 Salı

DDS ve Reliable Multicast

RTPS Nedir?
Data Distribution Service (DDS) ile gelen ve beraber çalışabilirliği sağlayan "Real Time Publish Subsribe (RTPS)" standardı sayesinde farklı DDS yazılımları arasında iletişim kurulabiliyor. Bu konuyu gösteren örnek bir resimi buradan aldım. RTPS'in yeni ismi DDSI olarak değiştirildi, yani Data Distribution Service (DDS) Interoperability Spec oldu.



RTPS, DDS yazılımları piyasaya çıktıktan sonra, ihtiyaç üzerine yaratıldı. Örneğin 2006 senesinde kaleme alınan bu yazıdaki DDS Limitations bölümünde RTPS'e olan ihtiyaç açıkça yazılmış.

RTPS ile Kullanılabilen İletişim Yöntemleri
RTPS standardında Best-Effort ve Reliable iletişimden bahsediliyor. Benim anladığım her iletişim yöntemi için de Multicast UDP kullanılıyor. Ancak Reliable Multicast için gönderen ve alan tarafın, Acknowledgement mesajları ile haberleşmeleri gerekiyor.

Best-Effort Nedir?
Best-effort iletişimini gösteren bir şekli buradan aldım. Kabaca UDP'ye benziyor. Gönderilen verinin gidip gitmediği kontrol edilmiyor.

Bir başka şekilde Best-Effort ile gönderilen verinin ağda kaybolması durumunda, verinin tekrar gönderilmediği görülebilir.

Reliable Nedir?
Reliable iletişimini gösteren bir şekli buradan aldım. Kabaca TCP'ye benziyor. Gönderilen verinin gittiği kontrol ediliyor. Eğer gitmediyse tekrar gönderiliyor.


Ancak RTPS standardında best-effort ve reliable iletişimden bahsedilmesine rağmen reliable multicast ile iletişim kurulmasından bahsedilmiyor. Bu durumda da DDS yazılımları arasında uyumsuzluklar halen olabiliyor.

Esasen reliable multicast yapmak için bir çok protokol var. Örneğin "Pragmatic General Multicast" popüler multicast protokollerinden birisi. DDS üreticileri de reliable multicast yapabilmek için anladığım kadarıyla kendi kendilerin protokoller hazırlamışlar.

OpenDDS
OpenDDS ile gelen reliable multicast protokolü ve açıklaması da burada.

Öncelikle anlatılan reliable multicast ile klasik multicast protokolü arasındaki farka dikkat etmek lazım. Klasik multicast protokolünde, mesaj dağıtım görevi, gruba üye olan IPleri bilen switch üzerine yüklenmiş durumda. Ancak RTPS protokolünde switch yok ve mesajların gidip gitmediği MULTICAST_NAK (Negative Acknowledgement) mesajı ile pasif olarak mesajları dinleyen aboneye yüklenmiş durumda. Aşağıdaki şekil bu durumu gösteriyor.



OpenSplice
OpenSplice forumundaki http://forums.opensplice.org/index.php?/topic/1212-multicast-communication/ adresinde kendi Native networking service'lerinin nasıl çalıştığını söylemiş.

Dedikleri de :

data will be retransmitted (point-to-point) to those nodes that have not sent an acknowledgement


Anladığım kadarıyla OpenDDS ve OpenSplice arasında reliable multicast uygulaması arasında önemli farklar var.

Hiç yorum yok:

Yorum Gönder