Только один из двух портов IP-трафика локальной сети передается пользователю

У меня есть настройка сервера с двумя портами 10GE CX4 на одной карте Ethernet. Мы используем два порта из-за высокой скорости передачи данных (1,6 ГБ в секунду), инкапсулированной в пакеты данных UDP / IP. Трафик распределяется между двумя портами и используя tshark в качестве «root». Я вижу, что IP-пакеты поступают на каждый порт (ens1f0 и ens1f1) в правильном формате.

Однако, когда я запускаю от имени пользователя root или пользователя и пытаюсь прочитать данные на каждом порту с помощью программ на Python и / или C ++, я получаю данные только от ens1f1. Прикладная программа создаст сокет для другого порта, но данные на этот сокет не передаются. Я предполагаю, что проблема заключается в настройке привилегий или разрешений в операционной системе, поскольку я знаю, что данные доступны на сетевой карте. Я использую копию той же самой программы на Python только с измененным IP-адресом. Я не вижу никакой разницы между конфигурациями для двух портов или в настройках таблиц IP.

У меня также есть второй сервер, настроенный таким же образом и с теми же настройками ifconfig и iptables и использующий те же программы на python и C ++, но я вижу тот же эффект, но во втором случае видны только данные на ens1f0.

Может ли кто-нибудь предложить какие-либо предложения о том, где искать настройки или ограничения значений, которые могут повлиять на передачу данных через ядро ​​для пользовательских прикладных программ?

Большое спасибо заранее.

Добавлено: два порта являются двухточечными связями между двумя компьютерами, IP-адреса 10.0.0.5 и 10.0.0.4. Номера портов назначения - 60000 и 60001. В python мой код:

ANY = "0.0.0.0"

MCAST_ADDR = IPaddr # "10.0.0.4"

MCAST_PORT = PortNo # 60000 #

bufsize = 9000

sock = socket.socket (socket.AF_INET, socket.SOCK_DGRAM, 0)

  • "позволяют нескольким сокетам использовать тот же номер PORT "

sock.setsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

  • " Связать с портом многоадресной рассылки "

sock.bind ((MCAST_ADDR, MCAST_PORT))

sock.setblocking (0).

... Затем

try: data, addr = sock.recvfrom (bufsize) за исключением:

0
задан 6 June 2019 в 18:05

0 ответов

Другие вопросы по тегам:

Похожие вопросы: