AAA framework
Inleiding
Omdat er momenteel geen enkel accounting protocol beschikbaar is dat
algemeen toepasbaar is, is er gekozen om een framework op te zetten waarin
eenvoudig delen van protocollen ingevoerd kunnen worden. Dit framework zou
dan gebruikt kunnen worden in AAA clients, servers en gateways waarbij AAA
berichten doorgegeven (en eventueel vertaald) kunnen worden.
Toepassingen van accounting lopen uiteen van inbel-achtige toepassingen
waarbij grote hoeveelheden, relatief eenvoudige, accounting data eventueel
in real-time moeten worden bezorgd tot de complexe dienstverleningen
waarbij de nadruk ligt op uitwisselbaarheid en complexe definities. Een
framework waarbij verschillende deelprotocollen gebruikt kunnen worden
zorgt er voor dat bij een bepaalde toepassing een passende protcol
gebruikt kan worden, zonder dat hiervoor veel aanpassingen aan bestaande
systemen nodig zijn.
In het framework kunnen verschillende transportprotollen worden
gecombineerd met verschillende recordformats. Bij eenvoudige
dienstverlening zou een DIAMETER/RADIUS/TACACS achtig record format kunnen worden
gebruikt (klein en efficient), terwijl bij complexere diensten een XML
gebaseerd record format kan worden gebruikt. Het gebruikte
transportprotcol kan afhangen van de onderliggende netwerkstructuur en de
eisen ten aanzien van de bezorging (real-time accounting).
Het integreren van een applicatie met een dergelijke opzet in een
bestaande omgeving kan relatief eenvoudig verlopen, doordat het bestaande
protocol geïntegreerd kan worden in het systeem.
AAAUnit
Uitgaande berichten moeten op meerdere manieren verstuurd kunnen worden.
Tevens moeten berichten kunnen worden ontvangen die via verschillende
protocollen verstuurd worden. Dit alles moet redelijk dynamisch te
configureren zijn, zonder dat er signifikante aanpassingen aan het hele
systeem nodig zijn.
Hiertoe is een generieke structuur opgezet zoals te zien is in figuur 1.
Een AAAUnit combineert verschillende protocollen en manieren
om berichten af te handelen.
|
figuur 1. |
Aan een AAAUnit kunnen verschillende transportprotocollen en
recordformats gehangen worden. Voor het afhandelen van berichten worden de
betreffende modules aangesproken. Het iedee is dat het gebruikte recordformat
en transportprotocol transparant zijn voor het systeem wat de
AAAUnit gebruikt.
Als een bericht voor versturen aan de AAAUnit wordt
aangeboden kunnen het te gebruiken RecordFormat en
TransportProtocol worden opgegeven. Als er geen voorkeur
opgegeven wordt, kiest de AAAUnit de meest geprefereerde. Een
bericht wordt vastgelegd in een recordformat, waarna het wordt verstuurd
met het transportprotocol.
Inkomende gegevens worden door het TransportProtocol aan de
AAAUnit doorgegeven, waarna deze nagaat welk
RecordFormat is gebruikt. Op deze manier wordt het verstuurde
bericht gereconstrueerd. Voor zover het bericht geen antwoord is op
een eerder verstuurd bericht wordt het verwerk door een
MessageHandler welke het bericht afhandeld. Als er geen
enkele MessageHandler geregistreerd is die het bericht kan
verwerken wordt het bericht geweigerd.
Er is een implementatie gemaakt van een AAAUnit in java.
Hierin kunnen verschillende klassen dynamisch ingevoerd worden. Momenteel
zijn de volgende transportprotocollen geimplementeerd:
|
TCPTransport |
Het TCP/IP transport protocol. Er wordt
geluisterd naar een opgegeven poort.
Verbindingen worden herbruikt indien mogelijk.
Dit wil zeggen dat er niet meer dan
één verbinding
tussen twee dezelfde computers actief is. |
Hiernaast zijn de volgende recordformats momenteel geimplementeerd:
|
JObjectFormat |
Eenvoudig formaat waarbij
ObjectInputStream en
ObjectOutputStream
worden gebruikt om direct java objecten over te sturen.
Het record wordt gemarkeerd met een eenvoudig herkenbaar
Java object. |
Momenteel zijn de volgende messagehandlers beschikbaar:
|
AccountingHandler |
Een module die accounting berichten
opvangt en verwerkt. |
|
DomainHandler |
Een module die berichten voor een bepaald domain
(aanwezig in de uid) uitfiltert. Bij deze
messagehandler kunnen andere messagehandlers
zich aanmelden. Op deze manier kan een hirachische
structuur opgebouwd worden. |
|
Forwarder |
Alle berichten die deze klasse aangeboden krijgt
om te verwerken worden naar een opgegeven host
doorgestuurd. |
Er wordt momenteel gewerkt aan meer transportprotocols,
recordformats en messagehandlers voor het afhandelen van
RADIUS en MSIX berichten.
|