Умник Posted December 7, 2009 (edited) · Report post Кому-нибудь интересен сабж? Что реализовано: 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/ Edited April 19, 2013 by Умник Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
zander Posted December 7, 2009 · Report post Можно подробнее ? как дела с аккаунтингом ? реализовано на ядерном уровне или в юзер-спейсе ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 7, 2009 (edited) · Report post zander, RADIUS-аккаунтинг есть конечно же. Подсчет трафика и полисинг выполняется в ядре, все остальные функции (взаимодействие с RADIUS-сервером) - в юзерспейсе (демон на Perl). Edited December 7, 2009 by Умник Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
DemYaN Posted December 7, 2009 (edited) · Report post Сабж весьма интересен! Подсчет трафика в ядре чем реализован? Полисинг или шейп? Для управления qidsc'ами демон использует tc или через netlink/libnl? Как осуществляется снупинг трафика для старта сессии? UPD старт по DHCPDISCOVER/DHCPREQUEST ? Edited December 7, 2009 by DemYaN Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 7, 2009 · Report post Изменение параметров сессии на лету через CoA? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 7, 2009 · Report post Подсчет трафика в ядре чем реализован? Полисинг или шейп? Для управления 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 обычно юзаются провайдерами? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 7, 2009 · Report post CoA для изменения профиля на лету (включение "турбо", смена тарифа и т.д.) Каким устанавливается время жизни сессии? при отсутствии пакетов во стороны source IP абонента. Вообще тема интересная, наверное уже можна начинать с примеров, совместно будет допиливать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 7, 2009 · Report post управление модулем я так понимаю осуществляется через sysctrl? а связь с RADIUS через perl конструкцию? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 7, 2009 · Report post Так же наверное многим было бы интересно классификации трафика по разным зонам (направление и/или протокол), причем в зависимости от source ip. Например "местный" трафик идет на 100Мбит, внешний на 10Мбит, для абонента с source IP = 1.1.1.2 и для source IP 1.1.1.3 "местный" на 50Мбит и внешний на 3Мбит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alks Posted December 7, 2009 · Report post Интересная тема 1. ip portbundle L4redirect 2. Cisco AV-Pair для совместимости isg-radius-billing 3. препейд есть ? 4. vrf vrf red - > nat vrf green - > Inet Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
DemYaN Posted December 7, 2009 (edited) · Report post 4. vrf в linux нет стандартных средств для полноценного vrf, а linux-vrf заглох Edited December 7, 2009 by DemYaN Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 8, 2009 (edited) · Report post Каким устанавливается время жизни сессии?Это настраивается. Если от src IP определенное количество секунд не было трафика, то сессия STOP-ится. Также есть возможность виртуально рестартить сессию каждые N секунд (например, раз в сутки), чтобы в биллинге не было длинных (неделя, месяц) сессий. Вообще тема интересная, наверное уже можна начинать с примеров, совместно будет допиливать.Через недельку все приведу в порядок и выложу дистрибутив. управление модулем я так понимаю осуществляется через sysctrl? а связь с RADIUS через perl конструкцию?Демон, написанный на Perl, управляет модулем через Netlink (но это уже особенности реализации - не суть важно), а также взаимодействует с RADIUS-сервером для аутентификации и аккаунтинга пользователей. Так же наверное многим было бы интересно классификации трафика по разным зонам (направление и/или протокол)Нужно разобраться как это сделано в Cisco ISG. :) ip portbundle L4redirectL4redirect сделать несложно, он определенно будет. Может быть не в начальном alpha-релизе, но будет. Cisco AV-Pair для совместимости isg-radius-billingИмеет смысл реализовать наиболее часто использумеые провайдерами фишки ISG. В этой теме пытаюсь выяснить, что это за фишки. препейд есть ?Это фиксированные лимиты трафика, после которых услуга отключается? Нет, сейчас нет. Если многим нужно - можно и это сделать. Edited December 8, 2009 by Умник Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 8, 2009 (edited) · Report post ну собственно нужно: - поддержка Cisco AV-pair для совместимости - классификация трафика по зонам (примеры можно найти тут http://wiki.sirmax.noname.com.ua/) - препейд трафик - L4 redirect конечно же - Изменение профайла сессии "на лету" ждем первых опытных образцов =) Edited December 8, 2009 by shicoy Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 8, 2009 · Report post Так же интересно что происходит с не авторизованными абонентами? Вообще в идеале хотелось бы видеть такую схему: Если авторизован нормально, то пускаем в сеть и т.д. Если авторизован с отрицательным балансом, то заворачиваем куда-то (например на страничку пополения баланса) Если авторизован с пометкой "плохой", то заворачиваем куда-то (например на страничку предупреждения об вирусах) Если неавторизован, то заворачиваем куда-то (например на страничку с предупреждением) и т.д. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 8, 2009 · Report post Если авторизован с пометкой "плохой", то заворачиваем куда-то А что в данном случае является "пометкой"? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 8, 2009 · Report post 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 редирект трафика в нужном направлении. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 15, 2009 · Report post Ну что ж, попробуем :) pre-alpha релиз можно скачать здесь: http://www.progtech.ru/~oleg/lISG/ Тестируйте, пишите отзывы. :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 15, 2009 · Report post Класс, как раз на неделе перед праздниками ничего с продакшином делать нельзя, вот и будем тестить. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 15, 2009 · Report post alks, где можно посмотреть на открытую реализацию хорошего (или хотя бы какого) "isg-radius-billing"? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 17, 2009 · Report post http://www.progtech.ru/~oleg/lISG/ * Исправлена мелкая ошибка, вызывающая ненужные warnings для переменных из файла config.pl. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
shicoy Posted December 17, 2009 · Report post Как посмотреть какие сессии уже авторизованны и какие параметры им назначены (скорость)? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 17, 2009 · Report post Используйте ISG.pl. При запуске без параметров покажет все approved сессии. show_all - покажет все сессии (вместе со счетчиками), включая unapproved (session_id = 0000000000000000) show_count - покажет текущее количество сессий clear - принудительное завершение сессии для пользователя на порту Async# change_rate - сменить rate на порту Async# без разрыва сессии Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alks Posted December 18, 2009 (edited) · Report post 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 Edited December 18, 2009 by alks Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dolphinik Posted December 23, 2009 · Report post Сколько времени займёт прикручивание CoA и PoD? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted December 23, 2009 · Report post alks, спасибо за подробное описание проприетарных особенностей Cisco. Возьму на заметку. dolphinik, PoD - это суть одно из сообщений CoA (то есть CoA включает PoD). Планирую заняться CoA в lISG ближе к концу этой недели. Скорее всего в последних числах декабря сделаю релиз. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...