Nəzəri əsaslar və memarlıq
BNG-lərdə abunəçi sessiyalarının idarəsi RADIUS protokoluna (RFC 2865 / RFC 2866) əsaslanır. AAA prosesi: 1. Authentication: BNG serverə Access-Request göndərir. PPPoE üçün orada User-Name və parol olur (PAP MD5 ilə XOR-lanır, CHAP isə CHAP-Password və CHAP-Challenge kimi ötürülür), IPoE üçün DHCP Option 82-dən alınan MAC və ya Circuit-ID/Remote-ID (Calling-Station-Id, Agent-Circuit-Id və ya NAS-Port-Id kimi atributlarla göndərilir, Option 82-nin özü paketə qoyulmur). Server Access-Accept, Access-Reject və ya Access-Challenge ilə cavab verir. 2. Authorization: Access-Accept standart atributları (Framed-IP-Address - tək ünvan, Framed-Pool - pool adı, Session-Timeout, Acct-Interim-Interval, Filter-Id) və Vendor-Specific Attributes (VSA) daşıyır: VRF adı (məsələn, Cisco-AVPair ip:vrf-id=), sürət profili (Huawei-Input/Output-Average-Rate, Mikrotik-Rate-Limit), ACL. Session-Timeout sessiyanın müddətini məhdudlaşdırır, ünvan icarəsini yox. 3. Accounting: BNG UDP 1813-ə Accounting-Request göndərir: girişdə Start, bayt və paket sayğacları ilə Interim-Update (adətən hər 5-15 dəqiqədə), çıxışda Stop; tarifləşdirmə bunlara əsaslanır. RADIUS CoA və Disconnect (RFC 5176, UDP 3799) vasitəsilə billinq abunəçinin sürətini dəyişə və ya sessiyanı (Disconnect-Request) modemi yenidən işə salmadan kəsə bilər, bu şərtlə ki, BNG sessiyanı göndərilən atributlara görə tapsın.
RADIUS rolları və nəqliyyat
BNG RADIUS müştərisidir (NAS, Network Access Server), billing/AAA serveri isə RADIUS serveridir. Autentifikasiya və avtorizasiya UDP 1812 (köhnə port 1645), uçot UDP 1813 (1646), avtorizasiyanın dəyişdirilməsi və söndürmə (CoA/Disconnect, RFC 5176) isə serverdən NAS-a UDP 3799 ilə gedir (Cisco-da susmaya görə 1700-dür, əllə dəyişdirilir). Server müştərini paketin source IP-sinə və shared secret-ə görə müəyyən edir, ona görə BNG-də source-interface (adətən Loopback) sabitlənir; əks halda çıxış interfeysi dəyişəndə server sorğuları səssizcə atır. Paket formatı: Code (1 bayt), Identifier (1), Length (2), Authenticator (16), sonra TLV atributlar (Type, Length, Value). Kodlar: 1 Access-Request, 2 Access-Accept, 3 Access-Reject, 11 Access-Challenge, 4/5 Accounting-Request/Response, 40/41/42 Disconnect-Request/ACK/NAK, 43/44/45 CoA-Request/ACK/NAK.
Autentifikasiya və paketin qorunması
Request Authenticator 16 təsadüfi baytdır. PAP parolu (User-Password, atribut 2) MD5(secret + Request Authenticator) ilə 16 baytlıq bloklarla XOR edilərək gizlədilir; Access-Accept-dəki Response Authenticator = MD5(Code + ID + Length + Request Authenticator + atributlar + secret) olur, bununla müştəri cavabın secret sahibindən gəldiyinə əmin olur. CHAP üçün BNG CHAP-Password (3) və CHAP-Challenge (60) göndərir, server MD5-i özü hesablayıb müqayisə edir, ona görə parol serverdə geri qaytarıla bilən formada saxlanmalıdır. MD5 əsası zəif sayılır: BlastRADIUS hücumu (CVE-2024-3596) sorğuda Message-Authenticator (atribut 80, HMAC-MD5) olmadıqda cavabı saxtalaşdırmağa imkan verir. Qoruma: bütün Access-Request-lərdə Message-Authenticator, IP üzrə giriş məhdudiyyəti, uzun secret-lər və mümkün olduqda TLS üzərində RADIUS (RadSec, RFC 6614, TCP 2083). IPoE MAC autentifikasiyası üçün User-Name və User-Password-də çox vaxt MAC, Calling-Station-Id-də (31) isə müştərinin MAC-ı yerləşdirilir.
Authorization: Access-Accept atributları
Access-Accept sessiya profilini daşıyır. Standart atributlar: Framed-IP-Address (8), Framed-IP-Netmask (9), Framed-Pool (88), Framed-MTU (12), Session-Timeout (27), Idle-Timeout (28), Acct-Interim-Interval (85, RFC 2869), Filter-Id (11), Class (25), Framed-IPv6-Prefix (97), Delegated-IPv6-Prefix (123), Framed-IPv6-Pool (100). Qalan hər şey Vendor-Specific-dir (26): Cisco-AVPair (vendor 9, type 1) ip:vrf-id=..., ip:addr-pool=... kimi sətirlərlə; Huawei (vendor 2011) - Huawei-Input/Output-Average-Rate və Peak-Rate (bit/san), Huawei-Domain-Name; Juniper/ERX (vendor 4874) - Virtual-Router (VR/routing instance adı), Ingress/Egress-Policy-Name; MikroTik (vendor 14988) - Mikrotik-Rate-Limit (rx/tx, məsələn 50M/100M), Mikrotik-Address-List. VRF atributu BNG-nin abonentin /32-sini MPLS nüvəsinin hansı VRF-inə yerləşdirəcəyini müəyyən edir; ad səhv olarsa, sessiya qlobal cədvəldə qalxır və ya BNG tərəfindən rədd edilir. Eyni profili RADIUS-da saxlayıb vendorlar üzrə bölmək olar (server VSA-nı NAS-Identifier və ya lüğət üzrə seçir).
Accounting: Start, Interim, Stop
Accounting-Request Acct-Status-Type (40) daşıyır: 1 Start (ünvan verildikdən sonra), 3 Interim-Update (periodik, intervalı Acct-Interim-Interval və ya lokal parametr təyin edir, adətən 5-15 dəq), 2 Stop, 7/8 Accounting-On/Off (NAS-ın yenidən yüklənməsi). İdentifikatorlar: Acct-Session-Id (44) sessiya daxilində unikaldır, Acct-Multi-Session-Id (50) dual-stack sessiyalarını bağlayır. Sayğaclar: 4 GB-dan çox həcmlər üçün Gigawords (52/53) ilə Acct-Input/Output-Octets (42/43), Acct-Input/Output-Packets (47/48), Acct-Session-Time (46), Acct-Terminate-Cause (49: 1 User-Request, 2 Lost-Carrier, 4 Idle-Timeout, 5 Session-Timeout, 6 Admin-Reset). Uçot serveri əlçatmaz olarsa, NAS Stop paketlərini buferləyir (tənzimlənir); əks halda billing yalnız əllə və ya Interim timeout ilə bağlanan "asılı" sessiyalar alır. Accounting-On/Off olmadan BNG-nin yenidən yüklənməsi də "xəyali" sessiyaların mənbəyidir.
CoA və Disconnect
CoA-Request (kod 43) canlı sessiyanın atributlarını dəyişir: yeni sürət, walled garden-ə keçirmə, ACL dəyişikliyi, yönləndirmə; NAS CoA-ACK/NAK (44/45) ilə cavab verir, imtinanın səbəbi Error-Cause (101)-dir, məsələn 503 "Session Context Not Found". Disconnect-Request (40) sessiyanı bağlayır (sıfır balansda və ya abonentin tələbi ilə). NAS-da sessiya Acct-Session-Id, User-Name, Framed-IP-Address və ya Calling-Station-Id ilə tapılır; atributlar üst-üstə düşməlidir, əks halda NAK gəlir. NAS yalnız etibarlı serverdən (client ... server-key) paketləri qəbul etməlidir və 3799 portu yol boyu açıq olmalıdır (idarəetmə VRF-i daxil olmaqla).