Модуль tcp_probe не выводит - PullRequest
       50

Модуль tcp_probe не выводит

1 голос
/ 24 марта 2012

Я пытаюсь построить окно перегрузки TCP и порог медленного запуска, используя iperf и модуль tcp_probe. Я делаю именно то, что здесь сказано:

для получения данных:

modprobe tcp_probe port=5001

chmod 444 /proc/net/tcpprobe

cat /proc/net/tcpprobe >/tmp/tcpprobe.out &

TCPCAP=$!

iperf -i 10 -t 100 -c receiver

kill $TCPCAP

Oops!

/ tmp / tcpprobe.out пуст: (

Это Ubuntu 11.04 x86

и уже попробовал то же самое на Ubuntu 11.04 x64

Есть предложения?

Ответы [ 6 ]

3 голосов
/ 22 октября 2015

Функция ввода-вывода в стандартной библиотеке C по умолчанию использует буфер, обычно 4 КБ, поэтому функция fread () возвращается только при заполнении буфера или EOF.Вы можете использовать небольшой буфер, 128 байт, см .:

dd if = / proc / net / tcpprobe ibs = 128 obs = 128

Теперь сообщение быстро сбрасывается.

3 голосов
/ 29 января 2013

У меня была такая же проблема.Что сработало для меня:

modprobe -r tcp_probe

sudo modprobe tcp_probe port=5002 full=1

sudo chmod 444 /proc/net/tcpprobe

cat /proc/net/tcpprobe > /tmp/tcpprobe.out &

TCPCAP=$!

iperf -c <servers IP address here> -p 5002 -t 100 -i 1

sudo kill $TCPCAP

Посмотрите параметры iperf, чтобы проверить, что вам нужно (-t 100 -i 1), набрав:

man iperf
2 голосов
/ 25 марта 2012

По умолчанию журнал tcp_probe регистрируется только при изменении cnwd, попробуйте modprobe tcp_probe ... full=1.

Ссылка на исходный код Linux: http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/net/ipv4/tcp_probe.c#L47

1 голос
/ 09 апреля 2014

У меня была похожая проблема, модуль tcp_probe выводит только через неочевидные промежутки времени.Я создал его модифицированную версию, которая сбрасывает все полученные сегменты TCP.Это замедляет работу системы, но позволяет лучше контролировать кратковременные соединения, такие как HTTP.

Найти здесь исходный код модуля .

0 голосов
/ 03 марта 2015

Еще одна проблема, которая не приводит к выводу - это разрешение файла для выходного файла tcpprobe.out

когда cat tcpprobe напрямую, он может видеть вывод, но если перенаправить вывод файла, размер выходного файла равен 0, что напоминает мне, что это проблема с разрешениями ...

0 голосов
/ 15 июля 2014

Очень поздний ответ, но я сам боролся с этим вопросом.Я пробовал версию, предоставленную Dyna, но все еще не получил вывод, независимо от используемых параметров.В конце концов, я обнаружил, что проблема была в порядке.

Я использовал tcp_probe так: установил / активировал модуль, запустил какое-то приложение tcp (я запускал некоторые модульные тесты tcp), затем запустилскопируйте процесс для / proc / net / tcpprobe (как показано в других ответах) и затем удалите / остановите модуль.Правильный способ - запустить процесс копирования (исключая уничтожение процесса) ПЕРЕД тем, как вы выполняете интенсивное tcp-действие.Продолжайте процесс cat, пока выполняете действие tcp, и только потом убивайте его.

Довольно унизительный опыт для меня, так как потребовались часы, чтобы понять это.Надеюсь, люди найдут это полезным.

...