alibek Posted February 5, 2013 Запускаю BRAS Ericsson SE100. Используется биллинговая система Билл-Мастер. Биллинговая система ориентирована на Cisco ISG, однако содержит механизмы по интеграции с другими мультисервисными шлюзами. Сейчас абоненты успешно авторизуются на SE100. У большинства абонентов безлимитные тарифные планы, скорость доступа на которых зависит от времени суток (ночью предоставляется увеличенная скорость). Столкнулся с тем, что на активной сессии скорость доступа не меняется. Хотя если переподключиться, то скорость доступа назначается правильно. И соответственно, абоненты которые подключились днем, ночью увеличенную скорость не получают, если не переподключаться (а абоненты, подключившиеся ночью, днем остаются на увеличенной скорости). Для управления скоростью я использую VSA 91 (Sub_Profile_Name), который отсутствует в таблице атрибутов для CoA. Однако я пробовал использовать и атрибут VSA 156 (Qos_Rate_Inbound), который в этой таблице есть, но с тем же отрицательным результатом, так что дело не в конкретном атрибуте. Биллинг исправно посылает CoA-сообщения, однако они не подтверждаются SE100. Если на SE100 включить дебаг, то в логах появляется примерно такое: Feb 2 14:05:00: %AAA-7-RAD_COA: rad_process_coa_req: Process CoA request. (coa_idx 3954705) Feb 2 14:05:00: [0001]: %AAA-7-EXCEPT: rad_process_single_coa_req: Err: Parsing CoA packet error (coa_idx 3954705) Feb 2 14:05:00: [0001]: %AAA-7-EXCEPT: rad_coa_abort: Other proxy error, Send NAK to CoA server (rad_idx 3954705) Feb 2 14:05:00: [0001]: %AAA-7-RAD_COA: NAK CoA request, (Other proxy error) Feb 2 14:05:00: [0001]: %AAA-7-RAD_COA: do_coa_send:, Send CoA reply to 10.1.128.2/39747 Feb 2 14:05:00: [0001]: %AAA-7-RAD_COA: do_coa_send, CoA response send success (coa_idx 3954705). Feb 2 14:05:00: [0001]: %AAA-7-RAD_COA: rad_remove_coa_id: Remove rad id (180) (coa_idx 3954705) from srv table Feb 2 14:05:00: [0001]: %AAA-7-RAD_COA: rad_process_recv_coa_req: Receive CoA request from 10.1.128.2 39747 Feb 2 14:05:00: [0001]: %AAA-7-RAD_COA: rad_process_recv_coa_req: send CoA request (coa_idx 3954706) to rad_main thread. (10.1.128.2 39747) То есть SE100 считает, что CoA-пакет сформирован некорректно. В статистике видно, что на все CoA-запросы BRAS ответил NAK (нет ни одного ACK). Я было подумал, что у Cisco и у SE100 реализация CoA несовместима между собой. Но в это сложно поверить. Многие успешно используют FreeRadius или разработки, основанные на нем, а он успешно работает и с Cisco, и с Ericsson. Я написал утилиту, которая формирует CoA-запрос; утилита на Perl, код формирования и отправки пакетов примерно такой: use Authen::Radius; my $rad = new Authen::Radius(Host => "$host:1799", Secret => $coa, Debug=>1); Authen::Radius->load_dictionary('/BM/install/db/filling/rad_dict/dictionary'); $rad->add_attributes({Name=>'RBN-Sub_Profile_Name', Value=>'inet_hrs_test'}); $rad->send_packet(COA_REQUEST) and $type = $rad->recv_packet(); print "server response type = $type\n"; При запуске я получаю следующий результат: Using Radius server 10.1.255.251:1700 Loading dictionary /BM/install/db/filling/rad_dict/dictionary Loading dictionary /BM/install/db/filling/rad_dict/dictionary.redback.se100 Adding attribute RBN-Sub_Profile_Name (91, string, 2352) with value 'inet_hrs_test' Sending request: 00 01 02 03 04 05 06 07 - 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF 00000000 2B 4D 00 29 78 15 14 C1 - DB E8 EF 15 B4 FE CD 7F +M.)x........... 00000010 EC F7 E8 2B 1A 15 00 00 - 09 30 5B 0F 69 6E 65 74 ...+.....0[.inet 00000020 5F 68 72 73 5F 74 65 73 - 74 _hrs_test Sending request to: 10.1.255.251:1700 Received response: 00 01 02 03 04 05 06 07 - 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF 00000000 2D 4D 00 20 E5 BD 02 C2 - AE 61 FB 39 94 42 71 43 -M. .....a.9.BqC 00000010 3C A3 E0 C0 65 06 00 00 - 01 91 37 06 51 11 08 C9 <...e.....7.Q... Unknown type for attribute with id:'101'. Check Radius dictionaries! Unsupported type 'date' for attribute with id:'55'. server response type = 45 45 — это COA_NAK, то есть SE100 не принимает сообщения и от моего скрипта. В логах та же ошибка, "rad_process_single_coa_req: Err: Parsing CoA packet error". Так что у меня теперь есть предположение, что виноват SE100 — либо какой-то глюк ПО, либо неправильная конфигурация, либо не настроен CoA. Но прежде я бы хотел удостовериться, что дело не в радиус-сервере. У кого есть возможность, просьба прислать небольшой дамп CoA-пакета (запрос и ответ), чтобы я мог его сравнить со своим. Или может быть есть какие-то диагностические утилиты, которые позволят формировать CoA-пакеты вручную? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nuclearcat Posted February 5, 2013 Я делал через radclient echo "User-Name=kamil,Framed-IP-Address=172.16.0.59" | radclient -x 10.11.11.4:3799 disconnect coasecret444 Правда только Disconnect Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted February 6, 2013 В логах та же ошибка, "rad_process_single_coa_req: Err: Parsing CoA packet error". Так что у меня теперь есть предположение, что виноват SE100 — либо какой-то глюк ПО, либо неправильная конфигурация, либо не настроен CoA. Может, банально SE100 не видит в пакете того аттрибута, который ему нужен? И матерится в ответ о неправильном пакете? Правда только Disconnect CoA тоже шлет... И да, CoA сервер - это собссно сам брас, к нему уже клиенты шлют запросы на изменение скорости. Так что ТС неплохо бы определиться, что ему надо... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted February 6, 2013 Может, банально SE100 не видит в пакете того аттрибута, который ему нужен? И матерится в ответ о неправильном пакете? Может быть. Поэтому я и прошу показать набор атриботов или дамп CoA-запроса, который на SE100 успешно отрабатывает. У меня в биллинге примерно такое сообщение: 2013-02-06 17:05:01.015066 [5386](I)onl:billing:s_send_change_option:Sent change option message for cursession[5023968] unanswered[2]: CI=5023968 AP=121 NI=10.1.255.251 AI=0103FFFF6800A97F-5111FC56 PS=*** PP=1700 UN=101-0215 HW=GENERIC FI=62.76.109.149 EP=inet_hrs_12000 То есть биллинг шлет user-name, framed-ip-address. В самодельном скрипте я также отправлял атрибуты 1 и 8, а также VSA 91. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted February 6, 2013 Может в мануале это освещено? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted February 7, 2013 Может в мануале это освещено? Скорее всего есть, но где искать? Это PDF-файлы на 250 Мб. В разделе Subscriber Management я такой информации (рабочего примера с набором атрибутов) не нашел. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted February 7, 2013 Похоже не хватало контекста. Также выкладываю скрипт на Perl, формирующий CoA-запросы, может кому пригодится. #!/usr/bin/perl use strict; use Authen::Radius; my $host = "10.1.255.251"; my $coa = "coa_password"; my $rad = new Authen::Radius(Host => "$host:1700", Secret => $coa, Debug=>1); my $type; Authen::Radius->load_dictionary('/path/to/rad_dict/dictionary'); $rad->add_attributes({Name=>'RBN-Context_Name', Value=>'local'}); $rad->add_attributes({Name=>'User-Name', Value=>'username'}); $rad->add_attributes({Name=>'RBN-QoS_Rate_Inbound', Value=>'1000:125000'}); $rad->send_packet(COA_REQUEST) and $type = $rad->recv_packet(); print "server response type = $type\n"; Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...