Opóźnienie sieci: 100 Mbit vs. 1 Gbit


11

Mam serwer sieciowy z bieżącym połączeniem 100 Mb, a mój dostawca oferuje aktualizację do 1 GB. Rozumiem, że odnosi się to do przepustowości, ale im większe są pakiety, tym szybciej można je przesyłać, więc oczekiwałbym niewielkiego skrócenia czasu odpowiedzi (np. Ping). Czy ktoś kiedykolwiek to porównał?

Przykład (serwer 100mbit do 100mbit) z obciążeniem 30 bajtów:

> ping server -i0.05 -c200 -s30
[...]
200 packets transmitted, 200 received, 0% packet loss, time 9948ms
rtt min/avg/max/mdev = 0.093/0.164/0.960/0.093 ms

Przykład (serwer 100 do 100 Mb) z obciążeniem 300 bajtów (poniżej MTU):

> ping server -i0.05 -c200 -s300
[...]
200 packets transmitted, 200 received, 0% packet loss, time 10037ms
rtt min/avg/max/mdev = 0.235/0.395/0.841/0.078 ms

Średnio od 30 do 300. opóźnienia zwiększają się z 0,164 do 0,395 - Spodziewam się, że będzie to wolniejszy wzrost dla połączenia 1 gibt do 1 gb. Spodziewałbym się nawet, że 100mbit do 1gbit będzie szybszy, jeśli połączenie jest realizowane przez przełącznik, który najpierw czeka, aż odbierze cały pakiet.

Aktualizacja: Przeczytaj uważnie komentarze do odpowiedzi! Połączenie nie jest nasycone i nie sądzę, że ten wzrost prędkości będzie miał znaczenie dla ludzi dla jednego żądania, ale dotyczy wielu żądań, które się sumują (Redis, baza danych itp.).

Odnośnie odpowiedzi od @LatinSuD :

> ping server -i0.05 -c200 -s1400
200 packets transmitted, 200 received, 0% packet loss, time 9958ms
rtt min/avg/max/mdev = 0.662/0.866/1.557/0.110 ms

Czy istnieje też inne kodowanie (10b / 12b?) Z nowymi kartami i kablami ethernetowymi Gbit, więc może mieć o 25% większą wydajność ponad 10x (gdy nasycony) w porównaniu do 100Mbit?
huseyin tugrul buyukisik

Odpowiedzi:


15

Jedynym sposobem, aby opóźnienie znacznie spadło, jest nasycenie obecnego łącza 100 Mb. Jeśli nie jest nasycony, prawdopodobnie nie zauważysz żadnych zmian.

Ponadto Twoje założenie, że łącze 1 Gbit będzie w stanie obsługiwać większe pakiety, jest błędne. Maksymalny rozmiar pakietu zależy od MTU różnych urządzeń wzdłuż ścieżki, którą obiera pakiet - od karty sieciowej na serwerze, aż do MTU komputera klienta. W wewnętrznych aplikacjach LAN (gdy kontrolujesz wszystkie urządzenia na ścieżce), czasami jest możliwe zwiększenie MTU, ale w tej sytuacji utkniesz z domyślną MTU równą 1500. Jeśli wysyłasz pakiety większe niż że ostatecznie zostaną rozdrobnione, co w rzeczywistości obniży wydajność.


2
„Widocznie” jest tutaj kluczowym słowem. Właśnie sprawdziłem dwa serwery z identycznym sprzętem i niskim obciążeniem sieci, ale z różnymi prędkościami Ethernet. Średni czas pingowania (lokalny, przy źródle ping w tej samej podsieci) spadł z 0,21 milisekund do 0,17 milisekund. Pingowanie tych samych serwerów z domu trwało 53 milisekundy. Jest o wiele za dużo czynników niezależnych od dostawcy, aby uczynić to wartościowym ulepszeniem.
Mike Renfro

1
+1 Technicznie jest różnica, jednak jest ona całkowicie nieistotna, chyba że konkretna aplikacja jest niewiarygodnie wrażliwa na opóźnienia.
Chris S

Dziękuję za test! Od 0,21 do 0,17 to poprawa o 20%, co jest świetne. Nie obchodzi mnie ping z domu (50 ms), ale czas, w którym żądanie pozostaje u dostawcy. Zmodyfikowaliśmy wszystkie procesory (procesor) i nie-drive-IO (RAM / Cache / itp.) Do maksimum, więc teraz zastanawiam się, ile prędkość sieci między serwerami dodaje do całkowitego opóźnienia. Np. Wykonujemy ~ 20 żądań Redis dla jednego żądania serwera WWW. @MikeRenfro: czy możesz wykonać ten sam test przy większym obciążeniu? Normalny ping to 30 bajtów, śr. Redis około 250. Spodziewam się, że różnica wzrośnie.
Andreas Richter

2
@Andreas; Myślę, że całkowicie przegapiłeś sens tych komentarzy. To poprawa o 40 nanosekund. Kwota całkowicie niepojęta dla ludzi . I to nie jest łączna liczba, nie jest tak, że każde żądanie trwa 40 nanosekund dłużej; to tylko pierwszy będzie o wiele szybszy, więc drugi będzie ustawiać się tuż za nim.
Chris S

1
@ChrisS: pytanie nie dotyczyło postrzegalności - było pytanie, czy ktoś kiedykolwiek to przetestował, a Mike to zrobił. To także nie 40 nanosekund, to mikro sekund , więc pomijasz punkt 1000 razy. Uwierz mi, że wiem, co robię ... 20% wystarczyłoby na uzasadnienie dodatkowych kosztów.
Andreas Richter

12

TAK gbit ma mniejsze opóźnienie, ponieważ:

  • ta sama liczba bajtów może zostać przesłana w szybszym czasie

ALE poprawa jest zauważalna tylko wtedy, gdy pakiety mają określony rozmiar:

  • Pakiet 56 bajtów => praktycznie brak szybszego transferu
  • Pakiet 1000 bajtów => 20% szybszy transfer
  • Pakiety 20000 bajtów => 80% szybszy transfer

Jeśli więc masz aplikację, która jest bardzo wrażliwa na opóźnienia (4 ms w porównaniu z 0,8 ms, transfer w obie strony dla 20 kb) i wymaga przesłania większych pakietów, to zmiana z 100 Mb na gbit może zapewnić zmniejszenie opóźnień, nawet jeśli używasz znacznie mniej niż średnio 100 Mb / s (= łącze nie jest nasycone na stałe).

Serwer (100mbit) -> Przełącznik (gbit) -> Serwer (100mbit):

size: 56 :: rtt min/avg/max/mdev = 0.124/0.176/0.627/0.052 ms
size: 100 :: rtt min/avg/max/mdev = 0.131/0.380/1.165/0.073 ms
size: 300 :: rtt min/avg/max/mdev = 0.311/0.463/2.387/0.115 ms
size: 800 :: rtt min/avg/max/mdev = 0.511/0.665/1.012/0.055 ms
size: 1000 :: rtt min/avg/max/mdev = 0.560/0.747/1.393/0.058 ms
size: 1200 :: rtt min/avg/max/mdev = 0.640/0.830/2.478/0.104 ms
size: 1492 :: rtt min/avg/max/mdev = 0.717/0.782/1.514/0.055 ms
size: 1800 :: rtt min/avg/max/mdev = 0.831/0.953/1.363/0.055 ms
size: 5000 :: rtt min/avg/max/mdev = 1.352/1.458/2.269/0.073 ms
size: 20000 :: rtt min/avg/max/mdev = 3.856/3.974/5.058/0.123 ms

Serwer (gbit) -> Przełącznik (gbit) -> Serwer (gbit):

size: 56 :: rtt min/avg/max/mdev = 0.073/0.144/0.267/0.038 ms
size: 100 :: rtt min/avg/max/mdev = 0.129/0.501/0.630/0.074 ms
size: 300 :: rtt min/avg/max/mdev = 0.185/0.514/0.650/0.072 ms
size: 800 :: rtt min/avg/max/mdev = 0.201/0.583/0.792/0.079 ms
size: 1000 :: rtt min/avg/max/mdev = 0.204/0.609/0.748/0.078 ms
size: 1200 :: rtt min/avg/max/mdev = 0.220/0.621/0.746/0.080 ms
size: 1492 :: rtt min/avg/max/mdev = 0.256/0.343/0.487/0.043 ms
size: 1800 :: rtt min/avg/max/mdev = 0.311/0.672/0.815/0.079 ms
size: 5000 :: rtt min/avg/max/mdev = 0.347/0.556/0.803/0.048 ms
size: 20000 :: rtt min/avg/max/mdev = 0.620/0.813/1.222/0.122 ms

= średnio na wielu serwerach 80% redukcja opóźnień dla ping 20kb

(Jeśli tylko jedno z linków to gbit, nadal będziesz mieć 5% redukcję opóźnień dla ping 20kb.)


1
Ponieważ większość urządzeń sieciowych jest przechowywanych i przesyłanych dalej, pakiet musi zostać w pełni odebrany przez przełącznik / router, zanim zostanie przekazany. Szybsze połączenia skracają ten czas, co również zmniejsza opóźnienie (o ile połączenie nie uzyskuje prędkości z kilku równoległych łączy).
Brian,

1
Ze względu na wyjaśnienie ta odpowiedź jest zdecydowanie najlepsza na stronie. Inni wydają się chcieć wyjaśnić ten fakt, zakładając szczególny przypadek - wydajność sieci na dużej odległości / wiele przełączników. Trzeba to wziąć pod uwagę, szczególnie biorąc pod uwagę obawy OP (serwer WWW), ale ta odpowiedź pokazuje również, jak dużą różnicę może zmienić prędkość przełączania w jednym skoku.
Tyler

3

Myślę, że masz fundamentalne błędne przekonanie na temat opóźnienia przepustowości i „prędkości”. Szybkość jest funkcją przepustowości i opóźnienia. Rozważmy na przykład przesyłanie danych na dyskach DVD wysyłanych w całym kraju w ciągu 3 dni. Porównaj to z wysyłaniem danych przez Internet. Internet ma znacznie mniejsze opóźnienie połączenia, ale aby dopasować „szybkość” połączenia do przesyłki, trzeba by je otrzymywać z prędkością 9,6 MB na sekundę ( przykład z tego źródła ).

W twoim przypadku uaktualnienie do wyższej przepustowości pozwoli ci obsługiwać więcej jednoczesnych użytkowników, ale nie zwiększysz opóźnień u poszczególnych użytkowników.


To niepoprawne - po prostu porównaj ping z innym ładunkiem, który jest poniżej bieżącej MTU: serwer ping -i0.05 -c200 -s30 vs. serwer ping -i0.05 -c200 -s300 ... Lub mówiąc w twoim przykładzie: ciężarówka z 1 mln DVD będzie jechać wolniej, ponieważ jest cięższa niż ta z 1 DVD.
Andreas Richter

2
@andreas ping czas nie jest całą historią - więc weźmy pod uwagę argument, że pakiety niższe niż MTU docierają szybciej niż pakiety z pełnym MTU. Różnica polega na tym, że nie masz wszystkich danych, które 1 pakiet ma w pełnej mocy w tym samym czasie, jaki potrzebują 2 pakiety. Opóźnienie to czas potrzebny na dotarcie wszystkich danych. aby wrócić do analogii ciężarówki, nawet jeśli zabiera ona ciężarówkę z 1 Cd, aby dotrzeć w połowie czasu, ponieważ ciężarówka przewożąca 500 cd wciąż potrzebuje 500 ciężarówek, aby dostarczyć dane (750 dni w porównaniu z 3).
Jim B

@JimB: tak, jak wspomniano, moje pytanie nie dotyczyło wielkości ładunku, ale prędkości: pełna ciężarówka potrzebuje 10 godzin na przesłuchanie przez urząd celny, mała tylko 1 godzinę. 100 Mb / s oznacza również, że pakiet 100 bitów wymaga teoretycznego minimum 0,000954 ms, a pakiet 1000 bitów teoretycznego minimum 0,00954 ms. Oczywiście czas przetwarzania / itp. na karcie sieciowej / przełączniku / itp. zrób większe opóźnienie, ale oczekiwałbym również, że będą one szybsze w przełączniku 1 Gb, itd. Zobacz komentarz @MikeRenfro, faktycznie przetestował go i osiągnął 20% wzrost.
Andreas Richter

@andreas - 20% w tej samej podsieci, która nie ma znaczenia dla twojego pytania
Jim B

1
@andreas 20% pingów poniżej milisekundy jest nadal pingami poniżej milisekund. Nawet 150% pingów poniżej milisekundy, tak jak w testach, nie będzie miało znaczenia w prawdziwym świecie. Czy naprawdę masz aplikację, w której ma znaczenie to, czy Twoje dane dotarły tam w 0,0003 sekundy zamiast 0,0002 sekundy ?
Shane Madden

2

Patrzysz na świat przez otwór. Prawidłowy test różnic opóźnienia przy różnych prędkościach odbywałby się między dwoma identycznymi kartami sieciowymi połączonymi kablem skrosowanym. Ustaw prędkości matematyczne kart sieciowych na 10 Mb, 100 Mb i 1000 Mb. To pokaże, że praktycznie nie ma różnicy w opóźnieniu przy różnych prędkościach. Wszystkie pakiety podróżują z tą samą prędkością drutu, niezależnie od użytej maksymalnej przepustowości. Po dodaniu przełączników do pamięci podręcznej przechowywania i przesyłania dalej wszystko się zmienia. Testowanie opóźnienia przez przełącznik musi być wykonane tylko z dwoma połączeniami z przełącznikiem. Każdy inny ruch może mieć wpływ na opóźnienie testu. Nawet wtedy przełącznik może przechodzić dzienniki, dostosowywać liczniki typów pakietów, aktualizować zegar wewnętrzny itp. Wszystko może wpływać na opóźnienia.

Tak, zmiana ze 100mb na 1gb może być szybsza (mniejsze opóźnienie) ze względu na zmiany sprzętowe, inną kartę sieciową, inny przełącznik, inny sterownik. Widziałem większe zmiany w opóźnieniu ping z różnic między sterownikami niż jakiekolwiek inne zmiany; przepustowość, przełączniki, rozładowywanie kart sieciowych itp.

Przełącznik byłby kolejną największą zmianą z odcięciem znacznie szybszym niż przechowywanie i przesyłanie do testów pojedynczej transmisji. Jednak dobrze zaprojektowany przełącznik przechylania i przewijania może wyprzedzić wyłącznik przeciążeniowy pod względem ogólnego działania pod dużym obciążeniem. Na początku gigabitów widziałem 10-megabitowe przełączniki płytowe o mniejszych opóźnieniach niż tanie przełączniki gigabitowe.

Testy ping są praktycznie nieistotne dla analizy wydajności podczas korzystania z Internetu. Są to szybkie testy, aby dowiedzieć się, co dzieje się w transporcie w momencie testu. Testowanie wydajności produkcji jest znacznie bardziej skomplikowane niż tylko ping. Przełączniki o wysokiej wydajności to komputery i przy dużym obciążeniu zachowują się inaczej - zmiana opóźnienia.

Posiadanie wolniejszej karty sieciowej lub karty sieciowej ustawionej na mniejszą prędkość może w rzeczywistości pomóc serwerowi z jednoczesnymi seriami poprzez dławienie danych wejściowych do serwera za pomocą pamięci podręcznej przełączników. Pojedyncza ponowna transmisja może negować jakiekolwiek zmniejszenie opóźnienia. Zwykle ważne są poziomy ruchu o średnim i dużym obciążeniu, a nie pojedyncze testy ping. np. stary wolny Sun Ultrasparc (większe opóźnienie dla pojedynczego pinga) przewyższa nowy tani gigabitowy pulpit używany jako serwer deweloperski, gdy obciążenie przepustowości wynosi 70% 100mb. Komputer stacjonarny ma szybszą kartę sieciową gb, szybsze połączenie gb-gb, szybszą pamięć, więcej pamięci, szybszy dysk i szybszy procesor, ale nie działa tak dobrze, jak dostrojony sprzęt / oprogramowanie klasy serwera. Nie oznacza to, że obecnie dostrojony serwer działający na gb-gb nie jest szybszy niż stary sprzęt, nawet w stanie obsłużyć większe obciążenia. Jest jeszcze bardziej złożona kwestia „

Dowiedz się, czy Twój dostawca używa różnych przełączników dla połączeń 100 Mb vs. 1 GB. Jeśli używają tej samej płyty przełączającej niż ja, zapłaciłbym za wzrost tylko wtedy, gdy poziomy ruchu przekroczyłyby niższą przepustowość. W przeciwnym razie może się okazać, że w krótkim czasie wielu innych użytkowników przełączy się na gigabit, a niewielu użytkowników pozostałych na starym przełączniku ma teraz wyższą wydajność - mniejsze opóźnienia, podczas dużych obciążeń na przełączniku (ogólne obciążenie przełącznika, nie tylko na serwerach) ).

Przykład jabłek i pomarańczy: lokalny dostawca usług internetowych dostarczył nowy przełącznik dla usług pakietowych, DSL i telefonu. Początkowo użytkownicy zauważyli wzrost wydajności. System został wyprzedany. Teraz użytkownicy, którzy pozostają na starym przełączniku, mają wyższą stałą wydajność. Późną nocą użytkownicy nowego systemu są szybsi. Wieczorem pod dużym obciążeniem dawni klienci przełączników wyraźnie przewyższają nowy przeciążony system.

Niższe opóźnienia nie zawsze korelują z szybszą dostawą. Wspominasz o MySQl w 20 żądaniach wyświetlenia jednej strony. Ten ruch nie powinien być na tej samej karcie sieciowej, co żądania strony. Przeniesienie całego ruchu wewnętrznego do sieci wewnętrznej zmniejszy liczbę kolizji i całkowitą liczbę pakietów na wychodzącej karcie sieciowej i zapewni większe zyski niż przyrost opóźnienia wynoszący 0,04 ms dla pojedynczego pakietu. Zmniejsz liczbę żądań na stronę, aby zmniejszyć opóźnienie ładowania strony. Kompresuj strony, html, css, javascript, obrazy, aby skrócić czas ładowania strony. Te trzy zmiany zapewnią większe ogólne zyski w toku niż płacenie za przepustowość nieużywaną do uzyskania opóźnienia w zakresie 0,04 ms. Ping musi działać 24 godziny i być uśredniony, aby zobaczyć rzeczywistą zmianę opóźnienia. Inteligentne przełączniki wykonują teraz adaptacyjne dławienie typu RTSP z niewielkim początkowym wzrostem przepustowości i dławieniem dużych transferów. W zależności od rozmiarów strony (grafika, duży HTML / CSS / JAScript) początkowe opóźnienia / przepustowość połączenia mogą być znacznie niższe / wyższe niż w przypadku przesyłania dużych lub pełnych stron. Jeśli część strony przesyła strumieniowo, możesz zobaczyć drastycznie różną wydajność między stroną a strumieniem.


Dziękujemy za wspaniałe wejście: 1.) To ten sam przełącznik, 2.) Druga karta sieciowa do wewnętrznych / zewnętrznych dźwięków rezonansowa i warta wypróbowania - nawet jeśli np. MySQL / etc. wszystkie są dwukierunkowe, więc kolizje byłyby „tylko” zredukowane do połowy, 3.) Test w świecie rzeczywistym jest lepszy niż Nic-Nic, Mike zrobił to z podsiecią i uzyskał to, czego się spodziewałeś. sprzęt: „56 bajtów = poprawa 19%, 200 bajtów = 27%, 1000 bajtów = 59%! Im większy pakiet, tym bardziej to ma znaczenie. Gigabit wzrósł tylko z 0,17 ms (56 bajtów) do 0,23 ms (1000 bajtów ) => 35%, podczas gdy 100 Mbit wzrosło z 0,21 do 0,56 => 166% ”.
Andreas Richter

1

Załóżmy 300 bajtów pakietów (jeśli -s 300go użyjesz , będzie tak naprawdę większy z powodu nagłówków).

300 bytes = 2400 bits
2400 bits / 100Mbit/sec = 0.024ms

0,024 ms to w przybliżeniu faktyczny czas wymagany do wysłania ramki (nie licząc średniego czasu dostępu ani nagłówków).

W sekwencji ping-pong zajęłoby to dwa razy więcej czasu (0,048 ms), a także czas przetworzenia zapytania przez system operacyjny.

Oznacza to dla mnie, że twoje opóźnienie jest spowodowane przez 90% kilku czynników ogólnych. Nie jestem pewien, czy zauważysz dużą różnicę w stosunku do Gb. Prawdopodobnie różnica mniejsza niż 1 ms nie będzie zauważalna dla serwera.

W każdym razie czy mógłbyś spróbować z naprawdę dużym pakietem, takim jak 1400 bajtów?


Ktoś już sprawdził liczby dla konkretnego serwera, a różnica powróciła po 40 nanosekundach. Twój szacunek jest wyłączony 25 razy za dużo.
Chris S

@LatinSuD: dziękuję za konstruktywne podejście i nie obwinianie mnie, że nie wiem, co robię. Zamieszczę wyniki w rzeczywistym pytaniu, ponieważ mogę tam sformatować. Ale btw. Spodziewałbym się również, że narzut 90% zwiększy prędkość , ponieważ procesory w kartach sieciowych itp. Są szybsze również dla GBit (mam nadzieję). @ChrisS: mikro sekund i nie rozumiem, co masz na myśli z 25.
Andreas Richter

Przepraszam za pomieszanie mikro i nano; w każdym razie jest to nie do pomyślenia. LatinSuD oszacował różnicę o 1 milisekundę, czyli 25 razy więcej niż 40 mikrosekund znalezionych przez Mike'a.
Chris S

@ChrisS: nie martw się. 0,04 ms dotyczyło 38-bajtowego polecenia ping, jeśli nasz średni pakiet serwer-serwer ma około 300 bajtów, różnica może wynosić 0,4 ms. Jeśli teraz złożymy 20 żądań na jedno żądanie serwera WWW (Redis, MySQL itp.), Doprowadziłoby to do wzrostu prędkości o 8 ms, co byłoby 10% wzrostem prędkości dla obecnych żądań internetowych i całkowicie uzasadniałoby dodatkowe koszty. Po prostu nie mam tutaj zasobów do samodzielnego przeprowadzenia testów, ale wierzcie mi, że nawet jeśli nie jest to zauważalne przez ludzi, nadal może mieć znaczenie. Jak prąd czy bóg.
Andreas Richter

1
@Andreas, bardzo wątpię, że tak się skaluje; zarówno 10-krotnie większy pakiet ma 10-krotnie mniejsze opóźnienie, jak i 20-krotnie więcej pakietów, które są 20-krotnie szybsze. Jeśli tak się stanie, oznacza to zmniejszenie obciążenia sieci o 10%, nadal musisz uwzględnić czas spędzony w aplikacji, który może być o jeden do kilku rzędów wielkości dłuższy niż składnik opóźnienia sieci. Mam nadzieję, że i tak ci się uda.
Chris S

1

Zależy to od rodzaju przełącznika, z którym się łączysz. W przypadku niektórych dostawców (takich jak Crisco ... mam na myśli Cisco) pakiety ICMP będą wracać do procesora ( gag ).

Lepszym rozwiązaniem może być przeprowadzenie testu host-host przy użyciu łącza 100 Mb / s i łącza 1 Gb / s (tj. Nie test hosta na przełącznika ani hosta na router).

Pod koniec dnia opóźnienie sprowadza się do szybkości przesyłania na przełączniku i szczegółów architektury przełącznika (gdzie układy ASIC są umieszczane na płycie, sposób blokowania między kartami linii itp.). Powodzenia w testowaniu.


Dziękuję, odnoszę się tylko do testów Host-Switch-Host i nie rozumiem wszystkich przełączników wewnętrznych. Chciałbym po prostu zobaczyć, czy ktoś kiedykolwiek porównał: Host- (100mbit) -Switch- (100mbit) -Host, Host- (100mbit) -Switch- (1gbit) -Host i Host- (1gbit) -Switch- (1gbit ) - Opóźnienie hosta dla różnych rozmiarów pakietów. Jeśli nikt tego nie zrobił, zrobię to i opublikuję odpowiedź tutaj.
Andreas Richter

1
Kiedyś odsprzedawałem sprzęt przełączający. Wystarczy powiedzieć, że twoje odkrycia sugerują mi, że jesteś podłączony do przełącznika Cisco. Istnieją inne alternatywy, które zapewniają mniejsze opóźnienia. Jak słusznie zauważyłeś, większa przepustowość nie przekłada się na niższe opóźnienia (Comcast jest głównym winowajcą powodującym, że ludzie są głupi w tym względzie). Biorąc pod uwagę, że jesteś w środowisku hostowanym, prawdopodobnie utknąłeś z jego sprzętem (a ponieważ w środowisku hostowanym dodatkowe kilka mikrosekund nie jest szczególnie ważne). Pokaż mi miliony pps w stanie ustalonym, a zainteresuję się podaniem dodatkowych szczegółów. :)
Sean
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.