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