馃摤 ISN 182: Zbuduj w chmurze laboratorium dla Data Center

182 numer newslettera zag艂臋bia si臋 w przyczyny wolnego dzia艂ania Ansible, bada wydajno艣膰 TCP w sieci Starlink oraz przedstawia EVPN/VXLAN od Nokii. Dowiedz si臋, jak automatyzowa膰 bez kodu i skorzystaj z darmowego laboratorium dla swojego DC!
馃摤 ISN 182: Zbuduj w chmurze  laboratorium dla Data Center

Czemu Ansible dzia艂a wolno?

Ever Wondered Why Ansible Feels Slow?
The other day I was troubleshooting a simple Ansible connectivity issue and decided to peek under the hood. Using Border0 session recording feature i went down a bit of a rabbit hole.

Podczas pracy z narz臋dziami do automatyzacji takich jak Ansible, jednym z g艂贸wnych powod贸w frustracji mo偶e by膰 powolne wykonywanie zada艅 i polece艅, Aby lepiej zrozumie膰, co dzieje si臋 w tle, przyjrzyjmy si臋 przyk艂adowemu poleceniu ansible:

ansible all -i my-server, -m command -a "uptime"

Naiwnie mo偶na by si臋 spodziewa膰 pojedynczego po艂膮czenia SSH, wykonania polecenia uptime i zako艅czenia operacji. Jednak w rzeczywisto艣ci proces jest znacznie bardziej z艂o偶ony. Zobaczmy, co dzieje si臋 krok po kroku:

  1. Znalezienie katalogu domowego
    Ansible potrzebuje wiedzie膰, gdzie umie艣ci膰 pliki tymczasowe. Wykonuje wi臋c pierwsze polecenie w celu ustalenia katalogu domowego u偶ytkownika.
  2. Utworzenie katalogu tymczasowego
    Nast臋pnie tworzy katalog tymczasowy, w kt贸rym b臋d膮 przechowywane pliki pomocnicze i skrypty.
  3. Odkrywanie wersji Pythona
    Ansible skanuje system w poszukiwaniu dost臋pnych wersji interpretera Pythona, aby m贸c skorzysta膰 z najlepszej opcji.
  4. Sprawdzenie poprawno艣ci Pythona
    Aby upewni膰 si臋, 偶e wybrany interpreter dzia艂a prawid艂owo, Ansible wykonuje testowe polecenie.
  5. Przes艂anie modu艂u przez SFTP
    W tym momencie Ansible przesy艂a plik AnsiballZ_command.py zawieraj膮cy kod Pythona do wykonania 偶膮danego polecenia.
  6. Nadanie praw wykonywania
    Upewniaj膮c si臋, 偶e w艂a艣nie przes艂any skrypt b臋dzie m贸g艂 zosta膰 wykonany.
  7. Wykonanie zadania
    Wreszcie, za pomoc膮 polecenia python, Ansible uruchamia sw贸j g艂贸wny skrypt z 偶膮danym poleceniem.
  8. Sprz膮tanie
    Po wykonaniu zadania Ansible usuwa wszystkie utworzone wcze艣niej pliki tymczasowe.

艁atwo zauwa偶y膰, 偶e ta pozornie prosta operacja wymaga du偶ej ilo艣ci przygotowa艅 i dodatkowych czynno艣ci w tle. A wszystko to zanim Ansible w og贸le wykona w艂a艣ciwe polecenie.

Ansible zosta艂 zaprojektowany z my艣l膮 o solidno艣ci, bezpiecze艅stwie i elastyczno艣ci. Zamiast wykonywa膰 polecenia bezpo艣rednio na zdalnym systemie, pozwala przesy艂a膰 samodzielne modu艂y kodu Pythona, kt贸re s膮 nast臋pnie wykonywane w kontrolowanym 艣rodowisku. Taka architektura daje wi臋ksz膮 kontrol臋 nad procesem i lepsze mo偶liwo艣ci debugowania, ale niestety wi膮偶e si臋 z dodatkowymi czynno艣ciami przygotowawczymi.

Cho膰 wspomniane wcze艣niej kroki s膮 dla Ansible normalne, nie zawsze jest to po偶膮dane zachowanie. W przypadku prostych polece艅, takich jak uptime, ca艂y ten proces mo偶e wydawa膰 si臋 zbyt rozbudowany. Na szcz臋艣cie istnieje wyj艣cie - tryb surowy (raw).

Tryb surowy pozwala omin膮膰 wi臋kszo艣膰 krok贸w przygotowawczych i bezpo艣rednio wykona膰 偶膮dane polecenie na zdalnym ho艣cie. Zaoszcz臋dzi to czas i zasoby, kosztem jednak mniejszej kontroli i mo偶liwo艣ci debugowania. Aby uruchomi膰 polecenie uptime w trybie surowym, u偶yj polecenia:

ansible all -i my-server, -m raw -a "uptime"

To polecenie wykona zadanie w pojedynczej sesji SSH, bez potrzeby przesy艂ania czy uruchamiania dodatkowych skrypt贸w. Idealne rozwi膮zanie, gdy czas ma kluczowe znaczenie.


A transport protocol鈥檚 view of Starlink
How TCP interacts with the characteristics of the Starlink service.

W 艣wiecie nowoczesnych technologii komunikacyjnych, systemy satelitarne stanowi膮 coraz wa偶niejsz膮 alternatyw臋 dla tradycyjnych 艂膮czy naziemnych. Szczeg贸lnie interesuj膮cym przypadkiem jest Starlink, system satelitarny niskiej orbity ziemskiej (LEO) firmy SpaceX, kt贸ry oferuje unikalne mo偶liwo艣ci, ale r贸wnie偶 stawia przed in偶ynierami sieciowymi nowe wyzwania. Jak protok贸艂 TCP, podstawowy filar transportu danych w Internecie, radzi sobie z tymi wyzwaniami?

Aby zrozumie膰 wyj膮tkowo艣膰 Starlink, warto najpierw przyjrze膰 si臋 tradycyjnym systemom satelitarnym na orbicie geosynchronicznej. Te satelity, znajduj膮ce si臋 na wysoko艣ci oko艂o 35 786 km nad r贸wnikiem, pozostaj膮 "nieruchome" wzgl臋dem powierzchni Ziemi. Jednak ta stabilno艣膰 ma swoj膮 cen臋:

  • Op贸藕nienie sygna艂u (RTT) wynosi 艣rednio oko艂o 660 ms
  • Ograniczona liczba dost臋pnych "slot贸w" orbitalnych
  • Konieczno艣膰 stosowania du偶ych anten odbiorczych

Starlink wykorzystuje satelity na niskiej orbicie ziemskiej (LEO), na wysoko艣ci oko艂o 550 km. To fundamentalnie zmienia charakterystyk臋 us艂ugi:

  • Minimalne op贸藕nienie propagacji sygna艂u to zaledwie 3,7 ms
  • Satelity poruszaj膮 si臋 z pr臋dko艣ci膮 oko艂o 27 000 km/h wzgl臋dem powierzchni Ziemi
  • Ka偶dy satelita jest widoczny z danego punktu na Ziemi przez zaledwie kilka minut
  • Konieczno艣膰 wsp贸艂pracy setek satelit贸w tworz膮cych konstelacj臋

Analiza danych pomiarowych ujawnia kilka kluczowych cech 艂膮cza Starlink:

  1. Zmienne op贸藕nienie - RTT zmienia si臋 regularnie co oko艂o 15 sekund, co odpowiada prze艂膮czaniu mi臋dzy satelitami. Op贸藕nienie mo偶e skoczy膰 nagle z 30 ms do 80 ms podczas takiego prze艂膮czenia.
  2. Wysoki jitter - 艣rednia zmienno艣膰 op贸藕nienia mi臋dzy kolejnymi pakietami wynosi oko艂o 6,7 ms, co jest relatywnie wysok膮 warto艣ci膮.
  3. Utrata pakiet贸w - 艣rednio oko艂o 1-2% pakiet贸w jest traconych, przy czym straty te nie s膮 zwi膮zane z przeci膮偶eniem sieci, a raczej z prze艂膮czaniem satelit贸w lub zak艂贸ceniami radiowymi.
  4. Zmienne przepustowo艣ci - testy wykazuj膮, 偶e przepustowo艣膰 mo偶e waha膰 si臋 od 10 Mbps do 370 Mbps dla pobierania i od 5 Mbps do 50 Mbps dla wysy艂ania, z median膮 oko艂o 120 Mbps.

Protok贸艂 TCP zosta艂 zaprojektowany z kilkoma za艂o偶eniami dotycz膮cymi charakterystyki sieci:

  • Stabilna maksymalna przepustowo艣膰 艣cie偶ki
  • Niski jitter w por贸wnaniu do RTT
  • Niska 艣rednia utrata pakiet贸w, g艂贸wnie zwi膮zana z przepe艂nieniem bufor贸w

Starlink 艂amie wszystkie te za艂o偶enia, co powoduje, 偶e standardowe implementacje TCP mog膮 dzia艂a膰 nieefektywnie. W szczeg贸lno艣ci:

TCP CUBIC, najpopularniejszy obecnie algorytm kontroli przeci膮偶e艅, wykazuje nast臋puj膮ce zachowanie na 艂膮czu Starlink:

  • W godzinach szczytu osi膮ga 艣redni膮 przepustowo艣膰 znacznie poni偶ej potencja艂u 艂膮cza (oko艂o 45 Mbps przy rzeczywistej przepustowo艣ci 250 Mbps)
  • Reaguje gwa艂townie na straty pakiet贸w, drastycznie zmniejszaj膮c okno wysy艂ania
  • Powoli odbudowuje przepustowo艣膰 po wyst膮pieniu straty pakietu
  • Wykazuje znacznie lepsz膮 wydajno艣膰 w godzinach mniejszego obci膮偶enia sieci

BBR (Bottleneck Bandwidth and Round-trip propagation time) to nowszy algorytm kontroli przeci膮偶e艅, kt贸ry:

  • Utrzymuje swoj膮 szybko艣膰 wysy艂ania pomimo pojedynczych strat pakiet贸w
  • Pr贸buje oszacowa膰 iloczyn op贸藕nienia i przepustowo艣ci 艣cie偶ki
  • Aktywnie testuje przepustowo艣膰 przez regularne zwi臋kszanie szybko艣ci wysy艂ania
  • Na 艂膮czu Starlink osi膮ga przepustowo艣膰 znacznie bli偶sz膮 rzeczywistemu potencja艂owi 艂膮cza

Jak mo偶na zoptymalizowa膰 dzia艂anie TCP na 艂膮czach Starlink? Istnieje kilka obiecuj膮cych podej艣膰:

  1. Modyfikacja BBR - dostosowanie algorytmu BBR do brania pod uwag臋 regularnych 15-sekundowych prze艂膮cze艅 satelit贸w, op贸藕niaj膮c zwi臋kszenie szybko艣ci wysy艂ania je艣li zbli偶a si臋 moment prze艂膮czenia.
  2. Adaptacja CUBIC - modyfikacja CUBIC, aby wykorzystywa艂 Selektywne Potwierdzenia (SACK) do naprawy utraconych pakiet贸w bez zmniejszania okna wysy艂ania, je艣li strata nast膮pi艂a podczas prze艂膮czania satelit贸w.
  3. Wykorzystanie ECN - Explicit Congestion Notification pozwoli艂oby protoko艂owi TCP na rozr贸偶nienie mi臋dzy strat膮 pakietu spowodowan膮 prze艂膮czeniem satelity a strat膮 wynikaj膮c膮 z rzeczywistego przeci膮偶enia sieci.

Starlink stanowi wyj膮tkowe 艣rodowisko dla protoko艂u TCP, charakteryzuj膮ce si臋 wysokim jitterem, regularnie zmieniaj膮cym si臋 op贸藕nieniem i stratami pakiet贸w niezwi膮zanymi z przeci膮偶eniem. Nowsze protoko艂y kontroli przeci膮偶e艅, takie jak BBR, radz膮 sobie z tymi wyzwaniami lepiej ni偶 starsze implementacje.

Kluczowym elementem poprawiaj膮cym wydajno艣膰 TCP na 艂膮czach Starlink jest wykorzystanie Selektywnych Potwierdze艅 (SACK), kt贸re pozwalaj膮 algorytmowi kontroli przeci膮偶e艅 na rozr贸偶nienie mi臋dzy pojedynczymi stratami pakiet贸w a stanem przeci膮偶enia sieci.

EVPN/VXLAN od Nokia

https://documentation.nokia.com/cgi-bin/dbaccessfilename.cgi/3HE21632AAAATQZZA_V1_Nokia%20Validated%20Design:%203-stage%20EVPN%20VXLAN%20Fabric%20.pdf

Dokument wydany w ramach NVD (Nokia Validated Designs) koncentruje si臋 na tr贸jetapowym projekcie Clos EVPN VXLAN, obejmuj膮cym r贸偶ne aspekty 艂膮czno艣ci fizycznej i logicznej w architekturze centrum danych, z EVPN jako p艂aszczyzn膮 kontroln膮 i VXLAN jako p艂aszczyzn膮 danych.


Automatyzacja bez linijki kodu

cli-automation
Network Automation from the Command Line

cli-automation to aplikacja stworzona w j臋zyku Python, kt贸ra automatyzuje proces zarz膮dzania infrastruktur膮 sieciow膮 bez konieczno艣ci pisania kodu. Jest dedykowana in偶ynierom sieciowym, kt贸rzy nie posiadaj膮 zaawansowanej wiedzy programistycznej, co umo偶liwia im 艂atwe wyci膮ganie konfiguracji oraz konfigurowanie urz膮dze艅 sieciowych. U偶ytkownicy mog膮 wprowadza膰 parametry po艂膮czenia za pomoc膮 wiersza polece艅 lub plik贸w JSON.


Darmowe laboratorium w chmurze dla Twojego DC

艢wietnie! Uda艂o ci si臋 pomy艣lnie zarejestrowa膰.
Witaj z powrotem! Zalogowa艂e艣 si臋 pomy艣lnie.
Pomy艣lnie subskrybowa艂e艣 Inna Sie膰.
Tw贸j link wygas艂.
Sukces! Sprawd藕 swoj膮 skrzynk臋 e-mailow膮, aby uzyska膰 magiczny link do logowania.
Sukces! Twoje informacje rozliczeniowe zosta艂y zaktualizowane.
Twoje informacje rozliczeniowe nie zosta艂y zaktualizowane.