Co to jest wąskie gardło IPsec w systemie Linux?

19

Próbuję porównać wydajność kilku protokołów bezpieczeństwa sieci między dwoma hostami podłączonymi do Gigabit Ethernet.

Moim celem tutaj jest sprawdzenie, czy mogę nasycić moją przepustowość, a jeśli nie, jaki jest czynnik ograniczający.

  • z SSL mogę osiągnąć 981 MBit / s, więc łącze Ethernet jest oczywiście czynnikiem ograniczającym;
  • z SSH mogę osiągnąć tylko 750 MBit / s, ale jeden z moich rdzeni jest w 100% wykorzystywany. Ponieważ SSH jest jednowątkowy, procesor jest czynnikiem ograniczającym;
  • z IPsec czytam około 500 MBit / s, ale żaden z moich rdzeni nie ma 100% (poniżej 50%).

Więc moje pytanie brzmi: dlaczego IPsec nie może osiągnąć większej przepustowości?

Na dwóch hostach działa Debian Wheezy i Strongswan dla IPsec.

użytkownik50228
źródło
3
Musisz upewnić się, że Twój procesor ma aesinstrukcję lepszego odszyfrowywania pakietów w obu witrynach intel.co.jp/content/dam/www/public/us/en/documents/white-papers /... i upewnij się, że jesteś uczynienie ipsec równoległym i korzystanie z trybu tunelowego + ESP - strongswan.org/docs/Steffen_Klassert_Parallelizing_IPsec.pdf . To najlepszy sposób na osiągnięcie wydajności dzięki temu protokołowi.
Niestety mam procesory i3 bez obsługi AES-NI i pracuję w trybie tunelowania między dwoma hostami. Rozumiem, w jaki sposób obie Twoje porady zwiększyłyby przepustowość w przypadku, gdy jeden procesor był w 100% wykorzystywany. Użycie AES-NI pozwoliłoby na przetworzenie większej liczby pakietów i zwiększyłoby BW. Ale tutaj procesor nie wydaje się czynnikiem ograniczającym.
user50228,
3
Hmm, to interesujące. Podejrzewam, że coś w jądrze spowalnia rzeczy. Czy mógłbyś udostępnić swoją konfigurację ipsec? Chciałbym oprzyrządować maszynę wirtualną i zobaczyć, jakie wyniki uzyskam przy różnych ustawieniach.
Lmwangi

Odpowiedzi:

1

Jest tak wiele czynników, które się w to biorą. Karta sieciowa uderza więcej części planszy, niż można sobie wyobrazić. Dowolny zestaw, jeśli instrukcje mogą przejść przez drut i uderzyć w część układu sterownika i cięć w dół. Możesz wziąć pojedynczą rdzeń 1200 MHz z pojedynczym rdzeniem i wyregulować sprzęt, aby wysadzić drzwi i poczwórny rdzeń 3600 MHz. To naprawdę jest pytanie dotyczące konkretnego sprzętu.

Jak oni to robią? z czymś takim: http://www.ixiacom.com/products/ixn2x To urządzenie o wartości 165 tys. USD „Złamię cię”. tj. 2 koncerty błędny ruch do 1-rurowej rury. Gdy zaczniesz bić system i rozbijać rzeczy, szyjka butelki „ujawni się”. Odśwież swoje umiejętności GDB!

Każdy system ma inną metodę rozwiązania problemu. Niektóre tablice mają ograniczenia technologiczne, które mogą cię zaskoczyć.

Odpowiedź jest dwuznaczna, ponieważ rozwiązanie jest niejednoznaczne. Mogę wymyślić 20 różnych możliwości, w tym stronicowanie, które mogą się różnić w zależności od wersji systemu operacyjnego.

ćwiek
źródło
0

Zastanawiam się, czy dzieje się tak, ponieważ w krypto wstawiono sztuczne oczekiwania lub sny. To niezbyt prawdopodobne imo, ale ...

http://www.tau.ac.il/~tromer/acoustic/

Nie można tego opublikować jako komentarza, byłoby lepiej pasować w ten sposób.

Raymond Bannan
źródło
0

Może się zdarzyć, że w danym momencie tylko jeden z dwóch rdzeni jest nasycony, ale średnio wygląda na to, że oba mają około 50% (ponieważ jądro losowo przypisuje jedno-wątkowy proces IPsec do obu rdzeni; jednak o ile I zauważyłem, że Linux (w przeciwieństwie do Windows) zazwyczaj próbuje utrzymać wątek na tym samym rdzeniu).

W niektórych krótkich okresach IPSec może również czekać na sieć, która w połączeniu z niską prędkością transferu byłaby oznaką słabego buforowania.

Również kompresja (jeśli występuje) i obciążenie protokołu może wpłynąć na twoje testy.

mik
źródło