Перейти к содержимому
Калькуляторы

DHCP server with SQL support on Perl DHCP сервер с базой SQL на Perl, с опцией 82, маршрутами и прочим

По моему вопросу, я обнаружил, что пишется в файл кусками по 8 кбайт. Как бы заставить писать по строчно?

 

$| = 1;

не ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а нет примерчика как записать в базу ответ?

Есть, и в этом топике я его уже выкладывал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть, и в этом топике я его уже выкладывал...

да, уже подсказали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

$| = 1;

не ?

Спасибо за ответ, хотя я уже сам нашел...(Если кому тоже нужно, полностью команда выглядит select((select(LOGFILE), $| = 1)[0]); # make unbuffered write)

Еще выражаю спасибо автору скрипта за грамотную реализацию полезной вещи. Уже допилили для себя и запустили в тестовой эксплуатации... Скоро напишу результаты по производительности. Cтарый isc-dhcp загнулся примерно на 15`000`000 запросов в день :-(

Изменено пользователем doubtpoint

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Узкое место - база.

Остальное можно победить более мощным процом или увеличением количества тазиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Cтарый isc-dhcp загнулся примерно на 15`000`000 запросов в день :-(

Хренасе 15М/86400 = 173q/s, а какой лизтайм, позвольте поинтересоваться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Узкое место - база.

Остальное можно победить более мощным процом или увеличением количества тазиков.

 

Да почему слабое место? Кто мешает сделать master-slave репликацию и делать select'ы в slave-базы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Cтарый isc-dhcp загнулся примерно на 15`000`000 запросов в день :-(

Хренасе 15М/86400 = 173q/s, а какой лизтайм, позвольте поинтересоваться?

2000-4000 сек. По dhcp snooping, ip unnumbered, pbr идет авторизация и это способ блокировать интернет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да почему слабое место? Кто мешает сделать master-slave репликацию и делать select'ы в slave-базы?

У меня в тестах и на практике база отрабатывает дольше скрипта, и хуже параллелит обработку запросов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня в тестах и на практике база отрабатывает дольше скрипта

индексы создавали надеюсь? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

индексы создавали надеюсь? :)

На тестах у меня в таблице было всего пара записей.

Можете сами поэкспериментировать.

Нагружал, кажется, dhcp-perf.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите, что то мне не везет с ДХЦП...

 

Клиент тестовый и сервер находятся в 1 свитче(es2529M) в разных вланах. Релеит все другой свитч (es4612).

 

Так вот клиент отправляет запрос, сервер его видит (судя по логам) около 10 DHCPPDISCOVER (все за 1 сек 15:36:13) на что в это же время сервер отправляет ему столько же DHCPOffer (так же за 1 сек 15:36:13)

Через 2.5 минуты с небольшим приходит уже 1 DHCPPDISCOVER на что ему сразу DHCPOffer и через 2 сек отправляется DHCPREQUEST и все, клиент получает ИП и работает.

 

Пните в какую сторону смотреть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А в чем проблема? Клиент получает через 2,5 мин адрес?

Смотреть tcpdump.

Вероятно не то или не тому отправляется.

PS: Возможно не так обрабатывается адрес ip requered. После клиент отправляет уже без этого адреса. Но это только предположение, надо смотреть кто чего запросил и что ответили.

PS: Вообще после дисковер должен быть DHCPREQUEST, после на него сервер отвечает DHCPACK и только тогда адрес используется.

Изменено пользователем doubtpoint

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

е так обрабатывается адрес ip requered. После клиент отправляет уже без этого адреса. Но это только предположение, надо смотреть кто чего запросил и что ответили.

PS: Вообще после дисковер должен быть DHCPREQUEST, после на него сервер отвечает DHCPACK и только тогда адрес используется.

Всё нормально. Это так работает релей у Зюхелей :) P.s.(прям созвучно :) )

Он там их сам себе отправляет, из за чего то. Точно не разбирался... В общем помогло на релее, убираение ушлюза по умолчанию, и тогда через релей, всё ходило нормально :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, только не зуксель а edge-core у нас, но они вроде как одинаковые...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Cramac

Ну относительно edge-core, сказать не могу. Не крутил их на предмет релея.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сегодня мой модифицированный вариант благополучно пережил флуд от одного из клиентов, порядка 350 запросов в секунду. При этом он создавал нагрузку порядка 70-80% на проц (2-головый атлон 5000+). Вроде как проблем никаких не вылезло...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никто использование пулов еще не делал? Буду добавлять возможность работы с динамикой, может у кого наработки есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас сделано, но тестил пока только "на столе"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хотелось бы иметь возможность на некоторые порты вешать пул, понадобилось когда поставили ВИФИ на дачи :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Блин, разобраться в коде крайне сложно - используются глобальные переменные и мало комментариев :(

Изменено пользователем aivanzipper

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Интересное решение :)

Для тех кто не силен в перле, нашел реализацию на php - http://angelo.dinardi.name/2009/09/09/a-dhcp-server-in-php-why-not/ (работоспособность не проверял)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никто использование пулов еще не делал? Буду добавлять возможность работы с динамикой, может у кого наработки есть?

Так логика очень проста. Единственное надо понять что хочешь сделать.

Например

На запрос discover или request

1)Посмотреть есть ip c мак (и другие анализируемые параметры) в базе. Если есть, пометить их текущим временем лизы и сообщить клиенту.

2)Если нету, запросить в базе самую старую просроченную лизу. Ее пометить текущим временем и выдать клиенту.

 

Причем логика на discover request одинаковая (только ответ offer или ack)

 

PS: код достаточно прост если есть опыт работы на перл и прочел логику dhcp на уровне wiki.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.