CoA: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показано 19 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Cisco]] |
||
=CoA - Change Of Authorization= |
=CoA - Change Of Authorization= |
||
+ | Это продолжение статьи [http://wiki.sirmax.noname.com.ua/index.php/ISG Настройка ISG] |
||
==Назначение CoA== |
==Назначение CoA== |
||
Цитата: ([http://www.ciscosystems.com/en/US/docs/ios/12_2sb/isg/coa/guide/isgcoa3.html cisco.com])<BR> |
Цитата: ([http://www.ciscosystems.com/en/US/docs/ios/12_2sb/isg/coa/guide/isgcoa3.html cisco.com])<BR> |
||
Строка 18: | Строка 20: | ||
Можно указать сколько угодно клиентов, каждый из которых сможет посылать CoA-пакеты со своими ключами. |
Можно указать сколько угодно клиентов, каждый из которых сможет посылать CoA-пакеты со своими ключами. |
||
− | ===Тестирование CoA=== |
||
==Тестирование переключения тарифов== |
==Тестирование переключения тарифов== |
||
===создание нескольких тарифов=== |
===создание нескольких тарифов=== |
||
Строка 24: | Строка 25: | ||
Тарифы можно применять к пользователю в любых сочитаниях. |
Тарифы можно применять к пользователю в любых сочитаниях. |
||
− | Траффик входящий разделяю по TOS, исходящий - никак не разделяю. Маркирую на пограничном маршрутизаторе в зависимости от того с какого |
+ | Траффик входящий разделяю по TOS, исходящий - никак не разделяю. Соответвенно, весь такой траффик будет "мировым" Маркирую на пограничном маршрутизаторе в зависимости от того с какого интерфейса получен пакет |
<PRE> |
<PRE> |
||
# UA-IX |
# UA-IX |
||
Строка 34: | Строка 35: | ||
# World |
# World |
||
-A PREROUTING -j TOS --set-tos 0x08 |
-A PREROUTING -j TOS --set-tos 0x08 |
||
+ | # |
||
− | COMMIT |
||
− | *nat |
||
</PRE> |
</PRE> |
||
Строка 66: | Строка 66: | ||
</PRE> |
</PRE> |
||
+ | '''Обратить внимание''' на то что при внедрении в реальной сети нужно или контролировать значение TOS на входе в сеть ДО роутера с ISG или поправить ACL соответвующим образом, с учетом направления прохождения пакетов. |
||
− | Соответвенно, сервисы |
+ | Соответвенно, сервисы в RADIUS будут выглядеть следующим образом: |
<PRE> |
<PRE> |
||
WORLD_1_MBIT Password == "cisco" |
WORLD_1_MBIT Password == "cisco" |
||
Cisco-AVPair += "ip:traffic-class=in access-group 192 priority 10", |
Cisco-AVPair += "ip:traffic-class=in access-group 192 priority 10", |
||
Cisco-AVPair += "ip:traffic-class=out access-group 192 priority 10", |
Cisco-AVPair += "ip:traffic-class=out access-group 192 priority 10", |
||
− | Cisco- |
+ | Cisco-Service-Info += "QU;1024000;512000;D;1024000;512000" |
</PRE> |
</PRE> |
||
+ | В строке ''Cisco-Service-Info += "QU;1024000;512000;D;1024000;512000"'' |
||
+ | U:upload-rate;upload-burst;D;download-rate;download-burst |
||
+ | |||
<PRE> |
<PRE> |
||
WORLD_2_MBIT Password == "cisco" |
WORLD_2_MBIT Password == "cisco" |
||
Cisco-AVPair += "ip:traffic-class=in access-group 192 priority 10", |
Cisco-AVPair += "ip:traffic-class=in access-group 192 priority 10", |
||
Cisco-AVPair += "ip:traffic-class=out access-group 192 priority 10", |
Cisco-AVPair += "ip:traffic-class=out access-group 192 priority 10", |
||
− | Cisco- |
+ | Cisco-Service-Info += "QU;2048000;1024000;D;2048000;1024000" |
</PRE> |
</PRE> |
||
<PRE> |
<PRE> |
||
Строка 84: | Строка 88: | ||
Cisco-AVPair += "ip:traffic-class=in access-group 193 priority 10", |
Cisco-AVPair += "ip:traffic-class=in access-group 193 priority 10", |
||
Cisco-AVPair += "ip:traffic-class=out access-group 193 priority 10", |
Cisco-AVPair += "ip:traffic-class=out access-group 193 priority 10", |
||
− | Cisco- |
+ | Cisco-Service-Info += "QU;2048000;1024000;D;2048000;1024000" |
</PRE> |
</PRE> |
||
<PRE> |
<PRE> |
||
Строка 90: | Строка 94: | ||
Cisco-AVPair += "ip:traffic-class=in access-group 193 priority 10", |
Cisco-AVPair += "ip:traffic-class=in access-group 193 priority 10", |
||
Cisco-AVPair += "ip:traffic-class=out access-group 193 priority 10", |
Cisco-AVPair += "ip:traffic-class=out access-group 193 priority 10", |
||
− | Cisco- |
+ | Cisco-Service-Info += "QU;4096000;2048000;D;4096000;2048000" |
</PRE> |
</PRE> |
||
<PRE> |
<PRE> |
||
Строка 96: | Строка 100: | ||
Cisco-AVPair += "ip:traffic-class=in access-group 194 priority 10", |
Cisco-AVPair += "ip:traffic-class=in access-group 194 priority 10", |
||
Cisco-AVPair += "ip:traffic-class=out access-group 194 priority 10", |
Cisco-AVPair += "ip:traffic-class=out access-group 194 priority 10", |
||
− | Cisco- |
+ | Cisco-Service-Info += "QU;5120000;2048000;D;5120000;2048000" |
</PRE> |
</PRE> |
||
<PRE> |
<PRE> |
||
Строка 102: | Строка 106: | ||
Cisco-AVPair += "ip:traffic-class=in access-group 194 priority 10", |
Cisco-AVPair += "ip:traffic-class=in access-group 194 priority 10", |
||
Cisco-AVPair += "ip:traffic-class=out access-group 194 priority 10", |
Cisco-AVPair += "ip:traffic-class=out access-group 194 priority 10", |
||
− | Cisco- |
+ | Cisco-Service-Info += "QU;10240000;5120000;D;10240000;5120000" |
</PRE> |
</PRE> |
||
− | |||
===тестирование работы тарифов=== |
===тестирование работы тарифов=== |
||
Строка 110: | Строка 113: | ||
<PRE> |
<PRE> |
||
− | INSERT into radcheck(UserName,Attribute,op, Value) values(' |
+ | INSERT into radcheck(UserName,Attribute,op, Value) values('123.123.244.195','User-Password','==','ISG' ); |
− | INSERT into |
+ | INSERT into radreply(UserName,Attribute,op, Value) values('123.123.244.195','Cisco-Account-Info','+=','AKH-IX_5_MBIT'); |
− | INSERT into |
+ | INSERT into radreply(UserName,Attribute,op, Value) values('123.123.244.195','Cisco-Account-Info','+=','AUA-IX_2_MBIT'); |
− | INSERT into |
+ | INSERT into radreply(UserName,Attribute,op, Value) values('123.123.244.195','Cisco-Account-Info','+=','AWORLD_1_MBIT'); |
</PRE> |
</PRE> |
||
Префикс "А" перед именем сервиса значит "Авто", т.е стартовать сервис при авторизации абонента. |
Префикс "А" перед именем сервиса значит "Авто", т.е стартовать сервис при авторизации абонента. |
||
+ | |||
+ | При авторизации абонента можно наблюдать в логах радиуса загрузку всех сервисов, и наблюдать их с помощью комманды: |
||
+ | <PRE> |
||
+ | #sh sss subscr detail |
||
+ | </PRE> |
||
+ | |||
+ | При этом одновременно качаем с "Украины", "Харькова" и "Мира" с заявленными скоростями. |
||
+ | '''Внимание:''' нужно уточнить метод рассчета значений burst!<BR> |
||
+ | При повторных тетстах наиболее близкий к заявленной скорости результат получен при burst=0. Значение по умолчанию burs=rate*1.5/8. |
||
===переключение тарифов=== |
===переключение тарифов=== |
||
+ | Для переключения тарифов я решил использовать самый простой из возможных вариантов - деавторизовывать пользователя с помощью CoA-запроса, а потом его авторизоввывать заново но уже с новыми параметрами сесcии. |
||
+ | При отправке запросов обратить внимание на порт - по умолчанию 1700. |
||
+ | |||
+ | Проверить сосотояние сесиии: |
||
+ | <PRE> |
||
+ | ginger ~ # /bin/echo "User-Name=\"123.123.244.195\",Cisco-Account-Info=\"S123.123.244.195\",cisco-avpair=\"subscriber:command=account-status-query\"" | /usr/bin/radclient -x 172.16.32.117:1700 coa MeGaPassWord |
||
+ | </PRE> |
||
+ | |||
+ | <PRE> |
||
+ | CoA-Request of id 194 to 172.16.32.117 port 1700 |
||
+ | User-Name = "123.123.244.195" |
||
+ | Cisco-Account-Info = "S123.123.244.195" |
||
+ | Cisco-AVPair = "subscriber:command=account-status-query" |
||
+ | </PRE> |
||
+ | |||
+ | <PRE> |
||
+ | CoA-ACK packet from host 172.16.32.117:1700, id=194, length=312 |
||
+ | Cisco-Account-Info = "N1WORLD_1_MBIT;332;123.123.244.195;0;0;0;0" |
||
+ | Cisco-Account-Info = "N1UA-IX_2_MBIT;332;123.123.244.195;0;0;0;0" |
||
+ | Cisco-Account-Info = "N1KH-IX_5_MBIT;332;123.123.244.195;0;0;0;0" |
||
+ | User-Name = "123.123.244.195" |
||
+ | Cisco-Command-Code = "\0041" |
||
+ | Cisco-Account-Info = "S123.123.244.195" |
||
+ | Cisco-AVPair = "sg-version=1.0" |
||
+ | Cisco-NAS-Port = "nas-port:0.0.0.0:0/0/1/613" |
||
+ | NAS-Port = 0 |
||
+ | NAS-Port-Id = "nas-port:0.0.0.0:0/0/1/613" |
||
+ | Framed-IP-Address = 123.123.244.195 |
||
+ | </PRE> |
||
+ | |||
+ | |||
+ | |||
+ | "Сброс с линии" |
||
+ | <PRE> |
||
+ | /bin/echo "User-Name=\"123.123.244.145\",Cisco-Account-Info=\"S123.123.244.194\",cisco-avpair=\"subscriber:command=account-logoff\"" | /usr/bin/radclient -x 172.16.32.117:1700 coa MeGaPassWord |
||
+ | </PRE> |
||
+ | |||
+ | После чего пользователь создаст новую сессию с новыми параметрами, в том числе и по скорости. |
||
+ | |||
==Заключение== |
==Заключение== |
||
+ | Насколько я могу судить, в заявленной конфигурации все работает, как препейд по траффику, так и тарифы ограничением по скорости и направлениям (при правильной "разметке") траффика с помощью TOS |
Текущая версия на 10:11, 24 июня 2010
CoA - Change Of Authorization
Это продолжение статьи Настройка ISG
Назначение CoA
Цитата: (cisco.com)
ISG offers a standard RADIUS interface that is typically used in a pulled model where the request originates from ISG and the response come from the queried servers. ISG also supports the RADIUS Change of Authorization (CoA) extensions defined in RFC 3576 that are typically used in a pushed model and allow for the dynamic reconfiguring of services from external authentication, authorization, and accounting (AAA) or policy servers.
Использование CoA
Настройка поддержки CoA на Cisco 7201
Поддержка CoA настраивается очень просто
aaa server radius dynamic-author client 172.16.30.144 server-key 7 1511021F07257C737F client 172.16.30.50 server-key 7 0822455D0A16524045 auth-type any ignore session-key ignore server-key !
Можно указать сколько угодно клиентов, каждый из которых сможет посылать CoA-пакеты со своими ключами.
Тестирование переключения тарифов
создание нескольких тарифов
Для тестирования я решил создать 6 различных сервисов - KH-IX с 2 скоростями (5 и 10 мбит), UA-IX с 2 скоростями (2 и 4 мбита) и "мир" с 2 скоростями (1 и 2 мбита). Тарифы можно применять к пользователю в любых сочитаниях.
Траффик входящий разделяю по TOS, исходящий - никак не разделяю. Соответвенно, весь такой траффик будет "мировым" Маркирую на пограничном маршрутизаторе в зависимости от того с какого интерфейса получен пакет
# UA-IX -A PREROUTING --in-interface eth1.XXX1 -j TOS --set-tos 0x04 # KH-IX -A PREROUTING --in-interface eth1.XXX2 -j TOS --set-tos 0x02 # Peer -A PREROUTING --in-interface eth1.XXX2 -j TOS --set-tos 0x02 # World -A PREROUTING -j TOS --set-tos 0x08 #
Соответвие "имен" и значений:
max-reliability Match packets with max reliable TOS (2) max-throughput Match packets with max throughput TOS (4) min-delay Match packets with min delay TOS (8) min-monetary-cost Match packets with min monetary cost TOS (1) normal Match packets with normal TOS (0)
"Мир":
access-list 192 remark world access-list 192 permit ip any any tos min-delay access-list 192 permit ip any any
"Украина":
access-list 193 remark UA-IX access-list 193 permit ip any any tos max-throughput
"Харьков":
access-list 194 remark KH-IX access-list 194 permit ip any any tos max-reliability
Обратить внимание на то что при внедрении в реальной сети нужно или контролировать значение TOS на входе в сеть ДО роутера с ISG или поправить ACL соответвующим образом, с учетом направления прохождения пакетов.
Соответвенно, сервисы в RADIUS будут выглядеть следующим образом:
WORLD_1_MBIT Password == "cisco" Cisco-AVPair += "ip:traffic-class=in access-group 192 priority 10", Cisco-AVPair += "ip:traffic-class=out access-group 192 priority 10", Cisco-Service-Info += "QU;1024000;512000;D;1024000;512000"
В строке Cisco-Service-Info += "QU;1024000;512000;D;1024000;512000" U:upload-rate;upload-burst;D;download-rate;download-burst
WORLD_2_MBIT Password == "cisco" Cisco-AVPair += "ip:traffic-class=in access-group 192 priority 10", Cisco-AVPair += "ip:traffic-class=out access-group 192 priority 10", Cisco-Service-Info += "QU;2048000;1024000;D;2048000;1024000"
UA-IX_2_MBIT Password == "cisco" Cisco-AVPair += "ip:traffic-class=in access-group 193 priority 10", Cisco-AVPair += "ip:traffic-class=out access-group 193 priority 10", Cisco-Service-Info += "QU;2048000;1024000;D;2048000;1024000"
UA-IX_4_MBIT Password == "cisco" Cisco-AVPair += "ip:traffic-class=in access-group 193 priority 10", Cisco-AVPair += "ip:traffic-class=out access-group 193 priority 10", Cisco-Service-Info += "QU;4096000;2048000;D;4096000;2048000"
KH-IX_5_MBIT Password == "cisco" Cisco-AVPair += "ip:traffic-class=in access-group 194 priority 10", Cisco-AVPair += "ip:traffic-class=out access-group 194 priority 10", Cisco-Service-Info += "QU;5120000;2048000;D;5120000;2048000"
KH-IX_10_MBIT Password == "cisco" Cisco-AVPair += "ip:traffic-class=in access-group 194 priority 10", Cisco-AVPair += "ip:traffic-class=out access-group 194 priority 10", Cisco-Service-Info += "QU;10240000;5120000;D;10240000;5120000"
тестирование работы тарифов
Для того что бы протестировать работу тарифов, создаем нескольких пользователей с разными сочетаниями тарифных планов:
INSERT into radcheck(UserName,Attribute,op, Value) values('123.123.244.195','User-Password','==','ISG' ); INSERT into radreply(UserName,Attribute,op, Value) values('123.123.244.195','Cisco-Account-Info','+=','AKH-IX_5_MBIT'); INSERT into radreply(UserName,Attribute,op, Value) values('123.123.244.195','Cisco-Account-Info','+=','AUA-IX_2_MBIT'); INSERT into radreply(UserName,Attribute,op, Value) values('123.123.244.195','Cisco-Account-Info','+=','AWORLD_1_MBIT');
Префикс "А" перед именем сервиса значит "Авто", т.е стартовать сервис при авторизации абонента.
При авторизации абонента можно наблюдать в логах радиуса загрузку всех сервисов, и наблюдать их с помощью комманды:
#sh sss subscr detail
При этом одновременно качаем с "Украины", "Харькова" и "Мира" с заявленными скоростями.
Внимание: нужно уточнить метод рассчета значений burst!
При повторных тетстах наиболее близкий к заявленной скорости результат получен при burst=0. Значение по умолчанию burs=rate*1.5/8.
переключение тарифов
Для переключения тарифов я решил использовать самый простой из возможных вариантов - деавторизовывать пользователя с помощью CoA-запроса, а потом его авторизоввывать заново но уже с новыми параметрами сесcии. При отправке запросов обратить внимание на порт - по умолчанию 1700.
Проверить сосотояние сесиии:
ginger ~ # /bin/echo "User-Name=\"123.123.244.195\",Cisco-Account-Info=\"S123.123.244.195\",cisco-avpair=\"subscriber:command=account-status-query\"" | /usr/bin/radclient -x 172.16.32.117:1700 coa MeGaPassWord
CoA-Request of id 194 to 172.16.32.117 port 1700 User-Name = "123.123.244.195" Cisco-Account-Info = "S123.123.244.195" Cisco-AVPair = "subscriber:command=account-status-query"
CoA-ACK packet from host 172.16.32.117:1700, id=194, length=312 Cisco-Account-Info = "N1WORLD_1_MBIT;332;123.123.244.195;0;0;0;0" Cisco-Account-Info = "N1UA-IX_2_MBIT;332;123.123.244.195;0;0;0;0" Cisco-Account-Info = "N1KH-IX_5_MBIT;332;123.123.244.195;0;0;0;0" User-Name = "123.123.244.195" Cisco-Command-Code = "\0041" Cisco-Account-Info = "S123.123.244.195" Cisco-AVPair = "sg-version=1.0" Cisco-NAS-Port = "nas-port:0.0.0.0:0/0/1/613" NAS-Port = 0 NAS-Port-Id = "nas-port:0.0.0.0:0/0/1/613" Framed-IP-Address = 123.123.244.195
"Сброс с линии"
/bin/echo "User-Name=\"123.123.244.145\",Cisco-Account-Info=\"S123.123.244.194\",cisco-avpair=\"subscriber:command=account-logoff\"" | /usr/bin/radclient -x 172.16.32.117:1700 coa MeGaPassWord
После чего пользователь создаст новую сессию с новыми параметрами, в том числе и по скорости.
Заключение
Насколько я могу судить, в заявленной конфигурации все работает, как препейд по траффику, так и тарифы ограничением по скорости и направлениям (при правильной "разметке") траффика с помощью TOS