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

 

Что реализовано: 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 ближе к концу этой недели. Скорее всего в последних числах декабря сделаю релиз.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти
Подписчики 0