Tiny Transport Protocol

TinyTP (ang. Tiny Transport Protocol) – protokół transportowy w IrDA obsługujący kontrolę przepływu strumienia danych w kanale. TinyTP można określić jako prostszą wersję protokołu TCP. Działa on przy współpracy z innym protokołem niższej warstwy, mianowicie z IrLMP, który jest odpowiedzialny za nadzorowanie łącza i zapewnianie funkcji multipleksowania.

TinyTP jest opcjonalnym protokołem IrDA, jednakże jest tak ważny oraz tak szeroko implementowany, że generalnie jest postrzegany jako wymagany. I pomimo iż, IrLAP (protokół niższej warstwy implementowany obowiązkowo) zapewnia rzetelny i niezawodny transfer danych,

TinyTP jest wręcz wymagany, by zapewnić aplikacji poprawną od początku do końca transmisję i dostarczenie danych.

W TinyTP sterowanie strumieniem jest wysoko-poziomowe, natomiast w IrLAP niskopoziomowe. Ponadto TinyTP doskonale radzi sobie z problemem blokady kanałów obsługiwanych przez multiplekser IrLMP (LM-MUX). W przypadku IrLAP występowanie tych błędów jest możliwe mimo że protokół ten zapewnia wysokiej jakości sterowanie przepływem multipleksowanego kanału.

Stos protokołów IrDA przedstawia się następująco:

Stos protokołów IrDA
IrLMP-IAS (information access services) IrCOMM IrOBEX IrLAN
TinyTP
IrLMP-MUX (IrLMP multiplexer)
IrLAP (IrDA link access protocol)
Warstwa Fizyczna

Kolorem oznaczone zostały protokoły opcjonalne, pozostałe są implementowane obowiązkowo.

Funkcje

Dwie podstawowe funkcje spełniane przez omawiany protokół to:

  • segmentacja i ponowne składanie danych – SAR (Segmentation and Reasembly),
  • sterowania strumieniem w kanale (z pośrednictwem LMP).

Sterowanie strumieniem w kanale jest bardzo ważna funkcją TinyTP. Między innymi protokół ten pozwala jednej ze stron przerwać nadawanie informacji bez żadnych negatywnych skutków w pracy drugiej. W przypadku zwykłego sterowania, przerwa w transmisji niekorzystnie wpływa na pracę drugiej strony.

Odnośnie do pierwszej funkcji: TinyTp umożliwia podział całego pakietu na mniejsze segmenty danych. Z segmentów tych, czyli z tzw. SDU (Service Data Unit), po udanej transmisji zostaje ponownie złożony w całość wysyłany pakiet. Maksymalna wielkość SDU jest określana przez protokół TinyTP/IrLMP w chwili rozpoczęcia pierwszego połączenia. Jedna jednostka SDU jest dopasowywana do jednej ramki IrLAP. Maksymalna wielkości SDU l t t p {\displaystyle l_{ttp}} musi spełniać następujący warunek:

l t t p l l a p l l m p l t t p , {\displaystyle l_{ttp}\leqslant l_{lap}-l'_{lmp}-l'_{ttp},}

gdzie:

l l a p {\displaystyle l_{lap}} – maksymalna wielkość ramki IrLAP,
l l m p , {\displaystyle l'_{lmp},} l t t p {\displaystyle l'_{ttp}} – wielkości nagłówków IrLMP i TinyTP (odpowiednio o rozmiarach 16 i 8 bitów).

Aby przeprowadzać sterowanie przepływem, TinyTP utrzymuje wartość okna odbiornika w {\displaystyle w} dla każdego z kanałów. O wartości okna w {\displaystyle w} decyduje rozmiar bufora TinyTP. Źródło może wysłać SDU, jeśli w > 0 , {\displaystyle w>0,} po czym od wartości w {\displaystyle w} odejmowane jest 1.

Dlatego, każda aplikacja może wysłać maksymalnie w {\displaystyle w} SDU bez otrzymania sygnału potwierdzającego. Gdy w {\displaystyle w} osiąga wartość 0 wysyłanie segmentów jest zatrzymywane. Następnie po otrzymaniu sygnału potwierdzającego, wartość w {\displaystyle w} jest uaktualniana i proces całej transmisji zaczyna się od początku.

Warto zaznaczyć też, że po inicjalizacji połączenia TinyTP dodaje do każdego pakietu 1 bajt nagłówka zawierającego informacje odnośnie do wielkości bufora i segmentacji.

Schemat przebiegu transmisji danych z wykorzystaniem protokołu TinyTP szkicowo przedstawiony jest na rysunku:

Rysunek 1. Transmisja danych z użyciem protokołu TinyTP.

Gdzie:

Parametr Opis Jednostka
w {\displaystyle w} okno odbiornika TinyTP [-]
t t a {\displaystyle t_{ta}} minimalna długość cyklu przetwarzania IrLAP s
l T T P {\displaystyle l_{TTP}} maksymalny rozmiar segmentu TinyTP bit
l l a p {\displaystyle l_{lap}} maksymalna długość ramki IrLAP bit
l l m p {\displaystyle l'_{lmp}} nagłówek IrLMP 16bitów
l t t p {\displaystyle l'_{ttp}} nagłówek TinyTP 8bitów
T t a {\displaystyle T_{ta}} czas w którym TinyTP przetwarza otrzymane segmenty i przygotowuje sygnał potwierdzający s

Optymalizacja

Obecnie pracuje się nad zoptymalizowaniem przepustowości kanału (ang. TinyTP throughput). Największy wpływ na ten parametr mają między innymi: okno odbiornika TinyTP: w , {\displaystyle w,} rozmiar ramki IrLAP: l l a p , {\displaystyle l_{lap},} długość cyklu przetwarzania IrLAP – t t a , {\displaystyle t_{ta},} wielkość bufora TinyTP.

Poprzez odpowiedni dobór parametrów (ich optymalizację): t t a = 10 4 s , {\displaystyle t_{ta}=10^{-4}s,} l t t p = l l a p l l m p l t t p , {\displaystyle l_{ttp}=l_{lap}-l'_{lmp}-l'_{ttp},} ta sama wartość w {\displaystyle w} dla każdej aplikacji, można osiągnąć przepustowość 16Mbps.

Zależność przepustowości kanału przy różnych wielkościach okna odbiornika od BER (Bit Error Rate) przedstawiona jest na poniższym rysunku.

Rysunek 2. Zależność przepustowości kanału TinyTP od BER.

Natomiast poniższy rysunek przedstawia zależność przepustowości kanału przy różnych wielkościach okna odbiornika od długość cyklu przetwarzania IrLAP – t t a . {\displaystyle t_{ta}.}

Rysunek 3. Zależność przepustowości kanału TinyTP od długość cyklu przetwarzania IrLAP – t t a . {\displaystyle t_{ta}.}

Zobacz też