Я занимаюсь исследованиями в области bigdata. Для этого я разработал сеть с несколькими узлами, обменивающимися одноадресными и многоадресными пакетами UDP. Существуют UDP-пакеты с 33792 байтами и Ack-пакеты с 37 байтами. MTU установлен на 1500. Все работает нормально, давайте скажем, от 300 до 5000 пакетов. Затем вдруг какая-то машина получает пакет (я вижу его с tcmpdump -i any -vvv -XX -e -s 64 > dump.txt 2>&1
). Но сокет приложения не получает его (выбор не просыпается).Пакет многоадресной рассылки UDP, полученный с помощью tcmp, но не полученный сокетом
Я использую сокеты IPv4 с TTL, установленным в 1, то есть в локальной сети.
После ночи, пытаясь решить, я в конечном итоге установка:
sudo sysctl -w net.core.wmem_max=134217728
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.ipv4.udp_mem=1638400 1638400 1638400
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -w net.core.netdev_max_backlog=262144
sudo sysctl -w net.core.optmem_max=134217728
sudo sysctl -w net.ipv4.udp_rmem_min=65535
sudo sysctl -w net.ipv4.udp_wmem_min=65535
The client sockets set SO_SNDBUF to 134217728 (128 M), and server socket sets SO_RCVBUF to same value.
Но похоже, до сих пор не решена проблема. Есть предположения??? .... TIA
Э? 'Пойманный 'tcpdump', но' не может видеть его с помощью' tcpdump' 'и' получено сокетом ', но' socket desn't его принимает '? Прими решение. – EJP
Спасибо за консультацию. Я отредактировал вопрос. –
Какая ОС вы используете? Что вы подразумеваете под «какой-то машиной получает пакет»? Это другой компьютер, который работает с приложением приложения? –