Версия: 1.05
Лицензия: BSD
Тестировалось на: FreeBSD 7.3
Скачать: uTPControl-1.05.tar.gz
Предназначена для “мягкого” отключения uTP протокола при прохождении шлюза/маршрутизатора.
Мягкое - пакеты не блокируются, при обнаружении пакетов очень похожих на uTP генерируются uTP RST пакеты с точно такими же IP/port и отправляются следом.
Даже если будет ложное срабатывание - все пакеты пройдут без изменений, и придут дополнительные, которые, скорее всего, будут отброшены принимающей программой как ошибочные.
Размер генерируемых пакетов менее 64 байт.
подробнее см: man divert
Устанавливается на сервер, через который идёт траффик в/из интернета.
Скачиваем, и собираем из исходников.
В правила ipfw добавляем:
add tee 9999 udp from any to any via em0
9999 - порт диверт сокета, на котором будет висеть программа
em0 - интерфейс через который ходит трафик.
Запускаем саму программу, например так:
uTPControl -b 9999 -d -u nobody -g nogroup -p /var/run/uTPControl.pid
-h - показать подсказки и выйти
-d - стать демоном (отключится от консоли и продолжить работу)
-b port - порт диверт сокета, на котором принимать данные от ipfw
-c CPUnum - привязка к процессору
-p PID file - путь к файлу куда сохранить PID на время работы, сам удалится по завершению программы
-u uid|user - идентификатор/логин пользователя под которым работать после запуска
-g gid|group - идентификатор/группа группа под которым работать после запуска
Сама программа довольно проста: 1 сокет, 1 буффер, 1 поток.
Читаем из сокета, анализируем и пишем обратно при необходимости и тд. Запаса скорости по оптимизации кода практически нет.
Для более оптимальной работы заворачивать весь трафик на программу не нужно, и даже вредно.
Лучше всего будет заворачивать входящий из интернета в локальную сеть: эффект будет тот же, но меньшая нагрузка на интернет канал и на сам сервер, через который идёт трафик. И чужие юзера не получат ничего лишнего.
На нагруженных серверах не рекомендую применять без предварительного тестирования. Для начала хотя бы с маленьких сегментов стоит трафик позаворачивать и мониторить загрузку.
Скачиваем последний uTorrent (2 и более), в настройках ставим:
bt.transp_disposition = 10
(чтобы только по uTP всё качалось).
Закачиваем торрент файл, по популярнее какой нибудь, чтобы пиров было по больше.
Запускаем закачку в начале с выключенной программой uTPControl.
Смотрим чтобы появились пиры.
Запускаем uTPControl на сервере.
Если всё сделано правильно то пиры начнут исчезать из списка и за пару минут исчезнут полностью.
2010.06.07 - 1.05
2010.06.05 - 1.04
2010.06.03 - 1.03
2010.06.02 - 1.02
2010.06.01 - 1.01