Добрый день!
Вот и мне пришло время настроить уже работающий Cisco ISG на работу с Volume Based тарифами, они же препэйд.
Делал по рабочему примеру с претензией на понимание того, что делаю.
Схема тривиально-классическая:
При авторизации ip-сессии (TAL), абоненту отдаётся размер квоты. По исчерпанию оной - редирект на www портал.А проблема собственно в том, что по исчерпании квоты не наступают события quota-depleted/credit-exhausted, соответственно не происходит действие редирект на портал, которое привязано к этим событиям.
Железо:
Cisco ASR 1001 (asr1001-universalk9.03.07.02.S.152-4.S2.bin)
Куски конфига (не принципиальные моменты не детализировал):
Интерфейс в сторону абонентов:
interface GigabitEthernet0/0/1.888
encapsulation dot1Q 888
ip address 10.10.10.201 255.255.255.252
service-policy type control ISG-CUSTOMERS-POLICY2
ip subscriber routed
initiator unclassified ip-address
Сабскрайбер полиси на этом интерфейсе:
policy-map type control ISG-CUSTOMERS-POLICY2
class type control ISG-IP-UNAUTH event timed-policy-expiry
1 service disconnect
!
class type control always event credit-exhausted
1 service-policy type service name SERV-L4R-NOTRAF
!
class type control always event quota-depleted
1 set-param drop-traffic FALSE
!
class type control always event session-start
5 authorize aaa list ISG-AUTH-2 password xxx identifier source-ip-address
20 set-timer UNAUTH-TIMER 1
30 service-policy type service name SERV-OPEN-GARDEN
40 service-policy type service name SERV-L4R-NOTRAF
!
class type control always event service-stop
1 service-policy type service unapply identifier service-name
30 service-policy type service name SERV-L4R-NOTRAF
40 service-policy type service name SERV-OPEN-GARDEN
SERV-OPEN-GARDEN - Сервис, обеспечивающий доступ к локальным ресурсам.
SERV-L4R - Сервис, редиректящий http трафик на портал.
При авторизации абонента, спрашиваем у радиуса:
Send Access-Request to x.x.x.x:1812 id 1645/234,len 149
authenticator 91 9F 2C 25 14 78 D4 CA - A5 B7 32 B7 84 A4 F1 57
User-Name [1] 14 "10.10.10.202"
User-Password [2] 18 *
Framed-IP-Address [8] 6 10.10.10.202
Vendor, Cisco [26] 21
ssg-account-info [250] 15 "S10.10.10.202"
NAS-Port-Type [61] 6 Virtual [5]
Vendor, Cisco [26] 17
cisco-nas-port [2] 11 "0/0/1/888"
NAS-Port [5] 6 0
NAS-Port-Id [87] 11 "0/0/1/888"
Service-Type [6] 6 Outbound [5]
NAS-IP-Address [4] 6 x.x.x.x
Acct-Session-Id [44] 18 "D91560C60000CC05"
Тот отвечает:
Received from id 1645/234 x.x.x.x:1812, Access-Accept, len 95
authenticator DA 8B 17 6D 0E F6 80 AA - 6D 11 00 9D 09 76 44 62
Framed-IP-Netmask [9] 6 255.255.255.252
Vendor, Cisco [26] 23
ssg-service-info [251] 17 "NPLATEX_PREPAID"
Vendor, Cisco [26] 23
ssg-account-info [250] 17 "APLATEX_PREPAID"
Vendor, Cisco [26] 23
ssg-account-info [250] 17 "NPLATEX_PREPAID"
PLATEX_PREPAID - Сервис препэйд, сконфигурённый локально:
policy-map type service PLATEX_PREPAID
class type traffic CLASS-DEFAULT-ACCEPT
prepaid config PLATEX_PREPAID
!
class type traffic default in-out
drop
class-map type traffic match-any CLASS-DEFAULT-ACCEPT
match access-group output name ACL-DEFAULT-ACCEPT
match access-group input name ACL-DEFAULT-ACCEPT
Extended IP access list ACL-DEFAULT-ACCEPT
10 permit ip any any
subscriber feature prepaid PLATEX_PREPAID
threshold time 1 seconds
threshold volume 1 bytes
interim-interval 1 minutes
method-list author ISG-AUTH-4
method-list accounting ISG-AUTH-4
password xxx
После авторизации абонента с сервисом PLATEX_PREPAID, запрашиваем у другого радиуса размер квоты:
Send Access-Request to y.y.y.y:1812 id 1645/235,len 157
authenticator 9F 92 B7 67 A4 E9 F7 7B - A8 7E A9 4C 24 09 AC 78
User-Name [1] 14 "10.10.10.202"
User-Password [2] 18 *
Vendor, Cisco [26] 23
ssg-service-info [251] 17 "NPLATEX_PREPAID"
Framed-Protocol [7] 6 PPP [1]
Framed-IP-Address [8] 6 10.10.10.200
NAS-Port-Type [61] 6 Virtual [5]
Vendor, Cisco [26] 17
cisco-nas-port [2] 11 "0/0/1/888"
NAS-Port [5] 6 0
NAS-Port-Id [87] 11 "0/0/1/888"
Service-Type [6] 6 Framed [2]
NAS-IP-Address [4] 6 x.x.x.x
Acct-Session-Id [44] 18 "D91560C60000CC06"
Получаем от радиуса среди прочего этот самый размер квоты ("QV100000000"):
Received from id 1645/235 y.y.y.y:1812, Access-Accept, len 157
authenticator D0 51 46 35 5A 9F E9 41 - 49 65 A0 3E E4 C7 77 DF
Vendor, Cisco [26] 23
ssg-service-info [251] 17 "NPLATEX_PREPAID"
Vendor, Cisco [26] 23
ssg-account-info [250] 17 "APLATEX_PREPAID"
Vendor, Cisco [26] 23
ssg-account-info [250] 17 "NPLATEX_PREPAID"
Framed-IP-Netmask [9] 6 255.255.255.255
Acct-Interim-Interva[85] 6 60
Session-Timeout [27] 6 86398
Reply-Message [18] 29
30 20 2D 20 41 75 74 68 6F 72 69 7A 61 74 69 6F [0 - Authorizatio]
6E 20 73 75 63 63 65 65 64 65 64 [ n succeeded]
State [24] 3
30 [ 0]
Vendor, Cisco [26] 18
ssg-control-info [253] 12 "QV100000000"
Проверяем сессию:
IPv4 Address: 10.10.10.200
Session Up-time: 00:01:13, Last Changed: 00:01:11
Switch-ID: 174146
Policy information:
Authentication status: authen
Active services associated with session:
name "PLATEX_PREPAID", applied before account logon
Rules, actions and conditions executed:
subscriber rule-map ISG-CUSTOMERS-POLICY2
condition always event session-start
5 authorize aaa list ISG-AUTH-2 identifier source-ip-address
subscriber rule-map default-internal-rule
condition always event service-start
1 service-policy type service identifier service-name
Classifiers:
Class-id Dir Packets Bytes Pri. Definition
0 In 2386 149029 0 Match Any
1 Out 5967 8739365 0 Match Any
2526 In 2386 149029 0 Match ACL ACL-DEFAULT-ACCEPT
2527 Out 5967 8739365 0 Match ACL ACL-DEFAULT-ACCEPT
4294967294 In 0 0 - Drop
4294967295 Out 0 0 - Drop
Features:
Prepaid Volume Monitor:
Class-id Dir Packets Bytes Source
2526 In 2369 142941 PLATEX_PREPAID
2527 Out 5949 8736905 PLATEX_PREPAID
Usage(since last update): 8879846 - Total: 8879846
Threshold:99999999 - Quota:100000000
Current states: Start
Configuration Sources:
Type Active Time AAA Service ID Name
SVC 00:01:13 2734686618 PLATEX_PREPAID
USR 00:01:13 - Peruser
INT 00:01:13 - GigabitEthernet0/0/1.888
В момент, когда квота исчерпана, делаем перезапрос квоты (это должно быть событие quota-depleted), и получаем подтверждение, что действительно выкачали всё ("QV0")
Received from id 1645/18 y.y.y.y:1812, Access-Accept, len 37
authenticator 77 8A D8 28 51 B9 33 79 - AE 23 F2 82 C4 63 E5 B2
Session-Timeout [27] 6 0
Vendor, Cisco [26] 11
ssg-control-info [253] 5 "QV0"
И вот тут должно сработать событие credit-exhausted, и активация редиректа трафика. Однако ничего подобного не происходит, просто останавливается сервис PLATEX_PREPAID и трафик продолжает ходить в рамках этой же сессии безо всяких сервисов вообще.
Проверяем, что матчится в полиси мапе:
sh subscriber policy rules
Rule: ISG-CUSTOMERS-POLICY2
Class-map: ISG-IP-UNAUTH event timed-policy-expiry
Action: 1 service disconnect
Executed: 31
Class-map: always event credit-exhausted
Action: 1 service-policy type service name SERV-L4R-NOTRAF
Executed: 0
Class-map: always event internal-event-cre-t-exp
Action: 1 service-policy type service unapply name SERV-L4R
Executed: 0
Class-map: always event quota-depleted
Action: 1 set-param drop-traffic FALSE
Executed: 0
Class-map: always event session-start
Action: 5 authorize aaa list ISG-AUTH-2 identifier source-ip-address
Executed: 205
Action: 20 set-timer UNAUTH-TIMER 1
Executed: 31
Action: 30 service-policy type service name SERV-OPEN-GARDEN
Executed: 31
Action: 40 service-policy type service name SERV-L4R-NOTRAF
Executed: 31
Class-map: always event service-stop
Action: 1 service-policy type service unapply identifier service-name
Executed: 181
Action: 30 service-policy type service name SERV-L4R-NOTRAF
Executed: 181
Action: 40 service-policy type service name SERV-OPEN-GARDEN
Executed: 181
Видим, что quota-depleted и credit-exhausted по нулям.
Что не так сделал? Может из радиуса что-то недодал или отдал противоречащие атрибуты?
Но ведь перезапрос квоты делается... какое событие это порождает?
Сразу оговорюсь, что исхитрившись стал сделал секцию в полиси-мапе, которая ловит состояние, когда останавливается сервис PLATEX_PREPAID и уже по этому событию осуществляется редирект трафика, но, это не самый лучший workaround.
class type control always event service-stop
1 service-policy type service unapply identifier service-name
30 service-policy type service name SERV-L4R-NOTRAF
40 service-policy type service name SERV-OPEN-GARDEN