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

Cisco ISG IPoE Static IP

Всем привет. Есть проблема, подскажите пожалуйста.

 

Пытаемся реализовать схему, когда клиент подключен по технологии IPoE со статическим адресом. Т.е. мы аутентифицируем его по его IP, который является одновременно и логином. Никаких DHCP и 82-х опций нет. Есть тестовая ISG (7200 Software (C7200-ADVENTERPRISEK9-M), Version 15.2(4)S6), BGBillng 6.0 модуль Inet.

 

ISG настраивался одновременно по нескольким статьям: статья-1 статья-2

Собственно, схемы именно по ISG в этих статьях почти идентичные.

 

Что бы не быть голословным, вот конфиги:

ISG:

ISG99#sh run
Building configuration...

Current configuration : 6186 bytes
!
! Last configuration change at 09:27:31 RTZ-3 Thu Sep 29 2016
! NVRAM config last updated at 09:27:32 RTZ-3 Thu Sep 29 2016
!
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
!
hostname ISG99
!
boot-start-marker
boot-end-marker
!
!
!
aaa new-model
!
!
aaa group server radius ISG_TEST
server 10.63.9.105 auth-port 1812 acct-port 1813
ip radius source-interface FastEthernet0/0
attribute nas-port format e UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
!
aaa authentication login IPOE-CLIENTS group ISG_TEST
aaa authentication ppp PPPOE-CLIENTS group ISG_TEST
aaa authorization network PPPOE-CLIENTS group ISG_TEST
aaa authorization network IPOE-CLIENTS group ISG_TEST
aaa authorization subscriber-service default local group ISG_TEST
aaa authorization subscriber-service PPPOE-CLIENTS local group ISG_TEST
aaa authorization subscriber-service IPOE-CLIETNS local group ISG_TEST
aaa accounting update periodic 1
aaa accounting network default start-stop group radius
aaa accounting network PPPOE-CLIENTS start-stop group ISG_TEST
aaa accounting network IPOE-CLIENTS start-stop group ISG_TEST
!
!
!
!
aaa server radius dynamic-author
client 10.63.9.105 server-key cisco
auth-type any
ignore session-key
ignore server-key
!
aaa session-id common
clock timezone RTZ-3 4 0
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
!
subscriber authorization enable
async-bootp dns-server 81.22.63.7
multilink bundle-name authenticated
!
!
!
!
!
!
!         
username aneye privilege 15 secret 5 $1$OfaS$jw84G4UwlVogs.DQQqAhK0
redirect server-group PORTAL
server ip 81.22.63.53 port 80
!
!
!
!
!
!
ip tcp synwait-time 5
class-map type traffic match-any CLASS-TO-REDIRECT
match access-group input 199
match access-group output 199
!
class-map type traffic match-any CLASS-TRUSTED
match access-group input 198
match access-group output 198
!
class-map type control match-all ISG-IP-UNAUTH
match authen-status unauthenticated
match timer UNAUTH-TIMER
!
policy-map type service LOCAL-L4R
5 class type traffic CLASS-TO-REDIRECT
 redirect to group PORTAL
!
class type traffic default in-out
 drop
!
!
policy-map type service SERVICE-TRUSTED
1 class type traffic CLASS-TRUSTED
 police input 1024000 192000 384000
 police output 1024000 192000 384000
!
class type traffic default input
 drop
!
!
policy-map type control ISG
class type control always event session-start
 1 authenticate aaa list PPPOE-CLIENTS
!
!
policy-map type control ISG-IPOE-POLICY
class type control ISG-IP-UNAUTH event timed-policy-expiry
 1 service disconnect
!
class type control always event session-start
 10 authorize aaa list IPOE-CLIENTS password cisco identifier source-ip-address
 20 set-timer UNAUTH-TIMER 3
 30 service-policy type service name SERVICE-TRUSTED
 40 service-policy type service name LOCAL-L4R
!
class type control always event session-restart
 10 authorize aaa list IPOE-CLIENTS password cisco identifier source-ip-address
 20 set-timer UNAUTH-TIMER 3
 30 service-policy type service name SERVICE-TRUSTED
 40 service-policy type service name LOCAL-L4R
!
class type control always event radius-timeout
 1 service-policy type service name SERVICE-TRUSTED
 2 service-policy type service name LOCAL-L4R
!
class type control always event account-logoff
 1 service disconnect delay 5
!
!
!         
!
!
!
!
!
!
!
bba-group pppoe global
virtual-template 1
sessions auto cleanup
!
!
interface FastEthernet0/0
ip address 10.63.2.96 255.255.255.0
ip nat outside
duplex full
!
interface FastEthernet0/0.2
!
interface FastEthernet1/0
no ip address
duplex full
pppoe enable group global
!
interface FastEthernet1/0.251
encapsulation dot1Q 251
ip address 60.1.1.1 255.255.255.252
ip nat inside
service-policy type control ISG-IPOE-POLICY
ip subscriber routed
 initiator unclassified ip-address
!
interface Virtual-Template1
mtu 1492
ip unnumbered FastEthernet0/0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat inside
no peer default ip address
ppp authentication chap pap ms-chap-v2 PPPOE-CLIENTS
ppp authorization PPPOE-CLIENTS
ppp accounting PPPOE-CLIENTS
service-policy type control ISG
!
ip local pool PPPOE-CLIENT-POOL 10.99.99.200 10.99.99.254
ip nat inside source list NAT interface FastEthernet0/0 overload
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
ip route 0.0.0.0 0.0.0.0 10.63.2.254
!
ip access-list standard NAT
permit 10.37.37.0 0.0.0.255
permit 60.1.1.0 0.0.0.3
!
ip access-list extended PPPOE-ACL-IN
deny   icmp any any
permit ip any any
ip access-list extended PPPOE-ACL-OUT
deny   icmp any any
permit ip any any
!
ip radius source-interface FastEthernet0/0
access-list 197 permit tcp any any eq www
access-list 198 permit udp any any eq domain
access-list 198 permit udp any eq domain any
access-list 198 permit tcp any host 194.54.14.159 eq www
access-list 198 permit tcp any host 194.54.14.159 eq 443
access-list 198 permit icmp any any
access-list 198 deny   ip any any
access-list 199 permit tcp any any eq www
access-list 199 permit tcp any any eq 443
access-list 199 permit tcp any any eq 8080
!
!
radius-server attribute 44 include-in-access-req default-vrf
radius-server attribute 6 on-for-login-auth
radius-server attribute 8 include-in-access-req
radius-server attribute 32 include-in-access-req
radius-server attribute 32 include-in-accounting-req
radius-server attribute 55 include-in-acct-req
radius-server attribute 55 access-request include
radius-server attribute 25 access-request include
radius-server attribute nas-port format e UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
radius-server attribute 31 send nas-port-detail mac-only
radius-server host 10.63.9.105 auth-port 1812 acct-port 1813 key cisco
radius-server key cisco
radius-server vsa send accounting
radius-server vsa send authentication
!
!
control-plane
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
password 15xbkjdtr
transport input telnet
!
ntp update-calendar
ntp server 132.163.4.101
ntp server 132.163.4.103
!         
end

 

На всякий случай еще и конфигурация из биллинга (BGBilling 6.0 модуль Inet):

 

radius.servSearchMode=0
radius.realm=default
connection.suspend.timeout=900
connection.close.timeout=130
connection.finish.timeout=5
radius.username.removeDomain=0
radius.realm.default.attributes=Acct-Interim-Interval=60;Idle-Timeout=1300;cisco-avpair=subscriber:accounting-list=IPOE-CLIENTS;cisco-avpair=subscriber:policy-directive=authenticate aaa list IPOE-CLIENTS;
radius.inetOption.33.template=framed-mtu=1492;cisco-SSG-Service-Info=I$optionTitle;cisco-SSG-Service-Info=QU;;$speed;;$nburst;;$eburst;;D;;$speed;;$nburst;;$eburst;;;
radius.connection.attributes=Acct-Session-Id,User-Name,Framed-IP-Address
authorization.mode=1
radius.disable.attributes=Acct-Interim-Interval=60;cisco-avpair=subscriber:accounting-list=IPOE-CLIENTS;cisco-SSG-Service-Info=QU;;1000000;;187500;;375000;;D;;1000000;;187500;;375000;;;cisco-ssg-account-info=ASERVICE-TRUSTED;cisco-ssg-account-info=ALOCAL-L4R;
sa.radius.connection.coa.mode=2
sa.radius.connection.close.mode=3
sa.radius.connection.withoutBreak=0
sa.radius.connection.attributes=Acct-Session-Id,User-Name,Framed-IP-Address
session.split.onDeviceState=0
session.split.onTariffOption=1
sa.radius.realm.addAttributes=0
sa.radius.connection.attributes=Acct-Session-Id

 

Так вот, проблема в следующем: если у абонента отрицательный баланс, ему возвращается ошибка 12 и Access-Reject:

Packet type: Access-Reject
Identifier: 6
Authenticator: {DF F5 50 AF 2F 08 66 9F 1F F1 3E B8 42 56 C6 3A}
Attributes:
 Reply-Message=12

 

На ISG при этом поднимается сессия и применяются сервисы, описанные в policy-map:

ISG99#show subscriber session detailed
Current Subscriber Information: Total sessions 1
--------------------------------------------------
Type: IP, UID: 7, State: unauthen, Identity: 60.1.1.2
IPv4 Address: 60.1.1.2
Session Up-time: 00:00:02, Last Changed: 00:00:02
Switch-ID: 4135

Policy information:
 Context 680E7378: Handle 6700001F
 AAA_id 00000012: Flow_handle 0
 Authentication status: unauthen
 Downloaded User profile, including services:
   ssg-service-info     0   "QU;1024000;192000;384000;D;1024000;192000;384000"
   username             0   "LOCAL-L4R"
   traffic-class        0   "input access-group 199 priority 5"
   traffic-class        0   "output access-group 199 priority 5"
   l4redirect           0   "redirect to group PORTAL"
   traffic-class        0   "input default drop"
   traffic-class        0   "output default drop"
 Config history for session (recent to oldest):
   Access-type: IP Client: SM
    Policy event: Service Selection Request (Service)
     Profile name: LOCAL-L4R, 3 references
       password             0   <hidden>
       username             0   "LOCAL-L4R"
       traffic-class        0   "input access-group 199 priority 5"
       traffic-class        0   "output access-group 199 priority 5"
       l4redirect           0   "redirect to group PORTAL"
       traffic-class        0   "input default drop"
       traffic-class        0   "output default drop"
   Access-type: IP Client: SM
    Policy event: Service Selection Request (Service)
     Profile name: SERVICE-TRUSTED, 3 references
       password             0   <hidden>
       username             0   "SERVICE-TRUSTED"
       traffic-class        0   "input access-group 198 priority 1"
       traffic-class        0   "output access-group 198 priority 1"
       ssg-service-info     0   "QU;1024000;192000;384000;D;1024000;192000;384000"
       traffic-class        0   "input default drop"
 [b]Active services associated with session:
   name "LOCAL-L4R", applied before account logon
   name "SERVICE-TRUSTED", applied before account logon[/b]
 Rules, actions and conditions executed:
   subscriber rule-map ISG-IPOE-POLICY
     condition always event session-start
       10 authorize aaa list IPOE-CLIENTS identifier source-ip-address
       20 set-timer UNAUTH-TIMER 3
       30 service-policy type service name SERVICE-TRUSTED
       40 service-policy type service name LOCAL-L4R

Classifiers:
Class-id    Dir   Packets    Bytes                  Pri.  Definition
0           In    0          0                      0    Match Any
1           Out   0          0                      0    Match Any
26          In    0          0                      1    Match ACL 198
27          Out   0          0                      1    Match ACL 198
28          In    0          0                      5    Match ACL 199
29          Out   0          0                      5    Match ACL 199
4294967294  In    0          0                      -    Drop
4294967295  Out   0          0                      -    Drop

Features:

L4 Redirect:
Class-id   Rule cfg  Definition                               Source
28         #1   SVC  to group PORTAL                          LOCAL-L4R

Policing:
Class-id   Dir  Avg. Rate   Normal Burst  Excess Burst Source
26         In   1024000     192000        384000       SERVICE-TRUSTED
27         Out  1024000     192000        384000       SERVICE-TRUSTED

Configuration Sources:
Type  Active Time  AAA Service ID  Name
SVC   00:00:02     -               SERVICE-TRUSTED
SVC   00:00:02     -               LOCAL-L4R
USR   00:00:02     -               Peruser
INT   00:00:02     -               FastEthernet1/0.251

 

Однако такое впечатление, что сервисы на самом деле не работают, потому что ни редирект, ни выборочный допуск до сайтов (до одного, если быть точным, указанного в ACL 198) не работают... Возможно, сталкивался кто-нибудь? Или если есть опытные люди в плане ISG, подскажите, в чем может быть затык?

Share this post


Link to post
Share on other sites

У меня сделано так, что билинг при отрицательном балансе все равно выдает Access-Accept, но набор сервисов другой, тот в котором редирект.

При пополнении баланса сеанс тупо ресетится билингом. Можно конечно ему просто апдейт делать, но ASR1K у меня крашилась от такого, а экспериментировать с новыми прошивками не на чем.

Share this post


Link to post
Share on other sites

Пытаюсь разобраться с ISG, чтобы не плодить темы, напишу сюда. Подскажите, пожалуйста, я правильно понимаю, что действие authenticate в policy map control имеет смысл ставить только для коммутируемых соединений, для IPoE это действие бессмыслено и работать не будет?

 

В таком случае не понимаю этой строки в приведенном выше конфиге:

aaa authentication login IPOE-CLIENTS group ISG_TEST

Share this post


Link to post
Share on other sites

Пытаюсь разобраться с ISG, чтобы не плодить темы, напишу сюда. Подскажите, пожалуйста, я правильно понимаю, что действие authenticate в policy map control имеет смысл ставить только для коммутируемых соединений, для IPoE это действие бессмыслено и работать не будет?

 

В таком случае не понимаю этой строки в приведенном выше конфиге:

aaa authentication login IPOE-CLIENTS group ISG_TEST

 

Парадигма ISG как раз наоборот в том, чтобы не завязыватсья на способ подключения. В случае IPoE, логином при авторизации будет IP адрес абонента при таких настройках:

 

interface TenGigabitEthernet0/1/0.2002044
description user blah-blah-blah
encapsulation dot1Q 200 second-dot1q 2044
ip unnumbered Loopback2
ip nat outside
ip verify unicast source reachable-via rx l2-src
service-policy type control IPoE
ip subscriber routed
 initiator unclassified ip-address

 

Правда у меня в полиси authenticate нет, сразу идет authorize:

 

policy-map type control IPoE
class type control CM_C_IPoE_RTIMEOUT_REAUTH event timed-policy-expiry
 1 service disconnect
!
class type control CM_C_IPoE_REJECT_REAUTH event timed-policy-expiry
 1 service disconnect
!
class type control always event session-start
 10 authorize aaa list IPOE password ciscoo identifier source-ip-address
 20 set-timer IPoE_REJECT_REAUTH 1
 30 service-policy type service aaa list IPOE name NoMoney10
 34 service-policy type service aaa list IPOE name NoMoney400
 40 service-policy type service aaa list IPOE name NoMoney500
 50 service-policy type service aaa list IPOE name NoMoney510
!
class type control always event service-stop
 1 service-policy type service unapply identifier service-name
!
class type control always event session-restart
 10 authorize aaa list IPOE password ciscoo identifier source-ip-address
 20 set-timer IPoE_REJECT_REAUTH 1
 30 service-policy type service aaa list IPOE name NoMoney10
 34 service-policy type service aaa list IPOE name NoMoney400
 40 service-policy type service aaa list IPOE name NoMoney500
 50 service-policy type service aaa list IPOE name NoMoney510
!
class type control always event radius-timeout
 1 set-timer IPoE_RTIMEOUT_REAUTH 1
 10 service-policy type service aaa list IPOE name NoMoney10
 14 service-policy type service aaa list IPOE name NoMoney400
 20 service-policy type service aaa list IPOE name NoMoney500
 30 service-policy type service aaa list IPOE name NoMoney510
!

 

Как и нет aaa authentication login IPOE

Share this post


Link to post
Share on other sites

Спасибо вам за ответ!

 

Я вот с этим и пытаюсь разобраться. Я собрал схему, создал полиси контрол:

 

policy-map type control isgPolicyControl
class type control always event session-start
 1 authenticate aaa list isgAuth

 

При такой полиси роутер даже не пытается делать authenticate. Я хотел посмотреть что он в принципе отправляет на радиус, но в снифере пусто.

 

Еще не могу понять этой строки:

10 authorize aaa list IPOE password ciscoo identifier source-ip-address

 

Я думал, что проверять логин и пароль должен процесс authenticate. А authorize должен уже выдать политику, которую повесить на сессию.

Share this post


Link to post
Share on other sites

Спасибо вам за ответ!

 

Я вот с этим и пытаюсь разобраться. Я собрал схему, создал полиси контрол:

 

policy-map type control isgPolicyControl
class type control always event session-start
 1 authenticate aaa list isgAuth

 

При такой полиси роутер даже не пытается делать authenticate. Я хотел посмотреть что он в принципе отправляет на радиус, но в снифере пусто.

 

Еще не могу понять этой строки:

10 authorize aaa list IPOE password ciscoo identifier source-ip-address

 

Я думал, что проверять логин и пароль должен процесс authenticate. А authorize должен уже выдать политику, которую повесить на сессию.

Суть в том, что пароля-то нет по сути. Точнее он есть и знает его сама киса (password ciscoo), поэтому собсно "аутентификация" и не нужна - не имеет смысла.

Поэтому полиси сразу проверяет "авторизацию", т.е. наличие _прав_, тут радиус и определяет что выдавать.

Share this post


Link to post
Share on other sites

Спасибо вам за ответ!

 

Я вот с этим и пытаюсь разобраться. Я собрал схему, создал полиси контрол:

 

policy-map type control isgPolicyControl
class type control always event session-start
 1 authenticate aaa list isgAuth

 

При такой полиси роутер даже не пытается делать authenticate. Я хотел посмотреть что он в принципе отправляет на радиус, но в снифере пусто.

 

Еще не могу понять этой строки:

10 authorize aaa list IPOE password ciscoo identifier source-ip-address

 

Я думал, что проверять логин и пароль должен процесс authenticate. А authorize должен уже выдать политику, которую повесить на сессию.

Суть в том, что пароля-то нет по сути. Точнее он есть и знает его сама киса (password ciscoo), поэтому собсно "аутентификация" и не нужна - не имеет смысла.

Поэтому полиси сразу проверяет "авторизацию", т.е. наличие _прав_, тут радиус и определяет что выдавать.

 

Да, это я тоже понимаю. Просто логика странная, смешалось все в кучу аутентификация, авторизация. :)

Share this post


Link to post
Share on other sites

Да, это я тоже понимаю. Просто логика странная, смешалось все в кучу аутентификация, авторизация. :)

Я, если честно, тупо скопипастил пример с cisco.com, подправил под свои нужды состав сервисов и все.

Аутентификация - проверка учетных данных типа пароля, нужна для PPPoE например, но там у меня control-policy не используется, список сервисов отдается сразу при аутентификации.

Share this post


Link to post
Share on other sites

А есть у кого-нить описание всех этих событий. Допусти что такое session-start, это понятно, а где найти описание для остальных (session-restart, session-stop). Когда они начинаются и т.д.

Share this post


Link to post
Share on other sites

Вероятно есть, но документация у сиськи такая, что застрелиться.

 

http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/isg/configuration/xe-3s/isg-xe-3s-book/isg-cntrl-pol.html

 

Референс

http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/isg/command/isg-cr-book.html

Share this post


Link to post
Share on other sites

Вроде постепенно приходит понимание как это все работает. Сейчас радиус отдает один параметр циске:

Cisco-Account-Info += "QD;512000;U;1024000"

Т.е. сервиса не вешаю на юзера, а просто отдаю Session inbound/outbound features. Насколько такая схема рабочая? Скорость режется, но какие могут быть грабли? Кроме того, я правильно понимаю, что раз полисинг применяется на всю сессию, вешать traffec class acl на это бессмысленно?

Share this post


Link to post
Share on other sites

Когда вот такая схема не выйдет сделать к примеру отдельную скорость в IX

Да, понимаю о чем вы говорите. Но на данном этапе это не нужно. Еще вопрос по доп адресам у клиентов. Когда нужно доп адрес клиента (который секондари или совсем смаршрутизированная подсеть) "пристегнуть" к той же сессии, которая инициирована первичным адресом. Чтобы скорость делилась на подключение клиента, а не отдельная политика на каждую подсеть. Это возможно как-то сделать?

Share this post


Link to post
Share on other sites

Когда вот такая схема не выйдет сделать к примеру отдельную скорость в IX

Да, понимаю о чем вы говорите. Но на данном этапе это не нужно. Еще вопрос по доп адресам у клиентов. Когда нужно доп адрес клиента (который секондари или совсем смаршрутизированная подсеть) "пристегнуть" к той же сессии, которая инициирована первичным адресом. Чтобы скорость делилась на подключение клиента, а не отдельная политика на каждую подсеть. Это возможно как-то сделать?

Если совсем красиво делать, то для сессии RADIUS должен возвращать Framed-Route атрибуты, которые в железке будут выглядеть, как маршруты на основной IP-адрес сессии. Скорость будет на всех одна, можно вместо flat rate задавать ограничение посервисно.

Можно использовать interface session и задать выделенный кусок сети для неё. Бенефиты всё те же.

Есть совсем грязный хак -- использовать interface session и ip unnumbered на loopback-интерфейс, как вы это, скорее всего, делали по классической схеме unnumbered on SVI. Здесь есть одно жирное "но": на каждый loopback можно установить лишь одну interface session, что как бы сводит все потуги на нет. Но тут ребята, если поискать, нашли способ не прописывать unnumbered непосредственно на интерфейсе, но передавать его в качестве параметра из RADIUS, говорят, получилось добиться поведения 1-в-1, как если бы терминировали абонентов на какой-нибудь 6500.

Share this post


Link to post
Share on other sites

Когда вот такая схема не выйдет сделать к примеру отдельную скорость в IX

Да, понимаю о чем вы говорите. Но на данном этапе это не нужно. Еще вопрос по доп адресам у клиентов. Когда нужно доп адрес клиента (который секондари или совсем смаршрутизированная подсеть) "пристегнуть" к той же сессии, которая инициирована первичным адресом. Чтобы скорость делилась на подключение клиента, а не отдельная политика на каждую подсеть. Это возможно как-то сделать?

Если совсем красиво делать, то для сессии RADIUS должен возвращать Framed-Route атрибуты, которые в железке будут выглядеть, как маршруты на основной IP-адрес сессии. Скорость будет на всех одна, можно вместо flat rate задавать ограничение посервисно.

Можно использовать interface session и задать выделенный кусок сети для неё. Бенефиты всё те же.

Есть совсем грязный хак -- использовать interface session и ip unnumbered на loopback-интерфейс, как вы это, скорее всего, делали по классической схеме unnumbered on SVI. Здесь есть одно жирное "но": на каждый loopback можно установить лишь одну interface session, что как бы сводит все потуги на нет. Но тут ребята, если поискать, нашли способ не прописывать unnumbered непосредственно на интерфейсе, но передавать его в качестве параметра из RADIUS, говорят, получилось добиться поведения 1-в-1, как если бы терминировали абонентов на какой-нибудь 6500.

 

С интерфейс сессией не получится, т.к. абонент терминируется далеко и приходят все пачкой на один интерфейс. Я поднимаю subnet сессию и она работает (ИПы из этой подсети прикрепляются к этой же сессии и на них действует общее ограничение скорости). Проблема в том, что другая подсеть- это другая подсеть. Ну да в принципе, это не сильно страшно, несколько подсетей-это очень редко, жить можно.

Меня больше интересует мой подход- вешать service feauture на пользователя. Т.е. не отдельный какой-то сервис, а service feauture, который может генерировать для каждого пользователя по разному. Не упрусь я в производительность, если пользователей будет не один, как щас, на 1500-3000 ?

Share this post


Link to post
Share on other sites

ты прям хочешь несколько тысяч разных скоростей? в производительность точно нет, а вот за ткамом следить после таких штук стоит )

Share this post


Link to post
Share on other sites

ты прям хочешь несколько тысяч разных скоростей? в производительность точно нет, а вот за ткамом следить после таких штук стоит )

 

Ну не прям что несколько тысяч. Просто я хочу сделать настраиваемую полиси, чтбы можно было отдельно выставить download и upload. Поэтому комбинации могут быть разные. Но многие из них будут совпадать :)

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.