Zasada od końca do końca
Część serii poświęconej |
neutralności sieci |
---|
Tematy i problemy |
Według kraju lub regionu |
Zasada end-to-end jest ramą projektową w sieciach komputerowych . W sieciach zaprojektowanych zgodnie z tą zasadą zagwarantowanie pewnych właściwości specyficznych dla aplikacji, takich jak niezawodność i bezpieczeństwo, wymaga ich rezydowania w komunikujących się węzłach końcowych sieci. Węzły pośredniczące, takie jak bramy i routery , które istnieją w celu ustanowienia sieci, mogą je implementować w celu poprawy wydajności, ale nie mogą zagwarantować całościowej poprawności.
Istota tego, co później nazwano zasadą end-to-end, została zawarta w pracach Paula Barana i Donalda Daviesa nad sieciami z komutacją pakietów w latach 60. Louis Pouzin był pionierem wykorzystania strategii end-to-end w sieci CYCLADES w latach siedemdziesiątych. Zasada ta została po raz pierwszy wyrażona wprost w 1981 roku przez Saltzera , Reeda i Clarka . Znaczenie zasady „od końca do końca” było nieustannie reinterpretowane od czasu jej pierwszego sformułowania. Ponadto godne uwagi sformułowania zasady „od końca do końca” można znaleźć przed przełomowym artykułem Saltzera, Reeda i Clarka z 1981 r.
Podstawowym założeniem tej zasady jest to, że korzyści płynące z dodania pewnych funkcji wymaganych przez aplikację końcową do podsystemu komunikacyjnego szybko maleją. Hosty końcowe muszą zaimplementować te funkcje dla poprawności. Implementacja określonej funkcji pociąga za sobą pewne kary za zasoby, niezależnie od tego, czy funkcja jest używana, czy nie, a implementacja określonej funkcji w sieci dodaje te kary do wszystkich klientów, niezależnie od tego, czy potrzebują tej funkcji, czy nie.
Pojęcie
Podstawową ideą zasady end-to-end jest to, że w przypadku dwóch procesów komunikujących się ze sobą za pośrednictwem pewnych środków komunikacji nie można oczekiwać, że niezawodność uzyskana dzięki tym środkom będzie idealnie dopasowana do wymagań niezawodności procesów. W szczególności spełnienie lub przekroczenie wymagań dotyczących bardzo wysokiej niezawodności procesów komunikowania się oddzielonych sieciami o nietrywialnym rozmiarze jest bardziej kosztowne niż uzyskanie wymaganego stopnia niezawodności przez pozytywne potwierdzenia typu koniec-koniec i retransmisje (określane jako PAR lub ARQ ) . Innymi słowy, o wiele łatwiej jest uzyskać niezawodność powyżej pewnego marginesu za pomocą mechanizmów w hostach końcowych sieci, a nie w węzłach pośredniczących , zwłaszcza gdy te ostatnie są poza kontrolą tych pierwszych i nie są przed nimi odpowiedzialne. Pozytywne potwierdzenia od końca do końca z nieskończoną liczbą ponownych prób mogą uzyskać dowolnie wysoką niezawodność z dowolnej sieci z większym niż zero prawdopodobieństwem pomyślnego przesłania danych z jednego końca na drugi.
Zasada end-to-end nie obejmuje funkcji wykraczających poza kompleksową kontrolę i korekcję błędów oraz bezpieczeństwo. Np. nie można przedstawić żadnych bezpośrednich argumentów typu end-to-end dla parametrów komunikacji, takich jak opóźnienie i przepustowość . W artykule z 2001 roku Blumenthal i Clark zauważają: „[Od] początku od początku do końca argumenty obracały się wokół wymagań, które można poprawnie zaimplementować w punktach końcowych; jeśli implementacja w sieci jest jedynym sposobem na spełnienie wymagania , to argument od końca do końca nie jest odpowiedni w pierwszej kolejności”.
Zasada „od końca do końca” jest ściśle powiązana i czasami postrzegana jako bezpośredni prekursor zasady neutralności sieci .
Historia
W latach sześćdziesiątych XX wieku Paul Baran i Donald Davies , w swoich opracowaniach dotyczących sieci przed wprowadzeniem ARPANET , poczynili krótkie komentarze na temat niezawodności, które oddają istotę późniejszej zasady „od końca do końca”. Cytując artykuł Barana z 1964 r.: „Niezawodność i surowe wskaźniki błędów są drugorzędne. Sieć i tak musi być budowana z oczekiwaniem poważnych uszkodzeń. Istnieją skuteczne metody usuwania błędów”. Podobnie Davies zauważa na temat kompleksowej kontroli błędów: „Uważa się, że wszyscy użytkownicy sieci zapewnią sobie pewien rodzaj kontroli błędów i że bez trudu można to zrobić, aby pokazać brakujący pakiet. Z tego powodu , utrata pakietów, jeśli jest wystarczająco rzadka, może być tolerowana”.
ARPANET była pierwszą wielkoskalową siecią komutacji pakietów ogólnego przeznaczenia – implementującą kilka podstawowych pojęć, o których mówili wcześniej Baran i Davies.
Davies pracował nad symulacją sieci datagramowych . Opierając się na tym pomyśle, CYCLADES Louisa Pouzina była pierwszą, w której hosty były odpowiedzialne za niezawodne dostarczanie danych, a nie za scentralizowaną usługę samej sieci. Koncepcje zaimplementowane w tej sieci miały wpływ na TCP/IP .
Aplikacje
ARPANET
ARPANET zademonstrował kilka ważnych aspektów zasady end-to-end.
- Przełączanie pakietów przesuwa niektóre funkcje logiczne w kierunku punktów końcowych komunikacji
- Jeśli podstawowym założeniem sieci rozproszonej jest przełączanie pakietów, funkcje takie jak zmiana kolejności i wykrywanie duplikatów nieuchronnie muszą zostać zaimplementowane w logicznych punktach końcowych takiej sieci. W rezultacie ARPANET oferował dwa różne poziomy funkcjonalności:
- niższy poziom zajmujący się transportem pakietów danych między sąsiednimi węzłami sieci (zwanymi procesorami komunikatów interfejsu lub IMP) oraz
- wyższy poziom dotyczący różnych kompleksowych aspektów transmisji danych.
- Dave Clark, jeden z autorów artykułu o zasadzie end-to-end, konkluduje: „Odkrycie pakietów nie jest konsekwencją argumentacji typu end-to-end. To sukces pakietów sprawia, że ważny argument końcowy”.
- Żadnego arbitralnie niezawodnego transferu danych bez mechanizmów potwierdzania i retransmisji typu end-to-end
- ARPANET został zaprojektowany w celu zapewnienia niezawodnego przesyłania danych między dowolnymi dwoma punktami końcowymi sieci – podobnie jak prosty kanał I/O między komputerem a pobliskim urządzeniem peryferyjnym. W celu zaradzenia ewentualnym awariom transmisji pakietowej, normalne komunikaty ARPANET były przekazywane z jednego węzła do drugiego z pozytywnym potwierdzeniem i schematem retransmisji; po pomyślnym przekazaniu były następnie odrzucane, nie przewidziano żadnej retransmisji ze źródła do miejsca docelowego w przypadku utraty pakietu. Jednak pomimo znacznych wysiłków, doskonała niezawodność przewidziana we wstępnej specyfikacji ARPANET okazała się niemożliwa do zapewnienia – rzeczywistość, która stała się coraz bardziej oczywista, gdy ARPANET wyrósł daleko poza swoją początkową topologię czterech węzłów. ARPANET dostarczył zatem mocnych argumentów przemawiających za nieodłącznymi ograniczeniami opartych na sieci mechanizmów niezawodności przeskok po przeskoku w dążeniu do prawdziwej niezawodności typu end-to-end.
- Kompromis między niezawodnością, opóźnieniem i przepustowością
- Dążenie do idealnej niezawodności może zaszkodzić innym istotnym parametrom transmisji danych – przede wszystkim opóźnieniu i przepustowości. Jest to szczególnie ważne w przypadku aplikacji, które przedkładają przewidywalną przepustowość i małe opóźnienia nad niezawodność — klasycznym przykładem są interaktywne aplikacje głosowe działające w czasie rzeczywistym. Ten przypadek użycia został uwzględniony w ARPANET poprzez zapewnienie usługi nieprzetworzonych wiadomości, w której zrezygnowano z różnych środków niezawodności, aby zapewnić szybszą usługę transmisji danych z mniejszymi opóźnieniami do hostów końcowych.
TCP/IP
Protokół internetowy (IP) to bezpołączeniowa usługa datagramowa bez gwarancji dostarczenia . W Internecie protokół IP jest używany do prawie całej komunikacji. Za kompleksowe potwierdzenie i retransmisję odpowiada zorientowany na połączenie protokół kontroli transmisji (TCP), który znajduje się na szczycie protokołu IP. Funkcjonalny podział między IP i TCP jest przykładem właściwego zastosowania zasady end-to-end do projektowania protokołów transportowych.
Transfer plików
Przykładem zasady end-to-end jest arbitralnie niezawodny transfer plików między dwoma punktami końcowymi w rozproszonej sieci o różnym, nietrywialnym rozmiarze: Jedynym sposobem, w jaki dwa punkty końcowe mogą uzyskać całkowicie niezawodny transfer, jest przesłanie i potwierdzenie sumy kontrolnej dla całego strumienia danych; w takim ustawieniu protokoły z mniejszą sumą kontrolną i potwierdzeniem ( ACK /NACK) są uzasadnione tylko w celu optymalizacji wydajności – są przydatne dla zdecydowanej większości klientów, ale nie wystarczają do spełnienia wymagań niezawodności tej konkretnej aplikacji. Dokładna suma kontrolna jest zatem najlepiej wykonywana w punktach końcowych, a sieć utrzymuje stosunkowo niski poziom złożoności i rozsądną wydajność dla wszystkich klientów.
Ograniczenia
Najważniejszym ograniczeniem zasady end-to-end jest to, że jej podstawowe założenie, polegające na umieszczaniu funkcji w punktach końcowych aplikacji, a nie w węzłach pośredniczących, nie jest trywialne do wdrożenia.
Przykład ograniczeń zasady end-to-end występuje w urządzeniach mobilnych, na przykład w przypadku mobilnego protokołu IPv6 . Przenoszenie złożoności specyficznej dla usługi do punktów końcowych może powodować problemy z urządzeniami mobilnymi, jeśli urządzenie ma niepewny dostęp do kanałów sieciowych.
Dalsze problemy można zaobserwować w przypadku zmniejszenia przejrzystości sieci w wyniku dodania translacji adresów sieciowych (NAT), na której opiera się protokół IPv4 w celu zwalczania wyczerpania adresów . Wraz z wprowadzeniem protokołu IPv6 użytkownicy ponownie otrzymują unikalne identyfikatory, co pozwala na prawdziwie kompleksową łączność. Unikalne identyfikatory mogą być oparte na adresie fizycznym lub mogą być generowane losowo przez hosta.