miałem okazję w ciągu ostatnich trzech tygodni parokrotnie porozmawiać z różnymi ludźmi, którzy mieli nieszczęście spotkać się z dużą ilością ulotek reklamowych i cyframi dotyczącymi urządzeń sieciowych, które składają się w tak kreatywną matematykę, że jej zrozumienie wymaga odejścia od ogólnie przyjętych norm.

nie mam czasu ani ochoty na znęcanie się, chciałbym natomiast podsumować parę wątków, które stale wracają w tego typu rozmowach i raz spisane mogą stać się doskonałą referencją do różnego rodzaju pytań na ten temat.

słownictwo

  • pps - packets per second - ilość pakietów na sekundę, którą może przesłać urządzenie; często dodaje się tu przedrostki ‘k’ - kpps, czyli tysiące pakietów na sekundę, oraz ‘M’ - Mpps, czyli miliony pakietów na sekundę
  • bps, Mbps, Gbps, Tbps - odpowiednio bity na sekundę, miliony bitów na sekundę, miliardy bitów na sekundę (gigabity na sekundę) oraz bilion bitów na sekundę (terabity na sekundę); tutaj można znaleźć przydatne porównanie jeśli właśnie się zgubiliśmy
  • ASIC i FPGA - Application Specific Integrated Circuit / Field Programmable Gate Array - w potocznej mowie używa się tych dwóch określeń na oznaczenie układów sprzętowych specyficznie przystosowanych do wykonywania powtarzalnych czynności w sposób możliwie szybki - obecnie produkowane układy tego typu są w stanie wykonywać np. decyzję o routingu z wydajnością do wielu miliardów decyzji na sekundę

narzut protokołów

Internet to sieć IP, ale w większości zastosowań w ktorych toczy się dyskusje tego typu medium transportowym dla pakietów IP jest Ethernet (tak, jeśli przez przypadek pracujesz dla operatora internetowego możesz się teraz uśmiechnąć :) ). ma to swoje znaczenie dla rozważań i matematyki ‘ile można przesłać maksymalnie’ z uwagi na narzut spowodowany nagłówkiem i stopką ramki Ethernet.

ramka Ethernet składa się z:

  • 6 bajtowego pola ‘adres docelowy’
  • 6 bajtowego pola ‘adres źródłowy’
  • 2 bajtowego pola długość/typ
  • 46-1500 bajtów danych (tutaj znajdują się nagłówki i dane protokołów wyższych warstw, np. IPv4, IPv6, IPX, etc)
  • 4 bajtowego pola sumy kontrolnej

adres docelowy jest pierwszy z uwagi na fakt, że dawno dawno temu, gdy elektronika nie była jeszcze tak zaawansowana jak dziś, przełącznik zamiast czekać na odbiór całej ramki mógł od razu zacząć kopiować ją do portu docelowego - nazywało się to ‘cut-trough switching’, w odróżnieniu do trybu ‘store&forward’ - do którego dzisiaj większość producentów wróciła, bo zysk w opóźnieniu odebrania pełnej ramki vs jej nagłówka jest już bardzo znikoma

dla porządku należy dodać, że oprócz tych rozmiarów, dla ramki Ethernet liczy się dodatkowy narzut w postaci IFG (Inter-Frame Gap, 12 bajtów) i 8-bajtowej preambuły (która mówi urządzeniu odbierającemu ’to co jest po mnie jest ramką’) - minimalny narzut to zatem 38 bajtów

w momencie gdy dodatkowo ramka zawiera tagi 802.1Q, każdy z nich zwiększa te 38 bajtów o kolejne 4 bajty - jeden tag to minimalny narzut 42 bajtów, dwa tagi to 46 bajtów, etc.

aby przetransportować coś więcej niż samą ramkę Ethernet, należy do jej środka coś wrzucić - zwykle jest to pakiet IPv4, którego długość nagłówka to 20 bajtów. nawet jeśli jednak mamy do czynienia z nagłówkiem IPv6 bez opcji rozszerzonych, długość tego nagłówka - 40 bajtów - mieści się w polu minimalnej długości ramki Ethernet (46 bajtów) - obliczenia zatem możemy uwspólnić. oczywiście sam nagłówek IPv4 czy IPv6 nie przenosi użytecznych informacji ale w pomiarze tego jak szybko urządzenie działa używa się zwykle trzech rodzajów pakietów:

  • pakiety o minimalnej długości - czyli nagłówek IP (20 bajtów) osadzony w ramce Ethernet, co oznacza 84 bajty “on the wire”; pakietów tych używa się podczas testów urządzeń do oceny ile maksymalnie pakietów na sekundę jest ono w stanie obsłużyć - jest to wprost test sprawności przekazywania ruchu (czyli tzw. forwarding engine) od portu do portu; dla urządzeń, które realizują ten proces w oparciu o oprogramowanie, spotykane wartości znajdują się w zakresie od kilku-kilkunastu tysięcy pps do paru milionów pps - jest to o tyle ważne, że takie urządzenia dla każdego z tych pakietów muszą wykonać pewien zestaw czynności który jest mocno związany z częstotliwością taktowania CPU który wykonuje ten proces; dla konstrukcji sprzętowych wydajności podaje się zwykle w milionach pps
  • pakiety IMIX - czasem różnie rozumiane czy nawet wręcz różnie definiowane, ale lepiej oddające różnorodność ruchu jaki spotkać można w Internecie

IMIX to “Internet MIX” - pewna abstrakcja aktualnie ‘reprezentatywnego dla Internetu’ rozłożenia ruchu sieciowego; różne firmy różnie na IMIX patrzą, bo nie ma jednolitego standardu i określenia ‘co to jest’, można zatem znaleźć takie definicje jak na stronie CAIDA, SPIRENT (producent sprzętu do prowadzenia testów), pojawił się również draft RFC do testowania szyfratorów IPsec, który odwołuje się do definicji IMIX podanej wcześniej

  • pakiety o maksymalnej długości dla MTU medium transportowego - dla tradycyjnego Ethernetu testuje się zwykle 1500 bajtowe lub 9216 bajtowe (ramki jumbo), ale należy pamiętać, że spotkać można np. interfejsy POS i ATM, których domyślne MTU to 4470 bajtów

patrząc zatem na urzadzenie i próbując ocenić jego wydajność możemy poruszać się w obrębie dwóch skrajnych przypadków:

  • jak szybko obsługuje pakiety o minimalnej długości? dzięki temu testowi dowiemy się, jak sprawny jest mechanizm przekazywania ruchu pomiędzy portami
  • jak szybko obsługuje pakiety o maksymalnej długości? dzięki temu testowi dowiemy się, jaka jest wydajność połaczeń pomiędzy portami (i czy np. matryca przełączająca łącząca te porty jeśli mówimy o przełączniku lub sprzętowym routerze jest nieblokująca, tj. zapewnia obsługę ruchu pomiędzy kompletem portów urządzenia bez powodowania strat w transmisji)

mamy zatem prosty przelicznik ile pakietów na sekundę maksymalnie (czyli tych o minimalnej długości) uda się zmieścić w porcie Ethernet pracującym z konkretną prędkością:

  • port 10Mbit/s = 14,880 pakietów na sekundę (14kpps)
  • port 100Mbit/s = 148,800 pakietów na sekundę (148kpps)
  • port 1Gbit/s = 1,488,000 pakietów na sekundę (1,4Mpps)
  • port 10GE = 14,880,000 pakietów na sekundę (14,8Mpps)
  • porty 100GE (gdyby był) = 148,800,000 pakietów na sekundę (148Mpps)

analogicznie, te same wyliczenia dla pakietów o długości 1536 bajtów przedstawiają się następujaco:

  • port 10Mbit/s = 813 pakietów na sekundę (813pps)
  • port 100Mbit/s = 8,138 pakietów na sekundę (8.1kpps)
  • port 1Gbit/s = 81,380 pakietów na sekundę (81kpps)
  • port 10GE = 813,802 pakietów na sekundę (813.8kpps)
  • port 100GE (gdyby był) = 8,138,020 pakietów na sekundę (8,13Mpps)

w następnym odcinku opowiemy jak to się przekłada na routery - takie pozyjonowane na brzegu sieci jak i takie pozycjonowane w szkielecie. dlaczego tak rozróżniam? no cóż, zobaczycie :)