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.


Arthur <arthur@ch.twi.tudelft.nl> http://ch.twi.tudelft.nl/~arthur/
2000-07-05