2011-06-17 2 views
0

TCP не определяет приоритет трафика, такого как IP. Когда открыто много фоновых подключений TCP, которые загружают данные (например, при посеве BitTorrent в фоновом режиме), может возникнуть задержка для определенного сокета, поскольку TCP будет выбирать только один сокет за раз, чтобы отправлять свои пакеты на уровень IP. Поэтому конкретный сокет должен ждать своей очереди, кроме множества других соединений, без какого-либо приоритета, что приведет к задержке.Измерение задержки TCP от ядра Linux

В настоящее время я экспериментирую, и я пытаюсь измерить задержку, создаваемую TCP, в таких ситуациях перегрузки. Поскольку эта задержка происходит на уровне транспорта (TCP), я собираюсь сделать точные измерения задержки, подключив точные моменты, когда используются некоторые системные вызовы Linux.

Я готов загрузить данные на сервер с использованием TCP (я могу использовать инструмент Iperf). Для подключения системных вызовов я хочу использовать SystemTap. Этот инструмент может рассказать мне точный момент, когда вызывается конкретный системный вызов.

Я хочу знать, какие имена двух системных вызовов, используемых при передаче пакета:

  1. Первая функция уровня TCP называется для пакета (это он * tcp_sendmsg *);
  2. Последняя функция уровня TCP вызвала пакет, который передает ему уровень IP-сети?

Разница (дельта) между моментом вызова этих двух системных функций - это задержка, которую я хочу знать.

+0

может быть немного не по теме, но если вы хотите добавить приоритет TCP соединений, вы можете сделать это, с управлением QoS посмотрите [здесь] (http://www.prout.be/qos/QoS-connection-tuning-HOWTO.html) или там [Linux Advanced Routing & Traffic Control] (http://lartc.org/howto/) –

ответ

1
  1. Первой функцией уровня TCP, называемой пакетом, является * tcp_sendmsg * из исходного файла системы net/ipv4/tcp.c.
  2. Последней функцией уровня TCP, вызываемой для пакета, является * tcp_transmit_skb * из исходного файла системы net/ipv4/tcp_output.c.

Интересный сайт с информацией о TCP исходных файлов из Linux это: tcp_output

Смежные вопросы