[Sysadmins] SCTP recv problems

Eugene Prokopiev enp на itx.ru
Ср Фев 5 15:03:50 MSK 2014


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

Есть некое ПО, использующее SCTP и работающее на одной машине, но не
работающее на другой. И там, и там свежий t7/branch, очевидной разницы
в конфигурации нет. В поисках источника проблемы докатились до того,
что написали маленький 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 eth1
  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 на обоих машинах отсутствует.

-- 
WBR,
Eugene Prokopiev


Подробная информация о списке рассылки Sysadmins