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

Кому-нибудь интересен сабж?

 

Что реализовано: TAL (Transparent auto-login с автостартом/стопом сессии) - аналог "ip subscriber routed", traffic policing, интерфейс - RADIUS (Cisco AV-Pair правда не эмулировал)... О туннелях (PPPoE, PPTP, L2TP) речи не идет. Делалось для классического IPoE. Работает в production - в онлайне до 4k сессий, трафик ~120 pps.

Если кому интересно, спрашивайте, что нужно (нужно - именно на практике, то есть обязательно, потому что все не реализуешь). Если все будет хорошо, можно будет привести в порядок, доделать фичи и выложить как open source. :)

 

UPD: http://bitbucket.org/sysoleg/lisg/

Изменено пользователем Умник

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


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

Можно подробнее ? как дела с аккаунтингом ? реализовано на ядерном уровне или в юзер-спейсе ?

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


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

zander, RADIUS-аккаунтинг есть конечно же. Подсчет трафика и полисинг выполняется в ядре, все остальные функции (взаимодействие с RADIUS-сервером) - в юзерспейсе (демон на Perl).
Изменено пользователем Умник

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


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

Сабж весьма интересен!

Подсчет трафика в ядре чем реализован? Полисинг или шейп? Для управления qidsc'ами демон использует tc или через netlink/libnl? Как осуществляется снупинг трафика для старта сессии?

 

UPD старт по DHCPDISCOVER/DHCPREQUEST ?

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

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


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

Изменение параметров сессии на лету через CoA?

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


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

Подсчет трафика в ядре чем реализован? Полисинг или шейп? Для управления qidsc'ами демон использует tc или через netlink/libnl?

Подсчет трафика и полисинг в целях оптимизации реализован средствами модуля ядра. Поэтому qdisc и tc не используется. Полисинг сделан в соответствии с RFC 2697 (http://www.faqs.org/rfcs/rfc2697.html). Только цветов не три, а два (красный и зеленый), то есть желтый приравнен к красному (для задач полисинга трафика обычных юзеров три цвета не требуется).

 

Как осуществляется снупинг трафика для старта сессии?

Kernel space реализован средствами модуля Netfilter, старт сессии (то есть отправка запроса на RADIUS) происходит по unclassified source IP-address. Смысл такой:

 

iptables -A FORWARD -s 10.123.0.0/16 -j ISG --session-init "inet"

iptables -A FORWARD -d 10.123.0.0/16 -j ISG

 

Первое правило - для "инициализации" сессий и подсчета/полисинга трафика от юзеров.

Второе правило - для подсчета/полисинга трафка на юзеров.

 

Каждого юзера из 10.123.0.0/16 в iptables добавлять естественно не нужно. Вся "магия" - внутри модуля. :) На RADIUS все уходит в нормальном виде - Packets/Octets In/Out для каждого аутентифицированного юзера.

 

Старт - исключительно по unclassified source IP, потому что подразумевалось, что пользователь не подключен напрямую к BRAS, и BRAS не выступает в качестве DHCP-релея для юзера. Впрочем, если это необходимо, можно подумать как реализовать. Для этого я и создал тему. :)

 

Изменение параметров сессии на лету через CoA?
Изменение параметров сессии налету возможно, а вот CoA-интерфейса нет.

 

Какие функции CoA обычно юзаются провайдерами?

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


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

CoA для изменения профиля на лету (включение "турбо", смена тарифа и т.д.)

Каким устанавливается время жизни сессии? при отсутствии пакетов во стороны source IP абонента.

 

Вообще тема интересная, наверное уже можна начинать с примеров, совместно будет допиливать.

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


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

управление модулем я так понимаю осуществляется через sysctrl? а связь с RADIUS через perl конструкцию?

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


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

Так же наверное многим было бы интересно классификации трафика по разным зонам (направление и/или протокол), причем в зависимости от source ip.

 

Например "местный" трафик идет на 100Мбит, внешний на 10Мбит, для абонента с source IP = 1.1.1.2

и

для source IP 1.1.1.3 "местный" на 50Мбит и внешний на 3Мбит.

 

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


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

Интересная тема

1. ip portbundle L4redirect

2. Cisco AV-Pair для совместимости isg-radius-billing

3. препейд есть ?

4. vrf

vrf red - > nat

vrf green - > Inet

 

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


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

4. vrf

в linux нет стандартных средств для полноценного vrf, а linux-vrf заглох

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

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


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

Каким устанавливается время жизни сессии?
Это настраивается. Если от src IP определенное количество секунд не было трафика, то сессия STOP-ится. Также есть возможность виртуально рестартить сессию каждые N секунд (например, раз в сутки), чтобы в биллинге не было длинных (неделя, месяц) сессий.

 

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

 

управление модулем я так понимаю осуществляется через sysctrl? а связь с RADIUS через perl конструкцию?
Демон, написанный на Perl, управляет модулем через Netlink (но это уже особенности реализации - не суть важно), а также взаимодействует с RADIUS-сервером для аутентификации и аккаунтинга пользователей.

 

Так же наверное многим было бы интересно классификации трафика по разным зонам (направление и/или протокол)
Нужно разобраться как это сделано в Cisco ISG. :)

 

ip portbundle L4redirect
L4redirect сделать несложно, он определенно будет. Может быть не в начальном alpha-релизе, но будет.

 

Cisco AV-Pair для совместимости isg-radius-billing
Имеет смысл реализовать наиболее часто использумеые провайдерами фишки ISG. В этой теме пытаюсь выяснить, что это за фишки.

 

препейд есть ?
Это фиксированные лимиты трафика, после которых услуга отключается? Нет, сейчас нет. Если многим нужно - можно и это сделать.
Изменено пользователем Умник

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


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

ну собственно нужно:

- поддержка Cisco AV-pair для совместимости

- классификация трафика по зонам (примеры можно найти тут http://wiki.sirmax.noname.com.ua/)

- препейд трафик

- L4 redirect конечно же

- Изменение профайла сессии "на лету"

ждем первых опытных образцов =)

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

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


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

Так же интересно что происходит с не авторизованными абонентами?

Вообще в идеале хотелось бы видеть такую схему:

 

Если авторизован нормально, то пускаем в сеть и т.д.

Если авторизован с отрицательным балансом, то заворачиваем куда-то (например на страничку пополения баланса)

Если авторизован с пометкой "плохой", то заворачиваем куда-то (например на страничку предупреждения об вирусах)

Если неавторизован, то заворачиваем куда-то (например на страничку с предупреждением)

и т.д.

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


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

Если авторизован с пометкой "плохой", то заворачиваем куда-то

А что в данном случае является "пометкой"?

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


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

Radius AVPair, что-то вроде

 

ip:traffic-class=input access-group name REDIRECT_PORTAL

ip:traffic-class=output access-group name REDIRECT_PORTAL

 

т.е. ISG получив такую AVPair на сессию будет заворачивать трафик этой сессии на портал.

 

В презентации есть примеры:

http://www.ciscoexpo.ru/moscow/2008/downlo...SG_segusaro.pdf

 

Более точно наверное смогу сказать цисководы.

 

А основанием для выдачи пометки будет служить ответ биллинга через RADIUS в выдачей нужной AVPair

Но это уже частности, главно имху реализовать через AVPair редирект трафика в нужном направлении.

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


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

Ну что ж, попробуем :) pre-alpha релиз можно скачать здесь:

 

http://www.progtech.ru/~oleg/lISG/

 

Тестируйте, пишите отзывы. :)

 

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


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

Класс, как раз на неделе перед праздниками ничего с продакшином делать нельзя, вот и будем тестить.

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


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

alks, где можно посмотреть на открытую реализацию хорошего (или хотя бы какого) "isg-radius-billing"?

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


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

http://www.progtech.ru/~oleg/lISG/

 

* Исправлена мелкая ошибка, вызывающая ненужные warnings для переменных из файла config.pl.

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


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

Как посмотреть какие сессии уже авторизованны и какие параметры им назначены (скорость)?

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


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

Используйте ISG.pl. При запуске без параметров покажет все approved сессии.

show_all - покажет все сессии (вместе со счетчиками), включая unapproved (session_id = 0000000000000000)

show_count - покажет текущее количество сессий

clear - принудительное завершение сессии для пользователя на порту Async#

change_rate - сменить rate на порту Async# без разрыва сессии

 

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


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

alks, где можно посмотреть на открытую реализацию хорошего (или хотя бы какого) "isg-radius-billing"?

Открытых реализаций к сожалению не знаю - я использую АСР Билмастер с модулем под ISG

если память не изменяет, инлайн кажется использует переписанный free-radius

общая структура системы такова что на самом isg шлюзе есть только "машина состояний" policy-map type control

описывающая классы событий типа

event session-start

event service-start

event service-stop

event account-logon

и т.д.

----

ACL для трафик-классов типа

ip access-list extended ACL-Passthru-In

permit ip any any

ip access-list extended ACL-Passthru-Out

permit ip any any

----

и subscriber feature prepaid name - описывает параметры препейда по квотам на трафик/время

----

все остальное лежит в базе билинга - основной профиль клиента и дочерние профили описывающие непосредственно сами сервисы

к примеру

основная услуга клиента

Service-Type Framed-User

Cisco-Account-Info AFreeResource

Cisco-Account-Info A2mb -- дочерний профиль с учетом трафика и скоростью 2мбит/c

Cisco-Account-Info GServiceGroup1

-----

дочерний профиль 2mb

N 1440 Service-Type Outbound-User

N 1441 Cisco-AVPair prepaid-config=default

N 1445 Cisco-Service-Info TP

N 1446 Cisco-Service-Info MS

N 1447 Cisco-Service-Info QU;2048000;256000;288000;D;2048000;256000;288000

N 1922 Cisco-Service-Info IInternet 2mb/s

N 2353 Cisco-AVPair ip:traffic-class=in access-group name ACL-Passthru-In priority 100

N 2354 Cisco-AVPair ip:traffic-class=out access-group name ACL-Passthru-Out priority 100

---

по portbundle подробно рассказать?

 

P.S. в последних версиях isg появился новый event для control-policy

event access-reject - получаем reject от радиуса и можем, к примеру, сделать L4 редирект клиента на страничку "дай бабла"

class type control always event session-reject

10 service-policy type service name Bl_Access

 

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

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


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

Сколько времени займёт прикручивание CoA и PoD?

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


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

alks, спасибо за подробное описание проприетарных особенностей Cisco. Возьму на заметку.

 

dolphinik, PoD - это суть одно из сообщений CoA (то есть CoA включает PoD). Планирую заняться CoA в lISG ближе к концу этой недели. Скорее всего в последних числах декабря сделаю релиз.

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


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

Join the conversation

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

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

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

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

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

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

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