Jump to content

Recommended Posts

Posted

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

Posted

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

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

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

 

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

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

 

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

Posted

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

Posted

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

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

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

Posted

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

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

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.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.