Stos protokołów UniPro
W technologii telefonii komórkowej stos protokołów UniPro jest zgodny z architekturą klasycznego modelu referencyjnego OSI . W UniPro warstwa fizyczna OSI jest podzielona na dwie podwarstwy: warstwę 1 (rzeczywistą warstwę fizyczną) i warstwę 1.5 (warstwa adaptera PHY), która abstrahuje od różnic między alternatywnymi technologiami warstwy 1. Rzeczywista warstwa fizyczna jest osobną specyfikacją, ponieważ różne opcje PHY są ponownie wykorzystywane w innych MIPI Alliance .
Warstwa # | Nazwa warstwy | Funkcjonalność | Nazwa jednostki danych | |
---|---|---|---|---|
LA | Aplikacja | Semantyka ładunku i transakcji | Wiadomość | |
DME | ||||
Warstwa 4 | Transport | Porty, multipleksowanie, kontrola przepływu | Człon | |
Warstwa 3 | Sieć | Adresowanie, routing | Paczka | |
Warstwa 2 | Łącza danych | Niezawodność pojedynczego przeskoku i arbitraż oparty na priorytetach | Rama | |
Warstwa 1.5 | Adapter PHY | Abstrakcja warstwy fizycznej i obsługa wielu linii | Znak UniPro | |
Warstwa 1 | Warstwa fizyczna (PHY) | Sygnalizacja, taktowanie, kodowanie linii, tryby zasilania | symbol PHY |
Sama specyfikacja UniPro obejmuje warstwy 1.5, 2, 3, 4 oraz DME (Device Management Entity). Warstwa aplikacji (LA) jest poza zakresem, ponieważ różne zastosowania UniPro będą wymagały różnych protokołów LA. Warstwa fizyczna (L1) jest objęta osobnymi specyfikacjami MIPI, aby w razie potrzeby umożliwić ponowne wykorzystanie PHY przez inne (mniej ogólne) protokoły.
Warstwy OSI 5 (sesja) i 6 (prezentacja) są, w stosownych przypadkach, liczone jako część warstwy aplikacji.
Warstwa fizyczna (L1)
D-PHY
Wersje 1.0 i 1.1 UniPro wykorzystują technologię MIPI D-PHY dla zewnętrznej warstwy fizycznej. Ta PHY umożliwia komunikację między chipami. Szybkości transmisji danych D-PHY są zmienne, ale mieszczą się w zakresie 500-1000 Mbit/s (obsługiwane są niższe prędkości, ale przy zmniejszonej wydajności energetycznej). D-PHY został nazwany na cześć rzymskiej liczby 500 („D”).
D-PHY wykorzystuje sygnalizację różnicową do przesyłania symboli PHY przez okablowanie mikropaskowe. Druga para sygnałów różnicowych jest używana do przesyłania powiązanego sygnału zegarowego ze źródła do miejsca docelowego. Technologia D-PHY wykorzystuje zatem w sumie 2 przewody zegarowe na kierunek oraz 2 przewody sygnałowe na pas i kierunek. Na przykład D-PHY może wykorzystywać 2 przewody do zegara i 4 przewody (2 tory) do przesyłania danych w kierunku do przodu, ale 2 przewody do zegara i 6 przewodów (3 tory) do przesyłania danych w kierunku odwrotnym. Ruch danych w kierunkach do przodu i do tyłu jest całkowicie niezależny na tym poziomie stosu protokołów.
W UniPro D-PHY jest używany w trybie (zwanym kodowaniem „8b9b”), który przenosi 8-bitowe bajty jako 9-bitowe symbole. Protokół UniPro wykorzystuje to do reprezentowania specjalnych symboli sterujących (poza zwykłymi wartościami od 0 do 255). Sam PHY używa tego do reprezentowania pewnych specjalnych symboli, które mają znaczenie dla samego PHY (np. symbole IDLE). Należy zauważyć, że stosunek 8:9 może powodować pewne zamieszanie przy określaniu szybkości transmisji danych D-PHY: implementacja PHY działająca z częstotliwością zegara 450 MHz jest często oceniana jako PHY 900 Mbit/s, podczas gdy tylko 800 Mbit/s jest następnie dostępne dla stosu UniPro.
D-PHY obsługuje również tryb transmisji danych o niskim poborze mocy (LPDT) i różne inne tryby o niskim poborze mocy do użytku, gdy nie trzeba przesyłać danych.
M-PHY
Wersje 1.4 i nowsze UniPro obsługują zarówno technologię D-PHY, jak i M-PHY . Technologia M-PHY jest nadal w fazie roboczej, ale obsługuje szybkie szybkości transmisji danych, zaczynając od około 1000 Mbit / s (M-PHY został nazwany na cześć liczby rzymskiej oznaczającej 1000). Oprócz wyższych prędkości, M-PHY będzie zużywać mniej przewodów sygnałowych, ponieważ sygnał zegara jest osadzony w danych za pomocą standardowego w branży kodowania 8b10b . Ponownie, PHY zdolne do przesyłania danych użytkownika z szybkością 1000 Mbit/s jest zwykle określane jako pracujące w trybie 1250 Mbit/s ze względu na kodowanie 8b10b.
Technologia PHY | Wersja / Wydany | Kodowanie symboli | Gbit/s (ładunek) | pasy | Obsługiwane w |
---|---|---|---|---|---|
D-PHY | 1.2/wrzesień 2014 | 8b/9b | 4,5 Gb/s/pasmo | 4-pasmowy port | |
M-PHY | 3.1/czerwiec 2014 | 8b/10b | 11,6 Gb/s/pasmo | Port 4+1 pas | |
C-PHY | 1.00.00 / październik 2014 r | ? 2,5 Gbit/s/pas? | 3-pasmowy port |
Oczekuje się, że D- i M-PHY będą współistnieć przez kilka lat. D-PHY to mniej złożona technologia, M-PHY zapewnia większą przepustowość przy mniejszej liczbie przewodów sygnałowych, a C-PHY zapewnia niski pobór mocy.
Tryby niskiej prędkości i oszczędność energii
Warto zauważyć, że UniPro obsługuje energooszczędne tryby komunikacji o niskiej prędkości, zapewniane zarówno przez D-PHY (10 Mbit/s), jak i M-PHY (3 Mbit/s do 500 Mbit/s). W tych trybach zużycie energii z grubsza skaluje się wraz z ilością wysyłanych danych. Ponadto obie technologie PHY zapewniają dodatkowe tryby oszczędzania energii, ponieważ zostały zoptymalizowane do użytku w urządzeniach zasilanych bateryjnie.
Warstwa adaptera PHY (L1.5)
Architektonicznie warstwa adaptera PHY służy do ukrywania różnic między różnymi opcjami PHY (D- i M-PHY). Ta abstrakcja zapewnia zatem głównie elastyczność architektoniczną. Wyabstrahowane szczegóły PHY obejmują różne stany mocy i zastosowane schematy kodowania symboli.
symbole L1.5
ctl | b15 | b14 | b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
1 | 1. bajt symbolu kontrolnego L1.5 | 2. bajt symbolu kontrolnego L1.5 | ||||||||||||||
0 | Pierwszy bajt symbolu danych L1.5 | Drugi bajt symbolu danych L1.5 | ||||||||||||||
0 | Pierwszy bajt symbolu danych L1.5 | Drugi bajt symbolu danych L1.5 | ||||||||||||||
0 | Pierwszy bajt symbolu danych L1.5 | Drugi bajt symbolu danych L1.5 | ||||||||||||||
0 | Pierwszy bajt symbolu danych L1.5 | Drugi bajt symbolu danych L1.5 | ||||||||||||||
1 | 1. bajt symbolu kontrolnego L1.5 | 2. bajt symbolu kontrolnego L1.5 | ||||||||||||||
0 | Pierwszy bajt symbolu danych L1.5 | Drugi bajt symbolu danych L1.5 |
L1.5 ma zatem swoje własne (koncepcyjne) kodowanie symboli składające się z symboli 17-bitowych. Te 17-bitowe symbole nigdy nie pojawiają się na przewodach, ponieważ są najpierw konwertowane przez L1.5 na parę symboli PHY. Dodatkowy 17. bit kontrolny wskazuje specjalne symbole kontrolne, które są używane przez sam protokół (L1.5 i L2). Na rysunkach bity kontrolne są pokazane jako „L1.5 na czerwono” jako przypomnienie, że są one zdefiniowane i używane przez protokół warstwy 1.5.
Obsługa wielu pasów L1.5
Główną cechą, którą L1.5 oferuje użytkownikom, jest umożliwienie zwiększenia przepustowości łącza UniPro poprzez użycie 2, 3 lub 4 pasów, gdy pojedynczy pas nie zapewnia wystarczającej przepustowości. Dla użytkownika takie wielopasmowe łącze wygląda po prostu na szybszą warstwę fizyczną, ponieważ symbole są przesyłane przez 2, 3 lub 4 tory. Aplikacje, które wymagają większej przepustowości w jednym kierunku, ale mniejszej przepustowości w przeciwnym kierunku, mogą mieć różną liczbę pasów w każdym kierunku.
Wykrywanie pasa L1.5
Począwszy od UniPro v1.4, L1.5 automatycznie wykrywa liczbę możliwych do wykorzystania pasów M-PHY dla każdego kierunku łącza. Obejmuje to prosty protokół wykrywania w L1.5, który jest wykonywany podczas inicjalizacji. Protokół przesyła dane testowe na każdej dostępnej linii wychodzącej i odbiera informacje zwrotne od jednostki równorzędnej o tym, które dane na której linii rzeczywiście dotarły na drugi koniec łącza. Mechanizm obsługuje również przezroczyste mapowanie pasów, aby zapewnić projektantom płytek drukowanych elastyczność w sposobie fizycznego okablowania pasów.
Zarządzanie zasilaniem łącza L1.5
Począwszy od UniPro v1.4, L1.5 ma wbudowany protokół o nazwie PACP (PA Control Protocol), który pozwala L1.5 komunikować się z równorzędną jednostką L1.5 na drugim końcu łącza opartego na M-PHY. Jego głównym zastosowaniem jest zapewnienie prostego i niezawodnego sposobu, w jaki kontroler na jednym końcu łącza może zmieniać tryby zasilania zarówno kierunku do przodu, jak i do tyłu łącza. Oznacza to, że kontroler umieszczony na jednym końcu łącza może zmienić tryb zasilania obu kierunków łącza w pojedynczej operacji atomowej. Skomplikowane kroki wymagane do wykonania tego w pełni niezawodny sposób są obsługiwane w przejrzysty sposób w L1.5.
Kontrola parametrów równorzędnych L1.5
Oprócz zarządzania mocą łącza L1.5, PACP jest również używany do kontroli dostępu i parametrów stanu równorzędnego urządzenia UniPro.
Gwarancje 1,5 L
Mechanizmy w L1.5 gwarantują protokołom wyższych warstw:
- po zresetowaniu każdy nadajnik L1.5 będzie czekał, aż podłączony odbiornik L1.5 będzie znany jako aktywny (obsługiwany przez uścisk dłoni)
- jeśli używany jest więcej niż jeden pas, kolejność oryginalnego strumienia symboli jest zachowana (pomimo użycia wielu pasów i swobody łączenia tych pasów)
- zmiany trybu zasilania są wykonywane niezawodnie (nawet w przypadku błędów bitowych)
Warstwa łącza danych (L2)
Głównym zadaniem warstwy łącza danych UniPro (L2) jest zapewnienie niezawodnej komunikacji między dwoma sąsiednimi węzłami w sieci - pomimo sporadycznych błędów bitowych w warstwie fizycznej lub potencjalnego przeciążenia łącza, jeśli odbiornik nie może wystarczająco szybko wchłonąć danych.
Ramki danych L2
L2 grupuje 17-bitowe symbole UniPro L1.5 w pakietowe ramki danych (termin pakiet jest zarezerwowany dla L3). Te ramki danych zaczynają się od 17-bitowego symbolu kontrolnego początku ramki, po którym następuje do 288 bajtów danych (144 symboli danych), po których następuje symbol kontrolny końca ramki i suma kontrolna.
Należy zauważyć, że dwa lub więcej z 288 bajtów jest używanych przez wyższe warstwy protokołu UniPro. Maksymalny rozmiar ramki wynoszący 288 bajtów ładunku na ramkę został wybrany, aby cały stos protokołów mógł z łatwością przesyłać 256 bajtów danych aplikacji w jednym kawałku. Ładunki składające się z nieparzystej liczby bajtów są obsługiwane przez wypełnienie ramki do parzystej liczby bajtów i wstawienie odpowiedniej flagi w zwiastunie.
ctl | b15 | b14 | b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
1 | Symbol kontrolny początku ramki danych (nagłówek) | |||||||||||||||
0 | Ładunek ramki | |||||||||||||||
0 | : | |||||||||||||||
0 | : | |||||||||||||||
0 | Ładunek ramki | |||||||||||||||
1 | Symbol kontrolny końca ramki danych (zwiastun) | |||||||||||||||
0 | 16-bitowa suma kontrolna |
Ramki kontrolne L2
Oprócz ramek danych, które zawierają dane użytkownika, L2 przesyła i odbiera również ramki kontrolne. Ramki sterujące można odróżnić od ramek danych trzema bitami w pierwszym symbolu. Istnieją dwa rodzaje ramek sterujących:
- Jeden typ („AFC- Acknowledgement and L2 Flow Control”, 3 symbole) służy do potwierdzania pomyślnie odebranych ramek danych.
- Drugi typ („NAC”, 2 symbole) powiadamia odpowiedni nadajnik o odebraniu nieprawidłowej ramki.
Należy zauważyć, że te typy ramek kontrolnych L2 są wysyłane autonomicznie przez L2.
ctl | b15 | b14 | b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
1 | Symbol kontrolny Start-of-Control-Frame (nagłówek) | |||||||||||||||
0 | Ładunek ramki sterującej (tylko AFC) | |||||||||||||||
0 | 16-bitowa suma kontrolna |
Retransmisja L2
Szybka komunikacja przy niskim poziomie mocy może prowadzić do sporadycznych błędów w odbieranych danych. Warstwa łącza danych zawiera protokół do automatycznego potwierdzania poprawnie odebranych ramek danych (za pomocą ramek kontrolnych AFC) oraz do aktywnego sygnalizowania błędów, które mogą zostać wykryte w L2 (za pomocą ramek kontrolnych NAC). Najbardziej prawdopodobną przyczyną błędu w L2 jest to, że ramka danych została uszkodzona na poziomie elektrycznym (szum, EMI). Skutkuje to błędną sumą kontrolną danych lub ramki sterującej po stronie odbiornika i doprowadzi do jej automatycznej retransmisji. Należy zauważyć, że ramki danych są potwierdzone (AFC) lub potwierdzone negatywnie (NAC). Uszkodzone ramki kontrolne są wykrywane przez liczniki czasu, które monitorują oczekiwane lub wymagane odpowiedzi.
Przepustowość 1 Gbit/s i współczynnik błędów bitowych 10-12 przy prędkości 1 gigabit/s oznaczałyby błąd co 1000 sekund lub raz na 1000 przesłanego Gbita. Warstwa 2 automatycznie koryguje te błędy kosztem marginalnej utraty przepustowości i kosztem przestrzeni buforowej potrzebnej w warstwie L2 do przechowywania kopii przesyłanych ramek danych w celu ewentualnej retransmisji lub „odtworzenia”.
Kontrola przepływu L2
Inną cechą L2 jest zdolność nadajnika L2 do sprawdzenia, czy po stronie odbiorczej jest miejsce w buforze dla ramki danych. To ponownie opiera się na ramkach kontrolnych L2 (AFC), które umożliwiają odbiornikowi poinformowanie nadajnika uczestnika równorzędnego, ile miejsca w buforze jest dostępne. Pozwala to odbiornikowi wstrzymać nadajnik w razie potrzeby, unikając w ten sposób przepełnienia bufora odbioru. Sterowanie przepływem L2 nie ma wpływu na ramki kontrolne: mogą być wysyłane w dowolnym momencie, a odbiornik L2 powinien je przetwarzać z szybkością, z jaką nadchodzą.
Klasy ruchu L2 i arbitraż
UniPro obsługuje obecnie dwa poziomy priorytetu dla ramek danych, zwane klasą ruchu 0 (TC0) i klasą ruchu 1 (TC1). TC1 ma wyższy priorytet niż TC0. Oznacza to, że jeśli nadajnik L2 ma do wysłania kombinację ramek danych TC0 i TC1, ramki danych TC1 zostaną wysłane jako pierwsze. Zakładając, że większość ruchu danych wykorzystuje TC0 i że sieć jest przeciążona, pomaga to zapewnić, że ramki danych TC1 docierają do miejsca docelowego szybciej niż ramki danych TC0 (analogicznie do pojazdów uprzywilejowanych i normalnego ruchu drogowego). Ponadto L2 może nawet przerwać lub „wyprzedzić” wychodzącą ramkę danych TC0 w celu przesłania ramki danych TC1. Dodatkowe zasady arbitrażu mają zastosowanie do ramek kontrolnych: w istocie otrzymują one wyższy priorytet niż ramki danych, ponieważ są małe i niezbędne do utrzymania płynności ruchu.
W sieci z wieloma przeskokami arbitraż odbywa się w każdym nadajniku L2 przy każdym przeskoku. Klasa ruchu przypisana do danych zwykle nie zmienia się, gdy dane przepływają przez sieć. To aplikacje decydują o sposobie korzystania z systemu priorytetów.
Opcja pojedynczej klasy ruchu L2
W UniPro w wersji 1.1 wprowadzono opcję umożliwiającą prostym urządzeniom końcowym implementację tylko jednej z dwóch klas ruchu, jeśli zechcą. Może to być przydatne, gdy projektanci urządzeń są bardziej zainteresowani kosztami implementacji niż kontrolą nad arbitrażem ramek. Podłączone urządzenie równorzędne L2 wykrywa takie urządzenia podczas fazy inicjalizacji łącza i może uniknąć użycia brakującej klasy ruchu.
Gwarancje L2
Różne mechanizmy L2 zapewniają szereg gwarancji dla protokołów wyższych warstw:
- odebrana ramka danych będzie zawierała poprawny ładunek (sprawdzany za pomocą sumy kontrolnej)
- transmitowana ramka danych dotrze do odbiornika peera (po ewentualnych retransmisjach)
- będzie miejsce na przyjęcie odebranych ramek danych (sterowanie przepływem L2)
- zawartość ramki danych zostanie przekazana tylko raz do wyższej warstwy protokołu (duplikaty ramek danych są odrzucane)
- ramki danych w tej samej klasie ruchu będą odbierane i przekazywane do wyższych warstw protokołu w kolejności
W ten sposób poszczególne łącza autonomicznie zapewniają niezawodny transfer danych. Różni się to na przykład od szeroko stosowanego protokołu TCP , który wykrywa błędy w punktach końcowych i polega na retransmisji typu end-to-end w przypadku uszkodzonych lub brakujących danych.
Warstwa sieciowa (L3)
Warstwa sieciowa ma na celu kierowanie pakietów przez sieć do miejsca przeznaczenia. Przełączniki w sieci z wieloma przeskokami używają tego adresu do decydowania, w którym kierunku kierować poszczególne pakiety. Aby to umożliwić, nagłówek zawierający 7-bitowy adres docelowy jest dodawany przez L3 do wszystkich ramek danych L2. W przykładzie pokazanym na rysunku umożliwia to urządzeniu nr 3 komunikację nie tylko z urządzeniami nr 1, nr 2 i nr 5, ale także z urządzeniami nr 4 i nr 6.
Wersja 1.4 specyfikacji UniPro nie określa szczegółów przełącznika, ale określa wystarczająco dużo, aby urządzenie mogło pracować w przyszłym środowisku sieciowym.
Adresowanie L3
Chociaż rola adresu L3 jest taka sama jak adresu IP w pakietach w Internecie, adres UniPro DeviceID ma tylko 7 bitów. Sieć może więc mieć do 128 różnych urządzeń UniPro. Należy zauważyć, że jeśli chodzi o UniPro, wszystkie urządzenia UniPro są sobie równe: w przeciwieństwie do PCI Express lub USB, każde urządzenie może podjąć inicjatywę komunikacji z dowolnym innym urządzeniem. To sprawia, że UniPro jest prawdziwą siecią, a nie magistralą z jednym masterem.
Pakiety L3
Diagram pokazuje przykład pakietu L3, który rozpoczyna się na pierwszym bajcie danych L2 ramki L2 i kończy na ostatnim bajcie danych L2 ramki L2. Dla uproszczenia i wydajności, tylko pojedynczy pakiet L3 może być przenoszony przez jedną ramkę L2. Oznacza to, że w UniPro koncepcje ramki L2, pakietu L3 i segmentu L4 (patrz poniżej) są tak ściśle ze sobą powiązane, że są niemal synonimami. Rozróżnienie (i „koloryzowanie”) jest jednak nadal dokonywane, aby zapewnić, że specyfikacja może być opisana w ściśle warstwowy sposób.
Struktura pakietu z krótkim nagłówkiem L3
Pakiety z krótkim nagłówkiem UniPro wykorzystują pojedynczy bajt nagłówka dla informacji L3. Zawiera 7-bitowy adres docelowy L3. Pozostały bit wskazuje format pakietu z krótkim nagłówkiem. W przypadku pakietów z krótkim nagłówkiem adres źródła L3 nie jest zawarty w nagłówku, ponieważ zakłada się, że dwa komunikujące się urządzenia wcześniej wymieniły takie informacje ( komunikacja zorientowana na połączenie ).
ctl | b15 | b14 | b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
1 | Symbol kontrolny początku ramki danych (nagłówek) | |||||||||||||||
0 | L3 krótki nagłówek | Ładowność pakietu | ||||||||||||||
0 | Ładunek pakietu | |||||||||||||||
0 | : | |||||||||||||||
0 | Ładunek pakietu | |||||||||||||||
1 | Symbol kontrolny końca ramki danych (zwiastun) | |||||||||||||||
0 | 16-bitowa suma kontrolna |
Pakiety z długim nagłówkiem L3
Pakiety z długim nagłówkiem mają zostać wprowadzone w przyszłej wersji specyfikacji UniPro, więc ich format jest niezdefiniowany (z wyjątkiem jednego bitu) w obecnej specyfikacji UniPro v1.4. Jednak UniPro v1.4 definiuje hak, który umożliwia odbieranie lub przesyłanie pakietów z długimi nagłówkami przez urządzenie zgodne z UniPro v1.4, zakładając, że to ostatnie można zaktualizować za pomocą oprogramowania. Mechanizm „pułapki z długim nagłówkiem” UniPro v1.4 po prostu przekazuje ładunek odebranej ramki danych L2 (będący pakietem L3 z nagłówkiem i ładunkiem) do rozszerzenia L3 (np. oprogramowania) w celu przetworzenia. Mechanizm może również przyjmować dane użyteczne ramki L2 z rozszerzenia L3 do transmisji. Mechanizm ten ma na celu umożliwienie aktualizacji urządzeń UniPro v1.4 w celu obsługi protokołów wymagających jeszcze niezdefiniowanych pakietów z długimi nagłówkami.
Gwarancje L3
Chociaż szczegóły przełączników są nadal poza zakresem specyfikacji UniPro v1.4, L3 pozwala urządzeniom UniPro v1.0/v1.1/v1.4 służyć jako punkty końcowe w sieci. W związku z tym gwarantuje szereg właściwości protokołom wyższych warstw:
- że pakiety zostaną dostarczone do adresowanego urządzenia docelowego (a pakiety adresowane do nieistniejących urządzeń są odrzucane)
- ten ładunek wysłany przez źródło L3 do pojedynczego miejsca docelowego L3 jako seria jednego lub więcej pakietów z krótkim nagłówkiem w ramach jednej klasy ruchu dotrze w kolejności iz właściwym ładunkiem (niezawodność)
Warstwa transportowa (L4)
Funkcje warstwy transportowej UniPro nie są specjalnie złożone, ponieważ podstawowe usługi komunikacyjne zostały już zrealizowane przez niższe warstwy protokołów. L4 zasadniczo polega na umożliwieniu wielu urządzeniom w sieci lub nawet wielu klientom w ramach tych urządzeń współdzielenia sieci w kontrolowany sposób. Funkcje L4 są z grubsza porównywalne z funkcjami spotykanymi w sieciach komputerowych (np. TCP i UDP ), ale są one rzadziej spotykane w magistralach lokalnych, takich jak PCI Express, USB lub magistralach wbudowanych.
L4 UniPro ma również szczególne znaczenie, ponieważ jest to najwyższa warstwa protokołu w specyfikacji UniPro. Aplikacje muszą używać górnego interfejsu L4 do interakcji z UniPro i nie oczekuje się, że ominą L4, aby uzyskać bezpośredni dostęp do niższych warstw. Należy zauważyć, że interfejs na górze warstwy L4 przeznaczony do przesyłania lub odbierania danych jest zdefiniowany na poziomie behawioralnym lub funkcjonalnym. Ten wysoki poziom abstrakcji pozwala uniknąć ograniczania opcji implementacji. Tak więc, chociaż specyfikacja zawiera załącznik z interfejsem poziomu sygnału jako nienormatywnym przykładem, implementacja UniPro nie musi mieć żadnego określonego zestawu sygnałów sprzętowych ani wywołań funkcji programowych na swoim najwyższym interfejsie.
cechy L4
Warstwa transportowa UniPro może być postrzegana jako zapewniająca dodatkowy poziom adresowania w urządzeniu UniPro. Ten
- umożliwia urządzeniu UniPro komunikowanie się z innym urządzeniem UniPro przy użyciu wielu logicznych strumieni danych (przykład: oddzielne wysyłanie audio i wideo oraz informacji sterujących).
- umożliwia urządzeniu UniPro jednoczesne łączenie się z wieloma innymi urządzeniami (wymaga to przełączników obsługiwanych w przyszłej wersji UniPro ) przy użyciu wielu logicznych strumieni danych.
- zapewnia mechanizmy zmniejszające ryzyko przeciążenia sieci.
- zapewnia mechanizm strukturyzacji strumienia bajtów jako strumienia komunikatów.
Punkty te wyjaśniono bardziej szczegółowo poniżej.
Segmenty L4
Segment L4 to zasadniczo ładunek pakietu L3. Nagłówek L4, w swojej krótkiej formie, składa się tylko z jednego bajtu. Głównym polem w krótkim nagłówku L4 jest 5-bitowy identyfikator „CPort”, który może być postrzegany jako adres podrzędny w urządzeniu UniPro i jest nieco analogiczny do numerów portów używanych w protokole TCP lub UDP . W ten sposób każdy segment (z krótkim nagłówkiem) jest adresowany do określonego CPort określonego urządzenia UniPro.
ctl | b15 | b14 | b13 | b12 | b11 | b10 | b09 | b08 | b07 | b06 | b05 | b04 | b03 | b02 | b01 | b00 |
1 | Symbol kontrolny początku ramki danych (nagłówek) | |||||||||||||||
0 | Krótki nagłówek L3 | Krótki nagłówek L4 | ||||||||||||||
0 | Ładunek segmentu | |||||||||||||||
0 | : | |||||||||||||||
0 | Ładunek segmentu | |||||||||||||||
1 | Symbol kontrolny końca ramki danych (zwiastun) | |||||||||||||||
0 | 16-bitowa suma kontrolna |
Pojedynczy bit w nagłówku segmentu umożliwia również definiowanie segmentów z długimi nagłówkami segmentów. UniPro v1.4 nie definiuje struktury takich formatów segmentów (z wyjątkiem tego pojedynczego bitu). Długie segmenty nagłówka mogą być generowane przez pułapkę długiego nagłówka opisaną w sekcji L3.
Połączenia L4
UniPro nazywa parę portów CPort, które komunikują się ze sobą, połączeniem (stąd C w CPort). Konfigurowanie połączenia oznacza, że jeden CPort został zainicjowany w celu utworzenia segmentów, które są adresowane do określonego CPort L4 określonego identyfikatora urządzenia L3 przy użyciu określonej klasy ruchu L2. Ponieważ połączenia UniPro są dwukierunkowe, docelowy CPort jest również skonfigurowany tak, aby umożliwić przesyłanie danych z powrotem do źródłowego CPort.
W UniPro 1.0/1.1 konfiguracja połączenia zależy od implementacji.
W UniPro v1.4 zakłada się, że konfiguracja połączenia jest stosunkowo statyczna: parametry sparowanych portów CPort są konfigurowane poprzez ustawienie odpowiednich atrybutów połączenia w urządzeniach lokalnych i równorzędnych za pomocą DME. Zostanie to uzupełnione protokołem dynamicznego zarządzania połączeniami w przyszłej wersji UniPro.
Kontrola przepływu L4
Porty CPort zawierają również zmienne stanu, których można użyć do śledzenia, ile miejsca w buforze ma peer lub podłączony port CPort. Jest to wykorzystywane, aby zapobiec sytuacji, w której port CPort wysyła segmenty do portu CPort, który ma niewystarczającą przestrzeń buforową do przechowywania danych, co prowadzi do zablokowania ruchu danych. Jeśli nie zostanie szybko rozwiązany, ten korek w miejscu docelowym szybko przekształci się w zator w całej sieci. Jest to wysoce niepożądane, ponieważ może znacząco wpłynąć na wydajność sieci dla wszystkich użytkowników lub, co gorsza, może prowadzić do zakleszczenia. Opisany mechanizm L4 jest znany jako kompleksowe sterowanie przepływem (E2E FC), ponieważ obejmuje punkty końcowe połączenia.
Sterowanie przepływem L4 a sterowanie przepływem L2
Sterowanie przepływem L4 jest uzupełnieniem sterowania przepływem L2. Oba działają poprzez zatrzymanie nadajnika, dopóki nie będzie wiedział, że w odbiorniku jest wystarczająca ilość miejsca na bufor. Ale kontrola przepływu L4 działa między parą portów CPort (potencjalnie oddalonych od siebie o wiele przeskoków) i ma na celu odizolowanie połączeń od siebie (analogia „wirtualnego przewodu”). W przeciwieństwie do tego, sterowanie przepływem L2 odbywa się na skok i pozwala uniknąć podstawowej utraty danych z powodu braku miejsca w buforze odbiornika.
Możliwość zastosowania sterowania przepływem L4
E2E FC jest możliwe tylko dla komunikacji zorientowanej na połączenie, ale obecnie L4 UniPro nie obsługuje alternatywnych opcji. E2E FC jest domyślnie włączone, ale można je jednak wyłączyć. Nie jest to ogólnie zalecane.
Siatka zabezpieczająca L4
UniPro zapewnia mechanizmy „sieci bezpieczeństwa”, które nakazują, aby CPort absorbował wszystkie przesyłane do niego dane bez przestojów. Jeśli mimo wszystko zostanie wykryte przeciągnięcie, punkt końcowy odrzuca dane przychodzące do tego portu CPort, aby utrzymać przepływ danych w sieci. Można to postrzegać jako formę płynnej degradacji na poziomie systemu: jeśli jedno połączenie w sieci nie nadąża za szybkością odbieranych danych, nie ma to wpływu na inne urządzenia i inne połączenia.
L4 i wiadomości
UniPro L4 umożliwia połączenie między parą portów CPort w celu przesyłania strumienia tak zwanych komunikatów (każdy składający się z serii bajtów), a nie pojedynczego strumienia bajtów. Granice wiadomości są wyzwalane przez protokół na poziomie aplikacji przy użyciu UniPro i są sygnalizowane przez bit w nagłówku segmentu. Ten bit końca komunikatu wskazuje, że ostatni bajt w segmencie L4 jest ostatnim bajtem komunikatu na poziomie aplikacji.
UniPro musi zostać poinformowany przez aplikację, gdzie i kiedy wstawić granice komunikatów do strumienia bajtów: granice nie mają specjalnego znaczenia dla samego UniPro i są dostarczane jako usługa do budowania protokołów wyższej warstwy na UniPro. Komunikaty mogą być użyte do wskazania (np. poprzez przerwanie) aplikacji, że jednostka danych jest kompletna i może być przetwarzana. Komunikaty mogą być również przydatne jako solidny i wydajny mechanizm implementacji punktów ponownej synchronizacji w niektórych aplikacjach.
UniPro v1.4 wprowadza pojęcie fragmentu wiadomości, fragment będący częścią wiadomości przekazywanej pomiędzy aplikacją a CPort. Ta opcja może być użyteczna przy określaniu aplikacji na UniPro, które muszą przerwać tworzenie wiadomości na podstawie informacji ze stosu UniPro, np. wiadomości przychodzące lub ciśnienie wsteczne.
Gwarancje L4
Mechanizmy w L4 zapewniają szereg gwarancji dla protokołów wyższych warstw:
- Port CPort nie może się zawiesić w tym sensie, że zawsze będzie nadal akceptował dane tak szybko, jak łącze lub sieć może je dostarczać.
- Jeśli aplikacja powiązana z portem CPort połączenia zatrzymuje się, a tym samym nie może (przez krótki lub dłuższy okres czasu) pobierać danych, inne połączenia z tym samym lub różnymi urządzeniami pozostają nienaruszone.
- Strumień danych wysłany z jednego CPort do drugiego zawsze dotrze w stanie nienaruszonym, po kolei iz poprawnymi informacjami o granicy komunikatu, jeśli CPort jest w stanie nadążyć za przychodzącym strumieniem danych.
- W przypadku, gdy CPort nie może nadążyć za przychodzącym strumieniem danych, jeden lub więcej komunikatów może być uszkodzonych (z powodu brakujących danych), a odbiorca jest powiadamiany o tym stanie błędu.
- Protokół poziomu aplikacji może bezpiecznie czekać na odpowiedź peera (np. odpowiedź lub potwierdzenie) na wysłaną wiadomość L4 (np. pytanie lub polecenie). Oczekiwanie na odpowiedź równorzędnego elementu na wysłaną częściową wiadomość jest jednak niebezpieczne dla protokołu na poziomie aplikacji.
- Zawartość odebranych krótkich pakietów/segmentów nagłówkowych będzie zawsze poprawna. Chociaż dostarczanie przez interfejs pułapki z długim nagłówkiem nie jest gwarantowane, przyszłe rozszerzenie protokołu planuje zapewnić niezawodne dostarczanie takich pakietów. To rozszerzenie protokołu można zaimplementować w oprogramowaniu na szczycie pułapki z długim nagłówkiem.
Jednostka zarządzania urządzeniami (DME)
DME (Device Management Entity) kontroluje warstwy w stosie UniPro. Zapewnia dostęp do parametrów kontrolnych i statusowych we wszystkich warstwach, zarządza przejściami między trybami zasilania łącza oraz obsługuje uruchamianie, hibernację i resetowanie stosu. Ponadto zapewnia środki do kontrolowania równorzędnego stosu UniPro w łączu.