ISG, схема со стартом сессии и ее авторизацией по IP, выдача адресов на основе option82

Материал из BiTel WiKi

Перейти к: навигация, поиск

Данная схема была собрана на лабе, но спроектирована под реальный проект, т.е. - никакой не сферический ISG в вакууме.

Оборудование

  • Уровень доступа (физическое подключение абонентов): catalyst 3550.
  • Уровень аггрегации (объединение нескольких уровней доступа, терминация абонентов по L3): catalyst 3550, с

последующей заменой на 3560 при росте сети.

  • Ядро сети: catalyst 6509 (WS-SUP720-3BXL)
  • BRAS (ISG): ASR1002-ESP5

Задача

Подключить абонента по IPoE (без дополнительных инкапсуляций PPPoE или PPTP), выдать адрес по DHCP, авторизовать абонента по номеру порта на соответствующем каталисте уровня доступа, ограничить выход в интернет в соответствии с балансом договора.

Минусы схемы и ее реализации

  • Один IP на абонента (для подключения нескольких устройств абонент должен приобрести CPE - любой ethernet роутер с NAT'ом)
  • Более сложный механизм масштабирования BRAS'ов по сравнению с PPPoE.
  • Нет "локалки" по дому - весь траффик идет через ядро.

Плюсы

  • В простейшем случае (один PC) абоненту вообще не нужно ничего настраивать, достаточно вставить кабель.
  • Транспортная сеть не загромождается MAC-адресами абонентов (при цифрах больше 8-12 тысяч маков приходится переходить на значительно более дорогое железо)
  • Высокая безопасность сети и абонента (изоляция vlan-per-user, "физическая" авторизация абонента через dhcp-snooping, проверка источника по ip source guard, динамические /32 маршруты на SVI создаваемые только после авторизации).
  • Отсутствие дополнительной инкапсуляции в PPP протокол, что разгружает BRAS.

Реализация Конфигурация свича уровня доступа:

spanning-tree mode mst
spanning-tree extend system-id
!
spanning-tree mst configuration
 name Region-A
 instance 1 vlan 1-4094
!
ip dhcp snooping vlan 1201-1248
ip dhcp snooping
!
interface FastEthernet0/1
 description Abonent-1
 switchport access vlan 1201
 switchport mode access
 switchport nonegotiate
 switchport port-security
 storm-control broadcast level pps 10k
 storm-control multicast level pps 10k
 storm-control unicast level pps 10k
 storm-control action shutdown
 no cdp enable
 spanning-tree portfast
 spanning-tree bpduguard enable
 spanning-tree guard root
 ip verify source
!
interface FastEthernet0/2
 description Abonent-2
 switchport access vlan 1202
 switchport mode access
 switchport nonegotiate
 switchport port-security
 storm-control broadcast level pps 10k
 storm-control multicast level pps 10k
 storm-control unicast level pps 10k
 storm-control action shutdown
 no cdp enable
 spanning-tree portfast
 spanning-tree bpduguard enable
 spanning-tree guard root
 ip verify source
!
...
!
interface FastEthernet0/48
 description Abonent-48
 switchport access vlan 1248
 switchport mode access
 switchport nonegotiate
 switchport port-security
 storm-control broadcast level pps 10k
 storm-control multicast level pps 10k
 storm-control unicast level pps 10k
 storm-control action shutdown
 no cdp enable
 spanning-tree portfast
 spanning-tree bpduguard enable
 spanning-tree guard root
 ip verify source
!
interface GigabitEthernet0/1
 description Another-Catalyst-in-Chain
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 50
 switchport mode trunk
 ip dhcp snooping trust
!
interface GigabitEthernet0/2
 description Another-Catalyst-in-Chain
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 50
 switchport mode trunk
 ip dhcp snooping trust
!
interface Vlan51
 description Management
 ip address ***
!
ip route 0.0.0.0 0.0.0.0 ***

Задача этого свича, физически терминировать кабель абонента, пустить его траффик в отдельный влан, а в dhcp запросы - вставить option82. Так как количество вланов в сети очень велико - используется протокол MST. Внутри каждого MST региона (в данном случае - Region-A) должен быть один свич аггрегации, до которого должен иметь возможность пробросить все свои вланы каждый свич уровня доступа. Интерфейс Vlan51 и route 0.0.0.0 нужны только лишь для удаленного доступа к свичу.

Конфигурация свича уровня аггрегации:

ip dhcp relay information policy keep
ip dhcp relay information trust-all
!
ip vrf domonet
 rd 1000:1000
!
spanning-tree mode mst
spanning-tree extend system-id
!
spanning-tree mst configuration
 name Region-A
 instance 1 vlan 1-4094
!
spanning-tree mst 0-1 priority 0
!
interface Loopback52
 description Domonet users at Region-A
 ip vrf forwarding domonet
 ip address 109.*.48.254 255.255.255.0
!
interface GigabitEthernet0/1
 description Link-toward-Core
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 50
 switchport trunk allowed vlan 51,52
 switchport mode trunk
 switchport nonegotiate
 spanning-tree bpdufilter enable
 ip dhcp snooping trust
!
interface GigabitEthernet0/2
 description Link-to-Access-Layer-Catalysts
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 50
 switchport mode trunk
 ip dhcp snooping trust
!
interface Vlan51
 description Management
 ip address ***
!
interface Vlan52
 description Traffic
 ip vrf forwarding domonet
 ip address 10.111.1.1 255.255.255.0
 ip authentication mode eigrp 90 md5
 ip authentication key-chain eigrp 90 eigrp-key
!
interface Vlan1101
 description SW1-PORT1
 ip vrf forwarding domonet
 ip unnumbered Loopback52
 ip helper-address 10.199.1.23
!
interface Vlan1102
 description SW1-PORT2
 ip vrf forwarding domonet
 ip unnumbered Loopback52
 ip helper-address 10.199.1.23
!
...
!
interface Vlan1148
 description SW1-PORT48
 ip vrf forwarding domonet
 ip unnumbered Loopback52
 ip helper-address 10.199.1.23
!
interface Vlan1201
 description SW2-PORT1
 ip vrf forwarding domonet
 ip unnumbered Loopback52
 ip helper-address 10.199.1.23
!
...
!
interface Vlan1248
 description SW2-PORT48
 ip vrf forwarding domonet
 ip unnumbered Loopback52
 ip helper-address 10.199.1.23
!
router eigrp 90
 !
 address-family ipv4 vrf domonet 
  network 0.0.0.0
  distance eigrp 90 90
  passive-interface default
  no passive-interface Vlan52
  autonomous-system 90
 exit-address-family
 
ip route ***

Задача этого каталиста - стерминировать по L3 на соответствующих SVI абонентские вланы всех свичей уровня доступа (внутри его MST региона), перехватить broadcast запросы к DHCP серверу и перенаправить их внутри VRF "domonet" по unicast на сервер BGBilling'а 10.199.1.23, сохранив option82 нетронутым. BGBilling находит договор пользователя по option82 и создает сессию, отвечая адресом прописанным в данном договоре. Каталист получив этот адрес, создает /32 маршрут внутри vrf "domonet" для этого адреса (который прописан в свойствах договора абонента и который выдал BGBilling), в качестве destination используя SVI интерфейс влана, с которого пришел запрос. Абонент получает IP, этот IP по EIGRP (внутри vrf) становится известным другим устройствам и, таким образом, абонент прозрачно пройдя авторизацию по номеру порта получает L3 доступ к сети провайдера, правда только внутри vrf "domonet". Один ньюанс - адрес выданный абоненту должен быть из диапазона адресов, прописанного на Loopback52. Интерфейс Vlan51 и route 0.0.0.0 также нужны только лишь для удаленного доступа к свичу из global роутинга.

В ядре сети же, траффик идущий от абонентов внутри vrf нужно пропустить по L3 через BRAS в global роутинг. Это можно сделать несколькими способами - PBR, route leaking, static routing... Главное чтобы из global роутинга IP адреса абонентов были видны через BRAS и, наоборот, внешний мир изнутри vrf "domonet" был виден через BRAS. Теперь абонент имеет полный доступ в интернет, транзитом (по L3) через BRAS. Осталось навесить на BRAS настройки ISG, чтобы этот доступ привести в зависимость от баланса договора и его тарифа в BGBilling'е.

Настройки BRAS'а:

aaa group server radius ipoe-radius
 server-private 109.*.1.23 auth-port 1812 acct-port 1813 non-standard key ***
 ip radius source-interface Loopback0
!
aaa group server radius ipoe-services-radius
 server-private 109.*.1.23 auth-port 1811 acct-port 1813 non-standard key ***
 ip radius source-interface Loopback0
!
aaa authentication login ipoe-isg-aaa group ipoe-radius
aaa authorization network ipoe-isg-aaa group ipoe-radius 
aaa accounting network ipoe-isg-aaa start-stop group ipoe-radius
!
aaa authorization subscriber-service default local group ipoe-services-radius 
!
aaa accounting delay-start
aaa accounting update periodic 2
aaa nas port extended
!
aaa server radius dynamic-author
 client 109.*.1.23 server-key ***
 ignore session-key
 ignore server-key
!
redirect server-group NO-MONEY
 server ip 109.*.1.16 port 80
!
class-map type traffic match-any LOCAL-TRAFFIC
 match access-group output 2110
!
class-map type traffic match-any OPENGARDEN-TRAFFIC
 match access-group input 155
 match access-group output 156
!
class-map type traffic match-any ALL-TRAFFIC
 match access-group input 101
 match access-group output 102
!
class-map type traffic match-any TRAFFIC-FOR-REDIRECT
 match access-group input name traffic-for-redirect
!
class-map type control match-all ISG-IP-UNAUTH
 match timer UNAUTH-TIMER 
 match authen-status unauthenticated 
!
policy-map type service L4REDIRECT
 20 class type traffic TRAFFIC-FOR-REDIRECT
  redirect to group NO-MONEY
!
policy-map type service OPENGARDEN
 40 class type traffic OPENGARDEN-TRAFFIC
  accounting aaa list ipoe-isg-aaa
  police input 1024000
  police output 1024000
 !
 class type traffic default in-out
  drop
!
policy-map type service ISG-LOCAL
 100 class type traffic LOCAL-TRAFFIC
  accounting aaa list ipoe-isg-aaa
  police input 102400000
  police output 102400000
 !        
policy-map type control IPoE-ISG
 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-isg-aaa password cisco identifier source-ip-address
  20 set-timer UNAUTH-TIMER 1
  30 service-policy type service name L4REDIRECT
  40 service-policy type service name OPENGARDEN
 !        
 class type control always event service-stop
  1 service-policy type service unapply identifier service-name
  10 log-session-state 
 !        
 class type control always event session-restart
  10 authorize aaa list ipoe-isg-aaa password cisco identifier source-ip-address
  20 set-timer UNAUTH-TIMER 1
  30 service-policy type service name L4REDIRECT
  40 service-policy type service name OPENGARDEN
!
interface Loopback0
 ip address 10.100.198.31 255.255.255.255
!
interface GigabitEthernet0/0/2.1001
 encapsulation dot1Q 1001
 ip address 10.200.98.31 255.255.255.0
 service-policy type control IPoE-ISG
 ip subscriber routed
  initiator unclassified ip-address

ISG настроен следующим образом: как только IP траффик абонента (который уже получил IP адрес от BGBilling'а авторизовавшись по номеру порта) приходит на BRAS, тот создает для него новую ISG сессию и пытается ее авторизовать на радиусе BGBilling'а используя в качестве логина IP адрес источника. BGBilling просматривает активные сессии договоров и, конечно же, находит ту сессию, которую он сам же создал выдавая этому абоненту IP адрес. По этой сессии биллинг находит договор, в случае положительного баланса - отвечает ACCESS-ACCEPT плюс cisco-SSG-Account-Info параметры, которые берет из тарифа договора. Также BGBilling создает (вторую уже) активную сессию для договора (первая - dhcp). В случае отрицательного баланса - биллинг отвечает ACCESS-REJECT'ом.

  • Если BRAS получает ACCESS-REJECT, то он сам привязывает к ISG сессии сервисы L4REDIRECT и OPENGARDEN (локально описанные в конфиге циски), в которых доступ ограничен только к локальным ресурсам на скорости 1 Mbps, а весь http траффик редиректится на страничку, информирующую абонента об отсутствии денег на счету. Также стартует таймер UNAUTH-TIMER длительностью в одну минуту, по истечению которой BRAS заново пытается авторизовать ISG сессию в BGBilling'е.
  • Если BRAS получает ACCESS-ACCEPT, то он берет из параметров cisco-SSG-Account-Info информацию о том, какие ISG сервисы нужно привязать к ISG сессии и ищет их описание локально в своей конфигурации. Не найдя их, посылает второй радиус запрос на второй радиус сервер BGBilling'а (слушающий порт 1811 вместо 1812) используя в качестве логина - имя ISG сервиса. В BGBilling'е заведен отдельный договор, в котором прописаны все сервисы, в результате чего - BGBilling отвечает ACCESS-ACCEPT'ом с телом ISG сервиса:
Packet type: Access-Accept
Identifier: 134
Authenticator: {88 A2 CE 7E 66 BF 3E 9C 4C C0 CD 12 C1 0F C1 3C}
Attributes:
  Acct-Interim-Interval=60
  cisco-avpair=subscriber:accounting-list=ipoe-isg-aaa
  cisco-avpair=ip:traffic-class=in access-group 101 priority 201
  cisco-avpair=ip:traffic-class=out access-group 102 priority 201
  cisco-SSG-Service-Info=QU;5120000;384000;768000;D;5120000;960000;1920000

BRAS использует эту конфигурацию и привязывает нужные ISG сервисы к ISG сессии абонента.

Если баланс договоря становится отрицательным, BGBilling находит соответствующую активную сессию и отправляет на BRAS CoA запрос сбрасывая ее. Важный ньюанс - даже при отрицательном балансе, BGBilling должен продолжать выдавать IP адрес по DHCP.


Конфигурация BGBilling'а

скоро...

Личные инструменты