Oprogramowanie  /  Artykuł

Szalone pomysły programistów: pingFS dzieli nasze pliki na paczki i pinguje losowe serwery

Picture of the author

Zawsze interesowało mnie nietypowe użycie podstawowych standardów internetowych, do rzeczy, do których nie były przewidziane.

Dwa z przykładów to scenic routing dla pakietów, pozwalający im zażyć świeżego powietrza oraz specyfikacja RFC-1776 The Address is a Message, pozwalająca wypełnić cały pakiet jedynie adresem. Oba te standardy zostały opisane w humorystycznych dokumentach RFC, powstających tradycyjnie na Prima Aprilis.

Podobnie z przymrużeniem oka należy traktować propozycję (i implementację), systemu plików PingFS. Jest to pełnoprawna, możliwa do zrealizowana (i zrealizowana jako proof of concept) implementacja systemu plików, który ma teoretycznie nieskończoną pojemność, a przechowywanie danych wymuszane jest na innych serwerach w sieci.

Na czym to polega? Jak zapewne pamiętacie, polecenie ping wysyła pakiet danych (zazwyczaj 32 bajty) do innego hosta w sieci i czeka na przesłanie ich z powrotem. Tym sposobem potwierdza aktywność i dostępność drugiego hosta. Mimo że w wielu przypadkach administratorzy wyłączają odpowiedzi na ping ze względów bezpieczeństwa, to wciąż implementacja tej podstawowej funkcji jest standardowa.

Jak działa pingFS?

PingFS to propozycja przechowywania naszych plików w internecie. Ale nie w chmurze, czy w na serwerach HTTP lub FTP. Program dzieli nasze pliki na paczki i... pinguje losowe serwery. I robi tak ze wszystkimi plikami, powodując, że (teoretycznie), krążą one w czeluściach internetu w nieskończoność, nie zajmując miejsca na dysku.

Każdy plik, jaki zostaje umieszczony na dysku, wysłany jest w kawałkach jako polecenie ICMP echo - używane przez ping. Możliwość przesyłu danych (tzw. payload) do polecenia zostało dodane, aby udało się zidentyfikować konkretną instancję „pingnięcia” - na przykład w celu określenia dokładnego czasu potrzebnego do przesłania danych przez sieć między dwoma hostami. Co robi drugi serwer? Odpowiada takim samym ładunkiem danych - który następnie zostaje ponownie wysłany jako ping do kolejnego serwera. Tym sposobem dane utrzymywane są w obiegu przez cały czas, teoretycznie nie zajmując miejsca.

Absurd? Oczywiście!

Ale teoretycznie, na pewną skalę, taki model systemu plików jest możliwy do używania. Do tego jest to prawdziwy „dysk w chmurze” - znajduje się równocześnie wszędzie i nigdzie. Twórca tego pomysłu opisuje to jako „próbę stworzenia chmury przez odbijanie kropel deszczu do góry”.

pingFS jest również niekomercyjny i niezależny od korporacji. Po co nam AWS, Google Cloud czy Azure, skoro ich serwery odpowiadają na pingi i będą przekazywać nasze dane za darmo? Naomi Klein lubi to!

Tego typu pomysł ma również wady. Nasze dane ulegają na nim powolnej degradacji, ponieważ „pingi” są z natury rzeczy stratne i nie są dobrym sposobem na przechowywanie danych. Inną wadą jest fakt, że do tanga trzeba dwojga - gdy wyłączymy komputer, przestanie on utrzymywać pakiety w ciągłym ruchu i nasze dane również zginą. Kto by się spodziewał, prawda?