Prędkość w sieci LAN: enkapsulacja, przepustowość i jej pomiar
Cel slajdu: Zapoznanie się z pojęciami opisującymi wydajność sieci lokalnej oraz z relacjami między nimi; przygotowanie do poprawnego pomiaru i monitorowania przepływu.
O czym jest ta prezentacja
W potocznym języku „prędkość sieci” nie ma jednego znaczenia: dla jednego jest to wynik testu iperf3, dla innego oznaczenie portu przełącznika, dla jeszcze innego prędkość pobierania pliku. Prezentacja porządkuje te pojęcia i pokazuje, skąd bierze się różnica między nimi.
Część I – trzy pojęcia opisujące „prędkość” i granice między nimi
Część II – enkapsulacja w Ethernet, MTU, kodowanie, tunele i szyfrowanie
Część III – od czego zależy osiągalna przepustowość
Część IV – jednostki, pomiary i interpretacja wyników
Część V – monitorowanie: in-band, out-of-band, SNMP
Przepustowość (ang. bandwidth): maksymalna liczba bitów, którą medium potrafi przesłać w jednostce czasu. Wartość nominalna, ustalona przez standard. Zawsze jest największa spośród trzech metryk, a przepustowość użyteczna najmniejsza.
Termin „prędkość” jest w języku potocznym skrótem myślowym, który w technice sieciowej obejmuje co najmniej trzy różne wielkości fizyczne. Są one liczone w różnych punktach ścieżki komunikacyjnej, dotyczą różnych obiektów i mają różne jednostki.
Bandwidth jest wielkością z definicji standardu: wynika z modulacji, częstotliwości zegara i konstrukcji nadajnika. Nie da się go zwiększyć lepszym oprogramowaniem ani mocniejszym procesorem, można jedynie zmienić standard (przełączyć port na 2,5 Gbit/s zamiast 1 Gbit/s).
Throughput jest wynikiem pomiaru rzeczywistego strumienia bitów na wybranym interfejsie, zwykle liczonego jako różnica dwóch odczytów licznika bajtów podzielona przez czas między nimi. Wartość zależy od obciążenia, dlatego zmienia się w czasie.
Goodput jest tym, co widzi aplikacja: liczbą bajtów pliku albo treści, które dotarły do odbiorcy w całości i we właściwej kolejności. To najbliższe użytkownikowi pojęcie, ale również najtrudniejsze do pomiaru w sieci, bo wymaga znajomości treści ruchu albo współpracy aplikacji.
Przykład praktyczny, na którym oparto treść prezentacji, opisuje Igor Brzeżek w wpisie Zrozumienie „szybkości” sieci LAN: abonament 450/50 Mbit/s daje w teście prędkości wynik niższy od deklarowanego, a sieć 1 Gbit/s mierzona narzędziem iperf3 daje około 941 Mbit/s.
Slajd 2/40
Dlaczego określenie „prędkość sieci” jest nieprecyzyjne
Cel slajdu: Pokazanie, że trzy różnie mierzone wartości nazywane potocznie „prędkością” zawsze różnią się od siebie, oraz wyjaśnienie przyczyn tych różnic.
Trzy poziomy „prędkości” w jednej samej sieci
Co mierzymy
Gdzie bierzemy liczbę
Typowy wynik dla łącza 1 Gbit/s
Przepustowość z katalogu
oznaczenie portu, standard, typ PHY
1000 Mbit/s
Wynik testu aktywnego
sesja iperf3 między dwoma punktami
ok. 930–950 Mbit/s
Odczucie użytkownika
aplikacja pobierająca plik
110–118 MB/s
Konkluzja praktyczna: nie ma metody, która pozwoli zmierzyć „prędkości sieci” w sposób ogólny. Trzeba najpierw odpowiedzieć na pytanie, co chcemy zmierzyć: przepustowość portu, przepływ bitów na łączu czy dane dostarczone aplikacji.
Różnica między tymi trzema liczbami nie wynika z błędu pomiaru, lecz z miejsca, w którym pomiar jest wykonywany. Oznaczenie portu opisuje zdolność odczytaną ze standardu, wynik testu aktywnego opisuje wydajność konkretnej ścieżki w konkretnym momencie, a odczucie użytkownika jest wynikiem działania aplikacji, która może nie wykorzystywać całej przepustowości z powodu własnego protokołu, limitów serwera albo opóźnień.
Przykład z praktyki operatora: światłowód z abonamentem 450/50 Mbit/s pokazuje w teście prędkości mniej niż 450 Mbit/s w kierunku pobierania. Nie oznacza to awarii łącza. Oznacza, że deklarowana przez operatora wartość to bandwidth, a zmierzona w teście - goodput. Różnica kilkunastu procent mieści się w granicach normy dla tego typu łącza.
Test prędkości (speed test): narzędzie, które wysyła do serwera testowego duży plik lub generuje strumień danych i mierzy liczbę przesłanych bajtów w określonym czasie. Zwykle raportuje wartość zbliżoną do goodput, ponieważ liczy bajty odebrane przez aplikację, a nie bity przesłane przez interfejs.
Slajd 3/40
Trzy metryki wydajności: bandwidth, throughput, goodput
Cel slajdu: Zdefiniowanie trzech podstawowych metryk wydajności sieci, wskazanie relacji między nimi oraz miejsca, w którym każda z nich jest liczona.
Trzy metryki, trzy definicje
Metryka
Pytanie, na które odpowiada
Gdzie jest liczona
Bandwidth przepustowość teoretyczna
Ile bitów medium jest w stanie przesłać w sekundzie?
specyfikacja PHY, standard, katalog
Throughput przepustowość rzeczywista
Ile bitów faktycznie przeszło przez łącze w zadanym czasie?
licznik bajtów interfejsu, analizator
Goodput przepustowość użyteczna
Ile bitów danych aplikacji dotarło do odbiorcy?
aplikacja, serwer plików
Relacja:goodput ≤ throughput ≤ bandwidth. Równość zachodzi tylko w warunkach laboratoryjnych i tylko dla ruchu o rozmiarze ramki pozwalającym zminimalizować narzut.
Przykład liczbowy dla łącza 1 Gbit/s: bandwidth 1000 Mbit/s, maksimum po odjęciu narzutu ramek około 975 Mbit/s, pomiar sesji iperf3 około 941 Mbit/s. Różnica 975 − 941 = 34 Mbit/s to potwierdzenia ACK, nagłówki oraz rezerwa na przetwarzanie pakietów.
Różnica między metrykami nie jest sztuczna. Każda z nich odpowiada na inne pytanie i jest liczona w innym miejscu, dlatego uzyskane wartości mogą się różnić nawet wtedy, gdy sieć działa prawidłowo.
Nazwy pochodzą z angielskiego i bywają używane zamiennie, co jest głównym źródłem nieporozumień. W literaturze technicznej przyjęto jednak dość jednoznaczny podział zakresów, warto go respektować w dokumentacji projektowej i w rozmowach z klientem.
Bandwidth bywa też używany w znaczeniu „pasma przenoszenia” wyrażonego w hercach, na przykład dla kanałów radiowych. W kontekście sieci LAN warto rozróżniać dwie wielkości: szerokość kanału w megahercach, która jest właściwością pasma fizycznego, oraz przepustowość w bitach na sekundę, która jest właściwością warstwy transmisyjnej.
Throughput liczy się najczęściej z dwóch odczytów licznika bajtów: jeśli w chwili t1 odczytano wartość B1, a w chwili t2 wartość B2, to szybkość wynosi (B2 − B1) × 8 / (t2 − t1). Licznik interfejsu zlicza bajty na łączu, dlatego wynik obejmuje wszystkie ramki, także te niosące pakiety sterujące.
Goodput wymaga odniesienia do konkretnego strumienia danych. Najprostszy sposób to porównanie rozmiaru pliku, który wysłano, z rozmiarem pliku, który dotarł do odbiorcy, z uwzględnieniem retransmisji, jeśli aplikacja je raportuje. Alternatywą jest przechwycenie ruchu i policzenie bajtów ładunku w obrębie konkretnej sesji TCP.
Zakresy każdej metryki są więc różne: przepustowość teoretyczna uwzględnia wyłącznie limit standardu, przepustowość rzeczywista zawiera wszystkie bity, które przeszły przez interfejs (łącznie z nagłówkami i retransmitowanymi danymi), a przepustowość użyteczna pomija potwierdzenia ACK, retransmisje, pakiety kontrolne i dane odrzucone z powodu błędnej sumy kontrolnej.
Slajd 4/40
Plan prezentacji
Cel slajdu: Przedstawienie struktury prezentacji i zapoznanie się z logicznym ułożeniem tematów od enkapsulacji po monitoring.
Pięć części prezentacji
Materiał jest ułożony w kolejności przyczynowej: najpierw budowa ramki i narzut, potem definicje metryk, następnie czynniki, które obniżają wynik, na końcu pomiary i monitorowanie. Taki układ jest celowy - zrozumienie przyczyny (narzutu) ułatwia zapamiętanie skutku (niższej przepustowości użytecznej).
Część ITrzy metryki i granice między nimi
Część IIRamka Ethernet, MTU, kodowanie, tunele
Część IIICzynniki obniżające wydajność
Część IVJednostki, pomiary, interpretacja
Część VIn-band, out-of-band, SNMP
Blok
Zakres tematyczny
Wprowadzenie
nieprecyzyjność terminu „prędkość”, definicje metryk
Założenie przyjęte w całej prezentacji: omawiamy sieć lokalną (LAN) z podziałem na przełączniki, z technologią Ethernet zgodną z IEEE 802.3 oraz z protokołami IPv4 i IPv6. Tam, gdzie wynik zależy od systemu operacyjnego lub urządzenia, podano konkretne polecenia dla systemu Linux (Debian/Ubuntu) oraz dla RouterOS.
Ułożenie tematów w takiej kolejności ma cel dydaktyczny. Początkowe slajdy o budowie ramki odpowiadają na pytanie, dlaczego z 1 Gbit/s nie da się wycisnąć 1 Gbit/s danych aplikacji. Slajdy o metrykach porządkują język, w którym opisuje się wyniki. Slajdy o czynnikach wyjaśniają typowe obserwacje z pola. Ostatnia część łączy teorię z praktyką administracyjną: jak surowe liczniki urządzeń zamienić na wykres przepływu, na którym administrator zobaczy wąskie gardło.
Warto zaznaczyć, że prezentacja dotyczy warstwy lokalnej. Różnice między metrykami mają takie samo źródło również w sieciach rozległych, ale tam dochodzi jeszcze opóźnienie propagacji, które dla odległości międzykontynentalnych jest rzędu setek milisekund i całkowicie zmienia sposób wykorzystania przepustowości.
Slajd 5/40
Enkapsulacja: jak dane aplikacji trafiają do medium
Cel slajdu: Wyjaśnienie procesu enkapsulacji danych w kolejnych warstwach modelu OSI oraz policzenie narzutu na przykładzie pakietu IPv4 przenoszonego przez TCP w ramce Ethernet.
Od pliku do sygnału w kablu
Warstwa aplikacji - dane pliku, np. 1000 B
Warstwa transportowa - dołożony nagłówek TCP (20 B) lub UDP (8 B)
Warstwa sieciowa - dołożony nagłówek IPv4 (20 B) lub IPv6 (40 B)
Warstwa łączna - dołożona ramka Ethernet: adresy MAC, typ protokołu, suma kontrolna oraz preambuła
Warstwa fizyczna - kodowanie i modulacja sygnału, dostęp do medium
Przykład liczbowy dla IPv4 + TCP + Ethernet: 1000 B danych + 20 B TCP = 1020 B segmentu; + 20 B IPv4 = 1040 B datagramu; + 6 B MAC + 2 B typ + 4 B FCS = 1058 B ramki; + 8 B preambuły i SFD = 1066 B; + 12 B odstępu między ramkami = 1078 B na kablu. Efektywność wynosi 1000 / 1078, czyli 92,8 procent.
Enkapsulacja jest opisana w normie IEEE 802.3 dla warstwy łącznej oraz w dokumentacji RFC dla warstwy sieciowej i transportowej. Warto pamiętać, że nazwy jednostek zmieniają się zależnie od warstwy: w warstwie łącznej mówimy o ramce, w warstwie sieciowej o pakiecie, w warstwie transportowej o segmencie, a w warstwie fizycznej o symbolach.
W drugą stronę działa dekapsulacja: odbiorca zdejmuje kolejne warstwy, sprawdzając przy okazji sumy kontrolne. Dopiero po zdjęciu wszystkich nagłówków aplikacja otrzymuje swoje bajty. Każda dodatkowa warstwa jest więc kosztem dla obu kierunków transmisji, a nie tylko dla nadawania.
Policzony przykład nie uwzględnia jeszcze dwóch elementów: odstępu między ramkami (interframe gap) oraz ewentualnych potwierdzeń TCP. W praktyce na łączu 1 Gbit/s z ruchem o rozmiarze MSS 1460 B jeden segment danych zajmuje na kablu 1460 + 40 + 26 + 12 = 1538 B, co daje efektywność 94,9 procent jeszcze przed uwzględnieniem potwierdzeń.
Ten sam plik, przesłany w wielu małych pakietach, daje wynik znacznie gorszy. Przykładowo pakiet ICMP o ładunku 64 B zajmuje na kablu 64 + 20 + 26 + 12 = 122 B, ale z punktu widzenia aplikacji niesie tylko 64 B danych, czyli efektywność 52 procent. Dlatego w środowiskach sieciowych regularnie wykorzystuje się duże pakiety, a komunikacja oparta na małych pakietach (telefonia IP, DNS, komunikacja sterująca) wymaga osobnego podejścia do planowania przepustowości.
MSS (Maximum Segment Size): największy rozmiar danych, jaki protokół transportowy umieści w jednym segmencie, aby po dołożeniu nagłówków nie przekroczyć MTU ścieżki. Dla IPv4 z TCP wynosi 1460 B, dla IPv6 z TCP 1440 B. Wartość ta jest negocjowana osobno dla każdego połączenia.
Slajd 6/40
Ramka Ethernet II: budowa i rozmiary
Cel slajdu: Poznanie budowy ramki Ethernet II, rozmiarów poszczególnych pól oraz znaczenia preambuły, znacznika początku ramki i sumy kontrolnej FCS.
Pola ramki Ethernet II
Pole
Rozmiar
Znaczenie
Preambuła
7 B
naprzemienny wzór bitów do synchronizacji zegara odbiornika
SFD
1 B
znacznik rozpoczęcia właściwej ramki
Adresy MAC odbiorcy i nadawcy
6 B + 6 B
adresy fizyczne; same bity 1 oznaczają rozgłoszenie
Typ lub długość
2 B
kod protokołu EtherType, np. 0x0800 dla IPv4
Dane (payload)
46–1500 B
ładunek - zwykle pakiet IP
FCS
4 B
suma kontrolna CRC-32 dla ochrony integralności ramki
Suma kontrolna FCS: wartość CRC-32 obliczana z całej ramki. Jeżeli odbiorca wyliczy inną wartość, odrzuca ramkę i zwiększa licznik błędów. Wzrost tego licznika niemal zawsze oznacza problem fizyczny.
Norma IEEE 802.3 opisuje dwa warianty pola oznaczonego jako „typ lub długość”. W formacie IEEE 802.3 (z nagłówkiem LLC/SNAP) wartości mniejsze lub równe 1500 (0x05DC) oznaczają długość pola danych. W formacie Ethernet II (DIX), dominującym we współczesnych sieciach LAN, wartości większe lub równe 1536 (0x0600) reprezentują kod protokołu warstwy wyższej (EtherType). Zakres 1501–1535 (0x05DD–0x05FF) pozostaje niezdefiniowany.
Preambuła i znacznik SFD nie są wliczane do długości ramki w dokumentacji ani do wartości liczników SNMP. Są jednak obecne na medium i zajmują czas, dlatego w obliczeniach efektywności transmisji warto je uwzględniać.
Razem, bez preambuły i SFD, minimalna ramka ma 64 B, a maksymalna 1518 B. Z preambułą i SFD długość na kablu wynosi odpowiednio 72 B i 1526 B. Wartość ta nie jest jedynie konwencją dokumentacyjną: karta sieciowa rozpoznaje początek ramki właśnie po wzorze preambuły i znaczniku SFD.
Rozmiar 1518 B jest maksimum dla ramki bez znacznika VLAN. Po wprowadzeniu IEEE 802.1Q norma IEEE 802.3ac rozszerzyła ten limit o cztery bajty opisujące znacznik VLAN, czyli do 1522 B. W praktyce oznacza to, że ramka z ładunkiem 1500 B i znacznikiem VLAN ma długość 1522 B, ale nadal jest przenoszona przez interfejs o MTU 1500 B.
Cel slajdu: Wyjaśnienie pojęcia MTU, zakresu rozmiarów ramek Ethernet oraz genezy minimalnego rozmiaru 64 B wynikającej z mechanizmu wykrywania kolizji.
MTU i zakres rozmiarów ramek
MTU (Maximum Transmission Unit) to największy rozmiar datagramu, który może zostać przesłany w jednej ramce bez fragmentacji. W sieci Ethernet opartej na IPv4 wartość domyślna wynosi 1500 B i wynika bezpośrednio z maksymalnego rozmiaru pola danych ramki.
46 B - najmniejsze dopuszczalne pole danych ramki
1500 B - największe pole danych ramki bez znacznika VLAN, czyli typowa wartość MTU
9000 B - popularna wartość pola danych w ramkach typu jumbo frames, stosowana w centrach danych i sieciach SAN
Najczęstsza pomyłka: „ramka 1518 B” i „MTU 1500 B” opisują to samo, ale z różnych poziomów stosu. Podczas analizy przechwyconego ruchu liczby widoczne w analizatorze to długość ramki, a w nagłówku IP - rozmiar datagramu.
Wartość 1500 B dla MTU nie jest przypadkowa. Wywodzi się z ograniczeń historycznych: większe ramki zwiększały prawdopodobieństwo błędu odczytu całej ramki na niedoskonałych łączach, a w sieciach współdzielonych wydłużały czas wykrywania kolizji. Standard IEEE 802.3 zachował ten limit, dopóki nie pojawiły się aplikacje wymagające mniejszej liczby ramek na sekundę przy tej samej przepustowości.
Minimalna długość ramki wywodzi się z mechanizmu wykrywania kolizji CSMA/CD. Nadawca musi nadawać przez co najmniej 512 czasów bitowych, aby sygnał kolizji zdążył powrócić z najdalszego węzła sieci współdzielonej. 512 bitów to dokładnie 64 bajty licząc od adresu odbiorcy do końca sumy kontrolnej. Warto ta jest dziś w znacznej mierze formalnością, ponieważ współczesne przełączniki pracują wyłącznie w trybie pełnego dupleksu, w którym kolizje nie występują. Pozostała jednak w normie, bo stanowi podstawę formatu ramek rozpoznawanego przez wszystkie karty sieciowe.
Wartość MTU dotyczy warstwy sieciowej, a długość ramki dotyczy warstwy łącznej. Różnica 18 B to nagłówek Ethernet (6 + 6 + 2) oraz 4 B sumy kontrolnej. Dlatego pakiet IP o rozmiarze 1500 B jest przenoszony w ramce o długości 1518 B. W praktyce administracyjnej warto rozróżniać trzy pojęcia: rozmiar ramki widziany na medium, rozmiar pola danych ramki oraz rozmiar datagramu IP. Analizatory pokazują najczęściej pierwsze, systemy operacyjne konfigurują trzecie, a wartość 1500 B odnosi się do dwóch ostatnich.
Ramki jumbo frames: ramki o polu danych większym niż 1500 B. Standard IEEE 802.3 nie definiuje ich; są to wartości uzgodnione między producentami, najczęściej 9000 B (niekiedy 9216 B). Nie wolno zakładać, że każde urządzenie w ścieżce akceptuje taki rozmiar.
Slajd 8/40
Narzut na łączu i efektywność transmisji
Cel slajdu: Policzenie stałego narzutu ramki Ethernet oraz wyznaczenie efektywności transmisji dla typowych rozmiarów ramek.
Efektywność transmisji w zależności od rozmiaru danych
Narzut ramki = 26 B = 8 B (preambuła i SFD) + 6 B (MAC odbiorcy) + 6 B (MAC nadawcy) + 2 B (EtherType) + 4 B (FCS).
Rozmiar danych w ramce
Dane na kablu
Narzut
Efektywność
46 B (minimalna ramka)
72 B
26 B
63,9 %
512 B
538 B
26 B
95,2 %
1500 B (domyślne MTU)
1526 B
26 B
98,3 %
9000 B (jumbo frames)
9026 B
26 B
99,7 %
Uwzględnienie odstępu między ramkami: przy ramce 1518 B i odstępie 12 B na kablu zajęte jest 1538 B, co daje efektywność 1500 / 1538 = 97,5 procent. Dla ramki 64 B jest to 72 B + 12 B = 84 B, czyli efektywność 54,8 procent.
Na poziomie kabla dochodzi do narzutu wymagany przez normę odstęp między ramkami, wynoszący 96 czasów bitowych. Dla łączy 10, 100 i 1000 Mbit/s jest to odpowiednio 12 bajtów, ponieważ czas bitu wynosi w nich odpowiednio 100 ns, 10 ns i 1 ns. Ten odstęp nie jest częścią ramki, ale zajmuje medium przez czas, w którym nadajnik nie może rozpocząć kolejnej ramki. Nie jest to pauza w pełnym rozumieniu: ścieżka bitowa pozostaje w tym czasie nieużywana.
Wartość 26 B narzutu jest prawidłowa dla ramki bez znacznika VLAN i bez ochrony MACsec. Po dodaniu znacznika IEEE 802.1Q narzut rośnie o cztery bajty do 30 B, a po włączeniu MACsec (IEEE 802.1AE) dochodzi kolejne 32 B, czyli 16 B znacznika bezpieczeństwa SecTAG i 16 B kodu uwierzytelniającego ICV. Łączny narzut dla ramki z VLAN i MACsec wynosi więc 62 B zamiast 26 B. Wartość 32 B jest typowa dla konfiguracji z AES-GCM i identyfikatorem SCI; z szyfrem bez identyfikatora SCI oraz z AES-CMAC narzut bywa mniejszy.
W praktyce to właśnie ochrona MACsec, tunele i znaczniki VLAN sprawiają, że efektywność spada znacznie bardziej niż sugeruje „goły” Ethernet. Ramka o danych 1500 B z MACsec i dwoma znacznikami VLAN zajmuje na kablu 1526 + 12 + 32 + 4 = 1574 B, a efektywność wynosi 1500 / 1574 = 95,3 procent. Wartości podane w tabeli liczą efektywność bez odstępu między ramkami, czyli według wzoru dane / (dane + 26).
Wniosek praktyczny: w sieci, w której przepływa wiele małych pakietów, realna przepustowość użyteczna jest znacznie niższa niż wskazuje oznaczenie portu, nawet jeśli nie ma żadnych błędów i obciążenie nie jest duże. Diagnozę należy zaczynać od statystyki rozmiaru ramek (IOD w Wireshark, hist_frame_size w sFlow), a nie od obciążenia procesora.
Warto podkreślić, że powyższe obliczenia dotyczą wyłącznie ścieżki bitowej na warstwie łącznej. Na wynik końcowy wpływają jeszcze nagłówki warstwy sieciowej i transportowej, potwierdzenia oraz retransmisje, o czym mowa w kolejnych częściach prezentacji.
Slajd 9/40
Znaczniki VLAN (IEEE 802.1Q i 802.1ad) a rozmiar ramek
Cel slajdu: Wyjaśnienie budowy znacznika VLAN, jego wpływu na długość ramki oraz powodu, dla którego wartość MTU warstwy sieciowej pozostaje równa 1500 B.
Znaczniki VLAN
Standard IEEE 802.1Q wprowadza w ramkę czterobajtowy znacznik, który umożliwia przenoszenie kilku logicznych sieci VLAN w ramach tego samego łącznika fizycznego. Znacznik składa się z dwóch bajtów identyfikatora protokołu (TPID, wartość 0x8100) oraz dwóch bajtów informacji sterującej (TCI), w której znajduje się 12-bitowy identyfikator VLAN (VID) i trzy bity priorytetu.
EtherType 0x8100 pojawia się w pierwszym polu ramki, a właściwy kod protokołu zostaje przesunięty o cztery bajty dalej
Maksymalna długość ramki rośnie z 1518 B do 1522 B
MTU warstwy trzeciej pozostaje 1500 B - znacznik VLAN nie jest częścią datagramu IP
Konsekwencja praktyczna: wartość MTU 1500 B na interfejsie jest poprawna również wtedy, gdy w sieci występują znaczniki VLAN. Ustawienie MTU 1496 B „na zapas” jest błędem - pozwalałoby przesyłać tylko 1496 B danych w ramce zamiast 1500 B, a więc niepotrzebnie zwiększałoby liczbę ramek i liczników potwierdzeń.
Standard IEEE 802.1Q został opublikowany w 1998 roku i obowiązuje w praktyce wszystkich instalacji wielkoskalowych. Zasada jest prosta: w polu typu protokołu umieszcza się wartość 0x8100, a właściwy kod protokołu przesuwa się o cztery bajty dalej. Odbiorca po rozpoznaniu 0x8100 odczytuje informację sterującą i traktuje kolejne cztery bajty jako kod protokołu.
Standard IEEE 802.1ad (Q-in-Q) umożliwia przenoszenie znacznika VLAN w ramce, która już zawiera taki znacznik, czyli dwa znaczniki po cztery bajty. Długość ramki rośnie wtedy do 1526 B. Standard ten opracowano z myślą o operatorach sieci telekomunikacyjnych, którzy muszą przenosić VLAN klientów we własnym VLAN operatora. W praktyce enterprise stosuje ten mechanizm rzadko, ale warto znać go z perspektywy diagnostyki: ramka z dwoma znacznikami VLAN pojawia się wtedy, gdy punkt końcowy jest VLAN-iem dostawcy usługowego połączonym z siecią klienta.
Trunk i port dostępu: port typu trunk przenosi ramki z wieloma VLAN i domyślnie je oznacza, natomiast port dostępu należy do jednego VLAN i zwykle wysyła ramki bez znacznika. Znacznik dodaje się dopiero na pierwszym przełączniku w ścieżce, a z ostatniego jest usuwany.
Wpływ na efektywność: przy 1500 B danych ramka z jednym znacznikiem VLAN zajmuje 1542 B na kablu, co daje efektywność 97,3 procent. Z dwoma znacznikami (802.1ad) jest to 1546 B, czyli 97,0 procent. W obu przypadkach różnica w stosunku do ramki bez VLAN jest niewielka, ale w klastrach obliczeniowych z dużą liczbą małych pakietów sumuje się.
Znaczniki VLAN mają też skutek uboczny, o którym rzadko się myśli: zwiększają liczbę ramek potrzebną do przeniesienia tej samej ilości danych. Przy dużym ruchu i małych pakietach każda dodatkowa ramka to dodatkowe potwierdzenie TCP oraz dodatkowy wpis w licznikach interfejsu, co zauważalnie obciąża procesor przełącznika.
Poziom uwierzytelniania w VLAN (protokół 802.1X) i dynamiczna rekonfiguracja VLAN (GVRP lub MVRP) to mechanizmy niezwiązane z rozmiarem ramek, ale istotne operacyjnie: błędnie skonfigurowane VLAN powodują ciche gubienie ruchu, które objawia się w monitoringu jako znikający przepływ.
Slajd 10/40
Warstwa fizyczna: kodowanie i modulacja
Cel slajdu: Zapoznanie się z technikami kodowania i modulacji stosowanymi w standardach Ethernet oraz z wpływem liczby par przewodu i gęstości symboli na przepustowość teoretyczną.
Na drodze od bitów do sygnału
Standard
Norma
Technika
Przebieg
10BASE-T
IEEE 802.3 (1990)
kodowanie Manchester
10 Mbit/s, do 100 m, Cat 3
100BASE-TX
IEEE 802.3u (1995)
4B/5B + MLT-3
100 Mbit/s, do 100 m, Cat 5
1000BASE-T
IEEE 802.3ab (1999)
4D-PAM5 na czterech parach
1000 Mbit/s, do 100 m, Cat 5e
2,5G / 5GBASE-T
IEEE 802.3bz (2016)
PAM-16 z kodem 64B/65B i korekcją LDPC
2500 i 5000 Mbit/s, do 100 m, Cat 5e lub Cat 6
10GBASE-T
IEEE 802.3an (2006)
DSQ128 + korekcja LDPC
10 Gbit/s, do 100 m na Cat 6a
Symbol (baud): liczba zmian stanu sygnału na sekundę. Nie jest tożsama z liczbą przesyłanych bitów na sekundę. Przykładowo 1000BASE-T pracuje z częstotliwością symboli 125 MBd na każdej z czterech par, przy czym każdy symbol niesie 2 bity: 4 pary × 125 msymbol/s × 2 bity = 1000 Mbit/s.
Dane z ramki nie są przesyłane jako ciąg bitów. Warstwa fizyczna (PHY) koduje je, grupując w symbole, a następnie moduluje amplitudę, fazę lub częstotliwość sygnału nośnego. Każda rodzina standardów Ethernet na skrętce wykorzystuje inny zestaw technik, dobrany do możliwości przewodu.
Podstawowa zasada: przepustowość teoretyczna nie wynika z szerokości pasma przewodu, lecz z ilości informacji niesionej przez jeden symbol oraz z liczby równoległych par. Gigabit Ethernet osiągnął 1000 Mbit/s na przewodzie kategorii 5e, który w prostych zastosowaniach nie nadawał się do 100 Mbit/s, dzięki zastosowaniu modulacji PAM-5 na czterech parach jednocześnie.
Kodowanie służy dwóm celom: wprowadza niewielki narzut, ale przede wszystkim zapobiega pojawianiu się długich serii jednakowych bitów, które utrudniałyby odbiornikowi odzyskanie synchronizacji zegarowej. Stąd w standardach o większej przepustowości stosuje się kody o coraz mniejszym narzucie: 4B/5B w 100BASE-TX daje około 20 procent, 8B/10B w 1000BASE-X na światłowodzie 25 procent, a 64B/65B w rodzinie GBASE-T zaledwie 1,5625 procent. Kodowanie 8B/10B w wersji Gigabit pojawia się wyłącznie w 1000BASE-X, a nie w 1000BASE-T na kablu miedzianym.
Standardy 2,5GBASE-T i 5GBASE-T wykorzystują modulację PAM-16, kodowanie 64B/65B o narzucie zaledwie 1,5625 procent oraz korekcję błędów LDPC. Dwuwymiarową konstelację 128 punktów (DSQ128) stosuje dopiero 10GBASE-T z normy IEEE 802.3an. Różnica przepustowości między 1 Gbit/s a 10 Gbit/s wynika więc przede wszystkim z gęstości symboli na przewodzie: 125 MBd dla 1000BASE-T i 800 MBd dla 10GBASE-T.
Standardy 2,5GBASE-T i 5GBASE-T powstały jako praktyczny kompromis między kosztami okablowania a szybkością. Pozwalają obsłużyć punkty dostępowe bez wymiany istniejącej kategoryzacji 5e, która w większości instalacji biurowych jest już poprowadzona. Korekcja LDPC występuje w całej rodzinie GBASE-T i pozwala pracować blisko granicy wydajności kanału.
Slajd 11/40
MSS: ile danych mieści się w jednym pakiecie
Cel slajdu: Obliczenie maksymalnego rozmiaru segmentu danych dla IPv4 i IPv6 oraz wyjaśnienie związku między MSS a mechanizmem wykrywania MTU ścieżki.
Ile danych zmieści się w jednym pakiecie
Konfiguracja
Obliczenie
Wartość MSS
IPv4 + TCP
1500 − 20 − 20
1460 B
IPv4 + UDP
1500 − 20 − 8
1472 B
IPv6 + TCP
1500 − 40 − 20
1440 B
IPv6 + UDP
1500 − 40 − 8
1452 B
IPv4 + TCP, jumbo frames 9000 B
9000 − 20 − 20
8960 B
MSS a MTU - praktyczna różnica: polecenie ping -M do -s 1472 wysyła 1472 bajty danych ICMP, do których dochodzi 20 B nagłówka IPv4 i 8 B nagłówka ICMP, co daje dokładnie 1500 B datagramu. Zwykłe ping -s 1472 nie ustawia flagi „nie fragmentuj”, więc router po drodze może ten datagram rozdzielić.
Największy rozmiar danych przenoszony w jednym segmencie warstwy transportowej nazywamy MSS. Jest on wyznaczany przez MTU ścieżki pomniejszony o rozmiary nagłówków wszystkich warstw leżących poniżej oraz o nagłówek warstwy transportowej.
Rozmiary nagłówków, które wchodzą w te obliczenia, są następujące: nagłówek TCP ma 20 B w konfiguracji podstawowej, a opcje rozszerzone (znaczniki czasu, okna, selektywne potwierdzanie) zwiększają ten rozmiar do 40 B lub więcej. Nagłówek IPv6 ma 40 B bez rozszerzeń, a nagłówki rozszerzeń zwiększają ten rozmiar. Nagłówek UDP ma 8 B i nie zmienia się.
Wartość MSS jest negocjowana między nadawcą a odbiorcą podczas nawiązywania połączenia TCP: obie strony ogłaszają maksymalny rozmiar danych, jakiego są w stanie przyjąć, a przyjęta zostaje mniejsza z nich. Dzięki temu połączenie może działać poprawnie także wtedy, gdy jedna ze ścieżek ma mniejsze MTU.
W praktyce administracyjnej MSS pojawia się głównie w konfiguracji tuneli i sieci wirtualnych. Każda warstwa enkapsulacji zmniejsza ilość miejsca dostępnego dla danych, dlatego po włączeniu tunelu GRE, VXLAN lub IPsec warto jawnie ustawić MSS na urządzeniu końcowym tunelu albo skorzystać z trybu dopasowującego do wykrytego MTU.
Warto odróżnić MSS od MTU. MTU to limit rozmiaru datagramu narzucony przez warstwę łączną i trasę. MSS to limit rozmiaru danych narzucony przez warstwę transportową i możliwości odbiorcy. Pomylenie tych pojęć prowadzi do konfiguracji, w której MTU ustawiono na wartość MSS, a pakiet i tak nie mieści się w ramce.
Polecenie ping z flagą -M do ustawia bit „nie fragmentuj”, dzięki czemu wynik testu jest jednoznaczny. Warto korzystać z niego przy każdej zmianie tunelu lub konfiguracji MTU, ponieważ pozwala wskazać dokładnie największy rozmiar danych, który przejdzie przez całą ścieżkę.
Konfiguracja MSS na routerze (RouterOS): /ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=clamp-to-pmtu (lub w profilu PPP: change-tcp-mss=yes). Ręczne ustawienie wartości na sztywno (np. new-mss=1460) działa poprawnie tylko wtedy, gdy cała ścieżka ma stałe MTU. Reguła clamp-to-pmtu dynamicznie dopasowuje nagłówek TCP SYN do najmniejszego MTU trasy, zapobiegając czarnej dziurze MTU.
Slajd 12/40
Narzut tuneli i szyfrowania na warstwie łącznej
Cel slajdu: Zestawienie narzutu wnoszonego przez tunele i mechanizmy ochrony oraz wyjaśnienie jego wpływu na dostępny rozmiar danych w ramce.
Ile kosztuje każda warstwa dodana do ścieżki
Każda technologia, która zawija oryginalną ramkę w nową, zwiększa rozmiar przesyłanej jednostki. W konsekwencji zmniejsza się ilość danych aplikacji, która zmieści się w jednej ramce, a przy niezmiennym MTU rośnie liczba potrzebnych ramek.
Mechanizm
Narzut
Składowe narzutu
Skutek dla MTU 1500 B
MPLS (RFC 3032)
4 B
etykieta 4 B
ramka do 1522 B, MTU bez zmian
PPPoE (RFC 2516)
8 B
6 B PPPoE + 2 B protokół PPP
MTU sesji 1492 B
GRE (RFC 2784)
24 B
20 B IPv4 + 4 B GRE
MTU tunelu 1476 B
IPsec ESP (tryb tunelowy)
22–38 B
wektor inicjalizacyjny, dopełnienie, ICV
MTU zależne od wybranego algorytmu
MACsec (IEEE 802.1AE)
32 B
SecTAG 16 B + ICV 16 B
MTU 1468 B
VXLAN (RFC 7348)
50 B
14 B Ethernet + 20 B IP + 8 B UDP + 8 B VXLAN
MTU podłoża 1450 B
Wniosek projektowy: wartość 1450 B dla VXLAN i 1476 B dla GRE nie są wartościami przypadkowymi - to wynika odejmowania narzutu od 1500 B. Jeżeli w sieci podłożowej ustawiono wyższe MTU (na przykład 9000 B na ramkach jumbo), tunele mogą przenosić znacznie większe pakiety, co jest istotne w klastrach obliczeniowych i sieciach SAN.
Wartości w tabeli dotyczą warstwy łącznej lub wyższej. Narzuty transportowe, takie jak 20 B nagłówka IPv4 i 8 B nagłówka UDP, są uwzględnione w definicji MTU, dlatego wartość 1500 B oznacza maksymalny rozmiar datagramu IP, a nie maksymalny rozmiar pakietu na kablu.
Przy obliczaniu dostępnej przepustowości w tunelowanej ścieżce należy pomnożyć liczbę ramek przez pełny narzut, a nie tylko przez wartość z kolumny „Narzut”. Każda kolejna warstwa zwiększa liczbę ramek potrzebną do przesłania tej samej ilości danych, co w konsekwencji obniża efektywność transmisji.
Wartości MTU podłoża podane dla poszczególnych mechanizmów są wartościami minimalnymi, przy których tunel działa poprawnie. W praktyce warto ustawić MTU na całej ścieżce jednakowo, aby uniknąć konieczności fragmentacji pakietów przez routery pośrednie.
Slajd 13/40
MTU ścieżki, PMTUD i czarna dziura MTU
Cel slajdu: Opisanie mechanizmu wykrywania MTU ścieżki, jego konfiguracji oraz objawów i przyczyn czarnej dziury MTU.
Wykrywanie MTU ścieżki
Protokół Path MTU Discovery (RFC 1191 dla IPv4 oraz RFC 1981 dla IPv6) pozwala nadawcy samodzielnie ustalić najmniejszy rozmiar datagramu akceptowany na drodze do odbiorcy. Mechanizm wygląda następująco:
Nadawca ustawia bit „nie fragmentuj” w nagłówku IP i wysyła datagram o rozmiarze początkowo równym MTU interfejsu
Jeżeli router na drodze nie może przesłać datagramu, odrzuca go i wysyła do nadawcy komunikat ICMP (IPv4: typ 3, kod 4) z informacją o maksymalnym rozmiarze, który zmieści się w jego ramce
Nadawca zmniejsza rozmiar wysyłanych datagramów do wartości podanej w komunikacie i zapamiętuje ją na potrzeby tej sesji
Nadawca zapamiętuje tę wartość, aby uniknąć zapętlenia komunikatów ICMP; RFC 1191 opisuje w tym celu tablicę wartości minimalnych (Plateau Table), z której można korzystać jako wartości początkowej zamiast wartości domyślnej z początku sesji
Diagnostyka czarnej dziury MTU w systemie Linux: ping -M do -s 1472 10.0.0.10 (1472 + 20 + 8 = 1500 B) ping -M do -s 1400 10.0.0.10 (1428 B - mniejszy, przechodzi)
Jeżeli pierwsze polecenie nie zwraca odpowiedzi, a drugie ją zwraca, przyczyną jest MTU na drodze między 1428 a 1500 B.
Mechanizm PMTUD jest opisany w dokumentach RFC 1191 (IPv4) i RFC 1981 (IPv6). Działa na poziomie hosta i wymaga, aby routery zwracały odpowiednie komunikaty ICMP. Komunikat „fragmentation needed” zawiera w polu nagłówka ICMP wartość MTU, której nadawca może użyć bez fragmentacji.
Czarna dziura MTU (MTU black hole): sytuacja, w której pakiety większe niż pewien rozmiar są odrzucane bez informacji zwrotnej. Najczęściej powodują ją urządzenia filtrujące komunikaty ICMP typu „potrzebna fragmentacja” albo błędne ustawienie MTU na interfejsie tunelu.
Blokowanie komunikatów ICMP jest częstym błędem, zwłaszcza na brzegach sieci, gdzie filtry upraszczają reguły do „zabronić ICMP”. Tymczasem bez komunikatów ICMP typu 3 kod 4 oraz ICMPv6 typu 2 mechanizm PMTUD przestaje działać, a zamiast niego potrzebna jest statyczna konfiguracja MTU na każdym routerze wzdłuż ścieżki.
Efekt czarnej dziury jest szczególnie zdradliwy, ponieważ objawia się dopiero dla dużych pakietów. Sesje HTTP o małych żądaniach i odpowiedziach działają poprawnie, a przesyłanie dużego pliku zatrzymuje się. Diagnosta, który zaczyna od testu przeglądarką, może dojść do wniosku, że problem leży w aplikacji.
Skutecznym środkiem zaradczym pozostaje automatyczne korygowanie wartości MSS pakietów SYN na routerze brzegowym (np. reguła mangle action=change-mss new-mss=clamp-to-pmtu w RouterOS). Mechanizm ten działa po stronie sieci i zabezpiecza klientów nawet przy braku poprawnej obsługi ICMP przez serwery pośrednie.
Zasada praktyczna: komunikaty ICMP typu 3 kod 4 oraz ICMPv6 typ 2 (Packet Too Big) muszą być przepuszczane w obu kierunkach na całej ścieżce. Blokowanie całego ICMP jest częstym, a zarazem trudnym do zdiagnozowania błędem konfiguracyjnym.
Fragmentacja (IPv4): router może podzielić datagram na części, gdy nie ma ustawionego bitu „nie fragmentuj”. Fragmenty zwiększają liczbę pakietów i potwierdzeń, a każdy z nich ma pełny nagłówek IP. W IPv6 (RFC 8200) routery w ogóle nie fragmentują - gdy datagram jest za duży, router odrzuca go i wysyła do nadawcy komunikat ICMPv6 typu 2 „Packet Too Big” z informacją o maksymalnym rozmiarze. Fragmentować może wyłącznie nadawca i wyłącznie wtedy, gdy zna rozmiar MTU z komunikatu ICMPv6; nagłówek Fragmentacji jest wprowadzany dopiero wtedy.
Slajd 14/40
Czynniki obniżające przepustowość użyteczną
Cel slajdu: Zestawienie przyczyn obniżania przepustowości wraz z mechanizmem działania każdej z nich i wskazówką, jak ją rozpoznać.
Siedem powodów, dla których wynik jest niższy niż etykieta
Czynnik
Mechanizm
Spojrzenie diagnostyczne
Narzut ramek
26 B na każdą ramkę; przy małych pakietach nawet kilkadziesiąt procent pasma
statystyka rozmiaru ramek (IOD, sFlow)
Narzut protokołów
20 B IPv4, 20 B TCP, 8 B UDP, potwierdzenia ACK
analiza ruchu w Wireshark
Wydajność urządzeń
procesor, tablica przekazywania, pamięć buforów
obciążenie CPU, liczba odrzuceń
Kolejki i opóźnienie
oczekiwanie w buforach, spowolnienie na żądanie
RTT, głębokość kolejek, ICMP
Straty i retransmisje
błędy CRC, kolizje, utrata wskutek przepełnienia buforów
Kolejkowanie diagnostyki: zacząć od sprawdzenia liczników błędów (cokolwiek niezerowe oznacza problem fizyczny), następnie od rozkładu rozmiaru ramek, potem od obciążenia procesora urządzenia. Dopiero na końcu rozpatrywać ustawienia warstwy transportowej.
Przepustowość zmierzona na interfejsie rzadko odpowiada przepustowości użytecznej aplikacji. Kluczowe jest pytanie, na jakim poziomie pomiaru wykonano odczyt. Odczyt z licznika interfejsu pokazuje ruch na łączu. Odczyt na karcie sieciowej hosta pokazuje ruch, jaki dotarł do hosta, po odjęciu odrzuceń w buforze odbiorczym. Pomiar aplikacji pokazuje dane, które dotarły do procesu i zostały przetworzone.
Różnica między tymi trzema wartościami jest informacją diagnostyczną. Jeżeli licznik interfejsu pokazuje 990 Mbit/s, a iperf3 940 Mbit/s, to 50 Mbit/s zatrzymało się gdzieś pomiędzy medium a procesem. Jeżeli iperf3 pokazuje 940 Mbit/s, a przesyłanie pliku 700 Mbit/s, to problem leży w aplikacji, a nie w sieci.
Kilka sygnałów alarmowych w logach urządzenia: wzrost licznika CongestionDrops lub tail drops oznacza, że kolejka wyjściowa jest pełna - to wskazanie, że łącze jest wąskim gardłem, a nie źródłem. Wartość no buffer w raporcie błędów wskazuje, że pakiet nie znalazł wolnej pamięci w urządzeniu.
Warto zwrócić uwagę na sposób raportowania błędów przez przełączniki. Licznik błędów odbioru (CRC, FCS, alignment) wskazuje problem fizyczny lub elektromagnetyczny. Licznik odrzuceń z powodu braku pamięci wskazuje, że urządzenie jest przeciążone liczbą tablic lub prędkością zmian adresów MAC. Te dwie przyczyny wymagają zupełnie różnych reakcji.
Rekomendowana praktyka polega na gromadzeniu liczników przez dłuższy okres, na przykład przez całą dobę, a nie jednorazowym odczycie. Problemy występujące w godzinach szczytu, na przykład wiele małych pakietów od klientów Wi-Fi, są niewidoczne w pomiarze wykonanym w weekend.
Slajd 15/40
Kolejki, odrzucanie pakietów i bufferbloat
Cel slajdu: Wyjaśnienie mechanizmu powstawania kolejek, rodzajów odrzucania pakietów oraz związku wielkości bufora z opóźnieniem.
Co się dzieje, gdy pakietów jest za dużo
Przełącznik przesyła ramki z szybkością wynikającą z zegara portu. Jeżeli kilka portów nadaje jednocześnie do jednego portu wyjściowego, powstaje nadmiar, którego nie da się natychmiast obsłużyć. Pakiety trafiają do kolejki wyjściowej (bufora). Gdy bufor się zapełni, nadmiar jest odrzucany.
Odrzucenie z ogona kolejki (tail drop) - przy pełnym buforze nowy pakiet nie ma miejsca i zostaje odrzucony. Ten mechanizm jest prosty i przewidywalny, ale kosztowny: w dużych kolejkach opóźnienie (jitter) rośnie bardzo mocno.
Aktywne odrzucanie (AQM) - urządzenie sygnalizuje zbliżanie się do przepełnienia, aby nadawcy wycofali się z wysyłania. Algorytm RED (RFC 2309, rekomendacje RFC 7567) odrzuca pakiety wcześniej i losowo, a wersja z wagowaniem różnicuje próg dla poszczególnych przepływów.
Bufferbloat (spowolnienie na żądanie): duże bufory nie zwiększają przepustowości, a jedynie gromadzą opóźnienie. Link o przepustowości 100 Mbit/s z buforem 100 MB potrafi w czasie chwilowego przepełnienia wprowadzić opóźnienie rzędu kilku sekund. Interaktywność w grach i wideokonferencjach pada wtedy, mimo że „prędkość pobierania” pozostaje wysoka.
Zjawisko opóźnienia na żądanie (bufferbloat) zostało szczegółowo opisane w publikacji z 2011 roku. Kluczowa obserwacja dotyczy asymetrii: zwiększenie bufora poprawia widoczny wynik testu prędkości, ponieważ pozwala pochłonąć krótkotrwały szczyt ruchu, ale jednocześnie dramatycznie pogarsza czas reakcji systemu na zmianę obciążenia.
Dokument RFC 7567 (oraz wcześniejszy RFC 2309) formułuje kluczowe rekomendacje IETF w zakresie aktywnego zarządzania kolejkami (AQM). Kluczowa zasada jest taka, że bufor powinien być dostatecznie mały, aby opóźnienie pozostawało przewidywalne, a niedobór przepustowości sygnalizować szybko.
W praktyce administracyjnej zaleca się stosowanie buforów możliwie małych, dobranych do charakterystyki łącza, oraz włączanie aktywnego zarządzania kolejkami. W systemie Linux mechanizm fq_codel realizuje aktywne odrzucanie (AQM) i harmonogramowanie przepływów, ale nie kształtuje ruchu, czyli nie limituje przepustowości. Do ograniczenia pasma trzeba dołączyć osobny qdisc, na przykład HTB, HFSC albo tbf.
W środowiskach, w których liczy się przewidywalność opóźnienia, stosuje się dwa uzupełniające mechanizmy: ECN (Explicit Congestion Notification, RFC 3168), który pozwala routerowi powiadomić nadawcę bez odrzucania pakietu, oraz DSCP, który umożliwia oznaczenie ważności pakietu, tak aby przełącznik mógł zarezerwować przepustowość dla ruchu interaktywnego.
Diagnostyka kolejki z terminala w systemie Linux: polecenie tc -s qdisc show dev eth0 pokazuje liczbę pakietów odrzuconych (dropped). Wartość qlen to maksymalna długość kolejki, a backlog to liczba pakietów oczekujących na wysłanie w danym momencie. Wartość backlog bliska qlen oznacza, że bufor jest pełny i dalszy ruch będzie odrzucany.
ECN, PFC i DCQCN w sieciach RoCE: w centrach danych, gdzie opóźnienia są bardzo małe, a bufory celowo małe, operator nie może pozwalać sobie na duże kolejki. Zamiast tego przekazuje sygnały sterujące: znacznik ECN informuje nadawcę o przeciążeniu bez odrzucania pakietu, a PFC (Priority-based Flow Control) wstrzymuje ruch o wyższym priorytecie na poprzednim elemencie ścieżki. Algorytm DCQCN na podstawie tych sygnałów dynamicznie dostosowuje tempo nadawania.
Pomiar opóźnienia wymaga dwóch punktów końcowych. Wartość ping na obu końcach obejmuje trasę w obie strony. Jeżeli problem dotyczy tylko jednego kierunku, pomiar jednostronny jest niewystarczający i należy go powtarzać osobno dla każdego kierunku i każdego przepływu.
Slajd 16/40
TCP kontra UDP: narzut potwierdzeń i regulacja przepływu
Cel slajdu: Porównanie kosztu protokołów transportowych, wpływu potwierdzeń i retransmisji na przepustowość użyteczną oraz omówienie zastosowań obu protokołów.
Koszt niezawodności: TCP kontra UDP
Cecha
TCP
UDP
Połączenie
trójwymienny uścisk dłoni przed transferem
brak, wysyłka natychmiastowa
Nagłówek
20 B, z opcjami do 60 B
8 B
Potwierdzenia
obowiązkowe, zwykle co drugi segment
brak
Kolejność
zapewniona przez numerację segmentów
niegwarantowana
Retransmisja
automatyczna po upływie czasu oczekiwania
brak, odpowiedzialność aplikacji
Zastosowania
HTTP, SSH, transfer plików, poczta
strumieniowanie, gry, DNS, DHCP, VoIP
Koszt potwierdzeń na łączu 1 Gbit/s: na każde dwa segmenty danych o rozmiarze 1460 B przypada jedno potwierdzenie o rozmiarze 54 B (14 B Ethernet, 20 B IPv4, 20 B TCP). Zgodnie ze standardem Ethernet minimalna ramka L2 wynosi 64 B (54 B + 10 B dopełnienia padding). Na kablu (L1) zajmuje ona 64 B + 8 B (preambuła i SFD) + 12 B (odstęp IFG) = 84 B. Dwa segmenty danych zajmują 3076 B na kablu, więc potwierdzenia stanowią około 2,7 procent dodatkowego ruchu. Przy potwierdzaniu każdego segmentu koszt ten rośnie do około 5,4 procent.
Wybór protokołu transportowego wpływa na wynik pomiaru tak wyraźnie, że porównanie testów wykonanych różnymi protokołami bez podania warunków jest pozbawione znaczenia.
Mechanizm regulacji przepływu zdefiniowany w RFC 5681 składa się z czterech algorytmów: wolnego startu, unikania przepełnienia, szybkiego odtwarzania oraz zachowania ostrożności. Ich zadaniem jest znalezienie największego okna, przy którym nadawca nie powoduje utraty pakietów. W sieciach o małym opóźnieniu i dużej przepustowości okno osiąga wartość kilkudziesięciu kilobajtów w ułamku sekundy.
Regulacja przepływu z definicji RFC 5681 i RFC 6582: przy małym opóźnieniu (do kilku milisekund) standardowy algorytm TCP osiąga wysoką wydajność. Przy dużym opóźnieniu jego okno kumulacyjne rośnie wolno w fazie wolnego startu, co wydłuża rozgrzewanie sesji. W takich środowiskach stosuje się rozszerzenia okna (RFC 7323 dla skalowania okna; RFC 6928 zwiększający początkowe okno zatłoczenia initcwnd do 10 segmentów) albo alternatywne protokoły przesyłania danych.
Przy dużej przepustowości i dużym opóźnieniu, typowym dla łącz WAN o przepustowości gigabitowej, ograniczeniem staje się nie przepustowość, lecz ilość danych, które zdążą dotrzeć do odbiorcy w czasie podróży w obie strony. Stąd konieczność skalowania okna, aby utrzymać łącze w pełni zajęte. Rozmiar okna odbiorczego i wysyłkowego jest przedmiotem automatycznej negocjacji w Linuksie, więc administrator zwykle nie musi go ustawiać ręcznie. Interwencja jest jednak uzasadniona przy łączach o bardzo dużym opóźnieniu.
Warto zaznaczyć, że UDP nie jest „szybszym TCP”. UDP pozwala uniknąć kosztu mechanizmu niezawodności, ale nie gwarantuje dostarczenia ani kolejności danych. Zastosowanie, w którym utrata pojedynczego pakietu jest akceptowalna, nie potrzebuje tej gwarancji i dlatego wykorzystuje prostotę protokołu. Zastosowanie wymagające pełnej integralności danych nie może z niego korzystać.
Porównanie w systemie Linux dla łącza 1 Gbit/s:iperf3 -c 10.0.0.10 -t 30 (TCP) zwykle daje około 940–950 Mbit/s, natomiast iperf3 -c 10.0.0.10 -u -b 950M -t 30 (UDP) daje około 950 Mbit/s przy zerowej stracie pakietów. Różnica kilku procent jest zgodna z oczekiwaniem, ale warto ją zmierzyć na własnym sprzęcie.
QoS i priorytetyzacja: w sieciach, w których przez to samo łącze przechodzą dane kopii plików i telefonia IP, warto skonfigurować oznaczanie DSCP oraz kolejki z ograniczeniem pasma. Dzięki temu telefon otrzyma wymagane 100 kbit/s nawet wtedy, gdy łącze jest w pełni zajęte przez transfer plików.
Slajd 17/40
ARP, ruch rozgłoszeniowy i tablica sąsiedztwa
Cel slajdu: Omówienie ruchu ARP i NDP, jego zasięgu w domenie rozgłoszeniowej oraz wpływu na przepustowość i bezpieczeństwo sieci.
Ruch, którego nie ma w raporcie przepustowości
Typ ruchu
Przykład
Wpływ
Rozgłoszeniowy (broadcast)
ARP, DHCP, IPv6 ND
dociera do wszystkich portów w domenie rozgłoszeniowej (VLAN)
Wiele adresów (multicast)
wideo, protokoły routingowe
obsługiwany przez tablicę grupową przełącznika
Nieosiągalny (unicast do bramy)
ruch do 192.0.2.0/24 (TEST-NET-1, RFC 5737)
router powiadamia o braku trasy komunikatem ICMP
Rozwiązywanie adresów (ARP, RFC 826): protokół tłumaczy adresy IPv4 na adresy MAC w obrębie domeny rozgłoszeniowej. Żądanie ARP jest ramką rozgłoszeniową wysyłaną na porty w obrębie VLAN, a odpowiedź jest ramką unicastową. Każdy host prowadzi własną tablicę ARP, zwaną tablicą sąsiedztwa; żywot wpisu wynosi od kilkudziesięciu sekund do kilku minut.
Zakres rozgłoszeniowy (broadcast domain): w obrębie jednego VLAN. Każdy VLAN połączony routerem stanowi osobną domenę rozgłoszeniową, a trasowanie między VLAN ogranicza rozpychanie ruchu rozgłoszeniowego.
Protokół ARP jest bardzo prosty i właśnie dlatego podatny na nadużycia. Żądanie ARP jest wysyłane jako ramka rozgłoszeniowa z adresem docelowym ff:ff:ff:ff:ff:ff, więc dociera do wszystkich portów w obrębie VLAN, niezależnie od tego, do jakiego adresu IP się odnosi. Przy dużej liczbie hostów w jednym VLAN, szczególnie przy dużej liczbie urządzeń wirtualnych, udział tego ruchu w obciążeniu domeny rozgłoszeniowej staje się zauważalny.
Żądanie ARP jest ramką rozgłoszeniową wysyłaną na porty w obrębie VLAN
Odpowiedź ARP jest ramką unicastową kierowaną do hosta, który zapytał
Żywot wpisu w tablicy sąsiedztwa wynosi od kilkudziesięciu sekund do kilku minut
Wpisy są niezawodne: arp -n w Linuksie lub show ip arp na przełączniku
Atak przez zatrucie tablicy ARP: jeżeli host przejmie wysyłanie odpowiedzi ARP dla adresu bramy domyślnej, cały ruch do tej bramy trafia do niego. W środowisku, w którym nie stosuje się uwierzytelniania 802.1X i DHCP snooping, atak jest wykonalny z dowolnego portu. Rozwiązaniami są statyczne wpisy ARP, kontrola dostępu na portach i nadzór nad tablicą sąsiedztwa.
Rozwiązywanie adresów w IPv6 (RFC 4861): protokół NDP (Neighbor Discovery Protocol) zastępuje ARP z użyciem ICMPv6. Zamiast odpytywania tablicy w całej domenie wysyłany jest komunikat solicytacyjny (Neighbor Solicitation) na konkretny adres multicast, a odpowiedź jest potwierdzana (Neighbor Advertisement). Dzięki temu ruch rozpoznawania nie jest rozsyłany do wszystkich hostów, co zmniejsza obciążenie domeny rozgłoszeniowej.
Standardowy mechanizm ochrony przed nieautoryzowanym wysyłaniem odpowiedzi ARP to uwierzytelnianie 802.1X w połączeniu z funkcją DHCP snooping. Funkcja ta pozwala przełącznikowi wiązać adresy IP przydzielone przez serwer DHCP z fizycznym portem, z którego przyszło żądanie, i odrzucać odpowiedzi ARP z innych portów.
Duże domeny rozgłoszeniowe mają jeszcze jedną cechę, o której warto pamiętać: rozmiar tablicy MAC przełącznika. Jeżeli w jednym VLAN pracuje więcej unikalnych adresów MAC, niż mieści tablica przełącznika, ramki będą rozsyłane jako nieznane (flooding), co dramatycznie zwiększa obciążenie każdego portu. Podzielenie sieci na mniejsze VLAN rozwiązuje ten problem.
Slajd 18/40
Jak mierzyć: od pomiaru 1 Gbit/s do metody etapowej
Cel slajdu: Przedstawienie procedury pomiaru przepustowości od ustalenia celu, przez wybór punktów i narzędzi, po interpretację wyniku i lokalizację wąskiego gardła.
Jak wygląda rzeczywisty pomiar
Określenie celu - co dokładnie mierzymy: przepustowość łączu, hosta czy aplikacji
Wybór punktów - dwa hosty lub urządzenia, najlepiej bez elementów pośrednich o nieznanej wydajności
Usunięcie innego ruchu - wyłączenie aktualizacji, synchronizacji chmury, kopii zapasowych i telemetrii
Wybranie protokołu i czasu - TCP lub UDP, zwykle 10–30 sekund, powtarzając pomiar kilka razy
Zapisanie warunków - rozmiar okna TCP, typ protokołu, rozmiar danych, modele obu hostów
Porównanie z teorią - wynik należy odnieść do przepustowości teoretycznej po uwzględnieniu narzutu
Wynik testu z artykułu źródłowego: dla łącza o przepustowości 1000 Mbit/s i przewidywanym maksimum 975 Mbit/s po uwzględnieniu narzutu ramek, pomiar narzędziem iperf3 dał wynik 941 Mbit/s. Różnica 34 Mbit/s odpowiada narzutowi potwierdzeń oraz rezerwie na przetwarzanie pakietów.
Przepustowość jest wielkością, którą trzeba zmierzyć w konkretnym miejscu sieci i w określonym przedziale czasu. Pomiar pomiędzy dwoma punktami końcowymi (z aplikacji do aplikacji) daje wynik o wiele bardziej wartościowy niż odczyt licznika interfejsu, bo obejmuje całą ścieżkę.
Artykuł źródłowy podaje wynik pomiaru narzędziem iperf3 równy 941 Mbit/s dla sieci o przepustowości teoretycznej 1000 Mbit/s i opisuje tę wartość jako typową. Wartość 941 Mbit/s odpowiada 94,1 procent przepustowości teoretycznej, co dla łącza lokalnego jest wynikiem bardzo dobrym.
Warto zwrócić uwagę na dokładność arytmetyczną: 1500 B danych IP na 1538 B na kablu daje maksimum 975 Mbit/s, a nie 1000 Mbit/s. Różnica 25 Mbit/s, czyli 2,5 procent, jest narzutem ramkowym i odstępem między ramkami, a nie stratą. Kolejne 34 Mbit/s różnicy między 975 a 941 wynika z potwierdzeń i z ograniczeń wydajnościowych sprzętu.
Zasada powtarzalności: pojedynczy pomiar nie jest wynikiem diagnostycznym. Powtórzenie pomiaru pięć razy i porównanie wyników pokazuje rozrzut, który często jest większy niż różnica między dwoma badanymi konfiguracjami. Warto raportować wartość najwyższą, średnią i najniższą.
Metoda etapowa: dla ścieżki PC → przełącznik → router → przełącznik → serwer wykonujemy testy PC do przełącznika, PC do routera, PC do przełącznika końcowego i PC do serwera. Odcinek, na którym wynik spada, zawiera wąskie gardło. Metoda jest czasochłonna, ale jednoznaczna. W środowiskach produkcyjnych, gdzie dostęp do wielu punktów jest ograniczony, stosuje się rozwiązania pośrednie: rozkład ruchu na interfejsach (sFlow, NetFlow), analizę opóźnień na poszczególnych odcinkach albo porównanie przepustowości na warstwie zarządzania (SNMP) z przepustowością na warstwie danych.
Niezależnie od metody, wynik pomiaru jest wartościowy tylko wtedy, gdy wiadomo, w jakich warunkach został uzyskany. Dlatego raport pomiaru powinien zawierać: datę i godzinę, topologię odcinka, modele urządzeń, wersje oprogramowania, protokół testowy, czas trwania, liczbę powtórzeń oraz opis ruchu współistniejącego.
Slajd 19/40
Jednostki: system SI a przedrostki binarne
Cel slajdu: Omówienie różnicy między przedrostkami dziesiętnymi a binarnymi, jej wpływu na interpretację pomiarów oraz przeliczeń między bitami a bajtami.
Bit, bajt i potęgi dwójki
Przedrostek SI
Wartość w bajtach
Przedrostek IEC
Wartość w bajtach
Różnica
megabajt (MB)
1 000 000
mebibajt (MiB)
1 048 576
4,86 %
gigabajt (GB)
1 000 000 000
gibibajt (GiB)
1 073 741 824
7,37 %
terabajt (TB)
1 000 000 000 000
tebibajt (TiB)
1 099 511 627 776
9,95 %
Różnica między 1 GB a 1 GiB wynosi 7,37 procent. Plik o rozmiarze 1 GB, czyli 109 bajtów, przesłany w czasie 10 sekund wymaga średnio 100 MB/s, czyli 800 Mbit/s - a nie 1000 Mbit/s. Plik o rozmiarze 1 GiB, czyli 1 073 741 824 bajty, przy przepustowości 1 Gbit/s przesyła się w czasie około 8,59 sekundy, a plik 1 GB - w 8 sekund.
Nieporozumienia w interpretacji pomiarów wynikają w dużej mierze z mieszania dwóch systemów jednostek. W telekomunikacji prędkość transmisji podaje się w bitach na sekundę z przedrostkami dziesiętnymi (system SI), natomiast systemy operacyjne podają objętość danych w bajtach z przedrostkami binarnymi.
System SI definiuje przedrostki dziesiętne, w których kilo oznacza tysiąc, mega oznacza milion, a giga oznacza miliard. Zgodnie z tym zapisem 1 Gbit/s to miliard bitów na sekundę, czyli 125 000 000 bajtów na sekundę, a w zapisie binarnym około 119,2 MiB/s. Analogicznie 100 Mbit/s to 12 500 000 B/s, czyli około 11,9 MiB/s.
Standardy IEC 80000-13 oraz ISO/IEC 80000-13 wprowadzają przedrostki binarne, aby uniknąć niejednoznaczności: kibibajt (KiB) to 1024 bajty, mebibajt (MiB) to 1 048 576 bajtów, a gibibajt (GiB) to 1 073 741 824 bajtów. Wartość 1 TiB/s odpowiada 8796,093022 Gbit/s (czyli 8,796093022 Tbit/s), a 1 GiB/s odpowiada 8,589934592 Gbit/s. Różnica rośnie wraz z rzędem wielkości.
Ta rozbieżność jest w pełni przewidywalna i nie stanowi błędu po żadnej stronie. Błąd popełnia się dopiero wtedy, gdy porównuje się dwie wielkości podane w różnych systemach jednostek, na przykład prędkość łącza podaną w Mbit/s z prędkością zapisu na dysk podaną w MB/s zgodnie z konwencją systemu plików.
Przykład z artykułu źródłowego: abonament na łącze światłowodowe to 450/50 Mbit/s (450 Mbit/s na pobieranie, 50 Mbit/s na wysyłanie). Różnica między oczekiwaniem a pomiarem częściowo wynika właśnie z jednostek - użytkownik porównuje prędkość podaną w bitach na sekundę z prędkością zapisywania pliku podaną w bajtach na sekundę.
W systemach Linux warto rozróżnić dwie warstwy. Jednostki zapisane przez jądro (na przykład w free -h) są zazwyczaj binarne, natomiast jednostki użyte przez aplikacje do raportowania prędkości sieciowej bywają różne zależnie od implementacji. Narzędzia takie jak nload lub vnstat pozwalają jawnie wybrać sposób raportowania, co eliminuje nieporozumienia.
Zapis jednostek w protokołach i systemach: zgodnie z zaleceniami IEC 80000-13 i SI, jednostki z przedrostkami binarnymi oznacza się wielką literą (KiB, MiB, GiB), a dziesiętne - małą literą przy skrócie jednostki podstawowej (kB, MB, GB). W polskim piśmie technicznym często stosuje się zapis MB/s dla bajtów dziesiętnych i MiB/s dla binarnych, co jest zgodne z zaleceniami, ale wymaga konsekwencji.
Slajd 20/40
Monitorowanie in-band
Cel slajdu: Wyjaśnienie zasad działania monitorowania w paśmie transmisji danych, wskazanie zalet i wad oraz opisanie zabezpieczenia w postaci wydzielonego VLAN zarządzania.
Monitorowanie w paśmie transmisji danych (in-band)
Monitorowanie in-band polega na zbieraniu telemetrii tą samą ścieżką, którą przesyłany jest ruch biznesowy. Agenci SNMP, systemy wykrywania przepływów oraz sondy NetFlow działają w obrębie tej samej sieci, którą monitorują.
Zalety
Wady
jedna infrastruktura, brak osobnego okablowania
awaria łączu administracyjnego unieruchamia monitoring właśnie wtedy, gdy jest potrzebny
pełny obraz ruchu: wszystkie VLAN i podsieci
telemetria sama generuje ruch i obciąża łącze, które monitoruje
proste skalowanie - nowe urządzenie pojawia się automatycznie
przeciążenie łącza może spowodować kaskadowe pogorszenie
niższy koszt początkowy
możliwość ataku na ścieżkę zarządzania
VLAN zarządzania (management VLAN): wydzielony VLAN przeznaczony wyłącznie do ruchu zarządzania. Dzięki temu telemetria dociera niezależnie od zatoru w ruchu biznesowym. Warto również ograniczyć przepustowość tego VLAN, aby źle skonfigurowana telemetria nie wyparła ruchu zarządzania.
Monitorowanie w paśmie jest rozwiązaniem naturalnym: telemetria dociera tymi samymi urządzeniami, które przesyłają ruch biznesowy, więc automatycznie obejmuje całą sieć. Koszt początkowy jest najniższy, a wdrożenie nie wymaga okablowania ani dodatkowego sprzętu.
Problem pojawia się w sytuacji, gdy sieć jest przeciążona lub uszkodzona. Telemetria wtedy potrzebuje tej samej przepustowości, której brakuje, i tej samej drożności ścieżki, która właśnie zawiodła. System monitoringu staje się w tym momencie bezużyteczny, czyli traci swoją jedyną wartość: możliwość szybkiego rozpoznania problemu.
Typowy błąd do unikania: umieszczenie ruchu SNMP i telemetrii w tym samym VLAN co ruch krytyczny, bez ograniczenia przepustowości. Przy pełnym obciążeniu łącza agenty SNMP zaczynają tracić odpowiedzi, system raportuje awarię, a administrator nie ma dostępu do danych potrzebnych do diagnozy.
W praktyce rozwiązanie polega na wydzieleniu ruchu zarządzania do osobnego VLAN, a następnie na ograniczeniu jego przepustowości. Dzięki temu telemetria nigdy nie zajmie więcej niż zadany udział pasma, a pozostała przepustowość pozostaje dostępna dla ruchu biznesowego. Dodatkowo warto skonfigurować priorytetyzację, aby pakiety zarządzania były obsługiwane przed ruchem o niższym priorytecie.
Konfiguracja w RouterOS - ograniczenie pasma dla VLAN zarządzania: /interface vlan add name=vlan99-mgmt vlan-id=99 interface=ether1 /interface list add name=mgmt /queue simple add name=mgmt-limit target=vlan99-mgmt max-limit=20M/20M
Dzięki temu telemetria zajmuje maksymalnie 20 Mbit/s, a pozostała przepustowość pozostaje dostępna dla ruchu biznesowego.
Ważne jest również zabezpieczenie ścieżki zarządzania. Jeżeli agenty SNMP pracują w tej samej sieci VLAN co stanowiska robocze użytkowników, atakujący może przechwycić lub zmodyfikować telemetrię. Użycie SNMPv3 z uwierzytelnianiem i szyfrowaniem (USM) oraz umieszczenie zarządzania w osobnej domenie rozgłoszeniowej ogranicza to ryzyko.
Rekomendacja praktyczna: jeżeli to możliwe, telemetria powinna być zbierana w paśmie zarządzania (out-of-band). Jeżeli nie ma takiej możliwości, należy przynajmniej wydzielić VLAN zarządzania i ograniczyć jego przepustowość, aby uniknąć wzajemnego zakłócania się monitoringu i ruchu biznesowego.
Slajd 21/40
Monitorowanie out-of-band
Cel slajdu: Opisanie monitorowania poza pasmem transmisji, stosowanych rozwiązań sprzętowych oraz porównanie kosztu pełnego wdrożenia z rozwiązaniem hybrydowym.
Monitorowanie poza pasmem transmisji (out-of-band)
Monitorowanie out-of-band polega na prowadzeniu osobnej ścieżki zarządzania, fizycznie i logicznie niezależnej od ruchu biznesowego. Dzięki temu telemetria dociera do systemu monitoringu nawet wtedy, gdy sieć jest całkowicie przeciążona lub uszkodzona.
Element
Zastosowanie
Koszt
Przełącznik z portami out-of-band
dedykowany port zarządzania, często z odrębnym procesorem i zasilaniem
wyższy w urządzeniach enterprise
Router z konsolą szeregową
łącze RS-232 z lokalnego terminala, dostępne zawsze
niski
Terminal serwisowy
wieloportowy dostęp do konsol urządzeń w całej szafie
średni
Dedykowany uplink zarządzania
osobny port fizyczny i osobny VLAN prowadzące do NMS
niski
Zasada niezawodności: jeżeli system monitoringu ma działać w sytuacji kryzysowej, jego ścieżka nie może zależeć od stanu, który właśnie diagnozuje. Osobna ścieżka out-of-band jest jedynym rozwiązaniem spełniającym ten warunek w pełni.
Monitorowanie poza pasmem jest jedynym sposobem, aby mieć pewność, że telemetria dotrze do systemu monitoringu w sytuacji, w której sieć biznesowa jest przeciążona lub uszkodzona. Koszt tego rozwiązania jest wyraźnie wyższy, ponieważ wymaga podwójnego okablowania, osobnej adresacji i utrzymywania dodatkowego sprzętu.
W praktyce administratorzy stosują rozwiązanie hybrydowe: urządzenia krytyczne otrzymują pełne wyposażenie out-of-band z portem konsolowym i osobnym portem zarządzania, natomiast pozostałe urządzenia są monitorowane w paśmie, ale w wydzielonym VLAN zarządzania z ograniczoną przepustowością.
Rozwiązanie hybrydowe w praktyce: router brzegowy ma dodatkowy port Ethernet wyłączony w ruchu biznesowym, podłączony do osobnego przełącznika zarządzania. Przełącznik ten jest połączony z NMS. Pozostałe urządzenia są monitorowane in-band, ale przez VLAN zarządzania o ograniczonej przepustowości. Dzięki temu dostęp do urządzeń krytycznych pozostaje dostępny, a koszt wdrożenia jest znacznie niższy.
Konsola szeregowa pozostaje najbardziej niezawodnym kanałem dostępu. Nie zależy od konfiguracji sieci, od działania stosu TCP/IP ani od systemu operacyjnego urządzenia. Jej wadą jest prędkość transmisji, ale w sytuacji awaryjnej nie ma to znaczenia - liczy się możliwość wydania polecenia i odzyskania dostępu.
Ważnym szczegółem organizacyjnym jest zapewnienie dostępu do konsol wszystkich urządzeń, również tych, które nie mają dedykowanego portu zarządzania. Konsola serwisowa (console server) obsługująca wiele portów jest w tym celu standardowym wyposażeniem szaf serwerowych i szaf telekomunikacyjnych.
Menedżer połączenia (out-of-band manager): urządzenie zintegrowane z przełącznikiem, udostępniające port konsolowy oraz porty zarządzania ethernetowego w obudowie odrębnej od portów zdatnych. Dostęp do niego jest możliwy, gdy przełącznik jest wyłączony lub uszkodzony, ale wymaga zasilania i łączności z konsolą.
Uwaga o kosztach: pełne wdrożenie out-of-band wymaga okablowania każdego urządzenia podwójnie i utrzymywania osobnych adresów zarządzania. W instalacjach dużych jest to kosztowne, dlatego często stosuje się rozwiązanie mieszane - krytyczne urządzenia (rdzeń sieci, zapory graniczne, systemy storage) mają pełny dostęp out-of-band, a pozostałe korzystają z monitorowania in-band w wydzielonym VLAN zarządzania.
Slajd 22/40
SNMP jako źródło danych o przepustowości
Cel slajdu: Poznanie modelu operacji protokołu SNMP, struktury drzewa MIB oraz różnic w bezpieczeństwie między wersjami SNMPv1, SNMPv2c i SNMPv3.
Model operacji
Get - odczyt pojedynczego obiektu o podanym identyfikatorze OID
GetNext - odczyt kolejnej zmiennej, używany do przeglądania drzewa MIB
GetBulk - odczyt wielu zmiennych w jednym żądaniu, znacznie szybszy od serii GetNext (RFC 1905)
Set - zapis wartości, na przykład zmiana nazwy interfejsu
Trap i Inform - niepoliczone powiadomienie od agenta do stacji zarządzającej
MIB (Management Information Base): hierarchiczna struktura obiektów, w której każdy obiekt ma niepowtarzalny identyfikator OID (Object Identifier), zapisywany jako ciąg liczb rozdzielonych kropkami, na przykład 1.3.6.1.2.1.2.2.1.10.
Wersja
Uwierzytelnianie
Szyfrowanie
Ocena
SNMPv1
wspólna fraza (community) w postaci jawnej
brak
przestarzała, nie należy stosować
SNMPv2c
wspólna fraza (community) w postaci jawnej
brak
bardzo rozpowszechniona, ale niezabezpieczona
SNMPv3
USM: HMAC-MD5, HMAC-SHA-1, SHA-2 (SHA-256/512)
DES, AES-128, AES-192, AES-256
zalecana w każdych nowych wdrożeniach (authPriv)
Protokół SNMP jest opisany w dokumentach RFC 1157 (wersja 1) oraz RFC 3411 do RFC 3418 (wersje 2c i 3). Umożliwia agentowi urządzenia udostępnienie liczników i wartości, a stacji zarządzającej ich cykliczne odpytywanie. Agent działa na urządzeniu sieciowym i utrzymuje hierarchię obiektów opisanych w bazie MIB. Stacja zarządzająca odpytuje agenta cyklicznie, najczęściej co 30 lub 60 sekund, i na tej podstawie buduje wykresy oraz alarmy.
Uwaga o kolejności operacji:GetNext zawsze zwraca zmienną o identyfikatorze następnym w porządku leksykograficznym. Dlatego pobieranie dużej tabeli (na przykład wszystkich liczników na 200 interfejsach) metodą GetNext jest bardzo wolne. W praktyce używa się GetBulk, który pozwala pobrać wiele rekordów jednym żądaniem. Przy dużej liczbie urządzeń i interfejsów różnica w czasie pobierania danych jest wielokrotna, a GetBulk jest obsługiwany przez wszystkie współczesne implementacje.
Kwestią bezpieczeństwa nie należy bagatelizować. Wersje SNMPv1 i SNMPv2c przesyłają wspólną frazę (community) w postaci jawnej, co oznacza, że każdy, kto ma dostęp do sieci, może odczytać ją prostym zapytaniem. W praktyce napastnicy wykorzystują tę własność do odczytu tablicy adresów MAC i tablicy routingu, co ułatwia rozpoznanie topologii przed atakiem.
SNMPv3 wprowadza model bezpieczeństwa oparty na mechanizmie USM (User-based Security Model), który zapewnia uwierzytelnianie i szyfrowanie każdej komunikacji osobno dla każdego użytkownika. Wdrożenie jest bardziej pracochłonne, ponieważ wymaga wygenerowania i bezpiecznego rozdzielenia kluczy, ale jest jedynym właściwym rozwiązaniem w nowych instalacjach.
Warto wiedzieć, że nowoczesne systemy NMS, takie jak LibreNMS, obsługują wszystkie trzy wersje, ale domyślnie korzystają z SNMPv3, jeśli agent na to pozwala.
Odczyt licznika bajtów wejściowych interfejsu w systemie Linux: snmpget -v2c -c public 10.0.0.1 1.3.6.1.2.1.2.2.1.10.1
Ostatnia część OID (tutaj .1) to indeks interfejsu. Wartość zwrócona przez urządzenie jest liczbą całkowitą typu Counter32, czyli liczbą bajtów od ostatniego restartu interfejsu.
Slajd 23/40
Liczniki bajtów ifInOctets i ifHCInOctets
Cel slajdu: Poznanie liczników bajtów wejściowych i wyjściowych w bazie MIB, zrozumienie różnicy między licznikami 32-bitowymi i 64-bitowymi oraz zasady przeliczania ich na przepustowość.
Najważniejsze liczniki: bajty w wejściu i wyjściu
Przepustowość interfejsu oblicza się na podstawie przyrostu licznika bajtów pomiędzy dwoma odczytami, podzielonego przez czas między tymi odczytami. Liczniki 32-bitowe należą do tabeli ifTable (RFC 1213 / RFC 2863), natomiast liczniki 64-bitowe (High Capacity) do rozszerzonej tabeli ifXTable (RFC 2863).
Nazwa
OID
Typ
Znaczenie
ifInOctets
1.3.6.1.2.1.2.2.1.10
Counter32
łączna liczba bajtów odebranych na interfejsie
ifOutOctets
1.3.6.1.2.1.2.2.1.16
Counter32
łączna liczba bajtów przesłanych, z wliczeniem ramek rozgłoszeniowych
ifHCInOctets
1.3.6.1.2.1.31.1.1.1.6
Counter64
jak ifInOctets, ale z 64-bitowym licznikiem
ifHCOutOctets
1.3.6.1.2.1.31.1.1.1.10
Counter64
jak ifOutOctets, ale z 64-bitowym licznikiem
ifHighSpeed
1.3.6.1.2.1.31.1.1.1.15
Gauge32
prędkość w Mbit/s
Problem 32-bitowego licznika: wartość typu Counter32 mieści się w zakresie od 0 do 4 294 967 295. Przy przepustowości 1 Gbit/s i pełnym obciążeniu licznik zawija się co około 34,4 sekundy. Dlatego do wyliczania przepustowości na szybkich łączach należy używać wariantów ifHCInOctets i ifHCOutOctets.
Liczniki bajtów są licznikami monotonicznymi, co oznacza, że ich wartość jedynie rośnie aż do momentu restartu urządzenia. Nie uwzględniają preambuły, znacznika SFD ani odstępu między ramkami, ale obejmują wszystko, co mieści się w ramce, wraz z nagłówkami i sumą kontrolną. Licznik ifOutOctets zawiera również ramki rozgłoszeniowe generowane przez interfejs.
Ponieważ liczniki są wartościami skumulowanymi od ostatniego restartu urządzenia, ich przyrost pomiędzy odczytami należy zapamiętać wraz z znacznikiem czasu. Systemy monitorujące wykonują dwa odczyty w odstępie kilkudziesięciu sekund i różnicę dzielą przez faktyczny upływ czasu, nie przez wartość nominalną interwału.
Slajd 24/40
Wyliczanie przepustowości z liczników SNMP
Cel slajdu: Zapoznanie się ze wzorem na przepustowość, obsługą zawijania licznika 32-bitowego oraz praktycznym przykładem obliczeń na podstawie dwóch odczytów SNMP.
Wzór na przepustowość
Wzór podstawowy: przepustowość [bit/s] = (B₂ − B₁) × 8 ÷ (T₂ − T₁)
gdzie B₁ i B₂ to wartości licznika bajtów w dwóch odczytach, a T₁ i T₂ to znaczniki czasu odczytów. W praktyce różnicę czasu oblicza się ze znaczników sysUpTime (OID 1.3.6.1.2.1.1.3.0), które zwracają liczbę setnych sekundy od restartu urządzenia.
Uwzględnienie zawijania licznika 32-bitowego
Jeżeli drugi odczyt jest mniejszy niż pierwszy, oznacza to, że licznik się zawijał. Licznik 32-bitowy liczy modulo 2³², dlatego do różnicy należy dodać wartość 2³² = 4 294 967 296. Uwaga: liczba 4 294 967 295 to największa wartość, jaką licznik może przyjąć, a nie modularna podstawa - używanie jej daje wynik niższy o jeden bajt.
Wzór na przepustowość jest prosty, ale jego poprawne zastosowanie wymaga dwóch warunków: odczyty muszą dotyczyć tego samego interfejsu, a między nimi nie może nastąpić restart urządzenia, który wyzerowałby licznik.
Drugi warunek warto egzekwować w praktyce. Licznik sysUpTime pozwala wykryć restart: jeżeli jego wartość przy drugim odczycie jest mniejsza niż przy pierwszym, urządzenie uruchomiło się ponownie. W takiej sytuacji wynik jest bezwartościowy i należy go odrzucić, zamiast raportować fałszywie wysoką przepustowość.
Przykład z zawijaniem licznika 32-bitowego:
Odczyt 1: 2 000 000 000, Odczyt 2: 1 455 032 704, odstęp 30 s
Różnica z korektą: 1 455 032 704 + 4 294 967 296 − 2 000 000 000 = 3 750 000 000 B
Przy czasie 30 s daje to 1 000 000 000 bit/s, czyli 1000 Mbit/s
W praktyce problem zawijania najlepiej rozwiązać, korzystając z liczników 64-bitowych, które są dostępne w każdym urządzeniu spełniającym RFC 2863, czyli praktycznie w każdym urządzeniu produkowanym po 2005 roku.
Ustawienia systemu monitorowania: interwału odpytywania nie można „wydłużyć, żeby uniknąć zawijania” - dłuższa przerwa oznacza większą liczbę zawinięć, których nie da się wykryć ani policzyć. Dla 1 Gbit/s maksymalny bezpieczny interwał to około 30 sekund, czyli mniej niż jeden okres zawijania (34,4 s), i to tylko przy założeniu, że nie nastąpiło więcej niż jedno zawinięcie. W praktyce jedynym poprawnym rozwiązaniem jest stosowanie liczników 64-bitowych ifHCInOctets i ifHCOutOctets. Większość systemów NMS (Zabbix, LibreNMS, Cacti, Prometheus) ma tę obsługę wbudowaną - wystarczy upewnić się, że wybrano właściwy typ licznika.
Częstotliwość odpytywania: zbyt rzadkie odpytywanie daje wyniki uśrednione, które mogą nie pokazać krótkich szczytów ruchu. Zbyt częste odpytywanie obciąża urządzenia i sieć zarządzania. Typowy kompromis to 30 do 60 sekund dla łączy LAN, a 5 minut dla łączy WAN o dużej przepustowości.
Sprawdzenie poprawności pomiaru w systemie Linux:snmpget -v2c -c public 10.0.0.1 1.3.6.1.2.1.1.3.0 zwraca czas pracy urządzenia w setnych sekundy. Różnica między dwoma odczytami dzielona przez 100 daje liczbę sekund, o ile odczyty wykonano w krótkim odstępie, w którym nie nastąpił restart urządzenia.
Slajd 25/40
Wykorzystanie łącza i progi alarmowe
Cel slajdu: Obliczanie wykorzystania łącza na podstawie pomiaru i przepustowości nominalnej oraz omówienie progów alarmowych stosowanych w praktyce.
Wykorzystanie łącza i progi alarmowe
Wykorzystanie łącza (utilization): wykorzystanie [%] = przepustowość [Mbit/s] ÷ ifHighSpeed [Mbit/s] × 100
Pole ifHighSpeed (OID 1.3.6.1.2.1.31.1.1.1.15) podaje prędkość w Mbit/s, czyli w milionach bitów na sekundę. Dla łącza 1 Gbit/s zwraca więc wartość 1000. Ponieważ wzór przepustowości daje wynik w bit/s, trzeba najpierw podzielić go przez milion. Poprawny zapis z pominięciem przeliczenia to przepustowość [bit/s] ÷ (ifHighSpeed × 10⁶) × 100.
natychmiastowa reakcja, utrata pakietów i wzrost opóźnień
Przepustowość sama w sobie niewiele mówi. Informacją jest dopiero wykorzystanie łącza, czyli stosunek zmierzonej przepustowości do przepustowości nominalnej portu.
Progi dla kierunków o różnym charakterze: dla łącza dostępowego do internetu wartość 85 procent oznacza realne zagrożenie, ponieważ ruch generowany przez użytkowników nie jest ograniczony. Dla łącza WAN backbone między lokalizacjami 90 procent może być wartością normalną, jeśli nie występują tam gwałtowne skoki ruchu. Dla łącza backupowego progi powinny być ustawione znacznie niżej, ponieważ jego zadaniem jest przejęcie ruchu w sytuacji awaryjnej.
Ponadto progi należy ustalać osobno dla ruchu przychodzącego i wychodzącego. W sieci asymetrycznej typowej dla dostępu WAN wyjściowe obciążenie bywa znacznie wyższe niż przychodzące, ponieważ to użytkownik pobiera dane, a dostawca treści znajduje się w sieci szkieletowej.
Wartości progów podane w tabeli mają charakter orientacyjny. W praktyce warto je wyznaczyć na podstawie kilku tygodni obserwacji, aby uniknąć alarmów wynikających z typowych dla danej organizacji godzin szczytu.
Slajd 26/40
Liczniki błędów i odrzuceń w MIB
Cel slajdu: Rozróżnienie liczników błędów od liczników odrzuceń, poznanie ich identyfikatorów OID oraz zastosowanie w diagnostyce problemów fizycznych i wydajnościowych.
Przepustowość pokazuje, ile danych przeszło. Liczniki błędów pokazują, ile danych nie przeszło poprawnie. Ten drugi sygnał jest zwykle cenniejszy diagnostycznie, ponieważ wskazuje konkretną przyczynę.
Licznik
OID
Co oznacza
Przyczyna
ifInErrors
1.3.6.1.2.1.2.2.1.14
pakiet o błędnym kodzie sterującym lub długości niezgodnej z protokołem
praca w trybie half-duplex, kolizje
ifInDiscards
1.3.6.1.2.1.2.2.1.13
pakiet odrzucony z powodu braku zasobów (bufor, pamięć)
przeciążenie urządzenia, zbyt wiele tablic
ifOutDiscards
1.3.6.1.2.1.2.2.1.19
pakiet odrzucony przed przesłaniem (kolejka pełna)
wąskie gardło na porcie wyjściowym
ifOutErrors
1.3.6.1.2.1.2.2.1.20
pakiet nie mógł zostać przesłany (błąd lokalny)
kolizje, błąd sprzętowy
dot3StatsFCSErrors
1.3.6.1.2.1.10.7.2.1.3
błąd sumy kontrolnej CRC-32 (uszkodzenie na drodze)
uszkodzony kabel, złącze, zakłócenia
dot3StatsAlignmentErrors
1.3.6.1.2.1.10.7.2.1.2
błąd wyrównania (liczba bitów nie jest całkowitą wielokrotnością ośmiu)
uszkodzony kabel, złącze, nadajnik
Reguła interpretacji: jeżeli rosną liczniki błędów - problem jest fizyczny (kabel, złącze, optyka, zakłócenia). Jeżeli rosną liczniki odrzuceń - problem jest konfiguracyjny lub związany z wydajnością (przeciążenie, za mało pamięci, za dużo tablic). Te dwie grupy wymagają zupełnie różnych napraw, dlatego rozróżnienie jest kluczowe.
Wartości liczników dot3Stats są dostępne tylko na portach, które raportują statystyki warstwy 2, czyli zwykle na portach fizycznych przełączników. Porty wirtualne, mosty i tunele zazwyczaj nie udostępniają tych obiektów, dlatego dla nich należy korzystać z grupy ifInErrors i ifOutErrors.
Liczniki błędów nigdy nie zerują się same z siebie, dlatego warto zapisać ich wartość początkową w chwili wdrożenia systemu monitorowania. Dopiero przyrost względem tej wartości ma znaczenie diagnostyczne; bezwzględna suma pozostawiona od ostatniego restartu urządzenia może wynosić tysiące bez żadnego związku z bieżącym stanem łącza.
Jeżeli licznik dot3StatsFCSErrors rośnie, ale dot3StatsAlignmentErrors pozostaje na poziomie zerowym, problem leży w przesyłanych danych, a nie w synchronizacji zegara. Odwrotna sytuacja sugeruje problem z generatorem zegara lub ustawieniami portu.
Slajd 27/40
Ciągłość pomiaru i zerowanie liczników
Cel slajdu: Omówienie przyczyn nieprawidłowych odczytów liczników, wyjaśnienie pola ifCounterDiscontinuityTime i przedstawienie poprawnej logiki obliczania przepustowości.
Gdy licznik nie zgadza się z rzeczywistością
Objaw
Przyczyna
Rozwiązanie
przepustowość wyższa niż przepustowość nominalna portu
podwojenie licznika (błąd w agencie SNMP) albo sumowanie kilku interfejsów
sprawdzić konfigurację szablonu w systemie NMS
ujemna przepustowość
licznik 32-bitowy zawinął się i nie zastosowano korekty
użyć liczników 64-bitowych lub dodać korektę 2³²
przepustowość zerowa mimo ruchu
odpytywanie różnych interfejsów (błąd mapowania indeksu)
sprawdzić, czy indeks ifIndex jest zawsze taki sam
wartości oscylujące wokół zera
zbyt krótki interwał odpytywania względem zawijania licznika
wydłużyć interwał lub użyć 64-bitowych liczników
wartości rosnące mimo wyłączenia portu
licznik nie jest zerowany przy zmianie stanu administracyjnego
porównać z ifCounterDiscontinuityTime
ifCounterDiscontinuityTime (OID 1.3.6.1.2.1.31.1.1.1.19): znacznik czasu (TimeStamp), w którym licznik interfejsu został zresetowany lub przerwał poprawnie zliczać. Jest to pole zdefiniowane w RFC 2863 właśnie po to, aby systemy monitorowania mogły wykryć przerwanie ciągłości pomiaru.
Licznik SNMP jest licznikiem monotonicznym, który resetuje się przy restarcie urządzenia, a w niektórych implementacjach również przy zmianie konfiguracji lub przy restarcie modułu. Zdarza się, że zgłoszona prędkość jest nierealistyczna albo w ogóle ujemna.
Prawidłowa logika obliczania przepustowości wymaga trzech kroków. Po pierwsze, system monitorujący musi rozpoznać, czy pomiędzy dwoma odczytami nastąpił reset licznika, korzystając z pola ifCounterDiscontinuityTime. Po drugie, przy liczniku 32-bitowym trzeba sprawdzić, czy przeliczenie nastąpiło między odczytami, i w razie potrzeby dodać wartość 2³² do różnicy. Po trzecie, różnicę dzieli się przez faktyczny czas, jaki upłynął między odczytami, wyrażony w sekundach.
Dopiero po tych trzech krokach wynik można porównać z przepustowością nominalną portu. Jeżeli wynik przekracza tę wartość, przyczyną jest najczęściej błąd mapowania indeksu interfejsu w systemie monitorowania, a nie niedokładność samego odczytu.
Warto pamiętać, że pole ifCounterDiscontinuityTime wskazuje czas ostatniego zerowania licznika, a nie czas ostatniego odczytu. Jeżeli wartość tego pola jest późniejsza niż znacznik czasu pierwszego odczytu, wynik z tego okresu należy odrzucić jako niepoprawny.
Slajd 28/40
Próbkowanie przepływu sFlow
Cel slajdu: Poznanie mechanizmu próbkowania pakietów i liczników w technologii sFlow oraz porównanie jej z NetFlow pod względem dokładności i obciążenia.
Próbkowanie przepływu: sFlow
Technologia sFlow (Sampled Flow, opisana pierwotnie w RFC 3176 dla wersji v2, a obecnie w specyfikacji sFlow.org dla wersji v5) łączy dwie techniki: próbkowanie pakietów na poziomie warstwy sprzętowej oraz próbkowanie liczników interfejsów w regularnych odstępach czasu.
Cecha
sFlow
NetFlow v9 / IPFIX
Próbkowanie
1 pakiet na N (np. 512)
agregat per przepływ
Dane przesyłane
nagłówek pakietu (20–64 B)
liczba pakietów i bajtów
Latencja danych
1 s
15–30 s
Obciążenie urządzenia
bardzo małe
umiarkowane
Transport
UDP, port 6343
UDP, port 2055 (NetFlow) lub 4739 (IPFIX)
Ograniczenie metody: sFlow nie odtwarza treści pakietów - przesyła jedynie nagłówek. Nie można więc rozpoznać, co dokładnie jest przesyłane, na przykład zawartości żądania HTTP. Do pełnej analizy potrzebne jest przechwytywanie pakietów.
Agent działa na urządzeniu, a kolektor odbiera i analizuje próbki. Próbkowanie pakietów odbywa się w sprzęcie, zanim urządzenie wykona jakiekolwiek przetwarzanie. Dzięki temu koszt jest minimalny i nie zależy od obciążenia procesora. Losowy wybór jednego pakietu na 512 pozwala oszacować rozkład ruchu z dokładnością wystarczającą do identyfikacji dominujących przepływów.
Próbkowanie pakietów: urządzenie losuje jeden pakiet na N (domyślnie 512) i kopiuje jego nagłówek (20 do 64 B) do pamięci podręcznej. Co sekundę wysyła całą paczkę próbek do kolektora przez UDP na porcie 6343.
Liczniki interfejsów: niezależnie od próbek, raz na około sekundę urządzenie wysyła pełne wartości liczników IF-MIB (pakietów, bajtów, odrzuceń, błędów).
Próbkowanie (sampling): polega na analizie podzbioru zdarzeń w celu oszacowania cech całego zbioru. Im większa liczba próbek, tym dokładniejsze oszacowanie, ale także większe obciążenie urządzenia, sieci i systemu analitycznego. Wartość sampling-rate określa, co który (N) pakiet jest rejestrowany.
Liczniki interfejsów są przesyłane niezależnie i w komplecie, dzięki czemu dane o przepustowości są dokładne, a nie oszacowane. To ważne rozróżnienie: sFlow daje dokładne dane o wolumenie, ale przybliżone dane o strukturze ruchu. Bieżącą wersję sFlow v5 definiuje specyfikacja konsorcjum sFlow.org (RFC 3176 dokumentował historyczną wersję sFlow v2).
Zalety w porównaniu z NetFlow
znacznie mniejsze obciążenie procesora urządzenia (sprzętowa tablica próbek)
reakcja na zmiany w ciągu sekundy, NetFlow odczytuje liczniki co kilka minut
działa na przełącznikach, routerach, serwerach i w środowiskach wirtualnych jednocześnie
obsługuje rozróżnianie VLAN, interfejsów i typów ruchu
Wybór technologii zależy od potrzeb. Jeżeli wystarczy rozpoznanie głównych źródeł i odbiorców ruchu oraz wykrywanie anomalii, sFlow jest zwykle prostszy w wdrożeniu. Jeżeli potrzebna jest dokładna księgowość przepływów z podziałem na aplikacje, NetFlow lub IPFIX pozostają właściwszym wyborem, mimo większego obciążenia.
Konfiguracja sFlow w systemie Linux (demon hsflowd):
W pliku /etc/hsflowd.conf definiuje się parametry kolektora i próbkowania: sflow { collector { ip=10.0.0.50 udpport=6343 } sampling=512 polling=20 } Uwaga: RouterOS nie obsługuje sFlow — na routerach MikroTik do analizy przepływów służy Traffic Flow (zgodny z NetFlow/IPFIX).
Slajd 29/40
Analiza źródeł ruchu i plan wdrożenia monitorowania
Cel slajdu: Poznanie hierarchii analizy ruchu od interfejsu po aplikację, typowych źródeł obciążenia oraz pięciostopniowego planu wdrożenia monitorowania przepływu.
Hierarchia analizy ruchu
Poziom interfejsu - który port jest zajęty; pierwszy krok w każdej analizie
Poziom hostów - który host odbiera i nadaje najwięcej danych
Poziom sesji - jaka usługa i jaki port docelowy
Poziom aplikacji - rozpoznanie protokołu z sygnatur i cech zachowania (DPI)
Czasy na łącze (talkers and listeners): określenia te oznaczają hosty, które najwięcej wysyłają i odbierają. Klasyczna rekomendacja to wyszukanie pierwszych dziesięciu rozmawiających w obu kierunkach.
Krok
Zakres
Cel
1
liczniki SNMP na interfejsach (60 s)
bazowa mapa wykorzystania i wykrywanie awarii
2
liczniki błędów i odrzuceń (60 s)
wykrywanie problemów fizycznych i przeciążeń
3
sFlow na przełącznikach brzegowych
rozpoznanie rozmawiających i słuchających
4
NetFlow na routerach brzegowych
rozliczenia i analiza per przepływ
5
przechwytywanie pakietów punktowo
analiza treści w konkretnych sytuacjach
Przepustowość na pojedynczym porcie mówi, że ruch jest, ale nie mówi, co go powoduje. Aby to ustalić, potrzebna jest agregacja na poziomie sesji lub hostów. Narzędzia NetFlow, sFlow z analizą topologii oraz statystyki na ścieżce (conntrack) dają takie zestawienie.
Analiza ruchu powinna przebiegać od ogółu do szczegółu. Pierwszym krokiem jest zawsze ustalenie, który interfejs jest obciążony. Dopiero potem warto pytać, co ten ruch powoduje. Pomijanie tego kroku prowadzi do sytuacji, w której administrator analizuje zawartość pakietów z hosta, który niczego nie wysyła.
Kolejne poziomy szczegółowości wymagają różnych narzędzi. Poziom interfejsu jest obsługiwany przez SNMP i nie wymaga żadnej dodatkowej konfiguracji. Poziom hostów i sesji wymaga włączenia NetFlow lub sFlow. Poziom aplikacji wymaga głębszej inspekcji pakietów, na przykład przez system wykrywania protokołów na podstawie sygnatur.
W praktyce około osiemdziesięciu procent problemów z wydajnością jest rozwiązywalnych na poziomie interfejsu i hostów. Poziom aplikacji jest potrzebny głównie wtedy, gdy trzeba rozróżnić usługi o podobnym wzorcu ruchu, na przykład kilka aplikacji synchronizujących pliki jednocześnie.
Typowi winowajcy wysokiego wykorzystania łącza: automatyczna aktualizacja systemu (Windows Update, menedżery pakietów), synchronizacja dokumentów w chmurze, nocne kopie zapasowe, transmisja wideo, drukowanie dużych plików na drukarkę sieciową oraz ruch generowany przez urządzenia Internet of Things.
Brak danych o przepływie nie oznacza braku ruchu: jeżeli w sieci nie skonfigurowano NetFlow ani sFlow, system monitorowania pokaże tylko wykorzystanie portu, a nie źródło ruchu. Warto włączyć przynajmniej podstawowe próbkowanie na przełącznikach brzegowych, gdzie ruch jest największy.
Plan wdrożenia przedstawiony na slajdzie ma charakter przyrostowy. Każdy kolejny krok dostarcza informacji, których wcześniej nie było, i nie wymaga zmiany poprzednich. Taki układ pozwala uzyskać wartość już na pierwszym etapie, zamiast czekać na kompletną konfigurację.
Slajd 30/40
Agregacja przepływów: NetFlow i IPFIX
Cel slajdu: Poznanie mechanizmu raportowania przepływów w protokołach NetFlow v9 i IPFIX, porównanie ich ze sFlow oraz omówienie kwestii bezpieczeństwa raportów.
Agregacja przepływów: NetFlow i IPFIX
NetFlow v9 (RFC 3954) oraz IPFIX (RFC 7011) to protokoły raportujące agregaty per przepływ. Są dokładnym odpowiednikiem sFlow pod względem celu, ale pracują na innej zasadzie: urządzenie śledzi poszczególne sesje i raportuje je po zakończeniu lub cyklicznie.
Przepływ (flow): jednokierunkowa seria pakietów o tych samych pięciu wartościach: adres źródłowy, port źródłowy, adres docelowy, port docelowy i protokół (pięciokrotka). Raport zawiera liczbę pakietów, liczbę bajtów, czasy rozpoczęcia i zakończenia oraz informacje o warstwie wyższej (na przykład znacznik DSCP, adresy MAC).
Aktywny timer (active timeout) (standardowo 30 min / 1800 s, konfigurowalny) - wymusza raport dla długich, nieprzerwanych sesji
Bezczynny timer (idle timeout) (domyślnie 15 s) - generuje raport po ustaniu ruchu w danym przepływie
Protokół transportowy - UDP port 2055 dla NetFlow oraz UDP port 4739 dla IPFIX (przypisany przez IANA)
Kwestia bezpieczeństwa: raporty NetFlow i IPFIX przesyłane są zwykle bez uwierzytelnienia i szyfrowania (UDP). Zawierają adresy IP i porty, co w wielu organizacjach stanowi dane wrażliwe. Należy ograniczyć dostęp do kolektora oraz rozważyć tunellowanie ruchu raportowego przez VPN lub SSH.
NetFlow i IPFIX różnią się od sFlow zasadniczo: nie próbkują zdarzeń, lecz śledzą poszczególne przepływy. Urządzenie utrzymuje tablicę aktywnych sesji, a po spełnieniu warunku (upływ czasu aktywności, przekroczenie progu bajtów lub zakończenie sesji) raportuje jej podsumowanie do kolektora.
Aspekt
sFlow (RFC 3176)
NetFlow v9
IPFIX
Mechanizm
próbkowanie nagłówków
śledzenie sesji
śledzenie sesji
Wysyłka danych
co ok. 1 s
co 15–30 s
konfigurowalnie
Templat (szablon)
nie wymaga
wymaga (Template Flowset)
wymaga (Set ID)
Szyfrowanie
brak standardu, zwykle brak
brak w standardzie
brak w standardzie
Obciążenie CPU
minimalne
umiarkowane
umiarkowane
Typowe zastosowanie
analiza topologii i anomalii
rozliczenia, widok sesji
rozliczenia, widok sesji
Definicja przepływu oparta na pięciokrotce (adres źródłowy, port źródłowy, adres docelowy, port docelowy, protokół) jest prosta, ale ma istotne ograniczenie. Zmiana adresu lub portu w trakcie sesji tworzy nowy przepływ. Dotyczy to szczególnie sieci z translacją adresów (NAT), gdzie jeden przepływ obserwowany wewnątrz sieci będzie się różnił od przepływu widzianego na zewnątrz.
IPFIX, w przeciwieństwie do NetFlow v9, pozwala dodać informacje o warstwie wyższej do raportu, takie jak adresy MAC, wartość DSCP, system operacyjny hosta czy typ aplikacji rozpoznany z sygnatur. Ta rozszerzalność sprawia, że IPFIX jest właściwym wyborem w środowiskach, w których wymagana jest szczegółowa księgowość ruchu.
Templat a dane: w NetFlow v9 и IPFIX kolektor musi najpierw otrzymać definicję struktury (templat), aby wiedzieć, co oznaczają poszczególne pola. Kolektor powinien buforować szablon i odrzucać raporty, których definiccji jeszcze nie zna, ponieważ ich pól nie da się poprawnie zinterpretować.
Konfiguracja eksportu Traffic Flow w RouterOS: /ip traffic-flow set enabled=yes active-flow-timeout=30m inactive-flow-timeout=15s /ip traffic-flow target add dst-address=10.0.0.50 port=2055 version=9 (dla IPFIX: version=ipfix port=4739) /ip traffic-flow print
Parametr active-flow-timeout wymusza okresowe raportowanie długo trwających sesji, a inactive-flow-timeout kończy zliczanie po 15 sekundach braku pakietów.
Slajd 31/40
Scenariusz diagnostyczny: wysokie wykorzystanie, wolne aplikacje
Cel slajdu: Prześledzenie typowego scenariusza awarii krok po kroku, od pomiaru wykorzystania portu przez rozbicie ruchu na hosty, po ustalenie wąskiego gardła poza siecią.
Scenariusz 1: „Kopia zapasowa zaowocowała w godzinach szczytu”
Administrator zgłasza, że od godziny 8:00 do 10:00 połączenia z aplikacją webową są bardzo wolne, choć łącze do internetu jest „w pełni wolne”. Opis jest klasyczny i bardzo częsty, dlatego warto prześledzić krok po kroku ścieżkę diagnostyczną.
Krok
Co sprawdzamy
Wynik
Wniosek
1
wykorzystanie portu brzegowego (SNMP)
średnio 82 %, maksymalnie 97 %
ruch jest w obie strony, więc łącze WAN nie jest problemem
2
rozbicie ruchu (sFlow, top talkers)
45 % ruchu z jednego hosta
wskazany kandydat na źródło
3
rozmiar ramek (histogram z sFlow)
70 % ramek o 1500 B
nie ma problemu z narzutem
4
odpowiedź z hosta do aplikacji (ping)
RTT 1,2 ms, brak utraty
ścieżka sieciowa jest w porządku
5
przebieg procesów na hoście
proces kopii zapasowej zużywa 90 % dysku
wąskie gardło to dysk, nie sieć
Wniosek z tego scenariusza: wysoka przepustowość łącza jest następstwem, a nie przyczyną problemu. Aplikacja webowa mogła działać wolno, ponieważ host odbiorczy intensywnie zapisywał dane na dysk. Rozwiązanie polega na przeniesieniu kopii zapasowej poza godziny szczytu, a nie na rozbudowie łącza.
Lekcja: wysoka przepustowość i niska wydajność aplikacji to dwa niezależne zjawiska. Zanim zaczniesz rozbudowywać infrastrukturę, potwierdź, że problem leży w sieci. Test end-to-end (ping, traceroute, test aplikacji) jest najtańszą metodą wykluczenia sieci jako przyczyny.
Kolejny scenariusz: „po upgrade'u wszystko zwęziło” - warto sprawdzić, czy nie wzrosła liczba pakietów (ta sama przepustowość, wyższe cpu) lub czy nie zmienił się rozmiar okna TCP. Test iperf3 przed i po zmianie daje jednoznaczną odpowiedź.
Trzeci scenariusz: „w godzinach szczytu strona otwiera się z opóźnieniem” - typową przyczyną jest bufferbloat: przesyłanie plików w tle powoduje, że pakiety interaktywne czekają w kolejce. Rozwiązanie to kształtowanie ruchu i zmniejszenie buforów, a nie dodanie przepustowości.
Scenariusze tego typu są tak częste, że warto mieć je przygotowane jako gotowy algorytm postępowania. Kluczowy jest pierwszy krok: potwierdzenie, że problem rzeczywiście dotyczy sieci. Jeżeli ping do aplikacji przechodzi bez utraty pakietów i z niskim opóźnieniem, sieć nie jest przyczyną i dalsze pomiary sieciowe są bezcelowe.
Drugi krok to rozbicie ruchu na źródła. W opisanym scenariuszu jeden host generował 45 procent całego ruchu na porcie brzegowym, co natychmiast wskazało kierunek poszukiwań.
Piąty krok, analiza procesów na hoście, ujawnił rzeczywistą przyczynę: kopia zapasowa intensywnie korzystała z dysku, przez co aplikacja webowa pracująca na tym samym hoście oczekiwała na operacje wejścia-wyjścia. Rozbudowa łącza nie rozwiązałaby problemu - zwiększyłaby jedynie przepustowość, której i tak nie brakowało.
Wniosek ma zastosowanie ogólne: wysoka przepustowość łącza jest objawem, a nie przyczyną większości zgłaszanych problemów z wydajnością. Przed podjęciem decyzji o rozbudowie infrastruktury warto wykonać test end-to-end, który jest najtańszym sposobem wykluczenia sieci jako przyczyny.
Slajd 32/40
Scenariusz diagnostyczny: błędy CRC i zakłócenia
Cel slajdu: Prześledzenie diagnostyki okresowych błędów CRC, różnicy między błędami sumy kontrolnej i wyrównania oraz zastosowania liczników w monitorowaniu.
Scenariusz 2: „W godzinach wieczornych połączenia przerywają się”
Ten objaw ma charakterystyczny wzorzec czasowy: sieć działa dobrze przez cały dzień, a problem pojawia się w godzinach wieczornych. Wzorzec sugeruje, że przyczyną nie jest sama konfiguracja, lecz warunki, które pojawiają się dopiero wieczorem.
Krok
Co sprawdzamy
Wynik
Wniosek
1
licznik dot3StatsFCSErrors w ujęciu godzinowym
wartości w godzinach 18–22 są 1000 razy wyższe
problem jest zlokalizowany w czasie
2
dot3StatsAlignmentErrors
niski w porównaniu z FCS
to uszkodzenie danych, nie zegar
3
zmiana ustawień Auto-MDI/MDI-X, autonegocjacji
nie przyniosła poprawy
nie jest to problem warstwy 1a
4
test kabla certyfikacyjnym, wymiana patch-corda
problem ustąpił po wymianie
uszkodzenie fizyczne w przewodzie lub złączu
5
sprawdzenie, co zmieniło się wieczorem
oświetlenie LED na stanowisku obok
zakłócenie elektromagnetyczne
Różnica między FCS a alignment: błąd sumy kontrolnej (FCS) oznacza, że bajty dotarły, ale zniekształcone. Błąd wyrównania (alignment) oznacza, że liczba bitów nie była całkowitą wielokrotnością ośmiu, co wskazuje raczej na problem z zegarem niż z danymi. Ta subtelna różnica wskazuje kierunek diagnostyki.
Jak monitorować liczniki błędów skutecznie: liczba bezwzględna ma małą wartość diagnostyczną (1000 błędów w miesiącu to nic). Kluczowa jest zmiana w czasie i przyrost na jednostkę przepływu. System monitorowania powinien raportować przyrost błędów na godzinę, a nie sumę od ostatniego restartu licznika.
Skuteczne rozwiązanie długoterminowe: wymiana przewodu rozwiązuje objaw, ale nie gwarantuje, że problem nie wróci. Warto przeanalizować, czy przyczyną nie jest zbyt agresywna autonegocjacja energooszczędna (EEE, 802.3az), która w niektórych urządzeniach powoduje mikrozawieszenia łącza. Wyłączenie EEE na obu końcach portu często eliminuje takie objawy.
Okresowy charakter awarii jest najcenniejszą wskazówką diagnostyczną. Błąd występujący stale sugeruje problem konfiguracyjny lub fizyczny trwały. Błąd występujący o określonej porze dnia wskazuje na czynnik środowiskowy, który pojawia się tylko w określonych warunkach.
Opisany scenariusz jest typowy dla biur, w których wieczorem zmienia się oświetlenie albo włączają się urządzenia o wyższym poborze prądu. Źródła zasilania, zwłaszcza starsze, generują zakłócenia, które mogą wpływać na sąsiednie przewody sieciowe prowadzone w tym samym kanale.
Różnica między licznikiem błędów sumy kontrolnej a licznikiem błędów wyrównania ma znaczenie diagnostyczne. Pierwszy wskazuje na zniekształcenie danych, drugi na problem z synchronizacją zegara. W opisanym przypadku niski poziom drugiego licznika wykluczył problem z zegarem i skierował uwagę na fizyczną integralność danych.
Wymiana przewodu rozwiązała objaw, ale analiza długoterminowa wskazała drugą możliwą przyczynę: funkcję oszczędzania energii EEE, znormalizowaną w IEEE 802.3az. W niektórych urządzeniach jej działanie powoduje mikrozawieszenia portu, które objawiają się jako krótkotrwałe przerwy w transmisji.
Slajd 33/40
Lista kontrolna monitorowania przepustowości
Cel slajdu: Zestawienie telemetrii w trzech warstwach priorytetów oraz zasady projektowania alarmów, aby uniknąć nadmiernego szumu informacyjnego.
Co powinno znajdować się w systemie monitorowania
Warstwa
Zakres telemetrii
1: obowiązkowa
dostępność urządzenia (ping lub ifOperStatus), przepustowość wejściowa i wyjściowa (ifHCInOctets, ifHCOutOctets), liczniki błędów i odrzuceń, wykorzystanie procesora i pamięci
2: rozszerzona
opóźnienie do kluczowych punktów i utrata pakietów, rozbicie ruchu (sFlow, NetFlow), liczby tablic (MAC, ARP, tras), rozmiar ramek
3: uzupełniająca
temperatura i wilgotność w szafie, zasilanie awaryjne (UPS), konfiguracja względem zatwierdzonej bazy, licencje i subskrypcje
Zasada nadrzędna: lepiej mierzyć sześć rzeczy dobrze i alarmować na nie konkretnie niż mierzyć czterdzieści i mieć nieczytelny wykres. Każdy alarm, którego administrator nie potrafi sklasyfikować jako „wiem, co z tym zrobić”, z czasem zostanie zignorowany, a to czyni cały system alarmowy bezużytecznym.
Poniższa lista porządkuje telemetrię od najważniejszej do uzupełniającej. Nie każdy punkt jest konieczny w małej instalacji, ale warto wiedzieć, co się pomija i dlaczego.
Lista kontrolna opisuje telemetrię w kolejności priorytetów. Warstwa pierwsza obejmuje dane, bez których system monitorowania nie ma sensu: bez informacji o tym, czy urządzenie odpowiada, nie wiemy, czy pozostałe liczniki są wiarygodne.
Warstwa druga służy diagnostyce. Opóźnienie i utrata pakietów pozwalają wykryć sytuacje, w których przepustowość jest prawidłowa, a użytkownik odczuwa problemy. Rozbicie ruchu wskazuje źródło obciążenia.
Warstwa trzecia jest uzupełniająca, ale w praktyce ratuje sytuacje, w których problem leży poza warstwą sieciową: przegrzewa się szafa, kończy się bateria podtrzymania, wygasa licencja.
Najczęstszą przyczyną porażki systemów monitorowania jest nadmiar alarmów. Gdy administrator otrzymuje kilkadziesiąt powiadomień dziennie, z których większość nie wymaga działania, przestaje je czytać. Dlatego zasadą nadrzędną jest prostota: sześć dobrze zmierzonych wartości z czytelnymi progami jest cenniejsze niż czterdzieści wartości bez progów.
Dokumentacja progów: dla każdego alarmu warto zapisać w bazie wiedzy: kiedy się pojawia, co zwykle oznacza, jakie kroki podjąć i kto ma je podjąć. System monitorowania bez takiej dokumentacji staje się źródłem szumu informacyjnego.
Slajd 34/40
Podsumowanie: pięć też do zapamiętania
Cel slajdu: Zestawienie pięciu kluczowych wniosków prezentacji, powtórzenie łańcucha wartości metryk dla łącza 1 Gbit/s oraz przypomnienie kontrolnych pytań.
Podsumowanie: pięć tez do zapamiętania
Przepustowość teoretyczna jest granicą, której nie da się przekroczyć. Wartość 1000 Mbit/s na porcie oznacza maksymalną przepustowość medium, a nie ilość danych, którą zobaczy aplikacja.
Różnica między metrykami ma nazwę: narzut. 26 B na ramkę bez VLAN i szyfrowania, 20 B nagłówka IPv4, 20 B nagłówka TCP, dodatkowo 4 B w znaczniku VLAN, 32 B w MACsec, 50 B w VXLAN.
Rozmiar pakietów ma znaczenie pierwszorzędne. 46 B danych daje 54,8 procent efektywności po uwzględnieniu odstępu między ramkami (63,9 procent bez niego), 1500 B daje 97,5 procent, a 9000 B daje 99,6 procent.
Liczniki błędów są cenniejsze niż wykresy przepustowości. Wartość graniczna dla błędu CRC to zero; każdy przyrost oznacza problem fizyczny lub zegarowy.
Monitoring musi działać wtedy, gdy sieć zawodzi. Ścieżka out-of-band i wydzielony VLAN zarządzania to minimum, które odróżnia system użyteczny od systemu bezużytecznego.
Przypomnienie o liczbach: 1000 Mbit/s (przepustowość teoretyczna) → 975 Mbit/s (maksimum po odjęciu narzutu ramek) → 941 Mbit/s (pomiar iperf3 dla łącza 1 Gbit/s) → wartość jeszcze mniejsza (dane faktycznie przetworzone przez aplikację, po odjęciu potwierdzeń i ewentualnych retransmisji). Wartości 1000 i 941 Mbit/s pochodzą z artykułu źródłowego; 975 Mbit/s to wynik obliczenia własnego. Wartości goodput artykuł nie podaje, dlatego pozostawiamy ją jako wielkość nieznaną - jej wartość zależy od aplikacji, rozmiaru okna TCP i strat.
Kontrolne pytania do zadania: ile wynosi narzut ramki Ethernet bez znaczników dodatkowych? jaka jest efektywność transmisji dla ramek o 64 B? ile sekund upływa, zanim 32-bitowy licznik bajtów zawinie się na łączu 1 Gbit/s? czym różni się przepustowość użyteczna od przepustowości rzeczywistej? co oznacza wzrost licznika odrzuceń wyjściowych?
Zasada końcowa: zanim zaczniesz rozbudowywać infrastrukturę, zmierz. Pomiar jest najtańszy, najszybszy i jedyny sposób, aby odróżnić wąskie gardło od objawu.
Prezentacja prowadziła od budowy ramki do monitorowania, pokazując, że wszystkie te tematy są ze sobą powiązane. Pierwsze dziesięć slajdów wyjaśniało, dlaczego z 1000 Mbit/s nie da się uzyskać 1000 Mbit/s danych aplikacji. Kolejne definiowały trzy metryki i pokazywały, czym się różnią. Ostatnie omawiały narzędzia pomiarowe i sposób monitorowania.
Łańcuch wartości przedstawiony na slajdzie jest najlepszym podsumowaniem. Przepustowość teoretyczna 1000 Mbit/s jest granicą narzuconą przez standard. Po uwzględnieniu narzutu ramek i odstępu między ramkami maksimum spada do 975 Mbit/s. Pomiar aplikacyjny narzędziem iperf3 daje zwykle około 941 Mbit/s, a dane faktycznie przetworzone przez aplikację stanowią nieco mniej, jeśli uwzględnić retransmisje i potwierdzenia.
W praktyce administrator, który potrafi wyjaśnić te liczby, jest w stanie poprawnie zinterpretować każdy wykres przepustowości i każdy alarm. Wartość 97 procent wykorzystania łącza jest wartością normalną, ale 97 procent przy jednoczesnym wzroście licznika odrzuceń wyjściowych jest sygnałem, że przepustowości zabrakło.
Slajd 35/40
Normy, dokumenty RFC i narzędzia
Cel slajdu: Zestawienie norm IEEE, dokumentów RFC dotyczących liczników, przepływu, transportu i kolejek oraz narzędzi pomiarowych użytych w prezentacji.
Normy i dokumenty wykorzystane w prezentacji
Dokument
Zakres
IEEE 802.3
Ethernet, w tym 802.3ab (Gigabit na skrętce), 802.3an (10GBASE-T), 802.3bz (2,5G i 5GBASE-T), 802.3ac (znacznik VLAN), 802.3az (EEE)
obiekty MIB-2 oraz rozszerzenia interfejsów z licznikami 64-bitowymi
RFC 1905
operacje GetBulk w SNMPv2
RFC 3176, RFC 3954, RFC 7011
sFlow, NetFlow v9, protokół IPFIX
RFC 3411, RFC 3414
architektura SNMPv3, model bezpieczeństwa USM
RFC 2784, RFC 7348
GRE, VXLAN
RFC 1191, RFC 1981
wykrywanie MTU ścieżki (PMTUD)
RFC 2309, RFC 7567
aktywne zarządzanie kolejkami (AQM) i algorytmy RED / CoDel
RFC 7323, RFC 6928
rozszerzenia TCP (skalowanie okna Window Scale) oraz okno początkowe (initcwnd)
Narzędzia:iperf3 (pomiar przepustowości), Jperf (interfejs graficzny do iperf), iptraf-ng (statystyki ruchu w konsoli), Wireshark (analiza pakietów), nload i vnstat (historia wykorzystania łącza), tc (zarządzanie kolejkami w Linuksie).
Prezentacja opiera się na dokumentach normalizacyjnych, a nie na materiałach wtórnych. Wszystkie wartości liczbowe dotyczące rozmiarów ramek, rozmiarów nagłówków i zakresów liczników można zweryfikować w dokumentach IETF i normach IEEE.
Dokument RFC 2863 jest szczególnie ważny dla tematu monitorowania, ponieważ wprowadził grupę ifXTable z licznikami 64-bitowymi oraz pole ifHighSpeed, z którego korzystają wszystkie systemy monitorowania do obliczania wykorzystania łącza.
Dokument RFC 7567 (oraz wcześniejszy RFC 2309) formułuje kluczowe rekomendacje IETF w zakresie aktywnego zarządzania kolejkami (AQM) i przeciwdziałania bufferbloat.
Dokumenty RFC 5681 (kontrola przepływu w TCP), RFC 6582 (szybkie odtwarzanie po utracie), RFC 7323 (skalowanie okna TCP Window Scale) oraz RFC 6928 (zwiększone okno początkowe initcwnd) uzupełniają obraz mechanizmów, które decydują o osiągalnej przepustowości w sieciach o dużej propagacji.
W kwestii narzędzi warto podkreślić, że iperf3 służy do pomiaru, a iptraf-ng do obserwacji. Pomieszanie tych dwóch zastosowań prowadzi do błędnych wniosków: iptraf-ng nie nadaje się do benchmarku, ponieważ nie generuje kontrolowanego obciążenia.
Artykuł „Zrozumienie prędkości sieci LAN” autorstwa Igora Brzeżka, opublikowany 20 października 2025 r. na blogu ITBlog, w dziale „Pomiary w sieciach LAN”: itblog.netstudio.net.pl/klopoty-z-predkoscia-w-sieci-lan. Przykład pomiaru 941 Mbit/s dla sieci 1 Gbit/s, obliczenia efektywności ramek oraz tabela porównawcza przedrostków dziesiętnych i binarnych pochodzą z tego opracowania.
Slajd 36/40
Powtórzenie: kluczowe liczby
Cel slajdu: Zebranie w jednym miejscu najważniejszych wartości liczbowych użytych w prezentacji, aby ułatwić zapamiętanie i dalsze wykorzystanie.
Kluczowe liczby do zapamiętania
Wielkość
Wartość
Źródło
Minimalna ramka Ethernet
64 B
IEEE 802.3
Maksymalna ramka Ethernet II
1518 B
dane 1500 B + 18 B
Ramka z jednym znacznikiem VLAN
1522 B
IEEE 802.1Q
Długość na kablu
72 – 1526 B
wliczając preambułę i SFD
Narzut ramki (bez VLAN i szyfrowania)
26 B
8 + 6 + 6 + 2 + 4 + 12 odstępu
MTU dla IPv4
1500 B
IEEE 802.3
MSS dla IPv4 + TCP
1460 B
1500 − 20 − 20
Narzut GRE, VXLAN, MACsec
24 B, 50 B, 32 B
RFC 2784, RFC 7348, IEEE 802.1AE
Zawijanie się licznika 32-bitowego przy 1 Gbit/s
co 34,4 s
2³² × 8 / 10⁹
Jak korzystać z tabeli: wartości rozmiarów pozwalają natychmiast policzyć narzut dla dowolnej konfiguracji. Dla ramek o 512 B danych efektywność wynosi 512 / 538 = 95,2 procent.
W tabeli pominięto dwie wartości efektywności dla ramek o 1500 B i 9000 B danych, aby ograniczyć liczbę wierszy. Dla 1500 B danych efektywność wynosi 1500 / 1526 = 98,3 procent bez odstępu między ramkami, a po uwzględnieniu odstępu 1500 / 1538 = 97,5 procent. Dla 9000 B danych wartości te wynoszą odpowiednio 99,7 i 99,5 procent.
Tabela zbiera wartości, do których prezentacja odwoływała się wielokrotnie. Warto zapamiętać przede wszystkim te cztery: minimalny rozmiar ramki 64 B, maksymalny 1518 B, narzut 26 B i MTU 1500 B. Pozostałe wartości łatwiej jest wyliczyć, gdy te cztery są znane.
Narzut 26 B składa się z ośmiu bajtów preambuły i znacznika SFD, dwunastu bajtów adresów MAC, dwóch bajtów kodu protokołu oraz czterech bajtów sumy kontrolnej. Warto pamiętać, że preambuła i SFD nie są wliczane do długości ramki w dokumentacji ani do wartości liczników SNMP, ale zajmują czas na medium.
Po uwzględnieniu odstępu między ramkami wartość 26 B nie wystarcza do obliczenia efektywności. Dla ramek o maksymalnym rozmiarze realna liczba to 1538 B na kablu (1526 B ramki plus 12 B odstępu), co daje efektywność 97,5 procent, a nie 98,3 procent.
Wartość 34,4 sekundy dla zawijania się licznika 32-bitowego wynika z podziału 4 294 967 295 bajtów przez 125 000 000 bajtów na sekundę. W praktyce oznacza to, że dla łącza o przepustowości 1 Gbit/s odpytywanie z interwałem krótszym niż 35 sekund i licznik 32-bitowy dają wynik, którego nie da się poprawnie obliczyć bez obsługi zawijania.
Slajd 37/40
Powtórzenie: kluczowe identyfikatory OID
Cel slajdu: Zebranie identyfikatorów OID najczęściej używanych w monitorowaniu przepustowości, wraz z typami danych i objaśnieniem struktury drzewa MIB.
Kluczowe identyfikatory OID
Nazwa
OID
Typ i znaczenie
ifInOctets
1.3.6.1.2.1.2.2.1.10
Counter32, bajty wejściowe
ifOutOctets
1.3.6.1.2.1.2.2.1.16
Counter32, bajty wyjściowe
ifHCInOctets
1.3.6.1.2.1.31.1.1.1.6
Counter64, bajty wejściowe
ifHCOutOctets
1.3.6.1.2.1.31.1.1.1.10
Counter64, bajty wyjściowe
ifHighSpeed
1.3.6.1.2.1.31.1.1.1.15
Gauge32, prędkość w Mbit/s
ifSpeed
1.3.6.1.2.1.2.2.1.5
Gauge32, prędkość w bit/s
ifInErrors, ifInDiscards
1.3.6.1.2.1.2.2.1.14 i .13
błąd odbioru, odrzucenie
ifOutDiscards, ifOutErrors
1.3.6.1.2.1.2.2.1.19 i .20
odrzucono przed wysłaniem, błąd wysyłania
dot3StatsFCSErrors
1.3.6.1.2.1.10.7.2.1.3
błąd sumy kontrolnej CRC
Ostatnia część OID to indeks interfejsu (ifIndex). Na przykład 1.3.6.1.2.1.2.2.1.10.1 oznacza licznik bajtów odebranych na interfejsie o indeksie 1. Indeksy mogą się zmieniać po restarcie, dlatego systemy monitorowania rozwiązują je po nazwach (ifName, OID 1.3.6.1.2.1.31.1.1.1.1), a nie po numerach.
W tabeli pominięto dwa liczniki o podobnym znaczeniu diagnostycznym: dot3StatsAlignmentErrors (1.3.6.1.2.1.10.7.2.1.2) oraz dot3StatsSymbolErrors (1.3.6.1.2.1.10.7.2.1.14), opisane w scenariuszu diagnostycznym na slajdzie 32.
Czas i status opisują trzy obiekty: sysUpTime (1.3.6.1.2.1.1.3.0, czas pracy od restartu w setnych sekundy, typ TimeTicks), sysDescr (1.3.6.1.2.1.1.1.0, opis systemu) oraz sysName (1.3.6.1.2.1.1.5.0, nazwa hosta).
Przechodzenie struktury drzewa MIB: korzeń drzewa to 1.3.6.1.2.1.2.2.1 (grupa interfejsów w MIB-2), a 1.3.6.1.2.1.31.1.1.1 to grupę rozszerzeń. Polecenie snmpwalk z tym prefiksem zwraca komplet kolumn dla wszystkich interfejsów, co jest najwygodniejszym sposobem szybkiego pobrania kompletu danych o ruchu.
Identyfikatory OID pełnią podobną funkcję jak adresy w sieci: jednoznacznie wskazują obiekt w hierarchii obiektów zarządzanych. Wartość 1.3.6.1 oznacza organizację ISO, 1.3.6.1.2 to obszar zarządzania obiektami, a 1.3.6.1.2.1 to MIB-2, czyli standardową bazę obiektów.
Grupa interfejsów występuje w dwóch wariantach. Podstawowa tabela z dokumentu RFC 1213 zawiera liczniki 32-bitowe i jest oznaczona prefiksem 1.3.6.1.2.1.2.2.1. Tabela rozszerzeń z dokumentu RFC 2863 znajduje się pod prefiksem 1.3.6.1.2.1.31.1.1.1 i zawiera liczniki 64-bitowe oraz pole ifHighSpeed.
W praktyce systemy monitorowania korzystają prawie wyłącznie z tabeli rozszerzeń, ponieważ liczniki 32-bitowe nie nadają się do monitorowania szybkich łączy. Pole ifSpeed, jedyne źródło prędkości nominalnej w starszej tabeli, ma zakres 32-bitowy, co ogranicza je do około 4 Gbit/s.
Ostatnia część OID to indeks interfejsu, czyli ifIndex. Warto pamiętać, że indeksy mogą się zmienić po restarcie urządzenia, dlatego systemy monitorowania przechowują mapowanie między indeksem a nazwą interfejsu i odświeżają je okresowo. Pole ifName, dostępne w tabeli rozszerzeń pod indeksem 1, służy właśnie do tego celu.
Slajd 38/40
Powtórzenie: polecenia diagnostyczne
Cel slajdu: Zestawienie poleceń do pomiaru przepustowości, obserwacji ruchu i diagnostyki w systemie Linux, SNMP oraz RouterOS, wraz z zalecaną kolejnością testów.
Linux: pomiar i obserwacja
iperf3 -c 192.168.1.10 -t 30 test TCP przez 30 sekund iperf3 -c 192.168.1.10 -t 30 -P 4 cztery równoległe strumienie iperf3 -c 192.168.1.10 -t 30 -R test w kierunku odwrotnym ip -s link show eth0 statystyki interfejsu (błędy, odrzucenia) tc -s qdisc show dev eth0 kolejki i liczba pakietów odrzuconych ping -M do -s 1472 10.0.0.10 test MTU ścieżki (1472 + 20 + 8 = 1500)
SNMP i RouterOS
snmpget -v2c -c public 10.0.0.1 1.3.6.1.2.1.31.1.1.1.6.1 bajty wejściowe snmpget -v2c -c public 10.0.0.1 1.3.6.1.2.1.31.1.1.1.15.1 prędkość w Mbit/s /interface ethernet monitor ether1 once przyrostowe statystyki portu /tool bandwidth-test address=10.0.0.10 klient testu przepustowości
Kolejność testów: zacznij od ip -s link (błędy i odrzucenia), potem iperf3 (pomiar), potem ping -M do (MTU), a na końcu tc -s qdisc (kolejki).
Wartość praktyczna prezentacji widoczna jest w zestawieniu poleceń. Diagnosta, który potrafi szybko odczytać licznik SNMP i policzyć przepustowość, rozwiązuje większość zgłoszeń bez potrzeby uruchamiania rozbudowanych narzędzi.
Narządzie iperf3 warto poznać dokładniej, ponieważ oferuje kilka parametrów istotnych diagnostycznie. Parametr -P uruchamia wiele równoległych strumieni, co pozwala sprawdzić, czy wąskim gardłem jest jedno połączenie TCP, czy też cała przepustowość łącza. Parametr -R odwraca kierunek, co pozwala wykryć asymetrię. Parametr -w wymusza okno, a -M maksymalny rozmiar segmentu.
W systemie Linux szczególnie użyteczne jest polecenie tc -s qdisc, które pokazuje liczbę pakietów odrzuconych w kolejkach. Ta wartość jest często jedyną wiarygodną informacją o przeciążeniu, gdyż nie wymaga analizy żadnego logu i jest dostępna natychmiast.
Pozostałe polecenia przydatne w diagnostyce to ss -s (podsumowanie stanu gniazd sieciowych), vnstat --oneline b (zliczony ruch w bajtach), snmpwalk po nazwach interfejsów, snmpbulkget do pobrania 100 wartości naraz oraz w RouterOS /interface ethernet print stats where name="ether1", /ip flow-cache print stats where interface=ether1 i /tool traffic-generator inject interface=ether1 number-of-packets=1000 packet-size=64.
Zalecana kolejność testów ma na celu oszczędność czasu. Sprawdzenie liczników błędów jest natychmiastowe i jednoznaczne. Pomiar iperf3 zajmuje kilkadziesiąt sekund. Test MTU jest szybki, ale wymaga znajomości podejrzanego odcinka. Analiza kolejek jest najdokładniejsza, ale wymaga znajomości konfiguracji mechanizmów zarządzania ruchem.
Slajd 39/40
Częste błędy w interpretacji wyników
Cel slajdu: Zestawienie najczęstszych błędów pomiarowych i metodologicznych, wskazanie ich wspólnej przyczyny oraz przedstawienie standardu poprawnego raportowania pomiaru.
Częste błędy w interpretacji wyników
Mylenie 1000 Mbit/s z 1000 MB/s - 1000 Mbit/s to 125 MB/s, czyli około 119 MiB/s.
Porównywanie prędkości łącza z prędkością zapisu na dysk - wartości w MB/s i w Mbit/s to różne wielkości.
Ujmowanie narzutu wielokrotnie - liczniki bajtów zawierają już nagłówki i FCS, więc narzut 26 B jest w nich uwzględniony.
Przepustowość bliska 100 procent oznacza dobre łącze - 95 procent z rosnącym licznikiem odrzuceń to stan alarmowy.
Pomiar bez podania protokołu - wynik TCP i UDP różni się o kilka procent.
Porównywanie pomiarów z różnych warstw - licznik interfejsu, pomiar aplikacyjny i prędkość zapisu pliku to trzy różne wielkości.
Brak danych oznacza brak ruchu - bez sFlow ani NetFlow system pokaże tylko wykorzystanie portu.
MTU 1496 B „na zapas” dla VLAN - znacznik VLAN nie jest częścią datagramu IP; MTU powinno pozostać 1500 B.
Test MTU bez flagi „nie fragmentuj” - ping -s 1472 bez -M do może zostać rozdzielone przez router.
Odczyt licznika 32-bitowego na szybkim łączu - przy 1 Gbit/s licznik zawija się co 34 sekundy.
Wspólna przyczyna większości błędów: utożsamianie liczb z różnych warstw stosu protokołów. Liczba 1000 oznacza co innego na oznaczeniu portu, co innego w liczniku bajtów, a co innego w prędkości zapisu pliku. Zanim porównamy dwie wartości, trzeba sprawdzić, z jakiej warstwy pochodzą.
Dobra praktyka raportowania: każdy raport z pomiaru powinien zawierać cztery elementy: punkt startowy i końcowy pomiaru, protokół i czas trwania, liczbę powtórzeń oraz warunki równoległego ruchu. Raport bez tych informacji nie pozwala na odtworzenie ani weryfikację wyniku.
Większość błędów w interpretacji pomiarów wynika z jednej przyczyny: utożsamiania liczb pochodzących z różnych warstw stosu protokołów. Liczba 1000 na oznaczeniu portu oznacza przepustowość w megabitach na sekundę, liczba 1000 w liczniku bajtów oznacza kilka gigabajtów przetworzonych, a liczba 1000 w raporcie zapisu pliku oznacza kilka megabajtów na sekundę.
Najczęściej spotykany błąd to porównywanie przepustowości łącza podanej w Mbit/s z prędkością zapisu na dysk podaną w MB/s. Różnica jest w tym przypadku ośmiokrotna, co przy interpretacji wartości dosłownej daje wynik, że sieć jest osiem razes wolniejsza, niż jest w rzeczywistości.
Drugi częsty błąd to podwójne ujmowanie narzutu. Liczniki bajtów obejmują już sumy kontrolne ramek, więc dodatkowe odejmowanie 18 B prowadzi do zawyżenia wyniku. Warto wiedzieć, że liczniki nie obejmują preambuły, znacznika SFD i odstępu między ramkami, ale obejmują wszystko, co mieści się w ramce.
Trzeci błąd, równie powszechny, to utożsamianie wysokiej przepustowości z dobrym stanem sieci. Przepustowość na poziomie 95 procent wraz z rosnącym licznikiem odrzuceń wyjściowych jest stanem alarmowym, a nie dowodem wydajności. Podobnie jak droga, która jest pełna, ale sprawna, sieć obciążona do granic jest mniej użyteczna niż sieć obciążona w połowie.
Slajd 40/40
Zamknięcie prezentacji
Cel slajdu: Podsumowanie najważniejszych ustaleń z każdej części prezentacji wraz z końcowym zaleceniem dotyczącym konieczności wykonania pomiaru przed rozbudową sieci.
Podsumowanie całej prezentacji
Część
Ustalenia
I: metryki
przepustowość teoretyczna jest wartością standardu, a nie pomiarem; przepustowość użyteczna (goodput) jest tym, co faktycznie trafiło do aplikacji; relacja: goodput ≤ throughput ≤ bandwidth
II: enkapsulacja
ramka Ethernet ma od 64 do 1518 B, narzut wynosi 26 B; z odstępem między ramkami efektywność dla maksymalnego rozmiaru wynosi 97,5 procent
III: czynniki
MTU to 1500 B, MSS dla IPv4 i TCP to 1460 B; tunele dodają narzut: GRE 24 B, VXLAN 50 B, MACsec 32 B; duże bufory zwiększają opóźnienie, a nie przepustowość
IV: pomiary
1000 Mbit/s → 975 Mbit/s → pomiar iperf3 941 Mbit/s; 1 Gbit/s to 125 MB/s, czyli około 119 MiB/s
V: monitorowanie
liczniki 64-bitowe są konieczne dla szybkich łączy; licznik błędów CRC ma wartość graniczną równą zero; sFlow dla szybkiej reakcji, IPFIX dla szczegółowej księgowości
Ostatnie zalecenie: zanim podejmiesz decyzję o rozbudowie sieci, wykonaj pomiar. Różnica między „łącze jest wolne” a rzeczywistym wąskim gardłem ujawnia się zwykle w ciągu kilku minut pracy z narzędziami, których użycie opisano w tej prezentacji.
Prezentacja zebrała w jednym miejscu tematy, które w codziennej pracy administratora bywają traktowane jako odrębne. Enkapsulacja i jednostki są sprawą warstwy fizycznej i teorii. Przepustowość i pomiar są sprawą narzędzi. Monitorowanie jest sprawą systemów zarządzania. Tymczasem wszystkie te tematy łączy jedna zasada: różnica między deklarowaną a rzeczywistą wydajnością sieci ma konkretne, mierzalne przyczyny.
Najczęstsze z tych przyczyn to narzut ramek i potwierdzeń, rozmiar pakietów, wydajność urządzeń oraz opóźnienie wynikające z kolejek. Wszystkie są mierzalne i wszystkie można ograniczyć, jeśli zna się narzędzia i interpretuje się ich wyniki właściwie.
Warto zwrócić uwagę na porządek prezentacji. Zaczynała się od pytania, dlaczego łącze 1 Gbit/s nie przenosi 1 Gbit/s danych, a kończyła na zestawieniu narzędzi monitorowania. Taki układ jest celowy - zrozumienie przyczyny ułatwia interpretację objawu, a znajomość narzędzi ułatwia potwierdzenie przyczyny.
Końcowe zalecenie jest proste i warto je zapamiętać: zanim podejmiesz decyzję o rozbudowie sieci, wykonaj pomiar. Różnica między subiektywnym odczuciem wolnej sieci a rzeczywistym wąskim gardłem ujawnia się zwykle w ciągu kilku minut pracy z narzędziami opisanymi w tej prezentacji.