Jump to content
Калькуляторы

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

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

 

$| = 1;

не ?

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

$| = 1;

не ?

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

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

Edited by doubtpoint

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
индексы создавали надеюсь? :)

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

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

Смотреть tcpdump.

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

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

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

Edited by doubtpoint

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Cramac

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by aivanzipper

Share this post


Link to post
Share on other sites

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

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

Например

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

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this