alibek Posted February 5, 2013 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
nuclearcat Posted February 5, 2013 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
NiTr0 Posted February 6, 2013 Posted February 6, 2013 В логах та же ошибка, "rad_process_single_coa_req: Err: Parsing CoA packet error". Так что у меня теперь есть предположение, что виноват SE100 — либо какой-то глюк ПО, либо неправильная конфигурация, либо не настроен CoA. Может, банально SE100 не видит в пакете того аттрибута, который ему нужен? И матерится в ответ о неправильном пакете? Правда только Disconnect CoA тоже шлет... И да, CoA сервер - это собссно сам брас, к нему уже клиенты шлют запросы на изменение скорости. Так что ТС неплохо бы определиться, что ему надо... Вставить ник Quote
alibek Posted February 6, 2013 Author 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
NiTr0 Posted February 6, 2013 Posted February 6, 2013 Может в мануале это освещено? Вставить ник Quote
alibek Posted February 7, 2013 Author Posted February 7, 2013 Может в мануале это освещено? Скорее всего есть, но где искать? Это PDF-файлы на 250 Мб. В разделе Subscriber Management я такой информации (рабочего примера с набором атрибутов) не нашел. Вставить ник Quote
alibek Posted February 7, 2013 Author 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
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.