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:
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 musi spełniać następujący warunek:
gdzie:
- – maksymalna wielkość ramki IrLAP,
- – 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 dla każdego z kanałów. O wartości okna decyduje rozmiar bufora TinyTP. Źródło może wysłać SDU, jeśli po czym od wartości odejmowane jest 1.
Dlatego, każda aplikacja może wysłać maksymalnie SDU bez otrzymania sygnału potwierdzającego. Gdy osiąga wartość 0 wysyłanie segmentów jest zatrzymywane. Następnie po otrzymaniu sygnału potwierdzającego, wartość 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:
Gdzie:
Parametr | Opis | Jednostka |
---|---|---|
okno odbiornika TinyTP | [-] | |
minimalna długość cyklu przetwarzania IrLAP | s | |
maksymalny rozmiar segmentu TinyTP | bit | |
maksymalna długość ramki IrLAP | bit | |
nagłówek IrLMP | 16bitów | |
nagłówek TinyTP | 8bitów | |
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: rozmiar ramki IrLAP: długość cyklu przetwarzania IrLAP – wielkość bufora TinyTP.
Poprzez odpowiedni dobór parametrów (ich optymalizację): ta sama wartość 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.
Natomiast poniższy rysunek przedstawia zależność przepustowości kanału przy różnych wielkościach okna odbiornika od długość cyklu przetwarzania IrLAP –