ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: Inet-Admins
Inet-Admins mailing list archive (inet-admins@info.east.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [inet-admins] =?KOI8-R?Q?=D3=C5=D2=D4=C9=C6=C9=CB=C1=C3=C9=D1?= =?KOI8-R?Q?_=C2=C9=CC=CC=C9=CE=C7=CF=D7=CF=CA?= =?KOI8-R?Q?_=D3=C9=D3=D4=C5=CD=D9?=



> > > Во-вторых, в этом вопросе пока также нет готового стандартного и красивого
> > > решения, каждый изобретает свой велосипед по-новой. Или уже есть кстати?
> >   Нет. По идеология cisco - адрес выделяет NAS. 
> > > И кроме того, ничто не мешает acct-коллектору отрелеить/имитировать stop
> > > пакет куда сказано.
> >   А чем это лучше ситуации, когда auth sending stop to acct?
> Ничем не лучше. А оно надо? Об том и речь.

  Надо.

> Если выдавать адрес auth сервером, то впринципе можно продумать алгоритм
> кеширования и без завершающего сессию маркера (в вашем случае acct-stop).
> На вскидку -- признаком освобождения может быть и занятие этого же порта
> следующим клиентом...

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

> >   Ага, значит лог-файл все-таки есть и мы умеем его парсить? А ради чего
> > тогда все? Этот лог файл и является буффером. Бери из него в максимальном
> > темпе. Эффективная реализация tail описана много где. Зачем два механизма?
> > Чтобы глюки потом искать?
> > 
> Ради реалтайма.

  Почему чтение из socket/pipe претендует на подобие реал-тайма, а чтение
из такого-же хендла, но связанного с файлом на диске - нет? В чем разница?

> >   У тебя уже есть два надежных, простых, близких к NAS сервера, где ты
> > предлагаешь вести авторизацию. Отдай туда эккаунтинг и забирай/передавай
> > дальше. По любому протоколу.
> > 
> Можно.
> Только вопрос -- зачем? Повысить надежность. Надежность _чего_?

  В данном случае надежность системы эккаунтинга. Если же освобождать
адреса по событиям эккаунтинга, то и надежность системы авторизации.

> > > В начале сессии клиента мы загружаем его текущий баланс, лучше если это
> > > сразу время в секундах (деньги еще на стоимост поделить и округлить
> > > придеться;), 
> > 
> >   Пойми, ситуация когда можно поделить и округлить пройдена нами 5 лет
> > назад. Уже с вводом ночного тарифа все становиться веселее, а с nightsurf+
> > еще веселее, а с weekend еще, а с multilink еще.  Описанный тобой
> > алгоритм тарификации (ночью считаем 10 секунды за 5) не обеспечивает
> > достаточной точности расчетов и требует бессмысленных прерываний,
> > увеличивающих нагрузку на систему.
> > 
> В этом абзаце нет конкретики, ля-ля тополя ;)

  Извини, я думал, что все тут понимают проблему тарификации по сложным 
интервалам, и что делением/умножением тут далеко не уежешь. Ok. 
Подробности ниже.

> Нагрузку на систему как раз оказывают всевозможные подпорки, которым нет
> конца. Это не технология, это ее иммитация подручными средствами, об чем
> я и говорил ранее.
> Точность рассчетов равна кванту времени прерывания на одну сессию. Если
> сделать прерыватель каждую секунду, то и точность расчетов будет ровно
> 1 секунда. Можно и каждую микросекунду сделать, если проц успеет, только
> смысла в этом нет никакого.

  Да, точность расчетов равна квантам, которые у тебя 10сек. Я считаю, 
что уже эти 10 сек. создают неоправданную нагрузку, не говоря уже
о требуемых 1сек.

> >   Просто какой-то натуральный счет по пальцам. Чтобы сложить 8 и 7
> > ты делаешь прибавление 7 единиц.
> > 
> >   Поэтому я и говорю про обратный тарификатор, который переводит деньги в
> > секунды. Это сложный алгоритм. Но он есть и работает.
> > 
> Давай поконкретней тогда уж.
> Чем занимается обратный тарификатор, и что там за алгоритм у него такой
> сложный, что он не успевает отрабатывать за микросекунды процессорного
> времени, т.е. почему его нельзя выполнять каждую 1сек, а не раз в 5мин.

  Давай. В твоем случае нужен не обратный, а прямой тарификатор. Из секунд
в деньги.

  Этот модуль берет текущее время и позиционируется на абсолютной шкале
времени, поделенной отрезками различных тарифов (время суток, день недели,
праздники). После этого он берет _весь_ интервал работы текущего 
пользователя, и применяет этот отрезок к общей шкале времени, осуществляя 
то самое пошаговое интегрирование. Результат - потраченные деньги и 
предоплаченные часы.

> > > взводим таймер чтоб прерывал нас каждые 10 сек, в каждом
> > 
> >   Какие 10сек? Что за маразм? Таймер ставиться на столько секунд сколько
> > нужно для данного входа. И прерывает он нас - когда нужно. Опять-же
> > классическая реализация таймеров по книжке.
> > 
> > > прерывании отнимаем от остатка времени клиента 10 сек. (5 сек., 20 сек),
> > > попутно коллектим acct-пакеты, отрабатываем пропадания связи и пр.,
> > > когда результат <= 0 то срубаем его сессию, сохраняем остаток...
> > 
> >   Что, вот так раз в 10 секунд, по всем 1000 линиям сравниваешь с 0?
> > 
> Блин. Что за вопрос?
> Демонок распределяет у себя в памяти структурку длиной 200-300 байт, где
> хранит все кишки от сессии одного клиента. Структурки формируются в 
> цепочки. Распределить 1 000 000 сруктур по 200 байт и ходить по ним всем
> с грубо говоря "if (timeleft -= quant <= 0)" раз в секунду является
> большой проблемой??

   Для каждой структурки ты должен слазить в некую структуру данных,
где из типа контракта пользователя, текущей позиции на абсолютной шкале 
времени нужно вычислить текущий тариф. Иначе ты не знаешь сколько нужно
вычесть - 1 или 0 или 0.1  Сделать можно, но это будет существенно более
сложный код нежли "if (timeleft -= quant <= 0)". 

  Пойми, ты пытаешься осуществить интегрирование в real-time. Не спорю
- бывает. Летают и самолеты и ракеты. Но тебе это надо? Как насчет
цены всей этой конструкции?

  Плюс вторая проблема - у тебя тарификация идет online, и нет первичного
документа - основания разборок с пользователем. Возвращаясь к сабжекту 
данной дискуссии, я считаю, что сертифицировать твой алгоритм будет очень
сложно.
 
> > > Таким образом мы "растягиваем" время ночью, "ускоряем" в час пик, следим
> > > за границами дозволенного времени, контроллируем мульти-логины, проверяем 
> > > номер звонящего, "восстанавливаем" потеряные acct-пакеты и тд., и все это
> > > в одном демоночке, вместо кучи подпорок по всей цепи тарификации.
> > 
> >    Я так и не понял какие там подпорки. Там все очень просто и легковесно.
> > 
> >  А описанный тобой алгоритм у нас давно работает. (с учетом различий
> > алгоритма тарификации) Живет следящий демон, сшибающий по SNMP. Правда у 
> > нас не 1000 линий, а 650, и не 10сек, а 5 мин., поэтому проблем пока нет. 
> > Но будут. Именно поэтому мы подготовились к внедрению нормальных таймеров. 
> > 
> Вопрос только в том как это все делать в реальном времени. И только лишь.
> И я утвердаю что это можно делать. Концептуально.
> И опровержений пока что так и нет.

  Как тут уже справедливо заметили нельзя сделать реал-тайм алгоритм без
real-time OS. Еще нужна real-time сеть (QoS как минимум). Поэтому мы
все-таки говорим о различных уровнях приближения к оному реал-тайму.

  Я считаю, что подойти можно очень близко. Но гарантировать нельзя.

Boris.
=============================================================================
"inet-admins" Internet access mailing list. Maintained by East Connection ISP.
Mail "unsubscribe inet-admins" to Majordomo@info.east.ru if you want to quit.
Archive is accessible on http://info.east.ru/rus/inetadm.html



 




Copyright © Lexa Software, 1996-2009.