Aktualizacje systemu przez P2P

07 maja, 2008

Ostatnio w oko wpadł mi - arcyciekawy moim zdaniem - projekt, który ma na celu umożliwienie użytkownikom dystrybucji opartych o pakiety deb (na razie tylko Debian, wygląda na to, że przystosowanie do innych dystrybucji nie jest trudne) aktualizowanie systemu w nietypowy sposób, a mianowicie przez P2P. Nie chodzi o pobieranie płyt instalacyjnych, ale o zwykłą, codzienną aktualizację pakietów na komputerze.

Projekt o którym mowa to apt-p2p. Na razie jest we wczesnej fazie rozwoju, ale jeśli wszystko pójdzie dobrze (a założenia są ciekawe), to będzie z tego bardzo ciekawy programik (zachęcam autora m.in. do dodania opcji pozwalającej na określenie minimalnego rozmiaru pakietu, który chcemy obsługiwać przez P2P - jednak tablica z danymi o plikach trochę w pamięci zajmuje...). W tej chwili działa pobieranie pakietów przez P2P, jest zrobiona integracja z istniejącymi narzędziami. W razie niepowodzenia pobierania przez P2P nie ma dramatu, gdyż pakiet pobierany jest tradycyjnie - przez HTTP.

Dodatkowo, na planecie Debiana widziałem ciekawe propozycje połączenia tego z nie wymagającym konfiguracji aptem, co może pozwolić na stworzenie ciekawego systemu zarządzania pakietami, w którym konfiguracja ograniczy się do podania wersji systemu, z którego chcemy korzystać i ew. wersji pakietów (np. sekcja non-free). Bardzo ciekawa sprawa dla np. Ubuntu.

Oczywiście samo pobieranie pakietów przez P2P jest kontrowersyjne z punktu widzenia bezpieczeństwa systemu. O ile o podmianę zawartości byłbym spokojny (liczenie sum kontrolnych pobieranych fragmentów, liczenie sumy kontrolnej całego pakietu po pobraniu i ostateczne sprawdzanie podpisu GPG przy instalacji przez apt), to ewentualne błędy w samym kliencie/protokole mogą powodować wyciek danych z systemu (udostępniane są wszystkie pliki ze wskazanej lokalizacji, nie tylko pakiety deb, więc jak jakiś user udostępni /, to może się zdziwić) czy podatność na (D)DoS (możliwość zmuszenia systemu do stosunkowo dużej liczby obliczeń).

A jaki sens tego wszystkiego? Mniejsze zapotrzebowanie na łącze na mirrorach. Większa niezawodność pobierania pakietów dla użytkownika końcowego (pad lub błędy na używanym mirrorze nie stanowią problemu). Potencjalnie szybsze pobieranie pakietów (zwł. z security), chociaż tutaj dochodzi obliczanie sum kontrolnych itp., więc tak naprawdę wyjdzie w tzw. praniu. Jeśli dodatkowo uda się zrobić apt-zeroconf, to powstać może zupełnie nowe podejście do aktualizacji systemu. Plus, projekty w stylu popularity contest będą mogły być realizowane w znacznie prostszy i bardziej miarodajny sposób.

Na koniec dodam, że pakietem zachwycam się na razie czysto teoretycznie. Jest on co prawda w repozytorium Debiana w sekcji unstable, ale aby mógł go uruchomić, konieczny jest zrobienie backportu do stable, a zależności są dość skomplikowane, a czasu nie mam zbyt wiele. Niemniej praca nad tym jest w toku, jak zrobię backport, to wystawię paczki. Tymczasem zachęcam do poczytania o projekcie, a posiadaczy Debiana w wersji unstable - do testów.

1. yoshi314 napisał(a):
07 maja 2008, 08:52:23

kiedys myslalem o takim czyms dla gentoo – w koncu userzy gentoo posiadaja na swoich dyskach mnostwo pakietow ze zrodlami roznych projektow (patche osobno), wiec praktycznie kazdy (w sensie uzytkownik kazdej dystrybucji, ktory cos czasami kompiluje) moglby z nich skorzystac.

ale poki co niczego ciekawego nie wykombinowalem w tym temacie.

2. rozie napisał(a):
07 maja 2008, 09:12:08

W przypadku źródeł ewentualny zysk czasowy jest pomijalny. Deby mają też tę zaletę, że są podpisane GPG – gołe źródło nie jest. Ale ogólnie zasada jest taka sama i zapewne możesz przystosować apt-p2p. Powinno być to o tyle proste, że autor stara się maksymalnie korzystać z gotowych rozwiązań/programów. Oprzeć się na projekcie warto też z tego względu, że nie jest to pierwsze podejście jego autora do zagadnienia (wcześniej debtorrent ), więc jakieś doświadczenia w tym zakresie ma.

3. yOSHi314 napisał(a):
07 maja 2008, 09:47:58

wydaje mi sie ze lepszym rozwiazaniem bylby moze metalink, sam nie wiem

co do podpisania gpg – torrent posiada sume kontrolną i to calkiem niezla (calkiem niezle sprawdza sie jako narzedzie do sprawdzania poprawnosci danych i ewentualnego korygowania ich poprzez siec), ale stosowanie torrentow do malych pakietow (rzedu kilkanascie kb) chyba mija sie z celem. predzej jakas gnutella lub podobny system gdzie mozna szybko podmieniac pliki, albo serwowanie calych kompletow plikow.

4. BeteNoire napisał(a):
07 maja 2008, 12:23:55

A to mirrory mają aż tak ograniczone łącza, by dodatkowo zapychać je użytkownikom lokalnym, którzy i tak już mulą je mułem, torrentem, rapidszerem czy innym śmieciem?
Widzę, że debianowcom się nudzi…

„w koncu userzy gentoo posiadaja na swoich dyskach mnostwo pakietow ze zrodlami roznych projektow (patche osobno),”

Ano, ja mam. Jakieś 2 GB. A z tego co wiem całe distfiles zajmuje kilkadziesiąt GB.

Yoshi, powiedz, czy to mało: http://www.gentoo.org/main/en/mirrors2.xml
Dodaj do tego mirrory poszczególnych pakietów oraz lokalne mirrory, które robią użytkownicy dla znajomych.

Dla mnie ten pomysł to wyważanie otwartych drzwi.

5. yOSHi314 napisał(a):
07 maja 2008, 12:26:26

moze i nie malo, ale pare razy trafilo mi sie gdy pliku nie ma jeszcze na mirrorach a genciarze juz go sciagaja (*cough* yasm cough) i strona glowna projektu akurat jakos tak siadla :D

6. BeteNoire napisał(a):
07 maja 2008, 12:28:27

Mi też się to w Gentoo zdarzyło (zwłaszcza w przypadku paru… debianowych plików), ale wolę poczekać dzień niż zwiększać prawdopodobieństwo nadużyć.

7. yOSHi314 napisał(a):
07 maja 2008, 12:31:15

w sumie to i tak daje lepsze efekty niz proba aktualizacji ubuntu pierwszego dnia po wyjsciu nowej wersji :>

8. rozie napisał(a):
07 maja 2008, 19:21:59

BeteNoire: Jeśli ktoś lubi rzeźbić w poszukiwaniu lokalnych mirrorów u znajomych, lub poczekać dzień/dwa (w przypadku Gentoo to faktycznie mało w porównaniu z całą instalacją ;>) to faktycznie taki projekt nie ma sensu. Kto ma zamulone przez p2p łącze, ten ma... A ryzyko jest znikome (w tej chiwli) i praktycznie żadne (jeśli zostanie to zrobione prawidłowo)

yOSHi314: Suma kontrolna stosowana do p2p jest niewystarczająca do potwierdzenia autentyczności pakietu.