LINUX.ORG.RU

SCTP recv problems

 , ,


0

2

Здравствуйте!

Есть некое ПО, использующее SCTP и работающее на одной машине, но не работающее на другой. Все ПО и сетевые настройки на машинах абсолютно идентичны — для исключения эффекта разной кривизны рук/глаз обе машины загружались с linux liveusb и далее запускался скрипт в духе:

rpm -Uvh software.rpm
echo ... > /etc/software.conf
ip a add ...
ip r add ...
service software start

В поисках источника проблемы докатились до того, что написали маленький SCTP-сервер, который точно так же работает только на одной из машин:

#!/usr/bin/perl

use strict;
use Socket;

my $proto = getprotobyname('sctp');

socket(server, PF_INET, SOCK_RAW, $proto) || die "socket error: $!";
bind(server, sockaddr_in(0, INADDR_ANY)) || die "bind error: $!";

my $buffer;

while (1) {
  print "recv wait ...\n";
  my $paddr = recv(server, $buffer, 65535, 0);
  my ($port, $iaddr) = sockaddr_in($paddr);
  print "recv from [".inet_ntoa($iaddr)."]\n";
}

На одной машине поведение такое:

# ./sctp.pl
recv wait ...
recv from [10.10.10.1]
recv wait ...
recv from [10.10.10.1]

и:

$ tshark -i eth0 -R 'sctp'
Capturing on eth0
  9.304980 10.10.10.1 -> 10.10.10.2 SCTP 86 INIT
  9.305173 10.10.10.2 -> 10.10.10.1 SCTP 50 ABORT
 39.426030 10.10.10.1 -> 10.10.10.2 SCTP 86 INIT
 39.426237 10.10.10.2 -> 10.10.10.1 SCTP 50 ABORT

На другой:

# ./sctp.pl
recv wait ...

и:

$ tshark -i eth0 -R 'sctp'
Capturing on eth0
  5.112609 10.10.10.1 -> 10.10.10.2 SCTP 86 INIT
  6.212575 10.10.10.1 -> 10.10.10.2 SCTP 86 INIT

Отчего INIT-пакеты не добираются до сервера? Да, iptables на обоих машинах отсутствует, модуль sctp не загружен, ipv6 выключен.


Ответ на: комментарий от val-amart

Работающий и неработающий? Никак, провод перетыкается из одного в другой (сетевые настройки идентичны).

Или речь про 10.10.10.1 -> 10.10.10.2? MPLS в пределах города, но можно, наверное и поближе проверить в пределах одного сегмента.

enp
() автор топика

учитываю «Все ПО и сетевые настройки на машинах абсолютно идентичны — для исключения эффекта разной кривизны рук/глаз обе машины загружались с linux liveusb» и просто перетыкался сетевой шнурок из одной в другую - проблема на стороне маршрутизатора/свича; машинки отличаются mac`ами - может он где прошит. Задайте идентичный mac принудительно..и при перетыкивании выдерживайте значительную паузу

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Да, arp cache тоже был заподозрен, но раз через некоторое время машины начинают друг друга пинговать, то дело, очевидно, не в нем.

enp
() автор топика
Ответ на: комментарий от enp

чудес-же не бывает на свете :-) раз весь софт с софтовыми настройками гарантированно одинаков - дело не в нём. Остаётся сеть и сетевое железо.

Подозрение №1 - в ближайшем маршрутизаторе SCTP разрешён только для машинки с конкретным mac`ом.

Подозрение №2 - на какой-то машинке стоит левый китайский MAC (болезненно пройденный этап - не все mac`и одинаково полезны), который либо дублируется в сегменте либо попадает в служебные диапазоны.

Подозрение №3 - могут быть замороки с настройками QoS, VLAN в ближайшем коммутаторе. Вы же sctp видимо голос/видео гоняите? вот админ и навыставлял правил и приоритетов

Подозрение №4 (из области фантастики) - сложноуловимая связь между исправностью сетевой платы, выставленным mtu и собственно sctp

зы. по поводу «arp cache тоже был заподозрен» - паузу, причём большую надо выдерживать не ради него. У sctp есть multihome режим - стоит выдерживать таймер пока все альтернативы точно обломаются.

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.