Utknąłem, próbując skonfigurować więcej niż 65536 wychodzących połączeń TCP z systemu Linux (RedHat5).
Skonfigurowałem już zarówno skrzynki wychodzące, jak i akceptujące, aby umożliwić wystarczającą liczbę deskryptorów plików.
Nie sądzę, że po stronie akceptującej występuje problem - mam wiele pól docelowych, każde z wieloma adresami IP i używam wielu portów.
Z drugiej strony nie sądzę, że osiągam limit adresu IP - używam wielu adresów IP i portów (otwieram połączenia z portów 30 000 - 60 000 dla każdego z kilku adresów IP).
Czy brakuje mi parametru dostrajania jądra systemu Linux? A może jakiś podstawowy limit w TCP?
Błąd polega na tym, że moja aplikacja do otwierania połączeń jest zawieszona w wywołaniu connect ().
Dzięki za pomoc NickB
Odpowiedzi:
Oto blog, na którym ktoś dostał> 1 000 000 outbounds z pudełka.
źródło
Protokół TCP używa tylko 16 bitów dla portu docelowego i źródłowego. Nie będzie możliwości otwarcia więcej niż 65536 portów jednocześnie - nawet w systemie Linux.
źródło
W tym kontekście „pojedynczy interfejs” oznacza pojedynczą sieć z przypisanym pojedynczym adresem IP. Każde wychodzące połączenie TCP jest powiązane z osobnym portem, więc twój przykład nie jest możliwy.
źródło