Jump to content
Калькуляторы

Нужен самодельный тестовый CoA-сервер

Запускаю 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-пакеты вручную?

Share this post


Link to post
Share on other sites

В логах та же ошибка, "rad_process_single_coa_req: Err: Parsing CoA packet error".

Так что у меня теперь есть предположение, что виноват SE100 — либо какой-то глюк ПО, либо неправильная конфигурация, либо не настроен CoA.

Может, банально SE100 не видит в пакете того аттрибута, который ему нужен? И матерится в ответ о неправильном пакете?

 

Правда только Disconnect

CoA тоже шлет...

 

И да, CoA сервер - это собссно сам брас, к нему уже клиенты шлют запросы на изменение скорости. Так что ТС неплохо бы определиться, что ему надо...

Share this post


Link to post
Share on other sites

Может, банально 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.

Share this post


Link to post
Share on other sites

Может в мануале это освещено?

Скорее всего есть, но где искать?

Это PDF-файлы на 250 Мб. В разделе Subscriber Management я такой информации (рабочего примера с набором атрибутов) не нашел.

Share this post


Link to post
Share on other sites

Похоже не хватало контекста.

Также выкладываю скрипт на 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";

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.