powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как приоритезировать входящий трафик (ftp) на CentOS 3?
10 сообщений из 10, страница 1 из 1
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35069604
Frame Relay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Есть необходимость задать максимальный приоритет входящему трафику для ftp (с определённым айпишником) ночью и обратная задача — задать минимальный приоритет для этого же ftp-адреса днём (качается wget-ом без ограничения полосы, так чтобы реально занимать ширину канала только при отсутствии других потребителей).
Как этого добиться в определённое время суток — это я знаю, по крону. :-)
А вот приоритезация не получается. Перечитал кучу манов и доков по iproute2 и т.п. Но там в основном расписано про исходящий трафик, а про входящий в лучшем случае сообщается, что это затруднительно и средств немного. А главное, внятных примеров не приводится :-(
Можно ли вообще приоритезировать входящий трафик на Линухе с ядром 2.4.21-40.EL (CentOS 3)?
Шейпить нет необходимости.

Конкретно — есть ftp-сервак с определённым адресом, с которого скачиваются большие файлы (не обязательно фильмы ;-). Он работает непостоянно и непредсказуемо, причём срок хранения файлов также непредсказуем для внешнего мира (это домашняя машина, с публичным ftp, причём файлы удаляются по мере ненадобности хозяину — могут лежать и год, а могут день :-( — хозяин-барин, спасибо и на том, что вообще их выставляет). Поэтому скачивать нужно максимально быстро, в то же время есть низкоприоритетные закачки с других сайтов. Качать только с вышеупомянутого сервака не подходит, так как он работает не всегда, канал будет незадействован. Кроме того, скорость скачки с него колеблется из-за перегрузок где-то на маршруте.
Поэтому есть необходимость задать входящему трафику с этого сервака наивысший приоритет, но так, чтобы при недоступности сервака канал полностью использовался другими потоками. Кроме того, если входящий трафик с него не занимает всю ширину канала (у меня), оставшуюся полосу должны использовать другие закачки.

Возможно ли решение проблемы приоритезацией входящего трафика?

Другой вариант — отслеживать доступность эфтипишника периодически (раз в несколько минут) пингом, при недоступности поднимать другие закачки, при возобновлении их останавливать. Для меня проще наваять такое на C (запуск и управление процессами wget-ов). Но такое решение не учитывает частые недогрузки канала трафиком с вышеназванного эфтипишника.

Дано — IP-адрес и порт назначения. Ширина канала (у меня) 56К :-(
Если есть решение по приоритезации, то прошу по возможности пример.
Только не отсылайте снова к манам :-)
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35069658
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, толком это реализуемо только в ftp-клиенте. Т.е. надо искать ftp-клиент или download-менеджер, который имеет такую фичу.
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35069678
Gallagher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в *bsd был такой модуль ipfw
поищите аналог под линукс
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35069711
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallagherв *bsd был такой модуль ipfw
поищите аналог под линуксЭто файерволл (пакетный фильтр)? тогда аналог - iptables. Только не представляю, как он может помочь.
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35069732
Gallagher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он позволяет также дропать часть пакетов, эмулировать задержки, бить пакеты и много чего ещё - от определённых IP адресов. В лучшем случае, автор найдёт способ напрямую повлиять на скорость приёма ftp-server'а, если таковой настройки нет у него :)

А если такая настройка существует, то не вижу проблемы написать скрипт, который будет следить за текущими подключениями (на основе netstat) и, в случае появления нужных ему клиентов, поднимать им скорость аплоада, понижая её всем остальным.
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35069758
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallagherОн позволяет также дропать часть пакетов, эмулировать задержки, бить пакеты и много чего ещё - от определённых IP адресов. В лучшем случае, автор найдёт способ напрямую повлиять на скорость приёма ftp-server'а, если таковой настройки нет у него :)Дропать пакеты, которые уже пришли? А смысл? Как минимум, это снижает КПД канала, который и так не фонтан.

Имхо, единственный путь - надо задерживать (именно задерживать, а не дропать) отправку TCP-подтверждений. Но как это сделать вне приложения, владеющего сокетом - не знаю.
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35070038
Gallagher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой ftp сервер используете?
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35070095
Gallagher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, туплю. Просто много текста, суть потерял ) Вам же на клиенте нужно приоритет?

авторДругой вариант — отслеживать доступность эфтипишника периодически (раз в несколько минут) пингом, при недоступности поднимать другие закачки, при возобновлении их останавливать. Для меня проще наваять такое на C (запуск и управление процессами wget-ов). Но такое решение не учитывает частые недогрузки канала трафиком с вышеназванного эфтипишника.


А почему бы и нет? А чтобы всегда "забивать" канал - лучше при появлении вашего долгожданного сервера в сети другие закачки не останавливать, а перезапускать с другой скоростью (wget --limit-rate=RATE) из расчета опять таки с "забитости" вашего канала. А померять его можно тем же нетстатом. В целом тут даже без сей можно обойтись - средств sh хватит.

Или действительно поискать менеджер закачек. Кстати, посмотрите в сторону mldonkey. Или тупо в лоб
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35070578
Frame Relay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы.

2 Gallagher
Сервак, судя по его response: Serv-U FTP Server v6.0 for WinSock
Т.е. виндовый.
Действительно, наиболее подходящим мне представляется отслеживание доступности сервака (скорее всего пингом, чтобы не использовать отдельный коннект, число коих ограничено).

Кстати, кто-нибудь уже копал сорцы wget-а? Как там реализовано ограничение скорости?
...
Рейтинг: 0 / 0
Как приоритезировать входящий трафик (ftp) на CentOS 3?
    #35070813
Gallagher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
static void
limit_bandwidth (wgint bytes, struct ptimer *timer)
{
  double delta_t = ptimer_read (timer) - limit_data.chunk_start;
  double expected;

  limit_data.chunk_bytes += bytes;

  /* Calculate the amount of time we expect downloading the chunk
     should take.  If in reality it took less time, sleep to
     compensate for the difference.  */
  expected =  1000 . 0  * limit_data.chunk_bytes / opt.limit_rate;

  if (expected > delta_t)
    {
      double slp = expected - delta_t + limit_data.sleep_adjust;
      double t0, t1;
      if (slp <  200 )
        {
          DEBUGP (("deferring a %.2f ms sleep (%s/%.2f).\n",
                   slp, number_to_static_string (limit_data.chunk_bytes),
                   delta_t));
          return;
        }
      DEBUGP (("\nsleeping %.2f ms for %s bytes, adjust %.2f ms\n",
               slp, number_to_static_string (limit_data.chunk_bytes),
               limit_data.sleep_adjust));

      t0 = ptimer_read (timer);
      xsleep (slp /  1000 );
      t1 = ptimer_measure (timer);

      /* Due to scheduling, we probably slept slightly longer (or
         shorter) than desired.  Calculate the difference between the
         desired and the actual sleep, and adjust the next sleep by
         that amount.  */
      limit_data.sleep_adjust = slp - (t1 - t0);
      /* If sleep_adjust is very large, it's likely due to suspension
         and not clock inaccuracy.  Don't enforce those.  */
      if (limit_data.sleep_adjust >  500 )
        limit_data.sleep_adjust =  500 ;
      else if (limit_data.sleep_adjust < - 500 )
        limit_data.sleep_adjust = - 500 ;
    }

  limit_data.chunk_bytes =  0 ;
  limit_data.chunk_start = ptimer_read (timer);
}
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как приоритезировать входящий трафик (ftp) на CentOS 3?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]