Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Оптимизация работы PPP  (Прочитано 31062 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 21-01-2010 12:17 » 

На FreeBSD 7.1 используется ppp для поддержки соединения с провайдером через PPPoE.

Суть в том, что на 100 Мбит/с сетке без ограничений по скорости предельная скорость колеблется лишь около 1,5 Мб/с при теоретическом потолке около 10-12 Мб/с. top показывает, что в процессе передачи данных со скоростью 1,5 Мб/с idle системы 0%, остальное всё уходит на system, interrupt (в основном и примерно поровну того и другого) и user (мало); время CPU целиком уходит на ppp.

Машина старая и хилая (PII, 266 МГц), RAM много.

Вопрос: кто занимался подобными вещами и знает, какие опции ppp можно отключать/включить, чтобы повысить производительность? (Экономией трафика можно пренебречь.)
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-01-2010 12:36 » 

Не знаю, сильно ли отличается текущая версия pppd от 2.4.1, с которой разбирался лет 6 назад. Принцип там, помнится, такой, что к терминалу (pty) цепляется дисциплина ppp, а процессу необходимо считывать данные из терминала. Соотв., производительность упирается в планировщик процессов - как быстро и как часто он передает управление pppd. Машинка действительно хилая. 1.5 МБ/с это минимум 1000 пакетов в секунду. Участие user-space тут наверняка является узким местом.

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

« Последнее редактирование: 21-01-2010 12:38 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 21-01-2010 12:43 » 

может где-то установлено в конфигах ppp
set speed
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 21-01-2010 13:16 » 

Слав, эта опция имеет смысл только для ttyS.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 21-01-2010 14:14 » new

RXL, стоп, про pppd речь не шла. Речь про клиент (ppp), а не про сервер (pppd).

Про сжатие я уже тоже думал - попробую на досуге.

Про переключение процессов... понял про демон, понял про устройство, не понял, про какой процесс идёт речь, и между чем происходит переключение. Теоретически для уменьшения числа переключений можно было бы попробовать изменить приоритет, вот только чей? Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 21-01-2010 14:43 » 

pppd - симметричный протокол и соотв. симметричный демон. pppoe - плагин к нему.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 21-01-2010 18:35 » 

Выключение компрессии скорость чуть увеличило до 1.8 Мб/с, но, конечно, радикально вопрос не решило.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 21-01-2010 22:04 » 

Dimka, какая версия pppd? Недавно вышла версия 2.4.5 попробуй до нее обновится, вполне возможно что будут изменения в лучшую сторону.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 22-01-2010 08:11 » 

Код:
# pppd --version
pppd version 2.3 patch level 5
Какое было в дистрибутиве, таким и пользуюсь Улыбаюсь

Попробую поменять. Главное, чтобы стабильная была.

В портах тоже 2.3.
« Последнее редактирование: 22-01-2010 08:13 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 01-02-2010 23:52 » 

Никакие версии ppp или pppoe погоды не делают, так как работают в user mode. В kernel mode работает демон mpd. Скорость возросла до 5.3-5.4 Мб/с, при этом idle 10%, interrupt 90%, остальное по нулям.

Можно ещё, конечно, с mtu поиграться, чтобы пакеты из локальной сети не приходилось резать и пересобирать для отправки в канал...
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 02-02-2010 07:12 » 

MTU, к сожалению, до 1500 не доведешь - распухший ethernet-пакет может не пройти.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 07-02-2010 18:58 » 

Сейчас борюсь с pptp и нашел некоторые интересные аспекты, которые, Дим, могли и у тебя проявляться.

Например, pptp много писал в syslog, а тот часто сбрасывал строки в лог. Это существенно замедляло работу (до 40% ожидания io на P4 2.8 ГГц). Параметрами pptp подавил логирование (--loglevel 0) и проблема исчезла.
Писались в лог строки типа: accepting packet 877490 (expecting 877489, lost or reordered)

Далее, с MTU, а точнее с MSS в TCP боролся так (у меня не BSD, а Linux, но наверно и в BSD можно что-то подобное):
Код:
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
TCPMSS     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 tcpmss match 1421:65535 TCPMSS set 1420
Смысл: для всех TCP пакетов с флагом SYN, если MSS более 1420, принудительно установить MSS 1420 (что равно MTU - 40).
Это нужно для тех случаев, когда IP пакеты имеют флаг DF (don't fragmentaion).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 08-02-2010 08:32 » 

Я пока обнаружил положительный момент mpd по сравнению с ppp - надёжность. Бывает, что связь обрывается, провайдер перегружает свой сервер или какие-то работы на линии проводит. В этих случаях у меня ppp зависал и соединение не восстанавливал ни при каких параметрах. Доходило до того, что по cron вешал скрипт, который ежеминутно проверял и в случае необходимости убивал ppp, запуская заново. mpd таким не страдает и восстанавливает соединение после любых пауз.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 08-02-2010 11:00 » 

У меня pppd сам рестартует: параметры: permanent maxfail 0
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 08-02-2010 12:25 » 

Странно слышать что pppd зависает. Он постоянно шлют KeepAlive, и в случаи чего завершает свою работу.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 08-02-2010 12:53 » 

Serg79, у Димки FreeBSD - может там как-то иначе работает, чем в Linux-е.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 08-02-2010 17:50 » 

Да ладно RXL все то же самое, только обвязку в виде Makefile сделали что бы можно было из портов собирать.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 13-02-2010 15:23 » 

Serg79, там старый ppp Улыбаюсь


Комментарий для тех, кто пойдёт моим путём и будет использовать mpd.

Есть маленькая тонкость. Вызывала у меня вопросы странная ситуация, когда половина сайтов не открывалась или открывалась с гигантсткой задержкой (минут 10-15). Сперва грешил на DNS - очень странно он себя вёл, заявлял, что ответы с forward сервера ненадёжные, опрашивал secondary сервер и т.д.

Но тут нашёл иное объяснение. mpd по какой-то причине не обрабатывает длинные IP-пакеты, и они банально теряются. Лечится добавлением в конфиг параметра:
Код:
set iface enable tcpmssfix

В остальном пока полёт нормальный. Если ещё что-то будет - напишу.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 13-02-2010 15:33 » 

Dimka, это проблема с DF и MTU туннеля < 1500. Как и с любым другим туннелирующим протоколом, основанным на пакетном транспортном протоколе. Если бы для транспорта использовался TCP, то проблемы бы не было. Я тоже это лечил:
https://forum.shelek.ru/index.php/topic,23196.msg226250.html#msg226250

Еще интересный факт: снифер мне показал, что одни сайты задают MSS равный возможностям интерфейса - тогда пакет, при проходе через зауженный канал, можно фрагментировать, а другие - много-много больше (например, 2000 или 5000) и уже при передаче через интерфейс самого сайта он фрагментируется и, как следствие, выставляется DF. А некоторые сайты используют MSS, равный возможностям канала, но DF все равно выставляют. Чудеса...
Во всех случаях коррекция MSS в SYN-пакетах лечит проблему.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 13-02-2010 15:46 » 

MTU 5000... Вроде как на всяких FDDI и прочих высокоскоростных линиях большие MTU.

Но за всё надо платить Улыбаюсь После этого изменения конфигурации скорость упала до 4.5-4.6 Мб/с. Расклад по ресурсам: user 0%, system 2%, interrupt 85%, idle 13%.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #20 : 13-02-2010 18:48 » 

Дим, не MTU, а MSS! Уровень TCP.
Типично, заголовок IP+TCP занимает 40 байт. Максимальный размер пакета = MSS + 40. Если он больше MTU, то фрагментируется. Если в заголовке IP стоит DF, то он отбрасывается.
« Последнее редактирование: 13-02-2010 18:51 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #21 : 14-02-2010 11:40 » 

RXL, я лишь про то, что выбор MSS зависит от MTU. Большие MSS имеют смысл на линиях с большим MTU.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 14-02-2010 11:55 » 

https://forum.shelek.ru/index.php/topic,23196.msg226888.html#msg226888
Снифер показывает, что многие сайты выбирают MSS не по MTU. Вероятно это оптимизация сетевой подсистемы, чтобы меньше пакетов обрабатывать (полагаю, что фрагментация на выходе интерфейса происходит уже после всех фильтров).

Сейчас попробовал, но не смог повторить эксперимент.
« Последнее редактирование: 14-02-2010 12:05 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines