Message Session Relay Protocol

Message Session Relay Protocol (MSRP) jest protokołem stosowanym w sieciach komputerowych do transmisji sekwencji powiązanych wiadomości w kontekście sesji komunikacyjnej. Aplikacja może utworzyć (zestawić) sesję za pomocą Session Description Protocol (tzw. SDP), z użyciem Session Initiation Protocol (tzw. SIP), lub gamy innych metod konfiguracji sieci, najczęściej dostępny portem TCP nr 2855.

Protokół MSRP jest zdefiniowany w dokumencie RFC 4975 ↓. Komunikaty mogą być również przekazywane przez pośredników, z pomocą rozszerzeń zdefiniowanych w dokumencie RFC 4976 ↓.

MSRP jest używany w kontekście RCS (joyn), szczególnie dla usług wiadomości błyskawicznych, transferu plików i udostępniania zdjęć.

Architektura MSRP

MSRP ma podobną składnię (syntax), jak i inne protokoły tekstowe udokumentowane przez Internet Engineering Task Force (IETF), takie jak np. SIP, HTTP, czy RTSP.

Każdy komunikat jest albo zapytaniem, albo odpowiedzią (REQUEST-RESPONSE). URI są używane, komunikat zawiera nagłówki i sekcję body, które może przyjąć dowolny typ danych, w tym dane binarne. W odróżnieniu od SIP, MSRP jest bardziej uproszczone. Pierwsze 2 nagłówki zawsze są następujące To-Path i From-Path, a ostatni musi określać Content-Type (typ zawartości), to znacznie zmniejsza złożoność dla parserów. Możliwe są również:

  • Message-ID
  • Success-Report
  • Failure-Report
  • Byte-Range
  • Status

Komunikaty muszą kończyć się 7-ma znakami myślnika („ – „), a następnie identyfikatorem transakcji, który pojawia się w pierwszej linijce, następnie flagą kontynuacji, oraz znakiem końca wiersza (CRLF). Tak standaryzowana ostatnia linia na końcu komunikatu sprawia, że jest prosto odkryć granice komunikatu. MSRP nie jest zdefiniowany do działania w CL-mode (tzw. Connectionless communication, jak np. UDP), więc nie zapewnia, że odpowiedź na zapytanie przybędzie w trakcie tego samego połączenia. MSRP również zależy od niezawodności w warstwie transportowej (vide Model OSI), to jest: gwarantuje dostawy i utrzymuje kolejność komunikatów, co jeszcze bardziej upraszcza design całego protokołu.

Stosowane są dwie metody zapytań:

  • SEND
  • REPORT

Adresy URI dla MSRP jak to określono RFC 3986 ↓, są schematyczne, tj. zaczynają się od „msrp://” lub „msrps://”, oraz zawierają adres IP/nazwę organu (organizacji), opcjonalnie: numer portu, identyfikator sesji, i dodatkowe parametry.

Przykład

msrp://atlanta.example.com:7531/jshA7weztas;tcp

  • msrp jest schematem
  • atlanta.example.com jest adresem (organizacja)
  • 7351 jest numerem użytego portu
  • jshA7weztas jest identyfikatorem sesji
  • tcp określono protokół transportowy

Użytkowanie w SIP

MSRP może być stosowany w sesjach SIP:

  • wiadomości błyskawiczne w trybie jeden-do-jednego lub jeden-do-wielu
  • aby przesłać pliki w komunikatorach, przesyłkę slajdu prezentacji
  • niektóre aplikacje do udostępniania zdjęć (np. Image Share) na podstawie wcześniejszego podziału funkcji między użytkownikami końcowymi

Sesja MSRP jest zestawiana przez model oferta-odpowiedź[1] Protokół Deskrypcji Sesji (SDP), określa typ medium w linii „m” jako message (komunikat), w kolejnym miejscu protokół jako TCP/MSRP dla MSRP przez TCP, oraz jako TCP/TLS/MSRP dla bezpiecznego protokołu TLS.

Ponadto w atrybucie path podany jest jeden lub więcej adresów URI urządzeń MSRP przez które przechodzi komunikat.

Pełny przykład SDP, jak jest to podane w dokumencie RFC:

v=0
 o=alice 2890844526 2890844527 IN IP4 alice.example.com
 s= –
 c=IN IP4 alice.example.com
 t=0 0
 m=message 7531 TCP/MSRP *
a=accept-types:text/plain
 a=path:msrp://alice.example.com:7531/2s93i9ek2a;tcp

MSRP zawiera adres i port, a w tym samym czasie wiersz c (c-line) zawiera adres, oraz wiersz m (m-line) zawiera port, to jest przyczyną niejasności. Generalnie, inne typy nośników (mediów) używają wiersza c (c-line) i m (m-line) by opisać adres, jednak MSRP RFC 4975 ↓ stanowi, że informacja ta została wyspecyfikowana również jako atrybut path. To może spowodować, że niektóre urządzenia nieprawidłowo zestawią sesję, w szczególności działające w B2BUA (Back-to-back user agent) wymaga, aby zmienić atrybut path każdemu komunikatowi MSRP w kolejce a wysyłanemu do różnych urządzeń. Aby przezwyciężyć to, artykuł RFC 6714 ↓ „CEMA for MSRP” zmienia sposób w jaki urządzenia świadome CEMA (Connection Establishment for Media Anchoring) korzystają z SDP, który rozwiązał problem wybudzenia tych urządzeń, za pomocą atrybutu (msrp-cema), oraz podjął kroki pogłębiające kwestie bezpieczeństwa i wydajności takich integracji.

Implementacje

Wspólna i otwarta biblioteka jest zaimplementowana w różnych językach programowania:

Biblioteki

  • Java MSRP Peer library[2], na następujące porty:
  • C#/.Net
  • Java ME
  • Python MSRPlib
  • Centralized Conferencing framework (Sourceforge)

Klienci

  • Blink to cross-platformowy klient SIP z supportem protokołu MSRP.
  • Wireshark narzędzie monitorujące ruch sieciowy

Serwery

  • Przekaźnik MSRP ma swoją implementację (open source) napisaną w Pythonie, tutaj.
  • Switch MSRP również ma implementację (open source), napisaną w Pythonie, tutaj.
  • Kamailio (serwer SIP) ma wbudowany przekaźnik (open source) do MSRP, napisany w C, tutaj.

Przypisy

  1. RFC 3264 ↓.
  2. Strona internetowa MSRP Java peer library
    .

Linki zewnętrzne

  • B.B. Campbell B.B., R.R. Mahy R.R., C.C. Jennings C.C., The Message Session Relay Protocol (MSRP), RFC 4975, IETF, wrzesień 2007, DOI: 10.17487/RFC4975, ISSN 2070-1721, OCLC 943595667  (ang.).
  • C.C. Jennings C.C., R.R. Mahy R.R., A.B.A.B. Roach A.B.A.B., Relay Extensions for the Message Sessions Relay Protocol (MSRP), RFC 4976, IETF, wrzesień 2007, DOI: 10.17487/RFC4976, ISSN 2070-1721, OCLC 943595667  (ang.).
  • T.T. Berners-Lee T.T., R.R. Fielding R.R., L.L. Masinter L.L., Uniform Resource Identifier (URI): Generic Syntax, STD 66, RFC 3986, IETF, styczeń 2005, DOI: 10.17487/RFC3986, ISSN 2070-1721, OCLC 943595667  (ang.).
  • J.J. Rosenberg J.J., H.H. Schulzrinne H.H., An Offer/Answer Model with Session Description Protocol (SDP), RFC 3264, IETF, czerwiec 2002, DOI: 10.17487/RFC3264, ISSN 2070-1721, OCLC 943595667  (ang.).
  • C.C. Holmberg C.C., S.S. Blau S.S., E.E. Burger E.E., Connection Establishment for Media Anchoring (CEMA) for the Message Session Relay Protocol (MSRP), RFC 6714, IETF, sierpień 2012, DOI: 10.17487/RFC6714, ISSN 2070-1721, OCLC 943595667  (ang.).